diff options
| author | Andrea Diamantini <adjam7@gmail.com> | 2010-03-24 16:04:23 +0100 | 
|---|---|---|
| committer | Andrea Diamantini <adjam7@gmail.com> | 2010-03-24 16:04:23 +0100 | 
| commit | fa0ae8e974c22d23bd74d2043e153effff54c7da (patch) | |
| tree | 906999abc96495877f04cbf25542bc6755b2b463 /src/history/historypanel.cpp | |
| parent | This commit should finally fix settings handling (diff) | |
| parent | Add missing files (diff) | |
| download | rekonq-fa0ae8e974c22d23bd74d2043e153effff54c7da.tar.xz | |
Merge commit 'refs/merge-requests/107' of git://gitorious.org/rekonq/mainline into HistoryBookmarksImprovements
Diffstat (limited to 'src/history/historypanel.cpp')
| -rw-r--r-- | src/history/historypanel.cpp | 89 | 
1 files changed, 76 insertions, 13 deletions
| diff --git a/src/history/historypanel.cpp b/src/history/historypanel.cpp index 8c8eae75..c67594ff 100644 --- a/src/history/historypanel.cpp +++ b/src/history/historypanel.cpp @@ -46,6 +46,9 @@  // KDE Includes  #include <KLineEdit>  #include <KLocalizedString> +#include <KMenu> +#include <KAction> +#include <KMessageBox>  HistoryPanel::HistoryPanel(const QString &title, QWidget *parent, Qt::WindowFlags flags) @@ -70,11 +73,12 @@ void HistoryPanel::setup()      QWidget *ui = new QWidget(this); -    QTreeView *historyTreeView = new QTreeView(this); -    historyTreeView->setUniformRowHeights(true); -    historyTreeView->setSelectionBehavior(QAbstractItemView::SelectRows); -    historyTreeView->setTextElideMode(Qt::ElideMiddle); -    historyTreeView->setAlternatingRowColors(true); +    m_treeView = new UrlTreeView(this); +    m_treeView->setUniformRowHeights(true); +    m_treeView->setSelectionBehavior(QAbstractItemView::SelectRows); +    m_treeView->setTextElideMode(Qt::ElideMiddle); +    m_treeView->setAlternatingRowColors(true); +    m_treeView->header()->hide();      // add search bar      QHBoxLayout *hBoxLayout = new QHBoxLayout; @@ -91,7 +95,7 @@ void HistoryPanel::setup()      QVBoxLayout *vBoxLayout = new QVBoxLayout;      vBoxLayout->setContentsMargins(0, 0, 0, 0);      vBoxLayout->addWidget(searchBar); -    vBoxLayout->addWidget(historyTreeView); +    vBoxLayout->addWidget(m_treeView);      // add it to the UI      ui->setLayout(vBoxLayout); @@ -103,19 +107,78 @@ void HistoryPanel::setup()      TreeProxyModel *treeProxyModel = new TreeProxyModel(this);      treeProxyModel->setSourceModel(model); -    historyTreeView->setModel(treeProxyModel); -    historyTreeView->setExpanded(treeProxyModel->index(0, 0), true); -    historyTreeView->header()->hideSection(1); +    m_treeView->setModel(treeProxyModel); +    m_treeView->setExpanded(treeProxyModel->index(0, 0), true); +    m_treeView->header()->hideSection(1);      QFontMetrics fm(font());      int header = fm.width(QLatin1Char('m')) * 40; -    historyTreeView->header()->resizeSection(0, header); +    m_treeView->header()->resizeSection(0, header);      connect(search, SIGNAL(textChanged(QString)), treeProxyModel, SLOT(setFilterFixedString(QString))); -    connect(historyTreeView, SIGNAL(activated(const QModelIndex &)), this, SLOT(itemActivated(const QModelIndex &))); +    connect(m_treeView, SIGNAL(contextMenuItemRequested(const QPoint &)), this, SLOT(contextMenuItem(const QPoint &))); +    connect(m_treeView, SIGNAL(contextMenuGroupRequested(const QPoint &)), this, SLOT(contextMenuGroup(const QPoint &)));  } +void HistoryPanel::contextMenuItem(const QPoint &pos) +{ +    QPoint position = m_treeView->mapToGlobal(pos); +    KMenu *menu = new KMenu(this); +    KAction* action; + +    action = new KAction(KIcon("tab-new"), i18n("Open"), this); +    connect(action, SIGNAL(triggered()), m_treeView, SLOT(openInCurrentTab())); +    menu->addAction(action); + +    action = new KAction(KIcon("tab-new"), i18n("Open in new tab"), this); +    connect(action, SIGNAL(triggered()), m_treeView, SLOT(openInNewTab())); +    menu->addAction(action); + +    action = new KAction(KIcon("window-new"), i18n("Open in new window"), this); +    connect(action, SIGNAL(triggered()), m_treeView, SLOT(openInNewWindow())); +    menu->addAction(action); + +    action = new KAction(KIcon("edit-copy"), i18n("Copy link"), this); +    connect(action, SIGNAL(triggered()), m_treeView, SLOT(copyToClipboard())); +    menu->addAction(action); -void HistoryPanel::itemActivated(const QModelIndex &item) +    if (!menu) +        return; +    menu->popup(position); +} + +void HistoryPanel::contextMenuGroup(const QPoint &pos)  { -    emit openUrl( item.data(HistoryModel::UrlRole).toUrl() ); +    QPoint position = m_treeView->mapToGlobal(pos); +    KMenu *menu = new KMenu(this); +    KAction* action; + +    action = new KAction(KIcon("tab-new"), i18n("Open all Bookmarks"), this); +    connect(action, SIGNAL(triggered()), this, SLOT(openAll())); + +    menu->addAction(action); + +    if (!menu) +        return; +    menu->popup(position); +} + +void HistoryPanel::openAll() +{ +    QModelIndex index = m_treeView->currentIndex(); +    if(!index.isValid()) +        return; + +    QList<KUrl> allChild; + +    for(int i = 0; i < index.model()->rowCount(index); i++) +        allChild << qVariantValue<KUrl>(index.child(i, 0).data(Qt::UserRole)); + +    if(allChild.length() > 8) // 8, a good choice ? +    { +        if(!(KMessageBox::warningContinueCancel(this, i18n("You are about to open a lot of tabs : %1\nAre you sure  ?", QString::number(allChild.length()))) == KMessageBox::Continue)) +            return; +    } + +    for(int i = 0; i < allChild.length(); i++) +        emit openUrl(allChild.at(i).url(), Rekonq::SettingOpenTab);  } | 
