Fixed unread batch marking + feed extended selections.

This commit is contained in:
Martin Rotter 2013-12-17 21:26:14 +01:00
parent 010dd24e4b
commit e0e58dce96
3 changed files with 19 additions and 15 deletions

View file

@ -49,8 +49,7 @@ void FeedsView::setupAppearance() {
void FeedsView::selectionChanged(const QItemSelection &selected,
const QItemSelection &deselected) {
Q_UNUSED(selected)
Q_UNUSED(deselected)
QTreeView::selectionChanged(selected, deselected);
QModelIndexList selection = selectionModel()->selectedRows();
QModelIndexList mapped_selection = m_proxyModel->mapListToSource(selection);

View file

@ -13,7 +13,7 @@
MessagesView::MessagesView(QWidget *parent)
: QTreeView(parent), m_contextMenu(NULL) {
: QTreeView(parent), m_contextMenu(NULL), m_batchUnreadSwitch(false) {
m_proxyModel = new MessagesProxyModel(this);
m_sourceModel = m_proxyModel->sourceModel();
@ -167,15 +167,18 @@ void MessagesView::currentChanged(const QModelIndex &current,
current.row(), current.column(),
mapped_current_index.row(), mapped_current_index.column());
if (!signalsBlocked()) {
if (mapped_current_index.isValid()) {
if (!m_batchUnreadSwitch) {
// Set this message as read only if current item
// wasn't changed by "mark selected messages unread" action.
m_sourceModel->setMessageRead(mapped_current_index.row(), 1);
}
emit currentMessageChanged(m_sourceModel->messageAt(mapped_current_index.row()));
}
else {
emit currentMessageRemoved();
}
}
QTreeView::currentChanged(current, previous);
}
@ -244,9 +247,9 @@ void MessagesView::setSelectedMessagesReadStatus(int read) {
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);
m_batchUnreadSwitch = true;
setCurrentIndex(current_index);
blockSignals(false);
m_batchUnreadSwitch = false;
}
else {
setCurrentIndex(current_index);
@ -315,9 +318,9 @@ void MessagesView::setAllMessagesReadStatus(int read) {
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);
m_batchUnreadSwitch = true;
setCurrentIndex(current_index);
blockSignals(false);
m_batchUnreadSwitch = false;
}
else {
setCurrentIndex(current_index);

View file

@ -67,6 +67,8 @@ class MessagesView : public QTreeView {
MessagesProxyModel *m_proxyModel;
MessagesModel *m_sourceModel;
bool m_batchUnreadSwitch;
};
#endif // MESSAGESVIEW_H