| /* |
| * Copyright (C) 2011 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package com.android.browser.addbookmark; |
| |
| import com.android.browser.R; |
| |
| import android.content.Context; |
| import android.graphics.drawable.Drawable; |
| import android.view.Gravity; |
| import android.view.LayoutInflater; |
| import android.view.View; |
| import android.view.ViewGroup; |
| import android.widget.BaseAdapter; |
| import android.widget.TextView; |
| |
| /** |
| * SpinnerAdapter used in the AddBookmarkPage to select where to save a |
| * bookmark/folder. |
| */ |
| public class FolderSpinnerAdapter extends BaseAdapter { |
| |
| public static final int HOME_SCREEN = 0; |
| public static final int ROOT_FOLDER = 1; |
| public static final int OTHER_FOLDER = 2; |
| public static final int RECENT_FOLDER = 3; |
| |
| private boolean mIncludeHomeScreen; |
| private boolean mIncludesRecentFolder; |
| private long mRecentFolderId; |
| private String mRecentFolderName; |
| private LayoutInflater mInflater; |
| private Context mContext; |
| private String mOtherFolderDisplayText; |
| |
| public FolderSpinnerAdapter(Context context, boolean includeHomeScreen) { |
| mIncludeHomeScreen = includeHomeScreen; |
| mContext = context; |
| mInflater = LayoutInflater.from(mContext); |
| } |
| |
| public void addRecentFolder(long folderId, String folderName) { |
| mIncludesRecentFolder = true; |
| mRecentFolderId = folderId; |
| mRecentFolderName = folderName; |
| } |
| |
| public long recentFolderId() { return mRecentFolderId; } |
| |
| private void bindView(int position, View view, boolean isDropDown) { |
| int labelResource; |
| int drawableResource; |
| if (!mIncludeHomeScreen) { |
| position++; |
| } |
| switch (position) { |
| case HOME_SCREEN: |
| labelResource = R.string.add_to_homescreen_menu_option; |
| drawableResource = R.drawable.ic_home_holo_dark; |
| break; |
| case ROOT_FOLDER: |
| labelResource = R.string.add_to_bookmarks_menu_option; |
| drawableResource = R.drawable.ic_bookmarks_holo_dark; |
| break; |
| case RECENT_FOLDER: |
| // Fall through and use the same icon resource |
| case OTHER_FOLDER: |
| labelResource = R.string.add_to_other_folder_menu_option; |
| drawableResource = R.drawable.ic_folder_holo_dark; |
| break; |
| default: |
| labelResource = 0; |
| drawableResource = 0; |
| // assert |
| break; |
| } |
| TextView textView = (TextView) view; |
| if (position == RECENT_FOLDER) { |
| textView.setText(mRecentFolderName); |
| } else if (position == OTHER_FOLDER && !isDropDown |
| && mOtherFolderDisplayText != null) { |
| textView.setText(mOtherFolderDisplayText); |
| } else { |
| textView.setText(labelResource); |
| } |
| textView.setGravity(Gravity.CENTER_VERTICAL); |
| Drawable drawable = mContext.getResources().getDrawable(drawableResource); |
| textView.setCompoundDrawablesWithIntrinsicBounds(drawable, null, |
| null, null); |
| } |
| |
| @Override |
| public View getDropDownView(int position, View convertView, ViewGroup parent) { |
| if (convertView == null) { |
| convertView = mInflater.inflate( |
| android.R.layout.simple_spinner_dropdown_item, parent, false); |
| } |
| bindView(position, convertView, true); |
| return convertView; |
| } |
| |
| @Override |
| public View getView(int position, View convertView, ViewGroup parent) { |
| if (convertView == null) { |
| convertView = mInflater.inflate(android.R.layout.simple_spinner_item, |
| parent, false); |
| } |
| bindView(position, convertView, false); |
| return convertView; |
| } |
| |
| @Override |
| public int getCount() { |
| int count = 2; |
| if (mIncludeHomeScreen) count++; |
| if (mIncludesRecentFolder) count++; |
| return count; |
| } |
| |
| @Override |
| public Object getItem(int position) { |
| return null; |
| } |
| |
| @Override |
| public long getItemId(int position) { |
| long id = position; |
| if (!mIncludeHomeScreen) { |
| id++; |
| } |
| return id; |
| } |
| |
| @Override |
| public boolean hasStableIds() { |
| return true; |
| } |
| |
| public void setOtherFolderDisplayText(String parentTitle) { |
| mOtherFolderDisplayText = parentTitle; |
| notifyDataSetChanged(); |
| } |
| |
| public void clearRecentFolder() { |
| if (mIncludesRecentFolder) { |
| mIncludesRecentFolder = false; |
| notifyDataSetChanged(); |
| } |
| } |
| } |