diff --git a/resources/desktop/com.github.rssguard.appdata.xml b/resources/desktop/com.github.rssguard.appdata.xml index 82789739d..a18834e97 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/formmain.cpp b/src/librssguard/gui/dialogs/formmain.cpp index 43824495b..e522a0d6c 100644 --- a/src/librssguard/gui/dialogs/formmain.cpp +++ b/src/librssguard/gui/dialogs/formmain.cpp @@ -407,9 +407,7 @@ void FormMain::onFeedUpdatesStarted() { void FormMain::onFeedUpdatesProgress(const Feed* feed, int current, int total) { statusBar()->showProgressFeeds(int((current * 100.0) / total), - - //: Text display in status bar when particular feed is updated. - tr("Fetched '%1'").arg(TextFactory::shorten(feed->title()))); + feed->title()); } void FormMain::updateMessageButtonsAvailability() { diff --git a/src/librssguard/gui/messagesview.cpp b/src/librssguard/gui/messagesview.cpp index d193d3712..36ef6cc7c 100644 --- a/src/librssguard/gui/messagesview.cpp +++ b/src/librssguard/gui/messagesview.cpp @@ -27,7 +27,8 @@ #include MessagesView::MessagesView(QWidget* parent) - : BaseTreeView(parent), m_contextMenu(nullptr), m_columnsAdjusted(false), m_processingMouse(false) { + : BaseTreeView(parent), m_contextMenu(nullptr), m_columnsAdjusted(false), m_processingAnyMouseButton(false), + m_processingRightMouseButton(false) { m_sourceModel = qApp->feedReader()->messagesModel(); m_proxyModel = qApp->feedReader()->messagesProxyModel(); @@ -351,9 +352,13 @@ void MessagesView::initializeContextMenu() { } void MessagesView::mousePressEvent(QMouseEvent* event) { - m_processingMouse = true; + m_processingAnyMouseButton = true; + m_processingRightMouseButton = event->button() == Qt::MouseButton::RightButton; + QTreeView::mousePressEvent(event); - m_processingMouse = false; + + m_processingAnyMouseButton = false; + m_processingRightMouseButton = false; switch (event->button()) { case Qt::MouseButton::LeftButton: { @@ -415,8 +420,10 @@ void MessagesView::selectionChanged(const QItemSelection& selected, const QItemS // Set this message as read only if current item // wasn't changed by "mark selected messages unread" action. - m_sourceModel->setMessageRead(mapped_current_index.row(), RootItem::ReadStatus::Read); - message.m_isRead = true; + if (!m_processingRightMouseButton) { + m_sourceModel->setMessageRead(mapped_current_index.row(), RootItem::ReadStatus::Read); + message.m_isRead = true; + } emit currentMessageChanged(message, m_sourceModel->loadedItem()); } @@ -428,7 +435,7 @@ void MessagesView::selectionChanged(const QItemSelection& selected, const QItemS setCurrentIndex({}); } - if (!m_processingMouse && + if (!m_processingAnyMouseButton && qApp->settings()->value(GROUP(Messages), SETTING(Messages::KeepCursorInCenter)).toBool()) { scrollTo(currentIndex(), QAbstractItemView::ScrollHint::PositionAtCenter); } @@ -616,7 +623,7 @@ void MessagesView::selectNextItem() { setCurrentIndex(index_next); scrollTo(index_next, - !m_processingMouse && qApp->settings()->value(GROUP(Messages), SETTING(Messages::KeepCursorInCenter)).toBool() + !m_processingAnyMouseButton && qApp->settings()->value(GROUP(Messages), SETTING(Messages::KeepCursorInCenter)).toBool() ? QAbstractItemView::ScrollHint::PositionAtCenter : QAbstractItemView::ScrollHint::PositionAtTop); @@ -632,7 +639,7 @@ void MessagesView::selectPreviousItem() { setCurrentIndex(index_previous); scrollTo(index_previous, - !m_processingMouse && qApp->settings()->value(GROUP(Messages), SETTING(Messages::KeepCursorInCenter)).toBool() + !m_processingAnyMouseButton && qApp->settings()->value(GROUP(Messages), SETTING(Messages::KeepCursorInCenter)).toBool() ? QAbstractItemView::ScrollHint::PositionAtCenter : QAbstractItemView::ScrollHint::PositionAtTop); @@ -664,7 +671,7 @@ void MessagesView::selectNextUnreadItem() { qApp->processEvents(); scrollTo(next_unread, - !m_processingMouse && qApp->settings()->value(GROUP(Messages), SETTING(Messages::KeepCursorInCenter)).toBool() + !m_processingAnyMouseButton && qApp->settings()->value(GROUP(Messages), SETTING(Messages::KeepCursorInCenter)).toBool() ? QAbstractItemView::ScrollHint::PositionAtCenter : QAbstractItemView::ScrollHint::PositionAtTop); @@ -692,7 +699,7 @@ void MessagesView::searchMessages(const QString& pattern) { else { // Scroll to selected message, it could become scrolled out due to filter change. scrollTo(selectionModel()->selectedRows().at(0), - !m_processingMouse && qApp->settings()->value(GROUP(Messages), SETTING(Messages::KeepCursorInCenter)).toBool() + !m_processingAnyMouseButton && qApp->settings()->value(GROUP(Messages), SETTING(Messages::KeepCursorInCenter)).toBool() ? QAbstractItemView::ScrollHint::PositionAtCenter : QAbstractItemView::ScrollHint::EnsureVisible); } diff --git a/src/librssguard/gui/messagesview.h b/src/librssguard/gui/messagesview.h index 332fc6e34..f7f6896e4 100644 --- a/src/librssguard/gui/messagesview.h +++ b/src/librssguard/gui/messagesview.h @@ -107,7 +107,8 @@ class MessagesView : public BaseTreeView { MessagesProxyModel* m_proxyModel; MessagesModel* m_sourceModel; bool m_columnsAdjusted; - bool m_processingMouse; + bool m_processingAnyMouseButton; + bool m_processingRightMouseButton; }; inline MessagesProxyModel* MessagesView::model() const { diff --git a/src/librssguard/gui/reusable/progressbarwithtext.cpp b/src/librssguard/gui/reusable/progressbarwithtext.cpp index aebebb1bc..f97838c52 100644 --- a/src/librssguard/gui/reusable/progressbarwithtext.cpp +++ b/src/librssguard/gui/reusable/progressbarwithtext.cpp @@ -5,26 +5,44 @@ #include "definitions/definitions.h" #include "miscellaneous/application.h" -ProgressBarWithText::ProgressBarWithText(QWidget* parent) : QProgressBar(parent) {} +ProgressBarWithText::ProgressBarWithText(QWidget* parent) : QProgressBar(parent) { + //setSizePolicy(QSizePolicy::Policy::Maximum, QSizePolicy::Policy::Preferred); +} + +/* + QSize ProgressBarWithText::minimumSizeHint() const { + QString txt = text(); + + return QSize(fontMetrics().boundingRect(txt).width() + 32, + QProgressBar::minimumSizeHint().height()); + } + + QSize ProgressBarWithText::sizeHint() const { + QString txt = text(); + + return QSize(fontMetrics().boundingRect(txt).width() + 32, + QProgressBar::sizeHint().height()); + } + */ QString ProgressBarWithText::text() const { - qint64 totalSteps = qint64(maximum()) - minimum(); + qint64 total_steps = qint64(maximum()) - minimum(); QString result = format(); QLocale locale; locale.setNumberOptions(locale.numberOptions() | QLocale::OmitGroupSeparator); - result.replace(QLatin1String("%m"), locale.toString(totalSteps)); + result.replace(QLatin1String("%m"), locale.toString(total_steps)); result.replace(QLatin1String("%v"), locale.toString(value())); // If max and min are equal and we get this far, it means that the // progress bar has one step and that we are on that step. Return // 100% here in order to avoid division by zero further down. - if (totalSteps == 0) { + if (total_steps == 0) { result.replace(QLatin1String("%p"), locale.toString(100)); return result; } - const auto progress = static_cast((qint64(value()) - minimum()) * 100.0 / totalSteps); + const auto progress = static_cast((qint64(value()) - minimum()) * 100.0 / total_steps); result.replace(QLatin1String("%p"), locale.toString(progress)); return result; diff --git a/src/librssguard/gui/reusable/progressbarwithtext.h b/src/librssguard/gui/reusable/progressbarwithtext.h index 123f2f35a..ddcb7d99d 100644 --- a/src/librssguard/gui/reusable/progressbarwithtext.h +++ b/src/librssguard/gui/reusable/progressbarwithtext.h @@ -9,6 +9,11 @@ class ProgressBarWithText : public QProgressBar { public: explicit ProgressBarWithText(QWidget* parent = nullptr); + // NOTE: Can be uncommented (along with constructor code) + // to enable automatic fit-to-contents progress bars. + //virtual QSize minimumSizeHint() const; + //virtual QSize sizeHint() const; + virtual QString text() const; }; diff --git a/src/librssguard/gui/toolbars/statusbar.cpp b/src/librssguard/gui/toolbars/statusbar.cpp index 8ba7801bc..1dbcd8f81 100644 --- a/src/librssguard/gui/toolbars/statusbar.cpp +++ b/src/librssguard/gui/toolbars/statusbar.cpp @@ -18,7 +18,7 @@ StatusBar::StatusBar(QWidget* parent) : QStatusBar(parent) { m_barProgressFeeds = new ProgressBarWithText(this); m_barProgressFeeds->setTextVisible(true); - m_barProgressFeeds->setFixedWidth(230); + m_barProgressFeeds->setFixedWidth(250); m_barProgressFeeds->setVisible(false); m_barProgressFeeds->setObjectName(QSL("m_barProgressFeeds"));