Initial commit
[qbat.git] / powermanager.cpp
blobc9a8b8f33ccd801bcc70c4f142e879b6c07470f0
1 //
2 // C++ Implementation: cpowermanager
3 //
4 // Author: Oliver Groß <z.o.gross@gmx.de>, (C) 2008
5 //
6 // Copyright: See COPYING file that comes with this distribution
7 //
8 #include <QtGui>
9 #include "powermanager.h"
10 #include "common.h"
12 namespace qbat {
13 using namespace std;
15 CPowerManager::CPowerManager(QObject * parent) :
16 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);
26 timerEvent(NULL);
27 if (m_SysfsDir.exists()) {
28 m_Timer = startTimer(3000);
32 CPowerManager::~CPowerManager() {
33 killTimer(m_Timer);
36 void CPowerManager::timerEvent(QTimerEvent *) {
37 if (m_SysfsDir.exists()) {
38 bool acPlug = false;
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()))
49 acPlug = true;
51 else if (buffer == "Battery") {
52 if (!m_BatteryIcons.contains(i))
53 currentBatteryIcon = new CBatteryIcon(i, &m_ContextMenu, this);
54 else {
55 currentBatteryIcon = m_BatteryIcons.take(i);
56 currentBatteryIcon->updateData();
58 newBatteryIcons << currentBatteryIcon;
62 foreach(CBatteryIcon * i, m_BatteryIcons) {
63 delete i;
66 m_BatteryIcons.clear();
68 foreach(CBatteryIcon * i, newBatteryIcons)
69 m_BatteryIcons.insert(i->batteryName(), i);
71 if (acPlug)
72 m_DefaultTrayIcon.setToolTip("QBat - " + tr("AC adapter plugged in"));
73 else
74 m_DefaultTrayIcon.setToolTip("QBat - " + tr("AC adapter unplugged"));
76 else
77 m_DefaultTrayIcon.setToolTip("QBat - " + tr("no information available"));
79 m_DefaultTrayIcon.setVisible(m_BatteryIcons.isEmpty());