ClipDescription no longer inherits from ClipData.

Change-Id: Ie4939f87c7e1628d9c19ecb5c0b3036d1f76ef29
This commit is contained in:
Dianne Hackborn
2010-10-26 12:43:57 -07:00
parent 78098341f8
commit f834dfabbc
5 changed files with 108 additions and 21 deletions

View File

@@ -40322,13 +40322,15 @@
</method>
</class>
<class name="ClipData"
extends="android.content.ClipDescription"
extends="java.lang.Object"
abstract="false"
static="false"
final="false"
deprecated="not deprecated"
visibility="public"
>
<implements name="android.os.Parcelable">
</implements>
<constructor name="ClipData"
type="android.content.ClipData"
static="false"
@@ -40345,6 +40347,20 @@
<parameter name="item" type="android.content.ClipData.Item">
</parameter>
</constructor>
<constructor name="ClipData"
type="android.content.ClipData"
static="false"
final="false"
deprecated="not deprecated"
visibility="public"
>
<parameter name="description" type="android.content.ClipDescription">
</parameter>
<parameter name="icon" type="android.graphics.Bitmap">
</parameter>
<parameter name="item" type="android.content.ClipData.Item">
</parameter>
</constructor>
<method name="addItem"
return="void"
abstract="false"
@@ -40358,6 +40374,28 @@
<parameter name="item" type="android.content.ClipData.Item">
</parameter>
</method>
<method name="describeContents"
return="int"
abstract="false"
native="false"
synchronized="false"
static="false"
final="false"
deprecated="not deprecated"
visibility="public"
>
</method>
<method name="getDescription"
return="android.content.ClipDescription"
abstract="false"
native="false"
synchronized="false"
static="false"
final="false"
deprecated="not deprecated"
visibility="public"
>
</method>
<method name="getIcon"
return="android.graphics.Bitmap"
abstract="false"
@@ -40463,6 +40501,21 @@
<parameter name="uri" type="android.net.Uri">
</parameter>
</method>
<method name="writeToParcel"
return="void"
abstract="false"
native="false"
synchronized="false"
static="false"
final="false"
deprecated="not deprecated"
visibility="public"
>
<parameter name="dest" type="android.os.Parcel">
</parameter>
<parameter name="flags" type="int">
</parameter>
</method>
<field name="CREATOR"
type="android.os.Parcelable.Creator"
transient="false"

View File

@@ -37,8 +37,9 @@ import java.util.ArrayList;
* each of which can hold one or more representations of an item of data.
* For display to the user, it also has a label and iconic representation.</p>
*
* <p>A ClipData is a sub-class of {@link ClipDescription}, which describes
* important meta-data about the clip. In particular, its {@link #getMimeType(int)}
* <p>A ClipData contains a {@link ClipDescription}, which describes
* important meta-data about the clip. In particular, its
* {@link ClipDescription#getMimeType(int) getDescription().getMimeType(int)}
* must return correct MIME type(s) describing the data in the clip. For help
* in correctly constructing a clip with the correct MIME type, use
* {@link #newPlainText(CharSequence, Bitmap, CharSequence)},
@@ -62,8 +63,8 @@ import java.util.ArrayList;
* <p>If all you want is the textual representation of the clipped data, you
* can use the convenience method {@link Item#coerceToText Item.coerceToText}.
* In this case there is generally no need to worry about the MIME types
* reported by {@link #getMimeType(int)}, since any clip item an always be
* converted to a string.
* reported by {@link ClipDescription#getMimeType(int) getDescription().getMimeType(int)},
* since any clip item an always be converted to a string.
*
* <p>More complicated exchanges will be done through URIs, in particular
* "content:" URIs. A content URI allows the recipient of a ClippedData item
@@ -133,11 +134,16 @@ import java.util.ArrayList;
* into an editor), then {@link Item#coerceToText(Context)} will ask the content
* provider for the clip URI as text and successfully paste the entire note.
*/
public class ClipData extends ClipDescription {
static final String[] MIMETYPES_TEXT_PLAIN = new String[] { MIMETYPE_TEXT_PLAIN };
static final String[] MIMETYPES_TEXT_URILIST = new String[] { MIMETYPE_TEXT_URILIST };
static final String[] MIMETYPES_TEXT_INTENT = new String[] { MIMETYPE_TEXT_INTENT };
public class ClipData implements Parcelable {
static final String[] MIMETYPES_TEXT_PLAIN = new String[] {
ClipDescription.MIMETYPE_TEXT_PLAIN };
static final String[] MIMETYPES_TEXT_URILIST = new String[] {
ClipDescription.MIMETYPE_TEXT_URILIST };
static final String[] MIMETYPES_TEXT_INTENT = new String[] {
ClipDescription.MIMETYPE_TEXT_INTENT };
final ClipDescription mClipDescription;
final Bitmap mIcon;
final ArrayList<Item> mItems = new ArrayList<Item>();
@@ -320,7 +326,7 @@ public class ClipData extends ClipDescription {
* @param item The contents of the first item in the clip.
*/
public ClipData(CharSequence label, String[] mimeTypes, Bitmap icon, Item item) {
super(label, mimeTypes);
mClipDescription = new ClipDescription(label, mimeTypes);
if (item == null) {
throw new NullPointerException("item is null");
}
@@ -329,7 +335,25 @@ public class ClipData extends ClipDescription {
}
/**
* Create a new ClipData holding data of the type {@link #MIMETYPE_TEXT_PLAIN}.
* Create a new clip.
*
* @param description The ClipDescription describing the clip contents.
* @param icon Bitmap providing the user with an iconing representation of
* the clip.
* @param item The contents of the first item in the clip.
*/
public ClipData(ClipDescription description, Bitmap icon, Item item) {
mClipDescription = description;
if (item == null) {
throw new NullPointerException("item is null");
}
mIcon = icon;
mItems.add(item);
}
/**
* Create a new ClipData holding data of the type
* {@link ClipDescription#MIMETYPE_TEXT_PLAIN}.
*
* @param label User-visible label for the clip data.
* @param icon Iconic representation of the clip data.
@@ -342,7 +366,8 @@ public class ClipData extends ClipDescription {
}
/**
* Create a new ClipData holding an Intent with MIME type {@link #MIMETYPE_TEXT_INTENT}.
* Create a new ClipData holding an Intent with MIME type
* {@link ClipDescription#MIMETYPE_TEXT_INTENT}.
*
* @param label User-visible label for the clip data.
* @param icon Iconic representation of the clip data.
@@ -358,7 +383,7 @@ public class ClipData extends ClipDescription {
* Create a new ClipData holding a URI. If the URI is a content: URI,
* this will query the content provider for the MIME type of its data and
* use that as the MIME type. Otherwise, it will use the MIME type
* {@link #MIMETYPE_TEXT_URILIST}.
* {@link ClipDescription#MIMETYPE_TEXT_URILIST}.
*
* @param resolver ContentResolver used to get information about the URI.
* @param label User-visible label for the clip data.
@@ -375,7 +400,7 @@ public class ClipData extends ClipDescription {
mimeTypes = resolver.getStreamTypes(uri, "*/*");
if (mimeTypes == null) {
if (realType != null) {
mimeTypes = new String[] { realType, MIMETYPE_TEXT_URILIST };
mimeTypes = new String[] { realType, ClipDescription.MIMETYPE_TEXT_URILIST };
}
} else {
String[] tmp = new String[mimeTypes.length + (realType != null ? 2 : 1)];
@@ -385,7 +410,7 @@ public class ClipData extends ClipDescription {
i++;
}
System.arraycopy(mimeTypes, 0, tmp, i, mimeTypes.length);
tmp[i + mimeTypes.length] = MIMETYPE_TEXT_URILIST;
tmp[i + mimeTypes.length] = ClipDescription.MIMETYPE_TEXT_URILIST;
mimeTypes = tmp;
}
}
@@ -396,7 +421,8 @@ public class ClipData extends ClipDescription {
}
/**
* Create a new ClipData holding an URI with MIME type {@link #MIMETYPE_TEXT_URILIST}.
* Create a new ClipData holding an URI with MIME type
* {@link ClipDescription#MIMETYPE_TEXT_URILIST}.
* Unlike {@link #newUri(ContentResolver, CharSequence, Bitmap, Uri)}, nothing
* is inferred about the URI -- if it is a content: URI holding a bitmap,
* the reported type will still be uri-list. Use this with care!
@@ -411,6 +437,14 @@ public class ClipData extends ClipDescription {
return new ClipData(label, MIMETYPES_TEXT_URILIST, icon, item);
}
/**
* Return the {@link ClipDescription} associated with this data, describing
* what it contains.
*/
public ClipDescription getDescription() {
return mClipDescription;
}
public void addItem(Item item) {
if (item == null) {
throw new NullPointerException("item is null");
@@ -437,7 +471,7 @@ public class ClipData extends ClipDescription {
@Override
public void writeToParcel(Parcel dest, int flags) {
super.writeToParcel(dest, flags);
mClipDescription.writeToParcel(dest, flags);
if (mIcon != null) {
dest.writeInt(1);
mIcon.writeToParcel(dest, flags);
@@ -465,7 +499,7 @@ public class ClipData extends ClipDescription {
}
ClipData(Parcel in) {
super(in);
mClipDescription = new ClipDescription(in);
if (in.readInt() != 0) {
mIcon = Bitmap.CREATOR.createFromParcel(in);
} else {

View File

@@ -116,7 +116,7 @@ public class ShirtPocket extends FrameLayout {
mClipping = clipping;
if (mClipping != null) {
Bitmap icon = mClipping.getIcon();
mDescription.setText(mClipping.getLabel());
mDescription.setText(mClipping.getDescription().getLabel());
if (icon != null) {
mPreviewIcon.setImageBitmap(icon);
mPreviewIcon.setVisibility(View.VISIBLE);

View File

@@ -115,7 +115,7 @@ public class ClipboardService extends IClipboard.Stub {
public ClipDescription getPrimaryClipDescription() {
synchronized (this) {
return new ClipDescription(mPrimaryClip);
return mPrimaryClip.getDescription();
}
}

View File

@@ -569,7 +569,7 @@ public class WindowManagerService extends IWindowManager.Stub
void broadcastDragStartedLw(final float touchX, final float touchY) {
// Cache a base-class instance of the clip metadata so that parceling
// works correctly in calling out to the apps.
mDataDescription = new ClipDescription(mData);
mDataDescription = mData.getDescription();
mNotifiedWindows.clear();
mDragInProgress = true;