include/ax_resource/ax_module_audio.h

Go to the documentation of this file.
00001 
00002 // Name:        ax_module_audio.h
00003 // Purpose:     Audio module classes
00004 // Author:      Julian Smart
00005 // Modified by:
00006 // Created:     2009-03-20
00007 // RCS-ID:
00008 // Copyright:   (c) Julian Smart
00009 // Licence:     New BSD License
00011 
00012 #ifndef _AX_MODULE_AUDIO_H_
00013 #define _AX_MODULE_AUDIO_H_
00014 
00015 /*
00016  * Includes
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 // Constructors
00043 
00044     AxAudioResource(const AxAudioResource& resource) { Init(); Copy(resource); }
00045     AxAudioResource() { Init(); }
00046     ~AxAudioResource();
00047 
00048 // Operations
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 // Constructors
00084 
00085     AxAudioView() { Init(); }
00086     ~AxAudioView() {}
00087 
00088 // Operations
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 // Overridables
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     // Called just before the frame is closed. Return false vetoes
00155     // the frame/app close.
00156     virtual bool OnCloseMainWindow() { return true; }
00157 
00158     // Allows app to search amongst its own objects. Call AxResourceLibrary::AddSearchItem
00159     // for each item.
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 // Accessors
00176 
00177 protected:
00178 };
00179 
00188 class AxAudioResourceActivator: public AxResourceActivator
00189 {
00190 public:
00191     
00192     DECLARE_DYNAMIC_CLASS( AxAudioResourceActivator )
00193 
00194 public:
00195 // Constructors
00196 
00197     AxAudioResourceActivator() { Init(); }
00198     AxAudioResourceActivator(const AxAudioResourceActivator& activator) { Init(); Copy(activator); }
00199 
00200     AxAudioResourceActivator(AxResourceLibrary* library, AxResource* resource);
00201     ~AxAudioResourceActivator() {}
00202 
00203 // Operations
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             // At track level
00240             
00241             AxAudioResourceCommandPlay,
00242             AxAudioResourceCommandStop,
00243             AxAudioResourceCommandShowDetails,
00244             
00245             // At album level
00246             
00247             AxAudioResourceCommandAlbumPlayAll,
00248             AxAudioResourceCommandAlbumStop,
00249             AxAudioResourceCommandAlbumShowDetails,
00250             AxAudioResourceCommandAlbumNextTrack,
00251             AxAudioResourceCommandAlbumPreviousTrack
00252             
00253     } AxAudioResourceCommand;
00254 
00255 public:
00256 // Constructors
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 // Operations
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     // _AX_MODULE_AUDIO_H_

Generated on Wed May 6 19:20:18 2009 for AxTk by  doxygen 1.5.1