Updates to add bookmark.
Bug:2953515
Create an empty view for the list showing sub folders.
Update the text in the new folder button.
When the user changes bread crumbs, cancel folder naming.
Change-Id: I8c3f33b5b3bb6e07cd0fd421199eb905f40e45f4
diff --git a/res/layout/browser_add_bookmark.xml b/res/layout/browser_add_bookmark.xml
index aa8e1a2..7e518dd 100644
--- a/res/layout/browser_add_bookmark.xml
+++ b/res/layout/browser_add_bookmark.xml
@@ -39,7 +39,7 @@
android:layout_alignParentRight="true"
android:layout_alignBaseline="@+id/crumbs"
android:drawableLeft="@drawable/ic_add_string"
- android:text="@string/add_new_folder"
+ android:text="@string/new_folder"
android:visibility="gone"
android:textAppearance="?android:attr/textAppearanceMedium" />
<ImageView android:id="@+id/add_divider"
@@ -164,6 +164,16 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
+ <TextView
+ android:id="@+id/empty"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:visibility="gone"
+ android:layout_marginLeft="16dip"
+ android:layout_marginTop="16dip"
+ android:text="@string/no_subfolders"
+ android:textStyle="italic"
+ android:textAppearance="?android:attr/textAppearanceMedium" />
<EditText
android:id="@+id/folder_namer"
android:layout_marginLeft="16dip"
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 3e7c644..c51bc41 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -125,11 +125,12 @@
<string name="location">Address</string>
<!-- Field label in Bookmark dialog box: refers to the folder in which to save the bookmark -->
<string name="containing_folder">Add to</string>
- <!-- Button text for a button that allows the user to add a new folder. Also used as the title of the add bookmarks dialog on the page
- that allows choosing the folder to place it in. -->
- <string name="add_new_folder">Add new folder</string>
- <!-- Default name for a new folder -->
+ <!-- Default name for a new folder and label for a button that allows the user to create a new folder
+ in the add bookmark dialog -->
<string name="new_folder">New folder</string>
+ <!-- Label stating that the currently open folder has no subfolders
+ in the add bookmark dialog [CHAR-LIMIT=none]-->
+ <string name="no_subfolders">No subfolders</string>
<!-- Field label in Bookmark dialog box: title that the user wishes to use for the bookmark -->
<string name="name">Label</string>
<!-- Initial value in Location field in Bookmark dialog box -->
diff --git a/src/com/android/browser/AddBookmarkPage.java b/src/com/android/browser/AddBookmarkPage.java
index d0679e1..9e5b349 100644
--- a/src/com/android/browser/AddBookmarkPage.java
+++ b/src/com/android/browser/AddBookmarkPage.java
@@ -97,6 +97,7 @@
private BreadCrumbView mCrumbs;
private TextView mFakeTitle;
private View mCrumbHolder;
+ private ListView mListView;
private static class Folder {
String Name;
@@ -128,6 +129,9 @@
loader.setUri(uri);
loader.forceLoad();
updateVisible();
+ if (mFolderNamer.getVisibility() == View.VISIBLE) {
+ completeOrCancelFolderNaming(true);
+ }
}
/**
@@ -169,7 +173,7 @@
if (actionId == EditorInfo.IME_NULL) {
// Only want to do this once.
if (event.getAction() == KeyEvent.ACTION_UP) {
- completeFolderNaming();
+ completeOrCancelFolderNaming(false);
}
}
}
@@ -200,7 +204,7 @@
if (mFolderSelector.getVisibility() == View.VISIBLE) {
// We are showing the folder selector.
if (mFolderNamer.getVisibility() == View.VISIBLE) {
- completeFolderNaming();
+ completeOrCancelFolderNaming(false);
} else {
// User has selected a folder. Go back to the opening page
switchToDefaultView(true);
@@ -210,9 +214,7 @@
}
} else if (v == mCancelButton) {
if (mFolderNamer.getVisibility() == View.VISIBLE) {
- mFolderNamer.setVisibility(View.GONE);
- mAddNewFolder.setVisibility(View.VISIBLE);
- mAddSeparator.setVisibility(View.VISIBLE);
+ completeOrCancelFolderNaming(true);
} else if (mFolderSelector.getVisibility() == View.VISIBLE) {
switchToDefaultView(false);
} else {
@@ -224,6 +226,7 @@
mFolderNamer.setVisibility(View.VISIBLE);
mFolderNamer.setText(R.string.new_folder);
mFolderNamer.requestFocus();
+ updateList();
mAddNewFolder.setVisibility(View.GONE);
mAddSeparator.setVisibility(View.GONE);
getInputMethodManager().showSoftInput(mFolderNamer,
@@ -231,17 +234,27 @@
}
}
- private void completeFolderNaming() {
- if (!TextUtils.isEmpty(mFolderNamer.getText())) {
+ // Refresh the ListView to hide or show the empty view, as necessary.
+ // Should be called after mFolderNamer is shown or hidden.
+ private void updateList() {
+ if (mAdapter.getCount() == 0) {
+ // XXX: Is there a better way to refresh the ListView?
+ mListView.setAdapter(mAdapter);
+ }
+ }
+
+ private void completeOrCancelFolderNaming(boolean cancel) {
+ if (!cancel && !TextUtils.isEmpty(mFolderNamer.getText())) {
String name = mFolderNamer.getText().toString();
long id = addFolderToCurrent(mFolderNamer.getText().toString());
descendInto(name, id);
- mFolderNamer.setVisibility(View.GONE);
- mAddNewFolder.setVisibility(View.VISIBLE);
- mAddSeparator.setVisibility(View.VISIBLE);
- getInputMethodManager().hideSoftInputFromWindow(
- mFolderNamer.getWindowToken(), 0);
}
+ mFolderNamer.setVisibility(View.GONE);
+ mAddNewFolder.setVisibility(View.VISIBLE);
+ mAddSeparator.setVisibility(View.VISIBLE);
+ getInputMethodManager().hideSoftInputFromWindow(
+ mFolderNamer.getWindowToken(), 0);
+ updateList();
}
private long addFolderToCurrent(String name) {
@@ -398,6 +411,12 @@
getDrawable(android.R.drawable.list_selector_background));
return view;
}
+
+ @Override
+ public boolean isEmpty() {
+ // Do not show the empty view if the user is creating a new folder.
+ return super.isEmpty() && mFolderNamer.getVisibility() == View.GONE;
+ }
}
protected void onCreate(Bundle icicle) {
@@ -484,9 +503,11 @@
mCrumbHolder = findViewById(R.id.crumb_holder);
mAdapter = new FolderAdapter(this);
- ListView list = (ListView) findViewById(R.id.list);
- list.setAdapter(mAdapter);
- list.setOnItemClickListener(this);
+ mListView = (ListView) findViewById(R.id.list);
+ View empty = findViewById(R.id.empty);
+ mListView.setEmptyView(empty);
+ mListView.setAdapter(mAdapter);
+ mListView.setOnItemClickListener(this);
LoaderManager manager = getLoaderManager();
if (mCurrentFolder != BrowserProvider2.FIXED_ID_ROOT) {
// Find all the folders