📄 uicontroller.java
字号:
} else {
if (message.getParent().getName().equals(Store.INBOX)) {
//Log.debug("UIController: message from inbox, updating inbox");
updateInboxMessageList(message);
} else if (message.getParent().getName().equals(Store.OUTBOX)) {
//Log.debug("UIController: message from outbox, updating outbox");
updateOutboxMessageList(message);
} else if (message.getParent().getName().equals(Store.SENT)) {
//Log.debug("UIController: message from sent, updating sent");
updateSentMessageList(message);
} else if (message.getParent().getName().equals(Store.DRAFTS)) {
//Log.debug("UIController: message from draft, updating draft");
updateDraftMessageList(message);
} else {
Log.error("Unkown folder");
}
}
}
public static void updateMessageList(Object o, int theFolder) {
MessageList messageList;
switch (theFolder) {
case MessageManager.INBOX:
messageList = getInboxMessageList();
break;
case MessageManager.OUTBOX:
messageList = getOutboxMessageList();
break;
case MessageManager.DRAFTS:
messageList = getDraftMessageList();
break;
case MessageManager.SENT:
messageList = getSentMessageList();
break;
default:
messageList = getInboxMessageList();
}
if (o == null) {
messageList.setTitle(messageList.getDefaultTitle());
messageList.setMessageList(getSortedMessages(theFolder));
} else if (o instanceof Message) {
messageList.setMessageList(getSortedMessages(theFolder));
} else if (o instanceof String) {
if (o.toString().length() == 0) {
messageList.setTitle(messageList.getDefaultTitle());
} else {
messageList.setTitle(o.toString());
}
}
}
public static void updateDraftMessageList(Object o) {
updateMessageList(o, MessageManager.DRAFTS);
}
public static void updateSentMessageList(Object o) {
updateMessageList(o, MessageManager.SENT);
}
public static void updateInboxMessageList(Object o) {
updateMessageList(o, MessageManager.INBOX);
}
public static void updateOutboxMessageList(Object o) {
updateMessageList(o, MessageManager.OUTBOX);
}
// private static void debug(String s) {
// Log.debug("UIController:"+ s);
// }
// private static void error(String s) {
// Log.error("UIController:"+ s);
// }
/**
* open a url.
*
* @param url the url to be opened in the default browser (device dependent)
*/
public static void openUrl(String url) {
Log.info("Opening url: [" + url + "]");
try {
// In Nokia S60 device the platformRequest
// doesn't open link without "http://"
if (url.startsWith("www")) {
url = "http://" + url;
}
doPlatformRequest(url);
} catch (ConnectionNotFoundException ex) {
ex.printStackTrace();
Log.error("openUrl: " + ex.toString());
showErrorAlert("Error opening URL.");
} catch (Exception e) {
e.printStackTrace();
Log.error("openUrl: " + e.toString());
}
}
public static void dialNumber(String number) {
try {
doPlatformRequest("tel:" + number);
} catch (Exception ex) {
ex.printStackTrace();
}
}
/**
* save tha given contact
*
* @param contact the contact to be saved
* @param isNew true if contact is new, false if editing existent contact
* @trows AlreadyExistentContactException if contact already exists
*/
public static void saveContact(Contact contact, boolean isNew)
throws ContactManagerException, AlreadyExistentContactException {
if (isNew) {
contactManager.addContact(contact, true);
} else {
contactManager.updateContact(contact);
}
}
public synchronized static Vector getSortedMessages(int folderIdx) {
Folder folder = messageManager.getFolder(folderIdx);
return getSortedMessages(folder);
}
/**
* getSortedMessages is synchronized to avoid potential issues
* on concurrent access to the INbox elements in the storage
* @return a sorted messageinfo with items from the given folderinfo
*/
public synchronized static Vector getSortedMessages(Folder folder) {
Log.stats("starting get sorted messages ");
Vector list = new Vector();
try {
//String folderName = folder.getName();
Message messages[] = messageManager.getMessagesInFolder(folder);
for (int i = 0; i < messages.length; ++i) {
list.addElement(messages[i]);
}
if (list.size() > 0) {
list = bubbleSortPerDate(list);
}
Log.stats("end get sorted messages ");
return list;
} catch (Exception ex) {
Log.error("Error occurred sorting message list: " + ex.getMessage());
Log.stats("Exiting getsortedMessages with exception");
ex.printStackTrace();
return list;
}
}
/**
* A sort algorithm to order the messages in the view Inbox as per sent date
*/
public static Vector bubbleSortPerDate(Vector list) {
int n = list.size();
for (int pass = 1; pass < n; pass++) { // count how many times
// This next loop becomes shorter and shorter
for (int i = 0; i < n - pass; i++) {
Message msg1 = (Message) list.elementAt(i);
Message msg2 = (Message) list.elementAt(i + 1);
long received1 = msg1.getReceivedTime();
long received2 = msg2.getReceivedTime();
if (received1 < received2) {
// exchange elements
Object temp = list.elementAt(i);
list.setElementAt(list.elementAt(i + 1), i);
list.setElementAt(temp, i + 1);
}
}
}
return list;
}
/**
* reset the account deleting the store and startng a new
* refresh_from_server sync
*/
public static void resetAccount() {
try {
// For RAZR bug: wait before showing a new displayable
//UIController.sleep(10);
//UIController.showAlert(Localization.getMessages().RESETTING_ACCOUNT_MSG);
//delete message store
messageManager.initStore(true);
//delete contact list and related PIM Item Queue
if (contactManager == null) {
contactManager =
ContactManagerFactory.getContactManager(ContactManager.RMS_TYPE);
}
removeBBSavedConfigIfNeeded();
// reset the inbox view
resetInboxMessageList();
showInboxScreen();
// empty the contact list (to free memory)
contactManager.resetContactList();
if (contactList != null) {
contactList.resetContactList(new Message());
}
//initialize new account's messages and contacts
sync(SyncML.ALERT_CODE_REFRESH_FROM_SERVER, true);
getInboxMessageList().setMinimumDisplayedMessageCount(
InboxMessageList.COUNT_NONE);
// Restart CTP with the new profile info
midlet.restartCTP();
} catch (RecordStoreException rse) {
Log.error("resetAccount: " + rse.toString());
// TODO: ALERT ??
showInboxScreen();
} catch (MailException me) {
Log.error("resetAccount: " + me.toString());
// TODO: ALERT ??
showInboxScreen();
}
}
/**
* show the inbox and requests a refresh from server sync
*/
public static void resetInboxFromServer()
throws RecordStoreException, MailException {
showInboxScreen();
Log.debug("starting refresh from server...");
sync(SyncML.ALERT_CODE_REFRESH_FROM_SERVER, false);
}
/**
* Information on SyncClient status:
* @return boolean false if some thread is sync'ing
*/
public static boolean isSyncInProgress() {
return SyncClient.getSyncClient().isBusy();
}
/**
* reinit the contacts from server
*/
public static void resetContacts() {
if (contactList != null) {
contactList.resetContactList(new Message());
contactList.setContactCount(0);
}
removeBBSavedConfigIfNeeded();
// TODO: attach listener
sync(SyncClient.CONTACTS, SyncML.ALERT_CODE_REFRESH_FROM_SERVER);
}
public static void updateLogLevel(int logLevel) {
Log.setLogLevel(logLevel);
mailClientConfig.setLogLevel(logLevel);
saveNewConfig(mailClientConfig);
}
public static InboxMessageList getInboxMessageList() {
if (inboxMessageList == null) {
Vector list = getSortedMessages(MessageManager.INBOX);
inboxMessageList = new InboxMessageList(list);
}
return inboxMessageList;
}
private static OutboxMessageList getOutboxMessageList() {
if (outboxMessageList == null) {
outboxMessageList = new OutboxMessageList(
getSortedMessages(messageManager.OUTBOX));
}
return outboxMessageList;
}
private static SentMessageList getSentMessageList() {
if (sentMessageList == null) {
sentMessageList = new SentMessageList(
getSortedMessages(MessageManager.SENT));
}
return sentMessageList;
}
private static DraftMessageList getDraftMessageList() {
if (draftMessageList == null) {
draftMessageList = new DraftMessageList(
getSortedMessages(MessageManager.DRAFTS));
}
return draftMessageList;
}
public static void changeFollowUpFlag(Message message) {
changeFlag(message, MessageFlags.FLAGGED);
}
public static void changeReadFlag(Message message) {
Log.debug("changing read flag");
changeFlag(message, MessageFlags.OPENED);
}
/**
* change the flag on the fly and start a thread to save the message
* on rms.
*/
private static void changeFlag(Message message, int flag) {
boolean isFlagged = message.getFlags().isSet(flag);
//message.getFlags().setFlag(flag, isFlagged);
message.getFlags().setFlag(flag, !isFlagged);
threadedWriteMessageToFolder(message, true);
Log.debug("[UIController] changeFlag of message: " + message + "--" + message.getKey() +
" flag " + flag + " was " + isFlagged + " and now is " +
message.getFlags().isSet(flag));
if (UiUtils.isIncoming(message)) {
Log.debug("[UIController] message is in inbox");
try {
getInboxMessageList().addMessage(message);
} catch (MailException ex) {
ex.printStackTrace();
Log.error("UIController changeFlag() MailException changing " +
"flag for message " + message.getSubject());
}
} else {
if (message.getParent() == null) {
Log.debug("[UIController] message has no parent folder");
} else {
Log.debug("[UIController] message is in folder " +
message.getParent().getFullName());
}
updateMessageList(message);
}
}
/**
* save a message to its parent folder and call the messageManager to add
* the message to the queue
*/
private static void threadedWriteMessageToFolder(final Message message,
boolean update) {
UIController.threadPool.startThread(getMessageWriter(message, update));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -