test better splitter handling¨

This commit is contained in:
Martin Rotter 2021-11-19 13:17:24 +01:00
parent d7574cf1eb
commit 258cff1c18
6 changed files with 36 additions and 48 deletions

View File

@ -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"

View File

@ -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());
}

View File

@ -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();

View File

@ -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<int>(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<int>(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,

View File

@ -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:

View File

@ -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)));