Make LenaPi usable on Android devices

- Add app icon
- prevend android device from shutting down cpu while playing music
- fix scaling bug
- fix energy saver for RasPi by reconnecting to music player
- minor refactorings and renaming
This commit is contained in:
Jan-Martin Raemer 2022-07-16 12:19:57 +02:00
parent 851b83a53a
commit 1f12d93300
19 changed files with 499 additions and 48 deletions

View file

@ -3,6 +3,7 @@
#include <QDir>
#include <QDebug>
#include <EnergySaver.h>
#include <models/NavigationItemModel.h>
#include <models/NavigationListModel.h>
@ -19,6 +20,9 @@ NavigationController::NavigationController(QObject *parent) : QObject(parent),
mUiState->showNavigation();
mNavList->navigateTo(item);
});
/* Connect player state to energy saver to prevent device shutdown while playing music.
*/
connect(mMediaPlayer, &MusicPlayer::isPlayingChanged, this, &NavigationController::startOrStopEnergySaverDependingOnPlayerState);
}
void NavigationController::setDebugOutput(const QString& text)
@ -111,3 +115,16 @@ void NavigationController::onNavigationRequest()
mUiState->showMusicPlayer();
}
}
void NavigationController::startOrStopEnergySaverDependingOnPlayerState()
{
auto* energySaver = EnergySaver::instance();
assert(energySaver);
if(energySaver){
if(mMediaPlayer->isPlaying()){
energySaver->deactivate();
} else {
energySaver->activate();
}
}
}

View file

@ -86,6 +86,7 @@ private slots:
* @brief Either show subdirectories or music player depending on current directory type
*/
void onNavigationRequest();
void startOrStopEnergySaverDependingOnPlayerState();
};
#endif // NAVIGATIONCONTROLLER_H

View file

@ -1,27 +1,29 @@
#include "StyleController.h"
#include "StyleHandling.h"
#include <QGuiApplication>
#include <QScreen>
#include <QDebug>
StyleController::StyleController(QObject *parent)
StyleHandling::StyleHandling(QObject *parent)
: QObject{parent}, mStyleSizes(new QQmlPropertyMap(this)),
mMargins(new QQmlPropertyMap(this)), mSpacings(new QQmlPropertyMap(this)), mPaddings(new QQmlPropertyMap(this))
{
// nothing
}
void StyleController::calculateAndSetRatio()
void StyleHandling::calculateAndSetRatio()
{
qreal refHeight = 480;
qreal refWidth = 800;
// Scales to fullscreen. No rescaling when changing window size
QRect rect = QGuiApplication::primaryScreen()->geometry();
qreal height = qMax(rect.width(),rect.height());
qreal width = qMin(rect.width(), rect.height());
qreal height = qMin(rect.width(),rect.height());
qreal width = qMax(rect.width(), rect.height());
mRatio = qMin(height/refHeight, width/refWidth);
qDebug() << "mRation=" << mRatio<< "sizes="<<width<<", "<< height<<"\n";
}
void StyleController::initStyleSizes()
void StyleHandling::initStyleSizes()
{
scaleAndInsert(mStyleSizes, "roundButtonDefaultSize", 65);
scaleAndInsert(mStyleSizes, "roundButtonBorderWidth", 2);
@ -43,14 +45,14 @@ void StyleController::initStyleSizes()
}
void StyleController::initSpacings()
void StyleHandling::initSpacings()
{
scaleAndInsert(mSpacings, "defaultSpacing", 20);
scaleAndInsert(mSpacings, "smallSpacing", 10);
scaleAndInsert(mSpacings, "tinySpacing", 5);
}
void StyleController::initMargins()
void StyleHandling::initMargins()
{
scaleAndInsert(mMargins, "defaultMargin", 20);
scaleAndInsert(mMargins, "smallMargin", 10);
@ -58,22 +60,22 @@ void StyleController::initMargins()
scaleAndInsert(mMargins, "scrollHandleMargins", 1);
}
void StyleController::initPaddings()
void StyleHandling::initPaddings()
{
scaleAndInsert(mPaddings, "defaultPadding", 5);
}
void StyleController::scaleAndInsert(QQmlPropertyMap *map, const QString &key, int value)
void StyleHandling::scaleAndInsert(QQmlPropertyMap *map, const QString &key, int value)
{
map->insert(key, applyRatio(value));
}
int StyleController::applyRatio(int size) const
int StyleHandling::applyRatio(int size) const
{
return size*mRatio;
}
void StyleController::init(QQmlContext *context)
void StyleHandling::init(QQmlContext *context)
{
calculateAndSetRatio();
initStyleSizes();

View file

@ -1,5 +1,5 @@
#ifndef STYLECONTROLLER_H
#define STYLECONTROLLER_H
#ifndef STYLEHANDLING_H
#define STYLEHANDLING_H
#include <QObject>
#include <QQmlContext>
@ -20,11 +20,11 @@
* @todo scale fonts as well?
* @todo use dpi for scaling as app is very small on Android?
*/
class StyleController : public QObject
class StyleHandling : public QObject
{
Q_OBJECT
public:
explicit StyleController(QObject *parent = nullptr);
explicit StyleHandling(QObject *parent = nullptr);
/**
* @brief Calculates ratio, initializes all maps and registers them in QML context
@ -78,4 +78,4 @@ private:
QQmlPropertyMap* mPaddings = nullptr;
};
#endif // STYLECONTROLLER_H
#endif // STYLEHANDLING_H