X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fgui%2Fqt4%2Fqt4.hpp;h=ef2a7f574fe2b994a483fb79e95e3c95def06db0;hb=7989f86c90d0a65ff82e790a6a88729575a2669f;hp=3c2de020e581f6bbacd17fa3f6fc959a7635e3ff;hpb=f29d7dfebbb783a98122047f4c0510dc6b8542aa;p=vlc diff --git a/modules/gui/qt4/qt4.hpp b/modules/gui/qt4/qt4.hpp index 3c2de020e5..ef2a7f574f 100644 --- a/modules/gui/qt4/qt4.hpp +++ b/modules/gui/qt4/qt4.hpp @@ -1,10 +1,11 @@ /***************************************************************************** * qt4.hpp : QT4 interface **************************************************************************** - * Copyright (C) 2006-2007 the VideoLAN team + * Copyright (C) 2006-2008 the VideoLAN team * $Id$ * * Authors: Clément Stenac + * Jean-Baptiste Kempf * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -24,53 +25,74 @@ #ifndef _QVLC_H_ #define _QVLC_H_ -#include +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include #include #include #include -#define QT43 ( QT_VERSION >= 0x040300 ) +#define HAS_QT43 ( QT_VERSION >= 0x040300 ) -/* Add define for duration, VLC_META_ENGINE doesn't include it */ -#define VLC_META_ENGINE_DURATION 0x00000002 -#define VLC_META_DURATION N_("Duration") +enum { + QT_NORMAL_MODE = 0, + QT_ALWAYS_VIDEO_MODE, + QT_MINIMAL_MODE +}; + +enum { + DialogEventType = 0, + IMEventType = 100, + PLEventType = 200 +}; +enum { + DialogEvent_Type = QEvent::User + DialogEventType + 1, + //PLUndockEvent_Type = QEvent::User + DialogEventType + 2; + //PLDockEvent_Type = QEvent::User + DialogEventType + 3; + SetVideoOnTopEvent_Type = QEvent::User + DialogEventType + 4, +}; class QApplication; class QMenu; class MainInterface; class DialogsProvider; class VideoWidget; +class QSettings; struct intf_sys_t { + vlc_thread_t thread; QApplication *p_app; MainInterface *p_mi; - playlist_t *p_playlist; - msg_subscription_t *p_sub; ///< Subscription to the message bank - VideoWidget *p_video; - int i_saved_height, i_saved_width; + QSettings *mainSettings; + + bool b_isDialogProvider; + + playlist_t *p_playlist; + const char *psz_filepath; QMenu * p_popup_menu; }; #define THEPL p_intf->p_sys->p_playlist -#define QPL_LOCK vlc_mutex_lock( &THEPL->object_lock ); -#define QPL_UNLOCK vlc_mutex_unlock( &THEPL->object_lock ); +#define QPL_LOCK vlc_object_lock( THEPL ); +#define QPL_UNLOCK vlc_object_unlock( THEPL ); #define THEDP DialogsProvider::getInstance() #define THEMIM MainInputManager::getInstance( p_intf ) #define qfu( i ) QString::fromUtf8( i ) #define qtr( i ) QString::fromUtf8( _(i) ) -#define qtu( i ) i.toUtf8().data() -#define qta( i ) i.toAscii().data() +#define qtu( i ) (i).toUtf8().data() +#define qta( i ) (i).toAscii().data() #define CONNECT( a, b, c, d ) connect( a, SIGNAL( b ), c, SLOT(d) ) #define BUTTONACT( b, a ) connect( b, SIGNAL( clicked() ), this, SLOT(a) ) -#define ON_TIMEOUT( act ) CONNECT( THEDP->fixed_timer, timeout(), this, act ) #define BUTTON_SET( button, text, tooltip ) \ button->setText( text ); \ @@ -82,7 +104,7 @@ struct intf_sys_t #define BUTTON_SET_IMG( button, text, image, tooltip ) \ BUTTON_SET( button, text, tooltip ); \ - button->setIcon( QIcon( ":/pixmaps/"#image ) ); + button->setIcon( QIcon( ":/"#image ) ); #define BUTTON_SET_ACT_I( button, text, image, tooltip, thisslot ) \ BUTTON_SET_IMG( button, text, image, tooltip ); \ @@ -93,37 +115,36 @@ struct intf_sys_t #define TOGGLEV( x ) { if( x->isVisible() ) x->hide(); \ else x->show(); } -static int DialogEvent_Type = QEvent::User + 1; -static int PLUndockEvent_Type = QEvent::User + 2; -static int PLDockEvent_Type = QEvent::User + 3; -static int SetVideoOnTopEvent_Type = QEvent::User + 4; +#if HAS_QT43 + #define setLayoutMargins( a, b, c, d, e) setContentsMargins( a, b, c, d ) +#else + #define setLayoutMargins( a, b, c, d, e) setMargin( e ) +#endif + +#define getSettings() p_intf->p_sys->mainSettings + -class DialogEvent : public QEvent +#include +/* Replace separators on Windows because Qt is always using / */ +static inline QString toNativeSeparators( QString s ) { -public: - DialogEvent( int _i_dialog, int _i_arg, intf_dialog_args_t *_p_arg ) : - QEvent( (QEvent::Type)(DialogEvent_Type) ) +#ifdef WIN32 + for (int i=0; i<(int)s.length(); i++) { - i_dialog = _i_dialog; - i_arg = _i_arg; - p_arg = _p_arg; - }; - virtual ~DialogEvent() {}; - - int i_arg, i_dialog; - intf_dialog_args_t *p_arg; -}; + if (s[i] == QLatin1Char('/')) + s[i] = QLatin1Char('\\'); + } +#endif + return s; +} -/* Ugly to put it here, but don't want more files ... */ -#if 0 -#include -class BasePlaylistWidget : public QFrame +static inline QString removeTrailingSlash( QString s ) { -public: - BasePlaylistWidget( intf_thread_t *_p_i ) : p_intf( _p_i) {}; - virtual ~BasePlaylistWidget() {}; -protected: - intf_thread_t *p_intf; -}; -#endif + if( ( s.length() > 1 ) && ( s[s.length()-1] == QLatin1Char( '/' ) ) ) + s.remove( s.length() - 1, 1 ); + return s; +} + +#define toNativeSepNoSlash( a ) toNativeSeparators( removeTrailingSlash( a ) ) + #endif