Changeset 445
- Timestamp:
- 05/30/09 14:33:31 (3 years ago)
- Location:
- branches/LogicMail-1.1/LogicMail
- Files:
-
- 2 added
- 12 edited
-
LogicMail.jdp (modified) (2 diffs)
-
src/org/logicprobe/LogicMail/LogicMail.java (modified) (2 diffs)
-
src/org/logicprobe/LogicMail/LogicMail.rrc (modified) (2 diffs)
-
src/org/logicprobe/LogicMail/LogicMail.rrh (modified) (1 diff)
-
src/org/logicprobe/LogicMail/LogicMail_vi.rrc (added)
-
src/org/logicprobe/LogicMail/conf/GlobalConfig.java (modified) (5 diffs)
-
src/org/logicprobe/LogicMail/message/MessagePartFactory.java (modified) (3 diffs)
-
src/org/logicprobe/LogicMail/ui/BaseScreen.java (modified) (5 diffs)
-
src/org/logicprobe/LogicMail/ui/CompositionScreen.java (modified) (4 diffs)
-
src/org/logicprobe/LogicMail/ui/GlobalConfigScreen.java (modified) (5 diffs)
-
src/org/logicprobe/LogicMail/ui/MailboxScreen.java (modified) (2 diffs)
-
src/org/logicprobe/LogicMail/ui/MessageScreen.java (modified) (3 diffs)
-
src/org/logicprobe/LogicMail/util/StringParser.java (modified) (1 diff)
-
src/org/logicprobe/LogicMail/util/UnicodeNormalizer.java (added)
Legend:
- Unmodified
- Added
- Removed
-
branches/LogicMail-1.1/LogicMail/LogicMail.jdp
r419 r445 52 52 src\org\logicprobe\LogicMail\LogicMail_fr.rrc 53 53 src\org\logicprobe\LogicMail\LogicMail_nl.rrc 54 src\org\logicprobe\LogicMail\LogicMail_vi.rrc 54 55 src\org\logicprobe\LogicMail\LogicMail_zh.rrc 55 56 src\org\logicprobe\LogicMail\LogicMail_zh_CN.rrc … … 116 117 src\org\logicprobe\LogicMail\util\StringFactory.java 117 118 src\org\logicprobe\LogicMail\util\StringParser.java 119 src\org\logicprobe\LogicMail\util\UnicodeNormalizer.java 118 120 src\org\logicprobe\LogicMail\util\UniqueIdGenerator.java 119 121 src\org\logicprobe\LogicMail\util\UtilProxy.java -
branches/LogicMail-1.1/LogicMail/src/org/logicprobe/LogicMail/LogicMail.java
r423 r445 33 33 34 34 import java.util.Calendar; 35 36 import net.rim.device.api.i18n.Locale; 35 37 import net.rim.device.api.system.EventLogger; 36 38 import net.rim.device.api.ui.UiApplication; … … 58 60 MailSettings.getInstance().loadSettings(); 59 61 62 // Set the language, if configured 63 String languageCode = 64 MailSettings.getInstance().getGlobalConfig().getLanguageCode(); 65 if(languageCode != null) { 66 try { 67 Locale.setDefault(Locale.get(languageCode)); 68 } catch (Exception e) { } 69 } 70 60 71 // Log application startup information 61 72 if(EventLogger.getMinimumLevel() >= EventLogger.INFORMATION) { -
branches/LogicMail-1.1/LogicMail/src/org/logicprobe/LogicMail/LogicMail.rrc
r444 r445 37 37 CONFIG_GLOBAL_HOSTNAME#0="Hostname:"; 38 38 CONFIG_GLOBAL_IMAP_SETTINGS#0="IMAP settings:"; 39 CONFIG_GLOBAL_LANGUAGE#0="Language:"; 39 40 CONFIG_GLOBAL_LOCAL_DATA_LOCATION#0="Local data location:"; 40 41 CONFIG_GLOBAL_MESSAGE_COUNT#0="Message count:"; … … 44 45 CONFIG_GLOBAL_SETTINGS#0="Global settings"; 45 46 CONFIG_GLOBAL_TITLE#0="Global"; 47 CONFIG_GLOBAL_UNICODE_NORMALIZATION#0="Unicode normalization"; 46 48 CONFIG_GLOBAL_WIFI_MODE#0="WiFi mode:"; 47 49 CONFIG_IDENTITIES#0="Identities"; -
branches/LogicMail-1.1/LogicMail/src/org/logicprobe/LogicMail/LogicMail.rrh
r444 r445 141 141 MAILCLIENT_STATUS_AUTHENTICATION_FAILURE#0=166; 142 142 MAILCLIENT_STATUS_UNABLE_TO_CONNECT_TO_SERVER#0=168; 143 CONFIG_GLOBAL_LANGUAGE#0=169; 144 CONFIG_GLOBAL_UNICODE_NORMALIZATION#0=170; -
branches/LogicMail-1.1/LogicMail/src/org/logicprobe/LogicMail/conf/GlobalConfig.java
r287 r445 44 44 public class GlobalConfig implements Serializable { 45 45 private long uniqueId; 46 /** language code to use for the UI, or null for system default */ 47 private String languageCode; 48 /** true to enable Unicode normalization */ 49 private boolean unicodeNormalization; 46 50 /** number of message headers to retrieve */ 47 51 private int retMsgCount; 48 /** true for ascending, false for de cending */52 /** true for ascending, false for descending */ 49 53 private boolean dispOrder; 50 54 /** IMAP: maximum message size */ … … 85 89 private void setDefaults() { 86 90 uniqueId = UniqueIdGenerator.getInstance().getUniqueId(); 91 this.languageCode = ""; 92 this.unicodeNormalization = false; 87 93 this.retMsgCount = 30; 88 94 this.dispOrder = false; … … 95 101 } 96 102 103 public void setLanguageCode(String languageCode) { 104 this.languageCode = languageCode; 105 } 106 107 public String getLanguageCode() { 108 return languageCode; 109 } 110 111 public void setUnicodeNormalization(boolean unicodeNormalization) { 112 this.unicodeNormalization = unicodeNormalization; 113 } 114 115 public boolean getUnicodeNormalization() { 116 return unicodeNormalization; 117 } 118 97 119 public void setRetMsgCount(int retMsgCount) { 98 120 this.retMsgCount = retMsgCount; … … 172 194 SerializableHashtable table = new SerializableHashtable(); 173 195 196 table.put("global_languageCode", languageCode); 197 table.put("global_unicodeNormalization", new Boolean(unicodeNormalization)); 174 198 table.put("global_retMsgCount", new Integer(retMsgCount)); 175 199 table.put("global_dispOrder", new Boolean(dispOrder)); … … 193 217 Object value; 194 218 219 value = table.get("global_languageCode"); 220 if(value != null && value instanceof String) { 221 languageCode = (String)value; 222 } 223 value = table.get("global_unicodeNormalization"); 224 if(value != null && value instanceof Boolean) { 225 unicodeNormalization = ((Boolean)value).booleanValue(); 226 } 195 227 value = table.get("global_retMsgCount"); 196 228 if(value != null && value instanceof Integer) { -
branches/LogicMail-1.1/LogicMail/src/org/logicprobe/LogicMail/message/MessagePartFactory.java
r397 r445 33 33 import net.rim.device.api.system.EncodedImage; 34 34 35 import org.logicprobe.LogicMail.conf.MailSettings; 35 36 import org.logicprobe.LogicMail.util.StringParser; 36 37 import org.logicprobe.LogicMail.util.StringFactory; 38 import org.logicprobe.LogicMail.util.UnicodeNormalizer; 37 39 import org.logicprobe.LogicMail.util.UtilProxy; 38 40 … … 98 100 private static MessagePart createTextPart(String mimeSubtype, 99 101 String encoding, String charset, String data) { 102 103 UnicodeNormalizer unicodeNormalizer; 104 if(MailSettings.getInstance().getGlobalConfig().getUnicodeNormalization()) { 105 unicodeNormalizer = UnicodeNormalizer.getInstance(); 106 } 107 else { 108 unicodeNormalizer = null; 109 } 110 100 111 // Check for any encodings that need to be handled 101 112 if (encoding.equalsIgnoreCase("quoted-printable")) { … … 141 152 } 142 153 154 // The last step is to run the Unicode normalizer, if enabled 155 if(unicodeNormalizer != null) { 156 // If the encoding type is QP, then we need to do another 157 // charset juggle to make sure that the data is using the, 158 // right characters instead of ISO-8859-1 characters 159 if(encoding.equalsIgnoreCase("quoted-printable")) { 160 try{ 161 byte[] encodedBytes = data.getBytes(); 162 data = new String(encodedBytes, charset); 163 } catch(Exception e){} 164 } 165 data = unicodeNormalizer.normalize(data); 166 } 167 143 168 // Check for a supported text sub-type and decode if necessary 144 169 if (mimeSubtype.equalsIgnoreCase("plain")) { -
branches/LogicMail-1.1/LogicMail/src/org/logicprobe/LogicMail/ui/BaseScreen.java
r423 r445 40 40 import org.logicprobe.LogicMail.AppInfo; 41 41 import org.logicprobe.LogicMail.LogicMailResource; 42 import org.logicprobe.LogicMail.conf.MailSettings; 42 43 import org.logicprobe.LogicMail.util.Connection; 44 import org.logicprobe.LogicMail.util.UnicodeNormalizer; 43 45 44 46 … … 50 52 public abstract class BaseScreen extends MainScreen { 51 53 protected static ResourceBundle resources = ResourceBundle.getBundle(LogicMailResource.BUNDLE_ID, LogicMailResource.BUNDLE_NAME); 54 private UnicodeNormalizer unicodeNormalizer; 52 55 private HeaderField headerField; 53 56 … … 96 99 public BaseScreen() { 97 100 super(); 101 102 if(MailSettings.getInstance().getGlobalConfig().getUnicodeNormalization()) { 103 unicodeNormalizer = UnicodeNormalizer.getInstance(); 104 } 98 105 } 99 106 … … 104 111 headerField = new HeaderField("LogicMail - " + title); 105 112 setTitle(headerField); 113 114 if(MailSettings.getInstance().getGlobalConfig().getUnicodeNormalization()) { 115 unicodeNormalizer = UnicodeNormalizer.getInstance(); 116 } 106 117 } 107 118 … … 132 143 return true; 133 144 } 145 146 /** 147 * Run the Unicode normalizer on the provide string, 148 * only if normalization is enabled in the configuration. 149 * If normalization is disabled, this method returns 150 * the input unmodified. 151 * 152 * @param input Input string 153 * @return Normalized string 154 */ 155 protected String normalize(String input) { 156 if(unicodeNormalizer == null) { 157 return input; 158 } 159 else { 160 return unicodeNormalizer.normalize(input); 161 } 162 } 134 163 } -
branches/LogicMail-1.1/LogicMail/src/org/logicprobe/LogicMail/ui/CompositionScreen.java
r444 r445 124 124 125 125 // Set the subject 126 fldSubject.setText( env.subject);126 fldSubject.setText(normalize(env.subject)); 127 127 128 128 // Set the recipients … … 130 130 for(i=0; i<env.to.length; i++) { 131 131 if(env.to[i].indexOf('@') != -1) { 132 insertRecipientField(EmailAddressBookEditField.ADDRESS_TO).setAddress( env.to[i]);132 insertRecipientField(EmailAddressBookEditField.ADDRESS_TO).setAddress(normalize(env.to[i])); 133 133 } 134 134 } … … 137 137 for(i=0; i<env.cc.length; i++) { 138 138 if(env.cc[i].indexOf('@') != -1) { 139 insertRecipientField(EmailAddressBookEditField.ADDRESS_CC).setAddress( env.cc[i]);139 insertRecipientField(EmailAddressBookEditField.ADDRESS_CC).setAddress(normalize(env.cc[i])); 140 140 } 141 141 } … … 144 144 for(i=0; i<env.bcc.length; i++) { 145 145 if(env.bcc[i].indexOf('@') != -1) { 146 insertRecipientField(EmailAddressBookEditField.ADDRESS_BCC).setAddress( env.bcc[i]);146 insertRecipientField(EmailAddressBookEditField.ADDRESS_BCC).setAddress(normalize(env.bcc[i])); 147 147 } 148 148 } -
branches/LogicMail-1.1/LogicMail/src/org/logicprobe/LogicMail/ui/GlobalConfigScreen.java
r444 r445 32 32 package org.logicprobe.LogicMail.ui; 33 33 34 import net.rim.device.api.i18n.Locale; 34 35 import net.rim.device.api.ui.Field; 35 36 import net.rim.device.api.ui.FieldChangeListener; … … 50 51 public class GlobalConfigScreen extends BaseCfgScreen implements FieldChangeListener { 51 52 private MailSettings mailSettings; 53 private ObjectChoiceField fldLanguage; 54 private CheckboxField fldUnicodeNormalization; 52 55 private BasicEditField fldRetMsgCount; 53 56 private ObjectChoiceField fldDispOrder; … … 63 66 private String localHostname; 64 67 68 private String[] languageChoices; 69 private String[] languageCodes; 70 65 71 public GlobalConfigScreen() { 66 72 super("LogicMail - " + … … 72 78 73 79 add(new RichTextField(resources.getString(LogicMailResource.CONFIG_GLOBAL_GLOBAL_SETTINGS), Field.NON_FOCUSABLE)); 80 81 languageChoices = new String[] { 82 "BlackBerry", // System default 83 "Dansk", // Danish: da 84 "Deutsch", // German: de 85 "English", // English: en 86 "Español", // Spanish: es 87 "Français", // French: fr 88 "Nederlands", // Dutch: nl 89 "Ti\u00ea\u0301ng Vi\u00ea\u0323t", // Vietnamese: vi 90 "\u4E2D\u6587", // Chinese: zh 91 }; 92 languageCodes = new String[] { 93 "", // System default 94 "da", // Danish 95 "de", // German 96 "en", // English 97 "es", // Spanish 98 "fr", // French 99 "nl", // Dutch 100 "vi", // Vietnamese 101 "zh", // Chinese 102 }; 103 104 String languageCode = config.getLanguageCode(); 105 int languageIndex = 0; 106 if(languageCode != null && languageCode.length() != 0) { 107 for(int i=0; i<languageCodes.length; i++) { 108 if(languageCodes[i].equals(languageCode)) { 109 languageIndex = i; 110 break; 111 } 112 } 113 } 114 115 fldLanguage = new ObjectChoiceField(" " + resources.getString(LogicMailResource.CONFIG_GLOBAL_LANGUAGE), languageChoices, languageIndex); 116 add(fldLanguage); 117 118 fldUnicodeNormalization = new CheckboxField(resources.getString(LogicMailResource.CONFIG_GLOBAL_UNICODE_NORMALIZATION), config.getUnicodeNormalization()); 119 add(fldUnicodeNormalization); 74 120 75 121 fldRetMsgCount = new BasicEditField(" " + resources.getString(LogicMailResource.CONFIG_GLOBAL_MESSAGE_COUNT) + ' ', … … 158 204 GlobalConfig config = mailSettings.getGlobalConfig(); 159 205 206 String languageCode = languageCodes[fldLanguage.getSelectedIndex()]; 207 if(languageCode != null && languageCode.length() != 0) { 208 try { 209 Locale.setDefault(Locale.get(languageCode)); 210 config.setLanguageCode(languageCode); 211 } catch (Exception e) { } 212 } 213 else { 214 Locale.setDefault(Locale.getDefault()); 215 config.setLanguageCode(""); 216 } 217 218 config.setUnicodeNormalization(fldUnicodeNormalization.getChecked()); 219 160 220 try { 161 221 config.setRetMsgCount(Integer.parseInt(fldRetMsgCount.getText())); -
branches/LogicMail-1.1/LogicMail/src/org/logicprobe/LogicMail/ui/MailboxScreen.java
r444 r445 302 302 else { 303 303 if(env.from != null && env.from.length > 0) { 304 graphics.drawText( (String)env.from[0], 20, y,304 graphics.drawText(normalize(env.from[0]), 20, y, 305 305 (int)(getStyle() | DrawStyle.ELLIPSIS), 306 306 senderWidth); … … 309 309 graphics.setFont(origFont.derive(Font.PLAIN)); 310 310 if(env.subject != null) { 311 graphics.drawText( (String)env.subject, 20, y+lineHeight,311 graphics.drawText(normalize(env.subject), 20, y+lineHeight, 312 312 (int)(getStyle() | DrawStyle.ELLIPSIS), 313 313 maxWidth-20); -
branches/LogicMail-1.1/LogicMail/src/org/logicprobe/LogicMail/ui/MessageScreen.java
r428 r445 92 92 if(isSentFolder) { 93 93 if(envelope.to != null && envelope.to.length > 0) { 94 add(new RichTextField(resources.getString(LogicMailResource.MESSAGEPROPERTIES_TO) + ' ' + envelope.to[0]));94 add(new RichTextField(resources.getString(LogicMailResource.MESSAGEPROPERTIES_TO) + ' ' + normalize(envelope.to[0]))); 95 95 if(envelope.to.length > 1) { 96 96 for(int i=1;i<envelope.to.length;i++) { … … 104 104 else { 105 105 if(envelope.from != null && envelope.from.length > 0) { 106 add(new RichTextField(resources.getString(LogicMailResource.MESSAGEPROPERTIES_FROM) + ' ' + envelope.from[0]));106 add(new RichTextField(resources.getString(LogicMailResource.MESSAGEPROPERTIES_FROM) + ' ' + normalize(envelope.from[0]))); 107 107 if(envelope.from.length > 1) { 108 108 for(int i=1;i<envelope.from.length;i++) { 109 109 if(envelope.from[i] != null) { 110 add(new RichTextField(" " + envelope.from[i]));110 add(new RichTextField(" " + normalize(envelope.from[i]))); 111 111 } 112 112 } … … 115 115 } 116 116 if(envelope.subject != null) { 117 add(new RichTextField(resources.getString(LogicMailResource.MESSAGEPROPERTIES_SUBJECT) + ' ' + envelope.subject));117 add(new RichTextField(resources.getString(LogicMailResource.MESSAGEPROPERTIES_SUBJECT) + ' ' + normalize(envelope.subject))); 118 118 } 119 119 add(new SeparatorField()); -
branches/LogicMail-1.1/LogicMail/src/org/logicprobe/LogicMail/util/StringParser.java
r384 r445 769 769 } 770 770 } 771 else if(text.charAt(index) == '_') { 772 buffer.append(' '); 773 index++; 774 } 771 775 else { 772 776 buffer.append(text.charAt(index));
Note: See TracChangeset
for help on using the changeset viewer.
