Changes...
This commit is contained in:
parent
832190edbd
commit
431b668f28
@ -43,7 +43,7 @@ set(MINIMUM_QT_VERSION 4.7.3)
|
|||||||
set(SOURCE_PACKAGE_SUFFIX "Source")
|
set(SOURCE_PACKAGE_SUFFIX "Source")
|
||||||
set(EXE_NAME ${APP_LOW_NAME})
|
set(EXE_NAME ${APP_LOW_NAME})
|
||||||
|
|
||||||
option(USE_QT_5 "Use Qt 5 for building" ON)
|
option(USE_QT_5 "Use Qt 5 for building" OFF)
|
||||||
|
|
||||||
message(STATUS "[${APP_LOW_NAME}] Welcome to ${APP_NAME} compilation process.")
|
message(STATUS "[${APP_LOW_NAME}] Welcome to ${APP_NAME} compilation process.")
|
||||||
message(STATUS "[${APP_LOW_NAME}] Compilation process begins right now.")
|
message(STATUS "[${APP_LOW_NAME}] Compilation process begins right now.")
|
||||||
|
@ -97,6 +97,18 @@
|
|||||||
<source>Toolbar for messages</source>
|
<source>Toolbar for messages</source>
|
||||||
<translation>Panel zpráv</translation>
|
<translation>Panel zpráv</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Update selected/all feeds</source>
|
||||||
|
<translation>Aktualizovat všechny/vybrané kanály</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Select which feeds you want to update.</source>
|
||||||
|
<translation>Zvolte, zda chcete aktualizovat vybrané nebo všechny kanály.</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Feed update menu</source>
|
||||||
|
<translation>Menu aktualizace kanálů</translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>FormAbout</name>
|
<name>FormAbout</name>
|
||||||
@ -415,6 +427,30 @@
|
|||||||
<source>Add new feed.</source>
|
<source>Add new feed.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Open selected messages in external browser</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Open selected messages in external browser.</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Open selected messages in internal browser</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Open selected messages in internal browser.</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Open selected source articles in external browser</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Open selected source messages in external browser.</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>FormSettings</name>
|
<name>FormSettings</name>
|
||||||
@ -638,11 +674,6 @@
|
|||||||
<source>no icon theme</source>
|
<source>no icon theme</source>
|
||||||
<translation>žádné téma ikon</translation>
|
<translation>žádné téma ikon</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<source>Some keyboard shortcuts are not unique.
|
|
||||||
</source>
|
|
||||||
<translation>Některé klávesové zkrátky jsou duplicitní.</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<source>Cannot save settings</source>
|
<source>Cannot save settings</source>
|
||||||
<translation>Nastavení nelze uložit</translation>
|
<translation>Nastavení nelze uložit</translation>
|
||||||
@ -692,10 +723,35 @@
|
|||||||
<source>Application couldn't be restarted. Please, restart it manually for changes to take effect.</source>
|
<source>Application couldn't be restarted. Please, restart it manually for changes to take effect.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Feeds & messages</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source> • some keyboard shortcuts are not unique</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Some critical settings are not set. You must fix these settings in order confirm new settings.</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>List of errors:
|
||||||
|
%1.</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source> • language changed</source>
|
<source> • language changed</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source> • icon theme changed</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source> • skin changed</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>FormWelcome</name>
|
<name>FormWelcome</name>
|
||||||
@ -766,6 +822,13 @@
|
|||||||
<translation>Obsah</translation>
|
<translation>Obsah</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
|
<context>
|
||||||
|
<name>MessagesView</name>
|
||||||
|
<message>
|
||||||
|
<source>Context menu for messages</source>
|
||||||
|
<translation>Kontextové menu pro zprávy</translation>
|
||||||
|
</message>
|
||||||
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>QObject</name>
|
<name>QObject</name>
|
||||||
<message>
|
<message>
|
||||||
|
@ -97,6 +97,18 @@
|
|||||||
<source>Toolbar for messages</source>
|
<source>Toolbar for messages</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Update selected/all feeds</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Select which feeds you want to update.</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Feed update menu</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>FormAbout</name>
|
<name>FormAbout</name>
|
||||||
@ -415,6 +427,30 @@
|
|||||||
<source>Add new feed.</source>
|
<source>Add new feed.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Open selected messages in external browser</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Open selected messages in external browser.</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Open selected messages in internal browser</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Open selected messages in internal browser.</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Open selected source articles in external browser</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Open selected source messages in external browser.</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>FormSettings</name>
|
<name>FormSettings</name>
|
||||||
@ -632,11 +668,6 @@
|
|||||||
<source>no icon theme</source>
|
<source>no icon theme</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<source>Some keyboard shortcuts are not unique.
|
|
||||||
</source>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<source>Cannot save settings</source>
|
<source>Cannot save settings</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
@ -686,10 +717,35 @@
|
|||||||
<source>Application couldn't be restarted. Please, restart it manually for changes to take effect.</source>
|
<source>Application couldn't be restarted. Please, restart it manually for changes to take effect.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Feeds & messages</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source> • some keyboard shortcuts are not unique</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Some critical settings are not set. You must fix these settings in order confirm new settings.</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>List of errors:
|
||||||
|
%1.</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source> • language changed</source>
|
<source> • language changed</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source> • icon theme changed</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source> • skin changed</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>FormWelcome</name>
|
<name>FormWelcome</name>
|
||||||
@ -760,6 +816,13 @@
|
|||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
|
<context>
|
||||||
|
<name>MessagesView</name>
|
||||||
|
<message>
|
||||||
|
<source>Context menu for messages</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>QObject</name>
|
<name>QObject</name>
|
||||||
<message>
|
<message>
|
||||||
|
@ -97,6 +97,18 @@
|
|||||||
<source>Toolbar for messages</source>
|
<source>Toolbar for messages</source>
|
||||||
<translation>Werkbalk voor berichten</translation>
|
<translation>Werkbalk voor berichten</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Update selected/all feeds</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Select which feeds you want to update.</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Feed update menu</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>FormAbout</name>
|
<name>FormAbout</name>
|
||||||
@ -415,6 +427,30 @@
|
|||||||
<source>Add new feed.</source>
|
<source>Add new feed.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Open selected messages in external browser</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Open selected messages in external browser.</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Open selected messages in internal browser</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Open selected messages in internal browser.</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Open selected source articles in external browser</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Open selected source messages in external browser.</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>FormSettings</name>
|
<name>FormSettings</name>
|
||||||
@ -638,12 +674,6 @@
|
|||||||
<source>no icon theme</source>
|
<source>no icon theme</source>
|
||||||
<translation>Geen pictogram thema</translation>
|
<translation>Geen pictogram thema</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<source>Some keyboard shortcuts are not unique.
|
|
||||||
</source>
|
|
||||||
<translation>Sommige sneltoetsen voor toetsenbord zijn niet uniek.
|
|
||||||
</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<source>Cannot save settings</source>
|
<source>Cannot save settings</source>
|
||||||
<translation>Kan instellingen niet opslaan</translation>
|
<translation>Kan instellingen niet opslaan</translation>
|
||||||
@ -693,10 +723,35 @@
|
|||||||
<source>Application couldn't be restarted. Please, restart it manually for changes to take effect.</source>
|
<source>Application couldn't be restarted. Please, restart it manually for changes to take effect.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Feeds & messages</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source> • some keyboard shortcuts are not unique</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Some critical settings are not set. You must fix these settings in order confirm new settings.</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>List of errors:
|
||||||
|
%1.</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source> • language changed</source>
|
<source> • language changed</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source> • icon theme changed</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source> • skin changed</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>FormWelcome</name>
|
<name>FormWelcome</name>
|
||||||
@ -767,6 +822,13 @@
|
|||||||
<translation>Inhoud</translation>
|
<translation>Inhoud</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
|
<context>
|
||||||
|
<name>MessagesView</name>
|
||||||
|
<message>
|
||||||
|
<source>Context menu for messages</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>QObject</name>
|
<name>QObject</name>
|
||||||
<message>
|
<message>
|
||||||
|
@ -236,11 +236,77 @@ bool MessagesModel::switchBatchMessageImportance(const QModelIndexList &messages
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool MessagesModel::setBatchMessagesDeleted(const QModelIndexList &messages, int deleted) {
|
bool MessagesModel::setBatchMessagesDeleted(const QModelIndexList &messages, int deleted) {
|
||||||
|
// Submit changes first.
|
||||||
|
submitAll();
|
||||||
|
|
||||||
|
if (!database().transaction()) {
|
||||||
|
qWarning("Starting transaction for batch message deletion.");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
QSqlDatabase db_handle = database();
|
||||||
|
int message_id;
|
||||||
|
QSqlQuery query_delete_msg(db_handle);
|
||||||
|
if (!query_delete_msg.prepare("UPDATE messages SET deleted = :deleted "
|
||||||
|
"WHERE id = :id")) {
|
||||||
|
qWarning("Query preparation failed for message deletion.");
|
||||||
|
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();
|
||||||
|
fetchAll();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return db_handle.rollback();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool MessagesModel::setBatchMessagesRead(const QModelIndexList &messages, int read) {
|
bool MessagesModel::setBatchMessagesRead(const QModelIndexList &messages, int read) {
|
||||||
|
// Submit changes first.
|
||||||
|
submitAll();
|
||||||
|
|
||||||
|
if (!database().transaction()) {
|
||||||
|
qWarning("Starting transaction for batch message read change.");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
QSqlDatabase db_handle = database();
|
||||||
|
int message_id;
|
||||||
|
QSqlQuery query_delete_msg(db_handle);
|
||||||
|
if (!query_delete_msg.prepare("UPDATE messages SET read = :read "
|
||||||
|
"WHERE id = :id")) {
|
||||||
|
qWarning("Query preparation failed for message read change.");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (const QModelIndex &message, messages) {
|
||||||
|
message_id = messageId(message.row());
|
||||||
|
query_delete_msg.bindValue(":id", message_id);
|
||||||
|
query_delete_msg.bindValue(":read", read);
|
||||||
|
query_delete_msg.exec();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Commit changes.
|
||||||
|
if (db_handle.commit()) {
|
||||||
|
// FULLY reload the model if underlying data is changed.
|
||||||
|
select();
|
||||||
|
fetchAll();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return db_handle.rollback();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool MessagesModel::switchAllMessageImportance() {
|
bool MessagesModel::switchAllMessageImportance() {
|
||||||
|
@ -28,20 +28,25 @@ bool MessagesProxyModel::lessThan(const QModelIndex &left, const QModelIndex &ri
|
|||||||
return QSortFilterProxyModel::lessThan(left, right);
|
return QSortFilterProxyModel::lessThan(left, right);
|
||||||
}
|
}
|
||||||
|
|
||||||
QModelIndexList MessagesProxyModel::mapListFromSource(const QModelIndexList &idxs) {
|
QModelIndexList MessagesProxyModel::mapListFromSource(const QModelIndexList &indexes, bool deep) {
|
||||||
QModelIndexList mapped_idxs;
|
QModelIndexList mapped_idxs;
|
||||||
|
|
||||||
foreach (const QModelIndex &index, idxs) {
|
foreach (const QModelIndex &index, indexes) {
|
||||||
|
if (deep) {
|
||||||
|
mapped_idxs << mapFromSource(m_sourceModel->index(index.row(), index.column()));
|
||||||
|
}
|
||||||
|
else {
|
||||||
mapped_idxs << mapFromSource(index);
|
mapped_idxs << mapFromSource(index);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return mapped_idxs;
|
return mapped_idxs;
|
||||||
}
|
}
|
||||||
|
|
||||||
QModelIndexList MessagesProxyModel::mapListToSource(const QModelIndexList &idxs) {
|
QModelIndexList MessagesProxyModel::mapListToSource(const QModelIndexList &indexes) {
|
||||||
QModelIndexList source_idxs;
|
QModelIndexList source_idxs;
|
||||||
|
|
||||||
foreach (const QModelIndex &index, idxs) {
|
foreach (const QModelIndex &index, indexes) {
|
||||||
source_idxs << mapToSource(index);
|
source_idxs << mapToSource(index);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -18,8 +18,8 @@ class MessagesProxyModel : public QSortFilterProxyModel {
|
|||||||
MessagesModel *sourceModel();
|
MessagesModel *sourceModel();
|
||||||
|
|
||||||
// Maps list of indexes.
|
// Maps list of indexes.
|
||||||
QModelIndexList mapListToSource(const QModelIndexList &idxs);
|
QModelIndexList mapListToSource(const QModelIndexList &indexes);
|
||||||
QModelIndexList mapListFromSource(const QModelIndexList &idxs);
|
QModelIndexList mapListFromSource(const QModelIndexList &indexes, bool deep = false);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// Compares two rows of data.
|
// Compares two rows of data.
|
||||||
|
@ -48,7 +48,6 @@ void DynamicShortcutsWidget::populate(const QList<QAction *> actions) {
|
|||||||
m_actionBindings.clear();
|
m_actionBindings.clear();
|
||||||
|
|
||||||
int row_id = 0;
|
int row_id = 0;
|
||||||
bool second_column = false;
|
|
||||||
|
|
||||||
foreach (QAction *action, actions) {
|
foreach (QAction *action, actions) {
|
||||||
// Create shortcut catcher for this action and set default shortcut.
|
// Create shortcut catcher for this action and set default shortcut.
|
||||||
@ -68,27 +67,13 @@ void DynamicShortcutsWidget::populate(const QList<QAction *> actions) {
|
|||||||
label->setText(action->text().remove('&'));
|
label->setText(action->text().remove('&'));
|
||||||
label->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Preferred);
|
label->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Preferred);
|
||||||
|
|
||||||
if (second_column) {
|
|
||||||
m_layout->addWidget(label, row_id, 2);
|
|
||||||
m_layout->addWidget(catcher, row_id, 3);
|
|
||||||
second_column = false;
|
|
||||||
|
|
||||||
// Continue to the next row.
|
|
||||||
row_id++;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
QMargins catcher_margins = catcher->contentsMargins();
|
|
||||||
catcher_margins.setRight(10);
|
|
||||||
|
|
||||||
catcher->setContentsMargins(catcher_margins);
|
|
||||||
|
|
||||||
m_layout->addWidget(label, row_id, 0);
|
m_layout->addWidget(label, row_id, 0);
|
||||||
m_layout->addWidget(catcher, row_id, 1);
|
m_layout->addWidget(catcher, row_id, 1);
|
||||||
|
|
||||||
second_column = true;
|
row_id++;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Make sure that "spacer" is added.
|
// Make sure that "spacer" is added.
|
||||||
m_layout->setRowStretch(second_column ? ++row_id : row_id, 1);
|
m_layout->setRowStretch(row_id, 1);
|
||||||
|
m_layout->setColumnStretch(0, 1);
|
||||||
}
|
}
|
||||||
|
@ -25,10 +25,10 @@ FeedMessageViewer::FeedMessageViewer(QWidget *parent)
|
|||||||
m_messagesBrowser(new WebBrowser(this)) {
|
m_messagesBrowser(new WebBrowser(this)) {
|
||||||
initialize();
|
initialize();
|
||||||
initializeViews();
|
initializeViews();
|
||||||
setupConnections();
|
createConnections();
|
||||||
}
|
}
|
||||||
|
|
||||||
void FeedMessageViewer::setupConnections() {
|
void FeedMessageViewer::createConnections() {
|
||||||
// General connections.
|
// General connections.
|
||||||
connect(m_messagesView, SIGNAL(currentMessageRemoved()),
|
connect(m_messagesView, SIGNAL(currentMessageRemoved()),
|
||||||
m_messagesBrowser, SLOT(clear()));
|
m_messagesBrowser, SLOT(clear()));
|
||||||
@ -38,7 +38,18 @@ void FeedMessageViewer::setupConnections() {
|
|||||||
// Toolbar forwardings.
|
// Toolbar forwardings.
|
||||||
connect(FormMain::getInstance()->m_ui->m_actionSwitchImportanceOfSelectedMessages,
|
connect(FormMain::getInstance()->m_ui->m_actionSwitchImportanceOfSelectedMessages,
|
||||||
SIGNAL(triggered()), m_messagesView, SLOT(switchSelectedMessagesImportance()));
|
SIGNAL(triggered()), m_messagesView, SLOT(switchSelectedMessagesImportance()));
|
||||||
|
connect(FormMain::getInstance()->m_ui->m_actionDeleteSelectedMessages,
|
||||||
|
SIGNAL(triggered()), m_messagesView, SLOT(deleteSelectedMessages()));
|
||||||
|
connect(FormMain::getInstance()->m_ui->m_actionMarkSelectedMessagesAsRead,
|
||||||
|
SIGNAL(triggered()), m_messagesView, SLOT(markSelectedMessagesRead()));
|
||||||
|
connect(FormMain::getInstance()->m_ui->m_actionMarkSelectedMessagesAsUnread,
|
||||||
|
SIGNAL(triggered()), m_messagesView, SLOT(markSelectedMessagesUnread()));
|
||||||
|
connect(FormMain::getInstance()->m_ui->m_actionOpenSelectedSourceArticlesExternally,
|
||||||
|
SIGNAL(triggered()), m_messagesView, SLOT(openSelectedSourceArticlesExternally()));
|
||||||
|
connect(FormMain::getInstance()->m_ui->m_actionOpenSelectedSourceArticlesInternally,
|
||||||
|
SIGNAL(triggered()), m_messagesView, SLOT(openSelectedSourceMessagesInternally()));
|
||||||
|
connect(FormMain::getInstance()->m_ui->m_actionOpenSelectedMessagesInternally,
|
||||||
|
SIGNAL(triggered()), m_messagesView, SLOT(openSelectedMessagesInternally()));
|
||||||
}
|
}
|
||||||
|
|
||||||
void FeedMessageViewer::initialize() {
|
void FeedMessageViewer::initialize() {
|
||||||
|
@ -28,7 +28,7 @@ class FeedMessageViewer : public TabContent {
|
|||||||
void initializeViews();
|
void initializeViews();
|
||||||
|
|
||||||
// Sets up connections.
|
// Sets up connections.
|
||||||
void setupConnections();
|
void createConnections();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QToolBar *m_toolBar;
|
QToolBar *m_toolBar;
|
||||||
|
@ -70,7 +70,7 @@ QList<QAction*> FormMain::getActions() {
|
|||||||
|
|
||||||
// Add feeds/messages actions.
|
// Add feeds/messages actions.
|
||||||
actions << m_ui->m_actionOpenSelectedSourceArticlesExternally <<
|
actions << m_ui->m_actionOpenSelectedSourceArticlesExternally <<
|
||||||
m_ui->m_actionOpenSelectedMessagesExternally <<
|
m_ui->m_actionOpenSelectedSourceArticlesInternally <<
|
||||||
m_ui->m_actionOpenSelectedMessagesInternally <<
|
m_ui->m_actionOpenSelectedMessagesInternally <<
|
||||||
m_ui->m_actionMarkAllMessagesAsRead <<
|
m_ui->m_actionMarkAllMessagesAsRead <<
|
||||||
m_ui->m_actionMarkAllMessagesAsUnread <<
|
m_ui->m_actionMarkAllMessagesAsUnread <<
|
||||||
@ -186,7 +186,7 @@ void FormMain::setupIcons() {
|
|||||||
m_ui->m_actionMarkSelectedMessagesAsRead->setIcon(IconThemeFactory::getInstance()->fromTheme("mail-mark-read"));
|
m_ui->m_actionMarkSelectedMessagesAsRead->setIcon(IconThemeFactory::getInstance()->fromTheme("mail-mark-read"));
|
||||||
m_ui->m_actionMarkSelectedMessagesAsUnread->setIcon(IconThemeFactory::getInstance()->fromTheme("mail-mark-unread"));
|
m_ui->m_actionMarkSelectedMessagesAsUnread->setIcon(IconThemeFactory::getInstance()->fromTheme("mail-mark-unread"));
|
||||||
m_ui->m_actionSwitchImportanceOfSelectedMessages->setIcon(IconThemeFactory::getInstance()->fromTheme("mail-mark-important"));
|
m_ui->m_actionSwitchImportanceOfSelectedMessages->setIcon(IconThemeFactory::getInstance()->fromTheme("mail-mark-important"));
|
||||||
m_ui->m_actionOpenSelectedMessagesExternally->setIcon(IconThemeFactory::getInstance()->fromTheme("document-open"));
|
m_ui->m_actionOpenSelectedSourceArticlesInternally->setIcon(IconThemeFactory::getInstance()->fromTheme("document-open"));
|
||||||
m_ui->m_actionOpenSelectedSourceArticlesExternally->setIcon(IconThemeFactory::getInstance()->fromTheme("document-open"));
|
m_ui->m_actionOpenSelectedSourceArticlesExternally->setIcon(IconThemeFactory::getInstance()->fromTheme("document-open"));
|
||||||
m_ui->m_actionOpenSelectedMessagesInternally->setIcon(IconThemeFactory::getInstance()->fromTheme("document-open"));
|
m_ui->m_actionOpenSelectedMessagesInternally->setIcon(IconThemeFactory::getInstance()->fromTheme("document-open"));
|
||||||
|
|
||||||
|
@ -357,15 +357,12 @@
|
|||||||
<string>Add new feed.</string>
|
<string>Add new feed.</string>
|
||||||
</property>
|
</property>
|
||||||
</action>
|
</action>
|
||||||
<action name="m_actionOpenSelectedMessagesExternally">
|
<action name="m_actionOpenSelectedSourceArticlesExternally">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Open selected messages in external browser</string>
|
<string>Open selected source articles in external browser</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string>Open selected messages in external browser.</string>
|
<string>Open selected source articles in external browser.</string>
|
||||||
</property>
|
|
||||||
<property name="shortcut">
|
|
||||||
<string notr="true"/>
|
|
||||||
</property>
|
</property>
|
||||||
</action>
|
</action>
|
||||||
<action name="m_actionOpenSelectedMessagesInternally">
|
<action name="m_actionOpenSelectedMessagesInternally">
|
||||||
@ -379,12 +376,12 @@
|
|||||||
<string notr="true"/>
|
<string notr="true"/>
|
||||||
</property>
|
</property>
|
||||||
</action>
|
</action>
|
||||||
<action name="m_actionOpenSelectedSourceArticlesExternally">
|
<action name="m_actionOpenSelectedSourceArticlesInternally">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Open selected source articles in external browser</string>
|
<string>Open selected source articles in internal browser</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string>Open selected source messages in external browser.</string>
|
<string>Open selected source messages in internal browser.</string>
|
||||||
</property>
|
</property>
|
||||||
</action>
|
</action>
|
||||||
</widget>
|
</widget>
|
||||||
|
@ -408,9 +408,11 @@ void FormSettings::loadInterface() {
|
|||||||
foreach (const QString &icon_theme_name, IconThemeFactory::getInstance()->getInstalledIconThemes()) {
|
foreach (const QString &icon_theme_name, IconThemeFactory::getInstance()->getInstalledIconThemes()) {
|
||||||
if (icon_theme_name == APP_THEME_SYSTEM) {
|
if (icon_theme_name == APP_THEME_SYSTEM) {
|
||||||
#if defined(Q_OS_LINUX)
|
#if defined(Q_OS_LINUX)
|
||||||
|
// Add "default theme" and "no theme" on Linux.
|
||||||
m_ui->m_cmbIconTheme->addItem(tr("system icon theme (default)"),
|
m_ui->m_cmbIconTheme->addItem(tr("system icon theme (default)"),
|
||||||
APP_THEME_SYSTEM);
|
APP_THEME_SYSTEM);
|
||||||
#else
|
#else
|
||||||
|
// Add just "no theme" on other systems.
|
||||||
m_ui->m_cmbIconTheme->addItem(tr("no icon theme"),
|
m_ui->m_cmbIconTheme->addItem(tr("no icon theme"),
|
||||||
APP_THEME_SYSTEM);
|
APP_THEME_SYSTEM);
|
||||||
#endif
|
#endif
|
||||||
|
@ -6,8 +6,8 @@
|
|||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>966</width>
|
<width>803</width>
|
||||||
<height>445</height>
|
<height>373</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
@ -147,8 +147,8 @@
|
|||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>167</width>
|
<width>195</width>
|
||||||
<height>219</height>
|
<height>238</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QFormLayout" name="formLayout">
|
<layout class="QFormLayout" name="formLayout">
|
||||||
@ -634,7 +634,120 @@
|
|||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QWidget" name="m_pageFeedsMessages"/>
|
<widget class="QWidget" name="m_pageFeedsMessages">
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_9">
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="QTabWidget" name="m_tabFeedsMessages">
|
||||||
|
<property name="currentIndex">
|
||||||
|
<number>1</number>
|
||||||
|
</property>
|
||||||
|
<widget class="QWidget" name="m_tabFeeds">
|
||||||
|
<attribute name="title">
|
||||||
|
<string>Feeds</string>
|
||||||
|
</attribute>
|
||||||
|
</widget>
|
||||||
|
<widget class="QWidget" name="m_tabMessages">
|
||||||
|
<attribute name="title">
|
||||||
|
<string>Messages</string>
|
||||||
|
</attribute>
|
||||||
|
<layout class="QFormLayout" name="formLayout_10">
|
||||||
|
<item row="0" column="0" colspan="2">
|
||||||
|
<widget class="QGroupBox" name="groupBox_3">
|
||||||
|
<property name="title">
|
||||||
|
<string>External web browser for message viewing</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QFormLayout" name="formLayout_11">
|
||||||
|
<property name="fieldGrowthPolicy">
|
||||||
|
<enum>QFormLayout::AllNonFixedFieldsGrow</enum>
|
||||||
|
</property>
|
||||||
|
<item row="0" column="0">
|
||||||
|
<widget class="QLabel" name="m_lblExternalBrowserPreset">
|
||||||
|
<property name="text">
|
||||||
|
<string>Preset</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="1">
|
||||||
|
<widget class="QComboBox" name="m_cmbExternalBrowserPreset">
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>custom</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>Chromium</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>Google Chrome</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>Opera</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>Mozilla Firefox</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="0">
|
||||||
|
<widget class="QLabel" name="m_lblExternalBrowserExecutable">
|
||||||
|
<property name="text">
|
||||||
|
<string>Web browser executable</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="1">
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_10">
|
||||||
|
<item>
|
||||||
|
<widget class="QLineEdit" name="m_txtExternalBrowserExecutable"/>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QToolButton" name="m_btnExternalBrowserExecutable">
|
||||||
|
<property name="text">
|
||||||
|
<string>...</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="0">
|
||||||
|
<widget class="QLabel" name="m_lblExternalBrowserArguments">
|
||||||
|
<property name="text">
|
||||||
|
<string>Executable arguments</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="1">
|
||||||
|
<widget class="QLineEdit" name="m_txtExternalBrowserArguments"/>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="0">
|
<item row="0" column="0">
|
||||||
|
@ -120,13 +120,9 @@ void MessagesView::contextMenuEvent(QContextMenuEvent *event) {
|
|||||||
|
|
||||||
void MessagesView::initializeContextMenu() {
|
void MessagesView::initializeContextMenu() {
|
||||||
m_contextMenu = new QMenu(tr("Context menu for messages"), this);
|
m_contextMenu = new QMenu(tr("Context menu for messages"), this);
|
||||||
|
|
||||||
connect(FormMain::getInstance()->m_ui->m_actionOpenSelectedMessagesExternally,
|
|
||||||
SIGNAL(triggered()), this, SLOT(openSelectedMessagesExternally()));
|
|
||||||
|
|
||||||
m_contextMenu->addActions(QList<QAction*>() <<
|
m_contextMenu->addActions(QList<QAction*>() <<
|
||||||
FormMain::getInstance()->m_ui->m_actionOpenSelectedSourceArticlesExternally <<
|
FormMain::getInstance()->m_ui->m_actionOpenSelectedSourceArticlesExternally <<
|
||||||
FormMain::getInstance()->m_ui->m_actionOpenSelectedMessagesExternally <<
|
FormMain::getInstance()->m_ui->m_actionOpenSelectedSourceArticlesInternally <<
|
||||||
FormMain::getInstance()->m_ui->m_actionOpenSelectedMessagesInternally <<
|
FormMain::getInstance()->m_ui->m_actionOpenSelectedMessagesInternally <<
|
||||||
FormMain::getInstance()->m_ui->m_actionMarkSelectedMessagesAsRead <<
|
FormMain::getInstance()->m_ui->m_actionMarkSelectedMessagesAsRead <<
|
||||||
FormMain::getInstance()->m_ui->m_actionMarkSelectedMessagesAsUnread <<
|
FormMain::getInstance()->m_ui->m_actionMarkSelectedMessagesAsUnread <<
|
||||||
@ -160,11 +156,11 @@ void MessagesView::currentChanged(const QModelIndex ¤t,
|
|||||||
const QModelIndex &previous) {
|
const QModelIndex &previous) {
|
||||||
QModelIndex mapped_current_index = m_proxyModel->mapToSource(current);
|
QModelIndex mapped_current_index = m_proxyModel->mapToSource(current);
|
||||||
|
|
||||||
|
|
||||||
qDebug("Current row changed, row [%d,%d] source %d %d",
|
qDebug("Current row changed, row [%d,%d] source %d %d",
|
||||||
current.row(), current.column(),
|
current.row(), current.column(),
|
||||||
mapped_current_index.row(), mapped_current_index.column());
|
mapped_current_index.row(), mapped_current_index.column());
|
||||||
|
|
||||||
|
if (!signalsBlocked()) {
|
||||||
if (mapped_current_index.isValid()) {
|
if (mapped_current_index.isValid()) {
|
||||||
m_sourceModel->setMessageRead(mapped_current_index.row(), 1);
|
m_sourceModel->setMessageRead(mapped_current_index.row(), 1);
|
||||||
emit currentMessageChanged(m_sourceModel->messageAt(mapped_current_index.row()));
|
emit currentMessageChanged(m_sourceModel->messageAt(mapped_current_index.row()));
|
||||||
@ -172,20 +168,77 @@ void MessagesView::currentChanged(const QModelIndex ¤t,
|
|||||||
else {
|
else {
|
||||||
emit currentMessageRemoved();
|
emit currentMessageRemoved();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
QTreeView::currentChanged(current, previous);
|
QTreeView::currentChanged(current, previous);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MessagesView::openSelectedMessagesExternally() {
|
void MessagesView::openSelectedSourceArticlesExternally() {
|
||||||
// TODO: otevře vybrane zpravy v externim prohlizeci
|
// TODO: otevře vybrane zpravy v externim prohlizeci
|
||||||
}
|
}
|
||||||
|
|
||||||
void MessagesView::openSelectedSourceMessagesInternally() {
|
void MessagesView::openSelectedSourceMessagesInternally() {
|
||||||
// TODO: otevre vybrane nactene zpravy v internch tabech
|
// TODO: otevre vybrane zpravy ze zdrojovych webz v internch tabech
|
||||||
}
|
}
|
||||||
|
|
||||||
void MessagesView::openSelectedTargetMessagesInternally() {
|
void MessagesView::openSelectedMessagesInternally() {
|
||||||
// TODO: otevre vybrane zpravy ze zdrojovych webz v internich tabech
|
// TODO: otevre vybrane nactene zpravy v internich tabech
|
||||||
|
}
|
||||||
|
|
||||||
|
void MessagesView::markSelectedMessagesRead() {
|
||||||
|
setSelectedMessagesReadStatus(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
void MessagesView::markSelectedMessagesUnread() {
|
||||||
|
setSelectedMessagesReadStatus(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void MessagesView::setSelectedMessagesReadStatus(int read) {
|
||||||
|
QModelIndex current_index = selectionModel()->currentIndex();
|
||||||
|
QModelIndex mapped_current_index = m_proxyModel->mapToSource(current_index);
|
||||||
|
QModelIndexList selected_indexes = selectionModel()->selectedRows();
|
||||||
|
QModelIndexList mapped_indexes = m_proxyModel->mapListToSource(selected_indexes);
|
||||||
|
|
||||||
|
m_sourceModel->setBatchMessagesRead(mapped_indexes, read);
|
||||||
|
|
||||||
|
sortByColumn(header()->sortIndicatorSection(), header()->sortIndicatorOrder());
|
||||||
|
|
||||||
|
selected_indexes = m_proxyModel->mapListFromSource(mapped_indexes, true);
|
||||||
|
current_index = m_proxyModel->mapFromSource(m_sourceModel->index(mapped_current_index.row(),
|
||||||
|
mapped_current_index.column()));
|
||||||
|
|
||||||
|
if (read == 0) {
|
||||||
|
// User selected to mark some messages as unread, if one
|
||||||
|
// of them will be marked as current, then it will be read again.
|
||||||
|
blockSignals(true);
|
||||||
|
setCurrentIndex(current_index);
|
||||||
|
blockSignals(false);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
setCurrentIndex(current_index);
|
||||||
|
}
|
||||||
|
|
||||||
|
scrollTo(current_index);
|
||||||
|
reselectIndexes(selected_indexes);
|
||||||
|
}
|
||||||
|
|
||||||
|
void MessagesView::deleteSelectedMessages() {
|
||||||
|
QModelIndex current_index = selectionModel()->currentIndex();
|
||||||
|
QModelIndex mapped_current_index = m_proxyModel->mapToSource(current_index);
|
||||||
|
QModelIndexList selected_indexes = selectionModel()->selectedRows();
|
||||||
|
QModelIndexList mapped_indexes = m_proxyModel->mapListToSource(selected_indexes);
|
||||||
|
|
||||||
|
m_sourceModel->setBatchMessagesDeleted(mapped_indexes, 1);
|
||||||
|
|
||||||
|
sortByColumn(header()->sortIndicatorSection(), header()->sortIndicatorOrder());
|
||||||
|
|
||||||
|
selected_indexes = m_proxyModel->mapListFromSource(mapped_indexes, true);
|
||||||
|
current_index = m_proxyModel->mapFromSource(m_sourceModel->index(mapped_current_index.row(),
|
||||||
|
mapped_current_index.column()));
|
||||||
|
|
||||||
|
setCurrentIndex(current_index);
|
||||||
|
scrollTo(current_index);
|
||||||
|
reselectIndexes(selected_indexes);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MessagesView::switchSelectedMessagesImportance() {
|
void MessagesView::switchSelectedMessagesImportance() {
|
||||||
@ -196,14 +249,9 @@ void MessagesView::switchSelectedMessagesImportance() {
|
|||||||
|
|
||||||
m_sourceModel->switchBatchMessageImportance(mapped_indexes);
|
m_sourceModel->switchBatchMessageImportance(mapped_indexes);
|
||||||
|
|
||||||
selected_indexes.clear();
|
|
||||||
sortByColumn(header()->sortIndicatorSection(), header()->sortIndicatorOrder());
|
sortByColumn(header()->sortIndicatorSection(), header()->sortIndicatorOrder());
|
||||||
|
|
||||||
foreach (const QModelIndex &index, mapped_indexes) {
|
selected_indexes = m_proxyModel->mapListFromSource(mapped_indexes, true);
|
||||||
selected_indexes << m_proxyModel->mapFromSource(m_sourceModel->index(index.row(),
|
|
||||||
index.column()));
|
|
||||||
}
|
|
||||||
|
|
||||||
current_index = m_proxyModel->mapFromSource(m_sourceModel->index(mapped_current_index.row(),
|
current_index = m_proxyModel->mapFromSource(m_sourceModel->index(mapped_current_index.row(),
|
||||||
mapped_current_index.column()));
|
mapped_current_index.column()));
|
||||||
|
|
||||||
@ -221,15 +269,3 @@ void MessagesView::reselectIndexes(const QModelIndexList &indexes) {
|
|||||||
QItemSelectionModel::Rows);
|
QItemSelectionModel::Rows);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MessagesView::setAllMessagesRead() {
|
|
||||||
selectAll();
|
|
||||||
QModelIndexList selected_indexes = selectedIndexes();
|
|
||||||
QModelIndexList mapp;
|
|
||||||
|
|
||||||
foreach (const QModelIndex &index, selected_indexes) {
|
|
||||||
mapp << m_proxyModel->mapToSource(index);
|
|
||||||
}
|
|
||||||
|
|
||||||
m_sourceModel->switchBatchMessageImportance(mapp);
|
|
||||||
}
|
|
||||||
|
@ -24,13 +24,18 @@ class MessagesView : public QTreeView {
|
|||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
// Message manipulators.
|
// Message manipulators.
|
||||||
void openSelectedMessagesExternally();
|
void openSelectedSourceArticlesExternally();
|
||||||
void openSelectedSourceMessagesInternally();
|
void openSelectedSourceMessagesInternally();
|
||||||
void openSelectedTargetMessagesInternally();
|
void openSelectedMessagesInternally();
|
||||||
|
|
||||||
|
void setSelectedMessagesReadStatus(int read);
|
||||||
|
void markSelectedMessagesRead();
|
||||||
|
void markSelectedMessagesUnread();
|
||||||
|
void deleteSelectedMessages();
|
||||||
void switchSelectedMessagesImportance();
|
void switchSelectedMessagesImportance();
|
||||||
void setAllMessagesRead();
|
|
||||||
|
|
||||||
protected slots:
|
protected slots:
|
||||||
|
// Marks given indexes as selected.
|
||||||
void reselectIndexes(const QModelIndexList &indexes);
|
void reselectIndexes(const QModelIndexList &indexes);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user