2 * Copyright (C) 2005-2013 Team XBMC
5 * This Program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2, or (at your option)
10 * This Program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with XBMC; see the file COPYING. If not, see
17 * <http://www.gnu.org/licenses/>.
21 #include "XBMCOperations.h"
22 #include "ApplicationMessenger.h"
24 #include "utils/Variant.h"
25 #include "powermanagement/PowerManager.h"
27 using namespace JSONRPC;
29 JSONRPC_STATUS CXBMCOperations::GetInfoLabels(const CStdString &method, ITransportLayer *transport, IClient *client, const CVariant ¶meterObject, CVariant &result)
31 std::vector<CStdString> info;
33 for (unsigned int i = 0; i < parameterObject["labels"].size(); i++)
35 CStdString field = parameterObject["labels"][i].asString();
36 field = field.ToLower();
38 info.push_back(parameterObject["labels"][i].asString());
43 std::vector<CStdString> infoLabels = CApplicationMessenger::Get().GetInfoLabels(info);
44 for (unsigned int i = 0; i < info.size(); i++)
46 if (i >= infoLabels.size())
48 result[info[i].c_str()] = infoLabels[i];
55 JSONRPC_STATUS CXBMCOperations::GetInfoBooleans(const CStdString &method, ITransportLayer *transport, IClient *client, const CVariant ¶meterObject, CVariant &result)
57 std::vector<CStdString> info;
59 bool CanControlPower = (client->GetPermissionFlags() & ControlPower) > 0;
61 for (unsigned int i = 0; i < parameterObject["booleans"].size(); i++)
63 CStdString field = parameterObject["booleans"][i].asString();
64 field = field.ToLower();
66 // Need to override power management of whats in infomanager since jsonrpc
67 // have a security layer aswell.
68 if (field.Equals("system.canshutdown"))
69 result[parameterObject["booleans"][i].asString()] = (g_powerManager.CanPowerdown() && CanControlPower);
70 else if (field.Equals("system.canpowerdown"))
71 result[parameterObject["booleans"][i].asString()] = (g_powerManager.CanPowerdown() && CanControlPower);
72 else if (field.Equals("system.cansuspend"))
73 result[parameterObject["booleans"][i].asString()] = (g_powerManager.CanSuspend() && CanControlPower);
74 else if (field.Equals("system.canhibernate"))
75 result[parameterObject["booleans"][i].asString()] = (g_powerManager.CanHibernate() && CanControlPower);
76 else if (field.Equals("system.canreboot"))
77 result[parameterObject["booleans"][i].asString()] = (g_powerManager.CanReboot() && CanControlPower);
79 info.push_back(parameterObject["booleans"][i].asString());
84 std::vector<bool> infoLabels = CApplicationMessenger::Get().GetInfoBooleans(info);
85 for (unsigned int i = 0; i < info.size(); i++)
87 if (i >= infoLabels.size())
89 result[info[i].c_str()] = CVariant(infoLabels[i]);