diff --git a/resources/desktop/com.github.rssguard.appdata.xml b/resources/desktop/com.github.rssguard.appdata.xml index 5d310b483..4f6436566 100644 --- a/resources/desktop/com.github.rssguard.appdata.xml +++ b/resources/desktop/com.github.rssguard.appdata.xml @@ -26,7 +26,7 @@ https://github.com/sponsors/martinrotter - + none diff --git a/src/librssguard/gui/dialogs/formsettings.cpp b/src/librssguard/gui/dialogs/formsettings.cpp index 3a274ce41..7c711e053 100644 --- a/src/librssguard/gui/dialogs/formsettings.cpp +++ b/src/librssguard/gui/dialogs/formsettings.cpp @@ -130,8 +130,19 @@ void FormSettings::cancelSettings() { void FormSettings::addSettingsPanel(SettingsPanel* panel) { m_ui.m_listSettings->addItem(panel->title()); m_panels.append(panel); - m_ui.m_stackedSettings->addWidget(panel); + + QScrollArea* scr = new QScrollArea(m_ui.m_stackedSettings); + + scr->setWidgetResizable(true); + scr->setFrameShape(QFrame::Shape::NoFrame); + + //panel->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum); + scr->setWidget(panel); + + m_ui.m_stackedSettings->addWidget(scr); + panel->loadSettings(); + connect(panel, &SettingsPanel::settingsChanged, this, [this]() { m_btnApply->setEnabled(true); }); diff --git a/src/librssguard/gui/dialogs/formsettings.ui b/src/librssguard/gui/dialogs/formsettings.ui index 9616b9431..38608c029 100644 --- a/src/librssguard/gui/dialogs/formsettings.ui +++ b/src/librssguard/gui/dialogs/formsettings.ui @@ -6,8 +6,8 @@ 0 0 - 1000 - 680 + 800 + 550 @@ -45,13 +45,6 @@ - - - - -1 - - - @@ -62,6 +55,13 @@ + + + + -1 + + + diff --git a/src/librssguard/gui/feedsview.cpp b/src/librssguard/gui/feedsview.cpp index b3ee82b56..4a1140607 100644 --- a/src/librssguard/gui/feedsview.cpp +++ b/src/librssguard/gui/feedsview.cpp @@ -28,7 +28,7 @@ #include FeedsView::FeedsView(QWidget* parent) - : QTreeView(parent), m_contextMenuService(nullptr), m_contextMenuBin(nullptr), m_contextMenuCategories(nullptr), + : BaseTreeView(parent), m_contextMenuService(nullptr), m_contextMenuBin(nullptr), m_contextMenuCategories(nullptr), m_contextMenuFeeds(nullptr), m_contextMenuImportant(nullptr), m_contextMenuEmptySpace(nullptr), m_contextMenuOtherItems(nullptr), m_contextMenuLabel(nullptr) { setObjectName(QSL("FeedsView")); @@ -774,9 +774,9 @@ void FeedsView::selectionChanged(const QItemSelection& selected, const QItemSele } void FeedsView::keyPressEvent(QKeyEvent* event) { - QTreeView::keyPressEvent(event); + BaseTreeView::keyPressEvent(event); - if (event->key() == Qt::Key_Delete) { + if (event->key() == Qt::Key::Key_Delete) { deleteSelectedItem(); } } diff --git a/src/librssguard/gui/feedsview.h b/src/librssguard/gui/feedsview.h index fb3a97599..046df78c7 100644 --- a/src/librssguard/gui/feedsview.h +++ b/src/librssguard/gui/feedsview.h @@ -3,7 +3,7 @@ #ifndef FEEDSVIEW_H #define FEEDSVIEW_H -#include +#include "gui/reusable/basetreeview.h" #include "core/feedsmodel.h" @@ -13,7 +13,7 @@ class FeedsProxyModel; class Feed; class Category; -class RSSGUARD_DLLSPEC FeedsView : public QTreeView { +class RSSGUARD_DLLSPEC FeedsView : public BaseTreeView { Q_OBJECT public: diff --git a/src/librssguard/gui/messagesview.cpp b/src/librssguard/gui/messagesview.cpp index 93aec1168..834709a98 100644 --- a/src/librssguard/gui/messagesview.cpp +++ b/src/librssguard/gui/messagesview.cpp @@ -27,7 +27,7 @@ #include MessagesView::MessagesView(QWidget* parent) - : QTreeView(parent), m_contextMenu(nullptr), m_columnsAdjusted(false), m_processingMouse(false) { + : BaseTreeView(parent), m_contextMenu(nullptr), m_columnsAdjusted(false), m_processingMouse(false) { m_sourceModel = qApp->feedReader()->messagesModel(); m_proxyModel = qApp->feedReader()->messagesProxyModel(); @@ -227,11 +227,14 @@ void MessagesView::focusInEvent(QFocusEvent* event) { } void MessagesView::keyPressEvent(QKeyEvent* event) { - QTreeView::keyPressEvent(event); + BaseTreeView::keyPressEvent(event); if (event->key() == Qt::Key::Key_Delete) { deleteSelectedMessages(); } + else if (event->key() == Qt::Key::Key_Backspace) { + restoreSelectedMessages(); + } } void MessagesView::contextMenuEvent(QContextMenuEvent* event) { diff --git a/src/librssguard/gui/messagesview.h b/src/librssguard/gui/messagesview.h index 451056106..332fc6e34 100644 --- a/src/librssguard/gui/messagesview.h +++ b/src/librssguard/gui/messagesview.h @@ -3,16 +3,16 @@ #ifndef MESSAGESVIEW_H #define MESSAGESVIEW_H -#include "core/messagesmodel.h" +#include "gui/reusable/basetreeview.h" +#include "core/messagesmodel.h" #include "services/abstract/rootitem.h" #include -#include class MessagesProxyModel; -class MessagesView : public QTreeView { +class MessagesView : public BaseTreeView { Q_OBJECT public: diff --git a/src/librssguard/gui/reusable/basetreeview.cpp b/src/librssguard/gui/reusable/basetreeview.cpp new file mode 100755 index 000000000..13c058264 --- /dev/null +++ b/src/librssguard/gui/reusable/basetreeview.cpp @@ -0,0 +1,42 @@ +// For license of this file, see /LICENSE.md. + +#include "gui/reusable/basetreeview.h" + +#include + +BaseTreeView::BaseTreeView(QWidget* parent) : QTreeView(parent), m_keyboardShortcutsLimited(false) { + m_allowedKeyboardKeys = { + Qt::Key::Key_Back, + Qt::Key::Key_Select, + Qt::Key::Key_Copy, + Qt::Key::Key_Shift, + Qt::Key::Key_Control, + Qt::Key::Key_Up, + Qt::Key::Key_Down, + Qt::Key::Key_Left, + Qt::Key::Key_Right, + Qt::Key::Key_Home, + Qt::Key::Key_End, + Qt::Key::Key_PageUp, + Qt::Key::Key_PageDown + }; +} + +bool BaseTreeView::keyboardShortcutsLimited() const { + return m_keyboardShortcutsLimited; +} + +void BaseTreeView::setKeyboardShortcutsLimited(bool limited) { + m_keyboardShortcutsLimited = limited; +} + +void BaseTreeView::keyPressEvent(QKeyEvent* event) { + if (m_keyboardShortcutsLimited && + !m_allowedKeyboardKeys.contains(event->key()) && + !event->matches(QKeySequence::StandardKey::SelectAll)) { + event->ignore(); + } + else { + QTreeView::keyPressEvent(event); + } +} diff --git a/src/librssguard/gui/reusable/basetreeview.h b/src/librssguard/gui/reusable/basetreeview.h new file mode 100755 index 000000000..90e68e3de --- /dev/null +++ b/src/librssguard/gui/reusable/basetreeview.h @@ -0,0 +1,25 @@ +// For license of this file, see /LICENSE.md. + +#ifndef BASETREEVIEW_H +#define BASETREEVIEW_H + +#include + +class BaseTreeView : public QTreeView { + Q_OBJECT + + public: + explicit BaseTreeView(QWidget* parent = nullptr); + + bool keyboardShortcutsLimited() const; + void setKeyboardShortcutsLimited(bool limited); + + protected: + virtual void keyPressEvent(QKeyEvent* event); + + private: + bool m_keyboardShortcutsLimited; + QList m_allowedKeyboardKeys; +}; + +#endif // BASETREEVIEW_H diff --git a/src/librssguard/gui/settings/settingsbrowsermail.ui b/src/librssguard/gui/settings/settingsbrowsermail.ui index 1946a7470..960294309 100644 --- a/src/librssguard/gui/settings/settingsbrowsermail.ui +++ b/src/librssguard/gui/settings/settingsbrowsermail.ui @@ -6,7 +6,7 @@ 0 0 - 658 + 481 330 @@ -36,10 +36,23 @@ - Always open links from simple internal text browser in external web browser + Always open hyperlinks in external web browser + + + + Qt::Vertical + + + + 20 + 40 + + + + @@ -135,8 +148,15 @@ - - + + + + + External e-mail client + + + + Qt::Vertical @@ -148,13 +168,6 @@ - - - - - External e-mail client - - @@ -255,19 +268,6 @@ - - - - Qt::Vertical - - - - 20 - 40 - - - - @@ -275,13 +275,6 @@ External tools - - - - On this page, you can setup a list of external tools which can open URLs of selected messages. - - - @@ -309,6 +302,37 @@ + + + + + + &Add tool + + + + + + + false + + + &Edit selected tool + + + + + + + false + + + &Delete selected tool + + + + + @@ -322,36 +346,12 @@ - - - - - - &Add new external tool - - - - - - - false - - - &Edit selected external tool - - - - - - - false - - - &Delete selected external tool - - - - + + + + On this page, you can setup a list of external tools which can open URLs of selected messages. + + diff --git a/src/librssguard/gui/settings/settingsdatabase.ui b/src/librssguard/gui/settings/settingsdatabase.ui index c7ae81c70..f4aa1e841 100644 --- a/src/librssguard/gui/settings/settingsdatabase.ui +++ b/src/librssguard/gui/settings/settingsdatabase.ui @@ -6,7 +6,7 @@ 0 0 - 558 + 547 356 diff --git a/src/librssguard/gui/settings/settingsdownloads.ui b/src/librssguard/gui/settings/settingsdownloads.ui index 06ed812ea..a4460a073 100644 --- a/src/librssguard/gui/settings/settingsdownloads.ui +++ b/src/librssguard/gui/settings/settingsdownloads.ui @@ -6,7 +6,7 @@ 0 0 - 758 + 469 300 @@ -36,13 +36,6 @@ Target directory for downloaded files - - - - Ask for each individual downloaded file - - - @@ -87,6 +80,13 @@ + + + + Ask for each individual downloaded file + + + diff --git a/src/librssguard/gui/settings/settingsfeedsmessages.ui b/src/librssguard/gui/settings/settingsfeedsmessages.ui index 2deb5e19f..63d086baf 100644 --- a/src/librssguard/gui/settings/settingsfeedsmessages.ui +++ b/src/librssguard/gui/settings/settingsfeedsmessages.ui @@ -6,7 +6,7 @@ 0 0 - 788 + 479 433 @@ -26,7 +26,7 @@ - 0 + 1 @@ -36,7 +36,7 @@ - Fetch articles for all feeds on application startup with initial delay of + Fetch all articles on startup with initial delay of @@ -45,6 +45,12 @@ false + + + 150 + 0 + + false @@ -65,6 +71,12 @@ false + + + 150 + 0 + + false @@ -124,6 +136,12 @@ + + + 150 + 0 + + Connection timeout is time interval which is reserved for downloading new messages for the feed. If this time interval elapses, then download process is aborted. @@ -144,7 +162,7 @@ - Height or rows in feed list (-1 = default height) + Feed list row height (-1 = default) m_spinHeightRowsFeeds @@ -153,6 +171,12 @@ + + + 150 + 0 + + -1 @@ -173,6 +197,12 @@ + + + 150 + 0 + + @@ -278,7 +308,7 @@ - Height or rows in article list (-1 = default height) + Article list row height (-1 = default) m_spinHeightRowsMessages @@ -287,6 +317,12 @@ + + + 150 + 0 + + -1 @@ -307,6 +343,12 @@ + + + 150 + 0 + + 22 @@ -318,7 +360,7 @@ - Use custom date/time format (overrides format loaded from active localization) + Use custom date/time format true @@ -329,7 +371,14 @@ - + + + + 150 + 0 + + + diff --git a/src/librssguard/gui/settings/settingsgeneral.ui b/src/librssguard/gui/settings/settingsgeneral.ui index c603416bc..f1ae15204 100644 --- a/src/librssguard/gui/settings/settingsgeneral.ui +++ b/src/librssguard/gui/settings/settingsgeneral.ui @@ -6,7 +6,7 @@ 0 0 - 552 + 360 148 diff --git a/src/librssguard/gui/settings/settingsgui.ui b/src/librssguard/gui/settings/settingsgui.ui index a73a1eaa0..51285e011 100644 --- a/src/librssguard/gui/settings/settingsgui.ui +++ b/src/librssguard/gui/settings/settingsgui.ui @@ -6,10 +6,16 @@ 0 0 - 670 + 667 394 + + + 0 + 0 + + 0 @@ -71,12 +77,6 @@ - - - 0 - 0 - - 0 diff --git a/src/librssguard/gui/settings/settingslocalization.ui b/src/librssguard/gui/settings/settingslocalization.ui index f320e9210..831ae7df8 100644 --- a/src/librssguard/gui/settings/settingslocalization.ui +++ b/src/librssguard/gui/settings/settingslocalization.ui @@ -6,8 +6,8 @@ 0 0 - 400 - 300 + 435 + 263 diff --git a/src/librssguard/gui/settings/settingsnotifications.ui b/src/librssguard/gui/settings/settingsnotifications.ui index ff4386e12..d5bbdd8f4 100644 --- a/src/librssguard/gui/settings/settingsnotifications.ui +++ b/src/librssguard/gui/settings/settingsnotifications.ui @@ -6,13 +6,10 @@ 0 0 - 400 + 367 300 - - Form - 0 diff --git a/src/librssguard/librssguard.pro b/src/librssguard/librssguard.pro index 6bebf9faa..c7be264fb 100644 --- a/src/librssguard/librssguard.pro +++ b/src/librssguard/librssguard.pro @@ -64,6 +64,7 @@ HEADERS += core/feeddownloader.h \ gui/notifications/notificationseditor.h \ gui/notifications/singlenotificationeditor.h \ gui/reusable/baselineedit.h \ + gui/reusable/basetreeview.h \ gui/reusable/helpspoiler.h \ gui/reusable/progressbarwithtext.h \ gui/reusable/resizablestackedwidget.h \ @@ -246,6 +247,7 @@ SOURCES += core/feeddownloader.cpp \ gui/notifications/notificationseditor.cpp \ gui/notifications/singlenotificationeditor.cpp \ gui/reusable/baselineedit.cpp \ + gui/reusable/basetreeview.cpp \ gui/reusable/helpspoiler.cpp \ gui/reusable/progressbarwithtext.cpp \ gui/reusable/resizablestackedwidget.cpp \