package org.xbmc.android.remote.business.cm; import java.util.ArrayList; import org.xbmc.android.jsonrpc.api.AbstractCall; import org.xbmc.android.jsonrpc.api.call.Application; import org.xbmc.android.jsonrpc.api.call.Files; import org.xbmc.android.jsonrpc.api.model.ApplicationModel; import org.xbmc.android.jsonrpc.api.model.ApplicationModel.PropertyValue; import org.xbmc.android.jsonrpc.api.model.ApplicationModel.PropertyValue.Version; import org.xbmc.android.jsonrpc.api.model.ListModel; import org.xbmc.android.jsonrpc.api.model.ListModel.FileItem; import org.xbmc.android.jsonrpc.io.ApiCallback; import org.xbmc.api.business.DataResponse; import org.xbmc.api.business.IInfoManager; import org.xbmc.api.object.FileLocation; import org.xbmc.api.type.MediaType; import android.content.Context; public class InfoManager extends AbstractManager implements IInfoManager { private int apiVersion = -1; public void getSystemVersion(final DataResponse<String> response, Context context) { getConnectionManager(context).call( new Application.GetProperties( ApplicationModel.PropertyValue.VERSION), new ApiCallback<ApplicationModel.PropertyValue>() { public void onResponse(AbstractCall<PropertyValue> apiCall) { PropertyValue result = apiCall.getResult(); Version version = result.version; response.value = version.major + "." + version.minor + " " + version.tag; InfoManager.this.onFinish(response); } public void onError(int code, String message, String hint) { InfoManager.this.onError(new Exception(message)); } }); } public int getAPIVersion(Context context) { return org.xbmc.android.jsonrpc.api.Version.get().getBranch().ordinal(); } public void getShares(DataResponse<ArrayList<FileLocation>> response, int mediaType, Context context) { final String media = MediaType.getName(mediaType); call(new Files.GetSources(media, null, getSort(ListModel.Sort.Method.FILE)), new ApiHandler<ArrayList<FileLocation>, ListModel.SourceItem>() { @Override public ArrayList<FileLocation> handleResponse( AbstractCall<ListModel.SourceItem> apiCall) { ArrayList<FileLocation> result = new ArrayList<FileLocation>(); ArrayList<ListModel.SourceItem> items = apiCall.getResults(); for(ListModel.SourceItem item : items) { FileLocation location = new FileLocation(item); location.isDirectory = true; result.add(location); } if("video".equals(media) || "music".equals(media)) { FileLocation location = new FileLocation(("music".equals(media) ? "Music" : "Video") + " Playlists", "special://" + media + "playlists/"); location.isDirectory = true; result.add(location); } return result; } }, response, context); } public void getDirectory(DataResponse<ArrayList<FileLocation>> response, String path, Context context, int mediaType) { call(new Files.GetDirectory(path, MediaType.getName(mediaType), getSort(ListModel.Sort.Method.FILE), FileItem.FILE), new ApiHandler<ArrayList<FileLocation>, FileItem>() { @Override public ArrayList<FileLocation> handleResponse( AbstractCall<FileItem> apiCall) { ArrayList<FileLocation> result = new ArrayList<FileLocation>(); ArrayList<FileItem> items = apiCall.getResults(); for(FileItem item : items) { result.add(new FileLocation(item)); } return result; } }, response, context); } public void getGuiSettingInt(DataResponse<Integer> response, int setting, Context context) { // TODO Auto-generated method stub } public void getGuiSettingBool(DataResponse<Boolean> response, int setting, Context context) { } public void setGuiSettingInt(DataResponse<Boolean> response, int field, int val, Context context) { // TODO Auto-generated method stub } }