summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--res/menu/bookmarkscontext.xml4
-rw-r--r--res/menu/historycontext.xml2
-rw-r--r--src/com/android/browser/AddBookmarkPage.java2
-rw-r--r--src/com/android/browser/BrowserActivity.java4
-rw-r--r--src/com/android/browser/BrowserBookmarksAdapter.java65
-rw-r--r--src/com/android/browser/BrowserBookmarksPage.java77
-rw-r--r--src/com/android/browser/BrowserHistoryPage.java2
-rw-r--r--src/com/android/browser/CombinedBookmarkHistoryActivity.java8
8 files changed, 128 insertions, 36 deletions
diff --git a/res/menu/bookmarkscontext.xml b/res/menu/bookmarkscontext.xml
index ba5d1dcd6..badbb000a 100644
--- a/res/menu/bookmarkscontext.xml
+++ b/res/menu/bookmarkscontext.xml
@@ -28,8 +28,8 @@
android:title="@string/edit_bookmark"/>
<item android:id="@+id/shortcut_context_menu_id"
android:title="@string/create_shortcut_bookmark"/>
- <item android:id="@+id/send_context_menu_id"
- android:title="@string/tab_picker_send_url"/>
+ <item android:id="@+id/share_link_context_menu_id"
+ android:title="@string/contextmenu_sharelink"/>
<item android:id="@+id/copy_url_context_menu_id"
android:title="@string/contextmenu_copylink"/>
<item android:id="@+id/delete_context_menu_id"
diff --git a/res/menu/historycontext.xml b/res/menu/historycontext.xml
index 5306396dc..bd4ede490 100644
--- a/res/menu/historycontext.xml
+++ b/res/menu/historycontext.xml
@@ -23,7 +23,7 @@
android:title="@string/save_to_bookmarks"/>
<item android:id="@+id/share_link_context_menu_id"
android:title="@string/contextmenu_sharelink"/>
- <item android:id="@+id/copy_context_menu_id"
+ <item android:id="@+id/copy_url_context_menu_id"
android:title="@string/contextmenu_copylink"/>
<item android:id="@+id/delete_context_menu_id"
android:title="@string/remove_history_item"/>
diff --git a/src/com/android/browser/AddBookmarkPage.java b/src/com/android/browser/AddBookmarkPage.java
index d26954645..87638d874 100644
--- a/src/com/android/browser/AddBookmarkPage.java
+++ b/src/com/android/browser/AddBookmarkPage.java
@@ -150,7 +150,7 @@ public class AddBookmarkPage extends Activity {
if (mTouchIconUrl != null) {
final Cursor c =
BrowserBookmarksAdapter.queryBookmarksForUrl(
- cr, null, url);
+ cr, null, url, true);
new DownloadTouchIcon(cr, c, url)
.execute(mTouchIconUrl);
}
diff --git a/src/com/android/browser/BrowserActivity.java b/src/com/android/browser/BrowserActivity.java
index 3c46fc9d6..68ccf79ba 100644
--- a/src/com/android/browser/BrowserActivity.java
+++ b/src/com/android/browser/BrowserActivity.java
@@ -2929,7 +2929,7 @@ public class BrowserActivity extends Activity
// currently accessible here.
ContentResolver cr = getContentResolver();
final Cursor c = BrowserBookmarksAdapter.queryBookmarksForUrl(
- cr, view.getOriginalUrl(), view.getUrl());
+ cr, view.getOriginalUrl(), view.getUrl(), false);
if (c != null) {
boolean succeed = c.moveToFirst();
ContentValues values = null;
@@ -3790,7 +3790,7 @@ public class BrowserActivity extends Activity
final ContentResolver cr = getContentResolver();
final Cursor c =
BrowserBookmarksAdapter.queryBookmarksForUrl(cr,
- view.getOriginalUrl(), view.getUrl());
+ view.getOriginalUrl(), view.getUrl(), true);
if (c != null) {
if (c.getCount() > 0) {
new DownloadTouchIcon(cr, c, view).execute(url);
diff --git a/src/com/android/browser/BrowserBookmarksAdapter.java b/src/com/android/browser/BrowserBookmarksAdapter.java
index c3ccdfd3f..bf74ba23a 100644
--- a/src/com/android/browser/BrowserBookmarksAdapter.java
+++ b/src/com/android/browser/BrowserBookmarksAdapter.java
@@ -52,10 +52,9 @@ class BrowserBookmarksAdapter extends BaseAdapter {
private ContentResolver mContentResolver;
private boolean mDataValid;
private boolean mGridMode;
-
- // When true, this adapter is used to pick a bookmark to create a shortcut
- private boolean mCreateShortcut;
- private int mExtraOffset;
+ private boolean mMostVisited;
+ private boolean mNeedsOffset;
+ private int mExtraOffset;
// Implementation of WebIconDatabase.IconListener
private class IconReceiver implements IconListener {
@@ -74,10 +73,10 @@ class BrowserBookmarksAdapter extends BaseAdapter {
* appropriately after a search.
*/
public BrowserBookmarksAdapter(BrowserBookmarksPage b, String curPage,
- String curTitle, boolean createShortcut) {
- mDataValid = false;
- mCreateShortcut = createShortcut;
- mExtraOffset = createShortcut ? 0 : 1;
+ String curTitle, boolean createShortcut, boolean mostVisited) {
+ mNeedsOffset = !(createShortcut || mostVisited);
+ mMostVisited = mostVisited;
+ mExtraOffset = mNeedsOffset ? 1 : 0;
mBookmarksPage = b;
mCurrentPage = b.getResources().getString(R.string.current_page)
+ curPage;
@@ -85,9 +84,14 @@ class BrowserBookmarksAdapter extends BaseAdapter {
mContentResolver = b.getContentResolver();
mGridMode = false;
+ String whereClause;
// FIXME: Should have a default sort order that the user selects.
- String whereClause = Browser.BookmarkColumns.BOOKMARK + " != 0";
String orderBy = Browser.BookmarkColumns.VISITS + " DESC";
+ if (mostVisited) {
+ whereClause = Browser.BookmarkColumns.VISITS + " != 0";
+ } else {
+ whereClause = Browser.BookmarkColumns.BOOKMARK + " != 0";
+ }
mCursor = b.managedQuery(Browser.BOOKMARKS_URI,
Browser.HISTORY_PROJECTION, whereClause, null, orderBy);
mCursor.registerContentObserver(new ChangeObserver());
@@ -264,7 +268,7 @@ class BrowserBookmarksAdapter extends BaseAdapter {
private static void updateBookmarkFavicon(ContentResolver cr,
String originalUrl, String url, Bitmap favicon) {
- final Cursor c = queryBookmarksForUrl(cr, originalUrl, url);
+ final Cursor c = queryBookmarksForUrl(cr, originalUrl, url, true);
if (c == null) {
return;
}
@@ -285,7 +289,7 @@ class BrowserBookmarksAdapter extends BaseAdapter {
}
/* package */ static Cursor queryBookmarksForUrl(ContentResolver cr,
- String originalUrl, String url) {
+ String originalUrl, String url, boolean onlyBookmarks) {
if (cr == null || url == null) {
return null;
}
@@ -309,11 +313,13 @@ class BrowserBookmarksAdapter extends BaseAdapter {
// http://www.google.com/m?some_query)
final String[] selArgs = new String[] {
originalUrlNoQuery, urlNoQuery, originalUrl, url };
- final String where = "(" + BookmarkColumns.URL + " == ? OR "
+ String where = BookmarkColumns.URL + " == ? OR "
+ BookmarkColumns.URL + " == ? OR "
+ BookmarkColumns.URL + " GLOB ? || '*' OR "
- + BookmarkColumns.URL + " GLOB ? || '*') AND "
- + BookmarkColumns.BOOKMARK + " == 1";
+ + BookmarkColumns.URL + " GLOB ? || '*'";
+ if (onlyBookmarks) {
+ where = "(" + where + ") AND " + BookmarkColumns.BOOKMARK + " == 1";
+ }
final String[] projection =
new String[] { Browser.BookmarkColumns._ID };
return cr.query(Browser.BOOKMARKS_URI, projection, where, selArgs,
@@ -411,7 +417,7 @@ class BrowserBookmarksAdapter extends BaseAdapter {
ImageView thumb = (ImageView) convertView.findViewById(R.id.thumb);
TextView tv = (TextView) convertView.findViewById(R.id.label);
- if (0 == position && !mCreateShortcut) {
+ if (0 == position && mNeedsOffset) {
// This is to create a bookmark for the current page.
holder.setVisibility(View.VISIBLE);
tv.setText(mCurrentTitle);
@@ -436,7 +442,7 @@ class BrowserBookmarksAdapter extends BaseAdapter {
return convertView;
}
- if (position == 0 && !mCreateShortcut) {
+ if (position == 0 && mNeedsOffset) {
AddNewBookmark b;
if (convertView instanceof AddNewBookmark) {
b = (AddNewBookmark) convertView;
@@ -446,10 +452,20 @@ class BrowserBookmarksAdapter extends BaseAdapter {
b.setUrl(mCurrentPage);
return b;
}
- if (convertView == null || !(convertView instanceof BookmarkItem)) {
- convertView = new BookmarkItem(mBookmarksPage);
+ if (mMostVisited) {
+ if (convertView == null || !(convertView instanceof HistoryItem)) {
+ convertView = new HistoryItem(mBookmarksPage);
+ }
+ } else {
+ if (convertView == null || !(convertView instanceof BookmarkItem)) {
+ convertView = new BookmarkItem(mBookmarksPage);
+ }
+ }
+ bind((BookmarkItem) convertView, position);
+ if (mMostVisited) {
+ ((HistoryItem) convertView).setIsBookmark(
+ getIsBookmark(position));
}
- bind((BookmarkItem)convertView, position);
return convertView;
}
@@ -491,6 +507,17 @@ class BrowserBookmarksAdapter extends BaseAdapter {
}
/**
+ * Return whether or not this item represents a bookmarked site.
+ */
+ public boolean getIsBookmark(int position) {
+ if (position < mExtraOffset || position > mCount) {
+ return false;
+ }
+ mCursor.moveToPosition(position - mExtraOffset);
+ return (1 == mCursor.getInt(Browser.HISTORY_PROJECTION_BOOKMARK_INDEX));
+ }
+
+ /**
* Private helper function to return the title or url.
*/
private String getString(int cursorIndex, int position) {
diff --git a/src/com/android/browser/BrowserBookmarksPage.java b/src/com/android/browser/BrowserBookmarksPage.java
index 0fc264302..caadfdda8 100644
--- a/src/com/android/browser/BrowserBookmarksPage.java
+++ b/src/com/android/browser/BrowserBookmarksPage.java
@@ -45,6 +45,8 @@ import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
+import android.view.ViewGroup.LayoutParams;
+import android.view.ViewStub;
import android.view.ContextMenu.ContextMenuInfo;
import android.widget.AdapterView;
import android.widget.GridView;
@@ -67,6 +69,8 @@ public class BrowserBookmarksPage extends Activity implements
private AddNewBookmark mAddHeader;
private boolean mCanceled = false;
private boolean mCreateShortcut;
+ private boolean mMostVisited;
+ private View mEmptyView;
// XXX: There is no public string defining this intent so if Home changes
// the value, we have to update this string.
private static final String INSTALL_SHORTCUT =
@@ -105,12 +109,18 @@ public class BrowserBookmarksPage extends Activity implements
sendBroadcast(send);
break;
case R.id.delete_context_menu_id:
- displayRemoveBookmarkDialog(i.position);
+ if (mMostVisited) {
+ Browser.deleteFromHistory(getContentResolver(),
+ getUrl(i.position));
+ refreshList();
+ } else {
+ displayRemoveBookmarkDialog(i.position);
+ }
break;
case R.id.new_window_context_menu_id:
openInNewWindow(i.position);
break;
- case R.id.send_context_menu_id:
+ case R.id.share_link_context_menu_id:
Browser.sendString(BrowserBookmarksPage.this, getUrl(i.position));
break;
case R.id.copy_url_context_menu_id:
@@ -122,6 +132,19 @@ public class BrowserBookmarksPage extends Activity implements
Toast.makeText(this, R.string.homepage_set,
Toast.LENGTH_LONG).show();
break;
+ // Only for the Most visited page
+ case R.id.save_to_bookmarks_menu_id:
+ HistoryItem historyItem = ((HistoryItem) i.targetView);
+ // If the site is bookmarked, the item becomes remove from
+ // bookmarks.
+ if (historyItem.isBookmark()) {
+ Bookmarks.removeFromBookmarks(this, getContentResolver(),
+ historyItem.getUrl());
+ } else {
+ Browser.saveBookmark(this, historyItem.getName(),
+ historyItem.getUrl());
+ }
+ break;
default:
return super.onContextItemSelected(item);
}
@@ -135,9 +158,13 @@ public class BrowserBookmarksPage extends Activity implements
(AdapterView.AdapterContextMenuInfo) menuInfo;
MenuInflater inflater = getMenuInflater();
- inflater.inflate(R.menu.bookmarkscontext, menu);
+ if (mMostVisited) {
+ inflater.inflate(R.menu.historycontext, menu);
+ } else {
+ inflater.inflate(R.menu.bookmarkscontext, menu);
+ }
- if (0 == i.position) {
+ if (0 == i.position && !mMostVisited) {
menu.setGroupVisible(R.id.CONTEXT_MENU, false);
if (mAddHeader == null) {
mAddHeader = new AddNewBookmark(BrowserBookmarksPage.this);
@@ -149,7 +176,17 @@ public class BrowserBookmarksPage extends Activity implements
menu.setHeaderView(mAddHeader);
return;
}
- menu.setGroupVisible(R.id.ADD_MENU, false);
+ if (mMostVisited) {
+ if ((!mGridMode && ((HistoryItem) i.targetView).isBookmark())
+ || mBookmarksAdapter.getIsBookmark(i.position)) {
+ MenuItem item = menu.findItem(
+ R.id.save_to_bookmarks_menu_id);
+ item.setTitle(R.string.remove_from_bookmarks);
+ }
+ } else {
+ // The historycontext menu has no ADD_MENU group.
+ menu.setGroupVisible(R.id.ADD_MENU, false);
+ }
if (mMaxTabsOpen) {
menu.findItem(R.id.new_window_context_menu_id).setVisible(
false);
@@ -181,11 +218,18 @@ public class BrowserBookmarksPage extends Activity implements
mCreateShortcut = true;
}
mMaxTabsOpen = getIntent().getBooleanExtra("maxTabsOpen", false);
+ mMostVisited = getIntent().getBooleanExtra("mostVisited", false);
- setTitle(R.string.browser_bookmarks_page_bookmarks_text);
+ if (mCreateShortcut) {
+ setTitle(R.string.browser_bookmarks_page_bookmarks_text);
+ }
mBookmarksAdapter = new BrowserBookmarksAdapter(this,
getIntent().getStringExtra("url"),
- getIntent().getStringExtra("title"), mCreateShortcut);
+ getIntent().getStringExtra("title"), mCreateShortcut,
+ mMostVisited);
+ if (mMostVisited) {
+ mEmptyView = new ViewStub(this, R.layout.empty_history);
+ }
switchViewMode(true);
}
@@ -209,6 +253,9 @@ public class BrowserBookmarksPage extends Activity implements
mGridPage.setFocusableInTouchMode(true);
mGridPage.setSelector(android.R.drawable.gallery_thumb);
mGridPage.setVerticalSpacing(10);
+ if (mMostVisited) {
+ mGridPage.setEmptyView(mEmptyView);
+ }
if (!mCreateShortcut) {
mGridPage.setOnCreateContextMenuListener(this);
}
@@ -226,6 +273,9 @@ public class BrowserBookmarksPage extends Activity implements
listView.setDrawSelectorOnTop(false);
listView.setVerticalScrollBarEnabled(true);
listView.setOnItemClickListener(mListener);
+ if (mMostVisited) {
+ listView.setEmptyView(mEmptyView);
+ }
if (!mCreateShortcut) {
listView.setOnCreateContextMenuListener(this);
@@ -233,6 +283,10 @@ public class BrowserBookmarksPage extends Activity implements
}
setContentView(mVerticalList);
}
+ if (mMostVisited) {
+ addContentView(mEmptyView, new LayoutParams(
+ LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
+ }
}
private static final int SAVE_CURRENT_PAGE = 1000;
@@ -254,7 +308,7 @@ public class BrowserBookmarksPage extends Activity implements
return;
}
if (!mCreateShortcut) {
- if (0 == position) {
+ if (0 == position && !mMostVisited) {
// XXX: Work-around for a framework issue.
mHandler.sendEmptyMessage(SAVE_CURRENT_PAGE);
} else {
@@ -366,6 +420,9 @@ public class BrowserBookmarksPage extends Activity implements
if (!mCreateShortcut) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.bookmarks, menu);
+ // Most visited page does not have an option to bookmark the last
+ // viewed page.
+ menu.findItem(R.id.new_context_menu_id).setVisible(!mMostVisited);
return true;
}
return result;
@@ -373,6 +430,10 @@ public class BrowserBookmarksPage extends Activity implements
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
+ if (mBookmarksAdapter.getCount() == 0) {
+ // No need to show the menu if there are no items.
+ return false;
+ }
menu.findItem(R.id.switch_mode_menu_id).setTitle(
mGridMode ? R.string.switch_to_list
: R.string.switch_to_thumbnails);
diff --git a/src/com/android/browser/BrowserHistoryPage.java b/src/com/android/browser/BrowserHistoryPage.java
index 335d8fe0d..cb8340e81 100644
--- a/src/com/android/browser/BrowserHistoryPage.java
+++ b/src/com/android/browser/BrowserHistoryPage.java
@@ -236,7 +236,7 @@ public class BrowserHistoryPage extends ExpandableListActivity {
case R.id.share_link_context_menu_id:
Browser.sendString(this, url);
return true;
- case R.id.copy_context_menu_id:
+ case R.id.copy_url_context_menu_id:
copy(url);
return true;
case R.id.delete_context_menu_id:
diff --git a/src/com/android/browser/CombinedBookmarkHistoryActivity.java b/src/com/android/browser/CombinedBookmarkHistoryActivity.java
index 26fd1eea8..7162c88c3 100644
--- a/src/com/android/browser/CombinedBookmarkHistoryActivity.java
+++ b/src/com/android/browser/CombinedBookmarkHistoryActivity.java
@@ -91,8 +91,12 @@ public class CombinedBookmarkHistoryActivity extends TabActivity
bookmarksIntent.putExtras(extras);
createTab(bookmarksIntent, R.string.tab_bookmarks, BOOKMARKS_TAB);
- Intent visitedIntent = new Intent(this, MostVisitedActivity.class);
- visitedIntent.putExtras(extras);
+ Intent visitedIntent = new Intent(this, BrowserBookmarksPage.class);
+ // Need to copy extras so the bookmarks activity and this one will be
+ // different
+ Bundle visitedExtras = new Bundle(extras);
+ visitedExtras.putBoolean("mostVisited", true);
+ visitedIntent.putExtras(visitedExtras);
createTab(visitedIntent, R.string.tab_most_visited, VISITED_TAB);
Intent historyIntent = new Intent(this, BrowserHistoryPage.class);