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