From eb0c734369c711c8b3cabc7c78aa5645f6d6f912 Mon Sep 17 00:00:00 2001 From: Martin Rotter Date: Tue, 3 Dec 2013 21:39:26 +0100 Subject: [PATCH] acas --- src/core/messagesmodel.cpp | 8 +++---- src/gui/feedmessageviewer.cpp | 4 ++++ src/gui/formmain.cpp | 8 +++++++ src/gui/formmain.h | 2 ++ src/gui/messagesview.cpp | 41 ++++++++++++++++++++++++++++++++++- src/gui/messagesview.h | 8 ++----- 6 files changed, 60 insertions(+), 11 deletions(-) diff --git a/src/core/messagesmodel.cpp b/src/core/messagesmodel.cpp index f484bc285..6de1cd26a 100644 --- a/src/core/messagesmodel.cpp +++ b/src/core/messagesmodel.cpp @@ -130,11 +130,11 @@ QVariant MessagesModel::data(const QModelIndex &idx, int role) const { } } - // Return RAW data for EditRole. + // Return RAW data for EditRole. case Qt::EditRole: return QSqlTableModel::data(idx, role); - // Return "red" color for just deleted messages. + // Return "red" color for just deleted messages. case Qt::BackgroundRole: return record(idx.row()).value(MSG_DB_DELETED_INDEX).toInt() == 1 ? QColor(255, 0, 0, 100) : @@ -188,7 +188,7 @@ bool MessagesModel::setMessageDeleted(int row_index, int deleted) { bool MessagesModel::switchMessageImportance(int row_index) { QModelIndex target_index = index(row_index, MSG_DB_IMPORTANT_INDEX); - int current_importance = data(target_index).toInt(); + int current_importance = data(target_index, Qt::EditRole).toInt(); return current_importance == 1 ? setData(target_index, 0) : @@ -215,7 +215,7 @@ bool MessagesModel::switchBatchMessageImportance(const QModelIndexList &messages foreach (const QModelIndex &message, messages) { message_id = messageId(message.row()); - importance = record(message.row()).value(MSG_DB_IMPORTANT_INDEX).toInt(); + importance = data(message.row(), MSG_DB_IMPORTANT_INDEX, Qt::EditRole).toInt(); query_delete_msg.bindValue(":id", message_id); query_delete_msg.bindValue(":important", diff --git a/src/gui/feedmessageviewer.cpp b/src/gui/feedmessageviewer.cpp index 33ba25bdc..dccd2b98d 100644 --- a/src/gui/feedmessageviewer.cpp +++ b/src/gui/feedmessageviewer.cpp @@ -30,6 +30,10 @@ FeedMessageViewer::FeedMessageViewer(QWidget *parent) m_messagesBrowser, SLOT(clear())); connect(m_messagesView, SIGNAL(currentMessageChanged(Message)), m_messagesBrowser, SLOT(navigateToMessage(Message))); + connect(FormMain::getInstance()->m_ui->m_actionSwitchImportanceOfSelectedMessages, + SIGNAL(triggered()), + m_messagesView, + SLOT(switchSelectedMessagesImportance())); } void FeedMessageViewer::initialize() { diff --git a/src/gui/formmain.cpp b/src/gui/formmain.cpp index 8b9a78fe7..32f7b4ac1 100644 --- a/src/gui/formmain.cpp +++ b/src/gui/formmain.cpp @@ -125,6 +125,10 @@ void FormMain::display() { QtSingleApplication::alert(this); } +void FormMain::onCommitData(QSessionManager &manager) { + qDebug("OS asked application to commit its data."); +} + void FormMain::onAboutToQuit() { qDebug("Cleaning up resources and saving application state before it exits."); } @@ -174,6 +178,10 @@ void FormMain::setupIcons() { } void FormMain::createConnections() { + // Core connections. + connect(qApp, SIGNAL(commitDataRequest(QSessionManager&)), + this, SLOT(onCommitData(QSessionManager&))); + // Menu "File" connections. connect(m_ui->m_actionQuit, SIGNAL(triggered()), this, SLOT(quit())); diff --git a/src/gui/formmain.h b/src/gui/formmain.h index c50c00d9a..cd9e9e589 100644 --- a/src/gui/formmain.h +++ b/src/gui/formmain.h @@ -64,6 +64,8 @@ class FormMain : public QMainWindow { void switchFullscreenMode(bool turn_fullscreen_on); protected slots: + void onCommitData(QSessionManager &manager); + // Used for last-minute actions. void onAboutToQuit(); diff --git a/src/gui/messagesview.cpp b/src/gui/messagesview.cpp index b8a2f54e1..30961622c 100644 --- a/src/gui/messagesview.cpp +++ b/src/gui/messagesview.cpp @@ -97,6 +97,28 @@ void MessagesView::keyPressEvent(QKeyEvent *event) { QTreeView::keyPressEvent(event); } +void MessagesView::mousePressEvent(QMouseEvent *event) { + QTreeView::mousePressEvent(event); + + if (event->button() != Qt::LeftButton) { + // No need for extra actions on right/middle click. + return; + } + + QModelIndex clicked_index = indexAt(event->pos()); + + if (!clicked_index.isValid()) { + qDebug("Clicked on invalid index in MessagesView."); + return; + } + + QModelIndex mapped_index = m_proxyModel->mapToSource(clicked_index); + + if (mapped_index.column() == MSG_DB_IMPORTANT_INDEX) { + m_sourceModel->switchMessageImportance(mapped_index.row()); + } +} + void MessagesView::currentChanged(const QModelIndex ¤t, const QModelIndex &previous) { QModelIndex mapped_current = m_proxyModel->mapToSource(current); @@ -112,7 +134,24 @@ void MessagesView::currentChanged(const QModelIndex ¤t, QTreeView::currentChanged(current, previous); } -void MessagesView::setSelectedMessagesReadStatus(int read) { +void MessagesView::switchSelectedMessagesImportance() { + /* + // toto muže obsahovat moc indexů -> z jednoho radku to muze + // obsahovat indexy ze vsech sloupcu, overit. + QItemSelection selected_indexes = selectionModel()->selection(); + QItemSelection mapped_selection = m_proxyModel->mapSelectionToSource(selected_indexes); + + m_sourceModel->switchBatchMessageImportance(mapped_selection.indexes()); + */ + + QModelIndexList selected_indexes = selectionModel()->selectedRows(); + QModelIndexList mapped_indexes; + + foreach (const QModelIndex &index, selected_indexes) { + mapped_indexes << m_proxyModel->mapToSource(index); + } + + m_sourceModel->switchBatchMessageImportance(mapped_indexes); } void MessagesView::setAllMessagesRead() { diff --git a/src/gui/messagesview.h b/src/gui/messagesview.h index e93cf976c..a6f63f4d0 100644 --- a/src/gui/messagesview.h +++ b/src/gui/messagesview.h @@ -24,19 +24,15 @@ class MessagesView : public QTreeView { public slots: // Message manipulators. - void setSelectedMessagesReadStatus(int read); - + void switchSelectedMessagesImportance(); void setAllMessagesRead(); - protected: void setupAppearance(); - + void mousePressEvent(QMouseEvent *event); void keyPressEvent(QKeyEvent *event); - void currentChanged(const QModelIndex ¤t, const QModelIndex &previous); - void selectionChanged(const QItemSelection &selected, const QItemSelection &deselected);