]> git.sesse.net Git - vlc/blob - modules/gui/qt4/main_interface.hpp
Some size fixes
[vlc] / modules / gui / qt4 / main_interface.hpp
1 /*****************************************************************************
2  * main_interface.hpp : Main Interface
3  ****************************************************************************
4  * Copyright (C) 2006 the VideoLAN team
5  * $Id$
6  *
7  * Authors: ClĂ©ment Stenac <zorglub@videolan.org>
8  *
9  * This program is free software; you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License as published by
11  * the Free Software Foundation; either version 2 of the License, or
12  * (at your option) any later version.
13  *
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17  * GNU General Public License for more details.
18  *
19  * You should have received a copy of the GNU General Public License
20  * along with this program; if not, write to the Free Software
21  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. *****************************************************************************/
22
23 #ifndef _MAIN_INTERFACE_H_
24 #define _MAIN_INTERFACE_H_
25
26 #include <vlc/intf.h>
27 #include <vlc/aout.h>
28 #include "ui/main_interface.h"
29 #include "util/qvlcframe.hpp"
30
31 #include <QSize>
32
33 class QSettings;
34 class QCloseEvent;
35 class QKeyEvent;
36 class QLabel;
37
38 class InputManager;
39 class InputSlider;
40 class VideoWidget;
41 class BackgroundWidget;
42 class PlaylistWidget;
43 class VolumeClickHandler;
44 class VisualSelector;
45
46 class MainInterface : public QVLCMW
47 {
48     Q_OBJECT;
49 public:
50     MainInterface( intf_thread_t *);
51     virtual ~MainInterface();
52
53
54     void *requestVideo( vout_thread_t *p_nvout, int *pi_x,
55                         int *pi_y, unsigned int *pi_width,
56                         unsigned int *pi_height );
57     void releaseVideo( void *);
58     int controlVideo( void *p_window, int i_query, va_list args );
59 protected:
60     void resizeEvent( QResizeEvent * );
61     void closeEvent( QCloseEvent *);
62     Ui::MainInterfaceUI ui;
63     friend class VolumeClickHandler;
64 private:
65     QSettings *settings;
66     QSize mainSize, addSize;
67
68     bool need_components_update;
69     void calculateInterfaceSize();
70     void handleMainUi( QSettings* );
71     void doComponentsUpdate();
72
73     /* Video */
74     VideoWidget         *videoWidget;
75     virtual void keyPressEvent( QKeyEvent *);
76
77     BackgroundWidget    *bgWidget;
78     VisualSelector      *visualSelector;
79     PlaylistWidget      *playlistWidget;
80
81     bool                 playlistEmbeddedFlag;
82     bool                 videoEmbeddedFlag;
83
84     InputManager        *main_input_manager;
85     InputSlider         *slider;
86     input_thread_t      *p_input;    ///< Main input associated to the playlist
87
88     QLabel              *timeLabel;
89     QLabel              *nameLabel;
90 private slots:
91     void setStatus( int );
92     void setName( QString );
93     void setDisplay( float, int, int );
94     void updateOnTimer();
95     void play();
96     void stop();
97     void prev();
98     void next();
99     void playlist();
100     void updateVolume( int sliderVolume );
101 };
102
103
104 class VolumeClickHandler : public QObject
105 {
106 public:
107     VolumeClickHandler( MainInterface *_m ) :QObject(_m) {m = _m; }
108     virtual ~VolumeClickHandler() {};
109     bool eventFilter( QObject *obj, QEvent *e )
110     {
111         if (e->type() == QEvent::MouseButtonPress )
112         {
113             if( obj->objectName() == "volLowLabel" )
114             {
115                 m->ui.volumeSlider->setValue( 0 );
116             }
117             else
118                 m->ui.volumeSlider->setValue( 100 );
119             return true;
120         }
121         return false;
122     }
123 private:
124     MainInterface *m;
125 };
126
127 #endif