Merge "Update visibility of the stack dropdown list after the search view is collapsed." into mnc-dev

This commit is contained in:
Daichi Hirono
2015-06-11 05:31:38 +00:00
committed by Android (Google) Code Review
5 changed files with 110 additions and 11 deletions

View File

@@ -19,7 +19,7 @@
android:layout_height="match_parent"
android:orientation="vertical">
<Toolbar
<com.android.documentsui.DocumentsToolBar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?android:attr/actionBarSize"
@@ -34,7 +34,7 @@
android:layout_marginStart="4dp"
android:overlapAnchor="true" />
</Toolbar>
</com.android.documentsui.DocumentsToolBar>
<LinearLayout
android:layout_width="match_parent"

View File

@@ -24,7 +24,7 @@
android:layout_height="match_parent"
android:orientation="vertical">
<Toolbar
<com.android.documentsui.DocumentsToolBar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?android:attr/actionBarSize"
@@ -39,7 +39,7 @@
android:layout_marginStart="4dp"
android:overlapAnchor="true" />
</Toolbar>
</com.android.documentsui.DocumentsToolBar>
<com.android.documentsui.DirectoryContainerView
android:id="@+id/container_directory"

View File

@@ -101,7 +101,7 @@ abstract class BaseActivity extends Activity {
boolean showMenu = super.onCreateOptionsMenu(menu);
getMenuInflater().inflate(R.menu.activity, menu);
mSearchManager.install(menu.findItem(R.id.menu_search));
mSearchManager.install((DocumentsToolBar) findViewById(R.id.toolbar));
return showMenu;
}
@@ -666,20 +666,24 @@ abstract class BaseActivity extends Activity {
* Facade over the various search parts in the menu.
*/
final class SearchManager implements
SearchView.OnCloseListener, OnActionExpandListener, OnQueryTextListener {
SearchView.OnCloseListener, OnActionExpandListener, OnQueryTextListener,
DocumentsToolBar.OnActionViewCollapsedListener {
private boolean mSearchExpanded;
private boolean mIgnoreNextClose;
private boolean mIgnoreNextCollapse;
private DocumentsToolBar mActionBar;
private MenuItem mMenu;
private SearchView mView;
public void install(MenuItem menu) {
assert(mMenu == null);
mMenu = menu;
mView = (SearchView) menu.getActionView();
public void install(DocumentsToolBar actionBar) {
assert(mActionBar == null);
mActionBar = actionBar;
mMenu = actionBar.getSearchMenu();
mView = (SearchView) mMenu.getActionView();
mActionBar.setOnActionViewCollapsedListener(this);
mMenu.setOnActionExpandListener(this);
mView.setOnQueryTextListener(this);
mView.setOnCloseListener(this);
@@ -730,6 +734,19 @@ abstract class BaseActivity extends Activity {
}
}
/**
* Cancels current search operation.
* @return True if it cancels search. False if it does not operate
* search currently.
*/
boolean cancelSearch() {
if (mActionBar.hasExpandedActionView()) {
mActionBar.collapseActionView();
return true;
}
return false;
}
boolean isSearching() {
return getDisplayState().currentSearch != null;
}
@@ -765,7 +782,6 @@ abstract class BaseActivity extends Activity {
mIgnoreNextCollapse = false;
return true;
}
getDisplayState().currentSearch = null;
onCurrentDirectoryChanged(ANIM_NONE);
return true;
@@ -784,5 +800,10 @@ abstract class BaseActivity extends Activity {
public boolean onQueryTextChange(String newText) {
return false;
}
@Override
public void onActionViewCollapsed() {
updateActionBar();
}
}
}

View File

@@ -31,6 +31,7 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import android.app.ActionBar;
import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentManager;
@@ -508,6 +509,11 @@ public class DocumentsActivity extends BaseActivity {
@Override
public void onBackPressed() {
// While action bar is expanded, the state stack UI is hidden.
if (mSearchManager.cancelSearch()) {
return;
}
if (!mState.stackTouched) {
super.onBackPressed();
return;

View File

@@ -0,0 +1,72 @@
/*
* Copyright (C) 2015 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.
*/
package com.android.documentsui;
import android.content.Context;
import android.util.AttributeSet;
import android.view.MenuItem;
import android.widget.Toolbar;
/**
* ToolBar of Documents UI.
*/
public class DocumentsToolBar extends Toolbar {
interface OnActionViewCollapsedListener {
void onActionViewCollapsed();
}
private OnActionViewCollapsedListener mOnActionViewCollapsedListener;
public DocumentsToolBar(Context context, AttributeSet attrs,
int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
public DocumentsToolBar(Context context, AttributeSet attrs,
int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
public DocumentsToolBar(Context context, AttributeSet attrs) {
super(context, attrs);
}
public DocumentsToolBar(Context context) {
super(context);
}
@Override
public void collapseActionView() {
super.collapseActionView();
if (mOnActionViewCollapsedListener != null) {
mOnActionViewCollapsedListener.onActionViewCollapsed();
}
}
/**
* Adds a listener that is invoked after collapsing the action view.
* @param listener
*/
public void setOnActionViewCollapsedListener(
OnActionViewCollapsedListener listener) {
mOnActionViewCollapsedListener = listener;
}
public MenuItem getSearchMenu() {
return getMenu().findItem(R.id.menu_search);
}
}