/tags/45_137release/src/net/code/btalk/ui/BuddyScreen.java

http://btalk.googlecode.com/
Java | 154 lines | 135 code | 16 blank | 3 comment | 17 complexity | 70e8c079ce9260b2df2bd09c54e95768 MD5 | raw file

✨ Summary
  1. package net.code.btalk.ui;
  2. import net.code.btalk.BTalk;
  3. import net.code.btalk.Buddy;
  4. import net.code.btalk.SavedData;
  5. import net.rim.device.api.ui.Field;
  6. import net.rim.device.api.ui.Manager;
  7. import net.rim.device.api.ui.MenuItem;
  8. import net.rim.device.api.ui.component.Dialog;
  9. import net.rim.device.api.ui.component.DialogClosedListener;
  10. import net.rim.device.api.ui.component.EditField;
  11. import net.rim.device.api.ui.component.LabelField;
  12. import net.rim.device.api.ui.container.MainScreen;
  13. import net.rim.device.api.ui.container.PopupScreen;
  14. public class BuddyScreen extends MainScreen {
  15. public static BTalk btalk;
  16. public IconLabelField statusBanner;
  17. public BuddyListField buddyList;
  18. public BuddyScreen(BuddyListField l) {
  19. statusBanner = new IconLabelField(BuddyListField.onlineIcon, BTalkLocale.locale[BTalkLocale.ITEM_STATUS_AVA][SavedData.lang]);
  20. this.setTitle(statusBanner);
  21. this.buddyList = l;
  22. this.add(l);
  23. this.addMenuItem(new MenuItem(BTalkLocale.locale[BTalkLocale.ITEM_CHAT][SavedData.lang], 0, 0) {
  24. public void run() {
  25. int idx = buddyList.getSelectedIndex();
  26. if (idx >= 0) {
  27. btalk.currentBuddy = (Buddy) buddyList.buddyVector.elementAt(idx);
  28. btalk.openBuddy(btalk.currentBuddy);
  29. }
  30. }
  31. });
  32. this.addMenuItem(new MenuItem(BTalkLocale.locale[BTalkLocale.ITEM_RETRY][SavedData.lang], 1, 0) {
  33. public void run() {
  34. if (btalk.state == BTalk.STATE_FAILED) {
  35. btalk.state = BTalk.STATE_RETRYING;
  36. btalk.setMyStatus(BTalk.STATE_RETRYING, false, null);
  37. btalk.retryCount = 0;
  38. btalk.retryBtalk();
  39. }
  40. }
  41. });
  42. this.addMenuItem(new MenuItem(BTalkLocale.locale[BTalkLocale.ITEM_ADD_BUDDY][SavedData.lang], 0x00020000, 0) {
  43. public void run() {
  44. // TODO finish add new buddy
  45. final EditField jidField;
  46. Dialog addBuddyDialog = new Dialog(Dialog.D_OK_CANCEL, BTalkLocale.locale[BTalkLocale.ITEM_ADD_LAB][SavedData.lang], 0, null, Manager.USE_ALL_WIDTH);
  47. jidField = new EditField(EditField.NO_COMPLEX_INPUT | EditField.NO_NEWLINE);
  48. addBuddyDialog.add(jidField);
  49. addBuddyDialog.setDialogClosedListener(new DialogClosedListener() {
  50. public void dialogClosed(Dialog dialog, int choice) {
  51. switch (choice) {
  52. case 0:
  53. final String jid = jidField.getText();
  54. if (jid.indexOf('@') == -1) {
  55. Dialog.alert("Not a legal Email address!");
  56. } else {
  57. (new Thread() {
  58. public void run() {
  59. btalk.subscribe(jid);
  60. }
  61. }).start();
  62. }
  63. return;
  64. case -1:
  65. return;
  66. default:
  67. return;
  68. }
  69. }
  70. });
  71. addBuddyDialog.show();
  72. }
  73. });
  74. this.addMenuItem(new MenuItem(BTalkLocale.locale[BTalkLocale.ITEM_RM_BUDDY][SavedData.lang], 0x00020001, 0) {
  75. public void run() {
  76. //TODO finish delete buddy
  77. if (buddyList.buddyVector.size() <= 0)
  78. return;
  79. final Buddy b = buddyList.getBuddyAt(buddyList.getSelectedIndex());
  80. String str;
  81. if (!b.name.equals(b.jid))
  82. str = b.name+"("+b.jid+")";
  83. else
  84. str = b.jid;
  85. int rst = Dialog.ask(BTalkLocale.locale[BTalkLocale.ITEM_RM_LAB][SavedData.lang]+" \""+str+"\"?", new String[] {"Yes", "No"}, new int[] {1, 2}, 2);
  86. switch (rst) {
  87. case 1:
  88. (new Thread() {
  89. public void run() {
  90. btalk.unsubscribe(b.jid);
  91. }
  92. }).start();
  93. buddyList.deleteBuddy(b.jid);
  94. return;
  95. case 2:
  96. return;
  97. }
  98. }
  99. });
  100. this.addMenuItem(new MenuItem(BTalkLocale.locale[BTalkLocale.ITEM_OPTIONS][SavedData.lang], 0x00030000, 0) {
  101. public void run() {
  102. btalk.pushScreen(new OptionScreen());
  103. }
  104. });
  105. // add exit menuitem
  106. this.addMenuItem(new MenuItem(BTalkLocale.locale[BTalkLocale.ITEM_EXIT][SavedData.lang], 0x00030002, 0) {
  107. public void run() {
  108. if (btalk.state == BTalk.STATE_ONLINE) {
  109. btalk.logoffJxa();
  110. }
  111. btalk.exitBtalk();
  112. }
  113. });
  114. this.addMenuItem(new MenuItem(BTalkLocale.locale[BTalkLocale.ITEM_ABOUT][SavedData.lang], 0x00030001, 0) {
  115. public void run() {
  116. Dialog.inform("BTalk "+BTalk.Version+" (For 4.5)\n" +
  117. "By zhtlancer\n<zhtlancer@gmail.com>\n" +
  118. BTalkLocale.locale[BTalkLocale.ITEM_ABOUT_TEXT][SavedData.lang]);
  119. }
  120. });
  121. }
  122. public boolean onClose() {
  123. if (btalk.state == BTalk.STATE_ONLINE ||
  124. btalk.state == BTalk.STATE_RETRYING ||
  125. btalk.state == BTalk.STATE_WAITING) {
  126. btalk.requestBackground();
  127. } else {
  128. btalk.exitBtalk();
  129. }
  130. return true;
  131. }
  132. public boolean pageDown(int amount, int status, int time) {
  133. return this.trackwheelRoll(amount, status, time);
  134. }
  135. public boolean pageUp(int amount, int status, int time) {
  136. return this.trackwheelRoll(amount, status, time);
  137. }
  138. }