/** * This file is a part of the Cairo-Dock project * * Copyright : (C) see the 'copyright' file. * E-mail : see the 'copyright' file. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 3 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include #include #include "powermanager-struct.h" #include "powermanager-config.h" #include "powermanager-common.h" #include "powermanager-upower.h" #include "powermanager-menu-functions.h" #include "powermanager-draw.h" #include "powermanager-init.h" CD_APPLET_DEFINITION (N_("PowerManager"), 2, 3, 0, CAIRO_DOCK_CATEGORY_APPLET_SYSTEM, N_("This applet displays the current state of your laptop battery: charge, time remaining, etc\n" "Click on the icon to have useful inforamtion,\n" "Right-click on the icon to hibernate or suspend the system."), "Necropotame (Adrien Pilleboue) and Fabounet") CD_APPLET_INIT_BEGIN if (myDesklet) { CD_APPLET_SET_DESKLET_RENDERER ("Simple"); CD_APPLET_ALLOW_NO_CLICKABLE_DESKLET; } ///_set_data_renderer (myApplet); cd_powermanager_start (); CD_APPLET_REGISTER_FOR_CLICK_EVENT; CD_APPLET_REGISTER_FOR_BUILD_MENU_EVENT; CD_APPLET_INIT_END CD_APPLET_STOP_BEGIN CD_APPLET_UNREGISTER_FOR_CLICK_EVENT; CD_APPLET_UNREGISTER_FOR_BUILD_MENU_EVENT; cairo_dock_discard_task (myData.pTask); // stop UPower monitoring cd_upower_stop (); // stop ACPI check loop if (myData.checkLoop != 0) { g_source_remove (myData.checkLoop); } CD_APPLET_STOP_END CD_APPLET_RELOAD_BEGIN CD_APPLET_REMOVE_OVERLAY_ON_MY_ICON (CAIRO_OVERLAY_MIDDLE); if (CD_APPLET_MY_CONFIG_CHANGED) { if (myDesklet && CD_APPLET_MY_CONTAINER_TYPE_CHANGED) // we are now in a desklet, set a renderer. { CD_APPLET_SET_DESKLET_RENDERER ("Simple"); CD_APPLET_ALLOW_NO_CLICKABLE_DESKLET; } // handle options that may have changed ///_set_data_renderer (myApplet); cd_powermanager_change_loop_frequency (myConfig.iCheckInterval); if (myDock) { if (myConfig.bHideNotOnBattery && ! myData.bOnBattery) { // hide the icon when not on battery and if needed cairo_dock_detach_icon_from_dock (myIcon, myDock); myData.bIsHidden = TRUE; } else if (myData.bIsHidden) { cairo_dock_insert_icon_in_dock (myIcon, myDock, CAIRO_DOCK_ANIMATE_ICON); ///cairo_dock_redraw_container (CAIRO_CONTAINER (myDock)); myData.bIsHidden = FALSE; } } // force the update of the icon myData.bPrevOnBattery = ! myData.bOnBattery; myData.iPrevPercentage = -1; myData.iPrevTime = -1; CD_APPLET_REMOVE_MY_DATA_RENDERER; update_icon(); } else { if (myConfig.iDisplayType == CD_POWERMANAGER_GRAPH) CD_APPLET_SET_MY_DATA_RENDERER_HISTORY_TO_MAX; if (myData.bBatteryPresent && ! myData.bOnBattery) CD_APPLET_ADD_OVERLAY_ON_MY_ICON (myConfig.cEmblemIconName ? myConfig.cEmblemIconName : MY_APPLET_SHARE_DATA_DIR"/charge.svg", CAIRO_OVERLAY_MIDDLE); } //\_______________ On redessine notre icone. /**if (myData.cBatteryStateFilePath || myData.pBatteryDeviceList != NULL) { if (myConfig.iDisplayType == CD_POWERMANAGER_GAUGE || myConfig.iDisplayType == CD_POWERMANAGER_GRAPH) // On recharge la jauge. { double fPercent = (double) myData.iPercentage / 100.; CD_APPLET_RENDER_NEW_DATA_ON_MY_ICON (&fPercent); } else if (myConfig.iDisplayType == CD_POWERMANAGER_ICONS) { cd_powermanager_draw_icon_with_effect (myData.bOnBattery); } // re-set the overlay if on sector if (! myData.bOnBattery) CD_APPLET_ADD_OVERLAY_ON_MY_ICON (myConfig.cEmblemIconName ? myConfig.cEmblemIconName : MY_APPLET_SHARE_DATA_DIR"/charge.svg", CAIRO_OVERLAY_MIDDLE); myData.iPrevPercentage = -1; myData.iPrevTime = -1; update_icon(); } else // sinon on signale par l'icone appropriee qu'aucune donnee n'est accessible. CD_APPLET_SET_IMAGE_ON_MY_ICON (MY_APPLET_SHARE_DATA_DIR"/sector.svg");*/ CD_APPLET_RELOAD_END