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