Adds a cancel button to ShortcutActivity dialog
Bug: 3167402
Adds a cancel button to the ShortcutActivity when it is being
shown as a dialog (when large)
Change-Id: I6e47db8770cd18f69d534c361ff8fc90128e8dad
diff --git a/res/layout-xlarge/pick_bookmark.xml b/res/layout-xlarge/pick_bookmark.xml
new file mode 100644
index 0000000..b35dbb9
--- /dev/null
+++ b/res/layout-xlarge/pick_bookmark.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2010 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.
+-->
+<LinearLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="vertical"
+ android:divider="?android:attr/dividerHorizontal"
+ android:showDividers="middle"
+ android:dividerPadding="16dip">
+
+ <fragment class="com.android.browser.BrowserBookmarksPage"
+ android:id="@+id/bookmarks"
+ android:layout_width="match_parent"
+ android:layout_height="0dip"
+ android:layout_weight="1"/>
+
+ <Button android:id="@+id/cancel"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:text="@android:string/cancel"
+ style="?android:attr/buttonBarButtonStyle" />
+
+</LinearLayout>
diff --git a/res/layout/pick_bookmark.xml b/res/layout/pick_bookmark.xml
new file mode 100644
index 0000000..9636c4a
--- /dev/null
+++ b/res/layout/pick_bookmark.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2010 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.
+-->
+<FrameLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
+
+ <fragment class="com.android.browser.BrowserBookmarksPage"
+ android:id="@+id/bookmarks"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent" />
+
+</FrameLayout>
diff --git a/src/com/android/browser/BreadCrumbView.java b/src/com/android/browser/BreadCrumbView.java
index e4940e9..643bfc7 100644
--- a/src/com/android/browser/BreadCrumbView.java
+++ b/src/com/android/browser/BreadCrumbView.java
@@ -254,7 +254,7 @@
}
}
- private Crumb getTopCrumb() {
+ Crumb getTopCrumb() {
Crumb crumb = null;
if (mCrumbs.size() > 0) {
crumb = mCrumbs.get(mCrumbs.size() - 1);
diff --git a/src/com/android/browser/BrowserBookmarksPage.java b/src/com/android/browser/BrowserBookmarksPage.java
index 1410ce8..ccacee8 100644
--- a/src/com/android/browser/BrowserBookmarksPage.java
+++ b/src/com/android/browser/BrowserBookmarksPage.java
@@ -16,6 +16,8 @@
package com.android.browser;
+import com.android.browser.BreadCrumbView.Crumb;
+
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Fragment;
@@ -698,14 +700,18 @@
}
public boolean onBackPressed() {
- if (mCrumbs != null &&
- mCrumbs.size() > 0) {
+ 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;
}
diff --git a/src/com/android/browser/ShortcutActivity.java b/src/com/android/browser/ShortcutActivity.java
index 786c6e1..33e192a 100644
--- a/src/com/android/browser/ShortcutActivity.java
+++ b/src/com/android/browser/ShortcutActivity.java
@@ -21,9 +21,11 @@
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
+import android.view.View;
+import android.view.View.OnClickListener;
public class ShortcutActivity extends Activity
- implements BookmarksPageCallbacks {
+ implements BookmarksPageCallbacks, OnClickListener {
private BrowserBookmarksPage mBookmarks;
@@ -32,14 +34,16 @@
super.onCreate(savedInstanceState);
// TODO: Is this needed?
setDefaultKeyMode(DEFAULT_KEYS_SEARCH_LOCAL);
- mBookmarks = BrowserBookmarksPage.newInstance(this, null, null);
+ setContentView(R.layout.pick_bookmark);
+ mBookmarks = (BrowserBookmarksPage) getFragmentManager()
+ .findFragmentById(R.id.bookmarks);
mBookmarks.setEnableContextMenu(false);
mBookmarks.setBreadCrumbMaxVisible(2);
mBookmarks.setBreadCrumbUseBackButton(true);
- getFragmentManager()
- .openTransaction()
- .add(android.R.id.content, mBookmarks)
- .commit();
+ View cancel = findViewById(R.id.cancel);
+ if (cancel != null) {
+ cancel.setOnClickListener(this);
+ }
}
// BookmarksPageCallbacks
@@ -70,4 +74,13 @@
@Override
public void onFolderChanged(int level, Uri uri) {
}
+
+ @Override
+ public void onClick(View v) {
+ switch (v.getId()) {
+ case R.id.cancel:
+ finish();
+ break;
+ }
+ }
}