Home | History | Annotate | Download | only in ui
      1 /*******************************************************************************
      2  *      Copyright (C) 2012 Google Inc.
      3  *      Licensed to The Android Open Source Project.
      4  *
      5  *      Licensed under the Apache License, Version 2.0 (the "License");
      6  *      you may not use this file except in compliance with the License.
      7  *      You may obtain a copy of the License at
      8  *
      9  *           http://www.apache.org/licenses/LICENSE-2.0
     10  *
     11  *      Unless required by applicable law or agreed to in writing, software
     12  *      distributed under the License is distributed on an "AS IS" BASIS,
     13  *      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     14  *      See the License for the specific language governing permissions and
     15  *      limitations under the License.
     16  *******************************************************************************/
     17 
     18 package com.android.mail.ui;
     19 
     20 import android.content.Context;
     21 import android.database.Cursor;
     22 import android.database.MatrixCursor;
     23 
     24 import com.android.mail.providers.Folder;
     25 import com.android.mail.providers.UIProvider;
     26 import com.android.mail.utils.MatrixCursorWithCachedColumns;
     27 
     28 import java.util.Set;
     29 
     30 public class AddableFolderSelectorAdapter extends FolderSelectorAdapter {
     31 
     32     public AddableFolderSelectorAdapter(Context context, Cursor folders,
     33             Set<String> initiallySelected, int layout, String header) {
     34         super(context, folders, initiallySelected, layout, header);
     35     }
     36 
     37     public static Cursor filterFolders(final Cursor folderCursor,
     38             final Set<Integer> excludedTypes) {
     39         final int projectionSize = UIProvider.FOLDERS_PROJECTION.length;
     40         final MatrixCursor cursor =
     41                 new MatrixCursorWithCachedColumns(UIProvider.FOLDERS_PROJECTION);
     42         final Object[] folder = new Object[projectionSize];
     43         if (folderCursor.moveToFirst()) {
     44             do {
     45                 final int type = folderCursor.getInt(UIProvider.FOLDER_TYPE_COLUMN);
     46 
     47                 if (excludedTypes != null) {
     48                     boolean exclude = false;
     49 
     50                     for (final int excludedType : excludedTypes) {
     51                         if (Folder.isType(type, excludedType)) {
     52                             exclude = true;
     53                             break;
     54                         }
     55                     }
     56 
     57                     if (exclude) {
     58                         continue;
     59                     }
     60                 }
     61 
     62                 if (Folder.isType(type, UIProvider.FolderType.INBOX)
     63                         || Folder.isType(type, UIProvider.FolderType.DEFAULT)) {
     64                     folder[UIProvider.FOLDER_ID_COLUMN] = folderCursor
     65                             .getLong(UIProvider.FOLDER_ID_COLUMN);
     66                     folder[UIProvider.FOLDER_PERSISTENT_ID_COLUMN] = folderCursor
     67                             .getString(UIProvider.FOLDER_PERSISTENT_ID_COLUMN);
     68                     folder[UIProvider.FOLDER_URI_COLUMN] = folderCursor
     69                             .getString(UIProvider.FOLDER_URI_COLUMN);
     70                     folder[UIProvider.FOLDER_NAME_COLUMN] = folderCursor
     71                             .getString(UIProvider.FOLDER_NAME_COLUMN);
     72                     folder[UIProvider.FOLDER_HAS_CHILDREN_COLUMN] = folderCursor
     73                             .getInt(UIProvider.FOLDER_HAS_CHILDREN_COLUMN);
     74                     folder[UIProvider.FOLDER_CAPABILITIES_COLUMN] = folderCursor
     75                             .getInt(UIProvider.FOLDER_CAPABILITIES_COLUMN);
     76                     folder[UIProvider.FOLDER_SYNC_WINDOW_COLUMN] = folderCursor
     77                             .getInt(UIProvider.FOLDER_SYNC_WINDOW_COLUMN);
     78                     folder[UIProvider.FOLDER_CONVERSATION_LIST_URI_COLUMN] = folderCursor
     79                             .getString(UIProvider.FOLDER_CONVERSATION_LIST_URI_COLUMN);
     80                     folder[UIProvider.FOLDER_CHILD_FOLDERS_LIST_COLUMN] = folderCursor
     81                             .getString(UIProvider.FOLDER_CHILD_FOLDERS_LIST_COLUMN);
     82                     folder[UIProvider.FOLDER_UNSEEN_COUNT_COLUMN] = folderCursor
     83                             .getInt(UIProvider.FOLDER_UNSEEN_COUNT_COLUMN);
     84                     folder[UIProvider.FOLDER_UNREAD_COUNT_COLUMN] = folderCursor
     85                             .getInt(UIProvider.FOLDER_UNREAD_COUNT_COLUMN);
     86                     folder[UIProvider.FOLDER_TOTAL_COUNT_COLUMN] = folderCursor
     87                             .getInt(UIProvider.FOLDER_TOTAL_COUNT_COLUMN);
     88                     folder[UIProvider.FOLDER_REFRESH_URI_COLUMN] = folderCursor
     89                             .getString(UIProvider.FOLDER_REFRESH_URI_COLUMN);
     90                     folder[UIProvider.FOLDER_SYNC_STATUS_COLUMN] = folderCursor
     91                             .getInt(UIProvider.FOLDER_SYNC_STATUS_COLUMN);
     92                     folder[UIProvider.FOLDER_LAST_SYNC_RESULT_COLUMN] = folderCursor
     93                             .getInt(UIProvider.FOLDER_LAST_SYNC_RESULT_COLUMN);
     94                     folder[UIProvider.FOLDER_TYPE_COLUMN] = type;
     95                     folder[UIProvider.FOLDER_ICON_RES_ID_COLUMN] = folderCursor
     96                             .getInt(UIProvider.FOLDER_ICON_RES_ID_COLUMN);
     97                     folder[UIProvider.FOLDER_NOTIFICATION_ICON_RES_ID_COLUMN] = folderCursor
     98                             .getInt(UIProvider.FOLDER_NOTIFICATION_ICON_RES_ID_COLUMN);
     99                     folder[UIProvider.FOLDER_BG_COLOR_COLUMN] = folderCursor
    100                             .getString(UIProvider.FOLDER_BG_COLOR_COLUMN);
    101                     folder[UIProvider.FOLDER_FG_COLOR_COLUMN] = folderCursor
    102                             .getString(UIProvider.FOLDER_FG_COLOR_COLUMN);
    103                     folder[UIProvider.FOLDER_LOAD_MORE_URI_COLUMN] = folderCursor
    104                             .getString(UIProvider.FOLDER_LOAD_MORE_URI_COLUMN);
    105                     folder[UIProvider.FOLDER_HIERARCHICAL_DESC_COLUMN] = folderCursor
    106                             .getString(UIProvider.FOLDER_HIERARCHICAL_DESC_COLUMN);
    107                     folder[UIProvider.FOLDER_LAST_MESSAGE_TIMESTAMP_COLUMN] = folderCursor
    108                             .getLong(UIProvider.FOLDER_LAST_MESSAGE_TIMESTAMP_COLUMN);
    109                     folder[UIProvider.FOLDER_PARENT_URI_COLUMN] = folderCursor
    110                             .getString(UIProvider.FOLDER_PARENT_URI_COLUMN);
    111                     cursor.addRow(folder);
    112                 }
    113             } while (folderCursor.moveToNext());
    114         }
    115         return cursor;
    116     }
    117 }
    118