PlatformSettings now gets instantiated from QML and it will initialize quill
authorMohammed Sameer <msameer@foolab.org>
Sun, 23 Jun 2013 22:57:42 +0000 (01:57 +0300)
committerMohammed Sameer <msameer@foolab.org>
Sun, 23 Jun 2013 22:57:42 +0000 (01:57 +0300)
qml/main.qml
src/main.cpp
src/platformsettings.cpp
src/platformsettings.h

index a57fbde..4085bac 100644 (file)
@@ -44,7 +44,12 @@ Window {
                 enabled: pageStack.busy
         }
 
+        PlatformSettings {
+                id: platformSettings
+        }
+
         Component.onCompleted: {
+                platformSettings.init();
                 theme.inverted = true;
                 // TODO: hardcoding device id
                 root.resetCamera(0, settings.mode);
index 21f782b..13beeca 100644 (file)
@@ -24,7 +24,6 @@
 #include <QDeclarativeEngine>
 #include <QtDeclarative>
 #include <QGLWidget>
-#include <QuillFile>
 
 #include "settings.h"
 #include "filenaming.h"
 #include "qt_private/qdeclarativedebughelper_p.h"
 #endif /* QMLJSDEBUGGER */
 
-QSize portraitSize(const QSize& size) {
-  return size.width() > size.height() ? QSize(size.height(), size.width()) : size;
-}
-
-QSize landscapeSize(const QSize& size) {
-  return size.width() > size.height() ? size : QSize(size.height(), size.width());
-}
-
-static void initQuill(PlatformSettings *settings) {
-  // How we create thumbnails for portrait is really messy.
-  // I am sure there is a better way to tell Quill to generate proper
-  // portrait thumbnails without having 2 display levels but I don't know how.
-  // The issue is we generate screen sized thumbnails for landscape
-  // but we generate half screen sized thumbnails for portrait
-  Quill::setPreviewLevelCount(2);
-  QSize size = settings->previewSize();
-
-  // Landscape:
-  Quill::setThumbnailFlavorName(LANDSCAPE_PREVIEW_LEVEL, settings->thumbnailFlavorName());
-  Quill::setPreviewSize(LANDSCAPE_PREVIEW_LEVEL, landscapeSize(size));
-
-  // Portrait:
-  Quill::setThumbnailFlavorName(PORTRAIT_PREVIEW_LEVEL, settings->thumbnailFlavorName());
-  Quill::setPreviewSize(PORTRAIT_PREVIEW_LEVEL, portraitSize(size));
-
-  Quill::setThumbnailExtension(settings->thumbnailExtension());
-  Quill::setBackgroundRenderingColor(settings->backgroundRenderingColor());
-  Quill::setDBusThumbnailingEnabled(settings->isDBusThumbnailingEnabled());
-  Quill::setThumbnailCreationEnabled(settings->isThumbnailCreationEnabled());
-
-  QString tempPath = settings->temporaryFilePath();
-  QDir().mkpath(tempPath);
-  Quill::setTemporaryFilePath(tempPath);
-}
-
 Q_DECL_EXPORT int main(int argc, char *argv[]) {
   QApplication::setAttribute(Qt::AA_X11InitThreads, true);
   QApplication app(argc, argv);
@@ -102,11 +66,6 @@ Q_DECL_EXPORT int main(int argc, char *argv[]) {
   view.setViewportUpdateMode(QGraphicsView::FullViewportUpdate);
   view.viewport()->setAttribute(Qt::WA_NoSystemBackground);
 
-  PlatformSettings platformSettings;
-
-  // Let's initialize Quill:
-  initQuill(&platformSettings);
-
   qmlRegisterType<Settings>("CameraPlus", 1, 0, "Settings");
   qmlRegisterType<FileNaming>("CameraPlus", 1, 0, "FileNaming");
   qmlRegisterType<QuillItem>("CameraPlus", 1, 0, "QuillItem");
@@ -127,6 +86,7 @@ Q_DECL_EXPORT int main(int argc, char *argv[]) {
   qmlRegisterType<GridLines>("CameraPlus", 1, 0, "GridLines");
   qmlRegisterType<DeviceInfo>("CameraPlus", 1, 0, "DeviceInfo");
   qmlRegisterType<DeviceKeys>("CameraPlus", 1, 0, "DeviceKeys");
+  qmlRegisterType<PlatformSettings>("CameraPlus", 1, 0, "PlatformSettings");
 
   view.setSource(QUrl("qrc:/qml/main.qml"));
 
index 2cce9ba..d739695 100644 (file)
@@ -20,7 +20,9 @@
 
 #include "platformsettings.h"
 #include <QDir>
-#include <QSize>
+#include <QSettings>
+#include <Quill>
+#include "quillitem.h"
 
 #define PATH "/usr/share/cameraplus/config/cameraplus.ini"
 
 #define DBUS_THUMBNAILING_ENABLED                true
 #define BACKGROUND_RENDERING_COLOR               QColor(Qt::black)
 
-PlatformSettings::PlatformSettings() :
-  QSettings(PATH, QSettings::IniFormat) {
+PlatformSettings::PlatformSettings(QObject *parent) :
+  QObject(parent), m_settings(new QSettings(PATH, QSettings::IniFormat)) {
 
 }
 
 PlatformSettings::~PlatformSettings() {
-
+  delete m_settings;
 }
 
 QSize PlatformSettings::previewSize() {
-  return value("quill/previewSize", PREVIEW_SIZE).toSize();
+  return m_settings->value("quill/previewSize", PREVIEW_SIZE).toSize();
 }
 
 QString PlatformSettings::thumbnailFlavorName() {
-  return value("quill/thumbnailFlavorName", THUMBNAIL_FLAVOR_NAME).toString();
+  return m_settings->value("quill/thumbnailFlavorName", THUMBNAIL_FLAVOR_NAME).toString();
 }
 
 QString PlatformSettings::thumbnailExtension() {
-  return value("quill/thumbnailExtension", THUMBNAIL_EXTENSION).toString();
+  return m_settings->value("quill/thumbnailExtension", THUMBNAIL_EXTENSION).toString();
 }
 
 QColor PlatformSettings::backgroundRenderingColor() {
-  return value("quill/backgroundRenderingColor", BACKGROUND_RENDERING_COLOR).value<QColor>();
+  return m_settings->value("quill/backgroundRenderingColor",
+                          BACKGROUND_RENDERING_COLOR).value<QColor>();
 }
 
 bool PlatformSettings::isDBusThumbnailingEnabled() {
-  return value("quill/dbusThumbnailingEnabled", DBUS_THUMBNAILING_ENABLED).toBool();
+  return m_settings->value("quill/dbusThumbnailingEnabled", DBUS_THUMBNAILING_ENABLED).toBool();
 }
 
 bool PlatformSettings::isThumbnailCreationEnabled() {
-  return value("quill/thumbnailCreationEnabled", THUMBNAIL_CREATION_ENABLED).toBool();
+  return m_settings->value("quill/thumbnailCreationEnabled", THUMBNAIL_CREATION_ENABLED).toBool();
 }
 
 QString PlatformSettings::temporaryFilePath() {
   QString defaultPath = QString(TEMPORARY_FILE_PATH).arg(QDir::homePath()).arg(QDir::separator());
-  return value("quill/temporaryFilePath", defaultPath).toString();
+  return m_settings->value("quill/temporaryFilePath", defaultPath).toString();
+}
+
+QSize PlatformSettings::portraitSize(const QSize& size) {
+  return size.width() > size.height() ? QSize(size.height(), size.width()) : size;
+}
+
+QSize PlatformSettings::landscapeSize(const QSize& size) {
+  return size.width() > size.height() ? size : QSize(size.height(), size.width());
+}
+
+void PlatformSettings::init() {
+  // How we create thumbnails for portrait is really messy.
+  // I am sure there is a better way to tell Quill to generate proper
+  // portrait thumbnails without having 2 display levels but I don't know how.
+  // The issue is we generate screen sized thumbnails for landscape
+  // but we generate half screen sized thumbnails for portrait
+  Quill::setPreviewLevelCount(2);
+  QSize size = previewSize();
+
+  // Landscape:
+  Quill::setThumbnailFlavorName(LANDSCAPE_PREVIEW_LEVEL, thumbnailFlavorName());
+  Quill::setPreviewSize(LANDSCAPE_PREVIEW_LEVEL, landscapeSize(size));
+
+  // Portrait:
+  Quill::setThumbnailFlavorName(PORTRAIT_PREVIEW_LEVEL, thumbnailFlavorName());
+  Quill::setPreviewSize(PORTRAIT_PREVIEW_LEVEL, portraitSize(size));
+
+  Quill::setThumbnailExtension(thumbnailExtension());
+  Quill::setBackgroundRenderingColor(backgroundRenderingColor());
+  Quill::setDBusThumbnailingEnabled(isDBusThumbnailingEnabled());
+  Quill::setThumbnailCreationEnabled(isThumbnailCreationEnabled());
+
+  QString tempPath = temporaryFilePath();
+  QDir().mkpath(tempPath);
+  Quill::setTemporaryFilePath(tempPath);
 }
index 8c71d28..20ca2f9 100644 (file)
 #ifndef PLATFORM_SETTINGS_H
 #define PLATFORM_SETTINGS_H
 
-#include <QSettings>
+#include <QObject>
 #include <QColor>
+#include <QSize>
+
+class QSettings;
+
+class PlatformSettings : public QObject {
+  Q_OBJECT
 
-class PlatformSettings : private QSettings {
 public:
-  PlatformSettings();
+  PlatformSettings(QObject *parent = 0);
   ~PlatformSettings();
 
   QSize previewSize();
@@ -39,6 +44,15 @@ public:
   bool isDBusThumbnailingEnabled();
   bool isThumbnailCreationEnabled();
   QString temporaryFilePath();
+
+public slots:
+  void init();
+
+private:
+  QSize portraitSize(const QSize& size);
+  QSize landscapeSize(const QSize& size);
+
+  QSettings *m_settings;
 };
 
 #endif /* PLATFORM_SETTINGS_H */