AddAdapter.java revision 31dd503c6aa69018e694d91724d46db49ea09327
131dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project/* 231dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * Copyright (C) 2008 The Android Open Source Project 331dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * 431dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 531dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * you may not use this file except in compliance with the License. 631dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * You may obtain a copy of the License at 731dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * 831dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 931dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * 1031dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 1131dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 1231dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1331dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * See the License for the specific language governing permissions and 1431dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * limitations under the License. 1531dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project */ 1631dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 1731dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Projectpackage com.android.launcher; 1831dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 1931dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Projectimport android.content.Context; 2031dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Projectimport android.content.res.Resources; 2131dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Projectimport android.graphics.drawable.Drawable; 2231dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Projectimport android.view.LayoutInflater; 2331dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Projectimport android.view.View; 2431dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Projectimport android.view.ViewGroup; 2531dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Projectimport android.widget.BaseAdapter; 2631dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Projectimport android.widget.TextView; 2731dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 2831dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Projectimport java.util.ArrayList; 2931dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 3031dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project/** 3131dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * Adapter showing the types of items that can be added to a {@link Workspace}. 3231dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project */ 3331dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Projectpublic class AddAdapter extends BaseAdapter { 3431dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 3531dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project private final Launcher mLauncher; 3631dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project private final LayoutInflater mInflater; 3731dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 3831dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project private final ArrayList<ListItem> mItems = new ArrayList<ListItem>(); 3931dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 4031dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project public static final int ITEM_APPLICATION = 0; 4131dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project public static final int ITEM_SHORTCUT = 1; 4231dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project public static final int ITEM_SEARCH = 2; 4331dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project public static final int ITEM_GADGET = 3; 4431dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project public static final int ITEM_LIVE_FOLDER = 4; 4531dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project public static final int ITEM_FOLDER = 5; 4631dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project public static final int ITEM_WALLPAPER = 6; 4731dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 4831dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project /** 4931dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * Specific item in our list. 5031dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project */ 5131dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project public class ListItem { 5231dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project public final CharSequence text; 5331dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project public final Drawable image; 5431dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project public final int actionTag; 5531dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 5631dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project public ListItem(Resources res, int textResourceId, int imageResourceId, int actionTag) { 5731dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project text = res.getString(textResourceId); 5831dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project if (imageResourceId != -1) { 5931dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project image = res.getDrawable(imageResourceId); 6031dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project } else { 6131dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project image = null; 6231dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project } 6331dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project this.actionTag = actionTag; 6431dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project } 6531dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project } 6631dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 6731dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project public AddAdapter(Launcher launcher) { 6831dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project super(); 6931dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 7031dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project mLauncher = launcher; 7131dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project mInflater = (LayoutInflater) mLauncher.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 7231dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 7331dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project // Create default actions 7431dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project Resources res = launcher.getResources(); 7531dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 7631dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project mItems.add(new ListItem(res, R.string.group_applications, 7731dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project R.drawable.ic_launcher_application, ITEM_APPLICATION)); 7831dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 7931dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project mItems.add(new ListItem(res, R.string.group_shortcuts, 8031dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project R.drawable.ic_launcher_empty, ITEM_SHORTCUT)); 8131dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 8231dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project mItems.add(new ListItem(res, R.string.group_search, 8331dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project R.drawable.ic_search_gadget, ITEM_SEARCH)); 8431dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 8531dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project mItems.add(new ListItem(res, R.string.group_widgets, 8631dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project R.drawable.ic_launcher_gadget, ITEM_GADGET)); 8731dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 8831dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project mItems.add(new ListItem(res, R.string.group_live_folders, 8931dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project R.drawable.ic_launcher_empty, ITEM_LIVE_FOLDER)); 9031dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 9131dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project mItems.add(new ListItem(res, R.string.group_folder, 9231dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project R.drawable.ic_launcher_folder, ITEM_FOLDER)); 9331dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 9431dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project mItems.add(new ListItem(res, R.string.group_wallpapers, 9531dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project R.drawable.ic_launcher_gallery, ITEM_WALLPAPER)); 9631dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 9731dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project } 9831dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 9931dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project public View getView(int position, View convertView, ViewGroup parent) { 10031dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project ListItem item = (ListItem) getItem(position); 10131dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 10231dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project if (convertView == null) { 10331dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project convertView = mInflater.inflate(R.layout.add_list_item, parent, false); 10431dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project } 10531dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 10631dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project TextView textView = (TextView) convertView; 10731dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project textView.setTag(item); 10831dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project textView.setText(item.text); 10931dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project textView.setCompoundDrawablesWithIntrinsicBounds(item.image, null, null, null); 11031dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 11131dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project return convertView; 11231dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project } 11331dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 11431dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project public int getCount() { 11531dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project return mItems.size(); 11631dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project } 11731dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 11831dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project public Object getItem(int position) { 11931dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project return mItems.get(position); 12031dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project } 12131dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 12231dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project public long getItemId(int position) { 12331dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project return position; 12431dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project } 12531dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project 12631dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project} 127