diff --git a/app/src/main/java/org/xbmc/kore/jsonrpc/method/Settings.java b/app/src/main/java/org/xbmc/kore/jsonrpc/method/Settings.java new file mode 100644 index 0000000..beb742a --- /dev/null +++ b/app/src/main/java/org/xbmc/kore/jsonrpc/method/Settings.java @@ -0,0 +1,381 @@ +/* + * Copyright 2015 Synced Synapse. All rights reserved. + * + * 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 org.xbmc.kore.jsonrpc.method; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.node.ObjectNode; + +import org.xbmc.kore.jsonrpc.ApiException; +import org.xbmc.kore.jsonrpc.ApiMethod; + +/** + * All JSON RPC methods in Settings.* + */ +public class Settings { + // Get the settings from: + // https://github.com/xbmc/xbmc/blob/master/system/settings/settings.xml + + // The settings are only defined here on as as-needed basis +// lookandfeel.skin +// lookandfeel.skinsettings +// lookandfeel.skintheme +// lookandfeel.skincolors +// lookandfeel.font +// lookandfeel.skinzoom +// lookandfeel.startupwindow +// lookandfeel.soundskin +// lookandfeel.stereostrength +// lookandfeel.enablerssfeeds +// lookandfeel.rssedit +// locale.language +// locale.country +// locale.charset +// locale.keyboardlayouts +// locale.timezonecountry +// locale.timezone +// locale.shortdateformat +// locale.longdateformat +// locale.timeformat +// locale.use24hourclock +// locale.temperatureunit +// locale.speedunit +// filelists.showparentdiritems +// filelists.showextensions +// filelists.ignorethewhensorting +// filelists.allowfiledeletion +// filelists.showaddsourcebuttons +// filelists.showhidden +// screensaver.mode +// screensaver.settings +// screensaver.preview +// screensaver.time +// screensaver.usemusicvisinstead +// screensaver.usedimonpause +// window.width +// window.height +// videolibrary.showunwatchedplots +// videolibrary.actorthumbs +// myvideos.flatten +// videolibrary.flattentvshows +// videolibrary.tvshowsselectfirstunwatcheditem +// videolibrary.tvshowsincludeallseasonsandspecials +// videolibrary.showallitems +// videolibrary.groupmoviesets +// videolibrary.groupsingleitemsets +// videolibrary.showemptytvshows +// videolibrary.updateonstartup +// videolibrary.backgroundupdate +// videolibrary.cleanup +// videolibrary.export +// videolibrary.import +// locale.audiolanguage +// videoplayer.preferdefaultflag +// videoplayer.autoplaynextitem +// videoplayer.seeksteps +// videoplayer.seekdelay +// videoplayer.adjustrefreshrate +// videoplayer.usedisplayasclock +// videoplayer.errorinaspect +// videoplayer.stretch43 +// videoplayer.teletextenabled +// videoplayer.teletextscale +// videoplayer.stereoscopicplaybackmode +// videoplayer.quitstereomodeonstop +// videoplayer.rendermethod +// videoplayer.hqscalers +// videoplayer.useamcodec +// videoplayer.usevdpau +// videoplayer.usevdpaumixer +// videoplayer.usevdpaumpeg2 +// videoplayer.usevdpaumpeg4 +// videoplayer.usevdpauvc1 +// videoplayer.usevaapi +// videoplayer.usevaapimpeg2 +// videoplayer.usevaapimpeg4 +// videoplayer.usevaapivc1 +// videoplayer.prefervaapirender +// videoplayer.usedxva2 +// videoplayer.useomxplayer +// videoplayer.useomx +// videoplayer.usevideotoolbox +// videoplayer.usevda +// myvideos.selectaction +// myvideos.extractflags +// myvideos.extractchapterthumbs +// myvideos.replacelabels +// myvideos.extractthumb +// myvideos.stackvideos +// locale.subtitlelanguage +// subtitles.parsecaptions +// subtitles.align +// subtitles.stereoscopicdepth +// subtitles.font +// subtitles.height +// subtitles.style +// subtitles.color +// subtitles.charset +// subtitles.overrideassfonts +// subtitles.languages +// subtitles.storagemode +// subtitles.custompath +// subtitles.pauseonsearch +// subtitles.downloadfirst +// subtitles.tv +// subtitles.movie +// dvds.autorun +// dvds.playerregion +// dvds.automenu +// bluray.playerregion +// disc.playback +// accessibility.audiovisual +// accessibility.audiohearing +// accessibility.subhearing +// scrapers.moviesdefault +// scrapers.tvshowsdefault +// scrapers.musicvideosdefault +// pvrmanager.enabled +// pvrmanager.hideconnectionlostwarning +// pvrmanager.syncchannelgroups +// pvrmanager.backendchannelorder +// pvrmanager.usebackendchannelnumbers +// pvrmanager.channelmanager +// pvrmanager.groupmanager +// pvrmanager.channelscan +// pvrmanager.resetdb +// pvrmenu.displaychannelinfo +// pvrmenu.closechannelosdonswitch +// pvrmenu.iconpath +// pvrmenu.searchicons +// epg.daystodisplay +// epg.selectaction +// epg.hidenoinfoavailable +// epg.epgupdate +// epg.preventupdateswhileplayingtv +// epg.ignoredbforclient +// epg.resetepg +// pvrplayback.playminimized +// pvrplayback.startlast +// pvrplayback.signalquality +// pvrplayback.scantime +// pvrplayback.confirmchannelswitch +// pvrplayback.channelentrytimeout +// pvrplayback.fps +// pvrplayback.enableradiords +// pvrplayback.trafficadvisory +// pvrplayback.trafficadvisoryvolume +// pvrplayback.sendrdstrafficmsg +// pvrrecord.instantrecordtime +// pvrrecord.defaultpriority +// pvrrecord.defaultlifetime +// pvrrecord.marginstart +// pvrrecord.marginend +// pvrrecord.preventduplicateepisodes +// pvrrecord.timernotifications +// pvrpowermanagement.enabled +// pvrpowermanagement.backendidletime +// pvrpowermanagement.setwakeupcmd +// pvrpowermanagement.prewakeup +// pvrpowermanagement.dailywakeup +// pvrpowermanagement.dailywakeuptime +// pvrparental.enabled +// pvrparental.pin +// pvrparental.duration +// pvrclient.menuhook +// pvrtimers.timertypefilter +// pvrtimers.hidedisabledtimers +// musiclibrary.showcompilationartists +// musiclibrary.downloadinfo +// musiclibrary.albumsscraper +// musiclibrary.artistsscraper +// musiclibrary.overridetags +// musiclibrary.showallitems +// musiclibrary.updateonstartup +// musiclibrary.backgroundupdate +// musiclibrary.cleanup +// musiclibrary.export +// musiclibrary.import +// musicplayer.autoplaynextitem +// musicplayer.queuebydefault +// musicplayer.seeksteps +// musicplayer.seekdelay +// musicplayer.replaygaintype +// musicplayer.replaygainpreamp +// musicplayer.replaygainnogainpreamp +// musicplayer.replaygainavoidclipping +// musicplayer.crossfade +// musicplayer.crossfadealbumtracks +// musicplayer.visualisation +// musicfiles.usetags +// musicfiles.trackformat +// musicfiles.nowplayingtrackformat +// musicfiles.librarytrackformat +// musicfiles.findremotethumbs +// audiocds.autoaction +// audiocds.usecddb +// audiocds.recordingpath +// audiocds.trackpathformat +// audiocds.encoder +// audiocds.settings +// audiocds.ejectonrip +// mymusic.startwindow +// mymusic.songthumbinvis +// mymusic.defaultlibview +// pictures.generatethumbs +// pictures.showvideos +// pictures.displayresolution +// slideshow.staytime +// slideshow.displayeffects +// slideshow.shuffle +// weather.currentlocation +// weather.addon +// weather.addonsettings +// services.devicename +// services.upnpserver +// services.upnpannounce +// services.upnplookforexternalsubtitles +// services.upnpcontroller +// services.upnprenderer +// services.webserver +// services.webserverport +// services.webserverusername +// services.webserverpassword +// services.webskin +// services.esenabled +// services.esport +// services.esportrange +// services.esmaxclients +// services.esallinterfaces +// services.esinitialdelay +// services.escontinuousdelay +// services.zeroconf +// services.airplay +// services.airplayvolumecontrol +// services.useairplaypassword +// services.airplaypassword +// services.airplayvideosupport +// smb.winsserver +// smb.workgroup +// videoscreen.monitor +// videoscreen.screen +// videoscreen.resolution +// videoscreen.screenmode +// videoscreen.fakefullscreen +// videoscreen.blankdisplays +// videoscreen.delayrefreshchange +// videoscreen.stereoscopicmode +// videoscreen.preferedstereoscopicmode +// videoscreen.vsync +// videoscreen.guicalibration +// videoscreen.testpattern +// videoscreen.limitedrange +// videoscreen.dither +// videoscreen.ditherdepth +// audiooutput.audiodevice +// audiooutput.channels +// audiooutput.config +// audiooutput.samplerate +// audiooutput.stereoupmix +// audiooutput.maintainoriginalvolume +// audiooutput.processquality +// audiooutput.streamsilence +// audiooutput.supportdtshdcpudecoding +// audiooutput.dspaddonsenabled +// audiooutput.dspsettings +// audiooutput.dspresetdb +// audiooutput.guisoundmode +// audiooutput.passthrough +// audiooutput.passthroughdevice +// audiooutput.ac3passthrough +// audiooutput.ac3transcode +// audiooutput.eac3passthrough +// audiooutput.dtspassthrough +// audiooutput.truehdpassthrough +// audiooutput.dtshdpassthrough +// input.peripherals +// input.enablemouse +// input.enablejoystick +// network.usehttpproxy +// network.httpproxytype +// network.httpproxyserver +// network.httpproxyport +// network.httpproxyusername +// network.httpproxypassword +// network.bandwidth +// powermanagement.displaysoff +// powermanagement.shutdowntime +// powermanagement.shutdownstate +// powermanagement.wakeonaccess +// eventlog.enabled +// eventlog.enablednotifications +// eventlog.show +// debug.showloginfo +// debug.extralogging +// debug.setextraloglevel +// debug.screenshotpath +// masterlock.lockcode +// masterlock.startuplock +// masterlock.maxretries +// cache.harddisk +// cachevideo.dvdrom +// cachevideo.lan +// cachevideo.internet +// cacheaudio.dvdrom +// cacheaudio.lan +// cacheaudio.internet +// cachedvd.dvdrom +// cachedvd.lan +// cacheunknown.internet +// system.playlistspath +// general.addonupdates +// general.addonnotifications +// general.addonforeignfilter +// general.addonbrokenfilter + + public final static String PVRMANAGER_ENABLED = "pvrmanager.enabled"; + + + /** + * Retrieves the value of a setting + * Note, this returns a raw JsonNode. It is the responsibility of the caller to + * retrieve and parse the value, taking into account the specific setting type + * that was requested + */ + public static final class GetSettingValue extends ApiMethod { + public final static String METHOD_NAME = "Settings.GetSettingValue"; + + /** + * Retrieves the value of a setting + * Note, this returns a raw JsonNode. It is the responsibility of the caller to + * retrieve and parse the value, taking into account the specific setting type + * that was requested + */ + public GetSettingValue(String setting) { + super(); + addParameterToRequest("setting", setting); + } + + @Override + public String getMethodName() { + return METHOD_NAME; + } + + @Override + public JsonNode resultFromJson(ObjectNode jsonObject) throws ApiException { + return jsonObject.get(RESULT_NODE).get("value"); + } + } + +}