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
.addAction(tr("&About"), this, SLOT(showAbout()));
22 m_ContextMenu
.addSeparator();
23 m_ContextMenu
.addAction(tr("&Quit"), qApp
, SLOT(quit()));
25 m_DefaultTrayIcon
.setContextMenu(&m_ContextMenu
);
28 if (m_SysfsDir
.exists()) {
29 m_Timer
= startTimer(3000);
33 CPowerManager::~CPowerManager() {
37 void CPowerManager::timerEvent(QTimerEvent
*) {
38 if (m_SysfsDir
.exists()) {
40 QStringList powerSupplies
= m_SysfsDir
.entryList(QDir::Dirs
| QDir::NoDotAndDotDot
);
42 QList
<CBatteryIcon
*> newBatteryIcons
;
43 CBatteryIcon
* currentBatteryIcon
;
45 foreach(QString i
, powerSupplies
) {
46 string buffer
= readStringSysFile(m_SysfsDir
.filePath(i
+ "/type").toAscii().constData());
48 if (buffer
== "Mains") {
49 if (1 == readIntSysFile(m_SysfsDir
.filePath(i
+ "/online").toAscii().constData()))
52 else if (buffer
== "Battery") {
53 if (!m_BatteryIcons
.contains(i
))
54 currentBatteryIcon
= new CBatteryIcon(i
, &m_ContextMenu
, this);
56 currentBatteryIcon
= m_BatteryIcons
.take(i
);
57 currentBatteryIcon
->updateData();
59 newBatteryIcons
<< currentBatteryIcon
;
63 foreach(CBatteryIcon
* i
, m_BatteryIcons
) {
67 m_BatteryIcons
.clear();
69 foreach(CBatteryIcon
* i
, newBatteryIcons
)
70 m_BatteryIcons
.insert(i
->batteryName(), i
);
73 m_DefaultTrayIcon
.setToolTip("QBat - " + tr("AC adapter plugged in"));
75 m_DefaultTrayIcon
.setToolTip("QBat - " + tr("AC adapter unplugged"));
78 m_DefaultTrayIcon
.setToolTip("QBat - " + tr("no information available"));
80 m_DefaultTrayIcon
.setVisible(m_BatteryIcons
.isEmpty());
83 void CPowerManager::showAbout() {
86 aboutBox
.setWindowIcon(QIcon(UI_ICON_QBAT
));
87 aboutBox
.setIconPixmap(QPixmap(UI_ICON_QBAT
));
88 aboutBox
.setWindowTitle(tr("About QBat"));
89 aboutBox
.setText(UI_NAME
+ "\nv" + QString(UI_VERSION
));
90 aboutBox
.setStandardButtons(QMessageBox::Ok
);