AddAdapter.java revision 7c7a07377f5ca0348eb2ba5d48c828db7c01de14
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 {
347c7a07377f5ca0348eb2ba5d48c828db7c01de14Romain Guy
3531dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project    private final LayoutInflater mInflater;
3631dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project
3731dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project    private final ArrayList<ListItem> mItems = new ArrayList<ListItem>();
3831dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project
3931dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project    public static final int ITEM_APPLICATION = 0;
4031dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project    public static final int ITEM_SHORTCUT = 1;
4131dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project    public static final int ITEM_SEARCH = 2;
427376faefbbcbe30cc4e3f706ab95c254a4707d98The Android Open Source Project    public static final int ITEM_APPWIDGET = 3;
4331dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project    public static final int ITEM_LIVE_FOLDER = 4;
4431dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project    public static final int ITEM_FOLDER = 5;
4531dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project    public static final int ITEM_WALLPAPER = 6;
4631dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project
4731dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project    /**
4831dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project     * Specific item in our list.
4931dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project     */
5031dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project    public class ListItem {
5131dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project        public final CharSequence text;
5231dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project        public final Drawable image;
5331dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project        public final int actionTag;
5431dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project
5531dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project        public ListItem(Resources res, int textResourceId, int imageResourceId, int actionTag) {
5631dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project            text = res.getString(textResourceId);
5731dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project            if (imageResourceId != -1) {
5831dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project                image = res.getDrawable(imageResourceId);
5931dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project            } else {
6031dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project                image = null;
6131dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project            }
6231dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project            this.actionTag = actionTag;
6331dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project        }
6431dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project    }
6531dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project
6631dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project    public AddAdapter(Launcher launcher) {
6731dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project        super();
687c7a07377f5ca0348eb2ba5d48c828db7c01de14Romain Guy
697c7a07377f5ca0348eb2ba5d48c828db7c01de14Romain Guy        mInflater = (LayoutInflater) launcher.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
7031dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project
7131dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project        // Create default actions
7231dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project        Resources res = launcher.getResources();
7331dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project
7431dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project        mItems.add(new ListItem(res, R.string.group_applications,
7531dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project                R.drawable.ic_launcher_application, ITEM_APPLICATION));
7631dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project
7731dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project        mItems.add(new ListItem(res, R.string.group_shortcuts,
787c7a07377f5ca0348eb2ba5d48c828db7c01de14Romain Guy                R.drawable.ic_launcher_shortcut, ITEM_SHORTCUT));
797c7a07377f5ca0348eb2ba5d48c828db7c01de14Romain Guy
8031dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project        mItems.add(new ListItem(res, R.string.group_widgets,
817376faefbbcbe30cc4e3f706ab95c254a4707d98The Android Open Source Project                R.drawable.ic_launcher_appwidget, ITEM_APPWIDGET));
8231dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project
8331dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project        mItems.add(new ListItem(res, R.string.group_live_folders,
847c7a07377f5ca0348eb2ba5d48c828db7c01de14Romain Guy                R.drawable.ic_launcher_folder_live, ITEM_LIVE_FOLDER));
8531dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project
8631dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project        mItems.add(new ListItem(res, R.string.group_folder,
8731dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project                R.drawable.ic_launcher_folder, ITEM_FOLDER));
8831dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project
8931dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project        mItems.add(new ListItem(res, R.string.group_wallpapers,
9031dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project                R.drawable.ic_launcher_gallery, ITEM_WALLPAPER));
9131dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project
9231dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project    }
9331dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project
9431dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project    public View getView(int position, View convertView, ViewGroup parent) {
9531dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project        ListItem item = (ListItem) getItem(position);
9631dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project
9731dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project        if (convertView == null) {
9831dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project            convertView = mInflater.inflate(R.layout.add_list_item, parent, false);
9931dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project        }
10031dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project
10131dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project        TextView textView = (TextView) convertView;
10231dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project        textView.setTag(item);
10331dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project        textView.setText(item.text);
10431dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project        textView.setCompoundDrawablesWithIntrinsicBounds(item.image, null, null, null);
10531dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project
10631dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project        return convertView;
10731dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project    }
10831dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project
10931dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project    public int getCount() {
11031dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project        return mItems.size();
11131dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project    }
11231dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project
11331dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project    public Object getItem(int position) {
11431dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project        return mItems.get(position);
11531dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project    }
11631dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project
11731dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project    public long getItemId(int position) {
11831dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project        return position;
11931dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project    }
12031dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project
12131dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project}
122