/*!
* This file is part of CameraPlus.
*
- * Copyright (C) 2012 Mohammed Sameer <msameer@foolab.org>
+ * Copyright (C) 2012-2013 Mohammed Sameer <msameer@foolab.org>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
#include <QGLWidget>
#include <QuillFile>
-#include "imports/plugin.h"
-
#include "settings.h"
#include "filenaming.h"
#include "quillitem.h"
#include "batteryinfo.h"
#include "gridlines.h"
#include "deviceinfo.h"
+#include "devicekeys.h"
+#include "platformsettings.h"
#ifdef QMLJSDEBUGGER
#include "qt_private/qdeclarativedebughelper_p.h"
#endif /* QMLJSDEBUGGER */
-static void initQuill() {
- // TODO: All these are hardcoded.
- Quill::setPreviewLevelCount(1);
- Quill::setPreviewSize(0, QSize(854, 480));
- Quill::setMinimumPreviewSize(0, QSize(854, 480));
- Quill::setThumbnailExtension("jpeg");
- Quill::setThumbnailFlavorName(0, "screen");
- Quill::setBackgroundRenderingColor(Qt::black);
- QString tempPath(QDir::homePath() + QDir::separator() + ".config" +
- QDir::separator() + "quill" + QDir::separator() + "tmp");
+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);
- Quill::setDBusThumbnailingEnabled(true);
- Quill::setThumbnailCreationEnabled(true);
}
Q_DECL_EXPORT int main(int argc, char *argv[]) {
QDeclarativeDebugHelper::enableDebugging();
#endif /* QMLJSDEBUGGER */
- // Let's initialize Quill:
- initQuill();
-
QDeclarativeView view;
+ view.setAttribute(Qt::WA_NoSystemBackground);
view.setViewport(new QGLWidget);
view.setResizeMode(QDeclarativeView::SizeRootObjectToView);
view.setViewportUpdateMode(QGraphicsView::FullViewportUpdate);
+ view.viewport()->setAttribute(Qt::WA_NoSystemBackground);
+
+ PlatformSettings platformSettings;
+
+ // Let's initialize Quill:
+ initQuill(&platformSettings);
- Plugin::registerTypes(view.engine());
qmlRegisterType<Settings>("CameraPlus", 1, 0, "Settings");
qmlRegisterType<FileNaming>("CameraPlus", 1, 0, "FileNaming");
qmlRegisterType<QuillItem>("CameraPlus", 1, 0, "QuillItem");
qmlRegisterType<BatteryInfo>("CameraPlus", 1, 0, "BatteryInfo");
qmlRegisterType<GridLines>("CameraPlus", 1, 0, "GridLines");
qmlRegisterType<DeviceInfo>("CameraPlus", 1, 0, "DeviceInfo");
+ qmlRegisterType<DeviceKeys>("CameraPlus", 1, 0, "DeviceKeys");
view.setSource(QUrl("qrc:/qml/main.qml"));