/*****************************************************************************
* main_inteface.cpp : Main interface
****************************************************************************
- * Copyright (C) 2000-2005 the VideoLAN team
- * $Id: wxwidgets.cpp 15731 2006-05-25 14:43:53Z zorglub $
+ * Copyright (C) 2006 the VideoLAN team
+ * $Id$
*
* Authors: Clément Stenac <zorglub@videolan.org>
*
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. *****************************************************************************/
-#include "dialogs_provider.hpp"
#include "qt4.hpp"
#include <QEvent>
+#include "dialogs_provider.hpp"
#include "dialogs/playlist.hpp"
+#include "dialogs/prefs_dialog.hpp"
+#include "dialogs/streaminfo.hpp"
+#include <QApplication>
+#include <QSignalMapper>
+#include "menus.hpp"
DialogsProvider* DialogsProvider::instance = NULL;
-DialogsProvider::DialogsProvider( intf_thread_t *_p_intf ) : QObject(),
- p_intf( _p_intf )
+DialogsProvider::DialogsProvider( intf_thread_t *_p_intf ) :
+ QObject( NULL ), p_intf( _p_intf )
{
- fprintf( stderr, "QT DP" );
+// idle_timer = new QTimer( this );
+// idle_timer->start( 0 );
+
+ fixed_timer = new QTimer( this );
+ fixed_timer->start( 150 /* milliseconds */ );
+
+ menusMapper = new QSignalMapper();
+ connect( menusMapper, SIGNAL( mapped(QObject *) ), this,
+ SLOT(menuAction( QObject *)) );
+
+ menusUpdateMapper = new QSignalMapper();
+ connect( menusUpdateMapper, SIGNAL( mapped(QObject *) ), this,
+ SLOT(menuUpdateAction( QObject *)) );
}
+
DialogsProvider::~DialogsProvider()
{
}
-
void DialogsProvider::customEvent( QEvent *event )
{
if( event->type() == DialogEvent_Type )
{
- DialogEvent *de = dynamic_cast<DialogEvent*>(event);
+ DialogEvent *de = static_cast<DialogEvent*>(event);
switch( de->i_dialog )
{
case INTF_DIALOG_FILE:
case INTF_DIALOG_VIDEOPOPUPMENU:
case INTF_DIALOG_MISCPOPUPMENU:
popupMenu( de->i_dialog ); break;
- case INTF_DIALOG_VLM:
+ case INTF_DIALOG_FILEINFO:
+ streaminfoDialog(); break;
case INTF_DIALOG_INTERACTION:
+ doInteraction( de->p_arg ); break;
+ case INTF_DIALOG_VLM:
case INTF_DIALOG_BOOKMARKS:
- case INTF_DIALOG_FILEINFO:
+ bookmarksDialog(); break;
case INTF_DIALOG_WIZARD:
default:
- fprintf( stderr, "Unimplemented dialog\n");
+ msg_Warn( p_intf, "unimplemented dialog\n" );
}
- fprintf( stderr, "Showing dialog\n");
}
}
PlaylistDialog::getInstance( p_intf )->toggleVisible();
}
+void DialogsProvider::openDialog()
+{
+ openDialog( 0 );
+}
void DialogsProvider::openDialog( int i_dialog )
{
}
+void DialogsProvider::doInteraction( intf_dialog_args_t *p_arg )
+{
+ InteractionDialog *qdialog;
+ interaction_dialog_t *p_dialog = p_arg->p_dialog;
+ switch( p_dialog->i_action )
+ {
+ case INTERACT_NEW:
+ qdialog = new InteractionDialog( p_intf, p_dialog );
+ p_dialog->p_private = (void*)qdialog;
+ qdialog->show();
+ break;
+ case INTERACT_UPDATE:
+ qdialog = (InteractionDialog*)(p_dialog->p_private);
+ if( qdialog)
+ qdialog->Update();
+ break;
+ case INTERACT_HIDE:
+ qdialog = (InteractionDialog*)(p_dialog->p_private);
+ if( qdialog )
+ qdialog->hide();
+ p_dialog->i_status = HIDDEN_DIALOG;
+ break;
+ case INTERACT_DESTROY:
+ qdialog = (InteractionDialog*)(p_dialog->p_private);
+ delete qdialog;
+ p_dialog->i_status = DESTROYED_DIALOG;
+ break;
+ }
+}
+
+void DialogsProvider::quit()
+{
+ p_intf->b_die = VLC_TRUE;
+ QApplication::quit();
+}
+
+void DialogsProvider::streaminfoDialog()
+{
+ StreamInfoDialog::getInstance( p_intf, true )->toggleVisible();
+}
+
+void DialogsProvider::streamingDialog()
+{
+}
+
void DialogsProvider::prefsDialog()
{
+ PrefsDialog::getInstance( p_intf )->toggleVisible();
}
void DialogsProvider::messagesDialog()
{
}
+void DialogsProvider::menuAction( QObject *data )
+{
+ QVLCMenu::DoAction( p_intf, data );
+}
+
+void DialogsProvider::menuUpdateAction( QObject *data )
+{
+ MenuFunc * f = qobject_cast<MenuFunc *>(data);
+ f->doFunc( p_intf );
+}
+
+void DialogsProvider::simpleOpenDialog()
+{
+}
+void DialogsProvider::bookmarksDialog()
+{
+}
+
+
+
void DialogsProvider::popupMenu( int i_dialog )
{