#ifndef EFFECTSLISTWIDGET_H
#define EFFECTSLISTWIDGET_H
-#include <KListWidget>
+#include <QTreeWidget>
#include <QDomElement>
+#include <KActionCategory>
+
class EffectsList;
+class KIcon;
-class EffectsListWidget : public KListWidget {
+class EffectsListWidget : public QTreeWidget
+{
Q_OBJECT
public:
- explicit EffectsListWidget(QMenu *menu, QWidget *parent = 0);
+ explicit EffectsListWidget(QMenu *contextMenu, QWidget *parent = 0);
virtual ~EffectsListWidget();
- QDomElement currentEffect();
+ const QDomElement currentEffect() const;
QString currentInfo();
- QDomElement itemEffect(QListWidgetItem *item);
- void initList();
+ const QDomElement itemEffect(QTreeWidgetItem *item) const;
+ void initList(QMenu *effectsMenu, KActionCategory *effectActions);
protected:
- virtual void mousePressEvent(QMouseEvent *event);
- virtual void mouseMoveEvent(QMouseEvent *event);
virtual void dragMoveEvent(QDragMoveEvent *event);
virtual void contextMenuEvent(QContextMenuEvent * event);
+ virtual QMimeData *mimeData(const QList<QTreeWidgetItem *> list) const;
+ virtual void keyPressEvent(QKeyEvent *e);
private:
- bool m_dragStarted;
- QPoint m_DragStartPosition;
QMenu *m_menu;
+ /** @brief Returns the folder item whose name == @param name. */
+ QTreeWidgetItem *findFolder(const QString name);
+
+ /** @brief Loads the effects from the given effectlist as item of this widget.
+ * @param effectlist effectlist containing the effects that should be loaded
+ * @param icon the icon to be used for the QTreeWidgetItems
+ * @param defaultFolder parent item which will be used by default
+ * @param folders list of folders which might be used instead for specific effects
+ * @param type type of the effects
+ * @param current name of selected effect before reload; if an effect name matches this one it will become selected
+ * @param found will be set to true if an effect name matches current
+ */
+ void loadEffects(const EffectsList *effectlist, KIcon icon, QTreeWidgetItem *defaultFolder, const QList<QTreeWidgetItem *> *folders, int type, const QString current, bool *found);
+
+private slots:
+ void slotExpandItem(const QModelIndex & index);
+
+signals:
+ void applyEffect(const QDomElement);
};
#endif