2 // C++ Implementation: cpowermanager
4 // Author: Oliver Groß <z.o.gross@gmx.de>, (C) 2008
6 // Copyright: See COPYING file that comes with this distribution
9 #include "powermanager.h"
15 CPowerManager::CPowerManager(QObject
* parent
) :
17 m_SysfsDir(UI_PATH_SYSFS_DIR
),
18 m_DefaultTrayIcon(QIcon(UI_ICON_QBAT
), this)
20 m_ContextMenu
.addAction(tr("&Settings"))->setEnabled(false);
21 m_ContextMenu
.addSeparator();
22 m_ContextMenu
.addAction(tr("&Quit"), qApp
, SLOT(quit()));
24 m_DefaultTrayIcon
.setContextMenu(&m_ContextMenu
);
27 if (m_SysfsDir
.exists()) {
28 m_Timer
= startTimer(3000);
32 CPowerManager::~CPowerManager() {
36 void CPowerManager::timerEvent(QTimerEvent
*) {
37 if (m_SysfsDir
.exists()) {
39 QStringList powerSupplies
= m_SysfsDir
.entryList(QDir::Dirs
| QDir::NoDotAndDotDot
);
41 QList
<CBatteryIcon
*> newBatteryIcons
;
42 CBatteryIcon
* currentBatteryIcon
;
44 foreach(QString i
, powerSupplies
) {
45 string buffer
= readStringSysFile(m_SysfsDir
.filePath(i
+ "/type").toAscii().constData());
47 if (buffer
== "Mains") {
48 if (1 == readIntSysFile(m_SysfsDir
.filePath(i
+ "/online").toAscii().constData()))
51 else if (buffer
== "Battery") {
52 if (!m_BatteryIcons
.contains(i
))
53 currentBatteryIcon
= new CBatteryIcon(i
, &m_ContextMenu
, this);
55 currentBatteryIcon
= m_BatteryIcons
.take(i
);
56 currentBatteryIcon
->updateData();
58 newBatteryIcons
<< currentBatteryIcon
;
62 foreach(CBatteryIcon
* i
, m_BatteryIcons
) {
66 m_BatteryIcons
.clear();
68 foreach(CBatteryIcon
* i
, newBatteryIcons
)
69 m_BatteryIcons
.insert(i
->batteryName(), i
);
72 m_DefaultTrayIcon
.setToolTip("QBat - " + tr("AC adapter plugged in"));
74 m_DefaultTrayIcon
.setToolTip("QBat - " + tr("AC adapter unplugged"));
77 m_DefaultTrayIcon
.setToolTip("QBat - " + tr("no information available"));
79 m_DefaultTrayIcon
.setVisible(m_BatteryIcons
.isEmpty());