1
/*****************************************************************************
2
* main_interface.hpp : Main Interface
3
****************************************************************************
4
* Copyright (C) 2006-2007 the VideoLAN team
7
* Authors: Clément Stenac <zorglub@videolan.org>
8
* Jean-Baptiste Kempf <jb@videolan.org>
10
* This program is free software; you can redistribute it and/or modify
11
* it under the terms of the GNU General Public License as published by
12
* the Free Software Foundation; either version 2 of the License, or
13
* (at your option) any later version.
15
* This program is distributed in the hope that it will be useful,
16
* but WITHOUT ANY WARRANTY; without even the implied warranty of
17
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18
* GNU General Public License for more details.
20
* You should have received a copy of the GNU General Public License
21
* along with this program; if not, write to the Free Software
22
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
23
*****************************************************************************/
25
#ifndef _MAIN_INTERFACE_H_
26
#define _MAIN_INTERFACE_H_
29
#include "util/qvlcframe.hpp"
30
#include "components/preferences_widgets.hpp"
34
#include <QSystemTrayIcon>
43
class BackgroundWidget;
46
class AdvControlsWidget;
48
class FullscreenControllerWidget;
49
class SpeedControlWidget;
55
CONTROLS_HIDDEN = 0x0,
56
CONTROLS_VISIBLE = 0x1,
57
CONTROLS_ADVANCED = 0x2
60
typedef enum pl_dock_e {
67
class MainInterface : public QVLCMW
71
friend class VolumeClickHandler;
72
friend class InteractionDialog;
73
friend class PlaylistWidget;
76
MainInterface( intf_thread_t *);
77
virtual ~MainInterface();
79
/* Video requests from core */
80
void *requestVideo( vout_thread_t *p_nvout, int *pi_x,
81
int *pi_y, unsigned int *pi_width,
82
unsigned int *pi_height );
83
void releaseVideo( void * );
84
int controlVideo( void *p_window, int i_query, va_list args );
87
QSystemTrayIcon *getSysTray() { return sysTray; };
88
QMenu *getSysTrayMenu() { return systrayMenu; };
89
int getControlsVisibilityStatus();
92
QSize sizeHint() const;
94
// void resizeEvent( QResizeEvent * );
95
void dropEvent( QDropEvent *);
96
void dragEnterEvent( QDragEnterEvent * );
97
void dragMoveEvent( QDragMoveEvent * );
98
void dragLeaveEvent( QDragLeaveEvent * );
99
void closeEvent( QCloseEvent *);
103
QSystemTrayIcon *sysTray;
106
QVBoxLayout *mainLayout;
107
ControlsWidget *controls;
108
FullscreenControllerWidget *fullscreenControls;
109
QMenu *speedControlMenu;
110
SpeedControlWidget *speedControl;
112
void handleMainUi( QSettings* );
113
void askForPrivacy();
114
int privacyDialog( QList<ConfigControl *> *controls );
117
void handleSystray();
118
void createSystray();
120
void createStatusBar();
124
VideoWidget *videoWidget;
126
BackgroundWidget *bgWidget;
127
VisualSelector *visualSelector;
128
PlaylistWidget *playlistWidget;
130
bool videoIsActive; ///< Having a video now / THEMIM->hasV
131
bool videoEmbeddedFlag; ///< Want an external Video Window
132
bool playlistVisible; ///< Is the playlist visible ?
133
bool visualSelectorEnabled;
134
bool notificationEnabled; /// Systray Notifications
135
bool b_remainingTime; /* Show elapsed or remaining time */
137
int i_visualmode; ///< Visual Mode
139
bool isDocked() { return ( i_pl_dock != PL_UNDOCKED ); }
141
input_thread_t *p_input; ///< Main input associated to the playlist
148
virtual void customEvent( QEvent *);
149
virtual void keyPressEvent( QKeyEvent *);
150
virtual void wheelEvent( QWheelEvent * );
153
void undockPlaylist();
154
void dockPlaylist( pl_dock_e i_pos = PL_BOTTOM );
155
void toggleMinimalView();
156
void togglePlaylist();
157
void toggleUpdateSystrayMenu();
158
void toggleAdvanced();
159
void toggleFullScreen();
162
/* Manage the Video Functions from the vout threads */
163
void releaseVideoSlot( void * );
167
void updateOnTimer();
168
void doComponentsUpdate();
169
void setStatus( int );
171
void setName( QString );
172
void setVLCWindowsTitle( QString title = "" );
173
void setDisplayPosition( float, int, int );
174
void toggleTimeDisplay();
178
void handleSystrayClick( QSystemTrayIcon::ActivationReason );
179
void updateSystrayTooltipName( QString );
180
void updateSystrayTooltipStatus( int );
181
void showSpeedMenu( QPoint );
183
void askReleaseVideo( void * );
184
void askVideoToResize( unsigned int, unsigned int );
185
void askVideoToToggle();
186
void askBgWidgetToToggle();