#include "ui_collapsiblewidget_ui.h"
+#include "abstractcollapsiblewidget.h"
#include "timecode.h"
#include "keyframeedit.h"
-#include "effectstackedit.h"
#include <QDomElement>
#include <QToolButton>
bool trackMode;
};
+enum WIPE_DIRECTON { UP = 0, DOWN = 1, LEFT = 2, RIGHT = 3, CENTER = 4 };
+
+struct wipeInfo {
+ WIPE_DIRECTON start;
+ WIPE_DIRECTON end;
+ int startTransparency;
+ int endTransparency;
+};
+
class MySpinBox : public QSpinBox
{
Q_OBJECT
Q_OBJECT
public:
- ParameterContainer(QDomElement effect, ItemInfo info, EffectMetaInfo *metaInfo, int index, QWidget * parent = 0);
+ ParameterContainer(QDomElement effect, ItemInfo info, EffectMetaInfo *metaInfo, QWidget * parent = 0);
~ParameterContainer();
void updateTimecodeFormat();
void updateProjectFormat(MltVideoProfile profile, Timecode t);
- int index();
private slots:
void slotCollectAllParameters();
int m_in;
int m_out;
- int m_index;
QList<QWidget*> m_uiItems;
QMap<QString, QWidget*> m_valueItems;
Timecode m_timecode;
* @author Jean-Baptiste Mardelle
*/
-class CollapsibleEffect : public QWidget, public Ui::CollapsibleWidget_UI
+class CollapsibleEffect : public AbstractCollapsibleWidget, public Ui::CollapsibleWidget_UI
{
Q_OBJECT
public:
- CollapsibleEffect(QDomElement effect, QDomElement original_effect, ItemInfo info, int ix, EffectMetaInfo *metaInfo, bool lastEffect, QWidget * parent = 0);
+ CollapsibleEffect(QDomElement effect, QDomElement original_effect, ItemInfo info, EffectMetaInfo *metaInfo, bool lastEffect, QWidget * parent = 0);
~CollapsibleEffect();
static QMap<QString, QImage> iconCache;
- void setupWidget(ItemInfo info, int index, EffectMetaInfo *metaInfo);
+ void setupWidget(ItemInfo info, EffectMetaInfo *metaInfo);
void updateTimecodeFormat();
void setActive(bool activate);
+ /** @brief Install event filter so that scrolling with mouse wheel does not change parameter value. */
virtual bool eventFilter( QObject * o, QEvent * e );
/** @brief Update effect GUI to reflect parameted changes. */
- void updateWidget(ItemInfo info, int index, QDomElement effect, EffectMetaInfo *metaInfo);
+ void updateWidget(ItemInfo info, QDomElement effect, EffectMetaInfo *metaInfo);
QDomElement effect() const;
+ int groupIndex() const;
+ bool isGroup() const;
+ int effectIndex() const;
+ void setGroupIndex(int ix);
+ void setGroupName(const QString &groupName);
+ /** @brief Remove this effect from its group. */
+ void removeFromGroup();
+ QString infoString() const;
+ bool isActive() const;
+ /** @brief Should the wheel event be sent to parent widget for scrolling. */
+ bool filterWheelEvent;
+
+ /** @brief Return the stylesheet required for effect parameters. */
+ static const QString getStyleSheet();
public slots:
void slotSyncEffectsPos(int pos);
+ void slotEnable(bool enable, bool updateMainStatus = true);
+ void slotResetEffect();
private slots:
void slotSwitch();
- void slotEnable(bool enable);
void slotShow(bool show);
void slotDeleteEffect();
void slotEffectUp();
void slotEffectDown();
void slotSaveEffect();
- void slotResetEffect();
+ void slotCreateGroup();
+ void slotCreateRegion();
+ void slotUnGroup();
+ /** @brief A sub effect parameter was changed */
+ void slotUpdateRegionEffectParams(const QDomElement /*old*/, const QDomElement /*e*/, int /*ix*/);
private:
ParameterContainer *m_paramWidget;
QDomElement m_effect;
QDomElement m_original_effect;
QList <QDomElement> m_subEffects;
- bool m_lastEffect;
+ bool m_lastEffect;
int m_in;
int m_out;
- bool m_active;
QMenu *m_menu;
QPoint m_clickPoint;
+ EffectInfo m_info;
+ /** @brief True if this is a region effect, which behaves in a special way, like a group. */
+ bool m_regionEffect;
protected:
virtual void mouseDoubleClickEvent ( QMouseEvent * event );
- virtual void mousePressEvent ( QMouseEvent * event );
- virtual void enterEvent( QEvent * event );
- virtual void leaveEvent( QEvent * event );
+ virtual void mouseReleaseEvent( QMouseEvent *event );
+ virtual void dragEnterEvent(QDragEnterEvent *event);
+ virtual void dragLeaveEvent(QDragLeaveEvent *event);
+ virtual void dropEvent(QDropEvent *event);
signals:
void parameterChanged(const QDomElement, const QDomElement, int);
void syncEffectsPos(int);
- void effectStateChanged(bool, int ix = -1);
- void deleteEffect(const QDomElement, int);
+ void effectStateChanged(bool, int ix = -1, bool updateMainStatus = true);
+ void deleteEffect(const QDomElement);
void changeEffectPosition(int, bool);
void activateEffect(int);
void checkMonitorPosition(int);
void startFilterJob(QString filterName, QString filterParams, QString finalFilterName, QString consumer, QString consumerParams, QString properties);
/** @brief An effect was saved, trigger effect list reload. */
void reloadEffects();
+ /** @brief An effect was reset, trigger param reload. */
void resetEffect(int ix);
+ /** @brief Ask for creation of a group. */
+ void createGroup(int ix);
+ void moveEffect(int current_pos, int new_pos, int groupIndex, QString groupName);
+ void unGroup(CollapsibleEffect *);
+ void addEffect(QDomElement e);
+ void createRegion(int, KUrl);
};