Fixed #26.
This commit is contained in:
parent
3d868a6a88
commit
6ba370f408
@ -285,76 +285,18 @@ bool MessagesModel::switchMessageImportance(int row_index) {
|
|||||||
|
|
||||||
bool MessagesModel::switchBatchMessageImportance(const QModelIndexList &messages) {
|
bool MessagesModel::switchBatchMessageImportance(const QModelIndexList &messages) {
|
||||||
QSqlDatabase db_handle = database();
|
QSqlDatabase db_handle = database();
|
||||||
|
QSqlQuery query_read_msg(db_handle);
|
||||||
|
QStringList message_ids;
|
||||||
|
|
||||||
if (!db_handle.transaction()) {
|
query_read_msg.setForwardOnly(true);
|
||||||
qWarning("Starting transaction for batch message importance switch failed.");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
int message_id, importance;
|
|
||||||
QSqlQuery query_importance_msg(db_handle);
|
|
||||||
query_importance_msg.setForwardOnly(true);
|
|
||||||
|
|
||||||
if (!query_importance_msg.prepare("UPDATE messages SET is_important = :important "
|
|
||||||
"WHERE id = :id")) {
|
|
||||||
qWarning("Query preparation failed for message importance switch.");
|
|
||||||
|
|
||||||
db_handle.rollback();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
// Obtain IDs of all desired messages.
|
||||||
foreach (const QModelIndex &message, messages) {
|
foreach (const QModelIndex &message, messages) {
|
||||||
message_id = messageId(message.row());
|
message_ids.append(QString::number(messageId(message.row())));
|
||||||
importance = data(message.row(), MSG_DB_IMPORTANT_INDEX, Qt::EditRole).toInt();
|
|
||||||
|
|
||||||
query_importance_msg.bindValue(":id", message_id);
|
|
||||||
query_importance_msg.bindValue(":important",
|
|
||||||
importance == 1 ? 0 : 1);
|
|
||||||
query_importance_msg.exec();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Commit changes.
|
if (query_read_msg.exec(QString("UPDATE messages SET is_important = NOT is_important "
|
||||||
if (db_handle.commit()) {
|
"WHERE id IN (%1)").arg(message_ids.join(", ")))) {
|
||||||
// FULLY reload the model if underlying data is changed.
|
|
||||||
select();
|
|
||||||
fetchAll();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return db_handle.rollback();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
bool MessagesModel::setBatchMessagesDeleted(const QModelIndexList &messages, int deleted) {
|
|
||||||
QSqlDatabase db_handle = database();
|
|
||||||
|
|
||||||
if (!db_handle.transaction()) {
|
|
||||||
qWarning("Starting transaction for batch message deletion.");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
int message_id;
|
|
||||||
QSqlQuery query_delete_msg(db_handle);
|
|
||||||
query_delete_msg.setForwardOnly(true);
|
|
||||||
|
|
||||||
if (!query_delete_msg.prepare("UPDATE messages SET is_deleted = :deleted "
|
|
||||||
"WHERE id = :id")) {
|
|
||||||
qWarning("Query preparation failed for message deletion.");
|
|
||||||
|
|
||||||
db_handle.rollback();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach (const QModelIndex &message, messages) {
|
|
||||||
message_id = messageId(message.row());
|
|
||||||
query_delete_msg.bindValue(":id", message_id);
|
|
||||||
query_delete_msg.bindValue(":deleted", deleted);
|
|
||||||
query_delete_msg.exec();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Commit changes.
|
|
||||||
if (db_handle.commit()) {
|
|
||||||
// FULLY reload the model if underlying data is changed.
|
|
||||||
select();
|
select();
|
||||||
fetchAll();
|
fetchAll();
|
||||||
|
|
||||||
@ -362,51 +304,61 @@ bool MessagesModel::setBatchMessagesDeleted(const QModelIndexList &messages, int
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return db_handle.rollback();
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool MessagesModel::setBatchMessagesRead(const QModelIndexList &messages, int read) {
|
bool MessagesModel::setBatchMessagesDeleted(const QModelIndexList &messages,
|
||||||
|
int deleted) {
|
||||||
QSqlDatabase db_handle = database();
|
QSqlDatabase db_handle = database();
|
||||||
|
|
||||||
/*if (!db_handle.transaction()) {
|
|
||||||
qWarning("Starting transaction for batch message read change.");
|
|
||||||
return false;
|
|
||||||
}*/
|
|
||||||
|
|
||||||
// TODO: pokracovat tady
|
|
||||||
//int message_id;
|
|
||||||
QSqlQuery query_read_msg(db_handle);
|
QSqlQuery query_read_msg(db_handle);
|
||||||
QStringList message_ids;
|
QStringList message_ids;
|
||||||
|
|
||||||
query_read_msg.setForwardOnly(true);
|
query_read_msg.setForwardOnly(true);
|
||||||
|
|
||||||
|
// Obtain IDs of all desired messages.
|
||||||
foreach (const QModelIndex &message, messages) {
|
foreach (const QModelIndex &message, messages) {
|
||||||
message_ids.append(QString::number(messageId(message.row())));
|
message_ids.append(QString::number(messageId(message.row())));
|
||||||
/*
|
|
||||||
message_id = messageId(message.row());
|
|
||||||
query_read_msg.bindValue(":id", message_id);
|
|
||||||
query_read_msg.bindValue(":read", read);
|
|
||||||
query_read_msg.exec();
|
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
query_read_msg.exec(QString("UPDATE messages SET is_read = %2 "
|
if (query_read_msg.exec(QString("UPDATE messages SET is_deleted = %2 "
|
||||||
"WHERE id IN (%1)").arg(message_ids.join(", "),
|
"WHERE id IN (%1)").arg(message_ids.join(", "),
|
||||||
QString::number(read)));
|
QString::number(deleted)))) {
|
||||||
|
select();
|
||||||
|
fetchAll();
|
||||||
|
|
||||||
// Commit changes.
|
emit feedCountsChanged();
|
||||||
/*if (db_handle.commit()) {
|
return true;
|
||||||
// FULLY reload the model if underlying data is changed.*/
|
|
||||||
select();
|
|
||||||
fetchAll();
|
|
||||||
|
|
||||||
emit feedCountsChanged();
|
|
||||||
return true;/*
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return db_handle.rollback();
|
return false;
|
||||||
}*/
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool MessagesModel::setBatchMessagesRead(const QModelIndexList &messages, int read) {
|
||||||
|
QSqlDatabase db_handle = database();
|
||||||
|
QSqlQuery query_read_msg(db_handle);
|
||||||
|
QStringList message_ids;
|
||||||
|
|
||||||
|
query_read_msg.setForwardOnly(true);
|
||||||
|
|
||||||
|
// Obtain IDs of all desired messages.
|
||||||
|
foreach (const QModelIndex &message, messages) {
|
||||||
|
message_ids.append(QString::number(messageId(message.row())));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (query_read_msg.exec(QString("UPDATE messages SET is_read = %2 "
|
||||||
|
"WHERE id IN (%1)").arg(message_ids.join(", "),
|
||||||
|
QString::number(read)))) {
|
||||||
|
select();
|
||||||
|
fetchAll();
|
||||||
|
|
||||||
|
emit feedCountsChanged();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
QVariant MessagesModel::headerData(int section,
|
QVariant MessagesModel::headerData(int section,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user