1 /** 2 * This file is a part of the Cairo-Dock project 3 * 4 * Copyright : (C) see the 'copyright' file. 5 * E-mail : see the 'copyright' file. 6 * 7 * This program is free software; you can redistribute it and/or 8 * modify it under the terms of the GNU General Public License 9 * as published by the Free Software Foundation; either version 3 10 * of the License, or (at your option) any later version. 11 * 12 * This program is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * GNU General Public License for more details. 16 * You should have received a copy of the GNU General Public License 17 * along with this program. If not, see <http://www.gnu.org/licenses/>. 18 */ 19 20 #ifndef __POWERMANAGER_STRUCT__ 21 #define __POWERMANAGER_STRUCT__ 22 23 #include <cairo-dock.h> 24 #ifdef CD_UPOWER_AVAILABLE 25 #include <upower.h> 26 #endif 27 28 typedef enum _CDPowermanagerDisplayType { 29 CD_POWERMANAGER_GAUGE=0, 30 CD_POWERMANAGER_GRAPH, 31 CD_POWERMANAGER_ICONS, 32 CD_POWERMANAGER_NB_TYPES 33 } CDPowermanagerDisplayType; 34 35 typedef enum { 36 POWER_MANAGER_NOTHING = 0, 37 POWER_MANAGER_CHARGE, 38 POWER_MANAGER_TIME, 39 POWER_MANAGER_NB_QUICK_INFO_TYPE 40 } MyAppletQuickInfoType; 41 42 43 typedef enum { 44 POWER_MANAGER_CHARGE_CRITICAL = 0, 45 POWER_MANAGER_CHARGE_LOW, 46 POWER_MANAGER_CHARGE_FULL, 47 POWER_MANAGER_NB_CHARGE_LEVEL, 48 } MyAppletCharge; 49 50 51 struct _AppletConfig { 52 gchar *defaultTitle; 53 MyAppletQuickInfoType quickInfoType; 54 gint iCheckInterval; 55 56 CDPowermanagerDisplayType iDisplayType; 57 CairoDockTypeGraph iGraphType; 58 gdouble fLowColor[3]; 59 gdouble fHigholor[3]; 60 gdouble fBgColor[4]; 61 62 gint iNotificationType; 63 gchar *cNotificationAnimation; 64 gint iNotificationDuration; 65 gboolean highBatteryWitness; 66 gboolean lowBatteryWitness; 67 gboolean criticalBatteryWitness; 68 gint lowBatteryValue; 69 gchar *cGThemePath; 70 gchar *cSoundPath[POWER_MANAGER_NB_CHARGE_LEVEL]; 71 72 gdouble fLastDischargeMeanRate; 73 gdouble fLastChargeMeanRate; 74 75 gchar *cUserBatteryIconName; 76 gchar *cUserChargeIconName; 77 gchar *cEmblemIconName; 78 gboolean bHideNotOnBattery; 79 } ; 80 81 82 #ifdef CD_UPOWER_AVAILABLE 83 typedef struct { 84 UpClient *pUPowerClient; 85 GList *pBatteryDeviceList; 86 } CDSharedMemory; 87 #endif 88 89 struct _AppletData { 90 GldiTask *pTask; // async task to find the available backend (launched on startup) 91 92 // UPower 93 #ifdef CD_UPOWER_AVAILABLE 94 UpClient *pUPowerClient; 95 GList *pSignalIDList; // SID for the "battery properties changed" signal of the UPower battery device 96 gint iSignalIDAdded; 97 gint iSignalIDRemoved; 98 #endif 99 GList *pBatteryDeviceList; 100 101 // ACPI 102 gchar *cBatteryStateFilePath; // path to the ACPI file 103 gboolean bProcAcpiFound; // TRUE if in /proc/acpi (old format) 104 gboolean bSysClassFound; // TRUE if in /sys/class (new format) 105 gint checkLoop; // SID of the check loop is no UPower 106 107 // Properties 108 gchar *cTechnology; 109 gchar *cVendor; 110 gchar *cModel; 111 gdouble fMaxAvailableCapacity; 112 113 gint iTime; 114 gint iPercentage; 115 gboolean bOnBattery; 116 gboolean bBatteryPresent; 117 gint iPrevTime; 118 gint iPrevPercentage; 119 gboolean bPrevOnBattery; 120 gboolean bIsHidden; 121 122 gint iCapacity; 123 124 gdouble fChargeMeanRate; 125 gint iNbChargeMeasures; 126 gdouble fDischargeMeanRate; 127 gint iNbDischargeMeasures; 128 129 gint iStatPercentage; 130 gint iStatPercentageBegin; 131 gint iStatTime; 132 gint iStatTimeCount; 133 134 gint iOnBatteryImage; // -1 = no image yet, 0 = charging, 1 = on battery 135 } ; 136 137 138 #endif 139