X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fgui%2Fqt4%2Fcomponents%2Fcontroller.hpp;h=4b43d56175530fe738a210c61d249ededa31223b;hb=e2c1890d2aae27eee323bd3e081f05b465a4ffff;hp=f6d855379f1f5cac9584487ff16a9b901797ffe4;hpb=da3ae9e4ea4b7e9f14e600cfe01c0747811dad44;p=vlc diff --git a/modules/gui/qt4/components/controller.hpp b/modules/gui/qt4/components/controller.hpp index f6d855379f..4b43d56175 100644 --- a/modules/gui/qt4/components/controller.hpp +++ b/modules/gui/qt4/components/controller.hpp @@ -1,12 +1,10 @@ /***************************************************************************** - * interface_widgets.hpp : Custom widgets for the main interface + * Controller.hpp : Controller for the main interface **************************************************************************** - * Copyright (C) 2006 the VideoLAN team + * Copyright (C) 2006-2008 the VideoLAN team * $Id$ * - * Authors: Clément Stenac - * Jean-Baptiste Kempf - * Rafaël Carré + * Authors: 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 @@ -23,40 +21,43 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. *****************************************************************************/ -#ifndef _CONTROLLER_H_ -#define _CONTROLLER_H_ +#ifndef QVLC_CONTROLLER_H_ +#define QVLC_CONTROLLER_H_ #ifdef HAVE_CONFIG_H # include "config.h" #endif -#include -#include - #include "qt4.hpp" -#include "main_interface.hpp" -#include "input_manager.hpp" -#include #include -#include +#include -#define I_PLAY_TOOLTIP N_("Play\nIf the playlist is empty, open a media") +#define MAIN_TB1_DEFAULT "64;39;64;38;65" +#define MAIN_TB2_DEFAULT "0-2;64;3;1;4;64;7;10;9;64-4;37;65;35-4" +#define ADV_TB_DEFAULT "12;11;13;14" +#define INPT_TB_DEFAULT "5-1;15-1;33;6-1" +#define FSC_TB_DEFAULT "0-2;64;3;1;4;64;37;64;38;64;8;65;35-4;34" + +#define I_PLAY_TOOLTIP N_("Play\nIf the playlist is empty, open a medium") class QPixmap; class QLabel; + class QGridLayout; +class QHBoxLayout; +class QBoxLayout; -class InputSlider; class QAbstractSlider; - class QAbstractButton; +class InputSlider; +class QToolButton; class VolumeClickHandler; -class QSignalMapper; +class WidgetListing; +class QSignalMapper; class QTimer; -class WidgetListing; typedef enum buttonType_e { @@ -76,12 +77,16 @@ typedef enum buttonType_e ATOB_BUTTON, FRAME_BUTTON, REVERSE_BUTTON, + SKIP_BACK_BUTTON, + SKIP_FW_BUTTON, + QUIT_BUTTON, BUTTON_MAX, SPLITTER = 0x20, INPUT_SLIDER, - VOLUME, TIME_LABEL, + VOLUME, + VOLUME_SPECIAL, MENU_BUTTONS, TELETEXT_BUTTONS, ADVANCED_CONTROLLER, @@ -92,42 +97,26 @@ typedef enum buttonType_e WIDGET_MAX, } buttonType_e; -#include -static const QString nameL[BUTTON_MAX] = { "Play", "Stop", "Open", - "Previous", "Next", "Slower", "Faster", "Fullscreen", "De-Fullscreen", - "Extended panel", "Playlist", "Snapshot", "Record", "A->B Loop", - "Frame By Frame", "Reverse" }; -static const QString tooltipL[BUTTON_MAX] = { I_PLAY_TOOLTIP, - _("Stop playback"), _("Open a media"), - _("Previous media in the playlist"), - _("Next media in the playlist"), _("Slower"), _("Faster"), - _("Toggle the video in fullscreen"), _("Toggle the video out fullscreen"), - _("Show extended settings" ), _( "Show playlist" ), _( "Take a snapshot" ), - _( "Record" ), _( "Loop from point A to point B continuously." ), - _("Frame by frame"), _("Reverse") }; -static const QString iconL[BUTTON_MAX] ={ ":/play_b", ":/stop_b", "", +static const char* nameL[BUTTON_MAX] = { N_("Play"), N_("Stop"), N_("Open"), + N_("Previous"), N_("Next"), N_("Slower"), N_("Faster"), N_("Fullscreen"), + N_("De-Fullscreen"), N_("Extended panel"), N_("Playlist"), N_("Snapshot"), + N_("Record"), N_("A->B Loop"), N_("Frame By Frame"), N_("Trickplay Reverse"), + N_("Step backward" ), N_("Step forward"), N_("Quit") }; +static const char* tooltipL[BUTTON_MAX] = { I_PLAY_TOOLTIP, + N_("Stop playback"), N_("Open a medium"), + N_("Previous media in the playlist"), + N_("Next media in the playlist"), N_("Slower"), N_("Faster"), + N_("Toggle the video in fullscreen"), N_("Toggle the video out fullscreen"), + N_("Show extended settings" ), N_( "Show playlist" ), + N_( "Take a snapshot" ), N_( "Record" ), + N_( "Loop from point A to point B continuously." ), N_("Frame by frame"), + N_("Reverse"), N_("Step backward"), N_("Step forward"), N_("Quit") }; +static const QString iconL[BUTTON_MAX] ={ ":/play_b", ":/stop_b", ":/eject", ":/previous_b", ":/next_b", ":/slower", ":/faster", ":/fullscreen", ":/defullscreen", ":/extended", ":/playlist", ":/snapshot", ":/record", - ":/atob_nob", ":/frame", ":/reverse" }; - -typedef enum actionType_e -{ - PLAY_ACTION, - STOP_ACTION, - PREVIOUS_ACTION, - NEXT_ACTION, - SLOWER_ACTION, - FASTER_ACTION, - FULLSCREEN_ACTION, - EXTENDED_ACTION, - PLAYLIST_ACTION, - SNAPSHOT_ACTION, - RECORD_ACTION, - FRAME_ACTION, - ATOB_ACTION, - REVERSE_ACTION, -} actionType_e; + ":/atob_nob", ":/frame", ":/reverse", ":/skip_back", ":/skip_fw", + ":/clear" }; enum { @@ -137,6 +126,7 @@ enum WIDGET_SHINY = 0x4, }; +class AdvControlsWidget; class AbstractController : public QFrame { friend class WidgetListing; /* For ToolBar Edition HACKS */ @@ -154,7 +144,7 @@ protected: AdvControlsWidget *advControls; - void parseAndCreate( QString config, QBoxLayout *controlLayout ); + void parseAndCreate( const QString& config, QBoxLayout *controlLayout ); virtual void createAndAddWidget( QBoxLayout *controlLayout, int i_index, buttonType_e i_type, int i_option ); @@ -162,88 +152,18 @@ protected: QWidget *createWidget( buttonType_e, int options = WIDGET_NORMAL ); private: static void setupButton( QAbstractButton * ); - QWidget *discFrame(); - QWidget *telexFrame(); - + QFrame *discFrame(); + QFrame *telexFrame(); + void applyAttributes( QToolButton *, bool b_flat, bool b_big ); protected slots: - virtual void doAction( int ); - -protected slots: - void play(); - void stop(); - void prev(); - void next(); - void fullscreen(); - void extSettings(); - void faster(); - void slower(); - void reverse(); - void playlist(); - void snapshot(); - void record(); - void frame(); - virtual void setStatus( int ); signals: void inputExists( bool ); /// This might be usefull in the IM ? void inputPlaying( bool ); /// This might be usefull in the IM ? void inputIsRecordable( bool ); /// same ? -}; - -/** - * SPECIAL Widgets that are a bit more than just a ToolButton - * and have an icon/behaviour that changes depending on the context: - * - playButton - * - A->B Button - * - Teletext group buttons - * - Sound Widget group - **/ -class PlayButton : public QToolButton -{ - Q_OBJECT -private slots: - void updateButton( bool ); -}; - -class AtoB_Button : public QToolButton -{ - Q_OBJECT -private slots: - void setIcons( bool, bool ); -}; - -class TeletextController : public QWidget -{ - Q_OBJECT - friend class AbstractController; -private: - QToolButton *telexTransparent, *telexOn; - QSpinBox *telexPage; - -private slots: - void enableTeletextButtons( bool ); - void toggleTeletextTransparency( bool ); -}; - -class SoundWidget : public QWidget -{ - Q_OBJECT - friend class VolumeClickHandler; - -public: - SoundWidget( QWidget *parent, intf_thread_t *_p_i, bool ); - -private: - intf_thread_t *p_intf; - QLabel *volMuteLabel; - QAbstractSlider *volumeSlider; - VolumeClickHandler *hVolLabel; - bool b_my_volume; - -protected slots: - void updateVolume( int ); - void updateVolume( void ); + void inputIsTrickPlayable( bool ); /// same ? + void sizeChanged(); }; /* Advanced Button Bar */ @@ -313,19 +233,18 @@ public: virtual ~FullscreenControllerWidget(); /* Vout */ - vout_thread_t *p_vout; - void attachVout( vout_thread_t *p_vout ); - void detachVout(); void fullscreenChanged( vout_thread_t *, bool b_fs, int i_timeout ); + void mouseChanged( vout_thread_t *, int i_mousex, int i_mousey ); - int i_mouse_last_move_x; - int i_mouse_last_move_y; +public slots: + void setVoutList( vout_thread_t **, int ); protected: friend class MainInterface; virtual void mouseMoveEvent( QMouseEvent *event ); virtual void mousePressEvent( QMouseEvent *event ); + virtual void mouseReleaseEvent( QMouseEvent *event ); virtual void enterEvent( QEvent *event ); virtual void leaveEvent( QEvent *event ); virtual void keyPressEvent( QKeyEvent *event ); @@ -335,6 +254,7 @@ private slots: void planHideFSC(); void hideFSC(); void slowHideFSC(); + void centerFSC( int ); private: virtual void customEvent( QEvent *event ); @@ -349,15 +269,21 @@ private: int i_mouse_last_x, i_mouse_last_y; bool b_mouse_over; int i_screennumber; + QRect screenRes; #ifdef WIN32TRICK bool b_fscHidden; #endif + /* List of vouts currently tracked */ + QList vout; + /* Shared variable between FSC and VLC (protected by a lock) */ vlc_mutex_t lock; bool b_fullscreen; int i_hide_timeout; /* FSC hiding timeout, same as mouse hiding timeout */ + int i_mouse_last_move_x; + int i_mouse_last_move_y; }; #endif