summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/history/historypanel.cpp61
-rw-r--r--src/history/historypanel.h4
2 files changed, 65 insertions, 0 deletions
diff --git a/src/history/historypanel.cpp b/src/history/historypanel.cpp
index 8ba963e7..45e57312 100644
--- a/src/history/historypanel.cpp
+++ b/src/history/historypanel.cpp
@@ -83,6 +83,14 @@ void HistoryPanel::contextMenuItem(const QPoint &pos)
connect(action, SIGNAL(triggered()), panelTreeView(), SLOT(copyToClipboard()));
menu.addAction(action);
+ action = new KAction(KIcon("edit-clear"), i18n("Remove Entry"), this);
+ connect(action,SIGNAL(triggered()),this,SLOT(deleteEntry()));
+ menu.addAction(action);
+
+ action = new KAction(KIcon("edit-clear"), i18n("Remove all occurences"), this);
+ connect(action,SIGNAL(triggered()),this,SLOT(forgetSite()));
+ menu.addAction(action);
+
menu.exec(panelTreeView()->mapToGlobal(pos));
}
@@ -96,6 +104,10 @@ void HistoryPanel::contextMenuGroup(const QPoint &pos)
connect(action, SIGNAL(triggered()), this, SLOT(openAll()));
menu.addAction(action);
+ action = new KAction(KIcon("edit-clear"), i18n("Remove Folder"), this);
+ connect(action, SIGNAL(triggered()), this, SLOT(deleteGroup()));
+ menu.addAction(action);
+
menu.exec(panelTreeView()->mapToGlobal(pos));
}
@@ -131,6 +143,21 @@ void HistoryPanel::openAll()
emit openUrl(allChild.at(i).url(), Rekonq::NewTab);
}
+void HistoryPanel::deleteGroup()
+{
+ QModelIndex index = panelTreeView()->currentIndex();
+ if (!index.isValid())
+ return;
+
+ //Getting all URLs of sub items.
+ QList<KUrl> allChild;
+ for (int i = 0; i < index.model()->rowCount(index); i++)
+ allChild << qVariantValue<KUrl>(index.child(i, 0).data(Qt::UserRole));
+
+ for (int i = 0; i < allChild.length(); i++)
+ rApp->historyManager()->removeHistoryEntry(allChild.at(i));
+
+}
void HistoryPanel::setup()
{
@@ -142,6 +169,40 @@ void HistoryPanel::setup()
panelTreeView()->expand(proxy->index(0, 0));
}
+void HistoryPanel::deleteEntry()
+{
+ QModelIndex index = panelTreeView()->currentIndex();
+ if(!index.isValid())
+ return;
+ removedFolderIndex=index.parent().row();
+
+ rApp->historyManager()->removeHistoryEntry(qVariantValue< KUrl >(index.data(Qt::UserRole)));
+
+ QModelIndex expandItem = panelTreeView()->model()->index(removedFolderIndex, 0);
+ if (expandItem.isValid())
+ panelTreeView()->expand(expandItem);
+}
+
+void HistoryPanel::forgetSite()
+{
+ QModelIndex index = panelTreeView()->currentIndex();
+ if(!index.isValid())
+ return;
+ removedFolderIndex=index.row();
+
+ QString site = qVariantValue< KUrl >(index.data(Qt::UserRole)).host();
+ QList<HistoryItem> toRemove = rApp->historyManager()->find(site);
+ for(int i = 0; i < toRemove.length(); i++)
+ {
+ rApp->historyManager()->removeHistoryEntry(KUrl(toRemove.at(i).url));
+ }
+
+ QModelIndex expandItem = panelTreeView()->model()->index(removedFolderIndex, 0);
+ if (expandItem.isValid())
+ panelTreeView()->expand(expandItem);
+}
+
+
QAbstractItemModel* HistoryPanel::model()
{
diff --git a/src/history/historypanel.h b/src/history/historypanel.h
index 5ca4fff0..f78ec5e1 100644
--- a/src/history/historypanel.h
+++ b/src/history/historypanel.h
@@ -50,10 +50,14 @@ private Q_SLOTS:
virtual void contextMenuEmpty(const QPoint &pos);
void openAll();
+ void deleteEntry();
+ void deleteGroup();
+ void forgetSite();
private:
virtual void setup();
virtual QAbstractItemModel* model();
+ int removedFolderIndex;
};
#endif // HISTORYPANEL_H