Commit 9269895c authored by JP Dinger's avatar JP Dinger

Skins2: Remove need for enum, and remove switch-o-literals.

parent 4043a1ce
...@@ -17,9 +17,9 @@ ...@@ -17,9 +17,9 @@
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License along
* along with this program; if not, write to the Free Software * with this program; if not, write to the Free Software Foundation, Inc.,
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. * 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/ *****************************************************************************/
#ifndef CMD_DIALOGS_HPP #ifndef CMD_DIALOGS_HPP
...@@ -31,156 +31,63 @@ ...@@ -31,156 +31,63 @@
#include <vlc_interface.h> #include <vlc_interface.h>
template<int TYPE = 0> class CmdDialogs; #define DEFINE_DIALOGS \
DEF( ChangeSkin, showChangeSkin() ) \
// XXX use an enum instead DEF( FileSimple, showFileSimple( true ) ) \
typedef CmdDialogs<1> CmdDlgChangeSkin; DEF( File, showFile( true ) ) \
typedef CmdDialogs<2> CmdDlgFileSimple; DEF( Disc, showDisc( true ) ) \
typedef CmdDialogs<3> CmdDlgFile; DEF( Net, showNet( true ) ) \
typedef CmdDialogs<4> CmdDlgDisc; DEF( Messages, showMessages() ) \
typedef CmdDialogs<5> CmdDlgNet; DEF( Prefs, showPrefs() ) \
typedef CmdDialogs<6> CmdDlgMessages; DEF( FileInfo, showFileInfo() ) \
typedef CmdDialogs<7> CmdDlgPrefs; \
typedef CmdDialogs<8> CmdDlgFileInfo; DEF( Add, showFile( false ) ) \
DEF( PlaylistLoad, showPlaylistLoad() ) \
typedef CmdDialogs<11> CmdDlgAdd; DEF( PlaylistSave, showPlaylistSave() ) \
typedef CmdDialogs<12> CmdDlgPlaylistLoad; DEF( Directory, showDirectory( true ) ) \
typedef CmdDialogs<13> CmdDlgPlaylistSave; DEF( StreamingWizard, showStreamingWizard() ) \
typedef CmdDialogs<14> CmdDlgDirectory; DEF( Playlist, showPlaylist() ) \
typedef CmdDialogs<15> CmdDlgStreamingWizard; \
typedef CmdDialogs<16> CmdDlgPlaytreeLoad; DEF( ShowPopupMenu, showPopupMenu(true,INTF_DIALOG_POPUPMENU) ) \
typedef CmdDialogs<17> CmdDlgPlaytreeSave; DEF( HidePopupMenu, showPopupMenu(false,INTF_DIALOG_POPUPMENU) ) \
typedef CmdDialogs<18> CmdDlgPlaylist; DEF( ShowAudioPopupMenu, showPopupMenu(true,INTF_DIALOG_AUDIOPOPUPMENU) ) \
DEF( HideAudioPopupMenu, showPopupMenu(false,INTF_DIALOG_AUDIOPOPUPMENU) ) \
typedef CmdDialogs<30> CmdDlgShowPopupMenu; DEF( ShowVideoPopupMenu, showPopupMenu(true,INTF_DIALOG_VIDEOPOPUPMENU) ) \
typedef CmdDialogs<31> CmdDlgHidePopupMenu; DEF( HideVideoPopupMenu, showPopupMenu(false,INTF_DIALOG_VIDEOPOPUPMENU) ) \
typedef CmdDialogs<32> CmdDlgShowAudioPopupMenu; DEF( ShowMiscPopupMenu, showPopupMenu(true,INTF_DIALOG_MISCPOPUPMENU) ) \
typedef CmdDialogs<33> CmdDlgHideAudioPopupMenu; DEF( HideMiscPopupMenu, showPopupMenu(false,INTF_DIALOG_MISCPOPUPMENU) )
typedef CmdDialogs<34> CmdDlgShowVideoPopupMenu;
typedef CmdDialogs<35> CmdDlgHideVideoPopupMenu; #define DEF( a, c ) \
typedef CmdDialogs<36> CmdDlgShowMiscPopupMenu; class CmdDlg##a: public CmdGeneric \
typedef CmdDialogs<37> CmdDlgHideMiscPopupMenu; { public: \
CmdDlg##a( intf_thread_t *pIntf ): CmdGeneric( pIntf ) { } \
virtual ~CmdDlg##a() { } \
/// Generic "Open dialog" command virtual void execute() \
template<int TYPE> { \
class CmdDialogs: public CmdGeneric Dialogs *dlg = Dialogs::instance( getIntf() ); \
{ if( dlg ) dlg->c; \
public: } \
CmdDialogs( intf_thread_t *pIntf ): CmdGeneric( pIntf ) {} virtual string getType() const { return #a" dialog"; } \
virtual ~CmdDialogs() {}
/// This method does the real job of the command
virtual void execute()
{
/// Get the dialogs provider
Dialogs *pDialogs = Dialogs::instance( getIntf() );
if( pDialogs == NULL )
{
return;
}
switch( TYPE )
{
case 1:
pDialogs->showChangeSkin();
break;
case 2:
pDialogs->showFileSimple( true );
break;
case 3:
pDialogs->showFile( true );
break;
case 4:
pDialogs->showDisc( true );
break;
case 5:
pDialogs->showNet( true );
break;
case 6:
pDialogs->showMessages();
break;
case 7:
pDialogs->showPrefs();
break;
case 8:
pDialogs->showFileInfo();
break;
case 11:
pDialogs->showFile( false );
break;
case 12:
pDialogs->showPlaylistLoad();
break;
case 13:
pDialogs->showPlaylistSave();
break;
case 14:
pDialogs->showDirectory( true );
break;
case 15:
pDialogs->showStreamingWizard();
break;
case 18:
pDialogs->showPlaylist();
break;
case 30:
pDialogs->showPopupMenu( true, INTF_DIALOG_POPUPMENU );
break;
case 31:
pDialogs->showPopupMenu( false, INTF_DIALOG_POPUPMENU );
break;
case 32:
pDialogs->showPopupMenu( true, INTF_DIALOG_AUDIOPOPUPMENU );
break;
case 33:
pDialogs->showPopupMenu( false,INTF_DIALOG_AUDIOPOPUPMENU );
break;
case 34:
pDialogs->showPopupMenu( true, INTF_DIALOG_VIDEOPOPUPMENU );
break;
case 35:
pDialogs->showPopupMenu( false,INTF_DIALOG_VIDEOPOPUPMENU );
break;
case 36:
pDialogs->showPopupMenu( true, INTF_DIALOG_MISCPOPUPMENU );
break;
case 37:
pDialogs->showPopupMenu( false,INTF_DIALOG_MISCPOPUPMENU );
break;
default:
msg_Warn( getIntf(), "unknown dialog type" );
break;
}
}
/// Return the type of the command
virtual string getType() const { return "dialog"; }
}; };
DEFINE_DIALOGS
class CmdInteraction: public CmdGeneric class CmdInteraction: public CmdGeneric
{ {
public: public:
CmdInteraction( intf_thread_t *pIntf, interaction_dialog_t * CmdInteraction( intf_thread_t *pIntf, interaction_dialog_t * p_dialog )
p_dialog ): CmdGeneric( pIntf ), m_pDialog( p_dialog ) : CmdGeneric( pIntf ), m_pDialog( p_dialog ) { }
{} virtual ~CmdInteraction() { }
virtual ~CmdInteraction() {}
virtual void execute()
/// This method does the real job of the command {
virtual void execute() Dialogs *pDialogs = Dialogs::instance( getIntf() );
{ if( pDialogs != NULL )
/// Get the dialogs provider
Dialogs *pDialogs = Dialogs::instance( getIntf() );
if( pDialogs == NULL )
{
return;
}
pDialogs->showInteraction( m_pDialog ); pDialogs->showInteraction( m_pDialog );
} }
virtual string getType() const { return "interaction"; }
virtual string getType() const { return "interaction"; } private:
private: interaction_dialog_t *m_pDialog;
interaction_dialog_t *m_pDialog;
}; };
#endif #endif
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment