Split project into GUI application and CLI service
83
application/application.pro
Normal file
|
@ -0,0 +1,83 @@
|
|||
# NOTICE:
|
||||
#
|
||||
# Application name defined in TARGET has a corresponding QML filename.
|
||||
# If name defined in TARGET is changed, the following needs to be done
|
||||
# to match new name:
|
||||
# - corresponding QML filename must be changed
|
||||
# - desktop icon filename must be changed
|
||||
# - desktop filename must be changed
|
||||
# - icon definition filename in desktop file must be changed
|
||||
# - translation filenames have to be changed
|
||||
|
||||
# The name of your application
|
||||
TARGET = harbour-batterybuddy
|
||||
|
||||
CONFIG += console sailfishapp sailfishapp_i18n
|
||||
|
||||
VER = 2.2
|
||||
REL = 2
|
||||
|
||||
VERSION = $${VER}-$${REL}
|
||||
$$system(bash update-spec-version.sh $$TARGET $$VER $$REL)
|
||||
DEFINES += APP_VERSION=\"\\\"$$VERSION\\\"\"
|
||||
DEFINES += APP_NAME=\"\\\"$$TARGET\\\"\"
|
||||
|
||||
# Do not define QT_NO_DEBUG_OUTPUT!
|
||||
# Use "--verbose" and "--debug" at runtime instead.
|
||||
# See main() for details.
|
||||
#DEFINES += QT_NO_DEBUG_OUTPUT
|
||||
|
||||
HEADERS += \
|
||||
src/battery.h \
|
||||
src/settings.h
|
||||
|
||||
SOURCES += src/harbour-batterybuddy.cpp \
|
||||
src/battery.cpp \
|
||||
src/settings.cpp
|
||||
|
||||
DISTFILES += qml/harbour-batterybuddy.qml \
|
||||
qml/components/AboutLabel.qml \
|
||||
qml/components/MyLabel.qml \
|
||||
qml/components/MySlider.qml \
|
||||
qml/pages\LicensePage.qml \
|
||||
qml/cover/CoverPage.qml \
|
||||
../rpm/harbour-batterybuddy.spec \
|
||||
service/clear-write-permissions.sh \
|
||||
service/harbour-batterybuddy.service \
|
||||
service/set-write-permissions.sh \
|
||||
translations/*.ts \
|
||||
harbour-batterybuddy.desktop \
|
||||
qml/pages/MainPage.qml \
|
||||
qml/pages/AboutPage.qml \
|
||||
qml/pages/InfoPage.qml \
|
||||
../rpm/harbour-batterybuddy.changes \
|
||||
qml/components/BatteryGraph.qml \
|
||||
qml/pages/SettingsPage.qml \
|
||||
qml/components/MyDetailItem.qml
|
||||
|
||||
SAILFISHAPP_ICONS = 86x86 108x108 128x128 172x172
|
||||
|
||||
TRANSLATIONS += translations/*.ts
|
||||
|
||||
OTHER_FILES += service/clear-write-permissions.sh \
|
||||
service/harbour-batterybuddy.service \
|
||||
service/set-write-permissions.sh
|
||||
|
||||
service.files = service
|
||||
service.path = /usr/share/$${TARGET}
|
||||
|
||||
INSTALLS += service
|
||||
|
||||
SUBDIRS += service
|
||||
|
||||
# Begin: include sound files
|
||||
|
||||
#OTHER_FILES += sounds/upperLimit.ogg \
|
||||
# sounds/lowerLimit.ogg \
|
||||
|
||||
#sounds.files = sounds
|
||||
#sounds.path = /usr/share/$${TARGET}
|
||||
|
||||
#INSTALLS += sounds
|
||||
|
||||
# End: include sound files
|
Before Width: | Height: | Size: 4.5 KiB After Width: | Height: | Size: 4.5 KiB |
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 4.9 KiB |
Before Width: | Height: | Size: 7.3 KiB After Width: | Height: | Size: 7.3 KiB |
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 3.8 KiB |
Before Width: | Height: | Size: 84 KiB After Width: | Height: | Size: 84 KiB |
Before Width: | Height: | Size: 97 KiB After Width: | Height: | Size: 97 KiB |
Before Width: | Height: | Size: 91 KiB After Width: | Height: | Size: 91 KiB |
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 50 KiB |
|
@ -1,81 +1,3 @@
|
|||
# NOTICE:
|
||||
#
|
||||
# Application name defined in TARGET has a corresponding QML filename.
|
||||
# If name defined in TARGET is changed, the following needs to be done
|
||||
# to match new name:
|
||||
# - corresponding QML filename must be changed
|
||||
# - desktop icon filename must be changed
|
||||
# - desktop filename must be changed
|
||||
# - icon definition filename in desktop file must be changed
|
||||
# - translation filenames have to be changed
|
||||
|
||||
# The name of your application
|
||||
TARGET = harbour-batterybuddy
|
||||
|
||||
CONFIG += console sailfishapp sailfishapp_i18n
|
||||
|
||||
VER = 2.2
|
||||
REL = 2
|
||||
|
||||
VERSION = $${VER}-$${REL}
|
||||
$$system(bash update-spec-version.sh $$TARGET $$VER $$REL)
|
||||
DEFINES += APP_VERSION=\"\\\"$$VERSION\\\"\"
|
||||
DEFINES += APP_NAME=\"\\\"$$TARGET\\\"\"
|
||||
|
||||
# Do not define QT_NO_DEBUG_OUTPUT!
|
||||
# Use "--verbose" and "--debug" at runtime instead.
|
||||
# See main() for details.
|
||||
#DEFINES += QT_NO_DEBUG_OUTPUT
|
||||
|
||||
HEADERS += \
|
||||
src/battery.h \
|
||||
src/settings.h
|
||||
|
||||
SOURCES += src/harbour-batterybuddy.cpp \
|
||||
src/battery.cpp \
|
||||
src/settings.cpp
|
||||
|
||||
DISTFILES += qml/harbour-batterybuddy.qml \
|
||||
qml/components/AboutLabel.qml \
|
||||
qml/components/MyLabel.qml \
|
||||
qml/components/MySlider.qml \
|
||||
qml/pages\LicensePage.qml \
|
||||
qml/cover/CoverPage.qml \
|
||||
rpm/harbour-batterybuddy.spec \
|
||||
service/clear-write-permissions.sh \
|
||||
service/harbour-batterybuddy.service \
|
||||
service/set-write-permissions.sh \
|
||||
translations/*.ts \
|
||||
harbour-batterybuddy.desktop \
|
||||
qml/pages/MainPage.qml \
|
||||
qml/pages/AboutPage.qml \
|
||||
qml/pages/InfoPage.qml \
|
||||
rpm/harbour-batterybuddy.changes \
|
||||
qml/components/BatteryGraph.qml \
|
||||
qml/pages/SettingsPage.qml \
|
||||
qml/components/MyDetailItem.qml
|
||||
|
||||
SAILFISHAPP_ICONS = 86x86 108x108 128x128 172x172
|
||||
|
||||
TRANSLATIONS += translations/*.ts
|
||||
|
||||
OTHER_FILES += service/clear-write-permissions.sh \
|
||||
service/harbour-batterybuddy.service \
|
||||
service/set-write-permissions.sh
|
||||
|
||||
service.files = service
|
||||
service.path = /usr/share/$${TARGET}
|
||||
|
||||
INSTALLS += service
|
||||
|
||||
# Begin: include sound files
|
||||
|
||||
#OTHER_FILES += sounds/upperLimit.ogg \
|
||||
# sounds/lowerLimit.ogg \
|
||||
|
||||
#sounds.files = sounds
|
||||
#sounds.path = /usr/share/$${TARGET}
|
||||
|
||||
#INSTALLS += sounds
|
||||
|
||||
# End: include sound files
|
||||
TEMPLATE = subdirs
|
||||
CONFIG += ordered
|
||||
SUBDIRS = application service
|
||||
|
|
22
service/service.pro
Normal file
|
@ -0,0 +1,22 @@
|
|||
TARGET = harbour-batterybuddy-daemon
|
||||
|
||||
CONFIG = qt c++11 sailfish_build
|
||||
|
||||
QT = dbus network xml
|
||||
|
||||
HEADERS += \
|
||||
src/filewatcher.h
|
||||
|
||||
SOURCES += \
|
||||
src/filewatcher.cpp \
|
||||
src/harbour-batterybuddy-daemon.cpp
|
||||
|
||||
OTHER_FILES += harbour-batterybuddy-daemon.service
|
||||
|
||||
#include($$PWD/../common/common.pri)
|
||||
|
||||
service.path = /usr/lib/systemd/user/
|
||||
service.files += harbour-batterybuddy-daemon.service
|
||||
target.path = /usr/bin/
|
||||
|
||||
INSTALLS += target service
|
94
service/src/filewatcher.cpp
Normal file
|
@ -0,0 +1,94 @@
|
|||
#include "filewatcher.h"
|
||||
|
||||
FileWatcher::FileWatcher(QObject *parent) : QObject(parent)
|
||||
{
|
||||
QString filename;
|
||||
|
||||
// Number: charge percentage, e.g. 42
|
||||
chargeFile = new QFile("/sys/class/power_supply/battery/capacity", this);
|
||||
qInfo() << "Reading capacity from" << chargeFile->fileName();
|
||||
|
||||
// String: charging, discharging, full, empty, unknown (others?)
|
||||
stateFile = new QFile("/sys/class/power_supply/battery/status", this);
|
||||
qInfo() << "Reading charge state from" << stateFile->fileName();
|
||||
|
||||
// Number: 0 or 1
|
||||
chargerConnectedFile = new QFile("/sys/class/power_supply/usb/present", this);
|
||||
qInfo() << "Reading charger status from" << chargerConnectedFile->fileName();
|
||||
|
||||
// Find and use the file to control the charger
|
||||
|
||||
// e.g. for Sony Xperia XA2
|
||||
filename = "/sys/class/power_supply/battery/input_suspend";
|
||||
if(!chargerControlFile && QFile::exists(filename)) {
|
||||
chargerControlFile = new QFile(filename, this);
|
||||
enableChargingValue = 0;
|
||||
disableChargingValue = 1;
|
||||
}
|
||||
|
||||
// e.g. for Sony Xperia Z3 Compact Tablet
|
||||
filename = "/sys/class/power_supply/battery/charging_enabled";
|
||||
if(!chargerControlFile && QFile::exists(filename)) {
|
||||
chargerControlFile = new QFile(filename, this);
|
||||
enableChargingValue = 1;
|
||||
disableChargingValue = 0;
|
||||
}
|
||||
|
||||
// e.g. for Jolla Phone
|
||||
filename = "/sys/class/power_supply/usb/charger_disable";
|
||||
if(!chargerControlFile && QFile::exists(filename)) {
|
||||
chargerControlFile = new QFile(filename, this);
|
||||
enableChargingValue = 0;
|
||||
disableChargingValue = 1;
|
||||
}
|
||||
|
||||
|
||||
if(!chargerControlFile) {
|
||||
qWarning() << "Charger control file not found!";
|
||||
qWarning() << "Please contact the developer with your device model!";
|
||||
}
|
||||
|
||||
// If we found a usable file, check that it is writable
|
||||
if(chargerControlFile) {
|
||||
if(chargerControlFile->open(QIODevice::WriteOnly)) {
|
||||
qInfo() << "Controlling charging via" << chargerControlFile->fileName();
|
||||
chargerControlFile->close();
|
||||
}
|
||||
else {
|
||||
delete chargerControlFile;
|
||||
chargerControlFile = Q_NULLPTR;
|
||||
qWarning() << "Charger control file" << chargerControlFile->fileName() << "is not writable";
|
||||
qWarning() << "Charger control feature disabled";
|
||||
}
|
||||
}
|
||||
|
||||
chargeWatcher = new QFileSystemWatcher(QStringList(chargeFile->fileName()), this);
|
||||
stateWatcher = new QFileSystemWatcher(QStringList(stateFile->fileName()), this);
|
||||
chargerConnectedWatcher = new QFileSystemWatcher(QStringList(chargerConnectedFile->fileName()), this);
|
||||
|
||||
connect(chargeWatcher, SIGNAL(fileChanged(QString)), this, SLOT(updateCharge()));
|
||||
connect(stateWatcher, SIGNAL(fileChanged(QString)), this, SLOT(updateState()));
|
||||
connect(chargerConnectedWatcher, SIGNAL(fileChanged(QString)), this, SLOT(updateChargerConnected()));
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
FileWatcher::~FileWatcher()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void FileWatcher::updateCharge()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void FileWatcher::updateState()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void FileWatcher::updateChargerConnected()
|
||||
{
|
||||
|
||||
}
|
28
service/src/filewatcher.h
Normal file
|
@ -0,0 +1,28 @@
|
|||
#ifndef FILEWATCHER_H
|
||||
#define FILEWATCHER_H
|
||||
|
||||
#include <QObject>
|
||||
#include <QFileSystemWatcher>
|
||||
#include <QFile>
|
||||
|
||||
#include <QDebug>
|
||||
|
||||
class FileWatcher : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
FileWatcher(QObject* parent = nullptr);
|
||||
~FileWatcher();
|
||||
|
||||
private:
|
||||
QFileSystemWatcher *chargeWatcher, *stateWatcher, *chargerConnectedWatcher;
|
||||
QFile *chargeFile, *stateFile, *chargerConnectedFile, *chargerControlFile;
|
||||
int enableChargingValue = 1, disableChargingValue = 0;
|
||||
|
||||
private slots:
|
||||
void updateCharge();
|
||||
void updateState();
|
||||
void updateChargerConnected();
|
||||
};
|
||||
|
||||
#endif // FILEWATCHER_H
|
6
service/src/harbour-batterybuddy-daemon.cpp
Normal file
|
@ -0,0 +1,6 @@
|
|||
#include "filewatcher.h"
|
||||
|
||||
int main()
|
||||
{
|
||||
return 0;
|
||||
}
|