Cleanup wizard now offers to keep all starred messages.
This commit is contained in:
parent
562656ed9d
commit
6c2fee0909
5 changed files with 44 additions and 15 deletions
|
@ -86,6 +86,7 @@ void FormDatabaseCleanup::startPurging() {
|
||||||
orders.m_barrierForRemovingOldMessagesInDays = m_ui->m_spinDays->value();
|
orders.m_barrierForRemovingOldMessagesInDays = m_ui->m_spinDays->value();
|
||||||
orders.m_removeReadMessages = m_ui->m_checkRemoveReadMessages->isChecked();
|
orders.m_removeReadMessages = m_ui->m_checkRemoveReadMessages->isChecked();
|
||||||
orders.m_shrinkDatabase = m_ui->m_checkShrink->isEnabled() && m_ui->m_checkShrink->isChecked();
|
orders.m_shrinkDatabase = m_ui->m_checkShrink->isEnabled() && m_ui->m_checkShrink->isChecked();
|
||||||
|
orders.m_removeStarredMessages = m_ui->m_checkRemoveStarredMessages->isChecked();
|
||||||
|
|
||||||
emit purgeRequested(orders);
|
emit purgeRequested(orders);
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
<string>Cleanup settings (all checked items are completely erased from database)</string>
|
<string>Cleanup settings (all checked items are completely erased from database)</string>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QGridLayout" name="gridLayout">
|
<layout class="QGridLayout" name="gridLayout">
|
||||||
<item row="3" column="2">
|
<item row="4" column="2">
|
||||||
<spacer name="horizontalSpacer">
|
<spacer name="horizontalSpacer">
|
||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
<enum>Qt::Horizontal</enum>
|
<enum>Qt::Horizontal</enum>
|
||||||
|
@ -33,7 +33,7 @@
|
||||||
</property>
|
</property>
|
||||||
</spacer>
|
</spacer>
|
||||||
</item>
|
</item>
|
||||||
<item row="3" column="1">
|
<item row="4" column="1">
|
||||||
<widget class="QSpinBox" name="m_spinDays">
|
<widget class="QSpinBox" name="m_spinDays">
|
||||||
<property name="minimum">
|
<property name="minimum">
|
||||||
<number>1</number>
|
<number>1</number>
|
||||||
|
@ -46,7 +46,17 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="3" column="0">
|
<item row="0" column="0" colspan="3">
|
||||||
|
<widget class="QCheckBox" name="m_checkRemoveReadMessages">
|
||||||
|
<property name="text">
|
||||||
|
<string>Remove all read messages (not those from recycle bin)</string>
|
||||||
|
</property>
|
||||||
|
<property name="checked">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="4" column="0">
|
||||||
<widget class="QCheckBox" name="m_checkRemoveOldMessages">
|
<widget class="QCheckBox" name="m_checkRemoveOldMessages">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Remove all messages older than</string>
|
<string>Remove all messages older than</string>
|
||||||
|
@ -66,20 +76,17 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="0" colspan="3">
|
<item row="3" column="0" colspan="3">
|
||||||
<widget class="QCheckBox" name="m_checkRemoveReadMessages">
|
<widget class="QCheckBox" name="m_checkShrink">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Remove all read messages (not those from recycle bin)</string>
|
<string>Shrink database file</string>
|
||||||
</property>
|
|
||||||
<property name="checked">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="2" column="0" colspan="3">
|
<item row="2" column="0" colspan="3">
|
||||||
<widget class="QCheckBox" name="m_checkShrink">
|
<widget class="QCheckBox" name="m_checkRemoveStarredMessages">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Shrink database file</string>
|
<string>Remove all starred messages (including those from recycle bin)</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
|
|
@ -91,16 +91,29 @@ void DatabaseCleaner::purgeDatabaseData(const CleanerOrders &which_data) {
|
||||||
emit purgeFinished(result);
|
emit purgeFinished(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool DatabaseCleaner::purgeStarredMessages(const QSqlDatabase &database) {
|
||||||
|
QSqlQuery query = QSqlQuery(database);
|
||||||
|
|
||||||
|
query.setForwardOnly(true);
|
||||||
|
query.prepare("DELETE FROM Messages WHERE is_important = :is_important;");
|
||||||
|
query.bindValue(":is_important", 1);
|
||||||
|
|
||||||
|
return query.exec();
|
||||||
|
}
|
||||||
|
|
||||||
bool DatabaseCleaner::purgeReadMessages(const QSqlDatabase &database) {
|
bool DatabaseCleaner::purgeReadMessages(const QSqlDatabase &database) {
|
||||||
QSqlQuery query = QSqlQuery(database);
|
QSqlQuery query = QSqlQuery(database);
|
||||||
|
|
||||||
query.setForwardOnly(true);
|
query.setForwardOnly(true);
|
||||||
query.prepare("DELETE FROM Messages WHERE is_deleted = :is_deleted AND is_read = :is_read;");
|
query.prepare("DELETE FROM Messages WHERE is_important = :is_important AND is_deleted = :is_deleted AND is_read = :is_read;");
|
||||||
query.bindValue(":is_read", 1);
|
query.bindValue(":is_read", 1);
|
||||||
|
|
||||||
// Remove only messages which are NOT in recycle bin.
|
// Remove only messages which are NOT in recycle bin.
|
||||||
query.bindValue(":is_deleted", 0);
|
query.bindValue(":is_deleted", 0);
|
||||||
|
|
||||||
|
// Remove only messages which are NOT starred.
|
||||||
|
query.bindValue(":is_important", 0);
|
||||||
|
|
||||||
return query.exec();
|
return query.exec();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -109,9 +122,12 @@ bool DatabaseCleaner::purgeOldMessages(const QSqlDatabase &database, int days) {
|
||||||
qint64 since_epoch = QDateTime::currentDateTimeUtc().addDays(-days).toMSecsSinceEpoch();
|
qint64 since_epoch = QDateTime::currentDateTimeUtc().addDays(-days).toMSecsSinceEpoch();
|
||||||
|
|
||||||
query.setForwardOnly(true);
|
query.setForwardOnly(true);
|
||||||
query.prepare("DELETE FROM Messages WHERE date_created < :date_created;");
|
query.prepare("DELETE FROM Messages WHERE is_important = :is_important AND date_created < :date_created;");
|
||||||
query.bindValue(":date_created", since_epoch);
|
query.bindValue(":date_created", since_epoch);
|
||||||
|
|
||||||
|
// Remove only messages which are NOT starred.
|
||||||
|
query.bindValue(":is_important", 0);
|
||||||
|
|
||||||
return query.exec();
|
return query.exec();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -119,8 +135,11 @@ bool DatabaseCleaner::purgeRecycleBin(const QSqlDatabase &database) {
|
||||||
QSqlQuery query = QSqlQuery(database);
|
QSqlQuery query = QSqlQuery(database);
|
||||||
|
|
||||||
query.setForwardOnly(true);
|
query.setForwardOnly(true);
|
||||||
query.prepare("DELETE FROM Messages WHERE is_deleted = :is_deleted;");
|
query.prepare("DELETE FROM Messages WHERE is_important = :is_important AND is_deleted = :is_deleted;");
|
||||||
query.bindValue(":is_deleted", 1);
|
query.bindValue(":is_deleted", 1);
|
||||||
|
|
||||||
|
// Remove only messages which are NOT starred.
|
||||||
|
query.bindValue(":is_important", 0);
|
||||||
|
|
||||||
return query.exec();
|
return query.exec();
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,6 +28,7 @@ struct CleanerOrders {
|
||||||
bool m_shrinkDatabase;
|
bool m_shrinkDatabase;
|
||||||
bool m_removeOldMessages;
|
bool m_removeOldMessages;
|
||||||
bool m_removeRecycleBin;
|
bool m_removeRecycleBin;
|
||||||
|
bool m_removeStarredMessages;
|
||||||
int m_barrierForRemovingOldMessagesInDays;
|
int m_barrierForRemovingOldMessagesInDays;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -48,6 +49,7 @@ class DatabaseCleaner : public QObject {
|
||||||
void purgeDatabaseData(const CleanerOrders &which_data);
|
void purgeDatabaseData(const CleanerOrders &which_data);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
bool purgeStarredMessages(const QSqlDatabase &database);
|
||||||
bool purgeReadMessages(const QSqlDatabase &database);
|
bool purgeReadMessages(const QSqlDatabase &database);
|
||||||
bool purgeOldMessages(const QSqlDatabase &database, int days);
|
bool purgeOldMessages(const QSqlDatabase &database, int days);
|
||||||
bool purgeRecycleBin(const QSqlDatabase &database);
|
bool purgeRecycleBin(const QSqlDatabase &database);
|
||||||
|
|
Loading…
Add table
Reference in a new issue