diff options
Diffstat (limited to 'powerprofiles/src/power-profiles.vala')
-rw-r--r-- | powerprofiles/src/power-profiles.vala | 205 |
1 files changed, 0 insertions, 205 deletions
diff --git a/powerprofiles/src/power-profiles.vala b/powerprofiles/src/power-profiles.vala deleted file mode 100644 index ab98505..0000000 --- a/powerprofiles/src/power-profiles.vala +++ /dev/null @@ -1,205 +0,0 @@ -namespace AstalPowerProfiles { -[DBus (name = "org.freedesktop.UPower.PowerProfiles")] -private interface IPowerProfiles : DBusProxy { - public abstract string[] actions { owned get; } - public abstract string active_profile { owned get; set; } - public abstract HashTable<string, Variant>[] active_profile_holds { owned get; } - public abstract string performance_degraded { owned get; } - public abstract string performance_inhibited { owned get; } - public abstract HashTable<string, Variant>[] profiles { owned get; } - public abstract string version { owned get; } - - public signal void profile_released (uint cookie); - - public abstract uint hold_profile(string profile, string reason, string application_id) throws Error; - public abstract void release_profile(uint cookie) throws Error; -} - -public PowerProfiles get_default() { - return PowerProfiles.get_default(); -} - -public class PowerProfiles : Object { - private static PowerProfiles instance; - public static PowerProfiles get_default() { - if (instance == null) - instance = new PowerProfiles(); - - return instance; - } - - private IPowerProfiles proxy; - - construct { - try { - proxy = Bus.get_proxy_sync( - GLib.BusType.SYSTEM, - "org.freedesktop.UPower.PowerProfiles", - "/org/freedesktop/UPower/PowerProfiles" - ); - - proxy.profile_released.connect((cookie) => profile_released(cookie)); - proxy.g_properties_changed.connect((props) => { - var map = (HashTable<string, Variant>)props; - foreach (var key in map.get_keys()) { - notify_property(kebab_case(key)); - if (key == "ActiveProfile") - notify_property("icon-name"); - } - }); - } catch (Error error){ - critical(error.message); - } - } - - public string active_profile { - owned get { return proxy.active_profile; } - set { proxy.active_profile = value; } - } - - public string icon_name { - owned get { return @"power-profile-$active_profile-symbolic"; } - } - - public string[] actions { - owned get { return proxy.actions.copy(); } - } - - public Hold[] active_profile_holds { - owned get { - Hold[] holds = new Hold[proxy.active_profile_holds.length]; - for (var i = 0; i < proxy.active_profile_holds.length; ++i) { - var hold = proxy.active_profile_holds[i]; - holds[i] = Hold() { - application_id = hold.get("ApplicationId").get_string(), - profile = hold.get("Profile").get_string(), - reason = hold.get("Reason").get_string() - }; - } - return holds; - } - } - - public string performance_degraded { - owned get { return proxy.performance_degraded; } - } - - public string performance_inhibited { - owned get { return proxy.performance_degraded; } - } - - public Profile[] profiles { - owned get { - Profile[] profs = new Profile[proxy.profiles.length]; - for (var i = 0; i < proxy.profiles.length; ++i) { - var prof = proxy.profiles[i]; - profs[i] = Profile() { - profile = prof.get("Profile").get_string(), - cpu_driver = prof.get("CpuDriver").get_string(), - platform_driver = prof.get("PlatformDriver").get_string(), - driver = prof.get("Driver").get_string() - }; - } - return profs; - } - } - - public string version { - owned get { return proxy.version; } - } - - public signal void profile_released (uint cookie); - - public int hold_profile(string profile, string reason, string application_id) { - try { - return (int)proxy.hold_profile(profile, reason, application_id); - } catch (Error error) { - critical(error.message); - return -1; - } - } - - public void release_profile(uint cookie) { - try { - proxy.release_profile(cookie); - } catch (Error error) { - critical(error.message); - } - } - - public string to_json_string() { - var acts = new Json.Builder().begin_array(); - foreach (var action in actions) { - acts.add_string_value(action); - } - - var active_holds = new Json.Builder().begin_array(); - foreach (var action in active_profile_holds) { - active_holds.add_value(new Json.Builder() - .begin_object() - .set_member_name("application_id").add_string_value(action.application_id) - .set_member_name("profile").add_string_value(action.profile) - .set_member_name("reason").add_string_value(action.reason) - .end_object() - .get_root()); - } - - var profs = new Json.Builder().begin_array(); - foreach (var prof in profiles) { - profs.add_value(new Json.Builder() - .begin_object() - .set_member_name("profie").add_string_value(prof.profile) - .set_member_name("driver").add_string_value(prof.driver) - .set_member_name("cpu_driver").add_string_value(prof.cpu_driver) - .set_member_name("platform_driver").add_string_value(prof.platform_driver) - .end_object() - .get_root()); - } - - return Json.to_string(new Json.Builder() - .begin_object() - .set_member_name("active_profile").add_string_value(active_profile) - .set_member_name("icon_name").add_string_value(icon_name) - .set_member_name("performance_degraded").add_string_value(performance_degraded) - .set_member_name("performance_inhibited").add_string_value(performance_inhibited) - .set_member_name("actions").add_value(acts.end_array().get_root()) - .set_member_name("active_profile_holds").add_value(active_holds.end_array().get_root()) - .set_member_name("profiles").add_value(profs.end_array().get_root()) - .end_object() - .get_root(), false); - } -} - -public struct Profile { - public string profile; - public string cpu_driver; - public string platform_driver; - public string driver; -} - -public struct Hold { - public string application_id; - public string profile; - public string reason; -} - -private string kebab_case(string pascal_case) { - StringBuilder kebab_case = new StringBuilder(); - - for (int i = 0; i < pascal_case.length; i++) { - char c = pascal_case[i]; - - if (c >= 'A' && c <= 'Z') { - if (i != 0) { - kebab_case.append_c('-'); - } - - kebab_case.append_c((char)(c + 32)); - } else { - kebab_case.append_c(c); - } - } - - return kebab_case.str; -} -} |