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
00013
00014
00015
00016
00017 class Effect
00018 {
00019 friend class Effects;
00020 friend class EffectConfigWidget;
00021 public:
00022 Effect(const char *name);
00023 ~Effect();
00024
00025
00026
00027
00028
00029 Effect *before() const;
00030
00031
00032
00033
00034 Effect *after() const;
00035 long id() const;
00036
00037
00038
00039
00040
00041 Arts::StereoEffect *effect() const;
00042
00043
00044
00045
00046 QCString name() const;
00047
00048
00049
00050
00051 QString title() const;
00052
00053
00054
00055
00056
00057 bool isNull() const;
00058
00059
00060
00061
00062
00063
00064
00065
00066 QWidget *configure(bool friendly=true);
00067
00068
00069
00070
00071
00072
00073 bool configurable() const;
00074
00075
00076
00077
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
00095
00096
00097
00098
00099
00100
00101 bool append(Effect *item);
00102
00103
00104
00105
00106
00107 void move(const Effect *after, Effect *item);
00108
00109
00110
00111
00112 void remove(Effect *item, bool del=true);
00113
00114
00115
00116
00117 void removeAll(bool del=true);
00118
00119
00120
00121
00122
00123
00124 QStrList available() const;
00125
00126 QPtrList<Effect> effects() const;
00127
00128
00129
00130
00131 Effect *findId(long id) const;
00132
00133 private:
00134 QPtrListIterator<Effect> stackPosition() const;
00135
00136 signals:
00137
00138
00139
00140
00141 void added(Effect *effect);
00142
00143
00144
00145
00146 void removed(Effect *effect);
00147
00148
00149
00150 void moved(Effect *effect);
00151
00152
00153
00154
00155 void deleting(Effect *effect);
00156
00157 private:
00158
00159 QPtrList<Effect> mItems;
00160 };
00161
00162
00163
00164 #endif
00165