00001
00002
00003
00004
00005
00006
00007
00008
00009
00011
00012 #ifndef _AX_MODULE_AUDIO_H_
00013 #define _AX_MODULE_AUDIO_H_
00014
00015
00016
00017
00018
00019 #include "ax/ax_view.h"
00020
00021 #include "ax_resource/ax_resource.h"
00022 #include "ax_resource/ax_activator_resource.h"
00023 #include "ax_resource/ax_module.h"
00024
00025 class AxMP3Info;
00026
00027 #define axPROPERTY_TRACK_POSITION wxT("Track position")
00028
00037 class AxAudioResource: public AxResource
00038 {
00039 DECLARE_DYNAMIC_CLASS( AxAudioResource )
00040
00041 public:
00042
00043
00044 AxAudioResource(const AxAudioResource& resource) { Init(); Copy(resource); }
00045 AxAudioResource() { Init(); }
00046 ~AxAudioResource();
00047
00048
00049
00050 void Init();
00051
00053 void Copy(const AxAudioResource& resource);
00054
00056 void CopyAlbumInfo(const AxMP3Info& info);
00057
00059 void CopyTrackInfo(const AxMP3Info& info);
00060
00062 virtual AxDocument* Clone() const { return new AxAudioResource(*this); }
00063
00064
00065 protected:
00066
00067 };
00068
00077 class AxMediaCtrlPanel;
00078 class AxAudioView: public AxView
00079 {
00080 DECLARE_DYNAMIC_CLASS( AxAudioView )
00081
00082 public:
00083
00084
00085 AxAudioView() { Init(); }
00086 ~AxAudioView() {}
00087
00088
00089
00090 void Init();
00091
00092 virtual bool Activate(AxViewManager* viewManager, AxDocument* doc);
00093 virtual bool Deactivate(AxViewManager* viewManager);
00094
00095 virtual bool Initialize(AxViewManager* viewManager);
00096 virtual bool Uninitialize(AxViewManager* viewManager);
00097
00098 AxMediaCtrlPanel* GetMediaCtrlPanel() const;
00099
00100 void ShowViewIfInactive();
00101 void SetPlaylist();
00102 bool PlayOrPause(AxResource* resource);
00103 bool Stop();
00104 bool ShowTrackDetails(AxResource* resource);
00105
00106 bool AlbumShowDetails(AxResource* resource);
00107 bool AlbumPlayAll(AxResource* resource);
00108 bool AlbumPreviousTrack(AxResource* resource);
00109 bool AlbumNextTrack(AxResource* resource);
00110
00111 AxAudioResource* GetResource() const;
00112
00113 protected:
00114
00115 };
00116
00125 class AxAudioModule: public AxModule
00126 {
00127 DECLARE_DYNAMIC_CLASS(AxAudioModule)
00128
00129 public:
00131 AxAudioModule();
00132
00134 ~AxAudioModule() {}
00135
00136
00137
00139 virtual bool OnInit();
00140
00142 virtual bool OnInitUI();
00143
00146 virtual void OnExit();
00147
00149 virtual bool LoadConfig(wxConfigBase& config);
00150
00152 virtual bool SaveConfig(wxConfigBase& config);
00153
00154
00155
00156 virtual bool OnCloseMainWindow() { return true; }
00157
00158
00159
00160 virtual bool OnSearch(const wxString& WXUNUSED(searchString), int WXUNUSED(flags), AxResourceLibrary* WXUNUSED(library)) { return false; }
00161
00163 virtual bool IsFileSupported(const wxString& filename);
00164
00166 virtual AxResource* LoadResource(const wxString& filename);
00167
00170 virtual bool AggregateFiles(AxResourceLibrary* library, wxArrayString& files, bool checkIfFileLoaded);
00171
00173 virtual AxActivator* CreateActivator(AxResourceLibrary* library, AxResource* resource);
00174
00175
00176
00177 protected:
00178 };
00179
00188 class AxAudioResourceActivator: public AxResourceActivator
00189 {
00190 public:
00191
00192 DECLARE_DYNAMIC_CLASS( AxAudioResourceActivator )
00193
00194 public:
00195
00196
00197 AxAudioResourceActivator() { Init(); }
00198 AxAudioResourceActivator(const AxAudioResourceActivator& activator) { Init(); Copy(activator); }
00199
00200 AxAudioResourceActivator(AxResourceLibrary* library, AxResource* resource);
00201 ~AxAudioResourceActivator() {}
00202
00203
00204
00205 void Init();
00206
00207 void Copy(const AxAudioResourceActivator& activator);
00208
00209 virtual AxActivator* Clone() const { return new AxAudioResourceActivator(*this); }
00210
00211 virtual AxMenu* Activate(AxMenuController* controller, AxMenuItem* item);
00212
00215 virtual bool Reactivate(AxMenuController* controller, AxMenuItem* item);
00216
00217 protected:
00218 };
00219
00229 class AxAudioResourceCommandActivator: public AxResourceActivator
00230 {
00231 public:
00232
00233 DECLARE_DYNAMIC_CLASS( AxAudioResourceCommandActivator )
00234
00235 typedef enum
00236 {
00237 AxAudioResourceCommandUnknown,
00238
00239
00240
00241 AxAudioResourceCommandPlay,
00242 AxAudioResourceCommandStop,
00243 AxAudioResourceCommandShowDetails,
00244
00245
00246
00247 AxAudioResourceCommandAlbumPlayAll,
00248 AxAudioResourceCommandAlbumStop,
00249 AxAudioResourceCommandAlbumShowDetails,
00250 AxAudioResourceCommandAlbumNextTrack,
00251 AxAudioResourceCommandAlbumPreviousTrack
00252
00253 } AxAudioResourceCommand;
00254
00255 public:
00256
00257
00258 AxAudioResourceCommandActivator() { Init(); }
00259 AxAudioResourceCommandActivator(const AxAudioResourceCommandActivator& activator) { Init(); Copy(activator); }
00260
00261 AxAudioResourceCommandActivator(AxAudioResourceCommand cmd, AxResourceLibrary* library, AxResource* resource);
00262 ~AxAudioResourceCommandActivator() {}
00263
00264
00265
00266 void Init();
00267
00268 void Copy(const AxAudioResourceCommandActivator& activator);
00269
00270 virtual AxActivator* Clone() const { return new AxAudioResourceCommandActivator(*this); }
00271
00272 virtual AxMenu* Activate(AxMenuController* controller, AxMenuItem* item);
00273
00274 protected:
00275 AxAudioResourceCommand m_command;
00276 };
00277
00278 #endif
00279