Work on selective message restoring.

This commit is contained in:
Martin Rotter 2014-09-21 21:12:51 +02:00
parent 1a9a121709
commit 47ad127fca
11 changed files with 58 additions and 8 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

View file

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

View file

@ -365,7 +365,7 @@ bool MessagesModel::setBatchMessagesDeleted(const QModelIndexList &messages, int
if (m_messageMode == MessagesFromFeeds) { if (m_messageMode == MessagesFromFeeds) {
sql_delete_query = QString("UPDATE Messages SET is_deleted = %2 WHERE id IN (%1);").arg(message_ids.join(", "), sql_delete_query = QString("UPDATE Messages SET is_deleted = %2 WHERE id IN (%1);").arg(message_ids.join(", "),
QString::number(deleted)); QString::number(deleted));
} }
else { else {
sql_delete_query = QString("DELETE FROM Messages WHERE id in (%1);").arg(message_ids.join(", ")); sql_delete_query = QString("DELETE FROM Messages WHERE id in (%1);").arg(message_ids.join(", "));
@ -408,6 +408,14 @@ 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
// se zmenily nejen ve vybranych kanalech (je vybran odkadkovy kos) ale v kanalech do kterych patri
return true;
}
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

@ -102,6 +102,7 @@ class MessagesModel : public QSqlTableModel {
bool switchBatchMessageImportance(const QModelIndexList &messages); bool switchBatchMessageImportance(const QModelIndexList &messages);
bool setBatchMessagesDeleted(const QModelIndexList &messages, int deleted); bool setBatchMessagesDeleted(const QModelIndexList &messages, int deleted);
bool setBatchMessagesRead(const QModelIndexList &messages, int read); bool setBatchMessagesRead(const QModelIndexList &messages, int read);
bool setBatchMessagesRestored(const QModelIndexList &messages);
// Fetches ALL available data to the model. // Fetches ALL available data to the model.
void fetchAll(); void fetchAll();

View file

@ -235,6 +235,8 @@ void FeedMessageViewer::createConnections() {
SIGNAL(triggered()), m_messagesView, SLOT(switchSelectedMessagesImportance())); SIGNAL(triggered()), m_messagesView, SLOT(switchSelectedMessagesImportance()));
connect(form_main->m_ui->m_actionDeleteSelectedMessages, connect(form_main->m_ui->m_actionDeleteSelectedMessages,
SIGNAL(triggered()), m_messagesView, SLOT(deleteSelectedMessages())); SIGNAL(triggered()), m_messagesView, SLOT(deleteSelectedMessages()));
connect(form_main->m_ui->m_actionRestoreSelectedMessagesFromRecycleBin,
SIGNAL(triggered()), m_messagesView, SLOT(restoreSelectedMessages()));
connect(form_main->m_ui->m_actionMarkSelectedMessagesAsRead, connect(form_main->m_ui->m_actionMarkSelectedMessagesAsRead,
SIGNAL(triggered()), m_messagesView, SLOT(markSelectedMessagesRead())); SIGNAL(triggered()), m_messagesView, SLOT(markSelectedMessagesRead()));
connect(form_main->m_ui->m_actionMarkSelectedMessagesAsUnread, connect(form_main->m_ui->m_actionMarkSelectedMessagesAsUnread,
@ -269,7 +271,7 @@ void FeedMessageViewer::createConnections() {
SIGNAL(triggered()), m_feedsView, SLOT(openSelectedFeedsInNewspaperMode())); SIGNAL(triggered()), m_feedsView, SLOT(openSelectedFeedsInNewspaperMode()));
connect(form_main->m_ui->m_actionEmptyRecycleBin, connect(form_main->m_ui->m_actionEmptyRecycleBin,
SIGNAL(triggered()), m_feedsView, SLOT(emptyRecycleBin())); SIGNAL(triggered()), m_feedsView, SLOT(emptyRecycleBin()));
connect(form_main->m_ui->m_actionRestoreAllMessages, connect(form_main->m_ui->m_actionRestoreRecycleBin,
SIGNAL(triggered()), m_feedsView, SLOT(restoreRecycleBin())); SIGNAL(triggered()), m_feedsView, SLOT(restoreRecycleBin()));
connect(form_main->m_ui->m_actionDeleteSelectedFeedCategory, connect(form_main->m_ui->m_actionDeleteSelectedFeedCategory,
SIGNAL(triggered()), m_feedsView, SLOT(deleteSelectedItem())); SIGNAL(triggered()), m_feedsView, SLOT(deleteSelectedItem()));

View file

@ -521,7 +521,7 @@ void FeedsView::initializeContextMenuEmptySpace() {
void FeedsView::initializeContextMenuRecycleBin() { void FeedsView::initializeContextMenuRecycleBin() {
m_contextMenuRecycleBin = new QMenu(tr("Context menu for recycle bin"), this); m_contextMenuRecycleBin = new QMenu(tr("Context menu for recycle bin"), this);
m_contextMenuRecycleBin->addActions(QList<QAction*>() << m_contextMenuRecycleBin->addActions(QList<QAction*>() <<
qApp->mainForm()->m_ui->m_actionRestoreAllMessages << qApp->mainForm()->m_ui->m_actionRestoreRecycleBin <<
qApp->mainForm()->m_ui->m_actionEmptyRecycleBin); qApp->mainForm()->m_ui->m_actionEmptyRecycleBin);
} }

View file

@ -127,7 +127,7 @@ QList<QAction*> FormMain::allActions() {
actions << m_ui->m_actionDefragmentDatabase; actions << m_ui->m_actionDefragmentDatabase;
// Add recycle bin actions. // Add recycle bin actions.
actions << m_ui->m_actionRestoreAllMessages; actions << m_ui->m_actionRestoreRecycleBin;
actions << m_ui->m_actionEmptyRecycleBin; actions << m_ui->m_actionEmptyRecycleBin;
return actions; return actions;
@ -222,7 +222,8 @@ void FormMain::setupIcons() {
// Recycle bin. // Recycle bin.
m_ui->m_actionEmptyRecycleBin->setIcon(icon_theme_factory->fromTheme("recycle-bin-empty")); m_ui->m_actionEmptyRecycleBin->setIcon(icon_theme_factory->fromTheme("recycle-bin-empty"));
m_ui->m_actionRestoreAllMessages->setIcon(icon_theme_factory->fromTheme("recycle-bin-restore")); m_ui->m_actionRestoreRecycleBin->setIcon(icon_theme_factory->fromTheme("recycle-bin-restore-all"));
m_ui->m_actionRestoreSelectedMessagesFromRecycleBin->setIcon(icon_theme_factory->fromTheme("recycle-bin-restore-one"));
// Web browser. // Web browser.
m_ui->m_actionAddBrowser->setIcon(icon_theme_factory->fromTheme("list-add")); m_ui->m_actionAddBrowser->setIcon(icon_theme_factory->fromTheme("list-add"));

View file

@ -170,7 +170,8 @@
<string>&amp;Recycle bin</string> <string>&amp;Recycle bin</string>
</property> </property>
<addaction name="m_actionEmptyRecycleBin"/> <addaction name="m_actionEmptyRecycleBin"/>
<addaction name="m_actionRestoreAllMessages"/> <addaction name="m_actionRestoreRecycleBin"/>
<addaction name="m_actionRestoreSelectedMessagesFromRecycleBin"/>
</widget> </widget>
<addaction name="m_menuFile"/> <addaction name="m_menuFile"/>
<addaction name="m_menuView"/> <addaction name="m_menuView"/>
@ -598,11 +599,16 @@
<string>&amp;Empty recycle bin</string> <string>&amp;Empty recycle bin</string>
</property> </property>
</action> </action>
<action name="m_actionRestoreAllMessages"> <action name="m_actionRestoreRecycleBin">
<property name="text"> <property name="text">
<string>&amp;Restore all messages</string> <string>&amp;Restore all messages</string>
</property> </property>
</action> </action>
<action name="m_actionRestoreSelectedMessagesFromRecycleBin">
<property name="text">
<string>Restore &amp;selected messages</string>
</property>
</action>
</widget> </widget>
<customwidgets> <customwidgets>
<customwidget> <customwidget>

View file

@ -155,7 +155,8 @@ void MessagesView::initializeContextMenu() {
qApp->mainForm()->m_ui->m_actionMarkSelectedMessagesAsRead << qApp->mainForm()->m_ui->m_actionMarkSelectedMessagesAsRead <<
qApp->mainForm()->m_ui->m_actionMarkSelectedMessagesAsUnread << qApp->mainForm()->m_ui->m_actionMarkSelectedMessagesAsUnread <<
qApp->mainForm()->m_ui->m_actionSwitchImportanceOfSelectedMessages << qApp->mainForm()->m_ui->m_actionSwitchImportanceOfSelectedMessages <<
qApp->mainForm()->m_ui->m_actionDeleteSelectedMessages); qApp->mainForm()->m_ui->m_actionDeleteSelectedMessages <<
qApp->mainForm()->m_ui->m_actionRestoreSelectedMessagesFromRecycleBin);
} }
void MessagesView::mousePressEvent(QMouseEvent *event) { void MessagesView::mousePressEvent(QMouseEvent *event) {
@ -357,6 +358,36 @@ void MessagesView::deleteSelectedMessages() {
} }
} }
void MessagesView::restoreSelectedMessages() {
QModelIndex current_index = selectionModel()->currentIndex();
if (!current_index.isValid()) {
return;
}
QModelIndexList selected_indexes = selectionModel()->selectedRows();
QModelIndexList mapped_indexes = m_proxyModel->mapListToSource(selected_indexes);
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);
setCurrentIndex(last_item);
scrollTo(last_item);
reselectIndexes(QModelIndexList() << last_item);
}
else {
emit currentMessagesRemoved();
}
}
void MessagesView::switchSelectedMessagesImportance() { void MessagesView::switchSelectedMessagesImportance() {
QModelIndex current_index = selectionModel()->currentIndex(); QModelIndex current_index = selectionModel()->currentIndex();

View file

@ -74,6 +74,7 @@ class MessagesView : public QTreeView {
void markSelectedMessagesUnread(); void markSelectedMessagesUnread();
void switchSelectedMessagesImportance(); void switchSelectedMessagesImportance();
void deleteSelectedMessages(); void deleteSelectedMessages();
void restoreSelectedMessages();
void selectNextItem(); void selectNextItem();
void selectPreviousItem(); void selectPreviousItem();