From 8ef3b9dc3a7a1242e0d55d5d2cd1be600d0dfb03 Mon Sep 17 00:00:00 2001 From: Yoann Laissus Date: Thu, 16 Aug 2012 15:50:29 +0200 Subject: BookmarkWidget: Add an entry to choose a folder with a KBookmarkDialog --- src/urlbar/bookmarkwidget.cpp | 22 ++++++++++++++++++++++ src/urlbar/bookmarkwidget.h | 1 + 2 files changed, 23 insertions(+) diff --git a/src/urlbar/bookmarkwidget.cpp b/src/urlbar/bookmarkwidget.cpp index 2a91f333..4a099cf6 100644 --- a/src/urlbar/bookmarkwidget.cpp +++ b/src/urlbar/bookmarkwidget.cpp @@ -41,6 +41,7 @@ #include #include #include +#include // Qt Includes #include @@ -106,6 +107,7 @@ BookmarkWidget::BookmarkWidget(const KBookmark &bookmark, QWidget *parent) m_folder = new KComboBox(this); layout->addRow(folderLabel, m_folder); setupFolderComboBox(); + connect(m_folder, SIGNAL(currentIndexChanged(int)), this, SLOT(onFolderIndexChanged(int))); // Bookmark name QLabel *nameLabel = new QLabel(this); @@ -276,11 +278,31 @@ void BookmarkWidget::setupFolderComboBox() } } + m_folder->insertSeparator(m_folder->count()); + m_folder->addItem(KIcon("folder"), i18n("Choose...")); + int index = m_folder->findData(m_bookmark->parentGroup().address()); m_folder->setCurrentIndex(index); } +void BookmarkWidget::onFolderIndexChanged(int index) +{ + if (index == m_folder->count() - 1) + { + KBookmarkDialog dialog(rApp->bookmarkManager()->manager()); + KBookmarkGroup selectedGroup = dialog.selectFolder(m_bookmark->parentGroup()); + + if (selectedGroup.address() != m_bookmark->parentGroup().address() && !selectedGroup.isNull() ) + { + m_bookmark->parentGroup().deleteBookmark(*m_bookmark); + selectedGroup.addBookmark(*m_bookmark); + rApp->bookmarkManager()->manager()->emitChanged(); + } + } +} + + void BookmarkWidget::removeBookmark() { rApp->bookmarkManager()->owner()->deleteBookmark(*m_bookmark); diff --git a/src/urlbar/bookmarkwidget.h b/src/urlbar/bookmarkwidget.h index e5f25d37..7e2bb404 100644 --- a/src/urlbar/bookmarkwidget.h +++ b/src/urlbar/bookmarkwidget.h @@ -77,6 +77,7 @@ private: private Q_SLOTS: void accept(); void removeBookmark(); + void onFolderIndexChanged(int index); #ifdef HAVE_NEPOMUK void setRatingSlot(int rate); -- cgit v1.2.1