aboutsummaryrefslogtreecommitdiff
path: root/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/battery
diff options
context:
space:
mode:
authorKen Moore <ken@ixsystems.com>2017-01-04 16:44:55 -0500
committerKen Moore <ken@ixsystems.com>2017-01-04 16:44:55 -0500
commit25b2e77aa2395ba9143683a5ce1a27b99ee7a211 (patch)
treebbd732bb72689b9b46dfc619d3d0e1748f7e435b /src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/battery
parentTag version 1.2.1 on the master branch in preparation for new changes from th... (diff)
downloadlumina-25b2e77aa2395ba9143683a5ce1a27b99ee7a211.tar.gz
lumina-25b2e77aa2395ba9143683a5ce1a27b99ee7a211.tar.bz2
lumina-25b2e77aa2395ba9143683a5ce1a27b99ee7a211.zip
Create a new "lumina-desktop-unified" core subproject (DO NOT USE)
This is just a staging area for the merging of the desktop, window manager, etc.. into a single unified application. It is highly fragmented right now and will not build *AT ALL* for a while.
Diffstat (limited to 'src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/battery')
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/battery/LBattery.cpp115
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/battery/LBattery.h53
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/battery/NOTES49
3 files changed, 217 insertions, 0 deletions
diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/battery/LBattery.cpp b/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/battery/LBattery.cpp
new file mode 100644
index 00000000..ee379613
--- /dev/null
+++ b/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/battery/LBattery.cpp
@@ -0,0 +1,115 @@
+//===========================================
+// Lumina-DE source code
+// Copyright (c) 2014, Susanne Jaeckel, 2015-2016 Ken Moore
+// Available under the 3-clause BSD license
+// See the LICENSE file for full details
+//===========================================
+#include "LBattery.h"
+#include "LSession.h"
+
+LBattery::LBattery(QWidget *parent, QString id, bool horizontal) : LPPlugin(parent, id, horizontal){
+ iconOld = -1;
+ //Setup the widget
+ label = new QLabel(this);
+ label->setScaledContents(true);
+ //label->setAlignment(Qt::AlignCenter);
+ this->layout()->addWidget(label);
+ //Setup the timer
+ timer = new QTimer();
+ timer->setInterval(5000); //update every 5 seconds
+ connect(timer,SIGNAL(timeout()), this, SLOT(updateBattery()) );
+ timer->start();
+ QTimer::singleShot(0,this,SLOT(OrientationChange()) ); //update the sizing/icon
+}
+
+LBattery::~LBattery(){
+ timer->stop();
+ delete timer;
+}
+
+void LBattery::updateBattery(bool force){
+ // Get current state of charge
+ //QStringList result = LUtils::getCmdOutput("/usr/sbin/apm", QStringList() << "-al");
+ int charge = LOS::batteryCharge(); //result.at(1).toInt();
+//qDebug() << "1: " << result.at(0).toInt() << " 2: " << result.at(1).toInt();
+ int icon = -1;
+ if (charge > 90) { icon = 4; }
+ else if (charge > 70) { icon = 3; }
+ else if (charge > 20) { icon = 2; }
+ else if (charge > 5) { icon = 1; }
+ else if (charge > 0 ) { icon = 0; }
+ if(LOS::batteryIsCharging()){ icon = icon+10; }
+ //icon = icon + result.at(0).toInt() * 10;
+ if (icon != iconOld || force) {
+ switch (icon) {
+ case 0:
+ label->setPixmap( LXDG::findIcon("battery-caution", "").pixmap(label->size()) );
+ break;
+ case 1:
+ label->setPixmap( LXDG::findIcon("battery-040", "").pixmap(label->size()) );
+ break;
+ case 2:
+ label->setPixmap( LXDG::findIcon("battery-060", "").pixmap(label->size()) );
+ break;
+ case 3:
+ label->setPixmap( LXDG::findIcon("battery-080", "").pixmap(label->size()) );
+ break;
+ case 4:
+ label->setPixmap( LXDG::findIcon("battery-100", "").pixmap(label->size()) );
+ break;
+ case 10:
+ label->setPixmap( LXDG::findIcon("battery-charging-caution", "").pixmap(label->size()) );
+ break;
+ case 11:
+ label->setPixmap( LXDG::findIcon("battery-charging-040", "").pixmap(label->size()) );
+ break;
+ case 12:
+ label->setPixmap( LXDG::findIcon("battery-charging-060", "").pixmap(label->size()) );
+ break;
+ case 13:
+ label->setPixmap( LXDG::findIcon("battery-charging-080", "").pixmap(label->size()) );
+ break;
+ case 14:
+ label->setPixmap( LXDG::findIcon("battery-charging", "").pixmap(label->size()) );
+ break;
+ default:
+ label->setPixmap( LXDG::findIcon("battery-missing", "").pixmap(label->size()) );
+ break;
+ }
+ if(icon<iconOld && icon==0){
+ //Play some audio warning chime when
+ LSession::handle()->playAudioFile(LOS::LuminaShare()+"low-battery.ogg");
+ }
+ if(icon==0){ label->setStyleSheet("QLabel{ background: red;}"); }
+ else if(icon==14 && charge>98){ label->setStyleSheet("QLabel{ background: green;}"); }
+ else{ label->setStyleSheet("QLabel{ background: transparent;}"); }
+ iconOld = icon;
+
+ }
+ //Now update the display
+ QString tt;
+ //Make sure the tooltip can be properly translated as necessary (Ken Moore 5/9/14)
+ if(icon > 9 && icon < 15){ tt = QString(tr("%1 % (Charging)")).arg(QString::number(charge)); }
+ else{ tt = QString( tr("%1 % (%2 Remaining)") ).arg(QString::number(charge), getRemainingTime() ); }
+ label->setToolTip(tt);
+}
+
+QString LBattery::getRemainingTime(){
+ int secs = LOS::batterySecondsLeft();
+ if(secs < 0){ return "??"; }
+ QString rem; //remaining
+ if(secs > 3600){
+ int hours = secs/3600;
+ rem.append( QString::number(hours)+"h ");
+ secs = secs - (hours*3600);
+ }
+ if(secs > 60){
+ int min = secs/60;
+ rem.append( QString::number(min)+"m ");
+ secs = secs - (min*60);
+ }
+ if(secs > 0){
+ rem.append(QString::number(secs)+"s");
+ }
+ return rem;
+}
diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/battery/LBattery.h b/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/battery/LBattery.h
new file mode 100644
index 00000000..29562d5d
--- /dev/null
+++ b/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/battery/LBattery.h
@@ -0,0 +1,53 @@
+//===========================================
+// Lumina-DE source code
+// Copyright (c) 2014, Susanne Jaeckel
+// Available under the 3-clause BSD license
+// See the LICENSE file for full details
+//===========================================
+#ifndef _LUMINA_DESKTOP_BATTERY_H
+#define _LUMINA_DESKTOP_BATTERY_H
+
+#include <QTimer>
+#include <QWidget>
+#include <QString>
+#include <QLabel>
+
+#include <LUtils.h>
+#include <LuminaXDG.h>
+#include <LuminaOS.h>
+
+#include "../../Globals.h"
+//#include "../LTBWidget.h"
+#include "../LPPlugin.h"
+
+class LBattery : public LPPlugin{
+ Q_OBJECT
+public:
+ LBattery(QWidget *parent = 0, QString id = "battery", bool horizontal=true);
+ ~LBattery();
+
+private:
+ QTimer *timer;
+ QLabel *label;
+ int iconOld;
+
+private slots:
+ void updateBattery(bool force = false);
+ QString getRemainingTime();
+
+public slots:
+ void LocaleChange(){
+ updateBattery(true);
+ }
+
+ void OrientationChange(){
+ if(this->layout()->direction()==QBoxLayout::LeftToRight){
+ label->setFixedSize( QSize(this->height(), this->height()) );
+ }else{
+ label->setFixedSize( QSize(this->width(), this->width()) );
+ }
+ updateBattery(true); //force icon refresh
+ }
+};
+
+#endif
diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/battery/NOTES b/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/battery/NOTES
new file mode 100644
index 00000000..3d93267e
--- /dev/null
+++ b/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/battery/NOTES
@@ -0,0 +1,49 @@
+Eventuell mit einem Menü implementieren, mit Einträgen für:
+Anzeige des kompletten Status und Infos
+Herunterfahren des Systems etc.
+
+apm -a
+ Zeigt den AC line status an
+ 0 = off-line
+ 1 = on-line
+ 2 = backup-power
+
+apm -b
+ Zeigt
+ 0 = high
+ 1 = low
+ 2 = critical
+ 3 = charging
+
+apm -l
+ Zeit die prozentuale Kapazitaet
+ 255 = nicht unterstuetzt
+
+apm -t
+ Zeigt die verbleibende Zeit in Sekunden
+
+Aufruf Systemfunktionen: LUtils.h
+
+mit der Methode:
+QStringList LUtils::getCmdOutput(QString cmd, QStringList args)
+
+Icons:
+/usr/local/share/icons/oxygen/22x22/status
+oder unter:
+/usr/local/share/icons/oxygen/16x16/status
+
+battery-040.png // 40 %
+battery-060.png
+battery-080.png
+battery-100.png
+
+battery-caution.png
+battery-charging.png
+battery-charging-040.png
+battery-charging-060.png
+battery-charging-080.png
+battery-charging-caution.png
+
+battery-charging-log.png
+battery-log.png
+battery-missing.png
bgstack15