⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uicontroller.java

📁 moblie syncml mail javame
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
        } 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 + -