Skip to content

Commit

Permalink
Added option for East Asian Ambiguous Width
Browse files Browse the repository at this point in the history
  • Loading branch information
ossdev-somewhere committed Feb 17, 2014
1 parent fb1d457 commit fa5f453
Show file tree
Hide file tree
Showing 9 changed files with 47 additions and 2 deletions.
2 changes: 1 addition & 1 deletion project.properties
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,4 @@
split.density=false
proguard.config=proguard.cfg
# Project target.
target=android-15
target=android-19
2 changes: 2 additions & 0 deletions res/values-ja/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,8 @@
<string name="hostpref_delkey_summary">DELキーが押されたときに送るキーコード</string>
<string name="hostpref_encoding_title">エンコーディング</string>
<string name="hostpref_encoding_summary">ホスト側の文字エンコーディング</string>
<string name="hostpref_ambwide_title">記号の全角化</string>
<string name="hostpref_ambwide_summary">Unicodeにおいて文字幅が曖昧である東アジア文字を全角にします</string>
<string name="hostpref_connection_category">接続設定</string>
<string name="hostpref_username_title">ユーザ名</string>
<string name="hostpref_hostname_title">ホスト</string>
Expand Down
5 changes: 5 additions & 0 deletions res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -294,6 +294,11 @@
<!-- Host character encoding preference summary -->
<string name="hostpref_encoding_summary">"Character encoding for the host"</string>

<!-- Treat East Asian Ambiguous Width Characters as wide title -->
<string name="hostpref_ambwide_title">"East Asian Wide Width"</string>
<!-- Treat East asian ambiguous width characters as wide summary -->
<string name="hostpref_ambwide_summary">"Treat East Asian Ambiguous Width Characters as wide"</string>

<!-- Host preference category title for connection settings -->
<string name="hostpref_connection_category">"Connection settings"</string>

Expand Down
6 changes: 6 additions & 0 deletions res/xml/host_prefs.xml
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,12 @@
android:title="@string/hostpref_encoding_title"
android:summary="@string/hostpref_encoding_summary"
/>

<CheckBoxPreference
android:key="ambwide"
android:title="@string/hostpref_ambwide_title"
android:summary="@string/hostpref_ambwide_summary"
/>

<PreferenceCategory
android:title="@string/hostpref_connection_category">
Expand Down
8 changes: 8 additions & 0 deletions src/de/mud/terminal/VDUBuffer.java
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,9 @@ public class VDUBuffer {
/** Scroll down when inserting a line. */
public final static boolean SCROLL_DOWN = true;

/** Treat East Asian Ambiguous Width Characters as wide. */
protected boolean isAmbWide;

/* Attributes bit-field usage:
*
* 8421 8421 8421 8421 8421 8421 8421 8421
Expand Down Expand Up @@ -851,4 +854,9 @@ protected void redraw() {
if (display != null)
display.redraw();
}

/** Set width of East Asian Ambiguous Width Characters. */
public void setAmbWide(boolean isAmbWide) {
this.isAmbWide = isAmbWide;
}
}
8 changes: 7 additions & 1 deletion src/de/mud/terminal/vt320.java
Original file line number Diff line number Diff line change
Expand Up @@ -114,9 +114,15 @@ public void putString(char[] s, byte[] fullwidths, int start, int len) {
putChar((char) lastChar, isWide, false);
lastChar = c;
if (fullwidths != null) {
final byte width = fullwidths[i];
final byte width = fullwidths[i];
if (isAmbWide) {
isWide = (width == AndroidCharacter.EAST_ASIAN_WIDTH_WIDE)
|| (width == AndroidCharacter.EAST_ASIAN_WIDTH_FULL_WIDTH)
|| (width == AndroidCharacter.EAST_ASIAN_WIDTH_AMBIGUOUS);
} else {
isWide = (width == AndroidCharacter.EAST_ASIAN_WIDTH_WIDE)
|| (width == AndroidCharacter.EAST_ASIAN_WIDTH_FULL_WIDTH);
}
}
}
}
Expand Down
11 changes: 11 additions & 0 deletions src/org/connectbot/bean/HostBean.java
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,8 @@ public class HostBean extends AbstractBean {
private int fontSize = -1;
private boolean compression = false;
private String encoding = HostDatabase.ENCODING_DEFAULT;
private boolean ambWide = false;

private boolean stayConnected = false;

public HostBean() {
Expand Down Expand Up @@ -194,6 +196,14 @@ public String getEncoding() {
return this.encoding;
}

public void setAmbWide(boolean ambWide) {
this.ambWide = ambWide;
}

public boolean getAmbWide() {
return this.ambWide;
}

public void setStayConnected(boolean stayConnected) {
this.stayConnected = stayConnected;
}
Expand Down Expand Up @@ -233,6 +243,7 @@ public ContentValues getValues() {
values.put(HostDatabase.FIELD_HOST_FONTSIZE, fontSize);
values.put(HostDatabase.FIELD_HOST_COMPRESSION, Boolean.toString(compression));
values.put(HostDatabase.FIELD_HOST_ENCODING, encoding);
values.put(HostDatabase.FIELD_HOST_AMBWIDE, ambWide);
values.put(HostDatabase.FIELD_HOST_STAYCONNECTED, stayConnected);

return values;
Expand Down
3 changes: 3 additions & 0 deletions src/org/connectbot/service/TerminalBridge.java
Original file line number Diff line number Diff line change
Expand Up @@ -240,6 +240,9 @@ public void beep() {
else
buffer.setBufferSize(0);

// Set width of "East Asian Ambiguous Width Characters"
buffer.setAmbWide(host.getAmbWide());

resetColors();
buffer.setDisplay(this);

Expand Down
4 changes: 4 additions & 0 deletions src/org/connectbot/util/HostDatabase.java
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ public class HostDatabase extends RobustSQLiteOpenHelper {
public final static String FIELD_HOST_FONTSIZE = "fontsize";
public final static String FIELD_HOST_COMPRESSION = "compression";
public final static String FIELD_HOST_ENCODING = "encoding";
public final static String FIELD_HOST_AMBWIDE = "ambwide";
public final static String FIELD_HOST_STAYCONNECTED = "stayconnected";

public final static String TABLE_PORTFORWARDS = "portforwards";
Expand Down Expand Up @@ -169,6 +170,7 @@ public void onCreate(SQLiteDatabase db) {
+ FIELD_HOST_WANTSESSION + " TEXT DEFAULT '" + Boolean.toString(true) + "', "
+ FIELD_HOST_COMPRESSION + " TEXT DEFAULT '" + Boolean.toString(false) + "', "
+ FIELD_HOST_ENCODING + " TEXT DEFAULT '" + ENCODING_DEFAULT + "', "
+ FIELD_HOST_AMBWIDE + " TEXT DEFAULT '" + Boolean.toString(false) + "', "
+ FIELD_HOST_STAYCONNECTED + " TEXT)");

db.execSQL("CREATE TABLE " + TABLE_PORTFORWARDS
Expand Down Expand Up @@ -376,6 +378,7 @@ private List<HostBean> createHostBeans(Cursor c) {
COL_FONTSIZE = c.getColumnIndexOrThrow(FIELD_HOST_FONTSIZE),
COL_COMPRESSION = c.getColumnIndexOrThrow(FIELD_HOST_COMPRESSION),
COL_ENCODING = c.getColumnIndexOrThrow(FIELD_HOST_ENCODING),
COL_AMBWIDE = c.getColumnIndexOrThrow(FIELD_HOST_AMBWIDE),
COL_STAYCONNECTED = c.getColumnIndexOrThrow(FIELD_HOST_STAYCONNECTED);


Expand All @@ -399,6 +402,7 @@ private List<HostBean> createHostBeans(Cursor c) {
host.setFontSize(c.getInt(COL_FONTSIZE));
host.setCompression(Boolean.valueOf(c.getString(COL_COMPRESSION)));
host.setEncoding(c.getString(COL_ENCODING));
host.setAmbWide(Boolean.valueOf(c.getString(COL_AMBWIDE)));
host.setStayConnected(Boolean.valueOf(c.getString(COL_STAYCONNECTED)));

hosts.add(host);
Expand Down

0 comments on commit fa5f453

Please sign in to comment.