Changeset 549
- Timestamp:
- 11/20/09 22:41:43 (2 years ago)
- Location:
- trunk
- Files:
-
- 4 added
- 11 edited
-
LogicMail/src/org/logicprobe/LogicMail/model/MailFileManager.java (modified) (5 diffs)
-
LogicMail/src/org/logicprobe/LogicMail/ui/AccountConfigScreen.java (modified) (4 diffs)
-
LogicMail/src/org/logicprobe/LogicMail/ui/ConfigScreen.java (modified) (25 diffs)
-
LogicMail/src/org/logicprobe/LogicMail/ui/FieldFactory.java (modified) (1 diff)
-
LogicMail/src/org/logicprobe/LogicMail/ui/GlobalConfigScreen.java (modified) (2 diffs)
-
LogicMail/src/org/logicprobe/LogicMail/ui/LabeledSeparatorField.java (added)
-
LogicMail/src/org/logicprobe/LogicMail/ui/MailHomeScreen.java (modified) (30 diffs)
-
LogicMail/src/org/logicprobe/LogicMail/ui/MailboxScreen.java (modified) (7 diffs)
-
LogicMail/src/org/logicprobe/LogicMail/ui/ScreenFactory.java (modified) (1 diff)
-
LogicMail/src/org/logicprobe/LogicMail/ui/TreeFieldNode.java (added)
-
LogicMail_BB47T/res/icons/chevron_right_black_15x22.png (added)
-
LogicMail_BB47T/res/icons/chevron_right_white_15x22.png (added)
-
LogicMail_BB47T/src/org/logicprobe/LogicMail/ui/FieldFactoryBB47T.java (modified) (1 diff)
-
LogicMail_BB47T/src/org/logicprobe/LogicMail/ui/ScreenFactoryBB47T.java (modified) (1 diff)
-
LogicMail_BB47T/src/org/logicprobe/LogicMail/ui/TouchScreenTreeField.java (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/LogicMail/src/org/logicprobe/LogicMail/model/MailFileManager.java
r532 r549 130 130 */ 131 131 public void writeMessage(MessageNode messageNode) throws IOException { 132 if(cacheUrl == null) { return; } 133 132 134 // Create a file connection for the message 133 135 FileConnection fileConnection = getMailboxFileConnection(messageNode.getParent()); … … 168 170 */ 169 171 public MessageToken[] readMessageTokens(MailboxNode mailboxNode) throws IOException { 172 if(cacheUrl == null) { return new MessageToken[0]; } 173 170 174 //TODO: Implement an indexing mechanism to avoid listing the whole directory 171 175 //TODO: Provide support for partial listing requests … … 191 195 192 196 public MessageNode[] readMessageNodes(MailboxNode mailboxNode) throws IOException { 197 if(cacheUrl == null) { return new MessageNode[0]; } 198 193 199 Vector messageNodeList = new Vector(); 194 200 … … 211 217 212 218 public MessageNode readMessageNode(MailboxNode mailboxNode, MessageToken messageToken, boolean loadContent) throws IOException { 219 if(cacheUrl == null) { return null; } 220 213 221 FileConnection fileConnection = getMailboxFileConnection(mailboxNode); 214 222 if(!fileConnection.exists()) { return null; } … … 229 237 230 238 public MimeMessageContent[] readMessageContent(MailboxNode mailboxNode, MessageToken messageToken) throws IOException { 239 if(cacheUrl == null) { return null; } 240 231 241 FileConnection fileConnection = getMailboxFileConnection(mailboxNode); 232 242 if(!fileConnection.exists()) { return null; } -
trunk/LogicMail/src/org/logicprobe/LogicMail/ui/AccountConfigScreen.java
r481 r549 33 33 34 34 import java.util.Vector; 35 35 36 import net.rim.device.api.ui.Field; 36 37 import net.rim.device.api.ui.FieldChangeListener; … … 44 45 import net.rim.device.api.ui.component.RichTextField; 45 46 import net.rim.device.api.ui.component.SeparatorField; 47 import net.rim.device.api.ui.component.TextField; 46 48 import net.rim.device.api.ui.container.VerticalFieldManager; 47 49 import net.rim.device.api.ui.text.TextFilter; … … 213 215 private Manager initFieldsBasic() { 214 216 Manager manager = new VerticalFieldManager(); 215 serverNameField = new BasicEditField(resources.getString(LogicMailResource.CONFIG_ACCOUNT_SERVER) + ' ', acctConfig.getServerName()); 217 serverNameField = new BasicEditField(resources.getString(LogicMailResource.CONFIG_ACCOUNT_SERVER) + ' ', acctConfig.getServerName(), 218 256, TextField.NO_NEWLINE); 216 219 serverSecurityField = new ObjectChoiceField( 217 220 resources.getString(LogicMailResource.CONFIG_ACCOUNT_SECURITY), … … 223 226 acctConfig.getServerSecurity()); 224 227 serverSecurityField.setChangeListener(fieldChangeListener); 225 serverPortField = new BasicEditField(resources.getString(LogicMailResource.CONFIG_ACCOUNT_PORT) + ' ', Integer.toString(acctConfig.getServerPort())); 228 serverPortField = new BasicEditField(resources.getString(LogicMailResource.CONFIG_ACCOUNT_PORT) + ' ', Integer.toString(acctConfig.getServerPort()), 229 5, TextField.NO_NEWLINE); 226 230 serverPortField.setFilter(TextFilter.get(TextFilter.NUMERIC)); 227 serverUserField = new BasicEditField(resources.getString(LogicMailResource.CONFIG_ACCOUNT_USERNAME) + ' ', acctConfig.getServerUser()); 228 serverPassField = new PasswordEditField(resources.getString(LogicMailResource.CONFIG_ACCOUNT_PASSWORD) + ' ', acctConfig.getServerPass()); 231 serverUserField = new BasicEditField(resources.getString(LogicMailResource.CONFIG_ACCOUNT_USERNAME) + ' ', acctConfig.getServerUser(), 232 256, TextField.NO_NEWLINE); 233 serverPassField = new PasswordEditField(resources.getString(LogicMailResource.CONFIG_ACCOUNT_PASSWORD) + ' ', acctConfig.getServerPass(), 234 256, TextField.NO_NEWLINE); 229 235 useMdsField = new CheckboxField(resources.getString(LogicMailResource.CONFIG_ACCOUNT_USEMDSPROXY), !acctConfig.getDeviceSide()); 230 236 identityField = new ObjectChoiceField(resources.getString(LogicMailResource.CONFIG_ACCOUNT_IDENTITY) + ' ', identityConfigs, 0); -
trunk/LogicMail/src/org/logicprobe/LogicMail/ui/ConfigScreen.java
r463 r549 46 46 import org.logicprobe.LogicMail.conf.AccountConfig; 47 47 import org.logicprobe.LogicMail.conf.ConnectionConfig; 48 import org.logicprobe.LogicMail.conf.GlobalConfig; 48 49 import org.logicprobe.LogicMail.conf.IdentityConfig; 49 50 import org.logicprobe.LogicMail.conf.ImapConfig; … … 89 90 */ 90 91 private void initFields() { 91 configTreeField = newTreeField(92 configTreeField = FieldFactory.getInstance().getScreenTreeField( 92 93 new TreeFieldCallback() { 93 94 public void drawTreeItem(TreeField treeField, Graphics graphics, int node, int y, int width, int indent) { … … 99 100 configTreeField.setIndentWidth(20); 100 101 101 globalId = configTreeField.addChildNode(0, resources.getString(LogicMailResource.CONFIG_GLOBAL_SETTINGS));102 identitiesId = configTreeField.addSiblingNode(globalId, resources.getString(LogicMailResource.CONFIG_IDENTITIES));103 accountsId = configTreeField.addSiblingNode(identitiesId, resources.getString(LogicMailResource.CONFIG_ACCOUNTS));104 outgoingId = configTreeField.addSiblingNode(accountsId, resources.getString(LogicMailResource.CONFIG_OUTGOING_SERVERS));102 globalId = configTreeField.addChildNode(0, new ConfigTreeNode(resources.getString(LogicMailResource.CONFIG_GLOBAL_SETTINGS))); 103 identitiesId = configTreeField.addSiblingNode(globalId, new ConfigTreeNode(resources.getString(LogicMailResource.CONFIG_IDENTITIES))); 104 accountsId = configTreeField.addSiblingNode(identitiesId, new ConfigTreeNode(resources.getString(LogicMailResource.CONFIG_ACCOUNTS))); 105 outgoingId = configTreeField.addSiblingNode(accountsId, new ConfigTreeNode(resources.getString(LogicMailResource.CONFIG_OUTGOING_SERVERS))); 105 106 106 107 add(configTreeField); … … 137 138 public void configTreeFieldDrawTreeItem(TreeField treeField, Graphics graphics, int node, int y, int width, int indent) { 138 139 Object cookie = treeField.getCookie(node); 139 graphics.drawText(cookie.toString(), indent , y, Graphics.ELLIPSIS, width);140 graphics.drawText(cookie.toString(), indent + 2, y, Graphics.ELLIPSIS, width); 140 141 } 141 142 … … 205 206 protected void makeMenu(Menu menu, int instance) { 206 207 int id = configTreeField.getCurrentNode(); 207 Object cookie = configTreeField.getCookie(id); 208 209 Object cookie; 210 Object rawCookie = configTreeField.getCookie(id); 211 if(rawCookie instanceof ConfigTreeNode) { 212 cookie = ((ConfigTreeNode)rawCookie).cookie; 213 } 214 else { 215 cookie = null; 216 } 217 208 218 if(id != identitiesId && id != accountsId && id != outgoingId) { 209 219 menu.add(selectItem); … … 304 314 else { 305 315 int parentNode = configTreeField.getParent(curNode); 316 Object cookie = ((ConfigTreeNode)configTreeField.getCookie(curNode)).cookie; 306 317 if(parentNode == identitiesId) { 307 IdentityConfig identityConfig = (IdentityConfig)co nfigTreeField.getCookie(curNode);318 IdentityConfig identityConfig = (IdentityConfig)cookie; 308 319 IdentityConfigScreen identityConfigScreen = new IdentityConfigScreen(identityConfig); 309 320 UiApplication.getUiApplication().pushModalScreen(identityConfigScreen); … … 315 326 } 316 327 else if(parentNode == accountsId) { 317 AccountConfig acctConfig = (AccountConfig)co nfigTreeField.getCookie(curNode);328 AccountConfig acctConfig = (AccountConfig)cookie; 318 329 AccountConfigScreen accountConfigScreen = new AccountConfigScreen(acctConfig); 319 330 UiApplication.getUiApplication().pushModalScreen(accountConfigScreen); … … 325 336 } 326 337 else if(parentNode == outgoingId) { 327 OutgoingConfig outgoingConfig = (OutgoingConfig)co nfigTreeField.getCookie(curNode);338 OutgoingConfig outgoingConfig = (OutgoingConfig)cookie; 328 339 OutgoingConfigScreen outgoingConfigScreen = new OutgoingConfigScreen(outgoingConfig); 329 340 UiApplication.getUiApplication().pushModalScreen(outgoingConfigScreen); … … 347 358 if(prevNode == -1) { return; } 348 359 349 Object cookie = configTreeField.getCookie(curNode); 360 Object cookie = ((ConfigTreeNode)configTreeField.getCookie(curNode)).cookie; 361 Object prevCookie = ((ConfigTreeNode)configTreeField.getCookie(prevNode)).cookie; 350 362 351 363 boolean result = false; … … 353 365 if(cookie instanceof IdentityConfig) { 354 366 IdentityConfig curConfig = (IdentityConfig)cookie; 355 IdentityConfig prevConfig = (IdentityConfig) configTreeField.getCookie(prevNode);367 IdentityConfig prevConfig = (IdentityConfig)prevCookie; 356 368 357 369 int curConfigIndex = mailSettings.indexOfIdentityConfig(curConfig); … … 364 376 else if(cookie instanceof AccountConfig) { 365 377 AccountConfig curConfig = (AccountConfig)cookie; 366 AccountConfig prevConfig = (AccountConfig) configTreeField.getCookie(prevNode);378 AccountConfig prevConfig = (AccountConfig)prevCookie; 367 379 368 380 int curConfigIndex = mailSettings.indexOfAccountConfig(curConfig); … … 375 387 else if(cookie instanceof OutgoingConfig) { 376 388 OutgoingConfig curConfig = (OutgoingConfig)cookie; 377 OutgoingConfig prevConfig = (OutgoingConfig) configTreeField.getCookie(prevNode);389 OutgoingConfig prevConfig = (OutgoingConfig)prevCookie; 378 390 379 391 int curConfigIndex = mailSettings.indexOfOutgoingConfig(curConfig); … … 398 410 if(nextNode == -1) { return; } 399 411 400 Object cookie = configTreeField.getCookie(curNode); 412 Object cookie = ((ConfigTreeNode)configTreeField.getCookie(curNode)).cookie; 413 Object nextCookie = ((ConfigTreeNode)configTreeField.getCookie(nextNode)).cookie; 401 414 402 415 boolean result = false; … … 404 417 if(cookie instanceof IdentityConfig) { 405 418 IdentityConfig curConfig = (IdentityConfig)cookie; 406 IdentityConfig nextConfig = (IdentityConfig) configTreeField.getCookie(nextNode);419 IdentityConfig nextConfig = (IdentityConfig)nextCookie; 407 420 408 421 int curConfigIndex = mailSettings.indexOfIdentityConfig(curConfig); … … 415 428 else if(cookie instanceof AccountConfig) { 416 429 AccountConfig curConfig = (AccountConfig)cookie; 417 AccountConfig nextConfig = (AccountConfig) configTreeField.getCookie(nextNode);430 AccountConfig nextConfig = (AccountConfig)nextCookie; 418 431 419 432 int curConfigIndex = mailSettings.indexOfAccountConfig(curConfig); … … 426 439 else if(cookie instanceof OutgoingConfig) { 427 440 OutgoingConfig curConfig = (OutgoingConfig)cookie; 428 OutgoingConfig nextConfig = (OutgoingConfig) configTreeField.getCookie(nextNode);441 OutgoingConfig nextConfig = (OutgoingConfig)nextCookie; 429 442 430 443 int curConfigIndex = mailSettings.indexOfOutgoingConfig(curConfig); … … 450 463 int curNode = configTreeField.getCurrentNode(); 451 464 if(curNode != -1) { 452 curCookie = configTreeField.getCookie(curNode);465 curCookie = ((ConfigTreeNode)configTreeField.getCookie(curNode)).cookie; 453 466 } 454 467 else { … … 476 489 for(int i = numIdentities-1; i >= 0; i--) { 477 490 identityConfig = mailSettings.getIdentityConfig(i); 478 configTreeField.addChildNode(identitiesId, identityConfig);491 configTreeField.addChildNode(identitiesId, new ConfigTreeNode(identityConfig)); 479 492 identityIndexMap.put(identityConfig, new Integer(i)); 480 493 } … … 483 496 for(int i = numAccounts-1; i >= 0; i--) { 484 497 acctConfig = mailSettings.getAccountConfig(i); 485 configTreeField.addChildNode(accountsId, acctConfig);498 configTreeField.addChildNode(accountsId, new ConfigTreeNode(acctConfig)); 486 499 accountIndexMap.put(acctConfig, new Integer(i)); 487 500 } … … 490 503 for(int i = numOutgoing-1; i >= 0; i--) { 491 504 outgoingConfig = mailSettings.getOutgoingConfig(i); 492 configTreeField.addChildNode(outgoingId, outgoingConfig);505 configTreeField.addChildNode(outgoingId, new ConfigTreeNode(outgoingConfig)); 493 506 outgoingIndexMap.put(outgoingConfig, new Integer(i)); 494 507 } … … 497 510 int node = configTreeField.nextNode(0, 0, true); 498 511 while(node != -1) { 499 if( configTreeField.getCookie(node)== curCookie) {512 if(((ConfigTreeNode)configTreeField.getCookie(node)).cookie == curCookie) { 500 513 configTreeField.setCurrentNode(node); 501 514 break; … … 549 562 private void deleteSelectedIdentity() { 550 563 IdentityConfig identityConfig = 551 (IdentityConfig) configTreeField.getCookie(configTreeField.getCurrentNode());564 (IdentityConfig)((ConfigTreeNode)configTreeField.getCookie(configTreeField.getCurrentNode())).cookie; 552 565 553 566 int index = ((Integer)identityIndexMap.get(identityConfig)).intValue(); … … 592 605 private void deleteSelectedAccount() { 593 606 AccountConfig acctConfig = 594 (AccountConfig) configTreeField.getCookie(configTreeField.getCurrentNode());607 (AccountConfig)((ConfigTreeNode)configTreeField.getCookie(configTreeField.getCurrentNode())).cookie; 595 608 596 609 int index = ((Integer)accountIndexMap.get(acctConfig)).intValue(); … … 626 639 private void deleteSelectedOutgoingServer() { 627 640 OutgoingConfig outgoingConfig = 628 (OutgoingConfig) configTreeField.getCookie(configTreeField.getCurrentNode());641 (OutgoingConfig)((ConfigTreeNode)configTreeField.getCookie(configTreeField.getCurrentNode())).cookie; 629 642 630 643 int index = ((Integer)outgoingIndexMap.get(outgoingConfig)).intValue(); … … 639 652 } 640 653 } 654 655 private static class ConfigTreeNode implements TreeFieldNode { 656 public Object cookie; 657 658 public ConfigTreeNode(Object cookie) { 659 this.cookie = cookie; 660 } 661 662 public String toString() { 663 return cookie.toString(); 664 } 665 666 public boolean isNodeSelectable() { 667 if((cookie instanceof GlobalConfig) 668 || (cookie instanceof IdentityConfig) 669 || (cookie instanceof AccountConfig) 670 || (cookie instanceof OutgoingConfig)) { 671 return true; 672 } 673 else { 674 return false; 675 } 676 } 677 } 641 678 } -
trunk/LogicMail/src/org/logicprobe/LogicMail/ui/FieldFactory.java
r501 r549 44 44 */ 45 45 private static String[] factoryClasses = { 46 "org.logicprobe.LogicMail.ui.FieldFactoryBB47", 46 "org.logicprobe.LogicMail.ui.FieldFactoryBB50T", 47 "org.logicprobe.LogicMail.ui.FieldFactoryBB50", 48 "org.logicprobe.LogicMail.ui.FieldFactoryBB47T", 49 "org.logicprobe.LogicMail.ui.FieldFactoryBB47", 47 50 "org.logicprobe.LogicMail.ui.FieldFactoryBB42" 48 51 }; -
trunk/LogicMail/src/org/logicprobe/LogicMail/ui/GlobalConfigScreen.java
r510 r549 64 64 private ObjectChoiceField languageChoiceField; 65 65 private CheckboxField unicodeNormalizationCheckboxField; 66 66 67 private ObjectChoiceField messageDisplayChoiceField; 67 68 private BasicEditField messageCountEditField; … … 214 215 resources.getString(LogicMailResource.CONFIG_GLOBAL_CONNECTION_DEBUGGING), 215 216 existingConfig.getConnDebug()); 216 217 add(languageChoiceField); 218 add( unicodeNormalizationCheckboxField);217 218 219 add(new LabeledSeparatorField("Message display", Field.NON_FOCUSABLE | LabeledSeparatorField.BOTTOM_BORDER)); 219 220 add(messageDisplayChoiceField); 220 221 add(messageCountEditField); 221 222 add(displayOrderChoiceField); 222 223 add(hideDeletedMessagesCheckboxField); 224 225 add(new LabeledSeparatorField("Networking", Field.NON_FOCUSABLE | LabeledSeparatorField.TOP_BORDER | LabeledSeparatorField.BOTTOM_BORDER)); 223 226 add(wifiModeChoiceField); 224 add(localDataLocationChoiceLabel);225 227 add(overrideHostnameCheckboxField); 226 228 add(localHostnameEditField); 229 230 add(new LabeledSeparatorField("Other", Field.NON_FOCUSABLE | LabeledSeparatorField.TOP_BORDER | LabeledSeparatorField.BOTTOM_BORDER)); 231 add(localDataLocationChoiceLabel); 232 add(languageChoiceField); 233 add(unicodeNormalizationCheckboxField); 227 234 add(connectionDebuggingCheckboxField); 228 235 } -
trunk/LogicMail/src/org/logicprobe/LogicMail/ui/MailHomeScreen.java
r528 r549 82 82 private Hashtable mailboxTreeNodeMap; 83 83 private boolean firstVisible; 84 private TreeNode mailTreeRootNode;84 private MailHomeTreeNode mailTreeRootNode; 85 85 private MailManagerListener mailManagerListener; 86 86 private AccountNodeListener accountNodeListener; … … 196 196 private void initMenuItems() { 197 197 selectFolderItem = new TreeNodeMenuItem(resources, LogicMailResource.MENUITEM_SELECT, 100, 8) { 198 public void runNode( TreeNode treeNode) {198 public void runNode(MailHomeTreeNode treeNode) { 199 199 selectFolderItemHandler(treeNode); 200 200 } 201 201 }; 202 202 refreshStatusItem = new TreeNodeMenuItem(resources, LogicMailResource.MENUITEM_REFRESH_STATUS, 110, 10) { 203 public void runNode( TreeNode treeNode) {203 public void runNode(MailHomeTreeNode treeNode) { 204 204 refreshStatusItemHandler(treeNode); 205 205 } 206 206 }; 207 207 refreshFoldersItem = new TreeNodeMenuItem(resources, LogicMailResource.MENUITEM_REFRESH_FOLDERS, 111, 10) { 208 public void runNode( TreeNode treeNode) {208 public void runNode(MailHomeTreeNode treeNode) { 209 209 refreshFoldersItemHandler(treeNode); 210 210 } 211 211 }; 212 212 compositionItem = new TreeNodeMenuItem(resources, LogicMailResource.MENUITEM_COMPOSE_EMAIL, 200000, 9) { 213 public void runNode( TreeNode treeNode) {213 public void runNode(MailHomeTreeNode treeNode) { 214 214 compositionItemHandler(treeNode); 215 215 } 216 216 }; 217 217 disconnectItem = new TreeNodeMenuItem(resources, LogicMailResource.MENUITEM_DISCONNECT, 200000, 9) { 218 public void runNode( TreeNode treeNode) {218 public void runNode(MailHomeTreeNode treeNode) { 219 219 disconnectItemHandler(treeNode); 220 220 } … … 230 230 int nodeId = treeField.getCurrentNode(); 231 231 if(nodeId != -1) { 232 runNode(( TreeNode)treeField.getCookie(nodeId));233 } 234 } 235 236 public abstract void runNode( TreeNode treeNode);232 runNode((MailHomeTreeNode)treeField.getCookie(nodeId)); 233 } 234 } 235 236 public abstract void runNode(MailHomeTreeNode treeNode); 237 237 } 238 238 … … 243 243 private void accountNodeListener_AccountStatusChanged(AccountNodeEvent e) { 244 244 if(e.getType() == AccountNodeEvent.TYPE_CONNECTION) { 245 TreeNode node = (TreeNode)accountTreeNodeMap.get(e.getSource());245 MailHomeTreeNode node = (MailHomeTreeNode)accountTreeNodeMap.get(e.getSource()); 246 246 if(node != null) { 247 247 refreshMailTreeNode(node); … … 254 254 255 255 private void mailboxNodeListener_MailboxStatusChanged(MailboxNodeEvent e) { 256 TreeNode mailboxTreeNode = (TreeNode)mailboxTreeNodeMap.get(e.getSource());256 MailHomeTreeNode mailboxTreeNode = (MailHomeTreeNode)mailboxTreeNodeMap.get(e.getSource()); 257 257 if(mailboxTreeNode != null) { 258 258 refreshMailTreeNode(mailboxTreeNode); … … 268 268 269 269 private void generateMailTree() { 270 mailTreeRootNode = new TreeNode(null, 0);270 mailTreeRootNode = new MailHomeTreeNode(null, 0); 271 271 272 272 AccountNode[] accounts = mailRootNode.getAccounts(); 273 mailTreeRootNode.children = new TreeNode[accounts.length];273 mailTreeRootNode.children = new MailHomeTreeNode[accounts.length]; 274 274 for(int i=0; i<accounts.length; i++) { 275 TreeNode accountTreeNode = new TreeNode(accounts[i],TreeNode.TYPE_ACCOUNT);275 MailHomeTreeNode accountTreeNode = new MailHomeTreeNode(accounts[i], MailHomeTreeNode.TYPE_ACCOUNT); 276 276 MailboxNode rootMailbox = accounts[i].getRootMailbox(); 277 277 if(rootMailbox != null) { 278 278 MailboxNode[] mailboxNodes = rootMailbox.getMailboxes(); 279 accountTreeNode.children = new TreeNode[mailboxNodes.length];279 accountTreeNode.children = new MailHomeTreeNode[mailboxNodes.length]; 280 280 for(int j=0; j < mailboxNodes.length; j++) { 281 281 accountTreeNode.children[j] = populateMailboxTreeNode(mailboxNodes[j]); … … 288 288 } 289 289 290 private TreeNode populateMailboxTreeNode(MailboxNode mailboxNode) {291 TreeNode mailboxTreeNode = new TreeNode(mailboxNode,TreeNode.TYPE_MAILBOX);290 private MailHomeTreeNode populateMailboxTreeNode(MailboxNode mailboxNode) { 291 MailHomeTreeNode mailboxTreeNode = new MailHomeTreeNode(mailboxNode, MailHomeTreeNode.TYPE_MAILBOX); 292 292 293 293 mailboxNode.addMailboxNodeListener(mailboxNodeListener); … … 295 295 296 296 MailboxNode[] mailboxes = mailboxNode.getMailboxes(); 297 mailboxTreeNode.children = new TreeNode[mailboxes.length];297 mailboxTreeNode.children = new MailHomeTreeNode[mailboxes.length]; 298 298 for(int i=0; i < mailboxes.length; i++) { 299 299 mailboxTreeNode.children[i] = populateMailboxTreeNode(mailboxes[i]); … … 321 321 // from the node-id map, and remove them from the tree. 322 322 Vector mailboxNodeList = new Vector(); 323 TreeNode accountTreeNode = (TreeNode)accountTreeNodeMap.get(accountNode);323 MailHomeTreeNode accountTreeNode = (MailHomeTreeNode)accountTreeNodeMap.get(accountNode); 324 324 getMailboxNodes(mailboxNodeList, accountTreeNode); 325 325 int size = mailboxNodeList.size(); … … 337 337 if(rootMailbox != null) { 338 338 MailboxNode[] mailboxNodes = rootMailbox.getMailboxes(); 339 accountTreeNode.children = new TreeNode[mailboxNodes.length];339 accountTreeNode.children = new MailHomeTreeNode[mailboxNodes.length]; 340 340 for(int i=0; i < mailboxNodes.length; i++) { 341 341 accountTreeNode.children[i] = populateMailboxTreeNode(mailboxNodes[i]); … … 345 345 } 346 346 347 private void selectFolderItemHandler( TreeNode treeNode) {347 private void selectFolderItemHandler(MailHomeTreeNode treeNode) { 348 348 if(treeNode.node instanceof MailboxNode) { 349 349 MailboxNode mailboxNode = (MailboxNode)treeNode.node; … … 352 352 } 353 353 354 private void refreshStatusItemHandler( TreeNode treeNode) {354 private void refreshStatusItemHandler(MailHomeTreeNode treeNode) { 355 355 AccountNode accountNode = getAccountForTreeNode(treeNode); 356 356 … … 360 360 } 361 361 362 private void refreshFoldersItemHandler( TreeNode treeNode) {362 private void refreshFoldersItemHandler(MailHomeTreeNode treeNode) { 363 363 AccountNode accountNode = getAccountForTreeNode(treeNode); 364 364 … … 368 368 } 369 369 370 private void disconnectItemHandler( TreeNode treeNode) {370 private void disconnectItemHandler(MailHomeTreeNode treeNode) { 371 371 AccountNode accountNode = getAccountForTreeNode(treeNode); 372 372 … … 376 376 } 377 377 378 private void compositionItemHandler( TreeNode treeNode) {378 private void compositionItemHandler(MailHomeTreeNode treeNode) { 379 379 AccountNode accountNode = getAccountForTreeNode(treeNode); 380 380 … … 384 384 } 385 385 386 public void populateMailTree( TreeNode rootNode) {386 public void populateMailTree(MailHomeTreeNode rootNode) { 387 387 synchronized(UiApplication.getEventLock()) { 388 388 // Clear any existing nodes … … 392 392 // Freshly populate the tree 393 393 int firstNode = -1; 394 TreeNode[] nodes = rootNode.children;394 MailHomeTreeNode[] nodes = rootNode.children; 395 395 if(nodes != null) { 396 396 for(int i = nodes.length - 1; i >= 0; --i) { … … 407 407 } 408 408 409 private void populateMailTreeChildren(int parent, TreeNode node) {409 private void populateMailTreeChildren(int parent, MailHomeTreeNode node) { 410 410 if(node.children != null) { 411 411 for(int i = node.children.length - 1; i >= 0; --i) { … … 417 417 } 418 418 419 public void refreshMailTreeNode( TreeNode node) {419 public void refreshMailTreeNode(MailHomeTreeNode node) { 420 420 Integer nodeInt = (Integer)nodeIdMap.get(node); 421 421 if(nodeInt != null) { … … 453 453 */ 454 454 public void makeMenu(Menu menu, int instance) { 455 TreeNode treeNode = (TreeNode)treeField.getCookie(treeField.getCurrentNode());455 MailHomeTreeNode treeNode = (MailHomeTreeNode)treeField.getCookie(treeField.getCurrentNode()); 456 456 if(treeNode.node instanceof MailboxNode) { 457 457 menu.add(selectFolderItem); … … 560 560 561 561 // Check whether we can enable composition 562 TreeNode treeNode = (TreeNode)treeField.getCookie(curNode);562 MailHomeTreeNode treeNode = (MailHomeTreeNode)treeField.getCookie(curNode); 563 563 if(treeNode.node instanceof AccountNode) { 564 564 if(((AccountNode)treeNode.node).hasMailSender()) { … … 590 590 Graphics graphics, 591 591 int node, int y, int width, int indent) { 592 TreeNode treeNode = (TreeNode)treeField.getCookie(node);592 MailHomeTreeNode treeNode = (MailHomeTreeNode)treeField.getCookie(node); 593 593 int rowHeight = treeField.getRowHeight(); 594 594 int fontHeight = graphics.getFont().getHeight(); … … 607 607 buf.append(treeNode.node.toString()); 608 608 609 if(treeNode.type == TreeNode.TYPE_ACCOUNT) {609 if(treeNode.type == MailHomeTreeNode.TYPE_ACCOUNT) { 610 610 graphics.setFont(origFont.derive(Font.BOLD)); 611 611 } 612 else if(treeNode.type == TreeNode.TYPE_MAILBOX) {612 else if(treeNode.type == MailHomeTreeNode.TYPE_MAILBOX) { 613 613 MailboxNode mailboxNode = (MailboxNode)treeNode.node; 614 614 … … 632 632 633 633 /** Tree node data class */ 634 static class TreeNode {634 private static class MailHomeTreeNode implements TreeFieldNode { 635 635 public static final int TYPE_ACCOUNT = 1; 636 636 public static final int TYPE_MAILBOX = 2; … … 638 638 public Node node; 639 639 public int type; 640 public TreeNode[] children;641 642 public TreeNode(Node node, int type) {640 public MailHomeTreeNode[] children; 641 642 public MailHomeTreeNode(Node node, int type) { 643 643 this.node = node; 644 644 this.type = type; 645 } 646 647 public boolean isNodeSelectable() { 648 if(node instanceof MailboxNode) { 649 MailboxNode mailboxNode = (MailboxNode)node; 650 return mailboxNode.isSelectable(); 651 } 652 else { 653 return false; 654 } 645 655 } 646 656 } … … 653 663 * @param nodeId Starting node. 654 664 */ 655 private static void getMailboxNodes(Vector result, TreeNode treeNode) {665 private static void getMailboxNodes(Vector result, MailHomeTreeNode treeNode) { 656 666 if(treeNode.node instanceof MailboxNode) { 657 667 result.addElement(treeNode.node); … … 664 674 } 665 675 666 private static AccountNode getAccountForTreeNode( TreeNode treeNode) {676 private static AccountNode getAccountForTreeNode(MailHomeTreeNode treeNode) { 667 677 AccountNode accountNode; 668 678 if(treeNode.node instanceof AccountNode) { … … 697 707 if(treeField.getFirstChild(curNode) != -1) { 698 708 cookie = treeField.getCookie(curNode); 699 if(cookie instanceof TreeNode) {700 String key = getTreeNodeKey(( TreeNode)cookie);709 if(cookie instanceof MailHomeTreeNode) { 710 String key = getTreeNodeKey((MailHomeTreeNode)cookie); 701 711 value = folderMetadata.get(key); 702 712 if(value instanceof Boolean) { … … 728 738 if(treeField.getFirstChild(curNode) != -1) { 729 739 cookie = treeField.getCookie(curNode); 730 if(cookie instanceof TreeNode) {731 String key = getTreeNodeKey(( TreeNode)cookie);740 if(cookie instanceof MailHomeTreeNode) { 741 String key = getTreeNodeKey((MailHomeTreeNode)cookie); 732 742 folderMetadata.put( 733 743 key, … … 743 753 } 744 754 745 private static String getTreeNodeKey( TreeNode treeNode) {755 private static String getTreeNodeKey(MailHomeTreeNode treeNode) { 746 756 Node node = treeNode.node; 747 757 String key; -
trunk/LogicMail/src/org/logicprobe/LogicMail/ui/MailboxScreen.java
r497 r549 54 54 import org.logicprobe.LogicMail.model.MessageNodeEvent; 55 55 import org.logicprobe.LogicMail.model.MessageNodeListener; 56 import org.logicprobe.LogicMail.ui.ScreenProvider.ShortcutItem; 56 57 import org.logicprobe.LogicMail.util.EventObjectRunnable; 57 58 … … 63 64 */ 64 65 public class MailboxScreen extends AbstractScreenProvider { 66 private static final int SHORTCUT_COMPOSE = 0; 67 private static final int SHORTCUT_UP = 3; 68 private static final int SHORTCUT_DOWN = 4; 69 65 70 private MailboxNode mailboxNode; 66 71 private Vector knownMessages; … … 71 76 private Screen screen; 72 77 private MessageActions messageActions; 78 private boolean composeEnabled; 73 79 74 80 private MenuItem selectItem; … … 147 153 } 148 154 155 composeEnabled = mailboxNode.getParentAccount().hasMailSender(); 156 ((StandardScreen)screen).setShortcutEnabled(SHORTCUT_COMPOSE, composeEnabled); 157 149 158 // TODO: Support message list changes between display pushing 150 159 // TODO: Support updating when messages are deleted … … 162 171 } 163 172 173 /* (non-Javadoc) 174 * @see org.logicprobe.LogicMail.ui.AbstractScreenProvider#hasShortcuts() 175 */ 176 public boolean hasShortcuts() { 177 return true; 178 } 179 180 /* (non-Javadoc) 181 * @see org.logicprobe.LogicMail.ui.AbstractScreenProvider#getShortcuts() 182 */ 183 public ShortcutItem[] getShortcuts() { 184 // Note: This method is only called once, during initialization of the screen, 185 // and only on devices that have touchscreen support. The strings for the 186 // shortcuts are contained within the main application library's resources. 187 // However, the icons are contained within the platform support library 188 // containing actual touchscreen API support. 189 return new ShortcutItem[] { 190 new ShortcutItem( 191 SHORTCUT_COMPOSE, 192 resources.getString(LogicMailResource.MENUITEM_COMPOSE_EMAIL), 193 "shortcut-compose.png", "shortcut-compose-d.png"), 194 null, 195 null, 196 new ShortcutItem( 197 SHORTCUT_UP, 198 resources.getString(LogicMailResource.MENUITEM_SCROLL_UP), 199 "shortcut-up.png", "shortcut-up-d.png"), 200 new ShortcutItem( 201 SHORTCUT_DOWN, 202 resources.getString(LogicMailResource.MENUITEM_SCROLL_DOWN), 203 "shortcut-down.png", "shortcut-down-d.png") 204 }; 205 } 206 164 207 /** 165 208 * Initializes the fields. … … 236 279 menu.add(propertiesItem); 237 280 } 238 if( mailboxNode.getParentAccount().hasMailSender()) {281 if(composeEnabled) { 239 282 menu.add(compositionItem); 240 283 } … … 441 484 return retval; 442 485 } 486 487 /* (non-Javadoc) 488 * @see org.logicprobe.LogicMail.ui.AbstractScreenProvider#shortcutAction(org.logicprobe.LogicMail.ui.ScreenProvider.ShortcutItem) 489 */ 490 public void shortcutAction(ShortcutItem item) { 491 switch(item.getId()) { 492 case SHORTCUT_COMPOSE: 493 compositionItem.run(); 494 break; 495 case SHORTCUT_UP: 496 screen.scroll(Manager.UPWARD); 497 break; 498 case SHORTCUT_DOWN: 499 screen.scroll(Manager.DOWNWARD); 500 break; 501 } 502 } 443 503 } -
trunk/LogicMail/src/org/logicprobe/LogicMail/ui/ScreenFactory.java
r501 r549 45 45 */ 46 46 private static String[] factoryClasses = { 47 "org.logicprobe.LogicMail.ui.ScreenFactoryBB47", 47 "org.logicprobe.LogicMail.ui.ScreenFactoryBB50T", 48 "org.logicprobe.LogicMail.ui.ScreenFactoryBB50", 49 "org.logicprobe.LogicMail.ui.ScreenFactoryBB47T", 50 "org.logicprobe.LogicMail.ui.ScreenFactoryBB47", 48 51 "org.logicprobe.LogicMail.ui.ScreenFactoryBB42" 49 52 }; -
trunk/LogicMail_BB47T/src/org/logicprobe/LogicMail/ui/FieldFactoryBB47T.java
r547 r549 35 35 import net.rim.device.api.ui.component.TreeFieldCallback; 36 36 37 public class FieldFactoryBB47 extends FieldFactory {37 public class FieldFactoryBB47T extends FieldFactory { 38 38 private boolean hasTouchscreen; 39 39 private FieldFactory oldFieldFactory; 40 40 41 public FieldFactoryBB47 () {41 public FieldFactoryBB47T() { 42 42 hasTouchscreen = Touchscreen.isSupported(); 43 43 oldFieldFactory = new FieldFactoryBB42(); -
trunk/LogicMail_BB47T/src/org/logicprobe/LogicMail/ui/ScreenFactoryBB47T.java
r547 r549 31 31 package org.logicprobe.LogicMail.ui; 32 32 33 import net.rim.device.api.ui.Touchscreen;34 35 import org.logicprobe.LogicMail.model.AccountNode;36 33 import org.logicprobe.LogicMail.model.MailRootNode; 37 34 import org.logicprobe.LogicMail.model.MailboxNode; 38 import org.logicprobe.LogicMail.model.MessageNode;39 35 40 public class ScreenFactoryBB47 extends ScreenFactory { 41 private boolean hasTouchscreen; 42 private ScreenFactory oldScreenFactory; 43 44 public ScreenFactoryBB47() { 45 hasTouchscreen = Touchscreen.isSupported(); 46 oldScreenFactory = new ScreenFactoryBB42(); 36 public class ScreenFactoryBB47T extends ScreenFactoryBB42 { 37 public ScreenFactoryBB47T() { 47 38 } 48 39 49 40 public StandardScreen getMailHomeScreen(NavigationController navigationController, MailRootNode mailRootNode) { 50 if(hasTouchscreen) { 51 return new StandardTouchScreen(navigationController, new MailHomeScreen(mailRootNode)); 52 } 53 else { 54 return oldScreenFactory.getMailHomeScreen(navigationController, mailRootNode); 55 } 41 return new StandardTouchScreen(navigationController, new MailHomeScreen(mailRootNode)); 56 42 } 57 43 58 44 public StandardScreen getMailboxScreen(NavigationController navigationController, MailboxNode mailboxNode) { 59 return oldScreenFactory.getMailboxScreen(navigationController, mailboxNode); 60 } 61 62 public StandardScreen getMessageScreen(NavigationController navigationController, MessageNode messageNode) { 63 return oldScreenFactory.getMessageScreen(navigationController, messageNode); 64 } 65 66 public StandardScreen getCompositionScreen(NavigationController navigationController, AccountNode accountNode) { 67 return oldScreenFactory.getCompositionScreen(navigationController, accountNode); 68 } 69 70 public StandardScreen getCompositionScreen(NavigationController navigationController, AccountNode accountNode, MessageNode messageNode) { 71 return oldScreenFactory.getCompositionScreen(navigationController, accountNode, messageNode); 72 } 73 74 public StandardScreen getCompositionScreen(NavigationController navigationController, AccountNode accountNode, String address) { 75 return oldScreenFactory.getCompositionScreen(navigationController, accountNode, address); 76 } 77 78 public StandardScreen getCompositionReplyScreen(NavigationController navigationController, AccountNode accountNode, MessageNode messageNode, boolean replyAll) { 79 return oldScreenFactory.getCompositionReplyScreen(navigationController, accountNode, messageNode, replyAll); 80 } 81 82 public StandardScreen getCompositionForwardScreen(NavigationController navigationController, AccountNode accountNode, MessageNode messageNode) { 83 return oldScreenFactory.getCompositionForwardScreen(navigationController, accountNode, messageNode); 45 return new StandardTouchScreen(navigationController, new MailboxScreen(mailboxNode)); 84 46 } 85 47 } -
trunk/LogicMail_BB47T/src/org/logicprobe/LogicMail/ui/TouchScreenTreeField.java
r501 r549 31 31 package org.logicprobe.LogicMail.ui; 32 32 33 import org.logicprobe.LogicMail.model.MailboxNode; 34 import org.logicprobe.LogicMail.ui.MailHomeScreen.TreeNode; 35 36 import net.rim.device.api.ui.Font; 33 import net.rim.device.api.system.Bitmap; 37 34 import net.rim.device.api.ui.Graphics; 38 35 import net.rim.device.api.ui.TouchEvent; … … 48 45 public class TouchScreenTreeField extends TreeField { 49 46 private TreeFieldCallback callback; 47 private static Bitmap chevronIcon = Bitmap.getBitmapResource("chevron_right_black_15x22.png"); 48 private static Bitmap chevronIconHighlighted = Bitmap.getBitmapResource("chevron_right_white_15x22.png"); 49 private static int chevronIconWidth = chevronIcon.getWidth(); 50 private static int chevronIconHeight = chevronIcon.getHeight(); 50 51 51 52 public TouchScreenTreeField(TreeFieldCallback callback, long style) { … … 67 68 if(isNodeSelectable(node)) { 68 69 int rowWidth = width + indent; 69 Font origFont = graphics.getFont(); 70 graphics.setFont(origFont.derive(Font.BOLD)); 71 int xPos = rowWidth - (graphics.getFont().getAdvance('>') * 2); 72 graphics.drawText(">", xPos, y, 0, rowWidth - xPos); 73 graphics.setFont(origFont); 70 int xPos = rowWidth - (chevronIconWidth * 2); 71 72 if(getCurrentNode() == node) { 73 graphics.drawBitmap(xPos, y, chevronIconWidth, chevronIconHeight, chevronIconHighlighted, 0, 0); 74 } 75 else { 76 graphics.drawBitmap(xPos, y, chevronIconWidth, chevronIconHeight, chevronIcon, 0, 0); 77 } 78 74 79 drawWidth -= (rowWidth - xPos); 75 80 } … … 79 84 private boolean isNodeSelectable(int node) { 80 85 Object cookie = this.getCookie(node); 81 if(cookie instanceof TreeNode) { 82 TreeNode treeNode = (TreeNode)cookie; 83 if(treeNode.node instanceof MailboxNode) { 84 MailboxNode mailboxNode = (MailboxNode)treeNode.node; 85 return mailboxNode.isSelectable(); 86 } 87 else { 88 return false; 89 } 86 if(cookie instanceof TreeFieldNode) { 87 return ((TreeFieldNode)cookie).isNodeSelectable(); 90 88 } 91 89 else {
Note: See TracChangeset
for help on using the changeset viewer.
