1dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins/*
2dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins * Copyright (C) 2011 The Android Open Source Project
3dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins *
4dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins * Licensed under the Apache License, Version 2.0 (the "License");
5dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins * you may not use this file except in compliance with the License.
6dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins * You may obtain a copy of the License at
7dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins *
8dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins *      http://www.apache.org/licenses/LICENSE-2.0
9dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins *
10dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins * Unless required by applicable law or agreed to in writing, software
11dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins * distributed under the License is distributed on an "AS IS" BASIS,
12dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins * See the License for the specific language governing permissions and
14dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins * limitations under the License.
15dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins */
16dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins
17dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scrogginspackage com.android.browser.addbookmark;
18dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins
19dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scrogginsimport com.android.browser.R;
20dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins
21dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scrogginsimport android.content.Context;
22dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scrogginsimport android.graphics.drawable.Drawable;
232eec4c34867bbcf2c136f4e6e7f74670360545feJohn Reckimport android.view.Gravity;
24dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scrogginsimport android.view.LayoutInflater;
25dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scrogginsimport android.view.View;
26dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scrogginsimport android.view.ViewGroup;
272eec4c34867bbcf2c136f4e6e7f74670360545feJohn Reckimport android.widget.BaseAdapter;
28dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scrogginsimport android.widget.TextView;
29dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins
30dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins/**
31dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins * SpinnerAdapter used in the AddBookmarkPage to select where to save a
32dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins * bookmark/folder.
33dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins */
342eec4c34867bbcf2c136f4e6e7f74670360545feJohn Reckpublic class FolderSpinnerAdapter extends BaseAdapter {
35dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins
36dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins    public static final int HOME_SCREEN = 0;
37dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins    public static final int ROOT_FOLDER = 1;
38dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins    public static final int OTHER_FOLDER = 2;
392f24e991b167b7ed6742d39d941c16ade899e14cLeon Scroggins    public static final int RECENT_FOLDER = 3;
40dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins
412eec4c34867bbcf2c136f4e6e7f74670360545feJohn Reck    private boolean mIncludeHomeScreen;
422eec4c34867bbcf2c136f4e6e7f74670360545feJohn Reck    private boolean mIncludesRecentFolder;
432eec4c34867bbcf2c136f4e6e7f74670360545feJohn Reck    private long mRecentFolderId;
442eec4c34867bbcf2c136f4e6e7f74670360545feJohn Reck    private String mRecentFolderName;
452eec4c34867bbcf2c136f4e6e7f74670360545feJohn Reck    private LayoutInflater mInflater;
462eec4c34867bbcf2c136f4e6e7f74670360545feJohn Reck    private Context mContext;
472eec4c34867bbcf2c136f4e6e7f74670360545feJohn Reck    private String mOtherFolderDisplayText;
482eec4c34867bbcf2c136f4e6e7f74670360545feJohn Reck
492eec4c34867bbcf2c136f4e6e7f74670360545feJohn Reck    public FolderSpinnerAdapter(Context context, boolean includeHomeScreen) {
50dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins        mIncludeHomeScreen = includeHomeScreen;
512eec4c34867bbcf2c136f4e6e7f74670360545feJohn Reck        mContext = context;
522eec4c34867bbcf2c136f4e6e7f74670360545feJohn Reck        mInflater = LayoutInflater.from(mContext);
53dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins    }
54dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins
552f24e991b167b7ed6742d39d941c16ade899e14cLeon Scroggins    public void addRecentFolder(long folderId, String folderName) {
562f24e991b167b7ed6742d39d941c16ade899e14cLeon Scroggins        mIncludesRecentFolder = true;
572f24e991b167b7ed6742d39d941c16ade899e14cLeon Scroggins        mRecentFolderId = folderId;
582f24e991b167b7ed6742d39d941c16ade899e14cLeon Scroggins        mRecentFolderName = folderName;
592f24e991b167b7ed6742d39d941c16ade899e14cLeon Scroggins    }
602f24e991b167b7ed6742d39d941c16ade899e14cLeon Scroggins
612f24e991b167b7ed6742d39d941c16ade899e14cLeon Scroggins    public long recentFolderId() { return mRecentFolderId; }
622f24e991b167b7ed6742d39d941c16ade899e14cLeon Scroggins
632eec4c34867bbcf2c136f4e6e7f74670360545feJohn Reck    private void bindView(int position, View view, boolean isDropDown) {
64dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins        int labelResource;
65dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins        int drawableResource;
66dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins        if (!mIncludeHomeScreen) {
67dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins            position++;
68dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins        }
69dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins        switch (position) {
70dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins            case HOME_SCREEN:
71dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins                labelResource = R.string.add_to_homescreen_menu_option;
725a72f1858c2f73be3558c6cdaa2c84b4c36fa748Michael Kolb                drawableResource = R.drawable.ic_home_holo_dark;
73dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins                break;
74dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins            case ROOT_FOLDER:
75dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins                labelResource = R.string.add_to_bookmarks_menu_option;
765a72f1858c2f73be3558c6cdaa2c84b4c36fa748Michael Kolb                drawableResource = R.drawable.ic_bookmarks_holo_dark;
77dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins                break;
782f24e991b167b7ed6742d39d941c16ade899e14cLeon Scroggins            case RECENT_FOLDER:
792f24e991b167b7ed6742d39d941c16ade899e14cLeon Scroggins                // Fall through and use the same icon resource
80dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins            case OTHER_FOLDER:
81dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins                labelResource = R.string.add_to_other_folder_menu_option;
825a72f1858c2f73be3558c6cdaa2c84b4c36fa748Michael Kolb                drawableResource = R.drawable.ic_folder_holo_dark;
83dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins                break;
84dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins            default:
85dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins                labelResource = 0;
86dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins                drawableResource = 0;
87dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins                // assert
88dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins                break;
89dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins        }
902eec4c34867bbcf2c136f4e6e7f74670360545feJohn Reck        TextView textView = (TextView) view;
912f24e991b167b7ed6742d39d941c16ade899e14cLeon Scroggins        if (position == RECENT_FOLDER) {
922f24e991b167b7ed6742d39d941c16ade899e14cLeon Scroggins            textView.setText(mRecentFolderName);
932eec4c34867bbcf2c136f4e6e7f74670360545feJohn Reck        } else if (position == OTHER_FOLDER && !isDropDown
942eec4c34867bbcf2c136f4e6e7f74670360545feJohn Reck                && mOtherFolderDisplayText != null) {
952eec4c34867bbcf2c136f4e6e7f74670360545feJohn Reck            textView.setText(mOtherFolderDisplayText);
962f24e991b167b7ed6742d39d941c16ade899e14cLeon Scroggins        } else {
972f24e991b167b7ed6742d39d941c16ade899e14cLeon Scroggins            textView.setText(labelResource);
982f24e991b167b7ed6742d39d941c16ade899e14cLeon Scroggins        }
992eec4c34867bbcf2c136f4e6e7f74670360545feJohn Reck        textView.setGravity(Gravity.CENTER_VERTICAL);
1002eec4c34867bbcf2c136f4e6e7f74670360545feJohn Reck        Drawable drawable = mContext.getResources().getDrawable(drawableResource);
101dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins        textView.setCompoundDrawablesWithIntrinsicBounds(drawable, null,
102dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins                null, null);
103dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins    }
104dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins
105dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins    @Override
1062eec4c34867bbcf2c136f4e6e7f74670360545feJohn Reck    public View getDropDownView(int position, View convertView, ViewGroup parent) {
1072eec4c34867bbcf2c136f4e6e7f74670360545feJohn Reck        if (convertView == null) {
1082eec4c34867bbcf2c136f4e6e7f74670360545feJohn Reck            convertView = mInflater.inflate(
1092eec4c34867bbcf2c136f4e6e7f74670360545feJohn Reck                    android.R.layout.simple_spinner_dropdown_item, parent, false);
1102eec4c34867bbcf2c136f4e6e7f74670360545feJohn Reck        }
1112eec4c34867bbcf2c136f4e6e7f74670360545feJohn Reck        bindView(position, convertView, true);
1122eec4c34867bbcf2c136f4e6e7f74670360545feJohn Reck        return convertView;
113dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins    }
114dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins
115dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins    @Override
1162eec4c34867bbcf2c136f4e6e7f74670360545feJohn Reck    public View getView(int position, View convertView, ViewGroup parent) {
1172eec4c34867bbcf2c136f4e6e7f74670360545feJohn Reck        if (convertView == null) {
1182eec4c34867bbcf2c136f4e6e7f74670360545feJohn Reck            convertView = mInflater.inflate(android.R.layout.simple_spinner_item,
1192eec4c34867bbcf2c136f4e6e7f74670360545feJohn Reck                    parent, false);
1202eec4c34867bbcf2c136f4e6e7f74670360545feJohn Reck        }
1212eec4c34867bbcf2c136f4e6e7f74670360545feJohn Reck        bindView(position, convertView, false);
1222eec4c34867bbcf2c136f4e6e7f74670360545feJohn Reck        return convertView;
123dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins    }
124dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins
125dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins    @Override
126dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins    public int getCount() {
1272f24e991b167b7ed6742d39d941c16ade899e14cLeon Scroggins        int count = 2;
1282f24e991b167b7ed6742d39d941c16ade899e14cLeon Scroggins        if (mIncludeHomeScreen) count++;
1292f24e991b167b7ed6742d39d941c16ade899e14cLeon Scroggins        if (mIncludesRecentFolder) count++;
1302f24e991b167b7ed6742d39d941c16ade899e14cLeon Scroggins        return count;
131dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins    }
132dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins
133dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins    @Override
134dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins    public Object getItem(int position) {
135dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins        return null;
136dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins    }
137dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins
138dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins    @Override
139dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins    public long getItemId(int position) {
140dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins        long id = position;
141dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins        if (!mIncludeHomeScreen) {
142dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins            id++;
143dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins        }
144dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins        return id;
145dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins    }
146dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins
147dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins    @Override
148dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins    public boolean hasStableIds() {
149dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins        return true;
150dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins    }
151dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins
1522eec4c34867bbcf2c136f4e6e7f74670360545feJohn Reck    public void setOtherFolderDisplayText(String parentTitle) {
1532eec4c34867bbcf2c136f4e6e7f74670360545feJohn Reck        mOtherFolderDisplayText = parentTitle;
1542eec4c34867bbcf2c136f4e6e7f74670360545feJohn Reck        notifyDataSetChanged();
155dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins    }
156dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins
157e890c903edc8b0eb0f54649f65f6d11a2b9ba009John Reck    public void clearRecentFolder() {
158e890c903edc8b0eb0f54649f65f6d11a2b9ba009John Reck        if (mIncludesRecentFolder) {
159e890c903edc8b0eb0f54649f65f6d11a2b9ba009John Reck            mIncludesRecentFolder = false;
160e890c903edc8b0eb0f54649f65f6d11a2b9ba009John Reck            notifyDataSetChanged();
161e890c903edc8b0eb0f54649f65f6d11a2b9ba009John Reck        }
162e890c903edc8b0eb0f54649f65f6d11a2b9ba009John Reck    }
163dd13bad0ea5e01b6689a61145327febea4bfde8aLeon Scroggins}
164