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(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}] Compilation process begins right now.")
|
||||
|
@ -97,6 +97,18 @@
|
||||
<source>Toolbar for messages</source>
|
||||
<translation>Panel zpráv</translation>
|
||||
</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>
|
||||
<name>FormAbout</name>
|
||||
@ -415,6 +427,30 @@
|
||||
<source>Add new feed.</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 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>
|
||||
<name>FormSettings</name>
|
||||
@ -638,11 +674,6 @@
|
||||
<source>no icon theme</source>
|
||||
<translation>žádné téma ikon</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Some keyboard shortcuts are not unique.
|
||||
</source>
|
||||
<translation>Některé klávesové zkrátky jsou duplicitní.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Cannot save settings</source>
|
||||
<translation>Nastavení nelze uložit</translation>
|
||||
@ -693,7 +724,32 @@
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>• language changed</source>
|
||||
<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>
|
||||
<source> • language changed</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source> • icon theme changed</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source> • skin changed</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
@ -766,6 +822,13 @@
|
||||
<translation>Obsah</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MessagesView</name>
|
||||
<message>
|
||||
<source>Context menu for messages</source>
|
||||
<translation>Kontextové menu pro zprávy</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QObject</name>
|
||||
<message>
|
||||
|
@ -97,6 +97,18 @@
|
||||
<source>Toolbar for messages</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</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>
|
||||
<name>FormAbout</name>
|
||||
@ -415,6 +427,30 @@
|
||||
<source>Add new feed.</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 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>
|
||||
<name>FormSettings</name>
|
||||
@ -632,11 +668,6 @@
|
||||
<source>no icon theme</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Some keyboard shortcuts are not unique.
|
||||
</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Cannot save settings</source>
|
||||
<translation type="unfinished"></translation>
|
||||
@ -687,7 +718,32 @@
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>• language changed</source>
|
||||
<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>
|
||||
<source> • language changed</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source> • icon theme changed</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source> • skin changed</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
@ -760,6 +816,13 @@
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MessagesView</name>
|
||||
<message>
|
||||
<source>Context menu for messages</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QObject</name>
|
||||
<message>
|
||||
|
@ -97,6 +97,18 @@
|
||||
<source>Toolbar for messages</source>
|
||||
<translation>Werkbalk voor berichten</translation>
|
||||
</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>
|
||||
<name>FormAbout</name>
|
||||
@ -415,6 +427,30 @@
|
||||
<source>Add new feed.</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 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>
|
||||
<name>FormSettings</name>
|
||||
@ -638,12 +674,6 @@
|
||||
<source>no icon theme</source>
|
||||
<translation>Geen pictogram thema</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Some keyboard shortcuts are not unique.
|
||||
</source>
|
||||
<translation>Sommige sneltoetsen voor toetsenbord zijn niet uniek.
|
||||
</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Cannot save settings</source>
|
||||
<translation>Kan instellingen niet opslaan</translation>
|
||||
@ -694,7 +724,32 @@
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>• language changed</source>
|
||||
<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>
|
||||
<source> • language changed</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source> • icon theme changed</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source> • skin changed</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
@ -767,6 +822,13 @@
|
||||
<translation>Inhoud</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MessagesView</name>
|
||||
<message>
|
||||
<source>Context menu for messages</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QObject</name>
|
||||
<message>
|
||||
|
@ -236,11 +236,77 @@ bool MessagesModel::switchBatchMessageImportance(const QModelIndexList &messages
|
||||
}
|
||||
|
||||
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) {
|
||||
// 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() {
|
||||
|
@ -28,20 +28,25 @@ bool MessagesProxyModel::lessThan(const QModelIndex &left, const QModelIndex &ri
|
||||
return QSortFilterProxyModel::lessThan(left, right);
|
||||
}
|
||||
|
||||
QModelIndexList MessagesProxyModel::mapListFromSource(const QModelIndexList &idxs) {
|
||||
QModelIndexList MessagesProxyModel::mapListFromSource(const QModelIndexList &indexes, bool deep) {
|
||||
QModelIndexList mapped_idxs;
|
||||
|
||||
foreach (const QModelIndex &index, idxs) {
|
||||
mapped_idxs << mapFromSource(index);
|
||||
foreach (const QModelIndex &index, indexes) {
|
||||
if (deep) {
|
||||
mapped_idxs << mapFromSource(m_sourceModel->index(index.row(), index.column()));
|
||||
}
|
||||
else {
|
||||
mapped_idxs << mapFromSource(index);
|
||||
}
|
||||
}
|
||||
|
||||
return mapped_idxs;
|
||||
}
|
||||
|
||||
QModelIndexList MessagesProxyModel::mapListToSource(const QModelIndexList &idxs) {
|
||||
QModelIndexList MessagesProxyModel::mapListToSource(const QModelIndexList &indexes) {
|
||||
QModelIndexList source_idxs;
|
||||
|
||||
foreach (const QModelIndex &index, idxs) {
|
||||
foreach (const QModelIndex &index, indexes) {
|
||||
source_idxs << mapToSource(index);
|
||||
}
|
||||
|
||||
|
@ -18,8 +18,8 @@ class MessagesProxyModel : public QSortFilterProxyModel {
|
||||
MessagesModel *sourceModel();
|
||||
|
||||
// Maps list of indexes.
|
||||
QModelIndexList mapListToSource(const QModelIndexList &idxs);
|
||||
QModelIndexList mapListFromSource(const QModelIndexList &idxs);
|
||||
QModelIndexList mapListToSource(const QModelIndexList &indexes);
|
||||
QModelIndexList mapListFromSource(const QModelIndexList &indexes, bool deep = false);
|
||||
|
||||
protected:
|
||||
// Compares two rows of data.
|
||||
|
@ -48,7 +48,6 @@ void DynamicShortcutsWidget::populate(const QList<QAction *> actions) {
|
||||
m_actionBindings.clear();
|
||||
|
||||
int row_id = 0;
|
||||
bool second_column = false;
|
||||
|
||||
foreach (QAction *action, actions) {
|
||||
// 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->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;
|
||||
m_layout->addWidget(label, row_id, 0);
|
||||
m_layout->addWidget(catcher, row_id, 1);
|
||||
|
||||
// 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(catcher, row_id, 1);
|
||||
|
||||
second_column = true;
|
||||
}
|
||||
row_id++;
|
||||
}
|
||||
|
||||
// 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)) {
|
||||
initialize();
|
||||
initializeViews();
|
||||
setupConnections();
|
||||
createConnections();
|
||||
}
|
||||
|
||||
void FeedMessageViewer::setupConnections() {
|
||||
void FeedMessageViewer::createConnections() {
|
||||
// General connections.
|
||||
connect(m_messagesView, SIGNAL(currentMessageRemoved()),
|
||||
m_messagesBrowser, SLOT(clear()));
|
||||
@ -38,7 +38,18 @@ void FeedMessageViewer::setupConnections() {
|
||||
// Toolbar forwardings.
|
||||
connect(FormMain::getInstance()->m_ui->m_actionSwitchImportanceOfSelectedMessages,
|
||||
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() {
|
||||
|
@ -28,7 +28,7 @@ class FeedMessageViewer : public TabContent {
|
||||
void initializeViews();
|
||||
|
||||
// Sets up connections.
|
||||
void setupConnections();
|
||||
void createConnections();
|
||||
|
||||
private:
|
||||
QToolBar *m_toolBar;
|
||||
|
@ -70,7 +70,7 @@ QList<QAction*> FormMain::getActions() {
|
||||
|
||||
// Add feeds/messages actions.
|
||||
actions << m_ui->m_actionOpenSelectedSourceArticlesExternally <<
|
||||
m_ui->m_actionOpenSelectedMessagesExternally <<
|
||||
m_ui->m_actionOpenSelectedSourceArticlesInternally <<
|
||||
m_ui->m_actionOpenSelectedMessagesInternally <<
|
||||
m_ui->m_actionMarkAllMessagesAsRead <<
|
||||
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_actionMarkSelectedMessagesAsUnread->setIcon(IconThemeFactory::getInstance()->fromTheme("mail-mark-unread"));
|
||||
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_actionOpenSelectedMessagesInternally->setIcon(IconThemeFactory::getInstance()->fromTheme("document-open"));
|
||||
|
||||
|
@ -357,15 +357,12 @@
|
||||
<string>Add new feed.</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="m_actionOpenSelectedMessagesExternally">
|
||||
<action name="m_actionOpenSelectedSourceArticlesExternally">
|
||||
<property name="text">
|
||||
<string>Open selected messages in external browser</string>
|
||||
<string>Open selected source articles in external browser</string>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Open selected messages in external browser.</string>
|
||||
</property>
|
||||
<property name="shortcut">
|
||||
<string notr="true"/>
|
||||
<string>Open selected source articles in external browser.</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="m_actionOpenSelectedMessagesInternally">
|
||||
@ -379,12 +376,12 @@
|
||||
<string notr="true"/>
|
||||
</property>
|
||||
</action>
|
||||
<action name="m_actionOpenSelectedSourceArticlesExternally">
|
||||
<action name="m_actionOpenSelectedSourceArticlesInternally">
|
||||
<property name="text">
|
||||
<string>Open selected source articles in external browser</string>
|
||||
<string>Open selected source articles in internal browser</string>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Open selected source messages in external browser.</string>
|
||||
<string>Open selected source messages in internal browser.</string>
|
||||
</property>
|
||||
</action>
|
||||
</widget>
|
||||
|
@ -353,17 +353,17 @@ void FormSettings::loadGeneral() {
|
||||
// Load auto-start status.
|
||||
SystemFactory::AutoStartStatus autostart_status = SystemFactory::getAutoStartStatus();
|
||||
switch (autostart_status) {
|
||||
case SystemFactory::Enabled:
|
||||
m_ui->m_checkAutostart->setChecked(true);
|
||||
break;
|
||||
case SystemFactory::Disabled:
|
||||
m_ui->m_checkAutostart->setChecked(false);
|
||||
break;
|
||||
default:
|
||||
m_ui->m_checkAutostart->setEnabled(false);
|
||||
m_ui->m_checkAutostart->setText(m_ui->m_checkAutostart->text() +
|
||||
tr(" (not supported on this platform)"));
|
||||
break;
|
||||
case SystemFactory::Enabled:
|
||||
m_ui->m_checkAutostart->setChecked(true);
|
||||
break;
|
||||
case SystemFactory::Disabled:
|
||||
m_ui->m_checkAutostart->setChecked(false);
|
||||
break;
|
||||
default:
|
||||
m_ui->m_checkAutostart->setEnabled(false);
|
||||
m_ui->m_checkAutostart->setText(m_ui->m_checkAutostart->text() +
|
||||
tr(" (not supported on this platform)"));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -408,9 +408,11 @@ void FormSettings::loadInterface() {
|
||||
foreach (const QString &icon_theme_name, IconThemeFactory::getInstance()->getInstalledIconThemes()) {
|
||||
if (icon_theme_name == APP_THEME_SYSTEM) {
|
||||
#if defined(Q_OS_LINUX)
|
||||
// Add "default theme" and "no theme" on Linux.
|
||||
m_ui->m_cmbIconTheme->addItem(tr("system icon theme (default)"),
|
||||
APP_THEME_SYSTEM);
|
||||
#else
|
||||
// Add just "no theme" on other systems.
|
||||
m_ui->m_cmbIconTheme->addItem(tr("no icon theme"),
|
||||
APP_THEME_SYSTEM);
|
||||
#endif
|
||||
|
@ -6,8 +6,8 @@
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>966</width>
|
||||
<height>445</height>
|
||||
<width>803</width>
|
||||
<height>373</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
@ -147,8 +147,8 @@
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>167</width>
|
||||
<height>219</height>
|
||||
<width>195</width>
|
||||
<height>238</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QFormLayout" name="formLayout">
|
||||
@ -634,7 +634,120 @@
|
||||
</item>
|
||||
</layout>
|
||||
</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>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
|
@ -120,13 +120,9 @@ void MessagesView::contextMenuEvent(QContextMenuEvent *event) {
|
||||
|
||||
void MessagesView::initializeContextMenu() {
|
||||
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*>() <<
|
||||
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_actionMarkSelectedMessagesAsRead <<
|
||||
FormMain::getInstance()->m_ui->m_actionMarkSelectedMessagesAsUnread <<
|
||||
@ -160,32 +156,89 @@ void MessagesView::currentChanged(const QModelIndex ¤t,
|
||||
const QModelIndex &previous) {
|
||||
QModelIndex mapped_current_index = m_proxyModel->mapToSource(current);
|
||||
|
||||
|
||||
qDebug("Current row changed, row [%d,%d] source %d %d",
|
||||
current.row(), current.column(),
|
||||
mapped_current_index.row(), mapped_current_index.column());
|
||||
|
||||
if (mapped_current_index.isValid()) {
|
||||
m_sourceModel->setMessageRead(mapped_current_index.row(), 1);
|
||||
emit currentMessageChanged(m_sourceModel->messageAt(mapped_current_index.row()));
|
||||
}
|
||||
else {
|
||||
emit currentMessageRemoved();
|
||||
if (!signalsBlocked()) {
|
||||
if (mapped_current_index.isValid()) {
|
||||
m_sourceModel->setMessageRead(mapped_current_index.row(), 1);
|
||||
emit currentMessageChanged(m_sourceModel->messageAt(mapped_current_index.row()));
|
||||
}
|
||||
else {
|
||||
emit currentMessageRemoved();
|
||||
}
|
||||
}
|
||||
|
||||
QTreeView::currentChanged(current, previous);
|
||||
}
|
||||
|
||||
void MessagesView::openSelectedMessagesExternally() {
|
||||
void MessagesView::openSelectedSourceArticlesExternally() {
|
||||
// TODO: otevře vybrane zpravy v externim prohlizeci
|
||||
}
|
||||
|
||||
void MessagesView::openSelectedSourceMessagesInternally() {
|
||||
// TODO: otevre vybrane nactene zpravy v internch tabech
|
||||
// TODO: otevre vybrane zpravy ze zdrojovych webz v internch tabech
|
||||
}
|
||||
|
||||
void MessagesView::openSelectedTargetMessagesInternally() {
|
||||
// TODO: otevre vybrane zpravy ze zdrojovych webz v internich tabech
|
||||
void MessagesView::openSelectedMessagesInternally() {
|
||||
// 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() {
|
||||
@ -196,16 +249,11 @@ void MessagesView::switchSelectedMessagesImportance() {
|
||||
|
||||
m_sourceModel->switchBatchMessageImportance(mapped_indexes);
|
||||
|
||||
selected_indexes.clear();
|
||||
sortByColumn(header()->sortIndicatorSection(), header()->sortIndicatorOrder());
|
||||
|
||||
foreach (const QModelIndex &index, mapped_indexes) {
|
||||
selected_indexes << m_proxyModel->mapFromSource(m_sourceModel->index(index.row(),
|
||||
index.column()));
|
||||
}
|
||||
|
||||
selected_indexes = m_proxyModel->mapListFromSource(mapped_indexes, true);
|
||||
current_index = m_proxyModel->mapFromSource(m_sourceModel->index(mapped_current_index.row(),
|
||||
mapped_current_index.column()));
|
||||
mapped_current_index.column()));
|
||||
|
||||
setCurrentIndex(current_index);
|
||||
scrollTo(current_index);
|
||||
@ -221,15 +269,3 @@ void MessagesView::reselectIndexes(const QModelIndexList &indexes) {
|
||||
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:
|
||||
// Message manipulators.
|
||||
void openSelectedMessagesExternally();
|
||||
void openSelectedSourceArticlesExternally();
|
||||
void openSelectedSourceMessagesInternally();
|
||||
void openSelectedTargetMessagesInternally();
|
||||
void openSelectedMessagesInternally();
|
||||
|
||||
void setSelectedMessagesReadStatus(int read);
|
||||
void markSelectedMessagesRead();
|
||||
void markSelectedMessagesUnread();
|
||||
void deleteSelectedMessages();
|
||||
void switchSelectedMessagesImportance();
|
||||
void setAllMessagesRead();
|
||||
|
||||
protected slots:
|
||||
// Marks given indexes as selected.
|
||||
void reselectIndexes(const QModelIndexList &indexes);
|
||||
|
||||
protected:
|
||||
|
Loading…
x
Reference in New Issue
Block a user