If you think the Android project Muzei listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
Java Source Code
/*
* Copyright 2014 Google Inc./*www.java2s.com*/
*
* 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.google.android.apps.muzei.api.internal;
import android.os.Bundle;
import com.google.android.apps.muzei.api.Artwork;
import com.google.android.apps.muzei.api.UserCommand;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* Represents the published state of an art source.
*/publicclass SourceState {
private Artwork mCurrentArtwork;
private String mDescription;
privateboolean mWantsNetworkAvailable;
private List<UserCommand> mUserCommands = new ArrayList<UserCommand>();
public Artwork getCurrentArtwork() {
return mCurrentArtwork;
}
public String getDescription() {
return mDescription;
}
publicboolean getWantsNetworkAvailable() {
return mWantsNetworkAvailable;
}
publicint getNumUserCommands() {
return mUserCommands.size();
}
public UserCommand getUserCommandAt(int index) {
return mUserCommands.get(index);
}
publicvoid setCurrentArtwork(Artwork artwork) {
mCurrentArtwork = artwork;
}
publicvoid setDescription(String description) {
mDescription = description;
}
publicvoid setWantsNetworkAvailable(boolean wantsNetworkAvailable) {
mWantsNetworkAvailable = wantsNetworkAvailable;
}
publicvoid setUserCommands(int... userCommands) {
mUserCommands = new ArrayList<UserCommand>();
if (userCommands != null) {
for (int command : userCommands) {
mUserCommands.add(new UserCommand(command));
}
}
}
publicvoid setUserCommands(UserCommand... userCommands) {
mUserCommands = new ArrayList<UserCommand>();
if (userCommands != null) {
Collections.addAll(mUserCommands, userCommands);
}
}
publicvoid setUserCommands(List<UserCommand> userCommands) {
mUserCommands = new ArrayList<UserCommand>();
if (userCommands != null) {
for (UserCommand command : userCommands) {
mUserCommands.add(command);
}
}
}
public Bundle toBundle() {
Bundle bundle = new Bundle();
if (mCurrentArtwork != null) {
bundle.putBundle("currentArtwork", mCurrentArtwork.toBundle());
}
bundle.putString("description", mDescription);
bundle.putBoolean("wantsNetworkAvailable", mWantsNetworkAvailable);
String[] commandsSerialized = new String[mUserCommands.size()];
for (int i = 0; i < commandsSerialized.length; i++) {
commandsSerialized[i] = mUserCommands.get(i).serialize();
}
bundle.putStringArray("userCommands", commandsSerialized);
return bundle;
}
publicstatic SourceState fromBundle(Bundle bundle) {
SourceState state = new SourceState();
Bundle artworkBundle = bundle.getBundle("currentArtwork");
if (artworkBundle != null) {
state.mCurrentArtwork = Artwork.fromBundle(artworkBundle);
}
state.mDescription = bundle.getString("description");
state.mWantsNetworkAvailable = bundle.getBoolean("wantsNetworkAvailable");
String[] commandsSerialized = bundle.getStringArray("userCommands");
if (commandsSerialized != null && commandsSerialized.length > 0) {
for (String s : commandsSerialized) {
state.mUserCommands.add(UserCommand.deserialize(s));
}
}
return state;
}
public JSONObject toJson() throws JSONException{
JSONObject jsonObject = new JSONObject();
if (mCurrentArtwork != null) {
jsonObject.put("currentArtwork", mCurrentArtwork.toJson());
}
jsonObject.put("description", mDescription);
jsonObject.put("wantsNetworkAvailable", mWantsNetworkAvailable);
JSONArray commandsSerialized = new JSONArray();
for (UserCommand command : mUserCommands) {
commandsSerialized.put(command.serialize());
}
jsonObject.put("userCommands", commandsSerialized);
return jsonObject;
}
publicvoid readJson(JSONObject jsonObject) throws JSONException {
JSONObject artworkJsonObject = jsonObject.optJSONObject("currentArtwork");
if (artworkJsonObject != null) {
mCurrentArtwork = Artwork.fromJson(artworkJsonObject);
}
mDescription = jsonObject.optString("description");
mWantsNetworkAvailable = jsonObject.optBoolean("wantsNetworkAvailable");
mUserCommands.clear();
JSONArray commandsSerialized = jsonObject.optJSONArray("userCommands");
if (commandsSerialized != null && commandsSerialized.length() > 0) {
int length = commandsSerialized.length();
for (int i = 0; i < length; i++) {
mUserCommands.add(UserCommand.deserialize(commandsSerialized.optString(i)));
}
}
}
publicstatic SourceState fromJson(JSONObject jsonObject) throws JSONException{
SourceState state = new SourceState();
state.readJson(jsonObject);
return state;
}
}