Merge "Refactored contextual modes out of action bar."
This commit is contained in:
428
api/current.xml
428
api/current.xml
@@ -19481,17 +19481,6 @@
|
||||
<parameter name="tab" type="android.app.ActionBar.Tab">
|
||||
</parameter>
|
||||
</method>
|
||||
<method name="finishContextMode"
|
||||
return="void"
|
||||
abstract="true"
|
||||
native="false"
|
||||
synchronized="false"
|
||||
static="false"
|
||||
final="false"
|
||||
deprecated="not deprecated"
|
||||
visibility="public"
|
||||
>
|
||||
</method>
|
||||
<method name="getCustomNavigationView"
|
||||
return="android.view.View"
|
||||
abstract="true"
|
||||
@@ -19783,19 +19772,6 @@
|
||||
<parameter name="title" type="java.lang.CharSequence">
|
||||
</parameter>
|
||||
</method>
|
||||
<method name="startContextMode"
|
||||
return="void"
|
||||
abstract="true"
|
||||
native="false"
|
||||
synchronized="false"
|
||||
static="false"
|
||||
final="false"
|
||||
deprecated="not deprecated"
|
||||
visibility="public"
|
||||
>
|
||||
<parameter name="callback" type="android.app.ActionBar.ContextModeCallback">
|
||||
</parameter>
|
||||
</method>
|
||||
<field name="DISPLAY_HIDE_HOME"
|
||||
type="int"
|
||||
transient="false"
|
||||
@@ -19863,194 +19839,6 @@
|
||||
>
|
||||
</field>
|
||||
</class>
|
||||
<class name="ActionBar.ContextMode"
|
||||
extends="java.lang.Object"
|
||||
abstract="true"
|
||||
static="true"
|
||||
final="false"
|
||||
deprecated="not deprecated"
|
||||
visibility="public"
|
||||
>
|
||||
<constructor name="ActionBar.ContextMode"
|
||||
type="android.app.ActionBar.ContextMode"
|
||||
static="false"
|
||||
final="false"
|
||||
deprecated="not deprecated"
|
||||
visibility="public"
|
||||
>
|
||||
</constructor>
|
||||
<method name="finish"
|
||||
return="void"
|
||||
abstract="true"
|
||||
native="false"
|
||||
synchronized="false"
|
||||
static="false"
|
||||
final="false"
|
||||
deprecated="not deprecated"
|
||||
visibility="public"
|
||||
>
|
||||
</method>
|
||||
<method name="getCustomView"
|
||||
return="android.view.View"
|
||||
abstract="true"
|
||||
native="false"
|
||||
synchronized="false"
|
||||
static="false"
|
||||
final="false"
|
||||
deprecated="not deprecated"
|
||||
visibility="public"
|
||||
>
|
||||
</method>
|
||||
<method name="getMenu"
|
||||
return="android.view.Menu"
|
||||
abstract="true"
|
||||
native="false"
|
||||
synchronized="false"
|
||||
static="false"
|
||||
final="false"
|
||||
deprecated="not deprecated"
|
||||
visibility="public"
|
||||
>
|
||||
</method>
|
||||
<method name="getSubtitle"
|
||||
return="java.lang.CharSequence"
|
||||
abstract="true"
|
||||
native="false"
|
||||
synchronized="false"
|
||||
static="false"
|
||||
final="false"
|
||||
deprecated="not deprecated"
|
||||
visibility="public"
|
||||
>
|
||||
</method>
|
||||
<method name="getTitle"
|
||||
return="java.lang.CharSequence"
|
||||
abstract="true"
|
||||
native="false"
|
||||
synchronized="false"
|
||||
static="false"
|
||||
final="false"
|
||||
deprecated="not deprecated"
|
||||
visibility="public"
|
||||
>
|
||||
</method>
|
||||
<method name="invalidate"
|
||||
return="void"
|
||||
abstract="true"
|
||||
native="false"
|
||||
synchronized="false"
|
||||
static="false"
|
||||
final="false"
|
||||
deprecated="not deprecated"
|
||||
visibility="public"
|
||||
>
|
||||
</method>
|
||||
<method name="setCustomView"
|
||||
return="void"
|
||||
abstract="true"
|
||||
native="false"
|
||||
synchronized="false"
|
||||
static="false"
|
||||
final="false"
|
||||
deprecated="not deprecated"
|
||||
visibility="public"
|
||||
>
|
||||
<parameter name="view" type="android.view.View">
|
||||
</parameter>
|
||||
</method>
|
||||
<method name="setSubtitle"
|
||||
return="void"
|
||||
abstract="true"
|
||||
native="false"
|
||||
synchronized="false"
|
||||
static="false"
|
||||
final="false"
|
||||
deprecated="not deprecated"
|
||||
visibility="public"
|
||||
>
|
||||
<parameter name="subtitle" type="java.lang.CharSequence">
|
||||
</parameter>
|
||||
</method>
|
||||
<method name="setTitle"
|
||||
return="void"
|
||||
abstract="true"
|
||||
native="false"
|
||||
synchronized="false"
|
||||
static="false"
|
||||
final="false"
|
||||
deprecated="not deprecated"
|
||||
visibility="public"
|
||||
>
|
||||
<parameter name="title" type="java.lang.CharSequence">
|
||||
</parameter>
|
||||
</method>
|
||||
</class>
|
||||
<interface name="ActionBar.ContextModeCallback"
|
||||
abstract="true"
|
||||
static="true"
|
||||
final="false"
|
||||
deprecated="not deprecated"
|
||||
visibility="public"
|
||||
>
|
||||
<method name="onContextItemClicked"
|
||||
return="boolean"
|
||||
abstract="true"
|
||||
native="false"
|
||||
synchronized="false"
|
||||
static="false"
|
||||
final="false"
|
||||
deprecated="not deprecated"
|
||||
visibility="public"
|
||||
>
|
||||
<parameter name="mode" type="android.app.ActionBar.ContextMode">
|
||||
</parameter>
|
||||
<parameter name="item" type="android.view.MenuItem">
|
||||
</parameter>
|
||||
</method>
|
||||
<method name="onCreateContextMode"
|
||||
return="boolean"
|
||||
abstract="true"
|
||||
native="false"
|
||||
synchronized="false"
|
||||
static="false"
|
||||
final="false"
|
||||
deprecated="not deprecated"
|
||||
visibility="public"
|
||||
>
|
||||
<parameter name="mode" type="android.app.ActionBar.ContextMode">
|
||||
</parameter>
|
||||
<parameter name="menu" type="android.view.Menu">
|
||||
</parameter>
|
||||
</method>
|
||||
<method name="onDestroyContextMode"
|
||||
return="void"
|
||||
abstract="true"
|
||||
native="false"
|
||||
synchronized="false"
|
||||
static="false"
|
||||
final="false"
|
||||
deprecated="not deprecated"
|
||||
visibility="public"
|
||||
>
|
||||
<parameter name="mode" type="android.app.ActionBar.ContextMode">
|
||||
</parameter>
|
||||
</method>
|
||||
<method name="onPrepareContextMode"
|
||||
return="boolean"
|
||||
abstract="true"
|
||||
native="false"
|
||||
synchronized="false"
|
||||
static="false"
|
||||
final="false"
|
||||
deprecated="not deprecated"
|
||||
visibility="public"
|
||||
>
|
||||
<parameter name="mode" type="android.app.ActionBar.ContextMode">
|
||||
</parameter>
|
||||
<parameter name="menu" type="android.view.Menu">
|
||||
</parameter>
|
||||
</method>
|
||||
</interface>
|
||||
<interface name="ActionBar.NavigationCallback"
|
||||
abstract="true"
|
||||
static="true"
|
||||
@@ -24691,6 +24479,194 @@
|
||||
>
|
||||
</method>
|
||||
</class>
|
||||
<class name="ContextualMode"
|
||||
extends="java.lang.Object"
|
||||
abstract="true"
|
||||
static="false"
|
||||
final="false"
|
||||
deprecated="not deprecated"
|
||||
visibility="public"
|
||||
>
|
||||
<constructor name="ContextualMode"
|
||||
type="android.app.ContextualMode"
|
||||
static="false"
|
||||
final="false"
|
||||
deprecated="not deprecated"
|
||||
visibility="public"
|
||||
>
|
||||
</constructor>
|
||||
<method name="finish"
|
||||
return="void"
|
||||
abstract="true"
|
||||
native="false"
|
||||
synchronized="false"
|
||||
static="false"
|
||||
final="false"
|
||||
deprecated="not deprecated"
|
||||
visibility="public"
|
||||
>
|
||||
</method>
|
||||
<method name="getCustomView"
|
||||
return="android.view.View"
|
||||
abstract="true"
|
||||
native="false"
|
||||
synchronized="false"
|
||||
static="false"
|
||||
final="false"
|
||||
deprecated="not deprecated"
|
||||
visibility="public"
|
||||
>
|
||||
</method>
|
||||
<method name="getMenu"
|
||||
return="android.view.Menu"
|
||||
abstract="true"
|
||||
native="false"
|
||||
synchronized="false"
|
||||
static="false"
|
||||
final="false"
|
||||
deprecated="not deprecated"
|
||||
visibility="public"
|
||||
>
|
||||
</method>
|
||||
<method name="getSubtitle"
|
||||
return="java.lang.CharSequence"
|
||||
abstract="true"
|
||||
native="false"
|
||||
synchronized="false"
|
||||
static="false"
|
||||
final="false"
|
||||
deprecated="not deprecated"
|
||||
visibility="public"
|
||||
>
|
||||
</method>
|
||||
<method name="getTitle"
|
||||
return="java.lang.CharSequence"
|
||||
abstract="true"
|
||||
native="false"
|
||||
synchronized="false"
|
||||
static="false"
|
||||
final="false"
|
||||
deprecated="not deprecated"
|
||||
visibility="public"
|
||||
>
|
||||
</method>
|
||||
<method name="invalidate"
|
||||
return="void"
|
||||
abstract="true"
|
||||
native="false"
|
||||
synchronized="false"
|
||||
static="false"
|
||||
final="false"
|
||||
deprecated="not deprecated"
|
||||
visibility="public"
|
||||
>
|
||||
</method>
|
||||
<method name="setCustomView"
|
||||
return="void"
|
||||
abstract="true"
|
||||
native="false"
|
||||
synchronized="false"
|
||||
static="false"
|
||||
final="false"
|
||||
deprecated="not deprecated"
|
||||
visibility="public"
|
||||
>
|
||||
<parameter name="view" type="android.view.View">
|
||||
</parameter>
|
||||
</method>
|
||||
<method name="setSubtitle"
|
||||
return="void"
|
||||
abstract="true"
|
||||
native="false"
|
||||
synchronized="false"
|
||||
static="false"
|
||||
final="false"
|
||||
deprecated="not deprecated"
|
||||
visibility="public"
|
||||
>
|
||||
<parameter name="subtitle" type="java.lang.CharSequence">
|
||||
</parameter>
|
||||
</method>
|
||||
<method name="setTitle"
|
||||
return="void"
|
||||
abstract="true"
|
||||
native="false"
|
||||
synchronized="false"
|
||||
static="false"
|
||||
final="false"
|
||||
deprecated="not deprecated"
|
||||
visibility="public"
|
||||
>
|
||||
<parameter name="title" type="java.lang.CharSequence">
|
||||
</parameter>
|
||||
</method>
|
||||
</class>
|
||||
<interface name="ContextualMode.Callback"
|
||||
abstract="true"
|
||||
static="true"
|
||||
final="false"
|
||||
deprecated="not deprecated"
|
||||
visibility="public"
|
||||
>
|
||||
<method name="onContextItemClicked"
|
||||
return="boolean"
|
||||
abstract="true"
|
||||
native="false"
|
||||
synchronized="false"
|
||||
static="false"
|
||||
final="false"
|
||||
deprecated="not deprecated"
|
||||
visibility="public"
|
||||
>
|
||||
<parameter name="mode" type="android.app.ContextualMode">
|
||||
</parameter>
|
||||
<parameter name="item" type="android.view.MenuItem">
|
||||
</parameter>
|
||||
</method>
|
||||
<method name="onCreateContextMode"
|
||||
return="boolean"
|
||||
abstract="true"
|
||||
native="false"
|
||||
synchronized="false"
|
||||
static="false"
|
||||
final="false"
|
||||
deprecated="not deprecated"
|
||||
visibility="public"
|
||||
>
|
||||
<parameter name="mode" type="android.app.ContextualMode">
|
||||
</parameter>
|
||||
<parameter name="menu" type="android.view.Menu">
|
||||
</parameter>
|
||||
</method>
|
||||
<method name="onDestroyContextMode"
|
||||
return="void"
|
||||
abstract="true"
|
||||
native="false"
|
||||
synchronized="false"
|
||||
static="false"
|
||||
final="false"
|
||||
deprecated="not deprecated"
|
||||
visibility="public"
|
||||
>
|
||||
<parameter name="mode" type="android.app.ContextualMode">
|
||||
</parameter>
|
||||
</method>
|
||||
<method name="onPrepareContextMode"
|
||||
return="boolean"
|
||||
abstract="true"
|
||||
native="false"
|
||||
synchronized="false"
|
||||
static="false"
|
||||
final="false"
|
||||
deprecated="not deprecated"
|
||||
visibility="public"
|
||||
>
|
||||
<parameter name="mode" type="android.app.ContextualMode">
|
||||
</parameter>
|
||||
<parameter name="menu" type="android.view.Menu">
|
||||
</parameter>
|
||||
</method>
|
||||
</interface>
|
||||
<class name="DatePickerDialog"
|
||||
extends="android.app.AlertDialog"
|
||||
abstract="false"
|
||||
@@ -40109,6 +40085,17 @@
|
||||
visibility="public"
|
||||
>
|
||||
</method>
|
||||
<method name="finishContextualMode"
|
||||
return="void"
|
||||
abstract="false"
|
||||
native="false"
|
||||
synchronized="false"
|
||||
static="false"
|
||||
final="false"
|
||||
deprecated="not deprecated"
|
||||
visibility="public"
|
||||
>
|
||||
</method>
|
||||
<method name="getApplicationContext"
|
||||
return="android.content.Context"
|
||||
abstract="true"
|
||||
@@ -40823,6 +40810,19 @@
|
||||
<parameter name="intent" type="android.content.Intent">
|
||||
</parameter>
|
||||
</method>
|
||||
<method name="startContextualMode"
|
||||
return="android.app.ContextualMode"
|
||||
abstract="false"
|
||||
native="false"
|
||||
synchronized="false"
|
||||
static="false"
|
||||
final="false"
|
||||
deprecated="not deprecated"
|
||||
visibility="public"
|
||||
>
|
||||
<parameter name="callback" type="android.app.ContextualMode.Callback">
|
||||
</parameter>
|
||||
</method>
|
||||
<method name="startInstrumentation"
|
||||
return="boolean"
|
||||
abstract="true"
|
||||
@@ -82198,7 +82198,7 @@
|
||||
type="float"
|
||||
transient="false"
|
||||
volatile="false"
|
||||
value="0.001f"
|
||||
value="0.0010f"
|
||||
static="true"
|
||||
final="true"
|
||||
deprecated="not deprecated"
|
||||
@@ -226630,7 +226630,7 @@
|
||||
deprecated="not deprecated"
|
||||
visibility="public"
|
||||
>
|
||||
<parameter name="arg0" type="T">
|
||||
<parameter name="t" type="T">
|
||||
</parameter>
|
||||
</method>
|
||||
</interface>
|
||||
|
||||
@@ -17,8 +17,6 @@
|
||||
package android.app;
|
||||
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.widget.SpinnerAdapter;
|
||||
|
||||
@@ -220,20 +218,6 @@ public abstract class ActionBar {
|
||||
*/
|
||||
public abstract int getDisplayOptions();
|
||||
|
||||
/**
|
||||
* Start a context mode controlled by <code>callback</code>.
|
||||
* The {@link ContextModeCallback} will receive lifecycle events for the duration
|
||||
* of the context mode.
|
||||
*
|
||||
* @param callback Callback handler that will manage this context mode.
|
||||
*/
|
||||
public abstract void startContextMode(ContextModeCallback callback);
|
||||
|
||||
/**
|
||||
* Finish the current context mode.
|
||||
*/
|
||||
public abstract void finishContextMode();
|
||||
|
||||
/**
|
||||
* Set the action bar into tabbed navigation mode.
|
||||
*
|
||||
@@ -311,139 +295,6 @@ public abstract class ActionBar {
|
||||
*/
|
||||
public abstract void selectTabAt(int position);
|
||||
|
||||
/**
|
||||
* Represents a contextual mode of the Action Bar. Context modes can be used for
|
||||
* modal interactions with activity content and replace the normal Action Bar until finished.
|
||||
* Examples of good contextual modes include selection modes, search, content editing, etc.
|
||||
*/
|
||||
public static abstract class ContextMode {
|
||||
/**
|
||||
* Set the title of the context mode. This method will have no visible effect if
|
||||
* a custom view has been set.
|
||||
*
|
||||
* @param title Title string to set
|
||||
*
|
||||
* @see #setCustomView(View)
|
||||
*/
|
||||
public abstract void setTitle(CharSequence title);
|
||||
|
||||
/**
|
||||
* Set the subtitle of the context mode. This method will have no visible effect if
|
||||
* a custom view has been set.
|
||||
*
|
||||
* @param subtitle Subtitle string to set
|
||||
*
|
||||
* @see #setCustomView(View)
|
||||
*/
|
||||
public abstract void setSubtitle(CharSequence subtitle);
|
||||
|
||||
/**
|
||||
* Set a custom view for this context mode. The custom view will take the place of
|
||||
* the title and subtitle. Useful for things like search boxes.
|
||||
*
|
||||
* @param view Custom view to use in place of the title/subtitle.
|
||||
*
|
||||
* @see #setTitle(CharSequence)
|
||||
* @see #setSubtitle(CharSequence)
|
||||
*/
|
||||
public abstract void setCustomView(View view);
|
||||
|
||||
/**
|
||||
* Invalidate the context mode and refresh menu content. The context mode's
|
||||
* {@link ContextModeCallback} will have its
|
||||
* {@link ContextModeCallback#onPrepareContextMode(ContextMode, Menu)} method called.
|
||||
* If it returns true the menu will be scanned for updated content and any relevant changes
|
||||
* will be reflected to the user.
|
||||
*/
|
||||
public abstract void invalidate();
|
||||
|
||||
/**
|
||||
* Finish and close this context mode. The context mode's {@link ContextModeCallback} will
|
||||
* have its {@link ContextModeCallback#onDestroyContextMode(ContextMode)} method called.
|
||||
*/
|
||||
public abstract void finish();
|
||||
|
||||
/**
|
||||
* Returns the menu of actions that this context mode presents.
|
||||
* @return The context mode's menu.
|
||||
*/
|
||||
public abstract Menu getMenu();
|
||||
|
||||
/**
|
||||
* Returns the current title of this context mode.
|
||||
* @return Title text
|
||||
*/
|
||||
public abstract CharSequence getTitle();
|
||||
|
||||
/**
|
||||
* Returns the current subtitle of this context mode.
|
||||
* @return Subtitle text
|
||||
*/
|
||||
public abstract CharSequence getSubtitle();
|
||||
|
||||
/**
|
||||
* Returns the current custom view for this context mode.
|
||||
* @return The current custom view
|
||||
*/
|
||||
public abstract View getCustomView();
|
||||
}
|
||||
|
||||
/**
|
||||
* Callback interface for ActionBar context modes. Supplied to
|
||||
* {@link ActionBar#startContextMode(ContextModeCallback)}, a ContextModeCallback
|
||||
* configures and handles events raised by a user's interaction with a context mode.
|
||||
*
|
||||
* <p>A context mode's lifecycle is as follows:
|
||||
* <ul>
|
||||
* <li>{@link ContextModeCallback#onCreateContextMode(ContextMode, Menu)} once on initial
|
||||
* creation</li>
|
||||
* <li>{@link ContextModeCallback#onPrepareContextMode(ContextMode, Menu)} after creation
|
||||
* and any time the {@link ContextMode} is invalidated</li>
|
||||
* <li>{@link ContextModeCallback#onContextItemClicked(ContextMode, MenuItem)} any time a
|
||||
* contextual action button is clicked</li>
|
||||
* <li>{@link ContextModeCallback#onDestroyContextMode(ContextMode)} when the context mode
|
||||
* is closed</li>
|
||||
* </ul>
|
||||
*/
|
||||
public interface ContextModeCallback {
|
||||
/**
|
||||
* Called when a context mode is first created. The menu supplied will be used to generate
|
||||
* action buttons for the context mode.
|
||||
*
|
||||
* @param mode ContextMode being created
|
||||
* @param menu Menu used to populate contextual action buttons
|
||||
* @return true if the context mode should be created, false if entering this context mode
|
||||
* should be aborted.
|
||||
*/
|
||||
public boolean onCreateContextMode(ContextMode mode, Menu menu);
|
||||
|
||||
/**
|
||||
* Called to refresh a context mode's action menu whenever it is invalidated.
|
||||
*
|
||||
* @param mode ContextMode being prepared
|
||||
* @param menu Menu used to populate contextual action buttons
|
||||
* @return true if the menu or context mode was updated, false otherwise.
|
||||
*/
|
||||
public boolean onPrepareContextMode(ContextMode mode, Menu menu);
|
||||
|
||||
/**
|
||||
* Called to report a user click on a contextual action button.
|
||||
*
|
||||
* @param mode The current ContextMode
|
||||
* @param item The item that was clicked
|
||||
* @return true if this callback handled the event, false if the standard MenuItem
|
||||
* invocation should continue.
|
||||
*/
|
||||
public boolean onContextItemClicked(ContextMode mode, MenuItem item);
|
||||
|
||||
/**
|
||||
* Called when a context mode is about to be exited and destroyed.
|
||||
*
|
||||
* @param mode The current ContextMode being destroyed
|
||||
*/
|
||||
public void onDestroyContextMode(ContextMode mode);
|
||||
}
|
||||
|
||||
/**
|
||||
* Callback interface for ActionBar navigation events.
|
||||
*/
|
||||
|
||||
@@ -662,7 +662,7 @@ public class Activity extends ContextThemeWrapper
|
||||
/*package*/ boolean mWindowAdded = false;
|
||||
/*package*/ boolean mVisibleFromServer = false;
|
||||
/*package*/ boolean mVisibleFromClient = true;
|
||||
/*package*/ ActionBar mActionBar = null;
|
||||
/*package*/ ActionBarImpl mActionBar = null;
|
||||
|
||||
private CharSequence mTitle;
|
||||
private int mTitleColor = 0;
|
||||
@@ -4253,4 +4253,19 @@ public class Activity extends ContextThemeWrapper
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public ContextualMode startContextualMode(ContextualMode.Callback callback) {
|
||||
if (mActionBar == null) {
|
||||
return null;
|
||||
}
|
||||
return mActionBar.startContextualMode(callback);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void finishContextualMode() {
|
||||
if (mActionBar != null) {
|
||||
mActionBar.finishContextualMode();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
155
core/java/android/app/ContextualMode.java
Normal file
155
core/java/android/app/ContextualMode.java
Normal file
@@ -0,0 +1,155 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
package android.app;
|
||||
|
||||
import android.content.Context;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
|
||||
/**
|
||||
* Represents a contextual mode of the user interface. Contextual modes can be used for
|
||||
* modal interactions with content and replace parts of the normal UI until finished.
|
||||
* Examples of good contextual modes include selection modes, search, content editing, etc.
|
||||
*/
|
||||
public abstract class ContextualMode {
|
||||
/**
|
||||
* Set the title of the contextual mode. This method will have no visible effect if
|
||||
* a custom view has been set.
|
||||
*
|
||||
* @param title Title string to set
|
||||
*
|
||||
* @see #setCustomView(View)
|
||||
*/
|
||||
public abstract void setTitle(CharSequence title);
|
||||
|
||||
/**
|
||||
* Set the subtitle of the contextual mode. This method will have no visible effect if
|
||||
* a custom view has been set.
|
||||
*
|
||||
* @param subtitle Subtitle string to set
|
||||
*
|
||||
* @see #setCustomView(View)
|
||||
*/
|
||||
public abstract void setSubtitle(CharSequence subtitle);
|
||||
|
||||
/**
|
||||
* Set a custom view for this contextual mode. The custom view will take the place of
|
||||
* the title and subtitle. Useful for things like search boxes.
|
||||
*
|
||||
* @param view Custom view to use in place of the title/subtitle.
|
||||
*
|
||||
* @see #setTitle(CharSequence)
|
||||
* @see #setSubtitle(CharSequence)
|
||||
*/
|
||||
public abstract void setCustomView(View view);
|
||||
|
||||
/**
|
||||
* Invalidate the contextual mode and refresh menu content. The contextual mode's
|
||||
* {@link ContextualMode.Callback} will have its
|
||||
* {@link Callback#onPrepareContextMode(ContextualMode, Menu)} method called.
|
||||
* If it returns true the menu will be scanned for updated content and any relevant changes
|
||||
* will be reflected to the user.
|
||||
*/
|
||||
public abstract void invalidate();
|
||||
|
||||
/**
|
||||
* Finish and close this context mode. The context mode's {@link ContextualMode.Callback} will
|
||||
* have its {@link Callback#onDestroyContextMode(ContextualMode)} method called.
|
||||
*/
|
||||
public abstract void finish();
|
||||
|
||||
/**
|
||||
* Returns the menu of actions that this contextual mode presents.
|
||||
* @return The contextual mode's menu.
|
||||
*/
|
||||
public abstract Menu getMenu();
|
||||
|
||||
/**
|
||||
* Returns the current title of this contextual mode.
|
||||
* @return Title text
|
||||
*/
|
||||
public abstract CharSequence getTitle();
|
||||
|
||||
/**
|
||||
* Returns the current subtitle of this contextual mode.
|
||||
* @return Subtitle text
|
||||
*/
|
||||
public abstract CharSequence getSubtitle();
|
||||
|
||||
/**
|
||||
* Returns the current custom view for this contextual mode.
|
||||
* @return The current custom view
|
||||
*/
|
||||
public abstract View getCustomView();
|
||||
|
||||
/**
|
||||
* Callback interface for contextual modes. Supplied to
|
||||
* {@link Context#startContextMode(Callback)}, a ContextModeCallback
|
||||
* configures and handles events raised by a user's interaction with a context mode.
|
||||
*
|
||||
* <p>A context mode's lifecycle is as follows:
|
||||
* <ul>
|
||||
* <li>{@link Callback#onCreateContextMode(ActionBar.ContextualMode, Menu)} once on initial
|
||||
* creation</li>
|
||||
* <li>{@link Callback#onPrepareContextMode(ActionBar.ContextualMode, Menu)} after creation
|
||||
* and any time the {@link ContextualMode} is invalidated</li>
|
||||
* <li>{@link Callback#onContextItemClicked(ActionBar.ContextualMode, MenuItem)} any time a
|
||||
* contextual action button is clicked</li>
|
||||
* <li>{@link Callback#onDestroyContextMode(ActionBar.ContextualMode)} when the context mode
|
||||
* is closed</li>
|
||||
* </ul>
|
||||
*/
|
||||
public interface Callback {
|
||||
/**
|
||||
* Called when a context mode is first created. The menu supplied will be used to generate
|
||||
* action buttons for the context mode.
|
||||
*
|
||||
* @param mode ContextMode being created
|
||||
* @param menu Menu used to populate contextual action buttons
|
||||
* @return true if the context mode should be created, false if entering this context mode
|
||||
* should be aborted.
|
||||
*/
|
||||
public boolean onCreateContextMode(ContextualMode mode, Menu menu);
|
||||
|
||||
/**
|
||||
* Called to refresh a context mode's action menu whenever it is invalidated.
|
||||
*
|
||||
* @param mode ContextMode being prepared
|
||||
* @param menu Menu used to populate contextual action buttons
|
||||
* @return true if the menu or context mode was updated, false otherwise.
|
||||
*/
|
||||
public boolean onPrepareContextMode(ContextualMode mode, Menu menu);
|
||||
|
||||
/**
|
||||
* Called to report a user click on a contextual action button.
|
||||
*
|
||||
* @param mode The current ContextMode
|
||||
* @param item The item that was clicked
|
||||
* @return true if this callback handled the event, false if the standard MenuItem
|
||||
* invocation should continue.
|
||||
*/
|
||||
public boolean onContextItemClicked(ContextualMode mode, MenuItem item);
|
||||
|
||||
/**
|
||||
* Called when a context mode is about to be exited and destroyed.
|
||||
*
|
||||
* @param mode The current ContextMode being destroyed
|
||||
*/
|
||||
public void onDestroyContextMode(ContextualMode mode);
|
||||
}
|
||||
}
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
package android.content;
|
||||
|
||||
import android.app.ContextualMode;
|
||||
import android.content.pm.ApplicationInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.res.AssetManager;
|
||||
@@ -26,6 +27,7 @@ import android.database.sqlite.SQLiteDatabase;
|
||||
import android.database.sqlite.SQLiteDatabase.CursorFactory;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.media.MediaScannerConnection.OnScanCompletedListener;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
@@ -1981,4 +1983,25 @@ public abstract class Context {
|
||||
public boolean isRestricted() {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Start a contextual mode controlled by <code>callback</code>.
|
||||
* The {@link ContextualMode.Callback} will receive lifecycle events for the duration
|
||||
* of the contextual mode. There can only be one contextual mode active at a time.
|
||||
* Starting a new contextual mode while one is already active will finish the old
|
||||
* contextual mode.
|
||||
*
|
||||
* @param callback Callback handler that will manage this context mode.
|
||||
* @return The new contextual mode started by this call, or <code>null</code>
|
||||
* if the mode was not started.
|
||||
*/
|
||||
public ContextualMode startContextualMode(ContextualMode.Callback callback) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Finish the current contextual mode if present.
|
||||
*/
|
||||
public void finishContextualMode() {
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,6 +25,7 @@ import com.android.internal.widget.ActionBarView;
|
||||
|
||||
import android.app.ActionBar;
|
||||
import android.app.Activity;
|
||||
import android.app.ContextualMode;
|
||||
import android.app.Fragment;
|
||||
import android.app.FragmentTransaction;
|
||||
import android.graphics.drawable.Drawable;
|
||||
@@ -196,9 +197,8 @@ public class ActionBarImpl extends ActionBar {
|
||||
return mActionView.getDisplayOptions();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void startContextMode(ContextModeCallback callback) {
|
||||
finishContextMode();
|
||||
public ContextualMode startContextualMode(ContextualMode.Callback callback) {
|
||||
finishContextualMode();
|
||||
|
||||
// Don't wait for the close context mode animation to finish.
|
||||
if (mClosingContext) {
|
||||
@@ -217,11 +217,12 @@ public class ActionBarImpl extends ActionBar {
|
||||
mLowerContextView.setVisibility(View.VISIBLE);
|
||||
}
|
||||
mContextMode = mode;
|
||||
return mode;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void finishContextMode() {
|
||||
public void finishContextualMode() {
|
||||
if (mContextMode != null) {
|
||||
mContextMode.finish();
|
||||
}
|
||||
@@ -337,12 +338,12 @@ public class ActionBarImpl extends ActionBar {
|
||||
/**
|
||||
* @hide
|
||||
*/
|
||||
public class ContextMode extends ActionBar.ContextMode implements MenuBuilder.Callback {
|
||||
private ContextModeCallback mCallback;
|
||||
public class ContextMode extends ContextualMode implements MenuBuilder.Callback {
|
||||
private ContextualMode.Callback mCallback;
|
||||
private MenuBuilder mMenu;
|
||||
private WeakReference<View> mCustomView;
|
||||
|
||||
public ContextMode(ContextModeCallback callback) {
|
||||
public ContextMode(ContextualMode.Callback callback) {
|
||||
mCallback = callback;
|
||||
mMenu = new MenuBuilder(mActionView.getContext());
|
||||
mMenu.setCallback(this);
|
||||
|
||||
@@ -19,7 +19,7 @@ import com.android.internal.R;
|
||||
import com.android.internal.view.menu.ActionMenuView;
|
||||
import com.android.internal.view.menu.MenuBuilder;
|
||||
|
||||
import android.app.ActionBar;
|
||||
import android.app.ContextualMode;
|
||||
import android.content.Context;
|
||||
import android.content.res.TypedArray;
|
||||
import android.graphics.drawable.Drawable;
|
||||
@@ -135,7 +135,7 @@ public class ActionBarContextView extends ViewGroup {
|
||||
}
|
||||
}
|
||||
|
||||
public void initForMode(final ActionBar.ContextMode mode) {
|
||||
public void initForMode(final ContextualMode mode) {
|
||||
if (mCloseButton == null) {
|
||||
mCloseButton = new ImageButton(getContext());
|
||||
mCloseButton.setImageDrawable(mCloseDrawable);
|
||||
|
||||
Reference in New Issue
Block a user