#include "StyleController.h" #include #include StyleController::StyleController(QObject *parent) : QObject{parent}, mStyleSizes(new QQmlPropertyMap(this)), mMargins(new QQmlPropertyMap(this)), mSpacings(new QQmlPropertyMap(this)), mPaddings(new QQmlPropertyMap(this)) { // nothing } void StyleController::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()); mRatio = qMin(height/refHeight, width/refWidth); } void StyleController::initStyleSizes() { scaleAndInsert(mStyleSizes, "roundButtonDefaultSize", 65); scaleAndInsert(mStyleSizes, "roundButtonBorderWidth", 2); scaleAndInsert(mStyleSizes, "smallPlayerButtonSize", 60); scaleAndInsert(mStyleSizes, "largePlayerButtonSize", 80); scaleAndInsert(mStyleSizes, "scrollHandleWidth", 16); scaleAndInsert(mStyleSizes, "scrollHandleHeight", 8); scaleAndInsert(mStyleSizes, "scrollHandleBorderWidth", 1); int progressBackgroundDefaultHeight = 10; scaleAndInsert(mStyleSizes, "progressBackgroundDefaultHeight", progressBackgroundDefaultHeight); scaleAndInsert(mStyleSizes, "progressBackgroundRadius", progressBackgroundDefaultHeight/2); scaleAndInsert(mStyleSizes, "progressBarDefaultHeight", 8); scaleAndInsert(mStyleSizes, "progressBackgroundBorderWidth", 1); scaleAndInsert(mStyleSizes, "navigationListHeight", 210); scaleAndInsert(mStyleSizes, "navigationDelegateDefaultSize", 150); } void StyleController::initSpacings() { scaleAndInsert(mSpacings, "defaultSpacing", 20); scaleAndInsert(mSpacings, "smallSpacing", 10); scaleAndInsert(mSpacings, "tinySpacing", 5); } void StyleController::initMargins() { scaleAndInsert(mMargins, "defaultMargin", 20); scaleAndInsert(mMargins, "smallMargin", 10); scaleAndInsert(mMargins, "tinyMargin", 5); scaleAndInsert(mMargins, "scrollHandleMargins", 1); } void StyleController::initPaddings() { scaleAndInsert(mPaddings, "defaultPadding", 5); } void StyleController::scaleAndInsert(QQmlPropertyMap *map, const QString &key, int value) { map->insert(key, applyRatio(value)); } int StyleController::applyRatio(int size) const { return size*mRatio; } void StyleController::init(QQmlContext *context) { calculateAndSetRatio(); initStyleSizes(); initMargins(); initSpacings(); initPaddings(); context->setContextProperty("StyleSizes", mStyleSizes); context->setContextProperty("StyleSpacings", mSpacings); context->setContextProperty("StyleMargins", mMargins); context->setContextProperty("StylePaddings", mPaddings); }