//-*-C++-*- /* * KMix -- KDE's full featured mini mixer * * Copyright Christian Esken * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Library 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 WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef DIALOGVIEWCONFIGURATION_H #define DIALOGVIEWCONFIGURATION_H // QT #include class QLabel; #include class QHBoxLayout; #include #include class QScrollArea; class QVBoxLayout; // QT DND #include #include // KDE #include #include // KMix #include "gui/guiprofile.h" #include "viewbase.h" class DialogViewConfigurationItem : public QListWidgetItem { friend class QDataStream; public: DialogViewConfigurationItem( QListWidget *parent); DialogViewConfigurationItem( QListWidget *parent, QString id, bool shown, QString name, int splitted, const QString& iconName ); void refreshItem(); public: QString _id; bool _shown; QString _name; int _splitted; QString _iconName; }; class DialogViewConfigurationWidget : public QListWidget { Q_OBJECT public: DialogViewConfigurationWidget(QWidget *parent=0); void setActiveList(bool isActiveList) { m_activeList = isActiveList; } bool isActiveList() const { return m_activeList; }; Q_SIGNALS: void dropped(DialogViewConfigurationWidget* list, int index, DialogViewConfigurationItem* item, bool sourceIsActiveList); protected: virtual QMimeData* mimeData(const QList items) const; virtual bool dropMimeData(int index, const QMimeData * mimeData, Qt::DropAction action); virtual Qt::DropActions supportedDropActions() const { //kDebug() << "supportedDropActions!"; return Qt::MoveAction; } virtual QStringList mimeTypes() const { //kDebug() << "mimeTypes!"; return QStringList() << "application/x-kde-action-list"; } // Skip internal dnd handling in QListWidget ---- how is one supposed to figure this out // without reading the QListWidget code !? virtual void dropEvent(QDropEvent* ev) { QAbstractItemView::dropEvent(ev); } private: bool m_activeList; }; class DialogViewConfiguration : public KDialog { Q_OBJECT public: DialogViewConfiguration(QWidget* parent, ViewBase& view); ~DialogViewConfiguration(); // QSize sizeHint() const; public slots: void apply(); private slots: void slotDropped(DialogViewConfigurationWidget* list, int index, DialogViewConfigurationItem* item, bool sourceIsActiveList ); void moveSelectionToActiveList(); void moveSelectionToInactiveList(); void selectionChangedActive(); void selectionChangedInactive(); private: //void dragEnterEvent(QDragEnterEvent *event); void prepareControls(QAbstractItemModel* model, bool isActiveView, GUIProfile::ControlSet& oldCtlSet, GUIProfile::ControlSet& newCtlSet); void createPage(); void addSpacer(int row, int col); void moveSelection(DialogViewConfigurationWidget* from, DialogViewConfigurationWidget* to); QVBoxLayout* _layout; ViewBase& _view; QWidget * frame; QGridLayout *_glayout; QLabel* qlb; QPushButton* moveLeftButton; QPushButton* moveRightButton; DialogViewConfigurationWidget *_qlw; DialogViewConfigurationWidget *_qlwInactive; }; #endif