mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
120 lines
3.6 KiB
Java
120 lines
3.6 KiB
Java
package org.mozilla.gecko.prompts;
|
|
|
|
import org.mozilla.gecko.gfx.BitmapUtils;
|
|
import org.mozilla.gecko.GeckoAppShell;
|
|
import org.mozilla.gecko.widget.GeckoActionProvider;
|
|
|
|
import org.json.JSONArray;
|
|
import org.json.JSONObject;
|
|
import org.json.JSONException;
|
|
|
|
import android.content.Intent;
|
|
import android.graphics.drawable.Drawable;
|
|
import android.util.Log;
|
|
|
|
import java.util.List;
|
|
import java.util.ArrayList;
|
|
|
|
// This class should die and be replaced with normal menu items
|
|
public class PromptListItem {
|
|
private static final String LOGTAG = "GeckoPromptListItem";
|
|
public final String label;
|
|
public final boolean isGroup;
|
|
public final boolean inGroup;
|
|
public final boolean disabled;
|
|
public final int id;
|
|
public final boolean showAsActions;
|
|
public final boolean isParent;
|
|
|
|
public Intent mIntent;
|
|
public boolean mSelected;
|
|
public Drawable mIcon;
|
|
|
|
PromptListItem(JSONObject aObject) {
|
|
label = aObject.isNull("label") ? "" : aObject.optString("label");
|
|
isGroup = aObject.optBoolean("isGroup");
|
|
inGroup = aObject.optBoolean("inGroup");
|
|
disabled = aObject.optBoolean("disabled");
|
|
id = aObject.optInt("id");
|
|
mSelected = aObject.optBoolean("selected");
|
|
|
|
JSONObject obj = aObject.optJSONObject("showAsActions");
|
|
if (obj != null) {
|
|
showAsActions = true;
|
|
String uri = obj.isNull("uri") ? "" : obj.optString("uri");
|
|
String type = obj.isNull("type") ? GeckoActionProvider.DEFAULT_MIME_TYPE :
|
|
obj.optString("type", GeckoActionProvider.DEFAULT_MIME_TYPE);
|
|
mIntent = GeckoAppShell.getShareIntent(GeckoAppShell.getContext(), uri, type, "");
|
|
isParent = true;
|
|
} else {
|
|
mIntent = null;
|
|
showAsActions = false;
|
|
// Support both "isParent" (backwards compat for older consumers), and "menu" for the new Tabbed prompt ui.
|
|
isParent = aObject.optBoolean("isParent") || aObject.optBoolean("menu");
|
|
}
|
|
|
|
final String iconStr = aObject.optString("icon");
|
|
if (iconStr != null) {
|
|
BitmapUtils.getDrawable(GeckoAppShell.getContext(), iconStr, new BitmapUtils.BitmapLoader() {
|
|
@Override
|
|
public void onBitmapFound(Drawable d) {
|
|
mIcon = d;
|
|
}
|
|
});
|
|
}
|
|
}
|
|
|
|
public void setIntent(Intent i) {
|
|
mIntent = i;
|
|
}
|
|
|
|
public Intent getIntent() {
|
|
return mIntent;
|
|
}
|
|
|
|
public void setIcon(Drawable icon) {
|
|
mIcon = icon;
|
|
}
|
|
|
|
public Drawable getIcon() {
|
|
return mIcon;
|
|
}
|
|
|
|
public void setSelected(boolean selected) {
|
|
mSelected = selected;
|
|
}
|
|
|
|
public boolean getSelected() {
|
|
return mSelected;
|
|
}
|
|
|
|
public PromptListItem(String aLabel) {
|
|
label = aLabel;
|
|
isGroup = false;
|
|
inGroup = false;
|
|
isParent = false;
|
|
disabled = false;
|
|
id = 0;
|
|
showAsActions = false;
|
|
}
|
|
|
|
static PromptListItem[] getArray(JSONArray items) {
|
|
if (items == null) {
|
|
return new PromptListItem[0];
|
|
}
|
|
|
|
int length = items.length();
|
|
List<PromptListItem> list = new ArrayList<PromptListItem>(length);
|
|
for (int i = 0; i < length; i++) {
|
|
try {
|
|
PromptListItem item = new PromptListItem(items.getJSONObject(i));
|
|
list.add(item);
|
|
} catch(Exception ex) { }
|
|
}
|
|
|
|
PromptListItem[] arrays = new PromptListItem[length];
|
|
list.toArray(arrays);
|
|
return arrays;
|
|
}
|
|
}
|