Code refactoring.
This commit is contained in:
parent
134f2d408d
commit
cac1e78adf
@ -264,7 +264,7 @@ bool MessagesModel::setMessageRead(int row_index, int read) {
|
||||
// can reflect.
|
||||
emit dataChanged(index(row_index, 0),
|
||||
index(row_index, columnCount() - 1));
|
||||
emit feedCountsChanged(false);
|
||||
emit messageCountsChanged(false);
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
@ -341,7 +341,7 @@ bool MessagesModel::switchBatchMessageImportance(const QModelIndexList &messages
|
||||
select();
|
||||
fetchAll();
|
||||
|
||||
//emit feedCountsChanged(false);
|
||||
//emit messageCountsChanged(false);
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
@ -375,7 +375,7 @@ bool MessagesModel::setBatchMessagesDeleted(const QModelIndexList &messages, int
|
||||
select();
|
||||
fetchAll();
|
||||
|
||||
emit feedCountsChanged(true);
|
||||
emit messageCountsChanged(true);
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
@ -400,7 +400,7 @@ bool MessagesModel::setBatchMessagesRead(const QModelIndexList &messages, int re
|
||||
select();
|
||||
fetchAll();
|
||||
|
||||
emit feedCountsChanged(true);
|
||||
emit messageCountsChanged(true);
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
@ -411,9 +411,37 @@ bool MessagesModel::setBatchMessagesRead(const QModelIndexList &messages, int re
|
||||
bool MessagesModel::setBatchMessagesRestored(const QModelIndexList &messages) {
|
||||
// TODO: Model -> setBatchMessagesRestored();
|
||||
// obnovime zpravy, po obnoveni je treba jako ve funkci setBatchMessagesDeleted
|
||||
// pres feedCountsChanged dat informaci ze pocty zprav se zmenily, ale oni
|
||||
// pres messageCountsChanged dat informaci ze pocty zprav se zmenily, ale oni
|
||||
// se zmenily nejen ve vybranych kanalech (je vybran odkadkovy kos) ale v kanalech do kterych patri
|
||||
return true;
|
||||
|
||||
if (m_messageMode == MessagesFromFeeds) {
|
||||
qDebug("Cannot restore non-deleted messages.");
|
||||
return false;
|
||||
}
|
||||
|
||||
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())));
|
||||
}
|
||||
|
||||
QString sql_delete_query = QString("UPDATE Messages SET is_deleted = 0 WHERE id IN (%1);").arg(message_ids.join(", "));
|
||||
|
||||
if (query_read_msg.exec(sql_delete_query)) {
|
||||
select();
|
||||
fetchAll();
|
||||
|
||||
emit messageCountsChanged(true);
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
QVariant MessagesModel::headerData(int section, Qt::Orientation orientation, int role) const {
|
||||
|
@ -113,9 +113,8 @@ class MessagesModel : public QSqlTableModel {
|
||||
void filterMessages(MessageFilter filter);
|
||||
|
||||
signals:
|
||||
// Emitted if some persistent change is made which affects
|
||||
// count of "unread/all" messages.
|
||||
void feedCountsChanged(bool total_message_number_changed = true);
|
||||
// Emitted if some persistent change is made which affects count of "unread/all" messages.
|
||||
void messageCountsChanged(bool total_message_number_changed);
|
||||
|
||||
protected:
|
||||
// Returns selected feed ids in concatenated textual form,
|
||||
|
@ -80,12 +80,8 @@ void FeedMessageViewer::saveSize() {
|
||||
m_feedsView->saveExpandedStates();
|
||||
|
||||
// Store offsets of splitters.
|
||||
settings->setValue(APP_CFG_GUI,
|
||||
"splitter_feeds",
|
||||
QString(m_feedSplitter->saveState().toBase64()));
|
||||
settings->setValue(APP_CFG_GUI,
|
||||
"splitter_messages",
|
||||
QString(m_messageSplitter->saveState().toBase64()));
|
||||
settings->setValue(APP_CFG_GUI, "splitter_feeds", QString(m_feedSplitter->saveState().toBase64()));
|
||||
settings->setValue(APP_CFG_GUI, "splitter_messages", QString(m_messageSplitter->saveState().toBase64()));
|
||||
|
||||
// States of splitters are stored, let's store
|
||||
// widths of columns.
|
||||
@ -93,12 +89,8 @@ void FeedMessageViewer::saveSize() {
|
||||
int width_column_date = m_messagesView->columnWidth(MSG_DB_DCREATED_INDEX);
|
||||
|
||||
if (width_column_author != 0 && width_column_date != 0) {
|
||||
settings->setValue(APP_CFG_GUI,
|
||||
KEY_MESSAGES_VIEW + QString::number(MSG_DB_AUTHOR_INDEX),
|
||||
width_column_author);
|
||||
settings->setValue(APP_CFG_GUI,
|
||||
KEY_MESSAGES_VIEW + QString::number(MSG_DB_DCREATED_INDEX),
|
||||
width_column_date);
|
||||
settings->setValue(APP_CFG_GUI, KEY_MESSAGES_VIEW + QString::number(MSG_DB_AUTHOR_INDEX), width_column_author);
|
||||
settings->setValue(APP_CFG_GUI, KEY_MESSAGES_VIEW + QString::number(MSG_DB_DCREATED_INDEX), width_column_date);
|
||||
}
|
||||
|
||||
// Store "visibility" of toolbars and list headers.
|
||||
@ -117,14 +109,12 @@ void FeedMessageViewer::loadSize() {
|
||||
m_messageSplitter->restoreState(QByteArray::fromBase64(settings->value(APP_CFG_GUI, "splitter_messages").toString().toLocal8Bit()));
|
||||
|
||||
// Splitters are restored, now, restore widths of columns.
|
||||
m_messagesView->setColumnWidth(MSG_DB_AUTHOR_INDEX,
|
||||
settings->value(APP_CFG_GUI,
|
||||
KEY_MESSAGES_VIEW + QString::number(MSG_DB_AUTHOR_INDEX),
|
||||
default_msg_section_size).toInt());
|
||||
m_messagesView->setColumnWidth(MSG_DB_DCREATED_INDEX,
|
||||
settings->value(APP_CFG_GUI,
|
||||
KEY_MESSAGES_VIEW + QString::number(MSG_DB_DCREATED_INDEX),
|
||||
default_msg_section_size).toInt());
|
||||
m_messagesView->setColumnWidth(MSG_DB_AUTHOR_INDEX, settings->value(APP_CFG_GUI,
|
||||
KEY_MESSAGES_VIEW + QString::number(MSG_DB_AUTHOR_INDEX),
|
||||
default_msg_section_size).toInt());
|
||||
m_messagesView->setColumnWidth(MSG_DB_DCREATED_INDEX, settings->value(APP_CFG_GUI,
|
||||
KEY_MESSAGES_VIEW + QString::number(MSG_DB_DCREATED_INDEX),
|
||||
default_msg_section_size).toInt());
|
||||
}
|
||||
|
||||
void FeedMessageViewer::quit() {
|
||||
@ -155,8 +145,7 @@ void FeedMessageViewer::setListHeadersEnabled(bool enable) {
|
||||
m_messagesView->header()->setVisible(enable);
|
||||
}
|
||||
|
||||
void FeedMessageViewer::updateTrayIconStatus(int unread_messages,
|
||||
int total_messages) {
|
||||
void FeedMessageViewer::updateTrayIconStatus(int unread_messages, int total_messages) {
|
||||
Q_UNUSED(total_messages)
|
||||
|
||||
if (SystemTrayIcon::isSystemTrayActivated()) {
|
||||
@ -191,10 +180,8 @@ void FeedMessageViewer::createConnections() {
|
||||
FormMain *form_main = qApp->mainForm();
|
||||
|
||||
// Filtering & searching.
|
||||
connect(m_toolBarMessages, SIGNAL(messageSearchPatternChanged(QString)),
|
||||
m_messagesView, SLOT(searchMessages(QString)));
|
||||
connect(m_toolBarMessages, SIGNAL(messageFilterChanged(MessagesModel::MessageFilter)),
|
||||
m_messagesView, SLOT(filterMessages(MessagesModel::MessageFilter)));
|
||||
connect(m_toolBarMessages, SIGNAL(messageSearchPatternChanged(QString)), m_messagesView, SLOT(searchMessages(QString)));
|
||||
connect(m_toolBarMessages, SIGNAL(messageFilterChanged(MessagesModel::MessageFilter)), m_messagesView, SLOT(filterMessages(MessagesModel::MessageFilter)));
|
||||
|
||||
// Message changers.
|
||||
connect(m_messagesView, SIGNAL(currentMessagesRemoved()), m_messagesBrowser, SLOT(clear()));
|
||||
@ -204,14 +191,14 @@ void FeedMessageViewer::createConnections() {
|
||||
connect(m_feedsView, SIGNAL(feedsSelected(QList<int>)), m_messagesView, SLOT(loadFeeds(QList<int>)));
|
||||
|
||||
// If user changes status of some messages, recalculate message counts.
|
||||
connect(m_messagesView, SIGNAL(feedCountsChanged(bool)), m_feedsView, SLOT(updateCountsOfSelectedFeeds(bool)));
|
||||
connect(m_messagesView, SIGNAL(messageCountsChanged(bool)), m_feedsView, SLOT(updateCountsOfSelectedFeeds(bool)));
|
||||
|
||||
// State of many messages is changed, then we need
|
||||
// to reload selections.
|
||||
connect(m_feedsView, SIGNAL(feedsNeedToBeReloaded(int)), m_messagesView, SLOT(reloadSelections(int)));
|
||||
|
||||
// If counts of unread/all messages change, update the tray icon.
|
||||
connect(m_feedsView, SIGNAL(feedCountsChanged(int,int)), this, SLOT(updateTrayIconStatus(int,int)));
|
||||
connect(m_feedsView, SIGNAL(messageCountsChanged(int, int)), this, SLOT(updateTrayIconStatus(int, int)));
|
||||
|
||||
// Message openers.
|
||||
connect(m_messagesView, SIGNAL(openMessagesInNewspaperView(QList<Message>)),
|
||||
|
@ -123,7 +123,7 @@ class FeedsView : public QTreeView {
|
||||
// Notifies other components about messages
|
||||
// counts.
|
||||
inline void notifyWithCounts() {
|
||||
emit feedCountsChanged(m_sourceModel->countOfUnreadMessages(), m_sourceModel->countOfAllMessages());
|
||||
emit messageCountsChanged(m_sourceModel->countOfUnreadMessages(), m_sourceModel->countOfAllMessages());
|
||||
}
|
||||
|
||||
// Selects next/previous item (feed/category) in the list.
|
||||
@ -157,7 +157,7 @@ class FeedsView : public QTreeView {
|
||||
void feedsUpdateRequested(const QList<FeedsModelFeed*> feeds);
|
||||
|
||||
// Emitted if counts of messages are changed.
|
||||
void feedCountsChanged(int unread_messages, int total_messages);
|
||||
void messageCountsChanged(int unread_messages, int total_messages);
|
||||
|
||||
// Emitted if currently selected feeds needs to be reloaded.
|
||||
void feedsNeedToBeReloaded(int mark_current_index_read);
|
||||
|
@ -50,7 +50,7 @@ MessagesView::~MessagesView() {
|
||||
|
||||
void MessagesView::createConnections() {
|
||||
// Forward feed counts changes.
|
||||
connect(m_sourceModel, SIGNAL(feedCountsChanged(bool)), this, SIGNAL(feedCountsChanged(bool)));
|
||||
connect(m_sourceModel, SIGNAL(messageCountsChanged(bool)), this, SIGNAL(messageCountsChanged(bool)));
|
||||
|
||||
// Make sure that source message is opened
|
||||
// in new tab on double click.
|
||||
@ -368,23 +368,24 @@ void MessagesView::restoreSelectedMessages() {
|
||||
QModelIndexList selected_indexes = selectionModel()->selectedRows();
|
||||
QModelIndexList mapped_indexes = m_proxyModel->mapListToSource(selected_indexes);
|
||||
|
||||
m_sourceModel->setBatchMessagesRestored(mapped_indexes);
|
||||
sortByColumn(header()->sortIndicatorSection(), header()->sortIndicatorOrder());
|
||||
if (m_sourceModel->setBatchMessagesRestored(mapped_indexes)) {
|
||||
sortByColumn(header()->sortIndicatorSection(), header()->sortIndicatorOrder());
|
||||
|
||||
int row_count = m_sourceModel->rowCount();
|
||||
if (row_count > 0) {
|
||||
QModelIndex last_item = current_index.row() < row_count ?
|
||||
m_proxyModel->index(current_index.row(),
|
||||
MSG_DB_TITLE_INDEX) :
|
||||
m_proxyModel->index(row_count - 1,
|
||||
MSG_DB_TITLE_INDEX);
|
||||
int row_count = m_sourceModel->rowCount();
|
||||
if (row_count > 0) {
|
||||
QModelIndex last_item = current_index.row() < row_count ?
|
||||
m_proxyModel->index(current_index.row(),
|
||||
MSG_DB_TITLE_INDEX) :
|
||||
m_proxyModel->index(row_count - 1,
|
||||
MSG_DB_TITLE_INDEX);
|
||||
|
||||
setCurrentIndex(last_item);
|
||||
scrollTo(last_item);
|
||||
reselectIndexes(QModelIndexList() << last_item);
|
||||
}
|
||||
else {
|
||||
emit currentMessagesRemoved();
|
||||
setCurrentIndex(last_item);
|
||||
scrollTo(last_item);
|
||||
reselectIndexes(QModelIndexList() << last_item);
|
||||
}
|
||||
else {
|
||||
emit currentMessagesRemoved();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -115,7 +115,7 @@ class MessagesView : public QTreeView {
|
||||
|
||||
// Emitted if counts of unread/total messages has changed
|
||||
// because of user interaction with list of messages.
|
||||
void feedCountsChanged(bool total_message_number_changed = true);
|
||||
void messageCountsChanged(bool total_message_number_changed);
|
||||
|
||||
private:
|
||||
QMenu *m_contextMenu;
|
||||
|
Loading…
x
Reference in New Issue
Block a user