diff options
Diffstat (limited to 'kftpgrabber/src/widgets/bookmarks/sidebar.cpp')
-rw-r--r-- | kftpgrabber/src/widgets/bookmarks/sidebar.cpp | 158 |
1 files changed, 158 insertions, 0 deletions
diff --git a/kftpgrabber/src/widgets/bookmarks/sidebar.cpp b/kftpgrabber/src/widgets/bookmarks/sidebar.cpp new file mode 100644 index 0000000..21ee0d9 --- /dev/null +++ b/kftpgrabber/src/widgets/bookmarks/sidebar.cpp @@ -0,0 +1,158 @@ +/* + * This file is part of the KFTPGrabber project + * + * Copyright (C) 2004 by the KFTPGrabber developers + * Copyright (C) 2004 Markus Brueffer <markus@brueffer.de> + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * is provided AS IS, WITHOUT ANY WARRANTY; without even the implied + * warranty of MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, and + * NON-INFRINGEMENT. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Steet, Fifth Floor, Boston, + * MA 02110-1301, USA. + * + * In addition, as a special exception, the copyright holders give + * permission to link the code of portions of this program with the + * OpenSSL library under certain conditions as described in each + * individual source file, and distribute linked combinations + * including the two. + * You must obey the GNU General Public License in all respects + * for all of the code used other than OpenSSL. If you modify + * file(s) with this exception, you may extend this exception to your + * version of the file(s), but you are not obligated to do so. If you + * do not wish to do so, delete this exception statement from your + * version. If you delete this exception statement from all source + * files in the program, then also delete it here. + */ + +#include <qlayout.h> +#include <qsplitter.h> +#include <qvbox.h> + +#include <kaction.h> +#include <klocale.h> +#include <ktoolbar.h> + +#include "kftpapi.h" +#include "kftpbookmarks.h" +#include "editor.h" +#include "listview.h" +#include "misc.h" + +#include "sidebar.h" + +using namespace KFTPGrabberBase; + +namespace KFTPWidgets { + +namespace Bookmarks { + +KActionCollection *Sidebar::actionCollection() +{ + return KFTPAPI::getInstance()->mainWindow()->actionCollection(); +} + +Sidebar::Sidebar(QWidget *parent, const char *name) + : QWidget(parent, name) +{ + QVBoxLayout *layout = new QVBoxLayout(this); + + m_toolBar = new KToolBar(this, "bookmarkToolBar"); + m_toolBar->setIconSize(16); + layout->addWidget(m_toolBar); + + // Create the list view for editing bookmarks + m_tree = new ListView(KFTPBookmarks::Manager::self(), this); + m_tree->setAutoUpdate(true); + m_tree->setConnectBookmark(true); + m_tree->setEditMenuItem(true); + + layout->addWidget(m_tree); + + m_editAction = new KAction(i18n("&Edit..."), "edit", KShortcut(), this, SLOT(slotEditAction()), actionCollection(), "bookmark_edit2"); + connect(m_tree, SIGNAL(bookmarkClicked(QListViewItem*)), this, SLOT(slotClicked(QListViewItem*))); + connect(m_tree, SIGNAL(bookmarkNew(ListViewItem*, KFTPBookmarks::Site*)), this, SLOT(slotNewAction(ListViewItem*, KFTPBookmarks::Site*))); + + // Get the new bookmark data + m_tree->fillBookmarkData(); + + // Init the Actions + slotClicked(0L); + + setMinimumWidth(200); +} + +Sidebar::~Sidebar() +{ +} + +void Sidebar::refresh() +{ + m_tree->clear(); + m_tree->fillBookmarkData(); +} + +void Sidebar::slotEditAction() +{ + ListViewItem* item = static_cast<ListViewItem*>(m_tree->selectedItems().at(0)); + + if (item) { + BookmarkEditor *editor = new BookmarkEditor(item, this); + + editor->exec(); + delete editor; + + // Update the bookmarks globaly + KFTPBookmarks::Manager::self()->emitUpdate(); + } +} + +void Sidebar::slotNewAction(ListViewItem*, KFTPBookmarks::Site *site) +{ + BookmarkEditor *editor = new BookmarkEditor(static_cast<ListViewItem*>(m_tree->selectedItems().at(0)), this); + + if (!editor->exec()) { + // If the user clicks Abort, remove the newly created server + KFTPBookmarks::Manager::self()->delSite(site); + } + + delete editor; +} + +void Sidebar::slotClicked(QListViewItem *item) +{ + // When nodes are expanded, item is 0, although an item is still selected, so grab it here + item = m_tree->selectedItems().at(0); + + // Enable/Disable actions for the toolbar + if (!item) { + actionCollection()->action("bookmark_delete")->setEnabled(false); + actionCollection()->action("bookmark_subcat")->setEnabled(true); + m_editAction->setEnabled(false); + return; + } + + actionCollection()->action("bookmark_delete")->setEnabled(true); + + if (static_cast<ListViewItem*>(item)->m_type == BT_CATEGORY) { + m_editAction->setEnabled(false); + actionCollection()->action("bookmark_subcat")->setEnabled(true); + } else { + m_editAction->setEnabled(true); + actionCollection()->action("bookmark_subcat")->setEnabled(false); + } +} + +} + +} + +#include "sidebar.moc" |