git clone of logicmail with some fixes/features added
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Fixed autostart app icon and home-screen state saving on explicit exit.

git-svn-id: https://logicmail.svn.sourceforge.net/svnroot/logicmail/trunk@934 5c734088-3d25-0410-9155-b3c3832efda5

octorian 7bd70b95 53c629bf

+51 -20
+5
LogicMail/src/org/logicprobe/LogicMail/LogicMail.java
··· 432 432 HomeScreen.updateIcon(AppInfo.getIcon(), 0); 433 433 HomeScreen.setRolloverIcon(AppInfo.getRolloverIcon(), 0); 434 434 435 + try { 436 + HomeScreen.updateIcon(AppInfo.getIcon(), 1); 437 + HomeScreen.setRolloverIcon(AppInfo.getRolloverIcon(), 1); 438 + } catch (IllegalArgumentException e) { } 439 + 435 440 // Register for synchronization 436 441 SyncManager.getInstance().enableSynchronization(LogicMailSyncCollection.getInstance()); 437 442 }
+1 -1
LogicMail/src/org/logicprobe/LogicMail/ui/MailHomeScreen.java
··· 860 860 } 861 861 } 862 862 863 - private void saveScreenMetadata() { 863 + void saveScreenMetadata() { 864 864 SerializableHashtable folderMetadata = new SerializableHashtable(); 865 865 saveScreenState(folderMetadata); 866 866
+8
LogicMail/src/org/logicprobe/LogicMail/ui/NotificationHandlerBB45.java
··· 357 357 if(newMessages) { 358 358 HomeScreen.updateIcon(AppInfo.getNewMessagesIcon(), 0); 359 359 HomeScreen.setRolloverIcon(AppInfo.getNewMessagesRolloverIcon(), 0); 360 + try { 361 + HomeScreen.updateIcon(AppInfo.getNewMessagesIcon(), 1); 362 + HomeScreen.setRolloverIcon(AppInfo.getNewMessagesRolloverIcon(), 1); 363 + } catch (IllegalArgumentException e) { } 360 364 } 361 365 else { 362 366 HomeScreen.updateIcon(AppInfo.getIcon(), 0); 363 367 HomeScreen.setRolloverIcon(AppInfo.getRolloverIcon(), 0); 368 + try { 369 + HomeScreen.updateIcon(AppInfo.getIcon(), 1); 370 + HomeScreen.setRolloverIcon(AppInfo.getRolloverIcon(), 1); 371 + } catch (IllegalArgumentException e) { } 364 372 } 365 373 } 366 374 }
+24 -4
LogicMail/src/org/logicprobe/LogicMail/ui/StandardScreen.java
··· 40 40 import net.rim.device.api.i18n.ResourceBundle; 41 41 import net.rim.device.api.ui.Field; 42 42 import net.rim.device.api.ui.MenuItem; 43 + import net.rim.device.api.ui.Screen; 43 44 import net.rim.device.api.ui.UiApplication; 44 45 import net.rim.device.api.ui.component.Dialog; 45 46 import net.rim.device.api.ui.component.Menu; ··· 264 265 accounts[i].requestDisconnect(true); 265 266 } 266 267 } 267 - cleanupTitleField(titleField); 268 - LogicMail.shutdownApplication(); 268 + doShutdownProcess(); 269 269 } 270 270 } 271 271 else { 272 - cleanupTitleField(titleField); 273 - LogicMail.shutdownApplication(); 272 + doShutdownProcess(); 273 + } 274 + } 275 + 276 + private void doShutdownProcess() { 277 + // Iterate through the screen stack, find the LogicMail home screen, 278 + // and tell it to save its state. If other screens have persistable 279 + // state, then this needs to be refactored into a common ScreenProvider 280 + // method. 281 + Screen screen = this; 282 + while(screen != null) { 283 + if(screen instanceof StandardScreen) { 284 + ScreenProvider provider = ((StandardScreen)screen).screenProvider; 285 + if(provider instanceof MailHomeScreen) { 286 + ((MailHomeScreen)provider).saveScreenMetadata(); 287 + break; 288 + } 289 + } 290 + screen = screen.getScreenBelow(); 274 291 } 292 + 293 + cleanupTitleField(titleField); 294 + LogicMail.shutdownApplication(); 275 295 } 276 296 277 297 protected void cleanupTitleField(Field titleField) {
+13 -15
LogicMail_BB60/src/org/logicprobe/LogicMail/ui/NotificationHandlerBB60.java
··· 38 38 39 39 public class NotificationHandlerBB60 extends NotificationHandlerBB46 { 40 40 private boolean iconSet; 41 - private final ApplicationDescriptor appDescriptor; 41 + private final ApplicationDescriptor[] appDescriptors; 42 42 43 43 public NotificationHandlerBB60() { 44 44 super(); 45 - this.appDescriptor = findHomeScreenApplicationDescriptor(); 45 + this.appDescriptors = findApplicationDescriptors(); 46 46 } 47 47 48 - private static ApplicationDescriptor findHomeScreenApplicationDescriptor() { 49 - ApplicationDescriptor result = null; 48 + private static ApplicationDescriptor[] findApplicationDescriptors() { 49 + ApplicationDescriptor[] result = null; 50 50 try { 51 51 int moduleHandle = ApplicationDescriptor.currentApplicationDescriptor().getModuleHandle(); 52 - ApplicationDescriptor[] descriptors = CodeModuleManager.getApplicationDescriptors(moduleHandle); 53 - for(int i=0; i<descriptors.length; i++) { 54 - if(descriptors[i].getIndex() == 0) { 55 - result = descriptors[i]; 56 - break; 57 - } 58 - } 52 + result = CodeModuleManager.getApplicationDescriptors(moduleHandle); 59 53 } catch (Exception e) { } 60 54 return result; 61 55 } ··· 67 61 } 68 62 69 63 protected void setAppIcon(boolean newMessages) { 70 - if(appDescriptor != null) { 64 + if(appDescriptors != null) { 71 65 if(!iconSet) { 72 - HomeScreen.updateIcon(AppInfo.getIcon(), appDescriptor); 73 - HomeScreen.setRolloverIcon(AppInfo.getRolloverIcon(), appDescriptor); 66 + for(int i=0; i<appDescriptors.length; i++) { 67 + HomeScreen.updateIcon(AppInfo.getIcon(), appDescriptors[i]); 68 + HomeScreen.setRolloverIcon(AppInfo.getRolloverIcon(), appDescriptors[i]); 69 + } 74 70 iconSet = true; 75 71 } 76 - HomeScreen.setNewState(newMessages, appDescriptor); 72 + for(int i=0; i<appDescriptors.length; i++) { 73 + HomeScreen.setNewState(newMessages, appDescriptors[i]); 74 + } 77 75 } 78 76 else { 79 77 super.setAppIcon(newMessages);