From 5250432d29cb2f392a1912abc56d8a596769d83a Mon Sep 17 00:00:00 2001 From: Damien Caliste Date: Thu, 15 Jun 2017 11:56:00 +0200 Subject: [PATCH] [fingerterm] Install QML files, icons and data under /usr/share/fingerterm instead of using resources. --- fingerterm.pro | 29 +++++++++++++++++++++++++++-- main.cpp | 31 +++++++++++-------------------- qml/Key.qml | 2 +- qml/Main.qml | 4 ++-- resources.qrc | 25 ------------------------- rpm/fingerterm.spec | 6 ++++-- 6 files changed, 45 insertions(+), 52 deletions(-) diff --git a/fingerterm.pro b/fingerterm.pro index 7e4bb00..0bb559e 100644 --- a/fingerterm.pro +++ b/fingerterm.pro @@ -15,6 +15,8 @@ isEmpty(DEFAULT_FONT) { DEFAULT_FONT = monospace } +DEPLOYMENT_PATH = /usr/share/$$TARGET +DEFINES += DEPLOYMENT_PATH=\\\"$$DEPLOYMENT_PATH\\\" DEFINES += DEFAULT_FONTFAMILY=\\\"$$DEFAULT_FONT\\\" TEMPLATE = app @@ -40,8 +42,7 @@ SOURCES += \ util.cpp \ keyloader.cpp -OTHER_FILES += \ - qml/Main.qml \ +qml.files = qml/Main.qml \ qml/Keyboard.qml \ qml/Key.qml \ qml/Lineview.qml \ @@ -51,10 +52,34 @@ OTHER_FILES += \ qml/UrlWindow.qml \ qml/LayoutWindow.qml \ qml/PopupWindow.qml +qml.path = $$DEPLOYMENT_PATH +INSTALLS += qml RESOURCES += \ resources.qrc +icons.files = icons/backspace.png \ + icons/down.png \ + icons/enter.png \ + icons/left.png \ + icons/menu.png \ + icons/right.png \ + icons/scroll-indicator.png \ + icons/shift.png \ + icons/tab.png \ + icons/up.png +icons.path = $$DEPLOYMENT_PATH/icons +INSTALLS += icons + +userdata.files = data/menu.xml \ + data/english.layout \ + data/finnish.layout \ + data/french.layout \ + data/german.layout \ + data/qwertz.layout +userdata.path = $$DEPLOYMENT_PATH/data +INSTALLS += userdata + target.path = /usr/bin INSTALLS += target diff --git a/main.cpp b/main.cpp index 2970182..7a0bf60 100644 --- a/main.cpp +++ b/main.cpp @@ -40,7 +40,7 @@ extern "C" { #include "version.h" #include "keyloader.h" -static void copyFileFromResources(QString from, QString to); +static void copyFilesFromPath(QString from, QString to); int main(int argc, char *argv[]) { @@ -132,12 +132,7 @@ int main(int argc, char *argv[]) QString startupErrorMsg; // copy the default config files to the config dir if they don't already exist - copyFileFromResources(":/data/menu.xml", util.configPath()+"/menu.xml"); - copyFileFromResources(":/data/english.layout", util.configPath()+"/english.layout"); - copyFileFromResources(":/data/finnish.layout", util.configPath()+"/finnish.layout"); - copyFileFromResources(":/data/french.layout", util.configPath()+"/french.layout"); - copyFileFromResources(":/data/german.layout", util.configPath()+"/german.layout"); - copyFileFromResources(":/data/qwertz.layout", util.configPath()+"/qwertz.layout"); + copyFilesFromPath(QStringLiteral(DEPLOYMENT_PATH) + QDir::separator() + QStringLiteral("data"), util.configPath()); KeyLoader keyLoader; keyLoader.setUtil(&util); @@ -164,7 +159,8 @@ int main(int argc, char *argv[]) QObject::connect(view.engine(),SIGNAL(quit()),&app,SLOT(quit())); view.setResizeMode(QQuickView::SizeRootObjectToView); - view.setSource(QUrl("qrc:/qml/Main.qml")); + view.engine()->addImportPath(QStringLiteral(DEPLOYMENT_PATH)); + view.setSource(QUrl::fromLocalFile(QStringLiteral(DEPLOYMENT_PATH) + QDir::separator() + QStringLiteral("Main.qml"))); QObject *root = view.rootObject(); if(!root) @@ -184,18 +180,13 @@ int main(int argc, char *argv[]) return app.exec(); } -static void copyFileFromResources(QString from, QString to) +static void copyFilesFromPath(QString from, QString to) { - // copy a file from resources to the config dir if it does not exist there - QFileInfo toFile(to); - if(!toFile.exists()) { - QFile newToFile(toFile.absoluteFilePath()); - QResource res(from); - if (newToFile.open(QIODevice::WriteOnly)) { - newToFile.write( reinterpret_cast(res.data()) ); - newToFile.close(); - } else { - qWarning() << "Failed to copy default config from resources to" << toFile.filePath(); - } + QDir fromDir(from); + QDir toDir(to); + + // Copy files from fromDir to toDir, but don't overwrite existing ones + foreach (const QString &filename, fromDir.entryList(QDir::Files)) { + QFile::copy(fromDir.filePath(filename), toDir.filePath(filename)); } } diff --git a/qml/Key.qml b/qml/Key.qml index cabb918..f2df50e 100644 --- a/qml/Key.qml +++ b/qml/Key.qml @@ -48,7 +48,7 @@ Rectangle { id: keyImage anchors.centerIn: parent opacity: key.labelOpacity - source: { if(key.label.length>1 && key.label.charAt(0)==':') return "qrc:/icons/"+key.label.substring(1)+".png"; else return ""; } + source: { if(key.label.length>1 && key.label.charAt(0)==':') return "icons/"+key.label.substring(1)+".png"; else return ""; } scale: window.pixelRatio } diff --git a/qml/Main.qml b/qml/Main.qml index 3e4b919..fe0ee90 100644 --- a/qml/Main.qml +++ b/qml/Main.qml @@ -184,14 +184,14 @@ Item { id: menuImg anchors.centerIn: parent - source: "qrc:/icons/menu.png" + source: "icons/menu.png" scale: window.pixelRatio } } Image { // terminal buffer scroll indicator - source: "qrc:/icons/scroll-indicator.png" + source: "icons/scroll-indicator.png" anchors.horizontalCenter: parent.horizontalCenter anchors.bottom: parent.bottom visible: textrender.showBufferScrollIndicator diff --git a/resources.qrc b/resources.qrc index 3d7217b..492bd2b 100644 --- a/resources.qrc +++ b/resources.qrc @@ -1,30 +1,5 @@ - qml/Main.qml - qml/Key.qml - qml/Keyboard.qml - qml/Lineview.qml - qml/Button.qml - qml/MenuFingerterm.qml - qml/NotifyWin.qml - qml/PopupWindow.qml - icons/backspace.png - icons/down.png - icons/enter.png - icons/left.png - icons/menu.png - icons/right.png - icons/shift.png - icons/tab.png - icons/up.png - qml/UrlWindow.qml - data/menu.xml - icons/scroll-indicator.png data/english.layout - data/finnish.layout - data/french.layout - data/german.layout - data/qwertz.layout - qml/LayoutWindow.qml diff --git a/rpm/fingerterm.spec b/rpm/fingerterm.spec index b279762..ba58143 100644 --- a/rpm/fingerterm.spec +++ b/rpm/fingerterm.spec @@ -1,5 +1,5 @@ Name: fingerterm -Version: 1.3.2 +Version: 1.3.5 Release: 1 Summary: A terminal emulator with a custom virtual keyboard Group: System/Base @@ -24,7 +24,9 @@ Provides: meego-terminal > 0.2.2 %defattr(-,root,root,-) %{_bindir}/* %{_datadir}/applications/*.desktop - +%{_datadir}/%{name}/*.qml +%{_datadir}/%{name}/data/* +%{_datadir}/%{name}/icons/* %prep %setup -q -n %{name}-%{version}