From 258cff1c18d62f404b45ca29ab757ff8e0e1bca3 Mon Sep 17 00:00:00 2001 From: Martin Rotter Date: Fri, 19 Nov 2021 13:17:24 +0100 Subject: [PATCH] =?UTF-8?q?test=20better=20splitter=20handling=C2=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../scripts/github-actions/build-windows.ps1 | 2 +- src/librssguard/gui/dialogs/formmain.cpp | 10 ++- src/librssguard/gui/dialogs/formmain.h | 4 ++ src/librssguard/gui/feedmessageviewer.cpp | 63 ++++++------------- src/librssguard/gui/feedmessageviewer.h | 4 +- src/rssguard/main.cpp | 1 + 6 files changed, 36 insertions(+), 48 deletions(-) diff --git a/resources/scripts/github-actions/build-windows.ps1 b/resources/scripts/github-actions/build-windows.ps1 index 6fa06672b..932b260ab 100755 --- a/resources/scripts/github-actions/build-windows.ps1 +++ b/resources/scripts/github-actions/build-windows.ps1 @@ -19,7 +19,7 @@ $AllProtocols = [System.Net.SecurityProtocolType]'Tls11,Tls12' $ProgressPreference = 'SilentlyContinue' # Get and prepare needed dependencies. -$qt_version = "5.15.2" +$qt_version = "6.2.1" $maria_version = "10.6.5" $maria_link = "https://mirror.vpsfree.cz/mariadb/mariadb-$maria_version/winx64-packages/mariadb-$maria_version-winx64.zip" $maria_output = "maria.zip" diff --git a/src/librssguard/gui/dialogs/formmain.cpp b/src/librssguard/gui/dialogs/formmain.cpp index e5dd44b83..71a009842 100644 --- a/src/librssguard/gui/dialogs/formmain.cpp +++ b/src/librssguard/gui/dialogs/formmain.cpp @@ -812,9 +812,7 @@ void FormMain::createConnections() { connect(m_ui->m_actionSelectPreviousMessage, &QAction::triggered, tabWidget()->feedMessageViewer()->messagesView(), &MessagesView::selectPreviousItem); connect(m_ui->m_actionSwitchMessageListOrientation, &QAction::triggered, - tabWidget()->feedMessageViewer(), [this]() { - tabWidget()->feedMessageViewer()->switchMessageSplitterOrientation(true); - }); + tabWidget()->feedMessageViewer(), &FeedMessageViewer::switchMessageSplitterOrientation); connect(m_ui->m_actionShowOnlyUnreadItems, &QAction::toggled, tabWidget()->feedMessageViewer(), &FeedMessageViewer::toggleShowOnlyUnreadFeeds); connect(m_ui->m_actionShowTreeBranches, &QAction::toggled, @@ -907,3 +905,9 @@ void FormMain::reportABug() { void FormMain::donate() { qApp->web()->openUrlInExternalBrowser(QSL(APP_DONATE_URL)); } + +void FormMain::resizeEvent(QResizeEvent* event) { + QMainWindow::resizeEvent(event); + + emit windowResized(event->size()); +} diff --git a/src/librssguard/gui/dialogs/formmain.h b/src/librssguard/gui/dialogs/formmain.h index 35cc7ae4c..ab5d42fb2 100644 --- a/src/librssguard/gui/dialogs/formmain.h +++ b/src/librssguard/gui/dialogs/formmain.h @@ -66,10 +66,14 @@ class RSSGUARD_DLLSPEC FormMain : public QMainWindow { void donate(); protected: + virtual void resizeEvent(QResizeEvent* event); virtual void changeEvent(QEvent* event); virtual void closeEvent(QCloseEvent* event); virtual void hideEvent(QHideEvent* event); + signals: + void windowResized(const QSize& new_size); + private: void prepareMenus(); void createConnections(); diff --git a/src/librssguard/gui/feedmessageviewer.cpp b/src/librssguard/gui/feedmessageviewer.cpp index ca3e3a305..4f4ea9f32 100644 --- a/src/librssguard/gui/feedmessageviewer.cpp +++ b/src/librssguard/gui/feedmessageviewer.cpp @@ -91,22 +91,6 @@ void FeedMessageViewer::saveSize() { // Store offsets of splitters. settings->setValue(GROUP(GUI), GUI::SplitterFeeds, toVariant(m_feedSplitter->sizes())); - // We need to display message previewer so that it "has" some dimensions - // so that they can be saved. - m_messagesBrowser->show(); - qApp->processEvents(); - - if (!settings->value(GROUP(GUI), SETTING(GUI::SplitterMessagesIsVertical)).toBool()) { - settings->setValue(GROUP(GUI), - GUI::SplitterMessagesHorizontal, - toVariant(m_messageSplitter->sizes())); - } - else { - settings->setValue(GROUP(GUI), - GUI::SplitterMessagesVertical, - toVariant(m_messageSplitter->sizes())); - } - settings->setValue(GROUP(GUI), GUI::MessageViewState, QString(m_messagesView->saveHeaderState().toBase64())); // Store "visibility" of toolbars and list headers. @@ -126,7 +110,7 @@ void FeedMessageViewer::loadSize() { SETTING(GUI::SplitterMessagesVertical)))); } else { - switchMessageSplitterOrientation(false); + switchMessageSplitterOrientation(); } QString settings_msg_header = settings->value(GROUP(GUI), SETTING(GUI::MessageViewState)).toString(); @@ -150,44 +134,31 @@ bool FeedMessageViewer::areListHeadersEnabled() const { return m_listHeadersEnabled; } -void FeedMessageViewer::switchMessageSplitterOrientation(bool save_settings) { - bool preview_visible = m_messagesBrowser->isVisible(); - - if (!preview_visible && save_settings) { - // Must be visible to get correct dimensions to be saved. - m_messagesBrowser->show(); - qApp->processEvents(); - } - +void FeedMessageViewer::onSplitterResized() { if (m_messageSplitter->orientation() == Qt::Orientation::Vertical) { - if (save_settings) { - qApp->settings()->setValue(GROUP(GUI), - GUI::SplitterMessagesVertical, - toVariant(m_messageSplitter->sizes())); - } + qApp->settings()->setValue(GROUP(GUI), + GUI::SplitterMessagesVertical, + toVariant(m_messageSplitter->sizes())); + } + else { + qApp->settings()->setValue(GROUP(GUI), + GUI::SplitterMessagesHorizontal, + toVariant(m_messageSplitter->sizes())); + } +} +void FeedMessageViewer::switchMessageSplitterOrientation() { + if (m_messageSplitter->orientation() == Qt::Orientation::Vertical) { m_messageSplitter->setOrientation(Qt::Orientation::Horizontal); m_messageSplitter->setSizes(toList(qApp->settings()->value(GROUP(GUI), SETTING(GUI::SplitterMessagesHorizontal)))); } else { - if (save_settings) { - qApp->settings()->setValue(GROUP(GUI), - GUI::SplitterMessagesHorizontal, - toVariant(m_messageSplitter->sizes())); - } - m_messageSplitter->setOrientation(Qt::Orientation::Vertical); m_messageSplitter->setSizes(toList(qApp->settings()->value(GROUP(GUI), SETTING(GUI::SplitterMessagesVertical)))); } - if (!preview_visible && save_settings) { - // Must be visible to get correct dimensions to be saved. - m_messagesBrowser->hide(); - qApp->processEvents(); - } - qApp->settings()->setValue(GROUP(GUI), GUI::SplitterMessagesIsVertical, m_messageSplitter->orientation() == Qt::Orientation::Vertical); @@ -260,6 +231,10 @@ void FeedMessageViewer::alternateRowColorsInLists() { qApp->settings()->setValue(GROUP(GUI), GUI::AlternateRowColorsInLists, origin->isChecked()); } +void FeedMessageViewer::respondToMainWindowResizes() { + connect(qApp->mainForm(), &FormMain::windowResized, this, &FeedMessageViewer::onSplitterResized); +} + void FeedMessageViewer::displayMessage(const Message& message, RootItem* root) { if (qApp->settings()->value(GROUP(Messages), SETTING(Messages::EnableMessagePreview)).toBool()) { m_messagesBrowser->loadMessage(message, root); @@ -275,6 +250,8 @@ void FeedMessageViewer::createConnections() { connect(m_toolBarFeeds, &FeedsToolBar::feedsFilterPatternChanged, m_feedsView, &FeedsView::filterItems); connect(m_toolBarMessages, &MessagesToolBar::messageFilterChanged, m_messagesView, &MessagesView::filterMessages); + connect(m_messageSplitter, &QSplitter::splitterMoved, this, &FeedMessageViewer::onSplitterResized); + connect(m_messagesView, &MessagesView::currentMessageRemoved, m_messagesBrowser, &MessagePreviewer::clear); connect(m_messagesBrowser, &MessagePreviewer::markMessageRead, m_messagesView->sourceModel(), &MessagesModel::setMessageReadById); connect(m_messagesBrowser, &MessagePreviewer::markMessageImportant, diff --git a/src/librssguard/gui/feedmessageviewer.h b/src/librssguard/gui/feedmessageviewer.h index 2343ced02..00e38123b 100644 --- a/src/librssguard/gui/feedmessageviewer.h +++ b/src/librssguard/gui/feedmessageviewer.h @@ -51,7 +51,7 @@ class RSSGUARD_DLLSPEC FeedMessageViewer : public TabContent { void loadMessageViewerFonts(); // Switches orientation horizontal/vertical. - void switchMessageSplitterOrientation(bool save_settings); + void switchMessageSplitterOrientation(); // Enables/disables main toolbars or list headers. void setToolBarsEnabled(bool enable); @@ -69,8 +69,10 @@ class RSSGUARD_DLLSPEC FeedMessageViewer : public TabContent { void toggleShowFeedTreeBranches(); void toggleItemsAutoExpandingOnSelection(); void alternateRowColorsInLists(); + void respondToMainWindowResizes(); private slots: + void onSplitterResized(); void displayMessage(const Message& message, RootItem* root); protected: diff --git a/src/rssguard/main.cpp b/src/rssguard/main.cpp index b520bee9e..31be1e13c 100644 --- a/src/rssguard/main.cpp +++ b/src/rssguard/main.cpp @@ -89,6 +89,7 @@ int main(int argc, char* argv[]) { qApp->showTrayIcon(); qApp->offerChanges(); qApp->showPolls(); + qApp->mainForm()->tabWidget()->feedMessageViewer()->respondToMainWindowResizes(); qApp->mainForm()->tabWidget()->feedMessageViewer()->feedsView()->loadAllExpandStates(); qApp->parseCmdArgumentsFromOtherInstance(qApp->cmdParser()->positionalArguments().join(QSL(ARGUMENTS_LIST_SEPARATOR)));