mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-15 14:25:52 +00:00
Bug 783312 - Show the awesomescreen as a way to select sites for pinning. r=mfinkle
This commit is contained in:
parent
39bc9ef372
commit
85191e56e5
@ -7,10 +7,13 @@ package org.mozilla.gecko;
|
||||
|
||||
import org.mozilla.gecko.db.BrowserContract.Thumbnails;
|
||||
import org.mozilla.gecko.db.BrowserContract.Bookmarks;
|
||||
import org.mozilla.gecko.db.BrowserContract.Combined;
|
||||
import org.mozilla.gecko.db.BrowserDB;
|
||||
import org.mozilla.gecko.db.BrowserDB.URLColumns;
|
||||
import org.mozilla.gecko.db.BrowserDB.PinnedSite;
|
||||
import org.mozilla.gecko.sync.setup.SyncAccounts;
|
||||
import org.mozilla.gecko.sync.setup.activities.SetupSyncActivity;
|
||||
import org.mozilla.gecko.util.ActivityResultHandler;
|
||||
import org.mozilla.gecko.util.GeckoAsyncTask;
|
||||
|
||||
import org.json.JSONArray;
|
||||
@ -162,6 +165,12 @@ public class AboutHomeContent extends ScrollView
|
||||
TopSitesViewHolder holder = (TopSitesViewHolder) v.getTag();
|
||||
String spec = holder.url;
|
||||
|
||||
// If we don't have a url, this must be an empty row. Show the edit dialog box
|
||||
if (TextUtils.isEmpty(spec)) {
|
||||
editSite(spec, position);
|
||||
return;
|
||||
}
|
||||
|
||||
if (mUriLoadCallback != null)
|
||||
mUriLoadCallback.callback(spec);
|
||||
}
|
||||
@ -839,4 +848,38 @@ public class AboutHomeContent extends ScrollView
|
||||
return buildView(url, title, convertView);
|
||||
}
|
||||
}
|
||||
|
||||
// Edit the site at position. Provide a url to start editing with
|
||||
public void editSite(String url, final int position) {
|
||||
Intent intent = new Intent(mContext, AwesomeBar.class);
|
||||
intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
|
||||
intent.putExtra(AwesomeBar.TARGET_KEY, AwesomeBar.Target.PICK_SITE.toString());
|
||||
if (url != null && !TextUtils.isEmpty(url)) {
|
||||
intent.putExtra(AwesomeBar.CURRENT_URL_KEY, url);
|
||||
}
|
||||
|
||||
int requestCode = GeckoAppShell.sActivityHelper.makeRequestCode(new ActivityResultHandler() {
|
||||
public void onActivityResult(int resultCode, Intent data) {
|
||||
final String title = data.getStringExtra(AwesomeBar.TITLE_KEY);
|
||||
final String url = data.getStringExtra(AwesomeBar.URL_KEY);
|
||||
|
||||
// update the database on a background thread
|
||||
(new GeckoAsyncTask<Void, Void, Void>(GeckoApp.mAppContext, GeckoAppShell.getHandler()) {
|
||||
@Override
|
||||
public Void doInBackground(Void... params) {
|
||||
final ContentResolver resolver = mActivity.getContentResolver();
|
||||
BrowserDB.pinSite(resolver, url, (title == null ? url : title), position);
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPostExecute(Void v) {
|
||||
update(EnumSet.of(UpdateFlags.TOP_SITES));
|
||||
}
|
||||
}).execute();
|
||||
}
|
||||
});
|
||||
|
||||
mActivity.startActivityForResult(intent, requestCode);
|
||||
}
|
||||
}
|
||||
|
@ -51,6 +51,10 @@ class ActivityHandlerHelper {
|
||||
return mActivityResultHandlerMap.put(mAwesomebarResultHandler);
|
||||
}
|
||||
|
||||
int makeRequestCode(ActivityResultHandler aHandler) {
|
||||
return mActivityResultHandlerMap.put(aHandler);
|
||||
}
|
||||
|
||||
private int addIntentActivitiesToList(Context context, Intent intent, ArrayList<PromptService.PromptListItem> items, ArrayList<Intent> aIntents) {
|
||||
PackageManager pm = context.getPackageManager();
|
||||
List<ResolveInfo> lri = pm.queryIntentActivityOptions(GeckoApp.mAppContext.getComponentName(), null, intent, 0);
|
||||
|
@ -60,9 +60,10 @@ public class AwesomeBar extends GeckoActivity {
|
||||
static final String CURRENT_URL_KEY = "currenturl";
|
||||
static final String TARGET_KEY = "target";
|
||||
static final String SEARCH_KEY = "search";
|
||||
static final String TITLE_KEY = "title";
|
||||
static final String USER_ENTERED_KEY = "user_entered";
|
||||
static final String READING_LIST_KEY = "reading_list";
|
||||
public static enum Target { NEW_TAB, CURRENT_TAB };
|
||||
public static enum Target { NEW_TAB, CURRENT_TAB, PICK_SITE };
|
||||
|
||||
private String mTarget;
|
||||
private AwesomeBarTabs mAwesomeTabs;
|
||||
@ -91,8 +92,8 @@ public class AwesomeBar extends GeckoActivity {
|
||||
|
||||
mAwesomeTabs = (AwesomeBarTabs) findViewById(R.id.awesomebar_tabs);
|
||||
mAwesomeTabs.setOnUrlOpenListener(new AwesomeBarTabs.OnUrlOpenListener() {
|
||||
public void onUrlOpen(String url) {
|
||||
openUrlAndFinish(url);
|
||||
public void onUrlOpen(String url, String title) {
|
||||
openUrlAndFinish(url, title, false);
|
||||
}
|
||||
|
||||
public void onSearch(String engine, String text) {
|
||||
@ -347,8 +348,16 @@ public class AwesomeBar extends GeckoActivity {
|
||||
}
|
||||
|
||||
private void openUrlAndFinish(String url) {
|
||||
openUrlAndFinish(url, null, false);
|
||||
}
|
||||
|
||||
private void openUrlAndFinish(String url, String title, boolean userEntered) {
|
||||
Intent resultIntent = new Intent();
|
||||
resultIntent.putExtra(URL_KEY, url);
|
||||
if (title != null && !TextUtils.isEmpty(title))
|
||||
resultIntent.putExtra(TITLE_KEY, title);
|
||||
if (userEntered)
|
||||
resultIntent.putExtra(USER_ENTERED_KEY, userEntered);
|
||||
resultIntent.putExtra(TARGET_KEY, mTarget);
|
||||
finishWithResult(resultIntent);
|
||||
}
|
||||
@ -371,11 +380,7 @@ public class AwesomeBar extends GeckoActivity {
|
||||
url = keywordUrl.replace("%s", search);
|
||||
}
|
||||
|
||||
Intent resultIntent = new Intent();
|
||||
resultIntent.putExtra(URL_KEY, url);
|
||||
resultIntent.putExtra(TARGET_KEY, mTarget);
|
||||
resultIntent.putExtra(USER_ENTERED_KEY, true);
|
||||
finishWithResult(resultIntent);
|
||||
openUrlAndFinish(url, "", true);
|
||||
}
|
||||
|
||||
private void openSearchAndFinish(String url, String engine) {
|
||||
|
@ -44,7 +44,7 @@ public class AwesomeBarTabs extends TabHost
|
||||
private static final int MAX_RESULTS = 100;
|
||||
|
||||
public interface OnUrlOpenListener {
|
||||
public void onUrlOpen(String url);
|
||||
public void onUrlOpen(String url, String title);
|
||||
public void onSearch(String engine, String text);
|
||||
public void onEditSuggestion(String suggestion);
|
||||
}
|
||||
|
@ -249,7 +249,8 @@ public class AllPagesTab extends AwesomeBarTab implements GeckoEventListener {
|
||||
return;
|
||||
|
||||
String url = mCursor.getString(mCursor.getColumnIndexOrThrow(URLColumns.URL));
|
||||
listener.onUrlOpen(url);
|
||||
String title = mCursor.getString(mCursor.getColumnIndexOrThrow(URLColumns.TITLE));
|
||||
listener.onUrlOpen(url, title);
|
||||
}
|
||||
|
||||
public ContextMenuSubject getSubject() {
|
||||
@ -460,7 +461,7 @@ public class AllPagesTab extends AwesomeBarTab implements GeckoEventListener {
|
||||
// pattern, go to that URL. Otherwise, do a search for
|
||||
// the term.
|
||||
if (v != viewHolder.userEnteredView && !StringUtils.isSearchQuery(suggestion)) {
|
||||
listener.onUrlOpen(suggestion);
|
||||
listener.onUrlOpen(suggestion, null);
|
||||
} else {
|
||||
listener.onSearch(engine.name, suggestion);
|
||||
}
|
||||
|
@ -192,11 +192,12 @@ public class BookmarksTab extends AwesomeBarTab {
|
||||
}
|
||||
|
||||
String url = cursor.getString(cursor.getColumnIndexOrThrow(URLColumns.URL));
|
||||
String title = cursor.getString(cursor.getColumnIndexOrThrow(URLColumns.TITLE));
|
||||
long parentId = cursor.getLong(cursor.getColumnIndexOrThrow(Bookmarks.PARENT));
|
||||
if (parentId == Bookmarks.FIXED_READING_LIST_ID) {
|
||||
url = ReaderModeUtils.getAboutReaderForUrl(url, true);
|
||||
}
|
||||
listener.onUrlOpen(url);
|
||||
listener.onUrlOpen(url, title);
|
||||
}
|
||||
|
||||
private class BookmarksListAdapter extends SimpleCursorAdapter {
|
||||
|
@ -377,9 +377,10 @@ public class HistoryTab extends AwesomeBarTab {
|
||||
Map<String,Object> historyItem = (Map<String,Object>) adapter.getChild(groupPosition, childPosition);
|
||||
|
||||
String url = (String) historyItem.get(URLColumns.URL);
|
||||
String title = (String) historyItem.get(URLColumns.TITLE);
|
||||
AwesomeBarTabs.OnUrlOpenListener listener = getUrlListener();
|
||||
if (!TextUtils.isEmpty(url) && listener != null)
|
||||
listener.onUrlOpen(url);
|
||||
listener.onUrlOpen(url, title);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -277,7 +277,7 @@ public class BrowserDB {
|
||||
return sDb.getPinnedSites(cr, limit);
|
||||
}
|
||||
|
||||
private static class PinnedSite {
|
||||
public static class PinnedSite {
|
||||
public String title = "";
|
||||
public String url = "";
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user