From c7153e070ecab6fb65c5de40143f8c4cc41eb0de Mon Sep 17 00:00:00 2001 From: Jeena Date: Sat, 29 Oct 2016 08:09:20 +0200 Subject: [PATCH 01/26] Make the MenuBar show- and hidebar Untill now the MenuBar was not visible untill you pressed the alt-key, which made it visible. Sadly after that it was not possible to hide it again. This patch fixes that. --- qml/main.qml | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/qml/main.qml b/qml/main.qml index 0a6288a..d1e162a 100644 --- a/qml/main.qml +++ b/qml/main.qml @@ -47,6 +47,18 @@ ApplicationWindow { property int textFontSizeIndex: defaultTextFontSizeIndex property int textFontSize: fontSizes[textFontSizeIndex] property bool nightmode: false + property bool showMenuBar: false + + menuBar: TheMenuBar { + id: menu + serverLogin: serverLogin + server: server + sidebar: sidebar + content: content + visible: app.showMenuBar + __contentItem.visible: visible + } + Settings { id: settings @@ -60,14 +72,6 @@ ApplicationWindow { property alias nightmode: app.nightmode } - property TheMenuBar menu: TheMenuBar { - id: menu - serverLogin: serverLogin - server: server - sidebar: sidebar - content: content - } - function loggedIn() { if(serverLogin.loggedIn()) { menu.loggedIn = true; @@ -192,7 +196,7 @@ ApplicationWindow { Keys.onReleased: { switch (event.key) { case Qt.Key_Alt: - app.menuBar = menu + app.showMenuBar = !app.showMenuBar break default: break From cfec5fd9ed572e9af04866ac0f6771f8df3f4e14 Mon Sep 17 00:00:00 2001 From: Jeena Date: Sat, 29 Oct 2016 10:51:14 +0200 Subject: [PATCH 02/26] Break too long words to prevent horizontal scrolling --- html/content.css | 1 + 1 file changed, 1 insertion(+) diff --git a/html/content.css b/html/content.css index 1b3eda8..afcb4e4 100644 --- a/html/content.css +++ b/html/content.css @@ -27,6 +27,7 @@ body { font-family: sans-serif; padding: 2em; font-weight: lighter; + word-wrap: break-word; } .nightmode { From cc5398907f56c71c513f86f875b61a8241ff16d6 Mon Sep 17 00:00:00 2001 From: probonopd Date: Sun, 12 Mar 2017 16:46:51 +0100 Subject: [PATCH 03/26] Create .travis.yml --- .travis.yml | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..d01f2bd --- /dev/null +++ b/.travis.yml @@ -0,0 +1,24 @@ +language: cpp +compiler: gcc +sudo: require +dist: trusty + +before_install: + - sudo add-apt-repository ppa:beineri/opt-qt58-trusty -y + - sudo apt-get update -qq + +install: + - sudo apt-get -y install qt58base + - source /opt/qt58/bin/qt58-env.sh + +script: + - qmake PREFIX=/usr + - make -j4 + - sudo make INSTALL_ROOT=appdir install ; sudo chown -R $USER appdir ; find appdir/ + - wget -c "https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage" + - chmod a+x linuxdeployqt*.AppImage + - unset QTDIR; unset QT_PLUGIN_PATH ; unset LD_LIBRARY_PATH + - ./linuxdeployqt*.AppImage ./appdir/usr/share/applications/*.desktop -bundle-non-qt-libs + - ./linuxdeployqt*.AppImage ./appdir/usr/share/applications/*.desktop -appimage + - find ./appdir -executable -type f -exec ldd {} \; | grep " => /usr" | cut -d " " -f 2-3 | sort | uniq + - curl --upload-file ./APPNAME*.AppImage https://transfer.sh/APPNAME-git.$(git rev-parse --short HEAD)-x86_64.AppImage From 3bc56e2e8f56d970afb9a961a0b69d978fbbea70 Mon Sep 17 00:00:00 2001 From: probonopd Date: Sun, 12 Mar 2017 16:53:20 +0100 Subject: [PATCH 04/26] Update .travis.yml --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index d01f2bd..9d273b0 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,7 +8,7 @@ before_install: - sudo apt-get update -qq install: - - sudo apt-get -y install qt58base + - sudo apt-get -y install qt58base qt58webengine qt58quickcontrols - source /opt/qt58/bin/qt58-env.sh script: From 75f94b46e787a32dcc7c96b27df5844ac181464d Mon Sep 17 00:00:00 2001 From: probonopd Date: Sun, 12 Mar 2017 17:00:14 +0100 Subject: [PATCH 05/26] Update .travis.yml --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 9d273b0..7f0b326 100644 --- a/.travis.yml +++ b/.travis.yml @@ -21,4 +21,4 @@ script: - ./linuxdeployqt*.AppImage ./appdir/usr/share/applications/*.desktop -bundle-non-qt-libs - ./linuxdeployqt*.AppImage ./appdir/usr/share/applications/*.desktop -appimage - find ./appdir -executable -type f -exec ldd {} \; | grep " => /usr" | cut -d " " -f 2-3 | sort | uniq - - curl --upload-file ./APPNAME*.AppImage https://transfer.sh/APPNAME-git.$(git rev-parse --short HEAD)-x86_64.AppImage + - curl --upload-file ./FeedTheMonkey*.AppImage https://transfer.sh/FeedTheMonkey-git.$(git rev-parse --short HEAD)-x86_64.AppImage From 4f3a1a82613f98b6e1954d91819da7a43caf3171 Mon Sep 17 00:00:00 2001 From: probonopd Date: Sun, 12 Mar 2017 17:13:37 +0100 Subject: [PATCH 06/26] -qmldir=/opt/qt58/qml/ --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 7f0b326..b7085e0 100644 --- a/.travis.yml +++ b/.travis.yml @@ -18,7 +18,7 @@ script: - wget -c "https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage" - chmod a+x linuxdeployqt*.AppImage - unset QTDIR; unset QT_PLUGIN_PATH ; unset LD_LIBRARY_PATH - - ./linuxdeployqt*.AppImage ./appdir/usr/share/applications/*.desktop -bundle-non-qt-libs - - ./linuxdeployqt*.AppImage ./appdir/usr/share/applications/*.desktop -appimage + - ./linuxdeployqt*.AppImage ./appdir/usr/share/applications/*.desktop -qmldir=/opt/qt58/qml/ -bundle-non-qt-libs + - ./linuxdeployqt*.AppImage ./appdir/usr/share/applications/*.desktop -qmldir=/opt/qt58/qml/ -appimage - find ./appdir -executable -type f -exec ldd {} \; | grep " => /usr" | cut -d " " -f 2-3 | sort | uniq - curl --upload-file ./FeedTheMonkey*.AppImage https://transfer.sh/FeedTheMonkey-git.$(git rev-parse --short HEAD)-x86_64.AppImage From fcfcda84ae66426fa01f99115a297f86cdc1b2f5 Mon Sep 17 00:00:00 2001 From: probonopd Date: Sun, 12 Mar 2017 17:25:47 +0100 Subject: [PATCH 07/26] Update .travis.yml --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index b7085e0..8ddd8c2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -18,7 +18,7 @@ script: - wget -c "https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage" - chmod a+x linuxdeployqt*.AppImage - unset QTDIR; unset QT_PLUGIN_PATH ; unset LD_LIBRARY_PATH - - ./linuxdeployqt*.AppImage ./appdir/usr/share/applications/*.desktop -qmldir=/opt/qt58/qml/ -bundle-non-qt-libs - - ./linuxdeployqt*.AppImage ./appdir/usr/share/applications/*.desktop -qmldir=/opt/qt58/qml/ -appimage + - ./linuxdeployqt*.AppImage ./appdir/usr/share/applications/*.desktop -qmldir=/opt/qt58/qml/ -bundle-non-qt-libs -verbose=3 2>&1 | grep Deploying -C 5 + - ./linuxdeployqt*.AppImage ./appdir/usr/share/applications/*.desktop -qmldir=/opt/qt58/qml/ -appimage -verbose=3 2>&1 | grep Deploying -C 5 - find ./appdir -executable -type f -exec ldd {} \; | grep " => /usr" | cut -d " " -f 2-3 | sort | uniq - curl --upload-file ./FeedTheMonkey*.AppImage https://transfer.sh/FeedTheMonkey-git.$(git rev-parse --short HEAD)-x86_64.AppImage From 78a85f8e3f679f686ea7f4433809f31a5a10764d Mon Sep 17 00:00:00 2001 From: probonopd Date: Sun, 12 Mar 2017 17:33:42 +0100 Subject: [PATCH 08/26] -qmldir=./qml/ --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 8ddd8c2..8dc8a16 100644 --- a/.travis.yml +++ b/.travis.yml @@ -18,7 +18,7 @@ script: - wget -c "https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage" - chmod a+x linuxdeployqt*.AppImage - unset QTDIR; unset QT_PLUGIN_PATH ; unset LD_LIBRARY_PATH - - ./linuxdeployqt*.AppImage ./appdir/usr/share/applications/*.desktop -qmldir=/opt/qt58/qml/ -bundle-non-qt-libs -verbose=3 2>&1 | grep Deploying -C 5 - - ./linuxdeployqt*.AppImage ./appdir/usr/share/applications/*.desktop -qmldir=/opt/qt58/qml/ -appimage -verbose=3 2>&1 | grep Deploying -C 5 + - ./linuxdeployqt*.AppImage ./appdir/usr/share/applications/*.desktop -qmldir=./qml/ -qmldir=/opt/qt5*/qml/ -bundle-non-qt-libs -verbose=3 2>&1 | grep Deploying -C 5 + - ./linuxdeployqt*.AppImage ./appdir/usr/share/applications/*.desktop -qmldir=./qml/ -qmldir=/opt/qt5*/qml/ -appimage -verbose=3 2>&1 | grep Deploying -C 5 - find ./appdir -executable -type f -exec ldd {} \; | grep " => /usr" | cut -d " " -f 2-3 | sort | uniq - curl --upload-file ./FeedTheMonkey*.AppImage https://transfer.sh/FeedTheMonkey-git.$(git rev-parse --short HEAD)-x86_64.AppImage From a920123a5211e2e0a9c4560585e1f80bee54fd65 Mon Sep 17 00:00:00 2001 From: probonopd Date: Sun, 12 Mar 2017 17:40:37 +0100 Subject: [PATCH 09/26] Update .travis.yml --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 8dc8a16..c4adea2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -18,7 +18,7 @@ script: - wget -c "https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage" - chmod a+x linuxdeployqt*.AppImage - unset QTDIR; unset QT_PLUGIN_PATH ; unset LD_LIBRARY_PATH - - ./linuxdeployqt*.AppImage ./appdir/usr/share/applications/*.desktop -qmldir=./qml/ -qmldir=/opt/qt5*/qml/ -bundle-non-qt-libs -verbose=3 2>&1 | grep Deploying -C 5 - - ./linuxdeployqt*.AppImage ./appdir/usr/share/applications/*.desktop -qmldir=./qml/ -qmldir=/opt/qt5*/qml/ -appimage -verbose=3 2>&1 | grep Deploying -C 5 + - ./linuxdeployqt*.AppImage ./appdir/usr/share/applications/*.desktop -qmldir=./qml/ -qmldir=$(readlink -f /opt/qt5*/qml/) -bundle-non-qt-libs + - ./linuxdeployqt*.AppImage ./appdir/usr/share/applications/*.desktop -qmldir=./qml/ -qmldir=$(readlink -f /opt/qt5*/qml/) -appimage - find ./appdir -executable -type f -exec ldd {} \; | grep " => /usr" | cut -d " " -f 2-3 | sort | uniq - curl --upload-file ./FeedTheMonkey*.AppImage https://transfer.sh/FeedTheMonkey-git.$(git rev-parse --short HEAD)-x86_64.AppImage From dd958bbaa5005b8a3c5aaaf130e29dc19916fe20 Mon Sep 17 00:00:00 2001 From: probonopd Date: Fri, 17 Mar 2017 20:43:59 +0100 Subject: [PATCH 10/26] Update .travis.yml --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index c4adea2..dd3eb50 100644 --- a/.travis.yml +++ b/.travis.yml @@ -18,7 +18,7 @@ script: - wget -c "https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage" - chmod a+x linuxdeployqt*.AppImage - unset QTDIR; unset QT_PLUGIN_PATH ; unset LD_LIBRARY_PATH - - ./linuxdeployqt*.AppImage ./appdir/usr/share/applications/*.desktop -qmldir=./qml/ -qmldir=$(readlink -f /opt/qt5*/qml/) -bundle-non-qt-libs - - ./linuxdeployqt*.AppImage ./appdir/usr/share/applications/*.desktop -qmldir=./qml/ -qmldir=$(readlink -f /opt/qt5*/qml/) -appimage + - ./linuxdeployqt*.AppImage ./appdir/usr/share/applications/*.desktop -qmldir=./qml/ -bundle-non-qt-libs + - ./linuxdeployqt*.AppImage ./appdir/usr/share/applications/*.desktop -qmldir=./qml/ -appimage - find ./appdir -executable -type f -exec ldd {} \; | grep " => /usr" | cut -d " " -f 2-3 | sort | uniq - curl --upload-file ./FeedTheMonkey*.AppImage https://transfer.sh/FeedTheMonkey-git.$(git rev-parse --short HEAD)-x86_64.AppImage From 4bb5610f7f923130f9b7dc251344d2642acddb76 Mon Sep 17 00:00:00 2001 From: Jeena Paradies Date: Tue, 21 Mar 2017 22:13:11 +0100 Subject: [PATCH 11/26] Add info about AppImage --- README.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index d26e967..8819b8e 100644 --- a/README.md +++ b/README.md @@ -11,10 +11,12 @@ to have Qt 5.6 installed to be able to compile and have a account on a TinyTinyR ## Installation -Download the latest release code from: https://github.com/jeena/FeedTheMonkey/releases/latest +If you run Linux then there is an AppImage on the [Latest release](https://github.com/jeena/FeedTheMonkey/releases/latest) page. You download it, make executable and are able to run, it should work on most of the distributions out there. + +For ArchLinux I package it and it's available on https://aur.archlinux.org/packages/feedthemonkey/ You can compile and install it everywhere Qt is suported, this means on macOS, Windows -and Linux. For ArchLinux I package it and it's available on https://aur.archlinux.org/packages/feedthemonkey/ +and Linux. ## Keyboard shortcuts @@ -47,7 +49,7 @@ the use on a desktop computer but I'd like to see it on a mobile device too. This file is part of FeedTheMonkey. -Copyright 2015 Jeena +Copyright 2015-2017 Jeena FeedTheMonkey is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by From f025ad4d2ae0b54ad0f435873df83232948bb920 Mon Sep 17 00:00:00 2001 From: Jeena Date: Thu, 8 Jun 2017 18:20:55 +0200 Subject: [PATCH 12/26] Add feedback on login errors There was no feedback on any login errors when a user provided a wrong url, username, password or a disabled API. This commit adds feedback to the user in this cases. Fixes #15 --- qml/main.qml | 16 +++++++++++++++- src/tinytinyrsslogin.cpp | 30 +++++++++++++++++++++--------- src/tinytinyrsslogin.h | 4 ++++ 3 files changed, 40 insertions(+), 10 deletions(-) diff --git a/qml/main.qml b/qml/main.qml index d1e162a..e08f3d9 100644 --- a/qml/main.qml +++ b/qml/main.qml @@ -21,6 +21,7 @@ import QtQuick 2.3 import QtQuick.Controls 1.3 import QtQuick.Window 2.0 import QtQuick.Layouts 1.1 +import QtQuick.Dialogs 1.1 import Qt.labs.settings 1.0 import TTRSS 1.0 @@ -210,14 +211,27 @@ ApplicationWindow { visible: !serverLogin.loggedIn() function login() { - console.log("FOO") serverLogin.login(serverUrl, userName, password) } + + } + + MessageDialog { + id: loginErrorAlert + title: "A login error occured" + text: serverLogin.loginError + onAccepted: visible = false } ServerLogin { id: serverLogin onSessionIdChanged: app.loggedIn() + onLoginErrorChanged: { + console.log("loginError:", loginError) + if(loginError.length > 0) { + loginErrorAlert.visible = true + } + } } Server { diff --git a/src/tinytinyrsslogin.cpp b/src/tinytinyrsslogin.cpp index f0536f2..78fcd9f 100644 --- a/src/tinytinyrsslogin.cpp +++ b/src/tinytinyrsslogin.cpp @@ -88,23 +88,35 @@ void TinyTinyRSSLogin::reply() QNetworkReply *reply = qobject_cast(sender()); if (reply) { + if (reply->error() == QNetworkReply::NoError) { QString jsonString = QString(reply->readAll()); QJsonDocument json = QJsonDocument::fromJson(jsonString.toUtf8()); - mSessionId = json.object().value("content").toObject().value("session_id").toString(); + if(json.object().value("content").toObject().value("error").toString().length() > 0) { - emit sessionIdChanged(mSessionId); + mLoginError = json.object().value("content").toObject().value("error").toString(); + qWarning() << mLoginError; + emit loginErrorChanged(mLoginError); - QSettings settings; - settings.setValue("sessionId", mSessionId); - settings.setValue("serverUrl", mServerUrl); - settings.sync(); + } else { + mSessionId = json.object().value("content").toObject().value("session_id").toString(); + emit sessionIdChanged(mSessionId); + + QSettings settings; + settings.setValue("sessionId", mSessionId); + settings.setValue("serverUrl", mServerUrl); + settings.sync(); + } } else { - int httpStatus = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); - //do some error management - qWarning() << "HTTP error: " << httpStatus << " :: " << reply->error(); + mLoginError = "HTTP error: " + + reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toString() + + " :: " + + reply->errorString(); + qWarning() << mLoginError; + + emit loginErrorChanged(mLoginError); } reply->deleteLater(); } diff --git a/src/tinytinyrsslogin.h b/src/tinytinyrsslogin.h index 8971f2a..5c21887 100644 --- a/src/tinytinyrsslogin.h +++ b/src/tinytinyrsslogin.h @@ -30,12 +30,14 @@ class TinyTinyRSSLogin : public QObject Q_OBJECT Q_PROPERTY(QString sessionId READ sessionId NOTIFY sessionIdChanged) Q_PROPERTY(QUrl serverUrl READ serverUrl) + Q_PROPERTY(QString loginError READ loginError NOTIFY loginErrorChanged) public: TinyTinyRSSLogin(QObject *parent = 0); ~TinyTinyRSSLogin(); QString sessionId() const { return mSessionId; } QUrl serverUrl() const { return mServerUrl; } + QString loginError() const { return mLoginError; } Q_INVOKABLE bool loggedIn(); Q_INVOKABLE void login(const QString serverUrl, const QString user, const QString password); @@ -43,6 +45,7 @@ public: signals: void sessionIdChanged(QString); + void loginErrorChanged(QString); private slots: void reply(); @@ -50,6 +53,7 @@ private slots: private: QString mSessionId; QUrl mServerUrl; + QString mLoginError; QNetworkAccessManager *mNetworkManager; }; From 13c241f3b96de64157c5eadafcac933dd120f072 Mon Sep 17 00:00:00 2001 From: Jeena Date: Tue, 30 Jan 2018 22:55:16 +0100 Subject: [PATCH 13/26] Fix not responding next/previous when focus in webview For some reason in the latest Qt versions the webview took over the focus from the keyboard, once clicked on the webview the arrow keys wouldn't register up and thus you couldn't navigate with them anymore. This patch fixes this problem by using window.location.href and checkinf for those special urls. This is way easier to use than WebChannels. --- html/content.js | 12 ++++++++++++ qml/Content.qml | 9 +++++++-- qml/main.qml | 8 ++++++++ 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/html/content.js b/html/content.js index cbc29b2..2d88c4e 100644 --- a/html/content.js +++ b/html/content.js @@ -71,3 +71,15 @@ function setNightmode(nightmode) { if(nightmode) document.body.className = "nightmode"; else document.body.className = ""; } + +document.onkeydown = checkKey; + +function checkKey(e) { + e = e || window.event; + if (e.keyCode == '37') { + window.location.href = "feedthemonkey:previous"; + } + else if (e.keyCode == '39') { + window.location.href = "feedthemonkey:next"; + } +} diff --git a/qml/Content.qml b/qml/Content.qml index b00764a..086dbef 100644 --- a/qml/Content.qml +++ b/qml/Content.qml @@ -85,9 +85,14 @@ Item { webView.runJavaScript("if(typeof setNightmode == \"function\") setNightmode(" + (content.nightmode ? "true" : "false") + ")") } - onNavigationRequested: { - if (request.navigationType != WebEngineView.LinkClickedNavigation) { + if (request.url == "feedthemonkey:previous") { + request.action = WebEngineView.IgnoreRequest; + app.showPreviousPost(); + } else if (request.url == "feedthemonkey:next") { + request.action = WebEngineView.IgnoreRequest; + app.showNextPost(); + } else if (request.navigationType != WebEngineView.LinkClickedNavigation) { request.action = WebEngineView.AcceptRequest; } else { request.action = WebEngineView.IgnoreRequest; diff --git a/qml/main.qml b/qml/main.qml index e08f3d9..7746367 100644 --- a/qml/main.qml +++ b/qml/main.qml @@ -114,6 +114,14 @@ ApplicationWindow { return forEscapingHTML.getText(0, forEscapingHTML.length) } + function showNextPost() { + sidebar.next() + } + + function showPreviousPost() { + sidebar.previous() + } + function keyPressed(event) { switch (event.key) { case Qt.Key_Right: From 2c263f77db7eb3124ac89208cd402ef89e1fb80e Mon Sep 17 00:00:00 2001 From: Jeena Date: Mon, 5 Feb 2018 18:29:21 +0100 Subject: [PATCH 14/26] Fix version in desktop file We had a wrong version in the desktop file. --- misc/feedthemonkey.desktop | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/misc/feedthemonkey.desktop b/misc/feedthemonkey.desktop index a9d950f..c302345 100644 --- a/misc/feedthemonkey.desktop +++ b/misc/feedthemonkey.desktop @@ -1,5 +1,4 @@ [Desktop Entry] -Version=2.0.0 Comment=A desktop client for the TinyTinyRSS feed reader. Exec=feedthemonkey GenericName=Feed Reader @@ -9,4 +8,4 @@ NoDisplay=false StartupNotify=true Terminal=false Type=Application -Categories=Network;Qt +Categories=Network;Qt; From 0a195f8a8f3599e204bde3430eefe9e5b086fb4d Mon Sep 17 00:00:00 2001 From: Jeena Date: Tue, 11 Sep 2018 01:05:23 +0200 Subject: [PATCH 15/26] Move JS into HTML and add NOT_LOGGED_IN handling For some reason the JS never got loaded when it was in it's own file, therefor I moved it into the HTML where it gets called. Also when a session id on the server was expired or something, you weren't able to log out, there is now code which fixes that. --- html/content.html | 88 +++++++++++++++++++++++++++++++++++++++- html/content.js | 85 -------------------------------------- html/html.qrc | 1 - qml/main.qml | 1 - src/tinytinyrsslogin.cpp | 12 ++++++ 5 files changed, 99 insertions(+), 88 deletions(-) delete mode 100644 html/content.js diff --git a/html/content.html b/html/content.html index bbcd5f5..b51f73f 100644 --- a/html/content.html +++ b/html/content.html @@ -4,7 +4,93 @@ TTRSS - + diff --git a/html/content.js b/html/content.js deleted file mode 100644 index 2d88c4e..0000000 --- a/html/content.js +++ /dev/null @@ -1,85 +0,0 @@ -/* - * This file is part of FeedTheMonkey. - * - * Copyright 2015 Jeena - * - * FeedTheMonkey is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * FeedTheMonkey is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with FeedTheMonkey. If not, see . - */ - -function $(id) { - return document.getElementById(id); -} - -function setArticle(article) { - window.scrollTo(0, 0); - - $("date").innerHTML = ""; - $("title").innerHTML = ""; - $("title").href = ""; - $("title").title = ""; - $("feed_title").innerHTML = ""; - $("author").innerHTML = ""; - $("article").innerHTML = ""; - - if(article === "empty") { - - $("article").innerHTML = "No unread articles to display."; - - } else if(article === "loading") { - - $("article").innerHTML = "Loading "; - - } else if (article === "logout") { - - } else if(article) { - - $("date").innerHTML = (new Date(parseInt(article.updated, 10) * 1000)); - $("title").innerHTML = article.title; - $("title").href = article.link; - $("title").title = article.link; - $("feed_title").innerHTML = article.feed_title; - $("title").className = article.marked ? "starred" : ""; - $("author").innerHTML = ""; - if(article.author && article.author.length > 0) - $("author").innerHTML = "– " + article.author - $("article").innerHTML = article.content; - - var as = $("article").getElementsByTagName("a"); - for(var i = 0; i < as.length; i++) { - as[i].target = ""; - } - } -} - -function setFont(font, size) { - document.body.style.fontFamily = font; - document.body.style.fontSize = size + "pt"; -} - -function setNightmode(nightmode) { - if(nightmode) document.body.className = "nightmode"; - else document.body.className = ""; -} - -document.onkeydown = checkKey; - -function checkKey(e) { - e = e || window.event; - if (e.keyCode == '37') { - window.location.href = "feedthemonkey:previous"; - } - else if (e.keyCode == '39') { - window.location.href = "feedthemonkey:next"; - } -} diff --git a/html/html.qrc b/html/html.qrc index 90d8b19..c6cf166 100644 --- a/html/html.qrc +++ b/html/html.qrc @@ -2,6 +2,5 @@ content.css content.html - content.js diff --git a/qml/main.qml b/qml/main.qml index 7746367..a5fcbcb 100644 --- a/qml/main.qml +++ b/qml/main.qml @@ -60,7 +60,6 @@ ApplicationWindow { __contentItem.visible: visible } - Settings { id: settings category: "window" diff --git a/src/tinytinyrsslogin.cpp b/src/tinytinyrsslogin.cpp index 78fcd9f..2648e7a 100644 --- a/src/tinytinyrsslogin.cpp +++ b/src/tinytinyrsslogin.cpp @@ -99,6 +99,18 @@ void TinyTinyRSSLogin::reply() qWarning() << mLoginError; emit loginErrorChanged(mLoginError); + if(mLoginError == "NOT_LOGGED_IN") { + mSessionId = nullptr; + mServerUrl = nullptr; + + QSettings settings; + settings.remove("sessionId"); + settings.remove("serverUrl"); + settings.sync(); + + emit sessionIdChanged(mSessionId); + } + } else { mSessionId = json.object().value("content").toObject().value("session_id").toString(); From 11524e9f14264884039b055a8882e2c2d056e023 Mon Sep 17 00:00:00 2001 From: Jeena Date: Tue, 11 Sep 2018 23:04:56 +0200 Subject: [PATCH 16/26] Fix problem with arrow navigation For some reason the arrow navigation stopped working, this adds some workarounds to make it workable again. --- html/content.html | 9 +++++---- qml/Content.qml | 10 ++++++---- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/html/content.html b/html/content.html index b51f73f..9a1c3ec 100644 --- a/html/content.html +++ b/html/content.html @@ -79,17 +79,18 @@ else document.body.className = ""; } - document.onkeydown = checkKey; - function checkKey(e) { e = e || window.event; - if (e.keyCode === '37') { + if (e.keyCode === 37) { window.location.href = "feedthemonkey:previous"; } - else if (e.keyCode === '39') { + else if (e.keyCode === 39) { window.location.href = "feedthemonkey:next"; } } + + window.addEventListener("keydown", checkKey); + diff --git a/qml/Content.qml b/qml/Content.qml index 086dbef..73885f1 100644 --- a/qml/Content.qml +++ b/qml/Content.qml @@ -17,7 +17,7 @@ * along with FeedTheMonkey. If not, see . */ -import QtWebEngine 1.0 +import QtWebEngine 1.7 import QtQuick 2.0 import QtQuick.Controls 1.3 import QtQuick.Layouts 1.1 @@ -87,12 +87,14 @@ Item { onNavigationRequested: { if (request.url == "feedthemonkey:previous") { - request.action = WebEngineView.IgnoreRequest; + // This is commented out because for some reason this reloads the page forever. + // This will show the error that the feedthemonkey:previous location is not supported + //request.action = WebEngineNavigationRequest.IgnoreRequest; app.showPreviousPost(); } else if (request.url == "feedthemonkey:next") { - request.action = WebEngineView.IgnoreRequest; + //request.action = WebEngineNavigationRequest.IgnoreRequest; app.showNextPost(); - } else if (request.navigationType != WebEngineView.LinkClickedNavigation) { + } else if (request.navigationType !== WebEngineNavigationRequest.LinkClickedNavigation) { request.action = WebEngineView.AcceptRequest; } else { request.action = WebEngineView.IgnoreRequest; From 0c5825afb8adbcaeda0d791ccce796747be5ad42 Mon Sep 17 00:00:00 2001 From: Jeena Date: Sun, 31 Mar 2019 10:25:10 +0200 Subject: [PATCH 17/26] Add deploy step This step deploys the AppImage to GitHub so that I can create a release which contains the AppImage within it. --- .travis.yml | 45 +++++++++++++++++++++++++++------------------ 1 file changed, 27 insertions(+), 18 deletions(-) diff --git a/.travis.yml b/.travis.yml index dd3eb50..fcc6e8d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,23 +2,32 @@ language: cpp compiler: gcc sudo: require dist: trusty - before_install: - - sudo add-apt-repository ppa:beineri/opt-qt58-trusty -y - - sudo apt-get update -qq - -install: - - sudo apt-get -y install qt58base qt58webengine qt58quickcontrols - - source /opt/qt58/bin/qt58-env.sh - +- sudo add-apt-repository ppa:beineri/opt-qt58-trusty -y +- sudo apt-get update -qq +install: +- sudo apt-get -y install qt58base qt58webengine qt58quickcontrols +- source /opt/qt58/bin/qt58-env.sh script: - - qmake PREFIX=/usr - - make -j4 - - sudo make INSTALL_ROOT=appdir install ; sudo chown -R $USER appdir ; find appdir/ - - wget -c "https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage" - - chmod a+x linuxdeployqt*.AppImage - - unset QTDIR; unset QT_PLUGIN_PATH ; unset LD_LIBRARY_PATH - - ./linuxdeployqt*.AppImage ./appdir/usr/share/applications/*.desktop -qmldir=./qml/ -bundle-non-qt-libs - - ./linuxdeployqt*.AppImage ./appdir/usr/share/applications/*.desktop -qmldir=./qml/ -appimage - - find ./appdir -executable -type f -exec ldd {} \; | grep " => /usr" | cut -d " " -f 2-3 | sort | uniq - - curl --upload-file ./FeedTheMonkey*.AppImage https://transfer.sh/FeedTheMonkey-git.$(git rev-parse --short HEAD)-x86_64.AppImage +- qmake PREFIX=/usr +- make -j4 +- sudo make INSTALL_ROOT=appdir install ; sudo chown -R $USER appdir ; find appdir/ +- wget -c "https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage" +- chmod a+x linuxdeployqt*.AppImage +- unset QTDIR; unset QT_PLUGIN_PATH ; unset LD_LIBRARY_PATH +- "./linuxdeployqt*.AppImage ./appdir/usr/share/applications/*.desktop -qmldir=./qml/ + -bundle-non-qt-libs" +- "./linuxdeployqt*.AppImage ./appdir/usr/share/applications/*.desktop -qmldir=./qml/ + -appimage" +- find ./appdir -executable -type f -exec ldd {} \; | grep " => /usr" | cut -d " " + -f 2-3 | sort | uniq +- mv FeedTheMonkey*.AppImage FeedTheMonkey.AppImage +deploy: + provider: releases + api_key: + secure: d+hHwOnmeLPVvuue6VDCs2LwLS+BFzJF/BB5iObtkCYBwQ8ybnVzUcgnjJKOt37SHI0T9kLegI+Lq/843ECYiGiDjQg4PvCF69V8ODgHv3v1qiN5oG/eroBXd83a0+xhi4BuJt0SwcV9mcv4uD9bCPhj944rmMLH+3qD4ysgImBmbYSbbLecE9+QAs7bfrCwQRfdCePBORX3FHa/p12NEtln7xv6ZRyku9LdJSzAcdgm4zc95ggTAVC1+aQB6J0q2QzWPlQcOkLx+ZYmOqClhbSMFpIyPXP8UpXjYyvUlTAd0+wH8BGf0O3lpOqACc7IKIbj9d5oPmghVZo55SyW+RR77G+az+IbGJ7iXZsMfQZsMvtB7hNYhNvUUxQrAau7Y/ve+6sMQmvA7aMHV8kDUvnNW/c2r2jAWwk+N8QzGcP/rclDCKeOWZqZABmrzTViXZVAeXh4hJ8r6mbq8iwagBUPCsVYhVuerQt/KIoWxyn6/1GmMfKGi3dA/v3u1qU61vzrz3yLlJBmUAVPxZdVmqfRweh4BXjImxFMFmf5PYm5FnDg1gmw8rWsgii7+IPYw7DjTAHpjYbtXvDwDgG1nRXiRp2TGtPPgKW1/Uk8r/j5vfB5WcEZ7exLUgsPPjny5MGvzjqOxeLvwK1Pg9jFBFXIx7l1tNMJQxQU0r3DmBg= + file: FeedTheMonkey.AppImage + on: + repo: jeena/FeedTheMonkey + skip_cleanup: true + draft: true From ab1306a7b8e5cf96886cb01a7f52cbec8a0f765a Mon Sep 17 00:00:00 2001 From: Jeena Date: Sat, 27 Apr 2019 22:59:34 +0200 Subject: [PATCH 18/26] Update QtWebEngine te 1.8 When running with AppImage and on Ubuntu I'm getting the error that QtWebEngine 1.7 is not installed, it seems that per default 1.8 is installed nowadays. --- qml/Content.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qml/Content.qml b/qml/Content.qml index 73885f1..9ace9c4 100644 --- a/qml/Content.qml +++ b/qml/Content.qml @@ -17,7 +17,7 @@ * along with FeedTheMonkey. If not, see . */ -import QtWebEngine 1.7 +import QtWebEngine 1.8 import QtQuick 2.0 import QtQuick.Controls 1.3 import QtQuick.Layouts 1.1 From 3a0b18e51ef681d0d96107e00ce9abf1b23dba2c Mon Sep 17 00:00:00 2001 From: Jeena Date: Fri, 12 Jun 2020 23:17:06 +0200 Subject: [PATCH 19/26] Replace image URLs My old jabs.nu domain doesn't exist anymore, I moved the screenshot and the logo file included in the readme to a different server. The screenshot has been renewt to the dark mode one. --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 8819b8e..155358a 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # FeedTheMonkey -Icon +Icon FeedTheMonkey is a desktop client for [TinyTinyRSS](http://tt-rss.org). That means that it doesn't work as a standalone feed reader but only as a client for the TinyTinyRSS API @@ -43,7 +43,7 @@ the use on a desktop computer but I'd like to see it on a mobile device too. ## Screenshot -![Feed the Monkey screenshot](http://jabs.nu/feedthemonkey/screenshot.png) +![Feed the Monkey screenshot](http://jeena.net/feedthemonkey/feedthemonkey-dark.png) ## License From cb649951ae56359b61de170df20981bed1f970ad Mon Sep 17 00:00:00 2001 From: Jeena Date: Fri, 12 Jun 2020 23:34:58 +0200 Subject: [PATCH 20/26] Make sidebar dissapear if thiner than 200px Often I wanted to make the sidebar dissapear because I don't need it. This patch let's you make it dissapear when it's thinner than 200px and reappear if it's wider. --- qml/Sidebar.qml | 9 +++++++-- qml/main.qml | 1 - 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/qml/Sidebar.qml b/qml/Sidebar.qml index bcb70ee..ee7d762 100644 --- a/qml/Sidebar.qml +++ b/qml/Sidebar.qml @@ -48,6 +48,13 @@ ScrollView { } } + onWidthChanged: { + // Hide sidebar if smaller than 200px wide + if(width < 200) { + width = 0; + } + } + ListView { id: listView @@ -85,8 +92,6 @@ ScrollView { } item.content.post = server.posts[currentIndex] - //content.flickableItem.contentY = 0 - previousPost = item.content.post } } diff --git a/qml/main.qml b/qml/main.qml index a5fcbcb..1f6409f 100644 --- a/qml/main.qml +++ b/qml/main.qml @@ -184,7 +184,6 @@ ApplicationWindow { content: content server: server - Layout.minimumWidth: 200 implicitWidth: 300 textFontSize: app.textFontSize nightmode: app.nightmode From ea85197874e7be95b80b395ee7cbbe0fa8ed6db0 Mon Sep 17 00:00:00 2001 From: Jeena Date: Fri, 12 Jun 2020 23:37:00 +0200 Subject: [PATCH 21/26] Tweak dark mode and font size to appear closer to Adwaita-dark in GNOME The colors are now closer to the Adwaita-dark mode which I'm using as my primary theme. The header has been redesigned slightly to appear more consistent with other default apps too. --- html/content.css | 31 +++++++++++++------------------ qml/PostListItem.qml | 4 ++-- qml/Sidebar.qml | 14 +++++++++++--- qml/main.qml | 2 +- 4 files changed, 27 insertions(+), 24 deletions(-) diff --git a/html/content.css b/html/content.css index afcb4e4..2b1d0b3 100644 --- a/html/content.css +++ b/html/content.css @@ -25,14 +25,12 @@ html, body { body { background: #eee; font-family: sans-serif; - padding: 2em; - font-weight: lighter; word-wrap: break-word; } .nightmode { - background: #111; - color: #aaa; + background: #353535; + color: #ddd; } .nightmode::-webkit-scrollbar { @@ -51,32 +49,28 @@ body { } h1 { - font-weight: lighter; font-size: 1.4em; margin: 0; padding: 0; } -#date { - border-bottom: 1px solid #aaa; - margin-bottom: 1em; - padding-bottom: 1em; - display: block; -} - -.nightmode #date { - border-bottom-color: #333; -} - .starred:after { content: "*"; } +header { + padding: 2em; + border-bottom: 1px solid #aaa; +} + +.nightmode header { + border-bottom-color: #222; +} + header p { - color: #aaa; + color: #666; margin: 0; padding: 0; - font-size: 0.8em; } .nightmode header p { @@ -90,6 +84,7 @@ a { article { line-height: 1.6; + margin: 2em; } article a { diff --git a/qml/PostListItem.qml b/qml/PostListItem.qml index e0c3d20..63bf813 100644 --- a/qml/PostListItem.qml +++ b/qml/PostListItem.qml @@ -33,7 +33,7 @@ Item { } id: item - height: d.height + t.height + e.height + 20 + height: d.height + t.height + e.height + 2 Item { anchors.fill: parent @@ -81,7 +81,7 @@ Item { Label { id: t text: title - color: nightmode ? (read ? "#555" : "#aaa") : (read ? "gray" : "black") + color: nightmode ? (read ? "#888" : "#ddd") : (read ? "gray" : "black") font.pointSize: textFontSize textFormat: Text.PlainText wrapMode: Text.WrapAnywhere diff --git a/qml/Sidebar.qml b/qml/Sidebar.qml index ee7d762..84de4cb 100644 --- a/qml/Sidebar.qml +++ b/qml/Sidebar.qml @@ -55,6 +55,14 @@ ScrollView { } } + Rectangle { + width: 1 + color: app.nightmode ? "#111" : "lightgray" + anchors.right: parent.right + anchors.top: parent.top + height: parent.height + } + ListView { id: listView @@ -74,12 +82,12 @@ ScrollView { highlightFollowsCurrentItem: false highlight: Component { Rectangle { - width: listView.currentItem.width + width: listView.currentItem.width -1 height: listView.currentItem.height - color: nightmode ? "#444" : "lightblue" - opacity: 0.5 + color: nightmode ? "#15539e" : "lightblue" y: listView.currentItem.y } + } onCurrentItemChanged: { diff --git a/qml/main.qml b/qml/main.qml index 1f6409f..ca06500 100644 --- a/qml/main.qml +++ b/qml/main.qml @@ -29,7 +29,7 @@ ApplicationWindow { id: app title: "FeedTheMonkey" visible: true - color: nightmode ? "#111" : "#eee" + color: nightmode ? "#2d2d2d" : "#eee" minimumWidth: 480 minimumHeight: 320 From 3e0b62b109f2b376400a68f4c25d60361b81fe7a Mon Sep 17 00:00:00 2001 From: Jeena Date: Fri, 12 Jun 2020 23:42:42 +0200 Subject: [PATCH 22/26] Remove opening in speaker: URL scheme Back in the day on OSX this has been used to pass the current item to a application called Speaker which would read the content. That application is not available anymore so we can remove the functionality from FeedTheMonkey. --- qml/TheMenuBar.qml | 2 +- qml/main.qml | 4 ---- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/qml/TheMenuBar.qml b/qml/TheMenuBar.qml index ae2eb70..94a07dc 100644 --- a/qml/TheMenuBar.qml +++ b/qml/TheMenuBar.qml @@ -132,7 +132,7 @@ MenuBar { title: qsTr("Help") MenuItem { text: qsTr("About") - onTriggered: Qt.openUrlExternally("http://jabs.nu/feedthemonkey"); + onTriggered: Qt.openUrlExternally("http://jeena.net/feedthemonkey/index.html"); } } diff --git a/qml/main.qml b/qml/main.qml index ca06500..0b6074b 100644 --- a/qml/main.qml +++ b/qml/main.qml @@ -159,10 +159,6 @@ ApplicationWindow { case Qt.Key_Return: Qt.openUrlExternally(content.post.link) break - case Qt.Key_S: { - console.log(Qt.openUrlExternally("speaker:"+ removeHTML(content.post.content))) - break - } default: break } From f65d9b6231c7444ab7226b00f6a677f5907df552 Mon Sep 17 00:00:00 2001 From: Jeena Date: Fri, 12 Jun 2020 23:51:38 +0200 Subject: [PATCH 23/26] Make Ctrl+W close the application Many other applications have a Ctrl+W to close a window, adding this as a second option to close the application because it only has one window. --- qml/TheMenuBar.qml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/qml/TheMenuBar.qml b/qml/TheMenuBar.qml index 94a07dc..34c0310 100644 --- a/qml/TheMenuBar.qml +++ b/qml/TheMenuBar.qml @@ -35,6 +35,11 @@ MenuBar { Menu { visible: menuBar.visible title: qsTr("File") + MenuItem { + text: qsTr("Close &Window") + shortcut: "Ctrl+W" + onTriggered: Qt.quit() + } MenuItem { text: qsTr("Exit") shortcut: "Ctrl+Q" From 0bb19eae060ca9abe6b10aef46637db0dd3d515e Mon Sep 17 00:00:00 2001 From: Jeena Date: Sat, 13 Jun 2020 00:08:20 +0200 Subject: [PATCH 24/26] Remove duplicate import --- qml/Content.qml | 1 - 1 file changed, 1 deletion(-) diff --git a/qml/Content.qml b/qml/Content.qml index 9ace9c4..8d3faab 100644 --- a/qml/Content.qml +++ b/qml/Content.qml @@ -22,7 +22,6 @@ import QtQuick 2.0 import QtQuick.Controls 1.3 import QtQuick.Layouts 1.1 import QtQuick.Controls.Styles 1.3 -import QtQuick.Controls 1.3 import TTRSS 1.0 Item { From 4b804873a63aa1c89aeba80e0dd3db3dbb467bd7 Mon Sep 17 00:00:00 2001 From: Jeena Date: Sat, 13 Jun 2020 00:20:46 +0200 Subject: [PATCH 25/26] Fix open in browser on enter This patch fixes the opening of the current item in a browser which was broken for a long time. --- html/content.html | 6 ++++-- qml/Content.qml | 9 +++++---- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/html/content.html b/html/content.html index 9a1c3ec..87d53aa 100644 --- a/html/content.html +++ b/html/content.html @@ -81,11 +81,13 @@ function checkKey(e) { e = e || window.event; + if (e.keyCode === 37) { window.location.href = "feedthemonkey:previous"; - } - else if (e.keyCode === 39) { + } else if (e.keyCode === 39) { window.location.href = "feedthemonkey:next"; + } else if(e.keyCode == 13) { + window.location.href = "feedthemonkey:open"; } } diff --git a/qml/Content.qml b/qml/Content.qml index 8d3faab..07440be 100644 --- a/qml/Content.qml +++ b/qml/Content.qml @@ -86,13 +86,14 @@ Item { onNavigationRequested: { if (request.url == "feedthemonkey:previous") { - // This is commented out because for some reason this reloads the page forever. - // This will show the error that the feedthemonkey:previous location is not supported - //request.action = WebEngineNavigationRequest.IgnoreRequest; + request.action = WebEngineView.IgnoreRequest; app.showPreviousPost(); } else if (request.url == "feedthemonkey:next") { - //request.action = WebEngineNavigationRequest.IgnoreRequest; + request.action = WebEngineView.IgnoreRequest; app.showNextPost(); + } else if (request.url == "feedthemonkey:open") { + request.action = WebEngineView.IgnoreRequest; + Qt.openUrlExternally(post.link) } else if (request.navigationType !== WebEngineNavigationRequest.LinkClickedNavigation) { request.action = WebEngineView.AcceptRequest; } else { From 3f492b6160930220cc7d6ba83c394f39a4a032e8 Mon Sep 17 00:00:00 2001 From: Jeena Date: Mon, 24 May 2021 22:10:23 +0200 Subject: [PATCH 26/26] Fix problem with HDPI screens On high dpi screens the thml was shown way too small, this let's it scale properly. --- src/main.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main.cpp b/src/main.cpp index 48475bb..95f351e 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -31,6 +31,7 @@ int main(int argc, char *argv[]) { + QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); QGuiApplication app(argc, argv); app.setOrganizationName("Jeena"); app.setOrganizationDomain("jeena.net");