Search in sources :

Example 1 with BaseAccount

use of com.fsck.k9.BaseAccount in project k-9 by k9mail.

the class UnreadWidgetProvider method updateWidget.

public static void updateWidget(Context context, AppWidgetManager appWidgetManager, int appWidgetId, String accountUuid) {
    RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.unread_widget_layout);
    int unreadCount = 0;
    String accountName = context.getString(R.string.app_name);
    Intent clickIntent = null;
    try {
        BaseAccount account = null;
        AccountStats stats = null;
        SearchAccount searchAccount = null;
        if (SearchAccount.UNIFIED_INBOX.equals(accountUuid)) {
            searchAccount = SearchAccount.createUnifiedInboxAccount(context);
        } else if (SearchAccount.ALL_MESSAGES.equals(accountUuid)) {
            searchAccount = SearchAccount.createAllMessagesAccount(context);
        }
        if (searchAccount != null) {
            account = searchAccount;
            MessagingController controller = MessagingController.getInstance(context);
            stats = controller.getSearchAccountStatsSynchronous(searchAccount, null);
            clickIntent = MessageList.intentDisplaySearch(context, searchAccount.getRelatedSearch(), false, true, true);
        } else {
            Account realAccount = Preferences.getPreferences(context).getAccount(accountUuid);
            if (realAccount != null) {
                account = realAccount;
                stats = realAccount.getStats(context);
                if (K9.FOLDER_NONE.equals(realAccount.getAutoExpandFolderName())) {
                    clickIntent = FolderList.actionHandleAccountIntent(context, realAccount, false);
                } else {
                    LocalSearch search = new LocalSearch(realAccount.getAutoExpandFolderName());
                    search.addAllowedFolder(realAccount.getAutoExpandFolderName());
                    search.addAccountUuid(account.getUuid());
                    clickIntent = MessageList.intentDisplaySearch(context, search, false, true, true);
                }
                clickIntent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
            }
        }
        if (account != null) {
            accountName = account.getDescription();
        }
        if (stats != null) {
            unreadCount = stats.unreadMessageCount;
        }
    } catch (Exception e) {
        Timber.e(e, "Error getting widget configuration");
    }
    if (unreadCount <= 0) {
        // Hide TextView for unread count if there are no unread messages.
        remoteViews.setViewVisibility(R.id.unread_count, View.GONE);
    } else {
        remoteViews.setViewVisibility(R.id.unread_count, View.VISIBLE);
        String displayCount = (unreadCount <= MAX_COUNT) ? String.valueOf(unreadCount) : String.valueOf(MAX_COUNT) + "+";
        remoteViews.setTextViewText(R.id.unread_count, displayCount);
    }
    remoteViews.setTextViewText(R.id.account_name, accountName);
    if (clickIntent == null) {
        // If the widget configuration couldn't be loaded we open the configuration
        // activity when the user clicks the widget.
        clickIntent = new Intent(context, UnreadWidgetConfiguration.class);
        clickIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
    }
    clickIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    PendingIntent pendingIntent = PendingIntent.getActivity(context, appWidgetId, clickIntent, 0);
    remoteViews.setOnClickPendingIntent(R.id.unread_widget_layout, pendingIntent);
    appWidgetManager.updateAppWidget(appWidgetId, remoteViews);
}
Also used : SearchAccount(com.fsck.k9.search.SearchAccount) Account(com.fsck.k9.Account) BaseAccount(com.fsck.k9.BaseAccount) UnreadWidgetConfiguration(com.fsck.k9.activity.UnreadWidgetConfiguration) MessagingController(com.fsck.k9.controller.MessagingController) Intent(android.content.Intent) PendingIntent(android.app.PendingIntent) SearchAccount(com.fsck.k9.search.SearchAccount) RemoteViews(android.widget.RemoteViews) LocalSearch(com.fsck.k9.search.LocalSearch) BaseAccount(com.fsck.k9.BaseAccount) PendingIntent(android.app.PendingIntent) AccountStats(com.fsck.k9.AccountStats)

Example 2 with BaseAccount

use of com.fsck.k9.BaseAccount in project k-9 by k9mail.

the class AccountList method onItemClick.

@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    BaseAccount account = (BaseAccount) parent.getItemAtPosition(position);
    onAccountSelected(account);
}
Also used : BaseAccount(com.fsck.k9.BaseAccount)

Example 3 with BaseAccount

use of com.fsck.k9.BaseAccount in project k-9 by k9mail.

the class Accounts method createUnreadSearch.

public static LocalSearch createUnreadSearch(Context context, BaseAccount account) {
    String searchTitle = context.getString(R.string.search_title, account.getDescription(), context.getString(R.string.unread_modifier));
    LocalSearch search;
    if (account instanceof SearchAccount) {
        search = ((SearchAccount) account).getRelatedSearch().clone();
        search.setName(searchTitle);
    } else {
        search = new LocalSearch(searchTitle);
        search.addAccountUuid(account.getUuid());
        Account realAccount = (Account) account;
        realAccount.excludeSpecialFolders(search);
        realAccount.limitToDisplayableFolders(search);
    }
    search.and(SearchField.READ, "1", Attribute.NOT_EQUALS);
    return search;
}
Also used : SearchAccount(com.fsck.k9.search.SearchAccount) Account(com.fsck.k9.Account) BaseAccount(com.fsck.k9.BaseAccount) LocalSearch(com.fsck.k9.search.LocalSearch) SearchAccount(com.fsck.k9.search.SearchAccount)

Example 4 with BaseAccount

use of com.fsck.k9.BaseAccount in project k-9 by k9mail.

the class Accounts method onItemClick.

public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    BaseAccount account = (BaseAccount) parent.getItemAtPosition(position);
    onOpenAccount(account);
}
Also used : BaseAccount(com.fsck.k9.BaseAccount)

Example 5 with BaseAccount

use of com.fsck.k9.BaseAccount in project k-9 by k9mail.

the class AccountList method populateListView.

/**
     * Create a new {@link AccountsAdapter} instance and assign it to the {@link ListView}.
     *
     * @param realAccounts
     *         An array of accounts to display.
     */
public void populateListView(List<Account> realAccounts) {
    List<BaseAccount> accounts = new ArrayList<BaseAccount>();
    if (displaySpecialAccounts() && !K9.isHideSpecialAccounts()) {
        BaseAccount unifiedInboxAccount = SearchAccount.createUnifiedInboxAccount(this);
        BaseAccount allMessagesAccount = SearchAccount.createAllMessagesAccount(this);
        accounts.add(unifiedInboxAccount);
        accounts.add(allMessagesAccount);
    }
    accounts.addAll(realAccounts);
    AccountsAdapter adapter = new AccountsAdapter(accounts);
    ListView listView = getListView();
    listView.setAdapter(adapter);
    listView.invalidate();
}
Also used : ListView(android.widget.ListView) BaseAccount(com.fsck.k9.BaseAccount) ArrayList(java.util.ArrayList)

Aggregations

BaseAccount (com.fsck.k9.BaseAccount)9 Account (com.fsck.k9.Account)6 SearchAccount (com.fsck.k9.search.SearchAccount)6 LocalSearch (com.fsck.k9.search.LocalSearch)3 Intent (android.content.Intent)2 MessagingController (com.fsck.k9.controller.MessagingController)2 PendingIntent (android.app.PendingIntent)1 Parcelable (android.os.Parcelable)1 MenuItem (android.view.MenuItem)1 AdapterContextMenuInfo (android.widget.AdapterView.AdapterContextMenuInfo)1 ListView (android.widget.ListView)1 RemoteViews (android.widget.RemoteViews)1 Toast (android.widget.Toast)1 AccountStats (com.fsck.k9.AccountStats)1 UnreadWidgetConfiguration (com.fsck.k9.activity.UnreadWidgetConfiguration)1 ArrayList (java.util.ArrayList)1