diff options
Diffstat (limited to 'kftpgrabber/src/widgets/queueview/queueview.h')
-rw-r--r-- | kftpgrabber/src/widgets/queueview/queueview.h | 296 |
1 files changed, 296 insertions, 0 deletions
diff --git a/kftpgrabber/src/widgets/queueview/queueview.h b/kftpgrabber/src/widgets/queueview/queueview.h new file mode 100644 index 0000000..d93e14f --- /dev/null +++ b/kftpgrabber/src/widgets/queueview/queueview.h @@ -0,0 +1,296 @@ +/* + * This file is part of the KFTPGrabber project + * + * Copyright (C) 2003-2004 by the KFTPGrabber developers + * Copyright (C) 2003-2004 Jernej Kos <kostko@jweb-network.net> + * Copyright (C) 2005 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. + */ + +#ifndef KFTPQUEUEVIEW_H +#define KFTPQUEUEVIEW_H + +#include <qguardedptr.h> +#include <qintdict.h> +#include <qlayout.h> +#include <qlabel.h> + +#include <kaction.h> +#include <klistview.h> + +#include "kftpqueue.h" + +class KToolBar; +class KListViewSearchLine; + +namespace KFTPWidgets { + +class ListView; +class QueueView; + +/** + * A visual representation of a queued object. + */ +class QueueViewItem : public QListViewItem +{ +public: + /** + * Class constructor. + * + * @param view Queue view widget + * @param object Queue object + * @param parent Parent list view + */ + QueueViewItem(QueueView *view, KFTPQueue::QueueObject *object, QListView *parent); + + /** + * Class constructor. + * + * @param view Queue view widget + * @param object Queue object + * @param parent Parent item + */ + QueueViewItem(QueueView *view, KFTPQueue::QueueObject *object, QListViewItem *parent); + + /** + * Class destructor. + */ + ~QueueViewItem(); + + /** + * Refresh the visual representation with data from the actual queue object. + */ + void refresh(); + + /** + * Associate a queue object with this item. + * + * @param object A valid object pointer + */ + void setObject(KFTPQueue::QueueObject *object) { m_queueObject = object; } + + /** + * Returns the currently associated queue object. + */ + KFTPQueue::QueueObject *getObject() const { return m_queueObject; } + + /** + * Returns the last child item. + */ + QListViewItem *lastChild() const { return m_lastChild; } + + /** + * Moves this item one position up. + */ + void moveUp(); + + /** + * Moves this item one position down. + */ + void moveDown(); + + /** + * Moves this item to parent's top. + */ + void moveToTop(); + + /** + * Moves this item to parent's bottom. + */ + void moveToBottom(); + + /** + * @overload + * Reimplemented from QListViewItem. + */ + void insertItem(QListViewItem *newChild); + + /** + * @overload + * Reimplemented from QListViewItem. + */ + void takeItem(QListViewItem *item); + + /** + * @overload + * Reimplemented from QListViewItem for text colors. + */ + void paintCell(QPainter *p, const QColorGroup &cg, int column, int width, int alignment); + + /** + * @overload + * Reimplemented from QListViewItem. + */ + void sortChildItems(int, bool) {} +protected: + /** + * Init the item. + */ + void init(); +private: + QListViewItem *m_lastChild; + + KFTPQueue::QueueObject *m_queueObject; + QueueView *m_queueView; + long m_queueId; +}; + +/** + * The list view widget. + * + * @author Jernej Kos + */ +class QueueListView : public ListView { +public: + /** + * Class constructor. + * + * @param parent Parent widget + */ + QueueListView(QWidget *parent); + + /** + * @overload + * Reimplemented from QListView. + */ + void insertItem(QListViewItem *item); + + /** + * @overload + * Reimplemented from QListView. + */ + void setSorting(int, bool = true) { QListView::setSorting(-1); } +}; + +/** + * A widget for displaying and manipulating the current queue. + * + * @author Jernej Kos + */ +class QueueView : public QWidget +{ +friend class QueueViewItem; +Q_OBJECT +public: + /** + * Class constructor. + */ + QueueView(QWidget *parent, const char *name); + + /** + * Load queue list layout from the configuration file. + */ + void loadLayout(); + + /** + * Save queue list layout to the configuration file. + */ + void saveLayout(); +public slots: + void updateActions(); +protected: + /** + * Initialize actions. + */ + void initActions(); + + /** + * Initialize toolbar widgets. + */ + void initToolBar(); +private: + KActionCollection *m_actionCollection; + + // Actions + KAction *m_launchAction; + KAction *m_abortAction; + KAction *m_removeAction; + KAction *m_removeAllAction; + KAction *m_moveUpAction; + KAction *m_moveDownAction; + KAction *m_moveTopAction; + KAction *m_moveBottomAction; + KAction *m_editAction; + + // Toolbar Actions + KAction *m_loadAction; + KAction *m_saveAction; + KAction *m_startAction; + KAction *m_pauseAction; + KAction *m_stopAction; + KAction *m_addAction; + KAction *m_searchAction; + KToggleAction *m_filterAction; + + KListViewSearchLine *m_searchField; + + KToolBar *m_toolBar; + KToolBar *m_searchToolBar; + QueueListView *m_queue; + + QIntDict<QueueViewItem> m_queuedItems; +private slots: + void slotObjectRemoved(long); + void slotObjectUpdated(); + void slotTransferAdded(KFTPQueue::Transfer*); + void slotSiteAdded(KFTPQueue::Site*); + + void contextMenuRequested(KListView*, QListViewItem*, const QPoint&); + + void slotSearchEraseClicked(); + + // Slots for actions + void slotLaunch(); + void slotAbort(); + void slotRemove(); + void slotRemoveAll(); + void slotMoveUp(); + void slotMoveDown(); + void slotMoveTop(); + void slotMoveBottom(); + void slotEdit(); + + void slotLoad(); + void slotSave(); + void slotStart(); + void slotPause(); + void slotStop(); + void slotAdd(); + void slotSearch(); + void slotFilter(); + + void slotDownloadLimitChanged(int value); + void slotUploadLimitChanged(int value); + void slotThreadCountChanged(int value); +}; + +} + +#endif |