Code refactoring.

This commit is contained in:
Martin Rotter 2014-09-22 19:38:25 +02:00
parent 134f2d408d
commit cac1e78adf
6 changed files with 71 additions and 56 deletions

View File

@ -264,7 +264,7 @@ bool MessagesModel::setMessageRead(int row_index, int read) {
// can reflect. // can reflect.
emit dataChanged(index(row_index, 0), emit dataChanged(index(row_index, 0),
index(row_index, columnCount() - 1)); index(row_index, columnCount() - 1));
emit feedCountsChanged(false); emit messageCountsChanged(false);
return true; return true;
} }
else { else {
@ -341,7 +341,7 @@ bool MessagesModel::switchBatchMessageImportance(const QModelIndexList &messages
select(); select();
fetchAll(); fetchAll();
//emit feedCountsChanged(false); //emit messageCountsChanged(false);
return true; return true;
} }
else { else {
@ -375,7 +375,7 @@ bool MessagesModel::setBatchMessagesDeleted(const QModelIndexList &messages, int
select(); select();
fetchAll(); fetchAll();
emit feedCountsChanged(true); emit messageCountsChanged(true);
return true; return true;
} }
else { else {
@ -400,7 +400,7 @@ bool MessagesModel::setBatchMessagesRead(const QModelIndexList &messages, int re
select(); select();
fetchAll(); fetchAll();
emit feedCountsChanged(true); emit messageCountsChanged(true);
return true; return true;
} }
else { else {
@ -411,10 +411,38 @@ bool MessagesModel::setBatchMessagesRead(const QModelIndexList &messages, int re
bool MessagesModel::setBatchMessagesRestored(const QModelIndexList &messages) { bool MessagesModel::setBatchMessagesRestored(const QModelIndexList &messages) {
// TODO: Model -> setBatchMessagesRestored(); // TODO: Model -> setBatchMessagesRestored();
// obnovime zpravy, po obnoveni je treba jako ve funkci setBatchMessagesDeleted // 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 // se zmenily nejen ve vybranych kanalech (je vybran odkadkovy kos) ale v kanalech do kterych patri
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; return true;
} }
else {
return false;
}
}
QVariant MessagesModel::headerData(int section, Qt::Orientation orientation, int role) const { QVariant MessagesModel::headerData(int section, Qt::Orientation orientation, int role) const {
Q_UNUSED(orientation) Q_UNUSED(orientation)

View File

@ -113,9 +113,8 @@ class MessagesModel : public QSqlTableModel {
void filterMessages(MessageFilter filter); void filterMessages(MessageFilter filter);
signals: signals:
// Emitted if some persistent change is made which affects // Emitted if some persistent change is made which affects count of "unread/all" messages.
// count of "unread/all" messages. void messageCountsChanged(bool total_message_number_changed);
void feedCountsChanged(bool total_message_number_changed = true);
protected: protected:
// Returns selected feed ids in concatenated textual form, // Returns selected feed ids in concatenated textual form,

View File

@ -80,12 +80,8 @@ void FeedMessageViewer::saveSize() {
m_feedsView->saveExpandedStates(); m_feedsView->saveExpandedStates();
// Store offsets of splitters. // Store offsets of splitters.
settings->setValue(APP_CFG_GUI, settings->setValue(APP_CFG_GUI, "splitter_feeds", QString(m_feedSplitter->saveState().toBase64()));
"splitter_feeds", settings->setValue(APP_CFG_GUI, "splitter_messages", QString(m_messageSplitter->saveState().toBase64()));
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 // States of splitters are stored, let's store
// widths of columns. // widths of columns.
@ -93,12 +89,8 @@ void FeedMessageViewer::saveSize() {
int width_column_date = m_messagesView->columnWidth(MSG_DB_DCREATED_INDEX); int width_column_date = m_messagesView->columnWidth(MSG_DB_DCREATED_INDEX);
if (width_column_author != 0 && width_column_date != 0) { if (width_column_author != 0 && width_column_date != 0) {
settings->setValue(APP_CFG_GUI, settings->setValue(APP_CFG_GUI, KEY_MESSAGES_VIEW + QString::number(MSG_DB_AUTHOR_INDEX), width_column_author);
KEY_MESSAGES_VIEW + QString::number(MSG_DB_AUTHOR_INDEX), settings->setValue(APP_CFG_GUI, KEY_MESSAGES_VIEW + QString::number(MSG_DB_DCREATED_INDEX), width_column_date);
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. // Store "visibility" of toolbars and list headers.
@ -117,12 +109,10 @@ void FeedMessageViewer::loadSize() {
m_messageSplitter->restoreState(QByteArray::fromBase64(settings->value(APP_CFG_GUI, "splitter_messages").toString().toLocal8Bit())); m_messageSplitter->restoreState(QByteArray::fromBase64(settings->value(APP_CFG_GUI, "splitter_messages").toString().toLocal8Bit()));
// Splitters are restored, now, restore widths of columns. // Splitters are restored, now, restore widths of columns.
m_messagesView->setColumnWidth(MSG_DB_AUTHOR_INDEX, m_messagesView->setColumnWidth(MSG_DB_AUTHOR_INDEX, settings->value(APP_CFG_GUI,
settings->value(APP_CFG_GUI,
KEY_MESSAGES_VIEW + QString::number(MSG_DB_AUTHOR_INDEX), KEY_MESSAGES_VIEW + QString::number(MSG_DB_AUTHOR_INDEX),
default_msg_section_size).toInt()); default_msg_section_size).toInt());
m_messagesView->setColumnWidth(MSG_DB_DCREATED_INDEX, m_messagesView->setColumnWidth(MSG_DB_DCREATED_INDEX, settings->value(APP_CFG_GUI,
settings->value(APP_CFG_GUI,
KEY_MESSAGES_VIEW + QString::number(MSG_DB_DCREATED_INDEX), KEY_MESSAGES_VIEW + QString::number(MSG_DB_DCREATED_INDEX),
default_msg_section_size).toInt()); default_msg_section_size).toInt());
} }
@ -155,8 +145,7 @@ void FeedMessageViewer::setListHeadersEnabled(bool enable) {
m_messagesView->header()->setVisible(enable); m_messagesView->header()->setVisible(enable);
} }
void FeedMessageViewer::updateTrayIconStatus(int unread_messages, void FeedMessageViewer::updateTrayIconStatus(int unread_messages, int total_messages) {
int total_messages) {
Q_UNUSED(total_messages) Q_UNUSED(total_messages)
if (SystemTrayIcon::isSystemTrayActivated()) { if (SystemTrayIcon::isSystemTrayActivated()) {
@ -191,10 +180,8 @@ void FeedMessageViewer::createConnections() {
FormMain *form_main = qApp->mainForm(); FormMain *form_main = qApp->mainForm();
// Filtering & searching. // Filtering & searching.
connect(m_toolBarMessages, SIGNAL(messageSearchPatternChanged(QString)), connect(m_toolBarMessages, SIGNAL(messageSearchPatternChanged(QString)), m_messagesView, SLOT(searchMessages(QString)));
m_messagesView, SLOT(searchMessages(QString))); connect(m_toolBarMessages, SIGNAL(messageFilterChanged(MessagesModel::MessageFilter)), m_messagesView, SLOT(filterMessages(MessagesModel::MessageFilter)));
connect(m_toolBarMessages, SIGNAL(messageFilterChanged(MessagesModel::MessageFilter)),
m_messagesView, SLOT(filterMessages(MessagesModel::MessageFilter)));
// Message changers. // Message changers.
connect(m_messagesView, SIGNAL(currentMessagesRemoved()), m_messagesBrowser, SLOT(clear())); 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>))); connect(m_feedsView, SIGNAL(feedsSelected(QList<int>)), m_messagesView, SLOT(loadFeeds(QList<int>)));
// If user changes status of some messages, recalculate message counts. // 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 // State of many messages is changed, then we need
// to reload selections. // to reload selections.
connect(m_feedsView, SIGNAL(feedsNeedToBeReloaded(int)), m_messagesView, SLOT(reloadSelections(int))); connect(m_feedsView, SIGNAL(feedsNeedToBeReloaded(int)), m_messagesView, SLOT(reloadSelections(int)));
// If counts of unread/all messages change, update the tray icon. // 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. // Message openers.
connect(m_messagesView, SIGNAL(openMessagesInNewspaperView(QList<Message>)), connect(m_messagesView, SIGNAL(openMessagesInNewspaperView(QList<Message>)),

View File

@ -123,7 +123,7 @@ class FeedsView : public QTreeView {
// Notifies other components about messages // Notifies other components about messages
// counts. // counts.
inline void notifyWithCounts() { 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. // Selects next/previous item (feed/category) in the list.
@ -157,7 +157,7 @@ class FeedsView : public QTreeView {
void feedsUpdateRequested(const QList<FeedsModelFeed*> feeds); void feedsUpdateRequested(const QList<FeedsModelFeed*> feeds);
// Emitted if counts of messages are changed. // 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. // Emitted if currently selected feeds needs to be reloaded.
void feedsNeedToBeReloaded(int mark_current_index_read); void feedsNeedToBeReloaded(int mark_current_index_read);

View File

@ -50,7 +50,7 @@ MessagesView::~MessagesView() {
void MessagesView::createConnections() { void MessagesView::createConnections() {
// Forward feed counts changes. // 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 // Make sure that source message is opened
// in new tab on double click. // in new tab on double click.
@ -368,7 +368,7 @@ void MessagesView::restoreSelectedMessages() {
QModelIndexList selected_indexes = selectionModel()->selectedRows(); QModelIndexList selected_indexes = selectionModel()->selectedRows();
QModelIndexList mapped_indexes = m_proxyModel->mapListToSource(selected_indexes); QModelIndexList mapped_indexes = m_proxyModel->mapListToSource(selected_indexes);
m_sourceModel->setBatchMessagesRestored(mapped_indexes); if (m_sourceModel->setBatchMessagesRestored(mapped_indexes)) {
sortByColumn(header()->sortIndicatorSection(), header()->sortIndicatorOrder()); sortByColumn(header()->sortIndicatorSection(), header()->sortIndicatorOrder());
int row_count = m_sourceModel->rowCount(); int row_count = m_sourceModel->rowCount();
@ -387,6 +387,7 @@ void MessagesView::restoreSelectedMessages() {
emit currentMessagesRemoved(); emit currentMessagesRemoved();
} }
} }
}
void MessagesView::switchSelectedMessagesImportance() { void MessagesView::switchSelectedMessagesImportance() {
QModelIndex current_index = selectionModel()->currentIndex(); QModelIndex current_index = selectionModel()->currentIndex();

View File

@ -115,7 +115,7 @@ class MessagesView : public QTreeView {
// Emitted if counts of unread/total messages has changed // Emitted if counts of unread/total messages has changed
// because of user interaction with list of messages. // because of user interaction with list of messages.
void feedCountsChanged(bool total_message_number_changed = true); void messageCountsChanged(bool total_message_number_changed);
private: private:
QMenu *m_contextMenu; QMenu *m_contextMenu;