Browse Source

Store screen preferences

Donald Carr 7 years ago
parent
commit
16295bb859
1 changed files with 23 additions and 9 deletions
  1. 23 9
      src/main.cpp

+ 23 - 9
src/main.cpp

@@ -96,13 +96,14 @@ void NativeUtils::monitorRunPath(const QString &path)
 
 class ArtView {
 public:
-    static QQuickView* artView();
+    static void populateScreen(QScreen *screen = nullptr);
+private:
     static QQmlEngine* sharedQmlEngine;
 };
 
 QQmlEngine* ArtView::sharedQmlEngine = nullptr;
 
-QQuickView* ArtView::artView()
+void ArtView::populateScreen(QScreen *screen)
 {
     static QString qmlPath;
 #ifdef COMPILED_RESOURCES
@@ -133,7 +134,12 @@ QQuickView* ArtView::artView()
     view->setColor(Qt::transparent);
     view->setResizeMode(QQuickView::SizeRootObjectToView);
     view->setSource(QUrl(qmlPath + "/main.qml"));
-    return view;
+    if (screen) {
+        view->setScreen(screen);
+        view->setGeometry(screen->availableGeometry());
+    }
+    view->showFullScreen();
+    qDebug() << "Displaying artwork on" << screen;
 }
 
 int main(int argc, char *argv[])
@@ -192,13 +198,21 @@ int main(int argc, char *argv[])
 
     qmlRegisterType<PictureModel>("PictureModel", 1, 0, "PictureModel");
 
-    foreach(QScreen *screen, QGuiApplication::screens()) {
-            qDebug() << "Displaying artwork on" << screen;
-            QQuickView *view = ArtView::artView();
-            view->setScreen(screen);
-            view->setGeometry(screen->availableGeometry());
-            view->showFullScreen();
+    int screenIndex = settings.value("screenIndex", "-1").toInt();
+    QList<QScreen*> screens = QGuiApplication::screens();
+
+    if (screenIndex == -1) {
+        foreach(QScreen *screen, screens) {
+            ArtView::populateScreen(screen);
+        }
+    } else {
+        if ((screenIndex >= 0) && (screenIndex < screens.length())) {
+            ArtView::populateScreen(screens.at(screenIndex));
+        } else {
+            ArtView::populateScreen();
+        }
     }
+    settings.setValue("screenIndex", screenIndex);
 
     QGuiApplication::processEvents();
 #ifdef USING_SYSTEMD