X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fgui%2Fqt4%2Fqt4.hpp;h=6c42a73e57f40b4fe82585b9acd6a7258cced9dc;hb=c21f9fb09f669d1777b2a8b177c9a7068af4f147;hp=34a5d4a83efa56610cfcdd98c903036107d7265f;hpb=1bf74fe7327bbd6240fb9a09383392b155cdd2df;p=vlc diff --git a/modules/gui/qt4/qt4.hpp b/modules/gui/qt4/qt4.hpp index 34a5d4a83e..6c42a73e57 100644 --- a/modules/gui/qt4/qt4.hpp +++ b/modules/gui/qt4/qt4.hpp @@ -1,10 +1,11 @@ /***************************************************************************** * qt4.hpp : QT4 interface **************************************************************************** - * Copyright (C) 2000-2005 the VideoLAN team - * $Id: wxwidgets.cpp 15731 2006-05-25 14:43:53Z zorglub $ + * Copyright (C) 2006-2009 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 @@ -18,43 +19,114 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. *****************************************************************************/ + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. + *****************************************************************************/ -#ifndef _QVLC_H_ -#define _QVLC_H_ +#ifndef QVLC_H_ +#define QVLC_H_ -#include -#include -#include +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include /* VLC_COMMON_MEMBERS for vlc_interface.h */ +#include /* intf_thread_t */ +#include /* playlist_t */ +#include /* AOUT_VOLUME_ */ + +#define QT_NO_CAST_TO_ASCII +#include + +#if ( QT_VERSION < 0x040400 ) +# error Update your Qt version to at least 4.4.0 +#endif +#if QT_VERSION == 0x040500 +# error Please update Qt version to 4.5.1. 4.5.0 is too buggy +#endif + +#define HAS_QT45 ( QT_VERSION >= 0x040500 ) -class QApplication; +enum { + DialogEventType = 0, + IMEventType = 100, + PLEventType = 200, + MsgEventType = 300, +}; + +class QVLCApp; +class QMenu; class MainInterface; -class DialogsProvider; +class QSettings; struct intf_sys_t { - QApplication *p_app; - MainInterface *p_mi; + vlc_thread_t thread; + + QVLCApp *p_app; /* Main Qt Application */ + MainInterface *p_mi; /* Main Interface, NULL if DialogProvider Mode */ + + QSettings *mainSettings; /* Qt State settings not messing main VLC ones */ + + bool b_isDialogProvider; /* Qt mode or Skins mode */ + + int i_screenHeight; /* Detection of Small screens */ + + QString filepath; /* Last path used in dialogs */ - msg_subscription_t *p_sub; ///< Subscription to the message bank }; -static int DialogEvent_Type = QEvent::User + 1; +#define THEPL pl_Get(p_intf) +#define QPL_LOCK playlist_Lock( THEPL ); +#define QPL_UNLOCK playlist_Unlock( THEPL ); + +#define THEDP DialogsProvider::getInstance() +#define THEMIM MainInputManager::getInstance( p_intf ) +#define THEAM ActionsManager::getInstance( p_intf ) + +#define qfu( i ) QString::fromUtf8( i ) +#define qtr( i ) QString::fromUtf8( vlc_gettext(i) ) +#define qtu( i ) ((i).toUtf8().constData()) + +#define CONNECT( a, b, c, d ) \ + connect( a, SIGNAL( b ), c, SLOT(d) ) +#define DCONNECT( a, b, c, d ) \ + connect( a, SIGNAL( b ), c, SLOT(d), Qt::DirectConnection ) +#define BUTTONACT( b, a ) connect( b, SIGNAL( clicked() ), this, SLOT(a) ) + +#define BUTTON_SET( button, text, tooltip ) \ + button->setText( text ); \ + button->setToolTip( tooltip ); + +#define BUTTON_SET_ACT( button, text, tooltip, thisslot ) \ + BUTTON_SET( button, text, tooltip ); \ + BUTTONACT( button, thisslot ); + +#define BUTTON_SET_IMG( button, text, image, tooltip ) \ + BUTTON_SET( button, text, tooltip ); \ + button->setIcon( QIcon( ":/"#image ) ); -class DialogEvent : public QEvent +#define BUTTON_SET_ACT_I( button, text, image, tooltip, thisslot ) \ + BUTTON_SET_IMG( button, text, image, tooltip ); \ + BUTTONACT( button, thisslot ); + +#define VISIBLE(i) (i && i->isVisible()) + +#define TOGGLEV( x ) { if( x->isVisible() ) x->hide(); \ + else x->show(); } + +#define getSettings() p_intf->p_sys->mainSettings + +#define QT_VOLUME_DEFAULT AOUT_VOLUME_DEFAULT +#define QT_VOLUME_MAX (AOUT_VOLUME_DEFAULT * 2) + +static inline QString QVLCUserDir( vlc_userdir_t type ) { -public: - DialogEvent( int _i_dialog, int _i_arg, intf_dialog_args_t *_p_arg ) : - QEvent( (QEvent::Type)(DialogEvent_Type) ) - { - 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; -}; + char *dir = config_GetUserDir( type ); + if( !dir ) + return ""; + QString res = qfu( dir ); + free( dir ); + return res; +} #endif