Update packaging and use KF5 for about screen. Implement basic notifications for error messages. Use icon for app icon.

This commit is contained in:
2019-11-13 21:43:58 -05:00
parent 9c5c50ef95
commit 90da697f84
9 changed files with 192 additions and 118 deletions

View File

@@ -30,6 +30,7 @@ include(KDECompilerSettings NO_POLICY_SCOPE)
find_package(Qt5 ${QT_MIN_VERSION} REQUIRED NO_MODULE COMPONENTS Core Quick Test Gui Svg QuickControls2 Bluetooth Charts) find_package(Qt5 ${QT_MIN_VERSION} REQUIRED NO_MODULE COMPONENTS Core Quick Test Gui Svg QuickControls2 Bluetooth Charts)
find_package(KF5Kirigami2 ${KF5_MIN_VERSION} REQUIRED) find_package(KF5Kirigami2 ${KF5_MIN_VERSION} REQUIRED)
find_package(KF5CoreAddons ${KF5_MIN_VERSION} REQUIRED)
################# Enable C++11 features for clang and gcc ################# ################# Enable C++11 features for clang and gcc #################

View File

@@ -7,6 +7,8 @@
<project_license>GPL-3.0-or-later</project_license> <project_license>GPL-3.0-or-later</project_license>
<content_rating type="oars-1.1" /> <content_rating type="oars-1.1" />
<url type="homepage">https://git.eyecreate.org/eyecreate/qiflora</url> <url type="homepage">https://git.eyecreate.org/eyecreate/qiflora</url>
<url type="contact">mailto:eyecreate@eyecreate.org</url>
<url type="donation">monero:49DAuwzCytB8cWVA8RXGcv1cviG2QRtZWW4U7KeX9mAtLfAewk8LAAwAUhwCRXD9tz8LESmgaAPrjZ62G8Z6JrdhRmLx2kY?tx_description=donation</url>
<developer_name>eyecreate</developer_name> <developer_name>eyecreate</developer_name>
<description> <description>
<p>Mobile friendly application to monitor Mi Flora devices.</p> <p>Mobile friendly application to monitor Mi Flora devices.</p>
@@ -14,10 +16,15 @@
</description> </description>
<screenshots> <screenshots>
<screenshot type="default"> <screenshot type="default">
<image type="source">https://git.eyecreate.org/eyecreate/qiflora/raw/v1.0/packaging/main_window.png</image> <image type="source">https://git.eyecreate.org/eyecreate/qiflora/raw/v1.1/packaging/main_window.png</image>
</screenshot> </screenshot>
</screenshots> </screenshots>
<releases> <releases>
<release version="1.0" date="2019-11-8" type="stable"/> <release version="1.0" date="2019-11-8" type="stable"/>
<release version="1.1" date="2019-11-13" type="stable">
<description>
<p>This release adds history graph for the last 48 hours.</p>
</description>
</release>
</releases> </releases>
</component> </component>

View File

@@ -1,7 +1,7 @@
[Desktop Entry] [Desktop Entry]
Name=QiFlora Name=QiFlora
Comment=Monitor plants with Mi Flora sensors. Comment=Monitor plants with Mi Flora sensors.
Version=1.0 Version=1.1
Exec=qiflora Exec=qiflora
MimeType=application/x-qiflora; MimeType=application/x-qiflora;
Icon=org.eyecreate.qiflora Icon=org.eyecreate.qiflora

View File

@@ -87,7 +87,7 @@
{ {
"type": "git", "type": "git",
"url": "https://git.eyecreate.org/eyecreate/qiflora.git", "url": "https://git.eyecreate.org/eyecreate/qiflora.git",
"tag": "v1.0", "tag": "v1.1",
"commit": "bcdf831d0c64f84642f53a4f8376a26df412b819" "commit": "bcdf831d0c64f84642f53a4f8376a26df412b819"
} }
] ]

View File

@@ -8,5 +8,5 @@ set(qiflora_SRCS
qt5_add_resources(RESOURCES resources.qrc) qt5_add_resources(RESOURCES resources.qrc)
add_executable(qiflora ${qiflora_SRCS} ${RESOURCES}) add_executable(qiflora ${qiflora_SRCS} ${RESOURCES})
target_link_libraries(qiflora Qt5::Core Qt5::Qml Qt5::Quick Qt5::Svg Qt5::Bluetooth Qt5::Charts) target_link_libraries(qiflora Qt5::Core Qt5::Qml Qt5::Quick Qt5::Svg Qt5::Bluetooth Qt5::Charts KF5::CoreAddons)
install(TARGETS qiflora ${KF5_INSTALL_TARGETS_DEFAULT_ARGS}) install(TARGETS qiflora ${KF5_INSTALL_TARGETS_DEFAULT_ARGS})

View File

@@ -1,5 +1,5 @@
import QtQuick 2.6 import QtQuick 2.6
import org.kde.kirigami 2.4 as Kirigami import org.kde.kirigami 2.6 as Kirigami
import QtQuick.Controls 2.0 as Controls import QtQuick.Controls 2.0 as Controls
import QtQuick.Layouts 1.12 as Layouts import QtQuick.Layouts 1.12 as Layouts
import QtCharts 2.3 as Charts import QtCharts 2.3 as Charts
@@ -12,6 +12,7 @@ Kirigami.ApplicationWindow {
pageStack.initialPage: mainPageComponent pageStack.initialPage: mainPageComponent
contextDrawer: Kirigami.ContextDrawer {}
QiFlora { QiFlora {
id: qiflora id: qiflora
@@ -20,7 +21,8 @@ Kirigami.ApplicationWindow {
Component { Component {
id: mainPageComponent id: mainPageComponent
Kirigami.ScrollablePage { Kirigami.Page {
id: mainPage
mainAction: Kirigami.Action { mainAction: Kirigami.Action {
iconName: "view-refresh" iconName: "view-refresh"
text: i18n("Query Device") text: i18n("Query Device")
@@ -28,9 +30,41 @@ Kirigami.ApplicationWindow {
deviceSelect.open(); deviceSelect.open();
} }
} }
contextualActions: [
Kirigami.Action {
iconName: "help-about"
text: i18n("About")
onTriggered: {
pageStack.replace(aboutPageComponent);
}
}
]
title: "Monitor" title: "Monitor"
leftPadding: 0
rightPadding: 0
Layouts.ColumnLayout {
anchors.fill: parent
Kirigami.InlineMessage {
Layouts.Layout.fillWidth: true
Layouts.Layout.leftMargin: 10
Layouts.Layout.rightMargin: 10
z: 9997
type: Kirigami.MessageType.Error
id: errorMessage
showCloseButton: true
Connections {
target: qiflora
onErrorHappened: {
errorMessage.text = description;
errorMessage.visible = true;
}
}
}
Kirigami.CardsListView { Kirigami.CardsListView {
Layouts.Layout.fillWidth: true
Layouts.Layout.fillHeight: true
id: monitorView id: monitorView
model: ListModel { model: ListModel {
id: monitorTypes id: monitorTypes
@@ -154,6 +188,8 @@ Kirigami.ApplicationWindow {
} }
} }
} }
Controls.ScrollBar.vertical: Controls.ScrollBar {}
}
} }
Kirigami.OverlaySheet { Kirigami.OverlaySheet {
@@ -202,4 +238,20 @@ Kirigami.ApplicationWindow {
} }
} }
} }
Component {
id:aboutPageComponent
Kirigami.AboutPage {
id: aboutPage
actions.main: Kirigami.Action {
iconName: "window-close"
text: "Close"
onTriggered: {
pageStack.clear();
pageStack.push(mainPageComponent);
}
}
aboutData: appAboutData
}
}
} }

View File

@@ -4,19 +4,30 @@
#include <QUrl> #include <QUrl>
#include "miflora/miflora.h" #include "miflora/miflora.h"
#include "miflora/bluetoothdevices.h" #include "miflora/bluetoothdevices.h"
#include <KAboutData>
#include <QIcon>
Q_DECL_EXPORT int main(int argc, char *argv[]) Q_DECL_EXPORT int main(int argc, char *argv[])
{ {
QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling); QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
QApplication app(argc, argv); QApplication app(argc, argv);
KAboutData aboutData("org.eyecreate.qiflora", "QiFlora", "1.1", "Mobile friendly application to monitor Mi Flora devices.",KAboutLicense::GPL_V3);//TODO:i18n
aboutData.setProductName("qiflora");
aboutData.addAuthor("Kevin Whitaker",QString(),"eyecreate@eyecreate.org","https://www.eyecreate.org");
aboutData.setDesktopFileName("org.eyecreate.qiflora");
QCoreApplication::setOrganizationName("eyecreate"); QCoreApplication::setOrganizationName("eyecreate");
QCoreApplication::setOrganizationDomain("eyecreate.org"); QCoreApplication::setOrganizationDomain("eyecreate.org");
QCoreApplication::setApplicationName("qiflora"); QCoreApplication::setApplicationName(aboutData.productName());
QCoreApplication::setApplicationVersion(aboutData.version());
app.setWindowIcon(QIcon::fromTheme("org.eyecreate.qiflora"));
QQmlApplicationEngine engine; QQmlApplicationEngine engine;
qmlRegisterType<BluetoothDevices>(); qmlRegisterType<BluetoothDevices>();
qmlRegisterType<MiFlora>("org.eyecreate.qiflora",1,0,"QiFlora"); qmlRegisterType<MiFlora>("org.eyecreate.qiflora",1,0,"QiFlora");
engine.rootContext()->setContextProperty(QStringLiteral("appAboutData"), QVariant::fromValue(aboutData));
engine.load(QUrl(QStringLiteral("qrc:///main.qml"))); engine.load(QUrl(QStringLiteral("qrc:///main.qml")));
if (engine.rootObjects().isEmpty()) { if (engine.rootObjects().isEmpty()) {

View File

@@ -77,11 +77,13 @@ QQmlListProperty<BluetoothDevices> MiFlora::getDeviceList()
void MiFlora::logControllerError ( QLowEnergyController::Error err ) void MiFlora::logControllerError ( QLowEnergyController::Error err )
{ {
qDebug() << "Error:" << err; qDebug() << "Error:" << err;
emit errorHappened(currentController->errorString());
} }
void MiFlora::logServiceError(QLowEnergyService::ServiceError err) void MiFlora::logServiceError(QLowEnergyService::ServiceError err)
{ {
qDebug() << "Service Error:" << err; qDebug() << "Service Error:" << err;
emit errorHappened("Possible Read/Write error!");
} }

View File

@@ -57,6 +57,7 @@ public:
signals: signals:
void newDeviceFound(); void newDeviceFound();
void modelUpdated(); void modelUpdated();
void errorHappened(QString description);
void temperatureChanged(float temperature); void temperatureChanged(float temperature);
void brightnessChanged(quint32 brightness); void brightnessChanged(quint32 brightness);
void moistureChanged(quint8 moisture); void moistureChanged(quint8 moisture);