fix #608
This commit is contained in:
parent
54700644c1
commit
521d6418fb
@ -23,7 +23,8 @@
|
||||
|
||||
MessagesModel::MessagesModel(QObject* parent)
|
||||
: QSqlQueryModel(parent), m_view(nullptr), m_cache(new MessagesModelCache(this)), m_messageHighlighter(MessageHighlighter::NoHighlighting),
|
||||
m_customDateFormat(QString()), m_customTimeFormat(QString()), m_selectedItem(nullptr), m_displayFeedIcons(false),
|
||||
m_customDateFormat(QString()), m_customTimeFormat(QString()), m_newerArticlesRelativeTime(-1),
|
||||
m_selectedItem(nullptr), m_displayFeedIcons(false),
|
||||
m_multilineListItems(qApp->settings()->value(GROUP(Messages), SETTING(Messages::MultilineArticleList)).toBool()) {
|
||||
setupFonts();
|
||||
setupIcons();
|
||||
@ -203,6 +204,9 @@ void MessagesModel::updateDateFormat() {
|
||||
else {
|
||||
m_customTimeFormat = QString();
|
||||
}
|
||||
|
||||
m_newerArticlesRelativeTime = qApp->settings()->value(GROUP(Messages),
|
||||
SETTING(Messages::RelativeTimeForNewerArticles)).toInt();
|
||||
}
|
||||
|
||||
void MessagesModel::updateFeedIconsDisplay() {
|
||||
@ -305,9 +309,35 @@ QVariant MessagesModel::data(const QModelIndex& idx, int role) const {
|
||||
int index_column = idx.column();
|
||||
|
||||
if (index_column == MSG_DB_DCREATED_INDEX) {
|
||||
QDateTime dt = TextFactory::parseDateTime(QSqlQueryModel::data(idx, role).value<qint64>()).toLocalTime();
|
||||
QDateTime dt = TextFactory::parseDateTime(QSqlQueryModel::data(idx,
|
||||
Qt::ItemDataRole::EditRole).value<qint64>()).toLocalTime();
|
||||
|
||||
if (dt.date() == QDate::currentDate() && !m_customTimeFormat.isEmpty()) {
|
||||
if (m_newerArticlesRelativeTime > 0 &&
|
||||
dt.daysTo(QDateTime::currentDateTime()) <= m_newerArticlesRelativeTime) {
|
||||
auto secs_difference = dt.secsTo(QDateTime::currentDateTime());
|
||||
|
||||
if (secs_difference >= 604800) {
|
||||
// More than 1 week.
|
||||
return tr("%1 weeks ago").arg(secs_difference / 604800);
|
||||
}
|
||||
else if (secs_difference >= 172800) {
|
||||
// At least 2 days.
|
||||
return tr("%1 days ago").arg(secs_difference / 86400);
|
||||
}
|
||||
else if (secs_difference >= 86400) {
|
||||
// 1 day.
|
||||
return tr("1 day ago");
|
||||
}
|
||||
else if (secs_difference >= 3600) {
|
||||
// Less than a day.
|
||||
return tr("%1 hours ago").arg(secs_difference / 3600);
|
||||
}
|
||||
else {
|
||||
// Less then 1 hour ago.
|
||||
return tr("%1 minutes ago").arg(secs_difference / 60);
|
||||
}
|
||||
}
|
||||
else if (dt.date() == QDate::currentDate() && !m_customTimeFormat.isEmpty()) {
|
||||
return dt.toString(m_customTimeFormat);
|
||||
}
|
||||
else if (m_customDateFormat.isEmpty()) {
|
||||
|
@ -97,6 +97,7 @@ class MessagesModel : public QSqlQueryModel, public MessagesModelSqlLayer {
|
||||
MessageHighlighter m_messageHighlighter;
|
||||
QString m_customDateFormat;
|
||||
QString m_customTimeFormat;
|
||||
int m_newerArticlesRelativeTime;
|
||||
RootItem* m_selectedItem;
|
||||
QList<QString> m_headerData;
|
||||
QList<QString> m_tooltipData;
|
||||
|
@ -88,6 +88,10 @@ FormMain::FormMain(QWidget* parent, Qt::WindowFlags f)
|
||||
m_actionToolbarMainMenu->setText(tr("Open &main menu"));
|
||||
m_actionToolbarMainMenu->setObjectName("m_actionToolbarMainMenu");
|
||||
|
||||
connect(m_actionToolbarMainMenu, &QWidgetAction::triggered, this, [this]() {
|
||||
qobject_cast<QToolButton*>(m_actionToolbarMainMenu->defaultWidget())->menu()->exec();
|
||||
});
|
||||
|
||||
#if defined(USE_WEBENGINE)
|
||||
m_ui->m_menuWebBrowserTabs->addAction(qApp->web()->adBlock()->adBlockIcon());
|
||||
m_ui->m_menuWebBrowserTabs->addAction(qApp->web()->engineSettingsAction());
|
||||
|
@ -52,6 +52,15 @@ SettingsFeedsMessages::SettingsFeedsMessages(Settings* settings, QWidget* parent
|
||||
connect(m_ui->m_checkDisplayPlaceholders, &QCheckBox::toggled, this, &SettingsFeedsMessages::dirtifySettings);
|
||||
#endif
|
||||
|
||||
connect(m_ui->m_spinRelativeArticleTime, QOverload<int>::of(&QSpinBox::valueChanged), this, [=](int value) {
|
||||
if (value <= 0) {
|
||||
m_ui->m_spinRelativeArticleTime->setSuffix(QSL(" ") + tr("days (turned off)"));
|
||||
}
|
||||
else {
|
||||
m_ui->m_spinRelativeArticleTime->setSuffix(QSL(" ") + tr("day(s)", nullptr, value));
|
||||
}
|
||||
});
|
||||
|
||||
connect(m_ui->m_cbListsRestrictedShortcuts, &QCheckBox::toggled, this, &SettingsFeedsMessages::dirtifySettings);
|
||||
connect(m_ui->m_cmbIgnoreContentsChanges, &QCheckBox::toggled, this, &SettingsFeedsMessages::dirtifySettings);
|
||||
connect(m_ui->m_cbHideCountsIfNoUnread, &QCheckBox::toggled, this, &SettingsFeedsMessages::dirtifySettings);
|
||||
@ -73,18 +82,27 @@ SettingsFeedsMessages::SettingsFeedsMessages(Settings* settings, QWidget* parent
|
||||
this, &SettingsFeedsMessages::dirtifySettings);
|
||||
connect(m_ui->m_spinStartupUpdateDelay, static_cast<void (QDoubleSpinBox::*)(double)>(&QDoubleSpinBox::valueChanged),
|
||||
this, &SettingsFeedsMessages::dirtifySettings);
|
||||
|
||||
connect(m_ui->m_spinHeightRowsMessages, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged),
|
||||
this, &SettingsFeedsMessages::dirtifySettings);
|
||||
connect(m_ui->m_spinHeightRowsMessages, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged),
|
||||
this, &SettingsFeedsMessages::requireRestart);
|
||||
|
||||
connect(m_ui->m_spinHeightRowsFeeds, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged),
|
||||
this, &SettingsFeedsMessages::dirtifySettings);
|
||||
connect(m_ui->m_spinHeightRowsFeeds, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged),
|
||||
this, &SettingsFeedsMessages::requireRestart);
|
||||
|
||||
connect(m_ui->m_spinPaddingRowsMessages, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged),
|
||||
this, &SettingsFeedsMessages::dirtifySettings);
|
||||
connect(m_ui->m_spinPaddingRowsMessages, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged),
|
||||
this, &SettingsFeedsMessages::requireRestart);
|
||||
|
||||
connect(m_ui->m_spinRelativeArticleTime, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged),
|
||||
this, &SettingsFeedsMessages::dirtifySettings);
|
||||
connect(m_ui->m_spinRelativeArticleTime, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged),
|
||||
this, &SettingsFeedsMessages::requireRestart);
|
||||
|
||||
connect(m_ui->m_checkAutoUpdate, &QCheckBox::toggled, m_ui->m_spinAutoUpdateInterval, &TimeSpinBox::setEnabled);
|
||||
connect(m_ui->m_checkUpdateAllFeedsOnStartup, &QCheckBox::toggled, m_ui->m_spinStartupUpdateDelay, &TimeSpinBox::setEnabled);
|
||||
connect(m_ui->m_spinFeedUpdateTimeout, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged), this,
|
||||
@ -125,6 +143,8 @@ SettingsFeedsMessages::SettingsFeedsMessages(Settings* settings, QWidget* parent
|
||||
if (!m_ui->m_spinFeedUpdateTimeout->suffix().startsWith(' ')) {
|
||||
m_ui->m_spinFeedUpdateTimeout->setSuffix(QSL(" ") + m_ui->m_spinFeedUpdateTimeout->suffix());
|
||||
}
|
||||
|
||||
m_ui->m_spinRelativeArticleTime->setValue(-1);
|
||||
}
|
||||
|
||||
SettingsFeedsMessages::~SettingsFeedsMessages() {
|
||||
@ -162,6 +182,7 @@ void SettingsFeedsMessages::changeFont(QLabel& lbl) {
|
||||
void SettingsFeedsMessages::loadSettings() {
|
||||
onBeginLoadSettings();
|
||||
|
||||
m_ui->m_spinRelativeArticleTime->setValue(settings()->value(GROUP(Messages), SETTING(Messages::RelativeTimeForNewerArticles)).toInt());
|
||||
m_ui->m_spinPaddingRowsMessages->setValue(settings()->value(GROUP(Messages), SETTING(Messages::ArticleListPadding)).toInt());
|
||||
m_ui->m_spinHeightRowsMessages->setValue(settings()->value(GROUP(GUI), SETTING(GUI::HeightRowMessages)).toInt());
|
||||
m_ui->m_spinHeightRowsFeeds->setValue(settings()->value(GROUP(GUI), SETTING(GUI::HeightRowFeeds)).toInt());
|
||||
@ -234,6 +255,7 @@ void SettingsFeedsMessages::loadSettings() {
|
||||
void SettingsFeedsMessages::saveSettings() {
|
||||
onBeginSaveSettings();
|
||||
|
||||
settings()->setValue(GROUP(Messages), Messages::RelativeTimeForNewerArticles, m_ui->m_spinRelativeArticleTime->value());
|
||||
settings()->setValue(GROUP(Messages), Messages::ArticleListPadding, m_ui->m_spinPaddingRowsMessages->value());
|
||||
settings()->setValue(GROUP(GUI), GUI::HeightRowMessages, m_ui->m_spinHeightRowsMessages->value());
|
||||
settings()->setValue(GROUP(GUI), GUI::HeightRowFeeds, m_ui->m_spinHeightRowsFeeds->value());
|
||||
|
@ -418,6 +418,13 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0" colspan="2">
|
||||
<widget class="QCheckBox" name="m_checkMultilineArticleList">
|
||||
<property name="text">
|
||||
<string>Enable multiline items</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="0" colspan="2">
|
||||
<widget class="HelpSpoiler" name="m_helpMultilineArticleList" native="true">
|
||||
<property name="minimumSize">
|
||||
@ -538,20 +545,7 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="9" column="0" colspan="2">
|
||||
<spacer name="verticalSpacer_4">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>40</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="8" column="0">
|
||||
<item row="9" column="0">
|
||||
<widget class="QGroupBox" name="groupBox_5">
|
||||
<property name="title">
|
||||
<string>Article list font</string>
|
||||
@ -577,10 +571,33 @@
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0" colspan="2">
|
||||
<widget class="QCheckBox" name="m_checkMultilineArticleList">
|
||||
<item row="10" column="0" colspan="2">
|
||||
<spacer name="verticalSpacer_4">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>40</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="8" column="0">
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="text">
|
||||
<string>Enable multiline items</string>
|
||||
<string>Show relative time for articles not older than</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="8" column="1">
|
||||
<widget class="QSpinBox" name="m_spinRelativeArticleTime">
|
||||
<property name="minimum">
|
||||
<number>-1</number>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>300</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
|
@ -130,6 +130,9 @@ DVALUE(bool) Messages::UseCustomDateDef = false;
|
||||
DKEY Messages::CustomDateFormat = "custom_date_format";
|
||||
DVALUE(char*) Messages::CustomDateFormatDef = "";
|
||||
|
||||
DKEY Messages::RelativeTimeForNewerArticles = "relative_time_for_new_articles";
|
||||
DVALUE(int) Messages::RelativeTimeForNewerArticlesDef = -1;
|
||||
|
||||
DKEY Messages::ArticleListPadding = "article_list_padding";
|
||||
DVALUE(int) Messages::ArticleListPaddingDef = -1;
|
||||
|
||||
|
@ -138,6 +138,9 @@ namespace Messages {
|
||||
KEY UseCustomTime;
|
||||
VALUE(bool) UseCustomTimeDef;
|
||||
|
||||
KEY RelativeTimeForNewerArticles;
|
||||
VALUE(int) RelativeTimeForNewerArticlesDef;
|
||||
|
||||
KEY ArticleListPadding;
|
||||
VALUE(int) ArticleListPaddingDef;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user