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/keyloader.cpp b/keyloader.cpp index d91d0fb..0b23f0e 100644 --- a/keyloader.cpp +++ b/keyloader.cpp @@ -49,6 +49,8 @@ bool KeyLoader::loadLayout(QString layout) } else { // load from file QFile f(iUtil->configPath() + "/" + layout + ".layout"); + if (!f.exists()) // fallback to installation directory + f.setFileName(QStringLiteral(DEPLOYMENT_PATH) + "/data/" + layout + ".layout"); ret = loadLayoutInternal(f); } @@ -197,6 +199,15 @@ const QStringList KeyLoader::availableLayouts() ret << s.left(s.lastIndexOf('.')); } + // Add also layouts from installation path. + QDir dataDir(QStringLiteral(DEPLOYMENT_PATH) + "/data"); + results = dataDir.entryList(filter, QDir::Files|QDir::Readable, QDir::Name); + foreach(QString s, results) { + QString layout = s.left(s.lastIndexOf('.')); + if (!ret.contains(layout)) + ret << layout; + } + return ret; } diff --git a/main.cpp b/main.cpp index 2970182..783bd46 100644 --- a/main.cpp +++ b/main.cpp @@ -40,8 +40,6 @@ extern "C" { #include "version.h" #include "keyloader.h" -static void copyFileFromResources(QString from, QString to); - int main(int argc, char *argv[]) { QString settings_path(QDir::homePath() + "/.config/FingerTerm"); @@ -131,14 +129,6 @@ 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"); - KeyLoader keyLoader; keyLoader.setUtil(&util); bool ret = keyLoader.loadLayout(util.keyboardLayout()); @@ -164,7 +154,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) @@ -183,19 +174,3 @@ int main(int argc, char *argv[]) return app.exec(); } - -static void copyFileFromResources(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(); - } - } -} 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}