00001 #ifndef EFFECTS_H
00002 #define EFFECTS_H
00003
00004 #include <qptrlist.h>
00005 #include <qcstring.h>
00006 #include <qstrlist.h>
00007 #include <qobject.h>
00008
00009 namespace Arts { class StereoEffect; }
00010 class Engine;
00011 class EffectConfigWidget;
00012
00017 class Effect
00018 {
00019 friend class Effects;
00020 friend class EffectConfigWidget;
00021 public:
00022 Effect(const char *name);
00023 ~Effect();
00024
00029 Effect *before() const;
00034 Effect *after() const;
00035 long id() const;
00036
00041 Arts::StereoEffect *effect() const;
00042
00046 QCString name() const;
00047
00051 QString title() const;
00052
00057 bool isNull() const;
00058
00066 QWidget *configure(bool friendly=true);
00067
00073 bool configurable() const;
00074
00078 static QString clean(const QCString &name);
00079 private:
00080 long mId;
00081 Arts::StereoEffect *mEffect;
00082 QCString mName;
00083 QWidget *mConfig;
00084 };
00085
00086 class Effects : public QObject
00087 {
00088 Q_OBJECT
00089 friend class Effect;
00090 public:
00091 Effects();
00092
00093 bool insert(const Effect *after, Effect *item);
00094
00101 bool append(Effect *item);
00102
00107 void move(const Effect *after, Effect *item);
00112 void remove(Effect *item, bool del=true);
00117 void removeAll(bool del=true);
00118
00124 QStrList available() const;
00125
00126 QPtrList<Effect> effects() const;
00127
00131 Effect *findId(long id) const;
00132
00133 private:
00134 QPtrListIterator<Effect> stackPosition() const;
00135
00136 signals:
00141 void added(Effect *effect);
00146 void removed(Effect *effect);
00150 void moved(Effect *effect);
00155 void deleting(Effect *effect);
00156
00157 private:
00158
00159 QPtrList<Effect> mItems;
00160 };
00161
00162
00163
00164 #endif
00165