do not mark message as read when right click with mouse
This commit is contained in:
parent
9855b8a523
commit
e9a9b32335
7 changed files with 50 additions and 21 deletions
|
@ -26,7 +26,7 @@
|
||||||
<url type="donation">https://github.com/sponsors/martinrotter</url>
|
<url type="donation">https://github.com/sponsors/martinrotter</url>
|
||||||
<content_rating type="oars-1.1" />
|
<content_rating type="oars-1.1" />
|
||||||
<releases>
|
<releases>
|
||||||
<release version="4.0.4" date="2021-10-15"/>
|
<release version="4.0.4" date="2021-10-19"/>
|
||||||
</releases>
|
</releases>
|
||||||
<content_rating type="oars-1.0">
|
<content_rating type="oars-1.0">
|
||||||
<content_attribute id="violence-cartoon">none</content_attribute>
|
<content_attribute id="violence-cartoon">none</content_attribute>
|
||||||
|
|
|
@ -407,9 +407,7 @@ void FormMain::onFeedUpdatesStarted() {
|
||||||
|
|
||||||
void FormMain::onFeedUpdatesProgress(const Feed* feed, int current, int total) {
|
void FormMain::onFeedUpdatesProgress(const Feed* feed, int current, int total) {
|
||||||
statusBar()->showProgressFeeds(int((current * 100.0) / total),
|
statusBar()->showProgressFeeds(int((current * 100.0) / total),
|
||||||
|
feed->title());
|
||||||
//: Text display in status bar when particular feed is updated.
|
|
||||||
tr("Fetched '%1'").arg(TextFactory::shorten(feed->title())));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void FormMain::updateMessageButtonsAvailability() {
|
void FormMain::updateMessageButtonsAvailability() {
|
||||||
|
|
|
@ -27,7 +27,8 @@
|
||||||
#include <QTimer>
|
#include <QTimer>
|
||||||
|
|
||||||
MessagesView::MessagesView(QWidget* parent)
|
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_sourceModel = qApp->feedReader()->messagesModel();
|
||||||
m_proxyModel = qApp->feedReader()->messagesProxyModel();
|
m_proxyModel = qApp->feedReader()->messagesProxyModel();
|
||||||
|
|
||||||
|
@ -351,9 +352,13 @@ void MessagesView::initializeContextMenu() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void MessagesView::mousePressEvent(QMouseEvent* event) {
|
void MessagesView::mousePressEvent(QMouseEvent* event) {
|
||||||
m_processingMouse = true;
|
m_processingAnyMouseButton = true;
|
||||||
|
m_processingRightMouseButton = event->button() == Qt::MouseButton::RightButton;
|
||||||
|
|
||||||
QTreeView::mousePressEvent(event);
|
QTreeView::mousePressEvent(event);
|
||||||
m_processingMouse = false;
|
|
||||||
|
m_processingAnyMouseButton = false;
|
||||||
|
m_processingRightMouseButton = false;
|
||||||
|
|
||||||
switch (event->button()) {
|
switch (event->button()) {
|
||||||
case Qt::MouseButton::LeftButton: {
|
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
|
// Set this message as read only if current item
|
||||||
// wasn't changed by "mark selected messages unread" action.
|
// wasn't changed by "mark selected messages unread" action.
|
||||||
m_sourceModel->setMessageRead(mapped_current_index.row(), RootItem::ReadStatus::Read);
|
if (!m_processingRightMouseButton) {
|
||||||
message.m_isRead = true;
|
m_sourceModel->setMessageRead(mapped_current_index.row(), RootItem::ReadStatus::Read);
|
||||||
|
message.m_isRead = true;
|
||||||
|
}
|
||||||
|
|
||||||
emit currentMessageChanged(message, m_sourceModel->loadedItem());
|
emit currentMessageChanged(message, m_sourceModel->loadedItem());
|
||||||
}
|
}
|
||||||
|
@ -428,7 +435,7 @@ void MessagesView::selectionChanged(const QItemSelection& selected, const QItemS
|
||||||
setCurrentIndex({});
|
setCurrentIndex({});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!m_processingMouse &&
|
if (!m_processingAnyMouseButton &&
|
||||||
qApp->settings()->value(GROUP(Messages), SETTING(Messages::KeepCursorInCenter)).toBool()) {
|
qApp->settings()->value(GROUP(Messages), SETTING(Messages::KeepCursorInCenter)).toBool()) {
|
||||||
scrollTo(currentIndex(), QAbstractItemView::ScrollHint::PositionAtCenter);
|
scrollTo(currentIndex(), QAbstractItemView::ScrollHint::PositionAtCenter);
|
||||||
}
|
}
|
||||||
|
@ -616,7 +623,7 @@ void MessagesView::selectNextItem() {
|
||||||
setCurrentIndex(index_next);
|
setCurrentIndex(index_next);
|
||||||
|
|
||||||
scrollTo(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::PositionAtCenter
|
||||||
: QAbstractItemView::ScrollHint::PositionAtTop);
|
: QAbstractItemView::ScrollHint::PositionAtTop);
|
||||||
|
|
||||||
|
@ -632,7 +639,7 @@ void MessagesView::selectPreviousItem() {
|
||||||
setCurrentIndex(index_previous);
|
setCurrentIndex(index_previous);
|
||||||
|
|
||||||
scrollTo(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::PositionAtCenter
|
||||||
: QAbstractItemView::ScrollHint::PositionAtTop);
|
: QAbstractItemView::ScrollHint::PositionAtTop);
|
||||||
|
|
||||||
|
@ -664,7 +671,7 @@ void MessagesView::selectNextUnreadItem() {
|
||||||
qApp->processEvents();
|
qApp->processEvents();
|
||||||
|
|
||||||
scrollTo(next_unread,
|
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::PositionAtCenter
|
||||||
: QAbstractItemView::ScrollHint::PositionAtTop);
|
: QAbstractItemView::ScrollHint::PositionAtTop);
|
||||||
|
|
||||||
|
@ -692,7 +699,7 @@ void MessagesView::searchMessages(const QString& pattern) {
|
||||||
else {
|
else {
|
||||||
// Scroll to selected message, it could become scrolled out due to filter change.
|
// Scroll to selected message, it could become scrolled out due to filter change.
|
||||||
scrollTo(selectionModel()->selectedRows().at(0),
|
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::PositionAtCenter
|
||||||
: QAbstractItemView::ScrollHint::EnsureVisible);
|
: QAbstractItemView::ScrollHint::EnsureVisible);
|
||||||
}
|
}
|
||||||
|
|
|
@ -107,7 +107,8 @@ class MessagesView : public BaseTreeView {
|
||||||
MessagesProxyModel* m_proxyModel;
|
MessagesProxyModel* m_proxyModel;
|
||||||
MessagesModel* m_sourceModel;
|
MessagesModel* m_sourceModel;
|
||||||
bool m_columnsAdjusted;
|
bool m_columnsAdjusted;
|
||||||
bool m_processingMouse;
|
bool m_processingAnyMouseButton;
|
||||||
|
bool m_processingRightMouseButton;
|
||||||
};
|
};
|
||||||
|
|
||||||
inline MessagesProxyModel* MessagesView::model() const {
|
inline MessagesProxyModel* MessagesView::model() const {
|
||||||
|
|
|
@ -5,26 +5,44 @@
|
||||||
#include "definitions/definitions.h"
|
#include "definitions/definitions.h"
|
||||||
#include "miscellaneous/application.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 {
|
QString ProgressBarWithText::text() const {
|
||||||
qint64 totalSteps = qint64(maximum()) - minimum();
|
qint64 total_steps = qint64(maximum()) - minimum();
|
||||||
QString result = format();
|
QString result = format();
|
||||||
QLocale locale;
|
QLocale locale;
|
||||||
|
|
||||||
locale.setNumberOptions(locale.numberOptions() | QLocale::OmitGroupSeparator);
|
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()));
|
result.replace(QLatin1String("%v"), locale.toString(value()));
|
||||||
|
|
||||||
// If max and min are equal and we get this far, it means that the
|
// 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
|
// progress bar has one step and that we are on that step. Return
|
||||||
// 100% here in order to avoid division by zero further down.
|
// 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));
|
result.replace(QLatin1String("%p"), locale.toString(100));
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
const auto progress = static_cast<int>((qint64(value()) - minimum()) * 100.0 / totalSteps);
|
const auto progress = static_cast<int>((qint64(value()) - minimum()) * 100.0 / total_steps);
|
||||||
|
|
||||||
result.replace(QLatin1String("%p"), locale.toString(progress));
|
result.replace(QLatin1String("%p"), locale.toString(progress));
|
||||||
return result;
|
return result;
|
||||||
|
|
|
@ -9,6 +9,11 @@ class ProgressBarWithText : public QProgressBar {
|
||||||
public:
|
public:
|
||||||
explicit ProgressBarWithText(QWidget* parent = nullptr);
|
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;
|
virtual QString text() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -18,7 +18,7 @@ StatusBar::StatusBar(QWidget* parent) : QStatusBar(parent) {
|
||||||
|
|
||||||
m_barProgressFeeds = new ProgressBarWithText(this);
|
m_barProgressFeeds = new ProgressBarWithText(this);
|
||||||
m_barProgressFeeds->setTextVisible(true);
|
m_barProgressFeeds->setTextVisible(true);
|
||||||
m_barProgressFeeds->setFixedWidth(230);
|
m_barProgressFeeds->setFixedWidth(250);
|
||||||
m_barProgressFeeds->setVisible(false);
|
m_barProgressFeeds->setVisible(false);
|
||||||
m_barProgressFeeds->setObjectName(QSL("m_barProgressFeeds"));
|
m_barProgressFeeds->setObjectName(QSL("m_barProgressFeeds"));
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue