diff options
Diffstat (limited to 'src/com/android/browser/BrowserBookmarksPage.java')
-rw-r--r-- | src/com/android/browser/BrowserBookmarksPage.java | 378 |
1 files changed, 170 insertions, 208 deletions
diff --git a/src/com/android/browser/BrowserBookmarksPage.java b/src/com/android/browser/BrowserBookmarksPage.java index c6bc2bc..962d21c 100644 --- a/src/com/android/browser/BrowserBookmarksPage.java +++ b/src/com/android/browser/BrowserBookmarksPage.java @@ -16,7 +16,8 @@ package com.android.browser; -import com.android.browser.BreadCrumbView.Crumb; +import com.android.browser.view.BookmarkExpandableGridView; +import com.android.browser.view.BookmarkExpandableGridView.BookmarkContextMenuInfo; import android.app.Activity; import android.app.Fragment; @@ -25,11 +26,11 @@ import android.content.ClipData; import android.content.ClipboardManager; import android.content.ContentUris; import android.content.Context; +import android.content.CursorLoader; import android.content.Intent; import android.content.Loader; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; -import android.content.SharedPreferences.OnSharedPreferenceChangeListener; import android.content.res.Configuration; import android.content.res.Resources; import android.database.Cursor; @@ -40,6 +41,7 @@ import android.os.AsyncTask; import android.os.Bundle; import android.preference.PreferenceManager; import android.provider.BrowserContract; +import android.provider.BrowserContract.Accounts; import android.provider.BrowserContract.ChromeSyncColumns; import android.view.ContextMenu; import android.view.ContextMenu.ContextMenuInfo; @@ -50,116 +52,114 @@ import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.webkit.WebIconDatabase.IconListener; -import android.widget.AdapterView; -import android.widget.AdapterView.OnItemClickListener; -import android.widget.GridView; +import android.widget.ExpandableListView; +import android.widget.ExpandableListView.OnChildClickListener; import android.widget.ListView; import android.widget.PopupMenu.OnMenuItemClickListener; import android.widget.Toast; +import java.util.HashMap; + interface BookmarksPageCallbacks { // Return true if handled boolean onBookmarkSelected(Cursor c, boolean isFolder); // Return true if handled boolean onOpenInNewWindow(Cursor c); - void onFolderChanged(int level, Uri uri); } /** * View showing the user's bookmarks in the browser. */ public class BrowserBookmarksPage extends Fragment implements View.OnCreateContextMenuListener, - LoaderManager.LoaderCallbacks<Cursor>, OnItemClickListener, IconListener, - BreadCrumbView.Controller, OnMenuItemClickListener, OnSharedPreferenceChangeListener { + LoaderManager.LoaderCallbacks<Cursor>, IconListener, + BreadCrumbView.Controller, OnMenuItemClickListener, OnChildClickListener { static final String LOGTAG = "browser"; - static final int LOADER_BOOKMARKS = 1; + static final int LOADER_ACCOUNTS = 1; + static final int LOADER_BOOKMARKS = 100; static final String EXTRA_DISABLE_WINDOW = "disable_new_window"; - static final String ACCOUNT_NAME_UNSYNCED = "Unsynced"; - public static final String PREF_ACCOUNT_TYPE = "acct_type"; public static final String PREF_ACCOUNT_NAME = "acct_name"; + static final String ACCOUNT_TYPE = "account_type"; + static final String ACCOUNT_NAME = "account_name"; + static final int VIEW_THUMBNAILS = 1; static final int VIEW_LIST = 2; static final String PREF_SELECTED_VIEW = "bookmarks_view"; BookmarksPageCallbacks mCallbacks; View mRoot; - GridView mGrid; + BookmarkExpandableGridView mGrid; ListView mList; - BrowserBookmarksAdapter mAdapter; boolean mDisableNewWindow; - boolean mCanceled = false; boolean mEnableContextMenu = true; - boolean mShowRootFolder = false; View mEmptyView; int mCurrentView; View mHeader; - ViewGroup mHeaderContainer; - BreadCrumbView mCrumbs; - int mCrumbVisibility = View.VISIBLE; - int mCrumbMaxVisible = -1; - boolean mCrumbBackButton = false; + HashMap<Integer, BrowserBookmarksAdapter> mBookmarkAdapters = new HashMap<Integer, BrowserBookmarksAdapter>(); static BrowserBookmarksPage newInstance(BookmarksPageCallbacks cb, Bundle args, ViewGroup headerContainer) { BrowserBookmarksPage bbp = new BrowserBookmarksPage(); bbp.mCallbacks = cb; - bbp.mHeaderContainer = headerContainer; bbp.setArguments(args); return bbp; } @Override public Loader<Cursor> onCreateLoader(int id, Bundle args) { - switch (id) { - case LOADER_BOOKMARKS: { - SharedPreferences prefs = PreferenceManager - .getDefaultSharedPreferences(getActivity()); - String accountType = prefs.getString(PREF_ACCOUNT_TYPE, null); - String accountName = prefs.getString(PREF_ACCOUNT_NAME, null); - BookmarksLoader bl = new BookmarksLoader(getActivity(), - accountType, accountName); - if (mCrumbs != null) { - Uri uri = (Uri) mCrumbs.getTopData(); - if (uri != null) { - bl.setUri(uri); - } - } - return bl; - } + if (id == LOADER_ACCOUNTS) { + return new AccountsLoader(getActivity()); + } else if (id >= LOADER_BOOKMARKS) { + String accountType = args.getString(ACCOUNT_TYPE); + String accountName = args.getString(ACCOUNT_NAME); + BookmarksLoader bl = new BookmarksLoader(getActivity(), + accountType, accountName); + return bl; + } else { + throw new UnsupportedOperationException("Unknown loader id " + id); } - throw new UnsupportedOperationException("Unknown loader id " + id); } @Override public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) { - switch (loader.getId()) { - case LOADER_BOOKMARKS: { - // Set the visibility of the empty vs. content views - if (cursor == null || cursor.getCount() == 0) { - mEmptyView.setVisibility(View.VISIBLE); - mGrid.setVisibility(View.GONE); - mList.setVisibility(View.GONE); - } else { - mEmptyView.setVisibility(View.GONE); - setupBookmarkView(); - } - - // Give the new data to the adapter - mAdapter.changeCursor(cursor); - break; + if (loader.getId() == LOADER_ACCOUNTS) { + LoaderManager lm = getLoaderManager(); + int id = LOADER_BOOKMARKS; + while (cursor.moveToNext()) { + String accountName = cursor.getString(0); + String accountType = cursor.getString(1); + Bundle args = new Bundle(); + args.putString(ACCOUNT_NAME, accountName); + args.putString(ACCOUNT_TYPE, accountType); + BrowserBookmarksAdapter adapter = new BrowserBookmarksAdapter( + getActivity(), mCurrentView); + mBookmarkAdapters.put(id, adapter); + mGrid.addAccount(accountName, adapter); + lm.restartLoader(id, args, this); + id++; } + // TODO: Figure out what a reload of these means + // Currently, a reload is triggered whenever bookmarks change + // This is less than ideal + // It also causes UI flickering as a new adapter is created + // instead of re-using an existing one when the account_name is the + // same. + // For now, this is a one-shot load + getLoaderManager().destroyLoader(LOADER_ACCOUNTS); + } else if (loader.getId() >= LOADER_BOOKMARKS) { + BrowserBookmarksAdapter adapter = mBookmarkAdapters.get(loader.getId()); + adapter.changeCursor(cursor); } } @Override public void onLoaderReset(Loader<Cursor> loader) { - onLoadFinished(loader, null); + // TODO: Figure out what to do here (if anything?) } long getFolderId() { @@ -181,37 +181,32 @@ public class BrowserBookmarksPage extends Fragment implements View.OnCreateConte @Override public boolean onContextItemSelected(MenuItem item) { final Activity activity = getActivity(); - // It is possible that the view has been canceled when we get to - // this point as back has a higher priority - if (mCanceled) { - return false; - } - AdapterView.AdapterContextMenuInfo i = - (AdapterView.AdapterContextMenuInfo)item.getMenuInfo(); + BookmarkContextMenuInfo i = (BookmarkContextMenuInfo)item.getMenuInfo(); // If we have no menu info, we can't tell which item was selected. if (i == null) { return false; } + BrowserBookmarksAdapter adapter = getChildAdapter(i.groupPosition); switch (item.getItemId()) { case R.id.open_context_menu_id: - loadUrl(i.position); + loadUrl(adapter, i.childPosition); break; case R.id.edit_context_menu_id: - editBookmark(i.position); + editBookmark(adapter, i.childPosition); break; case R.id.shortcut_context_menu_id: - Cursor c = mAdapter.getItem(i.position); + Cursor c = adapter.getItem(i.childPosition); activity.sendBroadcast(createShortcutIntent(getActivity(), c)); break; case R.id.delete_context_menu_id: - displayRemoveBookmarkDialog(i.position); + displayRemoveBookmarkDialog(adapter, i.childPosition); break; case R.id.new_window_context_menu_id: - openInNewWindow(i.position); + openInNewWindow(adapter, i.childPosition); break; case R.id.share_link_context_menu_id: { - Cursor cursor = mAdapter.getItem(i.position); + Cursor cursor = adapter.getItem(i.childPosition); Controller.sharePage(activity, cursor.getString(BookmarksLoader.COLUMN_INDEX_TITLE), cursor.getString(BookmarksLoader.COLUMN_INDEX_URL), @@ -220,16 +215,16 @@ public class BrowserBookmarksPage extends Fragment implements View.OnCreateConte break; } case R.id.copy_url_context_menu_id: - copy(getUrl(i.position)); + copy(getUrl(adapter, i.childPosition)); break; case R.id.homepage_context_menu_id: { - BrowserSettings.getInstance().setHomePage(activity, getUrl(i.position)); + BrowserSettings.getInstance().setHomePage(getUrl(adapter, i.childPosition)); Toast.makeText(activity, R.string.homepage_set, Toast.LENGTH_LONG).show(); break; } // Only for the Most visited page case R.id.save_to_bookmarks_menu_id: { - Cursor cursor = mAdapter.getItem(i.position); + Cursor cursor = adapter.getItem(i.childPosition); String name = cursor.getString(BookmarksLoader.COLUMN_INDEX_TITLE); String url = cursor.getString(BookmarksLoader.COLUMN_INDEX_URL); // If the site is bookmarked, the item becomes remove from @@ -270,8 +265,9 @@ public class BrowserBookmarksPage extends Fragment implements View.OnCreateConte @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { - AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo; - Cursor cursor = mAdapter.getItem(info.position); + BookmarkContextMenuInfo info = (BookmarkContextMenuInfo) menuInfo; + BrowserBookmarksAdapter adapter = getChildAdapter(info.groupPosition); + Cursor cursor = adapter.getItem(info.childPosition); if (!canEdit(cursor)) { return; } @@ -330,55 +326,35 @@ public class BrowserBookmarksPage extends Fragment implements View.OnCreateConte @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); - - setHasOptionsMenu(true); + SharedPreferences prefs = PreferenceManager + .getDefaultSharedPreferences(getActivity()); + mCurrentView = prefs.getInt(PREF_SELECTED_VIEW, getDefaultView()); + // TODO: Support list view + mCurrentView = VIEW_THUMBNAILS; Bundle args = getArguments(); mDisableNewWindow = args == null ? false : args.getBoolean(EXTRA_DISABLE_WINDOW, false); + + setHasOptionsMenu(true); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - Context context = getActivity(); - mRoot = inflater.inflate(R.layout.bookmarks, container, false); mEmptyView = mRoot.findViewById(android.R.id.empty); - mGrid = (GridView) mRoot.findViewById(R.id.grid); - mGrid.setOnItemClickListener(this); - mGrid.setColumnWidth(Controller.getDesiredThumbnailWidth(getActivity())); + mGrid = (BookmarkExpandableGridView) mRoot.findViewById(R.id.grid); + mGrid.setOnChildClickListener(this); + mGrid.setColumnWidthFromLayout(R.layout.bookmark_thumbnail); + mGrid.setBreadcrumbController(this); mList = (ListView) mRoot.findViewById(R.id.list); - mList.setOnItemClickListener(this); + // TODO: mList.setOnItemClickListener(this); setEnableContextMenu(mEnableContextMenu); - // Prep the header - ViewGroup hc = mHeaderContainer; - if (hc == null) { - hc = (ViewGroup) mRoot.findViewById(R.id.header_container); - hc.setVisibility(View.VISIBLE); - } - mHeader = inflater.inflate(R.layout.bookmarks_header, hc, false); - hc.addView(mHeader); - mCrumbs = (BreadCrumbView) mHeader.findViewById(R.id.crumbs); - mCrumbs.setController(this); - mCrumbs.setUseBackButton(mCrumbBackButton); - mCrumbs.setMaxVisible(mCrumbMaxVisible); - mCrumbs.setVisibility(mCrumbVisibility); - String name = getString(R.string.bookmarks); - mCrumbs.pushView(name, false, BrowserContract.Bookmarks.CONTENT_URI_DEFAULT_FOLDER); - if (mCallbacks != null) { - mCallbacks.onFolderChanged(1, BrowserContract.Bookmarks.CONTENT_URI_DEFAULT_FOLDER); - } // Start the loaders LoaderManager lm = getLoaderManager(); - SharedPreferences prefs = PreferenceManager - .getDefaultSharedPreferences(getActivity()); - prefs.registerOnSharedPreferenceChangeListener(this); - mCurrentView = - prefs.getInt(PREF_SELECTED_VIEW, getDefaultView()); - mAdapter = new BrowserBookmarksAdapter(getActivity(), mCurrentView); - lm.restartLoader(LOADER_BOOKMARKS, null, this); + lm.restartLoader(LOADER_ACCOUNTS, null, this); // Add our own listener in case there are favicons that have yet to be loaded. CombinedBookmarkHistoryView.getIconListenerSet().addListener(this); @@ -396,16 +372,14 @@ public class BrowserBookmarksPage extends Fragment implements View.OnCreateConte @Override public void onDestroyView() { super.onDestroyView(); - SharedPreferences prefs = PreferenceManager - .getDefaultSharedPreferences(getActivity()); - prefs.unregisterOnSharedPreferenceChangeListener(this); - if (mHeaderContainer != null) { - mHeaderContainer.removeView(mHeader); - } - mCrumbs.setController(null); - mCrumbs = null; - getLoaderManager().destroyLoader(LOADER_BOOKMARKS); - mAdapter = null; + mGrid.setBreadcrumbController(null); + LoaderManager lm = getLoaderManager(); + lm.destroyLoader(LOADER_ACCOUNTS); + for (int id : mBookmarkAdapters.keySet()) { + lm.destroyLoader(id); + } + mBookmarkAdapters.clear(); + CombinedBookmarkHistoryView.getIconListenerSet().removeListener(this); } @@ -413,35 +387,52 @@ public class BrowserBookmarksPage extends Fragment implements View.OnCreateConte public void onReceivedIcon(String url, Bitmap icon) { // A new favicon has been loaded, so let anything attached to the adapter know about it // so new icons will be loaded. - mAdapter.notifyDataSetChanged(); + // TODO: Notify all of data set changed + // TODO: Wait, is this even needed? Won't this trigger a DB change anyway? } - @Override - public void onItemClick(AdapterView<?> parent, View v, int position, long id) { - // It is possible that the view has been canceled when we get to - // this point as back has a higher priority - if (mCanceled) { - android.util.Log.e(LOGTAG, "item clicked when dismissing"); - return; + private BrowserBookmarksAdapter getChildAdapter(int groupPosition) { + if (mCurrentView == VIEW_THUMBNAILS) { + return mGrid.getChildAdapter(groupPosition); + } else { + // TODO: Support expandable list + return null; } + } - Cursor cursor = mAdapter.getItem(position); + private BreadCrumbView getBreadCrumbs(int groupPosition) { + if (mCurrentView == VIEW_THUMBNAILS) { + return mGrid.getBreadCrumbs(groupPosition); + } else { + // TODO: Support expandable list + return null; + } + } + + @Override + public boolean onChildClick(ExpandableListView parent, View v, + int groupPosition, int childPosition, long id) { + BrowserBookmarksAdapter adapter = getChildAdapter(groupPosition); + Cursor cursor = adapter.getItem(childPosition); boolean isFolder = cursor.getInt(BookmarksLoader.COLUMN_INDEX_IS_FOLDER) != 0; if (mCallbacks != null && mCallbacks.onBookmarkSelected(cursor, isFolder)) { - return; + return true; } + // TODO: Folder stuff if (isFolder) { String title = cursor.getString(BookmarksLoader.COLUMN_INDEX_TITLE); Uri uri = ContentUris.withAppendedId( BrowserContract.Bookmarks.CONTENT_URI_DEFAULT_FOLDER, id); - if (mCrumbs != null) { + BreadCrumbView crumbs = getBreadCrumbs(groupPosition); + if (crumbs != null) { // update crumbs - mCrumbs.pushView(title, uri); + crumbs.pushView(title, uri); } - loadFolder(uri); + loadFolder(groupPosition, uri); } + return true; } /* package */ static Intent createShortcutIntent(Context context, Cursor cursor) { @@ -452,15 +443,15 @@ public class BrowserBookmarksPage extends Fragment implements View.OnCreateConte return BookmarkUtils.createAddToHomeIntent(context, url, title, touchIcon, favicon); } - private void loadUrl(int position) { - if (mCallbacks != null && mAdapter != null) { - mCallbacks.onBookmarkSelected(mAdapter.getItem(position), false); + private void loadUrl(BrowserBookmarksAdapter adapter, int position) { + if (mCallbacks != null && adapter != null) { + mCallbacks.onBookmarkSelected(adapter.getItem(position), false); } } - private void openInNewWindow(int position) { + private void openInNewWindow(BrowserBookmarksAdapter adapter, int position) { if (mCallbacks != null) { - Cursor c = mAdapter.getItem(position); + Cursor c = adapter.getItem(position); boolean isFolder = c.getInt(BookmarksLoader.COLUMN_INDEX_IS_FOLDER) == 1; if (isFolder) { long id = c.getLong(BookmarksLoader.COLUMN_INDEX_ID); @@ -497,9 +488,9 @@ public class BrowserBookmarksPage extends Fragment implements View.OnCreateConte } - private void editBookmark(int position) { + private void editBookmark(BrowserBookmarksAdapter adapter, int position) { Intent intent = new Intent(getActivity(), AddBookmarkPage.class); - Cursor cursor = mAdapter.getItem(position); + Cursor cursor = adapter.getItem(position); Bundle item = new Bundle(); item.putString(BrowserContract.Bookmarks.TITLE, cursor.getString(BookmarksLoader.COLUMN_INDEX_TITLE)); @@ -520,18 +511,19 @@ public class BrowserBookmarksPage extends Fragment implements View.OnCreateConte startActivity(intent); } - private void displayRemoveBookmarkDialog(final int position) { + private void displayRemoveBookmarkDialog(BrowserBookmarksAdapter adapter, + int position) { // Put up a dialog asking if the user really wants to // delete the bookmark - Cursor cursor = mAdapter.getItem(position); + Cursor cursor = adapter.getItem(position); long id = cursor.getLong(BookmarksLoader.COLUMN_INDEX_ID); String title = cursor.getString(BookmarksLoader.COLUMN_INDEX_TITLE); Context context = getActivity(); BookmarkUtils.displayRemoveBookmarkDialog(id, title, context, null); } - private String getUrl(int position) { - return getUrl(mAdapter.getItem(position)); + private String getUrl(BrowserBookmarksAdapter adapter, int position) { + return getUrl(adapter.getItem(position)); } /* package */ static String getUrl(Cursor c) { @@ -563,6 +555,7 @@ public class BrowserBookmarksPage extends Fragment implements View.OnCreateConte Resources res = getActivity().getResources(); int horizontalSpacing = (int) res.getDimension(R.dimen.combo_horizontalSpacing); mGrid.setHorizontalSpacing(horizontalSpacing); + mGrid.setColumnWidthFromLayout(R.layout.bookmark_thumbnail); int paddingLeftRight = (int) res.getDimension(R.dimen.combo_paddingLeftRight); int paddingTop = (int) res.getDimension(R.dimen.combo_paddingTop); mRoot.setPadding(paddingLeftRight, paddingTop, @@ -578,10 +571,11 @@ public class BrowserBookmarksPage extends Fragment implements View.OnCreateConte } void selectView(int view) { + // TODO: Support list view + view = mCurrentView; if (view == mCurrentView) { return; } - mCurrentView = view; SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity()); Editor edit = prefs.edit(); edit.putInt(PREF_SELECTED_VIEW, mCurrentView); @@ -593,52 +587,53 @@ public class BrowserBookmarksPage extends Fragment implements View.OnCreateConte } private void setupBookmarkView() { - mAdapter.selectView(mCurrentView); - switch (mCurrentView) { - case VIEW_THUMBNAILS: - mList.setAdapter(null); - if (mGrid.getAdapter() != mAdapter) { - mGrid.setAdapter(mAdapter); - } - mGrid.setVisibility(View.VISIBLE); - mList.setVisibility(View.GONE); - break; - case VIEW_LIST: - mGrid.setAdapter(null); - if (mList.getAdapter() != mAdapter) { - mList.setAdapter(mAdapter); - } - mGrid.setVisibility(View.GONE); - mList.setVisibility(View.VISIBLE); - break; - } + // TODO: Support list view +// mAdapter.selectView(mCurrentView); +// switch (mCurrentView) { +// case VIEW_THUMBNAILS: +// mList.setAdapter(null); +// SharedPreferences prefs = PreferenceManager +// .getDefaultSharedPreferences(getActivity()); +// String accountName = prefs.getString(PREF_ACCOUNT_NAME, null); +// mGrid.addAccount(accountName, mAdapter); +// mGrid.setVisibility(View.VISIBLE); +// mList.setVisibility(View.GONE); +// break; +// case VIEW_LIST: +// mGrid.clearAccounts(); +// if (mList.getAdapter() != mAdapter) { +// mList.setAdapter(mAdapter); +// } +// mGrid.setVisibility(View.GONE); +// mList.setVisibility(View.VISIBLE); +// break; +// } } /** * BreadCrumb controller callback */ @Override - public void onTop(int level, Object data) { + public void onTop(BreadCrumbView view, int level, Object data) { + int groupPosition = (Integer) view.getTag(R.id.group_position); Uri uri = (Uri) data; if (uri == null) { // top level uri = BrowserContract.Bookmarks.CONTENT_URI_DEFAULT_FOLDER; } - loadFolder(uri); + loadFolder(groupPosition, uri); } /** * @param uri */ - private void loadFolder(Uri uri) { + private void loadFolder(int groupPosition, Uri uri) { LoaderManager manager = getLoaderManager(); - BookmarksLoader loader = - (BookmarksLoader) ((Loader<?>) manager.getLoader(LOADER_BOOKMARKS)); + // This assumes groups are ordered the same as loaders + BookmarksLoader loader = (BookmarksLoader) ((Loader<?>) + manager.getLoader(LOADER_BOOKMARKS + groupPosition)); loader.setUri(uri); loader.forceLoad(); - if (mCallbacks != null) { - mCallbacks.onFolderChanged(mCrumbs.getTopLevel(), uri); - } } @Override @@ -655,18 +650,9 @@ public class BrowserBookmarksPage extends Fragment implements View.OnCreateConte } public boolean onBackPressed() { - if (canGoBack()) { - mCrumbs.popView(); - return true; - } return false; } - private boolean canGoBack() { - Crumb c = mCrumbs.getTopCrumb(); - return c != null && c.canGoBack; - } - public void setCallbackListener(BookmarksPageCallbacks callbackListener) { mCallbacks = callbackListener; } @@ -723,41 +709,17 @@ public class BrowserBookmarksPage extends Fragment implements View.OnCreateConte } } - public void setBreadCrumbVisibility(int visibility) { - mCrumbVisibility = visibility; - if (mCrumbs != null) { - mCrumbs.setVisibility(mCrumbVisibility); - } - } + static class AccountsLoader extends CursorLoader { - public void setBreadCrumbUseBackButton(boolean use) { - mCrumbBackButton = use; - if (mCrumbs != null) { - mCrumbs.setUseBackButton(mCrumbBackButton); - } - } + static String[] ACCOUNTS_PROJECTION = new String[] { + Accounts.ACCOUNT_NAME, + Accounts.ACCOUNT_TYPE + }; - public void setBreadCrumbMaxVisible(int max) { - mCrumbMaxVisible = max; - if (mCrumbs != null) { - mCrumbs.setMaxVisible(mCrumbMaxVisible); + public AccountsLoader(Context context) { + super(context, Accounts.CONTENT_URI, ACCOUNTS_PROJECTION, null, null, + Accounts.ACCOUNT_NAME + " ASC"); } - } - @Override - public void onSharedPreferenceChanged( - SharedPreferences sharedPreferences, String key) { - if (PREF_ACCOUNT_NAME.equals(key) || PREF_ACCOUNT_TYPE.equals(key)) { - mCrumbs.setController(null); - mCrumbs.clear(); - LoaderManager lm = getLoaderManager(); - lm.restartLoader(LOADER_BOOKMARKS, null, this); - mCrumbs.setController(this); - String name = getString(R.string.bookmarks); - mCrumbs.pushView(name, false, BrowserContract.Bookmarks.CONTENT_URI_DEFAULT_FOLDER); - if (mCallbacks != null) { - mCallbacks.onFolderChanged(1, BrowserContract.Bookmarks.CONTENT_URI_DEFAULT_FOLDER); - } - } } } |