2014-01-05 20:58:25 +00:00
|
|
|
/*
|
2014-02-16 20:41:36 +00:00
|
|
|
* Copyright (c) 2014, Stefan Brand <seiichiro@seiichiro0185.org>
|
2014-01-06 19:08:16 +00:00
|
|
|
* All rights reserved.
|
|
|
|
*
|
|
|
|
* Redistribution and use in source and binary forms, with or without modification,
|
|
|
|
* are permitted provided that the following conditions are met:
|
|
|
|
*
|
|
|
|
* 1. Redistributions of source code must retain the above copyright notice, this
|
|
|
|
* list of conditions and the following disclaimer.
|
|
|
|
*
|
|
|
|
* 2. Redistributions in binary form must reproduce the above copyright notice, this
|
|
|
|
* list of conditions and the following disclaimer in the documentation and/or other
|
|
|
|
* materials provided with the distribution.
|
|
|
|
*
|
|
|
|
* 3. The names of the contributors may not be used to endorse or promote products
|
|
|
|
* derived from this software without specific prior written permission.
|
|
|
|
*
|
|
|
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
|
|
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
|
|
|
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
|
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
|
|
|
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
|
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
|
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
|
|
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
|
|
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
|
|
|
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
|
*/
|
2014-01-05 20:58:25 +00:00
|
|
|
|
|
|
|
#include <QtQuick>
|
|
|
|
#include <sailfishapp.h>
|
2014-01-31 21:59:08 +00:00
|
|
|
#include <QGuiApplication>
|
2014-02-01 11:20:40 +00:00
|
|
|
#include "fileio.h"
|
2023-02-20 15:10:57 +00:00
|
|
|
#include "qcipher.h"
|
2014-02-16 12:46:57 +00:00
|
|
|
#include "qzxing.h"
|
2014-05-24 16:35:41 +00:00
|
|
|
#include "qqrencode.h"
|
2014-01-05 20:58:25 +00:00
|
|
|
|
2023-02-26 18:09:23 +00:00
|
|
|
void migrateLocalStorage()
|
|
|
|
{
|
|
|
|
// The new location of the LocalStorage database
|
|
|
|
QDir newDbDir(QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation) + "/QML/OfflineStorage/Databases/");
|
|
|
|
|
|
|
|
if(newDbDir.exists())
|
|
|
|
return;
|
|
|
|
|
|
|
|
newDbDir.mkpath(newDbDir.path());
|
|
|
|
|
|
|
|
QString dbname = QString(QCryptographicHash::hash(("harbour-sailotp"), QCryptographicHash::Md5).toHex());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// The old LocalStorage database
|
|
|
|
QFile oldDb(QStandardPaths::writableLocation(QStandardPaths::HomeLocation) + "/.local/share/harbour-sailotp/harbour-sailotp/QML/OfflineStorage/Databases/" + dbname + ".sqlite");
|
|
|
|
QFile oldIni(QStandardPaths::writableLocation(QStandardPaths::HomeLocation) + "/.local/share/harbour-sailotp/harbour-sailotp/QML/OfflineStorage/Databases/" + dbname + ".ini");
|
|
|
|
|
|
|
|
qDebug() << "Migrating " + oldDb.fileName() + " to " + newDbDir.absolutePath() + "/" + dbname + ".sqlite";
|
|
|
|
|
|
|
|
// Copy to new Database Location
|
|
|
|
oldDb.copy(QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation) + "/QML/OfflineStorage/Databases/" + dbname + ".sqlite");
|
|
|
|
oldIni.copy(QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation) + "/QML/OfflineStorage/Databases/" + dbname + ".ini");
|
|
|
|
}
|
|
|
|
|
2014-01-05 20:58:25 +00:00
|
|
|
int main(int argc, char *argv[])
|
|
|
|
{
|
2014-02-08 16:08:10 +00:00
|
|
|
// Get App and QML-View objects
|
2014-02-01 11:20:40 +00:00
|
|
|
QScopedPointer<QGuiApplication> app(SailfishApp::application(argc, argv));
|
|
|
|
QScopedPointer<QQuickView> view(SailfishApp::createView());
|
2014-01-31 21:59:08 +00:00
|
|
|
|
2014-02-16 12:46:57 +00:00
|
|
|
// QZXing QR Decoder
|
|
|
|
QZXing qrdecoder;
|
|
|
|
qrdecoder.registerQMLTypes();
|
|
|
|
|
2014-02-08 16:08:10 +00:00
|
|
|
// Internationalization, Load the Language
|
|
|
|
QString locale = QLocale::system().name();
|
|
|
|
QTranslator translator;
|
|
|
|
translator.load(locale,SailfishApp::pathTo(QString("i18n")).toLocalFile());
|
|
|
|
app->installTranslator(&translator);
|
|
|
|
|
2023-02-26 18:09:23 +00:00
|
|
|
// Migrate to new Storage Directory
|
|
|
|
migrateLocalStorage();
|
|
|
|
|
2014-02-08 16:08:10 +00:00
|
|
|
// Set some global values
|
2023-02-26 18:09:23 +00:00
|
|
|
app->setOrganizationName("org.seiichiro0185");
|
|
|
|
app->setOrganizationDomain("org.seiichiro0185");
|
2014-02-01 11:20:40 +00:00
|
|
|
app->setApplicationName("harbour-sailotp");
|
|
|
|
app->setApplicationVersion(APP_VERSION);
|
|
|
|
|
2014-02-08 16:08:10 +00:00
|
|
|
// Register FileIO Class
|
2014-02-01 11:59:39 +00:00
|
|
|
qmlRegisterType<FileIO, 1>("harbour.sailotp.FileIO", 1, 0, "FileIO");
|
2023-02-20 15:10:57 +00:00
|
|
|
// Register QCipher Class
|
|
|
|
qmlRegisterType<QCipher, 1>("harbour.sailotp.QCipher", 1, 0, "QCipher");
|
2014-02-01 11:20:40 +00:00
|
|
|
|
2014-02-08 16:08:10 +00:00
|
|
|
// Prepare the QML and set Homedir
|
2014-02-01 11:20:40 +00:00
|
|
|
view->setSource(SailfishApp::pathTo("qml/harbour-sailotp.qml"));
|
2014-02-02 13:28:19 +00:00
|
|
|
view->rootContext()->setContextProperty("XDG_HOME_DIR", QStandardPaths::writableLocation(QStandardPaths::HomeLocation));
|
2014-02-16 20:41:36 +00:00
|
|
|
view->rootContext()->setContextProperty("XDG_CACHE_DIR", QStandardPaths::writableLocation(QStandardPaths::CacheLocation));
|
2014-05-24 16:35:41 +00:00
|
|
|
view->engine()->addImageProvider("qqrencoder", new QQRencoder());
|
2014-02-01 11:20:40 +00:00
|
|
|
view->show();
|
|
|
|
|
2014-02-08 16:08:10 +00:00
|
|
|
// Run the app
|
2014-02-01 11:20:40 +00:00
|
|
|
return app->exec();
|
2014-01-05 20:58:25 +00:00
|
|
|
}
|
2014-02-01 11:20:40 +00:00
|
|
|
|