📄 menu.java
字号:
if (refreshAgain != -1 && refreshTimer == null) {
refreshTimer = new Timer();
refreshTimer.schedule(new RefreshTask(refreshAgain), 0, 100);
} //refresh is not needed and yet refreshTimer is still running
else if ((refreshAgain == -1 || mujMail.getDisplay().getCurrent() != this) &&
refreshTimer != null) { //NOTE: do not use Displayable.isShown method as it does not
// work for Nokias.
cancelRefreshTask();
}
} catch (Throwable e ) {
System.err.println("ERROR Menu - Unexpected exception");
e.printStackTrace();
}
}
protected void hideNotify() {
cancelTickerTask();
cancelRefreshTask();
}
public void commandAction(Command c, Displayable d) {
if (c == exit) {
TasksManager.conditionallyExit();
// if (TasksManager.isSomeTaskRunning()) {
// this.mujMail.alert.setAlert(null, this, Lang.get(Lang.ALRT_SYS_SHUTDOWN_CONFIRM), MyAlert.EXIT_BUSY_CONFIRM, AlertType.CONFIRMATION);
// } else {
// this.mujMail.destroyApp(false);
// }
} else {
switch (getSelectedTab()) {
case Menu.ACTION:
switch (getSelectedIndex()) {
case MENU_ACT_INBOX:
mujMail.getInBox().showBox();
break;
case MENU_ACT_RETRIEVE_MAILS:
mujMail.getDisplay().setCurrent( mujMail.getInBox());
mujMail.getInBox().retrieve();
break;
case MENU_ACT_WRITE_MAIL:
mujMail.sendMail.writeMail(this);
break;
case MENU_ACT_SENDALL:
mujMail.getDisplay().setCurrent(mujMail.outBox);
mujMail.outBox.sendAll();
break;
//#ifdef MUJMAIL_SEARCH
case MENU_ACT_SEARCH_MAILS:
SearchWindows searchWindows = new SearchWindows(mujMail);
searchWindows.displaySearchWindow();
break;
//#endif
case MENU_ACT_PUSH:
mujMail.getInBox().poll();
//Testing IMAP Push
mujMail.getInBox().push();
refresh(Menu.ACTION, true);
break;
case MENU_ACT_DISCONNECT:
mujMail.discServers(true);
break;
case MENU_ACT_SERVERS_INBOX_SYNC:
//No task (new thread) is needed here since
//serversSync() invokes GET_NEW_MAILS task
mujMail.getInBox().serversSync(null);
refresh(Menu.ACTION, true);
break;
}
break;
case Menu.FOLDERS:
//#ifdef MUJMAIL_USR_FOLDERS
if (c == fldAdd) {
mujMail.getUserMailBoxes().createPersistentBox();
} else if (c == fldDel) {
mujMail.getUserMailBoxes().removeUserMailBox(getSelectedIndex() - MENU_FOLDERS_USERBOX_FIRST);
repaint();
} else if (c == fldEdit) {
mujMail.getUserMailBoxes().editUserMailBoxSettings(getSelectedIndex() - MENU_FOLDERS_USERBOX_FIRST);
//repaint();
} else { // c == select or enter (null)
//#endif
switch (getSelectedIndex()) {
// receive mails
case MENU_FOLDERS_INBOX:
mujMail.getInBox().showBox();
break;
case MENU_FOLDERS_OUTBOX:
mujMail.getOutBox().showBox();
break;
case MENU_FOLDERS_SENTBOX:
mujMail.getSentBox().showBox();
break;
case MENU_FOLDERS_DRAFT:
mujMail.getDraft().showBox();
break;
case MENU_FOLDERS_TRASH:
mujMail.getTrash().showBox();
break;
//#ifdef MUJMAIL_USR_FOLDERS
default:
//case 5: // No action -- mailbox delimiter
int pos = getSelectedIndex() - MENU_FOLDERS_USERBOX_FIRST;
Vector/*<inbox>*/ usrMailBoxes = mujMail.getUserMailBoxes().getBoxList();
if ( pos >= 0 && pos < usrMailBoxes.size()) {
( (InBox)usrMailBoxes.elementAt(pos)).showBox();
}
//#endif
}
//#ifdef MUJMAIL_USR_FOLDERS
}
//#endif
break;
case Menu.SETTINGS:
switch (getSelectedIndex()) {
case MENU_SETTINGS_APPEARANCE:
mujMail.getSettings().showAppearanceSettingsForm();
break;
case MENU_SETTINGS_MUJMAIL_SERVER:
mujMail.getSettings().showMujMailServerSettingsForm();
break;
case MENU_SETTINGS_OTHER:
mujMail.getSettings().showOtherSettingsForm();
break;
case MENU_SETTINGS_POLLING:
mujMail.getSettings().showPollingSettingsForm();
break;
case MENU_SETTINGS_RETRIEVING:
mujMail.getSettings().showRetrievingSettingsForm();
break;
case MENU_SETTINGS_SMTP:
mujMail.getSettings().showSMTPSettingsForm();
break;
case MENU_SETTINGS_STORING_MAILS:
mujMail.getSettings().showStoringMailsSettingsForm();
break;
}
break;
case Menu.ACCOUNTS:
if (c == cmdNew) {
mujMail.getAccountSettings().showAccount(null);
} else if (c == change) {
mujMail.getAccountSettings().showAccount(getSelectedAccount());
} else if (c == delete) {
mujMail.getAccountSettings().deleteAccount(getSelectedAccount(), false);
} else if (c == setPrimary) {
String accountID = getSelectedAccount();
if (accountID != null && ((MailAccount) mujMail.getMailAccounts().get(accountID)).isActive()) {
Settings.primaryEmail = accountID;
mujMail.getSettings().saveSettings(true);
} else {
mujMail.alert.setAlert(null, this, Lang.get(Lang.ALRT_AS_NONEXIST), MyAlert.DEFAULT, AlertType.INFO);
}
} else if (c == retrieve) {
mujMail.getDisplay().setCurrent(mujMail.getInBox());
mujMail.getInBox().retrieveOne(getSelectedAccount());
} else if (c == clear) {
mujMail.getAccountSettings().deleteAll(false);
} else {
mujMail.getAccountSettings().showAccount(getSelectedAccount());
}
break;
case Menu.UTILS:
switch (getSelectedIndex()) {
case MENU_UTILS_ADRESSBOOK:
mujMail.getDisplay().setCurrent(mujMail.getAddressBook());
break;
//#ifdef MUJMAIL_SYNC
case MENU_UTILS_BACKUP_SETTINGS:
mujMail.getSync().setAction(Sync.BACKUP);
//#ifdef MUJMAIL_FS
mujMail.getSync().setSmDlg(mujMail.getSync().new SyncModeDialog(Lang.get(Lang.AC_BACKUP_SETTINGS)));
mujMail.getDisplay().setCurrent(mujMail.getSync().getSmDlg());
//#else
//# mujMail.getSync().commandAction(null, null);
//#endif
break;
case MENU_UTILS_RESTORE_SETTINGS:
mujMail.getSync().setAction(Sync.RESTORE);
//#ifdef MUJMAIL_FS
mujMail.getSync().setSmDlg(mujMail.getSync().new SyncModeDialog(Lang.get(Lang.AC_RESTORE_SETTINGS)));
mujMail.getDisplay().setCurrent( mujMail.getSync().getSmDlg());
//#else
//# mujMail.getSync().commandAction(null, null);
//#endif
break;
//#endif
case MENU_UTILS_CLEAR_DB:
mujMail.clearDBSelect.refresh();
mujMail.getDisplay().setCurrent( mujMail.clearDBSelect);
break;
case MENU_UTILS_ABOUT:
mujMail.getDisplay().setCurrent(mujMail.about);
break;
//#ifdef MUJMAIL_DEBUG_CONSOLE
case MENU_UTILS_DEB_MENU:
//BackgroundTaskTest threadTest = new BackgroundTaskTest();
//threadTest.testSleepingThread();
//threadTest.testStoppableThread();
DebugConsoleUI consoleUI = new DebugConsoleUI();
consoleUI.showScreen();
//mujMail.getDisplay().setCurrent(debug);
break;
//#endif
case MENU_UTILS_TASK_MANAGER:
TasksManagerUI tasksManager = new TasksManagerUI();
tasksManager.showScreen();
break;
case MENU_UTILS_RUN_SAMPLE_TASK:
BackgroundTask sampleTask = new SampleTestTask();
sampleTask.start();
break;
}
break;
} // switch end
} // else in c == exit condition
}
/**
* This method draws both menu tabs and lists items on Canvas . If a number of all tabs is bigger than
* it is able to display, then it draws a vertical scrollbar at the bottom of the display and two black
* arrows at the top part. Equally, if there is a need for drawing a horizontal scrollbar it is done at
* the left side of the display.
* @param g - a graphical object.
*/
public synchronized void paint(Graphics g) {
int menuPadding = 1;
int width = getWidth(), height = getHeight();
int arrowWidth;
int tabLeft;
int tabHeight = (width < 200) ? 20 : 30;
int tabWidth = tabHeight + 2;
int imgPadding = 4;
clientHeight = height - tabHeight - 2 * menuPadding;
int clientWidth = width - 2 * menuPadding;
fontHeight = g.getFont().getHeight();
// clear display
g.setColor(BACKGROUND_COLOR);
g.fillRect(0, 0, width, height);
// draw arrows
if ((maxTabs = (byte) ((width - 2 * menuPadding - 1) / (tabWidth + 1))) < MAX_TABS) {
arrowWidth = 5;
drawTriangle((short) menuPadding, (short) (menuPadding + (tabHeight - 2 * arrowWidth) / 2), (short) arrowWidth, true, g);
drawTriangle((short) (width - menuPadding - arrowWidth), (short) (menuPadding + (tabHeight - 2 * arrowWidth) / 2), (short) arrowWidth, false, g);
tabLeft = arrowWidth + menuPadding + 2;
maxTabs = (byte) ((width - 2 * menuPadding - 2 * tabLeft) / (tabWidth + 1));
} else {
arrowWidth = 0;
tabLeft = menuPadding;
maxTabs = MAX_TABS;
}
// draw tabs
g.setColor(OUTLINE_COLOR);
g.drawLine(0, menuPadding + tabHeight + 1, width, menuPadding + tabHeight + 1);
for (int i = 0; i < maxTabs; i++) {
byte listID = (byte) ((firstTab + i) % MAX_TABS);
// draw inner part of the tab
if (i == selectedTab) {
g.setColor(FILL_COLOR);
g.fillRoundRect(tabLeft + 1, menuPadding + 1, tabWidth - 1, tabHeight + 2, imgPadding, imgPadding);
g.setColor(OUTLINE_COLOR);
} else {
g.setColor(GREY_FILL_COLOR);
g.fillRoundRect(tabLeft + 1, menuPadding + 1, tabWidth - 1, tabHeight + 2, imgPadding, imgPadding);
g.setColor(OUTLINE_COLOR);
g.drawLine(tabLeft, menuPadding + tabHeight + 1, tabLeft + tabWidth, menuPadding + tabHeight + 1);
g.setColor(GREY_OUTLINE_COLOR);
}
// draw outlines of the tab
g.drawLine(tabLeft, menuPadding + tabHeight, tabLeft, menuPadding + imgPadding);
g.drawArc(tabLeft, menuPadding, 2 * imgPadding, 2 * imgPadding, 180, -90);
g.drawLine(tabLeft + imgPadding, menuPadding, tabLeft + tabWidth - imgPadding, menuPadding);
g.drawArc(tabLeft + tabWidth - 2 * imgPadding, menuPadding, 2 * imgPadding, 2 * imgPadding, 0, 90);
g.drawLine(tabLeft + tabWidth, menuPadding + imgPadding, tabLeft + tabWidth, menuPadding + tabHeight);
// draw content of the tab
if (tabs[listID].img != null) {
g.drawImage(tabs[listID].img, tabLeft + (tabWidth - tabs[listID].img.getWidth()) / 2, menuPadding + (tabHeight - tabs[listID].img.getHeight()) / 2, Graphics.TOP | Graphics.LEFT);
}
if (starPressed) {
g.setColor(FONT_COLOR);
g.setFont(getFirstLineFont());
g.drawString(String.valueOf(listID + 1), tabLeft + ((tabWidth - g.getFont().charWidth((char) (listID + '0' + 1))) / 2), menuPadding + tabHeight, Graphics.BOTTOM | Graphics.LEFT);
}
// move position to another tab
tabLeft += tabWidth + 1;
} /* for */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -