renamings

This commit is contained in:
Dorian Zedler 2020-10-18 15:08:12 +02:00
parent d867e9cfcf
commit 107928ccdf
Signed by: dorian
GPG key ID: D3B255CB8BC7CD37
32 changed files with 171 additions and 150 deletions

View file

@ -11,13 +11,13 @@ TEMPLATE = app
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
SOURCES += \ SOURCES += \
leddisplaybackend.cpp \
main.cpp \ main.cpp \
omobidisplaybackend.cpp \ leddisplaytextmodel.cpp
omobidisplaytextmodel.cpp
HEADERS += \ HEADERS += \
omobidisplaybackend.h \ leddisplaybackend.h \
omobidisplaytextmodel.h leddisplaytextmodel.h
RESOURCES += \ RESOURCES += \
ressources/qml/qml.qrc \ ressources/qml/qml.qrc \
@ -63,3 +63,10 @@ contains(ANDROID_TARGET_ARCH,armeabi-v7a) {
ANDROID_ABIS = \ ANDROID_ABIS = \
armeabi-v7a armeabi-v7a
} }
contains(ANDROID_TARGET_ARCH,) {
ANDROID_ABIS = \
armeabi-v7a
}
ANDROID_ABIS = armeabi-v7a arm64-v8a

View file

@ -1,10 +1,10 @@
#include "omobidisplaybackend.h" #include "leddisplaybackend.h"
OmobiDisplayBackend::OmobiDisplayBackend(QObject *parent) : QObject(parent) LedDisplayBackend::LedDisplayBackend(QObject *parent) : QObject(parent)
{ {
this->bleClient = new QBluetoothLeUartClient(); this->bleClient = new QBluetoothLeUartClient();
this->bleClient->setUUIDs("92fecb20-1406-426a-afa5-cd5c1f306462", "92fecb21-1406-426a-afa5-cd5c1f306462", "92fecb22-1406-426a-afa5-cd5c1f306462"); this->bleClient->setUUIDs("92fecb20-1406-426a-afa5-cd5c1f306462", "92fecb21-1406-426a-afa5-cd5c1f306462", "92fecb22-1406-426a-afa5-cd5c1f306462");
this->displayTextModel = new OmobiDisplayTextModel(this); this->displayTextModel = new LedDisplayTextModel(this);
this->textSetsBuffer.clear(); this->textSetsBuffer.clear();
this->displayBrightness = -1; this->displayBrightness = -1;
this->waitingCommands = 0; this->waitingCommands = 0;
@ -14,26 +14,26 @@ OmobiDisplayBackend::OmobiDisplayBackend(QObject *parent) : QObject(parent)
this->keepAliveTimer = new QTimer(this); this->keepAliveTimer = new QTimer(this);
this->keepAliveTimer->setInterval(5000); this->keepAliveTimer->setInterval(5000);
this->keepAliveTimer->setSingleShot(false); this->keepAliveTimer->setSingleShot(false);
connect(this->keepAliveTimer, &QTimer::timeout, this, &OmobiDisplayBackend::sendBluetoothKeepAlive); connect(this->keepAliveTimer, &QTimer::timeout, this, &LedDisplayBackend::sendBluetoothKeepAlive);
connect(this->bleClient, &QBluetoothLeUartClient::stateChanged, this, &OmobiDisplayBackend::handleBluetoothStateChange); connect(this->bleClient, &QBluetoothLeUartClient::stateChanged, this, &LedDisplayBackend::handleBluetoothStateChange);
connect(this->bleClient, &QBluetoothLeUartClient::foundNewDevice, this, &OmobiDisplayBackend::handleFoundNewDevice); connect(this->bleClient, &QBluetoothLeUartClient::foundNewDevice, this, &LedDisplayBackend::handleFoundNewDevice);
connect(this->bleClient, &QBluetoothLeUartClient::dataReceived, this, &OmobiDisplayBackend::handleBluetoothDataReceived); connect(this->bleClient, &QBluetoothLeUartClient::dataReceived, this, &LedDisplayBackend::handleBluetoothDataReceived);
connect(this->bleClient, &QBluetoothLeUartClient::connectedToDevice, this, &OmobiDisplayBackend::handleBluetoothDeviceConected); connect(this->bleClient, &QBluetoothLeUartClient::connectedToDevice, this, &LedDisplayBackend::handleBluetoothDeviceConected);
connect(this->displayTextModel, &OmobiDisplayTextModel::dataChanged, this, &OmobiDisplayBackend::handleDisplayTextModelDataChanged); connect(this->displayTextModel, &LedDisplayTextModel::dataChanged, this, &LedDisplayBackend::handleDisplayTextModelDataChanged);
connect(this->displayTextModel, &OmobiDisplayTextModel::rowsInserted, this, &OmobiDisplayBackend::handleDisplayTextModelRowsInserted); connect(this->displayTextModel, &LedDisplayTextModel::rowsInserted, this, &LedDisplayBackend::handleDisplayTextModelRowsInserted);
connect(this->displayTextModel, &OmobiDisplayTextModel::rowsRemoved, this, &OmobiDisplayBackend::handleDisplayTextModelRowsRemoved); connect(this->displayTextModel, &LedDisplayTextModel::rowsRemoved, this, &LedDisplayBackend::handleDisplayTextModelRowsRemoved);
this->setState(Idle); this->setState(Idle);
this->bleClient->startScanningForDevices(); this->bleClient->startScanningForDevices();
} }
void OmobiDisplayBackend::startScanning() { void LedDisplayBackend::startScanning() {
this->bleClient->startScanningForDevices(); this->bleClient->startScanningForDevices();
} }
void OmobiDisplayBackend::authenticate(QString code) { void LedDisplayBackend::authenticate(QString code) {
// tell display to send over existing model data // tell display to send over existing model data
this->setState(Authenticating); this->setState(Authenticating);
@ -47,16 +47,11 @@ void OmobiDisplayBackend::authenticate(QString code) {
this->sendBluetoothCommand(AuthenticateCommand, QVariantMap{{"secret", this->lastDisplaySecret}}); this->sendBluetoothCommand(AuthenticateCommand, QVariantMap{{"secret", this->lastDisplaySecret}});
} }
void OmobiDisplayBackend::handleBluetoothScanningError(QBluetoothLeUartClient::BluetoothScanError error) { void LedDisplayBackend::handleBluetoothScanningError(QBluetoothLeUartClient::BluetoothScanError error) {
if(error == QBluetoothLeUartClient::LocationPermissionDeniedError) { Q_UNUSED(error)
#ifdef Q_OS_ANDROID
// try to get permission
//QtAndroid::requestPermissions({"android.permission.ACCESS_FINE_LOCATION", "android.permission.ACCESS_COARSE_LOCATION"}, NULL);
#endif
}
} }
void OmobiDisplayBackend::handleBluetoothStateChange(QBluetoothLeUartClient::BluetoothLeUartClientState state){ void LedDisplayBackend::handleBluetoothStateChange(QBluetoothLeUartClient::BluetoothLeUartClientState state){
switch(state){ switch(state){
case QBluetoothLeUartClient::Idle: { case QBluetoothLeUartClient::Idle: {
this->setState(Idle); this->setState(Idle);
@ -102,18 +97,18 @@ void OmobiDisplayBackend::handleBluetoothStateChange(QBluetoothLeUartClient::Blu
this->keepAliveTimer->stop(); this->keepAliveTimer->stop();
} }
void OmobiDisplayBackend::handleBluetoothDeviceConected() { void LedDisplayBackend::handleBluetoothDeviceConected() {
if(this->settings->contains(this->bleClient->getCurrentDevice()->getAddress())) if(this->settings->contains(this->bleClient->getCurrentDevice()->getAddress()))
this->authenticate(this->settings->value(this->bleClient->getCurrentDevice()->getAddress()).toString()); this->authenticate(this->settings->value(this->bleClient->getCurrentDevice()->getAddress()).toString());
else else
this->setState(AuthenticationRequired); this->setState(AuthenticationRequired);
} }
void OmobiDisplayBackend::handleFoundNewDevice(QBluetoothLeUartDevice* device) { void LedDisplayBackend::handleFoundNewDevice(QBluetoothLeUartDevice* device) {
qDebug() << "Found a device: name: " << device->getName() << " address: " << device->getAddress(); qDebug() << "Found a device: name: " << device->getName() << " address: " << device->getAddress();
} }
void OmobiDisplayBackend::handleDisplayTextModelDataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector<int> &roles) { void LedDisplayBackend::handleDisplayTextModelDataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector<int> &roles) {
qDebug() << "Data changed: topLeft: " << topLeft << " bottomRight: " << bottomRight << " roles: " << roles; qDebug() << "Data changed: topLeft: " << topLeft << " bottomRight: " << bottomRight << " roles: " << roles;
@ -121,21 +116,21 @@ void OmobiDisplayBackend::handleDisplayTextModelDataChanged(const QModelIndex &t
this->updateDisplayTextSetParameter(topLeft.row(), role); this->updateDisplayTextSetParameter(topLeft.row(), role);
} }
void OmobiDisplayBackend::handleDisplayTextModelRowsInserted(const QModelIndex &parent, int first, int last) { void LedDisplayBackend::handleDisplayTextModelRowsInserted(const QModelIndex &parent, int first, int last) {
qDebug() << "Rows inserted: parent: " << parent << " first: " << first << " last " << last; qDebug() << "Rows inserted: parent: " << parent << " first: " << first << " last " << last;
for(int i = 0; i < OmobiDisplayTextModel::OmobiDisplayTextModelRoleCount; i++) { for(int i = 0; i < LedDisplayTextModel::LedDisplayTextModelRoleCount; i++) {
this->updateDisplayTextSetParameter(first, i); this->updateDisplayTextSetParameter(first, i);
} }
} }
void OmobiDisplayBackend::handleDisplayTextModelRowsRemoved(const QModelIndex &parent, int first, int last) { void LedDisplayBackend::handleDisplayTextModelRowsRemoved(const QModelIndex &parent, int first, int last) {
qDebug() << "Rows removed: parent: " << parent << " first: " << first << " last " << last; qDebug() << "Rows removed: parent: " << parent << " first: " << first << " last " << last;
// Setting Text to "" will delete the item // Setting Text to "" will delete the item
this->updateDisplayTextSetParameter(first, OmobiDisplayTextModel::TextRole, ""); this->updateDisplayTextSetParameter(first, LedDisplayTextModel::TextRole, "");
} }
void OmobiDisplayBackend::sendBluetoothCommand(OmobiDisplayCommand command, QVariant data) { void LedDisplayBackend::sendBluetoothCommand(OmobiDisplayCommand command, QVariant data) {
QVariantMap commandMap = { QVariantMap commandMap = {
{"header", command}, {"header", command},
{"data", data} {"data", data}
@ -153,7 +148,7 @@ void OmobiDisplayBackend::sendBluetoothCommand(OmobiDisplayCommand command, QVar
this->bleClient->sendData(doc.toJson(QJsonDocument::Compact)); this->bleClient->sendData(doc.toJson(QJsonDocument::Compact));
} }
void OmobiDisplayBackend::sendBluetoothKeepAlive() { void LedDisplayBackend::sendBluetoothKeepAlive() {
QJsonDocument doc = QJsonDocument::fromVariant(QVariantMap{{"header", KeepAliveCommand}}); QJsonDocument doc = QJsonDocument::fromVariant(QVariantMap{{"header", KeepAliveCommand}});
//qDebug() << "Sending keep alive: \n" << qPrintable(doc.toJson(QJsonDocument::Indented)); //qDebug() << "Sending keep alive: \n" << qPrintable(doc.toJson(QJsonDocument::Indented));
@ -161,7 +156,7 @@ void OmobiDisplayBackend::sendBluetoothKeepAlive() {
this->bleClient->sendData(doc.toJson(QJsonDocument::Compact)); this->bleClient->sendData(doc.toJson(QJsonDocument::Compact));
} }
void OmobiDisplayBackend::handleBluetoothDataReceived(QString s){ void LedDisplayBackend::handleBluetoothDataReceived(QString s){
//qDebug() << "New data: \n" << qPrintable(s); //qDebug() << "New data: \n" << qPrintable(s);
QJsonParseError parseError; QJsonParseError parseError;
@ -251,11 +246,11 @@ void OmobiDisplayBackend::handleBluetoothDataReceived(QString s){
} }
void OmobiDisplayBackend::updateDisplayTextSetParameter(int index, int parameter) { void LedDisplayBackend::updateDisplayTextSetParameter(int index, int parameter) {
this->updateDisplayTextSetParameter(index, parameter, this->displayTextModel->data(index, parameter).toString()); this->updateDisplayTextSetParameter(index, parameter, this->displayTextModel->data(index, parameter).toString());
} }
void OmobiDisplayBackend::updateDisplayTextSetParameter(int index, int parameter, QString value) { void LedDisplayBackend::updateDisplayTextSetParameter(int index, int parameter, QString value) {
if(this->state == Initing) if(this->state == Initing)
return; return;
qDebug() << "Updating data at index: " << index << " parameter: " << parameter << " and value: " << value; qDebug() << "Updating data at index: " << index << " parameter: " << parameter << " and value: " << value;
@ -269,20 +264,20 @@ void OmobiDisplayBackend::updateDisplayTextSetParameter(int index, int parameter
this->sendBluetoothCommand(SetTextSetParameterCommand, dataMap); this->sendBluetoothCommand(SetTextSetParameterCommand, dataMap);
} }
QBluetoothLeUartClient* OmobiDisplayBackend::getBleClient() { QBluetoothLeUartClient* LedDisplayBackend::getBleClient() {
return this->bleClient; return this->bleClient;
} }
OmobiDisplayTextModel* OmobiDisplayBackend::getDisplayTextModel() { LedDisplayTextModel* LedDisplayBackend::getDisplayTextModel() {
return this->displayTextModel; return this->displayTextModel;
} }
OmobiDisplayBackend::OmobiDisplayAppState OmobiDisplayBackend::getState() { LedDisplayBackend::OmobiDisplayAppState LedDisplayBackend::getState() {
return this->state; return this->state;
} }
void OmobiDisplayBackend::refreshLoadingState() { void LedDisplayBackend::refreshLoadingState() {
if(this->state != Initing && this->state != Loading) if(this->state != Initing && this->state != Loading)
return; return;
@ -296,7 +291,7 @@ void OmobiDisplayBackend::refreshLoadingState() {
this->waitingCommands--; this->waitingCommands--;
} }
void OmobiDisplayBackend::setState(OmobiDisplayAppState state) { void LedDisplayBackend::setState(OmobiDisplayAppState state) {
if(state == this->state) if(state == this->state)
return; return;
@ -309,11 +304,11 @@ void OmobiDisplayBackend::setState(OmobiDisplayAppState state) {
this->bleClient->startScanningForDevices(); this->bleClient->startScanningForDevices();
} }
int OmobiDisplayBackend::getDisplayBrightness() { int LedDisplayBackend::getDisplayBrightness() {
return this->displayBrightness; return this->displayBrightness;
} }
void OmobiDisplayBackend::setDisplayBrightness(int brightness) { void LedDisplayBackend::setDisplayBrightness(int brightness) {
if(brightness == this->displayBrightness) if(brightness == this->displayBrightness)
return; return;
@ -325,11 +320,11 @@ void OmobiDisplayBackend::setDisplayBrightness(int brightness) {
} }
void OmobiDisplayBackend::setDisplayCode(QString code) { void LedDisplayBackend::setDisplayCode(QString code) {
this->sendBluetoothCommand(SetDisplayCodeCommand, QVariantMap{{"displayCode",code}}); this->sendBluetoothCommand(SetDisplayCodeCommand, QVariantMap{{"displayCode",code}});
} }
void OmobiDisplayBackend::setDisplayName(QString name) { void LedDisplayBackend::setDisplayName(QString name) {
// This will restart the display!! // This will restart the display!!
this->sendBluetoothCommand(SetDisplayNameCommand, QVariantMap{{"displayName", name}}); this->sendBluetoothCommand(SetDisplayNameCommand, QVariantMap{{"displayName", name}});
} }

View file

@ -8,18 +8,18 @@
#include <QSettings> #include <QSettings>
#include <qbluetoothleuartclient.h> #include <qbluetoothleuartclient.h>
#include <omobidisplaytextmodel.h> #include <leddisplaytextmodel.h>
class OmobiDisplayBackend : public QObject class LedDisplayBackend : public QObject
{ {
Q_OBJECT Q_OBJECT
Q_PROPERTY(QBluetoothLeUartClient* bleClient READ getBleClient NOTIFY bleClientChanged) Q_PROPERTY(QBluetoothLeUartClient* bleClient READ getBleClient NOTIFY bleClientChanged)
Q_PROPERTY(OmobiDisplayAppState state READ getState WRITE setState NOTIFY stateChanged) Q_PROPERTY(OmobiDisplayAppState state READ getState WRITE setState NOTIFY stateChanged)
Q_PROPERTY(OmobiDisplayTextModel* displayTextModel READ getDisplayTextModel NOTIFY displayTextModelChanged) Q_PROPERTY(LedDisplayTextModel* displayTextModel READ getDisplayTextModel NOTIFY displayTextModelChanged)
Q_PROPERTY(int displayBrightness READ getDisplayBrightness WRITE setDisplayBrightness NOTIFY displayBrightnessChanged) Q_PROPERTY(int displayBrightness READ getDisplayBrightness WRITE setDisplayBrightness NOTIFY displayBrightnessChanged)
public: public:
explicit OmobiDisplayBackend(QObject *parent = nullptr); explicit LedDisplayBackend(QObject *parent = nullptr);
enum OmobiDisplayAppState { enum OmobiDisplayAppState {
Idle, Idle,
@ -36,6 +36,11 @@ public:
}; };
Q_ENUM(OmobiDisplayAppState) Q_ENUM(OmobiDisplayAppState)
static void init() {
qmlRegisterType<LedDisplayBackend>("de.itsblue.LedDisplayController", 1, 0, "LedDisplayBackend");
qmlRegisterUncreatableType<LedDisplayTextModel>("de.itsblue.LedDisplayController", 1, 0, "LedDisplayTextModel", "LedDisplayTextModel cannot be created");
};
private: private:
enum OmobiDisplayCommand { enum OmobiDisplayCommand {
AuthenticateCommand = 0, AuthenticateCommand = 0,
@ -57,7 +62,7 @@ private:
OmobiDisplayAppState state; OmobiDisplayAppState state;
QBluetoothLeUartClient *bleClient; QBluetoothLeUartClient *bleClient;
QTimer *keepAliveTimer; QTimer *keepAliveTimer;
OmobiDisplayTextModel* displayTextModel; LedDisplayTextModel* displayTextModel;
int waitingCommands; int waitingCommands;
QList<QMap<int, QVariant>> textSetsBuffer; QList<QMap<int, QVariant>> textSetsBuffer;
int displayBrightness; int displayBrightness;
@ -70,7 +75,7 @@ public slots:
Q_INVOKABLE void authenticate(QString secret); Q_INVOKABLE void authenticate(QString secret);
Q_INVOKABLE QBluetoothLeUartClient* getBleClient(); Q_INVOKABLE QBluetoothLeUartClient* getBleClient();
Q_INVOKABLE OmobiDisplayAppState getState(); Q_INVOKABLE OmobiDisplayAppState getState();
Q_INVOKABLE OmobiDisplayTextModel* getDisplayTextModel(); Q_INVOKABLE LedDisplayTextModel* getDisplayTextModel();
Q_INVOKABLE int getDisplayBrightness(); Q_INVOKABLE int getDisplayBrightness();
Q_INVOKABLE void setDisplayBrightness(int brightness); Q_INVOKABLE void setDisplayBrightness(int brightness);
Q_INVOKABLE void setDisplayCode(QString code); Q_INVOKABLE void setDisplayCode(QString code);

View file

@ -1,39 +1,39 @@
#include "omobidisplaytextmodel.h" #include "leddisplaytextmodel.h"
OmobiDisplayTextModel::OmobiDisplayTextModel(QObject* parent) : QAbstractListModel(parent) LedDisplayTextModel::LedDisplayTextModel(QObject* parent) : QAbstractListModel(parent)
{ {
this->maximumTextSets = 0; this->maximumTextSets = 0;
this->maximumTextLength = 0; this->maximumTextLength = 0;
connect(this, &OmobiDisplayTextModel::rowsInserted, this, &OmobiDisplayTextModel::rowCountChanged); connect(this, &LedDisplayTextModel::rowsInserted, this, &LedDisplayTextModel::rowCountChanged);
connect(this, &OmobiDisplayTextModel::rowsRemoved, this, &OmobiDisplayTextModel::rowCountChanged); connect(this, &LedDisplayTextModel::rowsRemoved, this, &LedDisplayTextModel::rowCountChanged);
} }
int OmobiDisplayTextModel::rowCount(const QModelIndex &) const int LedDisplayTextModel::rowCount(const QModelIndex &) const
{ {
return this->texts.length(); return this->texts.length();
} }
QVariant OmobiDisplayTextModel::data(const QModelIndex &index, int role) const QVariant LedDisplayTextModel::data(const QModelIndex &index, int role) const
{ {
return this->data(index.row(), role); return this->data(index.row(), role);
} }
QVariant OmobiDisplayTextModel::data(int row, int role) const { QVariant LedDisplayTextModel::data(int row, int role) const {
if (row < rowCount()) { if (row < rowCount()) {
if(this->texts[row].contains(role)) { if(this->texts[row].contains(role)) {
if(role == IndexRole) if(role == IndexRole)
return row; return row;
QVariant value = this->texts[row][role]; QVariant value = this->texts[row][role];
value.convert(this->roleDataTypes[OmobiDisplayTextModelRole(role)]); value.convert(this->roleDataTypes[LedDisplayTextModelRole(role)]);
return value; return value;
} }
} }
return QVariant(); return QVariant();
} }
QHash<int, QByteArray> OmobiDisplayTextModel::roleNames() const QHash<int, QByteArray> LedDisplayTextModel::roleNames() const
{ {
static const QHash<int, QByteArray> roles { static const QHash<int, QByteArray> roles {
{ TextRole, "text" }, { TextRole, "text" },
@ -49,7 +49,7 @@ QHash<int, QByteArray> OmobiDisplayTextModel::roleNames() const
return roles; return roles;
} }
void OmobiDisplayTextModel::append( void LedDisplayTextModel::append(
QString text, QString text,
bool active, bool active,
unsigned int runtime, unsigned int runtime,
@ -81,14 +81,14 @@ void OmobiDisplayTextModel::append(
this->append(roles); this->append(roles);
} }
void OmobiDisplayTextModel::append(const QMap<int, QVariant> &roles) { void LedDisplayTextModel::append(const QMap<int, QVariant> &roles) {
int row = this->texts.length(); int row = this->texts.length();
this->beginInsertRows(QModelIndex(), row, row); this->beginInsertRows(QModelIndex(), row, row);
this->texts.insert(row, roles); this->texts.insert(row, roles);
this->endInsertRows(); this->endInsertRows();
} }
bool OmobiDisplayTextModel::setData(const QModelIndex &index, const QVariant &value, int role) { bool LedDisplayTextModel::setData(const QModelIndex &index, const QVariant &value, int role) {
if (index.row() >= rowCount() || !this->texts[index.row()].contains(role)) if (index.row() >= rowCount() || !this->texts[index.row()].contains(role))
return false; return false;
@ -107,7 +107,7 @@ bool OmobiDisplayTextModel::setData(const QModelIndex &index, const QVariant &va
return true; return true;
} }
void OmobiDisplayTextModel::remove(int row) void LedDisplayTextModel::remove(int row)
{ {
if (row < 0 || row >= this->rowCount()) if (row < 0 || row >= this->rowCount())
return; return;
@ -117,12 +117,12 @@ void OmobiDisplayTextModel::remove(int row)
endRemoveRows(); endRemoveRows();
} }
void OmobiDisplayTextModel::clear() { void LedDisplayTextModel::clear() {
for(int i = 0; i < this->texts.length(); i++) for(int i = 0; i < this->texts.length(); i++)
this->remove(i); this->remove(i);
} }
bool OmobiDisplayTextModel::setTexts(QList<QMap<int, QVariant>> texts) { bool LedDisplayTextModel::setTexts(QList<QMap<int, QVariant>> texts) {
this->beginResetModel(); this->beginResetModel();
this->resetInternalData(); this->resetInternalData();
this->texts.clear(); this->texts.clear();
@ -134,11 +134,11 @@ bool OmobiDisplayTextModel::setTexts(QList<QMap<int, QVariant>> texts) {
return true; return true;
} }
QList<QMap<int, QVariant>> OmobiDisplayTextModel::getTexts() { QList<QMap<int, QVariant>> LedDisplayTextModel::getTexts() {
return this->texts; return this->texts;
} }
QMap<int, QVariant> OmobiDisplayTextModel::getText(const QModelIndex &index) { QMap<int, QVariant> LedDisplayTextModel::getText(const QModelIndex &index) {
if (index.row() < this->rowCount()) if (index.row() < this->rowCount())
return this->texts[index.row()]; return this->texts[index.row()];
@ -146,6 +146,6 @@ QMap<int, QVariant> OmobiDisplayTextModel::getText(const QModelIndex &index) {
} }
int OmobiDisplayTextModel::getMaximumTextSets() { int LedDisplayTextModel::getMaximumTextSets() {
return this->maximumTextSets; return this->maximumTextSets;
} }

View file

@ -1,21 +1,21 @@
#ifndef OMOBIDISPLAYTEXTMODEL_H #ifndef LEDDISPLAYTEXTMODEL_H
#define OMOBIDISPLAYTEXTMODEL_H #define LEDDISPLAYTEXTMODEL_H
#include <QAbstractListModel> #include <QAbstractListModel>
#include <QObject> #include <QObject>
#include <QColor> #include <QColor>
#include <QDebug> #include <QDebug>
class OmobiDisplayTextModel : public QAbstractListModel class LedDisplayTextModel : public QAbstractListModel
{ {
Q_OBJECT Q_OBJECT
Q_PROPERTY(int rowCount READ rowCount NOTIFY rowCountChanged) Q_PROPERTY(int rowCount READ rowCount NOTIFY rowCountChanged)
Q_PROPERTY(int maximumTextSets READ getMaximumTextSets NOTIFY maximumTextSetsChanged) Q_PROPERTY(int maximumTextSets READ getMaximumTextSets NOTIFY maximumTextSetsChanged)
public: public:
friend class OmobiDisplayBackend; friend class LedDisplayBackend;
enum OmobiDisplayTextModelRole { enum LedDisplayTextModelRole {
TextRole = Qt::DisplayRole, TextRole = Qt::DisplayRole,
ActiveRole, ActiveRole,
RuntimeRole, RuntimeRole,
@ -25,9 +25,9 @@ public:
ScrollSpeedRole, ScrollSpeedRole,
ScrollCountRole, ScrollCountRole,
IndexRole, IndexRole,
OmobiDisplayTextModelRoleCount LedDisplayTextModelRoleCount
}; };
Q_ENUM(OmobiDisplayTextModelRole) Q_ENUM(LedDisplayTextModelRole)
enum OmobiDisplayTextAlignment enum OmobiDisplayTextAlignment
{ {
@ -60,7 +60,7 @@ public:
Q_INVOKABLE int getMaximumTextSets(); Q_INVOKABLE int getMaximumTextSets();
protected: protected:
OmobiDisplayTextModel(QObject* parent = nullptr); LedDisplayTextModel(QObject* parent = nullptr);
bool setTexts(QList<QMap<int, QVariant>> json); bool setTexts(QList<QMap<int, QVariant>> json);
QList<QMap<int, QVariant>> getTexts(); QList<QMap<int, QVariant>> getTexts();
@ -74,7 +74,7 @@ private:
int maximumTextSets; int maximumTextSets;
int maximumTextLength; int maximumTextLength;
const QMap<OmobiDisplayTextModelRole, QVariant::Type> roleDataTypes = { const QMap<LedDisplayTextModelRole, QVariant::Type> roleDataTypes = {
{TextRole, QVariant::String}, {TextRole, QVariant::String},
{ActiveRole, QVariant::Bool}, {ActiveRole, QVariant::Bool},
{RuntimeRole, QVariant::Int}, {RuntimeRole, QVariant::Int},
@ -91,4 +91,4 @@ signals:
void maximumTextSetsChanged(); void maximumTextSetsChanged();
}; };
#endif // OMOBIDISPLAYTEXTMODEL_H #endif // LEDDISPLAYTEXTMODEL_H

View file

@ -9,8 +9,8 @@
#include <QtAndroidExtras> #include <QtAndroidExtras>
#endif #endif
#include "omobidisplaybackend.h" #include "leddisplaybackend.h"
#include "omobidisplaytextmodel.h" #include "leddisplaytextmodel.h"
/*void permissionCallback(const QtAndroid::PermissionResultMap& results) { /*void permissionCallback(const QtAndroid::PermissionResultMap& results) {
for(QtAndroid::PermissionResult result : results) { for(QtAndroid::PermissionResult result : results) {
@ -32,8 +32,7 @@ int main(int argc, char *argv[])
translator.load(":/" + QLocale::system().name() + ".qm"); translator.load(":/" + QLocale::system().name() + ".qm");
app.installTranslator(&translator); app.installTranslator(&translator);
qmlRegisterType<OmobiDisplayBackend>("de.itsblue.omobidisplayapp", 1, 0, "OmobiDisplayBackend"); LedDisplayBackend::init();
qmlRegisterUncreatableType<OmobiDisplayTextModel>("de.itsblue.omobidisplayapp", 1, 0, "OmobiDisplayTextModel", "OmobiDisplayTextModel cannot be created");
QBluetoothLeUartClient::init(); QBluetoothLeUartClient::init();
QQuickStyle::setStyle("Material"); QQuickStyle::setStyle("Material");

View file

@ -20,10 +20,13 @@ Item {
property double glowScale: 1 property double glowScale: 1
property double glowOpacity: Math.pow( control.opacity, 100 ) * 0.5 property double glowOpacity: Math.pow( control.opacity, 100 ) * 0.5
property bool interactive: true property bool interactive: true
property int horizontalPadding: width * 0.15
property int verticalPadding: height * 0.15
signal clicked signal clicked
function checkIsDarkColor(color) { function checkIsDarkColor(color) {
var c = color.substring(1); // strip # var c = color.substring(1); // strip #
var rgb = parseInt(c, 16); // convert rrggbb to decimal var rgb = parseInt(c, 16); // convert rrggbb to decimal
var r = (rgb >> 16) & 0xff; // extract red var r = (rgb >> 16) & 0xff; // extract red
@ -96,8 +99,8 @@ Item {
id: contentText id: contentText
anchors.centerIn: background anchors.centerIn: background
width: background.width * 0.7 width: background.width - 2 * control.horizontalPadding
height: background.height * 0.7 height: background.height - 2 * control.verticalPadding
font.pixelSize: height font.pixelSize: height
fontSizeMode: Text.Fit fontSizeMode: Text.Fit

View file

@ -1,7 +1,7 @@
import QtQuick 2.0 import QtQuick 2.0
import QtQuick.Controls 2.9 import QtQuick.Controls 2.9
import QtQuick.Layouts 1.0 import QtQuick.Layouts 1.0
import de.itsblue.omobidisplayapp 1.0 import de.itsblue.LedDisplayController 1.0
import de.itsblue.bluetoothleuart 1.0 import de.itsblue.bluetoothleuart 1.0
import QtQuick.Controls.Material 2.0 import QtQuick.Controls.Material 2.0
import QtGraphicalEffects 1.0 import QtGraphicalEffects 1.0
@ -30,42 +30,36 @@ Page {
Chip { Chip {
Layout.fillWidth: true Layout.fillWidth: true
Layout.preferredHeight: mainLayout.height * 0.05 Layout.preferredHeight: 35
Layout.alignment: Layout.Center Layout.alignment: Layout.Center
color: "white" verticalPadding: height * 0.25
horizontalPadding: width * 0.05
color: "#ffffff"
text: root.statusText
onClicked: { onClicked: {
if(parseInt(root.state) === LedDisplayBackend.LocationPermissionDenied && !backend.bleClient.isLocationPermissionGranted())
backend.bleClient.requestLocationPermission()
else
backend.bleClient.startScanningForDevices() backend.bleClient.startScanningForDevices()
} }
RowLayout { BusyIndicator {
spacing: mainLayout.anchors.margins id: busyIndicator
anchors.fill: parent anchors {
anchors.leftMargin: width * 0.05 right: parent.right
anchors.rightMargin: 0
Text {
Layout.fillHeight: true
Layout.fillWidth: true
verticalAlignment: Text.AlignVCenter
font.pixelSize: parent.height * 0.4
text: root.statusText
} }
BusyIndicator { height: parent.height
Layout.fillHeight: true width: height
Layout.preferredWidth: height
id: busyIndicator
scale: 0.8 scale: 0.8
opacity: root.working ? 1:0 opacity: root.working ? 1:0
} }
}
} }
Item { Item {
@ -154,7 +148,7 @@ Page {
color: "lightgrey" color: "lightgrey"
font.pixelSize: parent.height * 0.6 font.pixelSize: parent.height * 0.6
font.bold: true font.bold: true
text: parseInt(root.state) === OmobiDisplayBackend.Scanning ? "...":"?" text: parseInt(root.state) === LedDisplayBackend.Scanning ? "...":"?"
} }
} }
@ -170,7 +164,7 @@ Page {
font.pixelSize: noDisplaysRect.height * 0.3 font.pixelSize: noDisplaysRect.height * 0.3
color: Qt.darker("lightgrey", 1.1) color: Qt.darker("lightgrey", 1.1)
text: parseInt(root.state) === OmobiDisplayBackend.Scanning ? qsTr("Still scanning"):qsTr("No displays found") text: parseInt(root.state) === LedDisplayBackend.Scanning ? qsTr("Still scanning"):qsTr("No displays found")
} }
} }
@ -334,7 +328,7 @@ Page {
states: [ states: [
State { State {
name: OmobiDisplayBackend.Idle name: LedDisplayBackend.Idle
PropertyChanges { PropertyChanges {
target: root target: root
@ -348,7 +342,7 @@ Page {
} }
}, },
State { State {
name: OmobiDisplayBackend.BluetoothOff name: LedDisplayBackend.BluetoothOff
PropertyChanges { PropertyChanges {
target: bluetoothOffItem target: bluetoothOffItem
opacity: 1 opacity: 1
@ -364,7 +358,7 @@ Page {
} }
}, },
State { State {
name: OmobiDisplayBackend.LocationPermissionDenied name: LedDisplayBackend.LocationPermissionDenied
PropertyChanges { PropertyChanges {
target: noPermissionItem target: noPermissionItem
@ -381,7 +375,7 @@ Page {
} }
}, },
State { State {
name: OmobiDisplayBackend.Scanning name: LedDisplayBackend.Scanning
PropertyChanges { PropertyChanges {
target: root target: root
@ -398,7 +392,7 @@ Page {
} }
}, },
State { State {
name: OmobiDisplayBackend.ReadyToConnect name: LedDisplayBackend.ReadyToConnect
PropertyChanges { PropertyChanges {
target: root target: root
@ -408,7 +402,7 @@ Page {
}, },
State { State {
name: OmobiDisplayBackend.AuthenticationRequired name: LedDisplayBackend.AuthenticationRequired
PropertyChanges { PropertyChanges {
target: authenticationDialog target: authenticationDialog
@ -427,7 +421,7 @@ Page {
} }
}, },
State { State {
name: OmobiDisplayBackend.Authenticating name: LedDisplayBackend.Authenticating
PropertyChanges { PropertyChanges {
target: availableDisplaysListView target: availableDisplaysListView
@ -442,7 +436,7 @@ Page {
}, },
State { State {
name: OmobiDisplayBackend.Connecting name: LedDisplayBackend.Connecting
PropertyChanges { PropertyChanges {
target: availableDisplaysListView target: availableDisplaysListView
@ -456,7 +450,7 @@ Page {
} }
}, },
State { State {
name: OmobiDisplayBackend.Initing name: LedDisplayBackend.Initing
PropertyChanges { PropertyChanges {
target: availableDisplaysListView target: availableDisplaysListView

View file

@ -4,7 +4,7 @@ import QtQuick.Layouts 1.0
import QtQuick.Controls.Material 2.0 import QtQuick.Controls.Material 2.0
import QtGraphicalEffects 1.0 import QtGraphicalEffects 1.0
import de.itsblue.omobidisplayapp 1.0 import de.itsblue.LedDisplayController 1.0
import de.itsblue.bluetoothleuart 1.0 import de.itsblue.bluetoothleuart 1.0
Page { Page {
@ -34,7 +34,7 @@ Page {
Chip { Chip {
Layout.fillWidth: true Layout.fillWidth: true
Layout.preferredHeight: mainLayout.height * 0.05 Layout.preferredHeight: 35
Layout.alignment: Layout.Center Layout.alignment: Layout.Center
interactive: false interactive: false
@ -141,10 +141,10 @@ Page {
states: [ states: [
State { State {
name: OmobiDisplayBackend.Connected name: LedDisplayBackend.Connected
}, },
State { State {
name: OmobiDisplayBackend.Loading name: LedDisplayBackend.Loading
PropertyChanges { PropertyChanges {
target: loadingDialog target: loadingDialog

View file

@ -3,7 +3,7 @@ import QtQuick.Controls 2.12
import QtQuick.Layouts 1.9 import QtQuick.Layouts 1.9
import QtQuick.Controls.Material 2.0 import QtQuick.Controls.Material 2.0
import de.itsblue.omobidisplayapp 1.0 import de.itsblue.LedDisplayController 1.0
Dialog { Dialog {
id: control id: control

View file

@ -3,7 +3,7 @@ import QtQuick.Controls 2.9
import QtQuick.Layouts 1.9 import QtQuick.Layouts 1.9
import QtQuick.Controls.Material 2.0 import QtQuick.Controls.Material 2.0
import de.itsblue.omobidisplayapp 1.0 import de.itsblue.LedDisplayController 1.0
ListView { ListView {
id: control id: control

View file

@ -3,7 +3,7 @@ import QtQuick.Controls 2.12
import QtQuick.Layouts 1.9 import QtQuick.Layouts 1.9
import QtQuick.Controls.Material 2.0 import QtQuick.Controls.Material 2.0
import de.itsblue.omobidisplayapp 1.0 import de.itsblue.LedDisplayController 1.0
Dialog { Dialog {
id: control id: control
@ -83,6 +83,7 @@ Dialog {
id: runtimeSpinBox id: runtimeSpinBox
Layout.fillWidth: true Layout.fillWidth: true
editable: true editable: true
from: 1
to: 3600 to: 3600
text: qsTr("Runtime (in s)") text: qsTr("Runtime (in s)")
} }
@ -117,7 +118,7 @@ Dialog {
SpinBoxDelegate { SpinBoxDelegate {
id: scrollCountSpinBox id: scrollCountSpinBox
Layout.fillWidth: true Layout.fillWidth: true
from: 0 from: 1
editable: true editable: true
text: qsTr("Scroll count") text: qsTr("Scroll count")
} }
@ -181,11 +182,11 @@ Dialog {
function reset() { function reset() {
activeSwitch.checked = true activeSwitch.checked = true
textTextField.value = "" textTextField.value = ""
runtimeSpinBox.value = 0 runtimeSpinBox.value = 1
colorColorPicker.value = "" colorColorPicker.value = "#ffffff"
alignmentComboBox.currentIndex = 0 alignmentComboBox.currentIndex = 0
scrollSwitch.checked = false scrollSwitch.checked = false
scrollSpeedSpinBox.value = 5 scrollSpeedSpinBox.value = 5
scrollCountSpinBox.value = 0 scrollCountSpinBox.value = 1
} }
} }

View file

@ -1,7 +1,7 @@
import QtQuick 2.12 import QtQuick 2.12
import QtQuick.Controls 2.0 import QtQuick.Controls 2.0
import QtQuick.Window 2.12 import QtQuick.Window 2.12
import de.itsblue.omobidisplayapp 1.0 import de.itsblue.LedDisplayController 1.0
import de.itsblue.bluetoothleuart 1.0 import de.itsblue.bluetoothleuart 1.0
import QtQuick.Controls.Material 2.0 import QtQuick.Controls.Material 2.0
import QtQuick.Layouts 1.0 import QtQuick.Layouts 1.0
@ -24,7 +24,7 @@ ApplicationWindow {
anchors.fill: parent anchors.fill: parent
Material.accent: "#0094ff" Material.accent: "#0094ff"
Material.theme: Material.System Material.theme: Material.Dark
header: ToolBar { header: ToolBar {
id: headerToolBar id: headerToolBar
@ -97,7 +97,7 @@ ApplicationWindow {
} }
} }
OmobiDisplayBackend { LedDisplayBackend {
id: backend id: backend
} }
@ -171,7 +171,7 @@ ApplicationWindow {
states: [ states: [
State { State {
name: OmobiDisplayBackend.Idle name: LedDisplayBackend.Idle
PropertyChanges { PropertyChanges {
target: mainStack target: mainStack
currentComponent: connectPageComp currentComponent: connectPageComp
@ -179,7 +179,7 @@ ApplicationWindow {
}, },
State { State {
name: OmobiDisplayBackend.BluetoothOff name: LedDisplayBackend.BluetoothOff
PropertyChanges { PropertyChanges {
target: mainStack target: mainStack
currentComponent: connectPageComp currentComponent: connectPageComp
@ -187,7 +187,7 @@ ApplicationWindow {
}, },
State { State {
name: OmobiDisplayBackend.LocationPermissionDenied name: LedDisplayBackend.LocationPermissionDenied
PropertyChanges { PropertyChanges {
target: mainStack target: mainStack
currentComponent: connectPageComp currentComponent: connectPageComp
@ -195,7 +195,7 @@ ApplicationWindow {
}, },
State { State {
name: OmobiDisplayBackend.Scanning name: LedDisplayBackend.Scanning
PropertyChanges { PropertyChanges {
target: mainStack target: mainStack
currentComponent: connectPageComp currentComponent: connectPageComp
@ -203,7 +203,7 @@ ApplicationWindow {
}, },
State { State {
name: OmobiDisplayBackend.ReadyToConnect name: LedDisplayBackend.ReadyToConnect
PropertyChanges { PropertyChanges {
target: mainStack target: mainStack
currentComponent: connectPageComp currentComponent: connectPageComp
@ -211,7 +211,7 @@ ApplicationWindow {
}, },
State { State {
name: OmobiDisplayBackend.Connecting name: LedDisplayBackend.Connecting
PropertyChanges { PropertyChanges {
target: mainStack target: mainStack
currentComponent: connectPageComp currentComponent: connectPageComp
@ -219,7 +219,7 @@ ApplicationWindow {
}, },
State { State {
name: OmobiDisplayBackend.AuthenticationRequired name: LedDisplayBackend.AuthenticationRequired
PropertyChanges { PropertyChanges {
target: mainStack target: mainStack
currentComponent: connectPageComp currentComponent: connectPageComp
@ -227,7 +227,7 @@ ApplicationWindow {
}, },
State { State {
name: OmobiDisplayBackend.Authenticating name: LedDisplayBackend.Authenticating
PropertyChanges { PropertyChanges {
target: mainStack target: mainStack
currentComponent: connectPageComp currentComponent: connectPageComp
@ -235,7 +235,7 @@ ApplicationWindow {
}, },
State { State {
name: OmobiDisplayBackend.Initing name: LedDisplayBackend.Initing
PropertyChanges { PropertyChanges {
target: mainStack target: mainStack
currentComponent: connectPageComp currentComponent: connectPageComp
@ -243,7 +243,7 @@ ApplicationWindow {
}, },
State { State {
name: OmobiDisplayBackend.Connected name: LedDisplayBackend.Connected
PropertyChanges { PropertyChanges {
target: mainStack target: mainStack
currentComponent: connectedPageComp currentComponent: connectedPageComp
@ -259,7 +259,7 @@ ApplicationWindow {
}, },
State { State {
name: OmobiDisplayBackend.Loading name: LedDisplayBackend.Loading
PropertyChanges { PropertyChanges {
target: mainStack target: mainStack
currentComponent: connectedPageComp currentComponent: connectedPageComp

View file

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View file

Before

Width:  |  Height:  |  Size: 7.1 KiB

After

Width:  |  Height:  |  Size: 7.1 KiB

View file

@ -55,6 +55,24 @@
<source>No displays found. Tap to scan again</source> <source>No displays found. Tap to scan again</source>
<translation>Keine Displays gefunden. Tippe um erneut zu suchen</translation> <translation>Keine Displays gefunden. Tippe um erneut zu suchen</translation>
</message> </message>
<message>
<source>Bluetooth is turned off</source>
<translation>Bluetooth ist ausgeschaltet</translation>
</message>
<message>
<source>Error:
Location permission denied!</source>
<translation>Fehler:
Standort-Berechtigung verweigert!</translation>
</message>
<message>
<source>This app requires location permission in order for Bluetooth to work, it will not actually access your location.</source>
<translation>Diese App benötigt die Standort-Berechtigung, damit sie Bluetooth verwenden kann. Sie wird nicht auf deinen Standort zugreifen.</translation>
</message>
<message>
<source>Tap here to continue</source>
<translation>Tippe hier um fortzufahren</translation>
</message>
</context> </context>
<context> <context>
<name>ConnectedPage</name> <name>ConnectedPage</name>

@ -1 +0,0 @@
Subproject commit fba59b37770ab1ede351ec70119d2da328be6a06