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:
parent
851b83a53a
commit
1f12d93300
19 changed files with 499 additions and 48 deletions
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
@ -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
|
||||
Loading…
Add table
Add a link
Reference in a new issue