Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc-1.1
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
videolan
vlc-1.1
Commits
5aebc3b8
Commit
5aebc3b8
authored
Aug 31, 2007
by
Jean-Baptiste Kempf
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Qt4 - Main Interface: Advanced buttons are correctly integrated, cosmetic,
cleanup and fixes.
parent
ac443292
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
444 additions
and
360 deletions
+444
-360
modules/gui/qt4/components/interface_widgets.cpp
modules/gui/qt4/components/interface_widgets.cpp
+110
-37
modules/gui/qt4/components/interface_widgets.hpp
modules/gui/qt4/components/interface_widgets.hpp
+17
-9
modules/gui/qt4/main_interface.cpp
modules/gui/qt4/main_interface.cpp
+295
-292
modules/gui/qt4/main_interface.hpp
modules/gui/qt4/main_interface.hpp
+22
-22
No files found.
modules/gui/qt4/components/interface_widgets.cpp
View file @
5aebc3b8
...
...
@@ -209,27 +209,54 @@ void VisualSelector::next()
}
/**********************************************************************
*
More
controls
*
TEH
controls
**********************************************************************/
#define setupSmallButton( aButton ){ \
aButton->setMaximumSize( QSize( 26, 26 ) ); \
aButton->setMinimumSize( QSize( 26, 26 ) ); \
aButton->setIconSize( QSize( 20, 20 ) ); }
AdvControlsWidget
::
AdvControlsWidget
(
intf_thread_t
*
_p_i
)
:
QFrame
(
NULL
),
p_intf
(
_p_i
)
{
QHBoxLayout
*
layout
=
new
QHBoxLayout
(
this
);
layout
->
setMargin
(
0
);
QHBoxLayout
*
advLayout
=
new
QHBoxLayout
(
this
);
advLayout
->
setMargin
(
0
);
advLayout
->
setSpacing
(
0
);
normalButton
=
new
QPushButton
(
"N"
);
BUTTON_SET_ACT
(
normalButton
,
"N"
,
qtr
(
"Normal rate"
),
normal
()
);
layout
->
addWidget
(
normalButton
);
normalButton
->
setMaximumWidth
(
35
);
layout
->
addItem
(
new
QSpacerItem
(
100
,
20
,
QSizePolicy
::
Expanding
,
QSizePolicy
::
Minimum
)
);
/* FIXME A to B function */
ABButton
=
new
QPushButton
(
"AB"
);
ABButton
->
setMaximumSize
(
QSize
(
26
,
26
)
);
ABButton
->
setIconSize
(
QSize
(
20
,
20
)
);
advLayout
->
addWidget
(
ABButton
);
BUTTON_SET_ACT
(
ABButton
,
"AB"
,
qtr
(
"A to B"
),
normal
()
);
snapshotButton
=
new
QPushButton
(
"S"
);
snapshotButton
->
setMaximumSize
(
QSize
(
26
,
26
)
);
snapshotButton
->
setIconSize
(
QSize
(
20
,
20
)
);
advLayout
->
addWidget
(
snapshotButton
);
BUTTON_SET_ACT
(
snapshotButton
,
"S"
,
qtr
(
"Take a snapshot"
),
snapshot
()
);
layout
->
addWidget
(
snapshotButton
);
snapshotButton
->
setMaximumWidth
(
35
);
//FIXME Frame by frame function
frameButton
=
new
QPushButton
(
"Fr"
);
frameButton
->
setMaximumSize
(
QSize
(
26
,
26
)
);
frameButton
->
setIconSize
(
QSize
(
20
,
20
)
);
advLayout
->
addWidget
(
frameButton
);
BUTTON_SET_ACT
(
frameButton
,
"Fr"
,
qtr
(
"Frame by Frame"
),
frame
()
);
/* FIXME Record function */
recordButton
=
new
QPushButton
(
"R"
);
recordButton
->
setMaximumSize
(
QSize
(
26
,
26
)
);
recordButton
->
setIconSize
(
QSize
(
20
,
20
)
);
advLayout
->
addWidget
(
recordButton
);
BUTTON_SET_ACT
(
recordButton
,
"R"
,
qtr
(
"Record"
),
record
()
);
normalButton
=
new
QPushButton
(
"N"
);
normalButton
->
setMaximumSize
(
QSize
(
26
,
26
)
);
normalButton
->
setIconSize
(
QSize
(
20
,
20
)
);
advLayout
->
addWidget
(
normalButton
);
BUTTON_SET_ACT
(
normalButton
,
"N"
,
qtr
(
"Normal rate"
),
normal
()
);
}
AdvControlsWidget
::~
AdvControlsWidget
()
...
...
@@ -239,12 +266,15 @@ AdvControlsWidget::~AdvControlsWidget()
void
AdvControlsWidget
::
enableInput
(
bool
enable
)
{
// slowerButton->setEnabled( enable );
ABButton
->
setEnabled
(
enable
);
recordButton
->
setEnabled
(
enable
);
normalButton
->
setEnabled
(
enable
);
// fasterButton->setEnabled( enable );
}
void
AdvControlsWidget
::
enableVideo
(
bool
enable
)
{
snapshotButton
->
setEnabled
(
enable
);
frameButton
->
setEnabled
(
enable
);
//fullscreenButton->setEnabled( enable );
}
...
...
@@ -261,12 +291,24 @@ void AdvControlsWidget::fullscreen()
{
}
ControlsWidget
::
ControlsWidget
(
intf_thread_t
*
_p_i
)
:
void
AdvControlsWidget
::
frame
(){}
void
AdvControlsWidget
::
record
(){}
/*****************************
* DA Control Widget !
*****************************/
ControlsWidget
::
ControlsWidget
(
intf_thread_t
*
_p_i
,
bool
b_advControls
)
:
QFrame
(
NULL
),
p_intf
(
_p_i
)
{
//QSize size( 500, 200 );
//resize( size );
controlLayout
=
new
QGridLayout
(
this
);
#if 1 || DEBUG_COLOR
QPalette
palette2
;
palette2
.
setColor
(
this
->
backgroundRole
(),
Qt
::
magenta
);
setPalette
(
palette2
);
#endif
/** The main Slider **/
slider
=
new
InputSlider
(
Qt
::
Horizontal
,
NULL
);
...
...
@@ -290,33 +332,42 @@ ControlsWidget::ControlsWidget( intf_thread_t *_p_i ) :
fasterButton
->
setMaximumSize
(
QSize
(
26
,
20
)
);
/** TODO: Insert here the AdvControls Widget
* and add - A->B button
* - frame by frame
* - record button
* and put the snapshot in the same QFrame
* Then fix all the size issues in main_interface.cpp
**/
/* advanced Controls handling */
b_advancedVisible
=
b_advControls
;
advControls
=
new
AdvControlsWidget
(
p_intf
);
controlLayout
->
addWidget
(
advControls
,
1
,
3
,
2
,
5
,
Qt
::
AlignBottom
);
if
(
!
b_advancedVisible
)
advControls
->
hide
();
//THIS should be removed. need_components_update = true;
/** Disc and Menus handling */
discFrame
=
new
QFrame
(
this
);
QHBoxLayout
*
discLayout
=
new
QHBoxLayout
(
discFrame
);
QPushButton
*
menuButton
=
new
QPushButton
(
discFrame
);
discLayout
->
addWidget
(
menuButton
);
QHBoxLayout
*
discLayout
=
new
QHBoxLayout
(
discFrame
);
discLayout
->
setSpacing
(
0
);
discLayout
->
setMargin
(
0
);
QPushButton
*
prevSectionButton
=
new
QPushButton
(
discFrame
);
setupSmallButton
(
prevSectionButton
);
discLayout
->
addWidget
(
prevSectionButton
);
QPushButton
*
menuButton
=
new
QPushButton
(
discFrame
);
setupSmallButton
(
menuButton
);
discLayout
->
addWidget
(
menuButton
);
QPushButton
*
nextSectionButton
=
new
QPushButton
(
discFrame
);
setupSmallButton
(
nextSectionButton
);
discLayout
->
addWidget
(
nextSectionButton
);
controlLayout
->
addWidget
(
discFrame
,
1
,
1
3
,
1
,
4
);
controlLayout
->
addWidget
(
discFrame
,
1
,
1
0
,
2
,
4
,
Qt
::
AlignBottom
);
BUTTON_SET_IMG
(
prevSectionButton
,
""
,
previous
.
png
,
""
);
BUTTON_SET_IMG
(
nextSectionButton
,
""
,
next
.
png
,
""
);
BUTTON_SET_IMG
(
menuButton
,
""
,
previous
.
png
,
""
);
discFrame
->
hide
();
//
discFrame->hide();
/* Change the navigation button display when the IM navigation changes */
CONNECT
(
THEMIM
->
getIM
(),
navigationChanged
(
int
),
...
...
@@ -345,7 +396,7 @@ ControlsWidget::ControlsWidget( intf_thread_t *_p_i ) :
playButton
->
setMaximumSize
(
QSize
(
45
,
45
)
);
playButton
->
setIconSize
(
QSize
(
30
,
30
)
);
controlLayout
->
addWidget
(
playButton
,
2
,
0
,
2
,
2
);
controlLayout
->
addWidget
(
playButton
,
2
,
0
,
2
,
2
,
Qt
::
AlignBottom
);
/** Prev + Stop + Next Block **/
QHBoxLayout
*
controlButLayout
=
new
QHBoxLayout
;
...
...
@@ -354,24 +405,21 @@ ControlsWidget::ControlsWidget( intf_thread_t *_p_i ) :
/* Prev */
QPushButton
*
prevButton
=
new
QPushButton
;
prevButton
->
setSizePolicy
(
sizePolicy
);
prevButton
->
setMaximumSize
(
QSize
(
26
,
26
)
);
prevButton
->
setIconSize
(
QSize
(
20
,
20
)
);
setupSmallButton
(
prevButton
);
controlButLayout
->
addWidget
(
prevButton
);
/* Stop */
QPushButton
*
stopButton
=
new
QPushButton
;
stopButton
->
setSizePolicy
(
sizePolicy
);
stopButton
->
setMaximumSize
(
QSize
(
26
,
26
)
);
stopButton
->
setIconSize
(
QSize
(
20
,
20
)
);
setupSmallButton
(
stopButton
);
controlButLayout
->
addWidget
(
stopButton
);
/* next */
QPushButton
*
nextButton
=
new
QPushButton
;
nextButton
->
setSizePolicy
(
sizePolicy
);
nextButton
->
setMaximumSize
(
QSize
(
26
,
26
)
);
nextButton
->
setIconSize
(
QSize
(
20
,
20
)
);
setupSmallButton
(
nextButton
);
controlButLayout
->
addWidget
(
nextButton
);
...
...
@@ -392,13 +440,12 @@ ControlsWidget::ControlsWidget( intf_thread_t *_p_i ) :
/** Fullscreen/Visualisation **/
fullscreenButton
=
new
QPushButton
(
"F"
);
BUTTON_SET_ACT
(
fullscreenButton
,
"F"
,
qtr
(
"Fullscreen"
),
fullscreen
()
);
fullscreenButton
->
setMaximumSize
(
QSize
(
26
,
26
)
);
setupSmallButton
(
fullscreenButton
);
controlLayout
->
addWidget
(
fullscreenButton
,
3
,
10
);
/** Playlist Button **/
playlistButton
=
new
QPushButton
;
playlistButton
->
setMaximumSize
(
QSize
(
26
,
26
)
);
playlistButton
->
setIconSize
(
QSize
(
20
,
20
)
);
setupSmallButton
(
playlistButton
);
controlLayout
->
addWidget
(
playlistButton
,
3
,
11
);
...
...
@@ -406,13 +453,14 @@ ControlsWidget::ControlsWidget( intf_thread_t *_p_i ) :
QPushButton
*
extSettingsButton
=
new
QPushButton
(
"F"
);
BUTTON_SET_ACT
(
extSettingsButton
,
"Ex"
,
qtr
(
"Extended Settings"
),
extSettings
()
);
extSettingsButton
->
setMaximumSize
(
QSize
(
26
,
26
)
);
setupSmallButton
(
extSettingsButton
);
controlLayout
->
addWidget
(
extSettingsButton
,
3
,
12
);
/** Preferences **/
QPushButton
*
prefsButton
=
new
QPushButton
(
"P"
);
BUTTON_SET_ACT
(
prefsButton
,
"P"
,
qtr
(
"Preferences / Settings"
),
prefs
()
);
prefsButton
->
setMaximumSize
(
QSize
(
26
,
26
)
);
BUTTON_SET_ACT
(
prefsButton
,
"P"
,
qtr
(
"Preferences / Settings"
),
prefs
()
);
setupSmallButton
(
prefsButton
);
controlLayout
->
addWidget
(
prefsButton
,
3
,
13
);
/* Volume */
...
...
@@ -458,6 +506,7 @@ void ControlsWidget::play()
if
(
playlist_IsEmpty
(
THEPL
)
)
{
/* The playlist is empty, open a file requester */
msg_Dbg
(
p_intf
,
"Nothing to play yet, open a file"
);
THEDP
->
openFileDialog
();
setStatus
(
0
);
return
;
...
...
@@ -528,6 +577,9 @@ void ControlsWidget::updateOnTimer()
volumeSlider
->
setValue
(
i_volume
);
b_my_volume
=
false
;
}
enableInput
(
THEMIM
->
getIM
()
->
hasInput
()
);
enableVideo
(
THEMIM
->
getIM
()
->
hasVideo
()
);
}
/* FIXME */
...
...
@@ -580,14 +632,35 @@ void ControlsWidget::enableInput( bool enable )
slowerButton
->
setEnabled
(
enable
);
slider
->
setEnabled
(
enable
);
fasterButton
->
setEnabled
(
enable
);
/* Advanced Buttons too */
advControls
->
enableInput
(
enable
);
}
void
ControlsWidget
::
enableVideo
(
bool
enable
)
{
// TODO Later make the fullscreenButton toggle Visualisation and so on.
fullscreenButton
->
setEnabled
(
enable
);
/* Advanced Buttons too */
advControls
->
enableVideo
(
enable
);
}
void
ControlsWidget
::
toggleAdvanced
()
{
if
(
!
VISIBLE
(
advControls
)
)
{
advControls
->
show
();
b_advancedVisible
=
true
;
}
else
{
advControls
->
hide
();
b_advancedVisible
=
false
;
}
//FIXME connect this one :D
emit
advancedControlsShowed
(
b_advancedVisible
);
// doComponentsUpdate();
}
/**********************************************************************
* Playlist Widget. The embedded playlist
...
...
modules/gui/qt4/components/interface_widgets.hpp
View file @
5aebc3b8
...
...
@@ -114,12 +114,14 @@ public:
void
enableVideo
(
bool
);
private:
intf_thread_t
*
p_intf
;
QPushButton
*
normalButton
;
QPushButton
*
snapshotButton
;
QPushButton
*
normalButton
,
*
recordButton
,
*
ABButton
;
QPushButton
*
snapshotButton
,
*
frameButton
;
private
slots
:
void
normal
();
void
snapshot
();
void
fullscreen
();
void
frame
();
void
record
();
};
class
InputSlider
;
...
...
@@ -130,7 +132,7 @@ class ControlsWidget : public QFrame
{
Q_OBJECT
public:
ControlsWidget
(
intf_thread_t
*
);
ControlsWidget
(
intf_thread_t
*
,
bool
);
virtual
~
ControlsWidget
();
QPushButton
*
playlistButton
;
...
...
@@ -145,13 +147,16 @@ protected:
friend
class
MainInterface
;
friend
class
VolumeClickHandler
;
private:
intf_thread_t
*
p_intf
;
QFrame
*
discFrame
;
QGridLayout
*
controlLayout
;
intf_thread_t
*
p_intf
;
QFrame
*
discFrame
;
QGridLayout
*
controlLayout
;
InputSlider
*
slider
;
QPushButton
*
prevSectionButton
,
*
nextSectionButton
,
*
menuButton
;
QPushButton
*
playButton
,
*
fullscreenButton
;
QPushButton
*
slowerButton
,
*
fasterButton
;
QPushButton
*
prevSectionButton
,
*
nextSectionButton
,
*
menuButton
;
QPushButton
*
playButton
,
*
fullscreenButton
;
QPushButton
*
slowerButton
,
*
fasterButton
;
AdvControlsWidget
*
advControls
;
bool
b_advancedVisible
;
private
slots
:
void
play
();
void
stop
();
...
...
@@ -163,6 +168,9 @@ private slots:
void
prefs
();
void
faster
();
void
slower
();
void
toggleAdvanced
();
signals:
void
advancedControlsShowed
(
bool
);
};
class
VolumeClickHandler
:
public
QObject
...
...
modules/gui/qt4/main_interface.cpp
View file @
5aebc3b8
...
...
@@ -52,11 +52,9 @@
#define PREF_H 121
#else
#define PREF_W 450
#define PREF_H 1
25
#define PREF_H 1
60
#endif
#define VISIBLE(i) (i && i->isVisible())
#define SET_WIDTH(i,j) i->widgetSize.setWidth(j)
#define SET_HEIGHT(i,j) i->widgetSize.setHeight(j)
#define SET_WH( i,j,k) i->widgetSize.setWidth(j); i->widgetSize.setHeight(k);
...
...
@@ -93,8 +91,6 @@ MainInterface::MainInterface( intf_thread_t *_p_intf ) : QVLCMW( _p_intf )
need_components_update
=
false
;
bgWidget
=
NULL
;
videoWidget
=
NULL
;
playlistWidget
=
NULL
;
embeddedPlaylistWasActive
=
videoIsActive
=
false
;
bool
b_createSystray
=
false
;
input_name
=
""
;
/**
...
...
@@ -119,31 +115,24 @@ MainInterface::MainInterface( intf_thread_t *_p_intf ) : QVLCMW( _p_intf )
/* Set the other interface settings */
playlistEmbeddedFlag
=
settings
->
value
(
"playlist-embedded"
,
true
).
toBool
();
advControlsEnabled
=
settings
->
value
(
"adv-controls"
,
false
).
toBool
();
visualSelectorEnabled
=
settings
->
value
(
"visual-selector"
,
false
).
toBool
();
#if DEBUG_COLOR
QPalette
palette2
;
palette2
.
setColor
(
this
->
backgroundRole
(),
Qt
::
magenta
);
setPalette
(
palette2
);
#endif
/**
* UI design
**/
/**************************
* UI and Widgets design
**************************/
setVLCWindowsTitle
();
handleMainUi
(
settings
);
/* Menu Bar */
QVLCMenu
::
createMenuBar
(
this
,
p_intf
,
playlistEmbeddedFlag
,
advControlsEnabled
,
visualSelectorEnabled
);
isAdvancedVisible
()
,
visualSelectorEnabled
);
/* Status Bar */
/**
* TODO: clicking on the elapsed time should switch to the remaining time
**/
/**
* TODO: do we add a label for the current Volume
* TODO: do we add a label for the current Volume
?
**/
timeLabel
=
new
QLabel
;
nameLabel
=
new
QLabel
;
...
...
@@ -160,16 +149,25 @@ MainInterface::MainInterface( intf_thread_t *_p_intf ) : QVLCMW( _p_intf )
CONNECT
(
timeLabel
,
customContextMenuRequested
(
QPoint
),
this
,
showTimeMenu
(
QPoint
)
);
/* Systray */
/**********************
* Systray Management *
**********************/
sysTray
=
NULL
;
bool
b_createSystray
=
false
;
bool
b_systrayAvailable
=
QSystemTrayIcon
::
isSystemTrayAvailable
();
if
(
config_GetInt
(
p_intf
,
"qt-start-minimized"
)
)
{
hide
();
b_createSystray
=
true
;
if
(
b_systrayAvailable
){
b_createSystray
=
true
;
hide
();
//FIXME
}
else
msg_Warn
(
p_intf
,
"You can't minize if you haven't a system "
"tray bar"
);
}
if
(
config_GetInt
(
p_intf
,
"qt-system-tray"
)
)
b_createSystray
=
true
;
if
(
QSystemTrayIcon
::
isSystemTrayAvailable
()
&&
b_createSystray
)
if
(
b_systrayAvailable
&&
b_createSystray
)
createSystray
();
/* Init input manager */
...
...
@@ -177,30 +175,35 @@ MainInterface::MainInterface( intf_thread_t *_p_intf ) : QVLCMW( _p_intf )
ON_TIMEOUT
(
updateOnTimer
()
);
/**
* CONNECTs
*
Various
CONNECTs
**/
/* Connect the input manager to the GUI elements it manages */
/* It is also connected to the control->slider */
/* It is also connected to the control->slider
, see the ControlsWidget
*/
CONNECT
(
THEMIM
->
getIM
(),
positionUpdated
(
float
,
int
,
int
),
this
,
setDisplay
(
float
,
int
,
int
)
);
/* Naming in the controller */
/** Connects on nameChanged() */
/* Naming in the controller statusbar */
CONNECT
(
THEMIM
->
getIM
(),
nameChanged
(
QString
),
this
,
setName
(
QString
)
);
/* and in the systray */
if
(
sysTray
)
{
CONNECT
(
THEMIM
->
getIM
(),
nameChanged
(
QString
),
this
,
updateSystrayTooltipName
(
QString
)
);
}
/* and in the title of the controller */
if
(
config_GetInt
(
p_intf
,
"qt-name-in-title"
)
)
{
CONNECT
(
THEMIM
->
getIM
(),
nameChanged
(
QString
),
this
,
setVLCWindowsTitle
(
QString
)
);
}
/* PLAY_STATUS */
/** CONNECTS on PLAY_STATUS **/
/* Status on the main controller */
CONNECT
(
THEMIM
->
getIM
(),
statusChanged
(
int
),
this
,
setStatus
(
int
)
);
/* and in the systray */
if
(
sysTray
)
{
CONNECT
(
THEMIM
->
getIM
(),
statusChanged
(
int
),
this
,
...
...
@@ -238,7 +241,7 @@ MainInterface::~MainInterface()
}
settings
->
setValue
(
"playlist-embedded"
,
playlistEmbeddedFlag
);
settings
->
setValue
(
"adv-controls"
,
advControlsEnabled
);
settings
->
setValue
(
"adv-controls"
,
isAdvancedVisible
()
);
settings
->
setValue
(
"pos"
,
pos
()
);
settings
->
endGroup
();
delete
settings
;
...
...
@@ -272,6 +275,7 @@ void MainInterface::setVLCWindowsTitle( QString aTitle )
void
MainInterface
::
handleMainUi
(
QSettings
*
settings
)
{
/* Create the main Widget and the mainLayout */
QWidget
*
main
=
new
QWidget
(
this
);
mainLayout
=
new
QVBoxLayout
(
main
);
setCentralWidget
(
main
);
...
...
@@ -280,36 +284,24 @@ void MainInterface::handleMainUi( QSettings *settings )
main
->
setContentsMargins
(
0
,
0
,
0
,
0
);
mainLayout
->
setMargin
(
0
);
/* CONTROLS */
controls
=
new
ControlsWidget
(
p_intf
);
/* Create the CONTROLS Widget */
controls
=
new
ControlsWidget
(
p_intf
,
settings
->
value
(
"adv-controls"
,
false
).
toBool
()
);
/* Configure the
UI
*/
/* Configure the
Controls
*/
BUTTON_SET_IMG
(
controls
->
playlistButton
,
""
,
playlist_icon
.
png
,
playlistEmbeddedFlag
?
qtr
(
"Show playlist"
)
:
qtr
(
"Open playlist"
)
);
BUTTONACT
(
controls
->
playlistButton
,
playlist
()
);
#if DEBUG_COLOR
QPalette
palette
;
palette
.
setColor
(
main
->
backgroundRole
(),
Qt
::
green
);
main
->
setPalette
(
palette
);
#endif
playlistEmbeddedFlag
?
qtr
(
"Show playlist"
)
:
qtr
(
"Open playlist"
)
);
BUTTONACT
(
controls
->
playlistButton
,
togglePlaylist
()
);
/* Add the controls Widget */
/* Add the controls Widget
to the main Widget
*/
mainLayout
->
addWidget
(
controls
);
/* Set initial size */
resize
(
PREF_W
,
PREF_H
);
/* Set initial size */
resize
(
PREF_W
,
PREF_H
);
addSize
=
QSize
(
mainLayout
->
margin
()
*
2
,
PREF_H
);
/* advanced Controls handling */
advControls
=
new
AdvControlsWidget
(
p_intf
);
mainLayout
->
insertWidget
(
0
,
advControls
);
advControls
->
updateGeometry
();
if
(
!
advControlsEnabled
)
advControls
->
hide
();
need_components_update
=
true
;
/* Visualisation */
visualSelector
=
new
VisualSelector
(
p_intf
);
mainLayout
->
insertWidget
(
0
,
visualSelector
);
...
...
@@ -343,7 +335,7 @@ void MainInterface::handleMainUi( QSettings *settings )
}
/**********************************************************************
* Handling of the components
* Handling of
sizing of
the components
**********************************************************************/
void
MainInterface
::
calculateInterfaceSize
()
{
...
...
@@ -371,10 +363,10 @@ void MainInterface::calculateInterfaceSize()
}
if
(
VISIBLE
(
visualSelector
)
)
height
+=
visualSelector
->
height
();
if
(
VISIBLE
(
advControls
)
)
/*
if( VISIBLE( advControls) )
{
height += advControls->sizeHint().height();
}
}
*/
mainSize
=
QSize
(
width
+
addSize
.
width
(),
height
+
addSize
.
height
()
);
}
...
...
@@ -394,6 +386,7 @@ void MainInterface::resizeEvent( QResizeEvent *e )
playlistWidget
->
updateGeometry
();
}
}
/****************************************************************************
* Small right-click menus
****************************************************************************/
...
...
@@ -411,139 +404,9 @@ void MainInterface::showTimeMenu( QPoint pos )
menu
.
exec
(
QCursor
::
pos
()
);
}
/*****************************************************************************
* Systray Icon and Systray Menu
*****************************************************************************/
/**
* Create a SystemTray icon and a menu that would go with it.
* Connects to a click handler on the icon.
**/
void
MainInterface
::
createSystray
()
{
QIcon
iconVLC
=
QIcon
(
QPixmap
(
":/vlc128.png"
)
);
sysTray
=
new
QSystemTrayIcon
(
iconVLC
,
this
);
sysTray
->
setToolTip
(
qtr
(
"VLC media player"
));
systrayMenu
=
new
QMenu
(
qtr
(
"VLC media player"
),
this
);
systrayMenu
->
setIcon
(
iconVLC
);
QVLCMenu
::
updateSystrayMenu
(
this
,
p_intf
,
true
);
sysTray
->
show
();
CONNECT
(
sysTray
,
activated
(
QSystemTrayIcon
::
ActivationReason
),
this
,
handleSystrayClick
(
QSystemTrayIcon
::
ActivationReason
)
);
}
/**
* Update the menu of the Systray Icon.
* May be unneedded, since it just calls QVLCMenu::update
* FIXME !!!
**/
void
MainInterface
::
updateSystrayMenu
(
int
status
)
{
QVLCMenu
::
updateSystrayMenu
(
this
,
p_intf
)
;
}
/**
* Updates the Systray Icon's menu and toggle the main interface
*/
void
MainInterface
::
toggleUpdateSystrayMenu
()
{
if
(
isHidden
()
)
{
show
();
activateWindow
();
}
else
{
#ifdef WIN32
/* check if any visible window is above vlc in the z-order,
* but ignore the ones always on top */
WINDOWINFO
wi
;
HWND
hwnd
;
wi
.
cbSize
=
sizeof
(
WINDOWINFO
);
for
(
hwnd
=
GetNextWindow
(
internalWinId
(),
GW_HWNDPREV
);
hwnd
&&
!
IsWindowVisible
(
hwnd
);
hwnd
=
GetNextWindow
(
hwnd
,
GW_HWNDPREV
)
);
if
(
!
hwnd
||
!
GetWindowInfo
(
hwnd
,
&
wi
)
||
(
wi
.
dwExStyle
&
WS_EX_TOPMOST
)
)
#else
if
(
isActiveWindow
()
)
#endif
{
hide
();
}
else
{
activateWindow
();
}
}
QVLCMenu
::
updateSystrayMenu
(
this
,
p_intf
);
}
void
MainInterface
::
handleSystrayClick
(
QSystemTrayIcon
::
ActivationReason
reason
)
{
switch
(
reason
)
{
case
QSystemTrayIcon
:
:
Trigger
:
toggleUpdateSystrayMenu
();
break
;
case
QSystemTrayIcon
:
:
MiddleClick
:
sysTray
->
showMessage
(
qtr
(
"VLC media player"
),
qtr
(
"Control menu for the player"
),
QSystemTrayIcon
::
Information
,
4000
);
break
;
}
}
/**
* Updates the name of the systray Icon tooltip.
* Doesn't check if the systray exists, check before you call it.
* FIXME !!! Fusion with next function ?
**/
void
MainInterface
::
updateSystrayTooltipName
(
QString
name
)
{
if
(
name
.
isEmpty
()
)
{
sysTray
->
setToolTip
(
qtr
(
"VLC media player"
)
);
}
else
{
sysTray
->
setToolTip
(
name
);
sysTray
->
showMessage
(
qtr
(
"VLC media player"
),
name
,
QSystemTrayIcon
::
NoIcon
,
4000
);
}
}
/**
* Updates the status of the systray Icon tooltip.
* Doesn't check if the systray exists, check before you call it.
**/
void
MainInterface
::
updateSystrayTooltipStatus
(
int
i_status
)
{
switch
(
i_status
)
{
case
0
:
{
sysTray
->
setToolTip
(
qtr
(
"VLC media player"
)
);
break
;
}
case
PLAYING_S
:
{
sysTray
->
setToolTip
(
input_name
);
//+ " - " + qtr( "Playing" ) );
break
;
}
case
PAUSE_S
:
{
sysTray
->
setToolTip
(
input_name
+
" - "
+
qtr
(
"Paused"
)
);
break
;
}
}
}
/****************************************************************************
* Video Handling
****************************************************************************/
void
*
MainInterface
::
requestVideo
(
vout_thread_t
*
p_nvout
,
int
*
pi_x
,
int
*
pi_y
,
unsigned
int
*
pi_width
,
unsigned
int
*
pi_height
)
...
...
@@ -650,44 +513,15 @@ int MainInterface::controlVideo( void *p_window, int i_query, va_list args )
return
i_ret
;
}
void
MainInterface
::
advanced
()
{
if
(
!
VISIBLE
(
advControls
)
)
{
advControls
->
show
();
advControlsEnabled
=
true
;
}
else
{
advControls
->
hide
();
advControlsEnabled
=
false
;
}
doComponentsUpdate
();
}
void
MainInterface
::
visual
()
{
if
(
!
VISIBLE
(
visualSelector
)
)
{
visualSelector
->
show
();
if
(
!
THEMIM
->
getIM
()
->
hasVideo
()
)
{
/* Show the background widget */
}
visualSelectorEnabled
=
true
;
}
else
{
/* Stop any currently running visualization */
visualSelector
->
hide
();
visualSelectorEnabled
=
false
;
}
doComponentsUpdate
();
}
void
MainInterface
::
playlist
()
/*****************************************************************************
* Playlist, Visualisation and Menus handling
*****************************************************************************/
/**
* Toggle the playlist widget or dialog
**/
void
MainInterface
::
togglePlaylist
()
{
// Toggle the playlist dialog
// Toggle the playlist dialog
if not embedded and return
if
(
!
playlistEmbeddedFlag
)
{
if
(
playlistWidget
)
...
...
@@ -698,6 +532,7 @@ void MainInterface::playlist()
return
;
}
// Create the playlist Widget and destroy the existing dialog
if
(
!
playlistWidget
)
{
PlaylistDialog
::
killInstance
();
...
...
@@ -709,6 +544,8 @@ void MainInterface::playlist()
if
(
bgWidget
)
CONNECT
(
playlistWidget
,
artSet
(
QString
),
bgWidget
,
setArt
(
QString
)
);
}
// And toggle visibility
if
(
VISIBLE
(
playlistWidget
)
)
{
playlistWidget
->
hide
();
...
...
@@ -733,15 +570,8 @@ void MainInterface::playlist()
}
if
(
VISIBLE
(
bgWidget
)
)
bgWidget
->
hide
();
}
doComponentsUpdate
();
}
/* Video widget cannot do this synchronously as it runs in another thread */
/* Well, could it, actually ? Probably dangerous ... */
void
MainInterface
::
doComponentsUpdate
()
{
calculateInterfaceSize
();
resize
(
mainSize
);
doComponentsUpdate
();
}
void
MainInterface
::
undockPlaylist
()
...
...
@@ -755,7 +585,7 @@ void MainInterface::undockPlaylist()
playlistEmbeddedFlag
=
false
;
menuBar
()
->
clear
();
QVLCMenu
::
createMenuBar
(
this
,
p_intf
,
false
,
advControlsEnabled
,
QVLCMenu
::
createMenuBar
(
this
,
p_intf
,
false
,
isAdvancedVisible
()
,
visualSelectorEnabled
);
if
(
videoIsActive
)
...
...
@@ -770,6 +600,28 @@ void MainInterface::undockPlaylist()
}
}
#if 0
void MainInterface::visual()
{
if( !VISIBLE( visualSelector) )
{
visualSelector->show();
if( !THEMIM->getIM()->hasVideo() )
{
/* Show the background widget */
}
visualSelectorEnabled = true;
}
else
{
/* Stop any currently running visualization */
visualSelector->hide();
visualSelectorEnabled = false;
}
doComponentsUpdate();
}
#endif
void
MainInterface
::
toggleMenus
()
{
if
(
menuBar
()
->
isVisible
()
)
menuBar
()
->
hide
();
...
...
@@ -777,31 +629,203 @@ void MainInterface::toggleMenus()
msg_Dbg
(
p_intf
,
"I was there:
\\
_o<~~ coin coin"
);
}
void
MainInterface
::
customEvent
(
QEvent
*
event
)
/* Video widget cannot do this synchronously as it runs in another thread */
/* Well, could it, actually ? Probably dangerous ... */
void
MainInterface
::
doComponentsUpdate
()
{
if
(
event
->
type
()
==
PLDockEvent_Type
)
calculateInterfaceSize
();
resize
(
mainSize
);
}
void
MainInterface
::
toggleAdvanced
()
{
controls
->
toggleAdvanced
();
}
bool
MainInterface
::
isAdvancedVisible
()
{
return
controls
->
b_advancedVisible
;
}
/************************************************************************
* Other stuff
************************************************************************/
void
MainInterface
::
setDisplay
(
float
pos
,
int
time
,
int
length
)
{
char
psz_length
[
MSTRTIME_MAX_SIZE
],
psz_time
[
MSTRTIME_MAX_SIZE
];
secstotimestr
(
psz_length
,
length
);
secstotimestr
(
psz_time
,
time
);
QString
title
;
title
.
sprintf
(
"%s/%s"
,
psz_time
,
psz_length
);
timeLabel
->
setText
(
" "
+
title
+
" "
);
}
void
MainInterface
::
setName
(
QString
name
)
{
input_name
=
name
;
nameLabel
->
setText
(
" "
+
name
+
" "
);
}
void
MainInterface
::
setStatus
(
int
status
)
{
controls
->
setStatus
(
status
);
if
(
sysTray
)
updateSystrayMenu
(
status
);
}
void
MainInterface
::
updateOnTimer
()
{
/* \todo Make this event-driven */
if
(
intf_ShouldDie
(
p_intf
)
)
{
PlaylistDialog
::
killInstance
();
playlistEmbeddedFlag
=
true
;
menuBar
()
->
clear
();
QVLCMenu
::
createMenuBar
(
this
,
p_intf
,
true
,
advControlsEnabled
,
visualSelectorEnabled
);
playlist
();
QApplication
::
closeAllWindows
();
QApplication
::
quit
();
}
else
if
(
event
->
type
()
==
SetVideoOnTopEvent_Typ
e
)
if
(
need_components_updat
e
)
{
SetVideoOnTopQtEvent
*
p_event
=
(
SetVideoOnTopQtEvent
*
)
event
;
if
(
p_event
->
OnTop
()
)
setWindowFlags
(
windowFlags
()
|
Qt
::
WindowStaysOnTopHint
);
doComponentsUpdate
();
need_components_update
=
false
;
}
controls
->
updateOnTimer
();
}
/*****************************************************************************
* Systray Icon and Systray Menu
*****************************************************************************/
/**
* Create a SystemTray icon and a menu that would go with it.
* Connects to a click handler on the icon.
**/
void
MainInterface
::
createSystray
()
{
QIcon
iconVLC
=
QIcon
(
QPixmap
(
":/vlc128.png"
)
);
sysTray
=
new
QSystemTrayIcon
(
iconVLC
,
this
);
sysTray
->
setToolTip
(
qtr
(
"VLC media player"
));
systrayMenu
=
new
QMenu
(
qtr
(
"VLC media player"
),
this
);
systrayMenu
->
setIcon
(
iconVLC
);
QVLCMenu
::
updateSystrayMenu
(
this
,
p_intf
,
true
);
sysTray
->
show
();
CONNECT
(
sysTray
,
activated
(
QSystemTrayIcon
::
ActivationReason
),
this
,
handleSystrayClick
(
QSystemTrayIcon
::
ActivationReason
)
);
}
/**
* Update the menu of the Systray Icon.
* May be unneedded, since it just calls QVLCMenu::update
* FIXME !!!
**/
void
MainInterface
::
updateSystrayMenu
(
int
status
)
{
QVLCMenu
::
updateSystrayMenu
(
this
,
p_intf
)
;
}
/**
* Updates the Systray Icon's menu and toggle the main interface
*/
void
MainInterface
::
toggleUpdateSystrayMenu
()
{
if
(
isHidden
()
)
{
show
();
activateWindow
();
}
else
{
#ifdef WIN32
/* check if any visible window is above vlc in the z-order,
* but ignore the ones always on top */
WINDOWINFO
wi
;
HWND
hwnd
;
wi
.
cbSize
=
sizeof
(
WINDOWINFO
);
for
(
hwnd
=
GetNextWindow
(
internalWinId
(),
GW_HWNDPREV
);
hwnd
&&
!
IsWindowVisible
(
hwnd
);
hwnd
=
GetNextWindow
(
hwnd
,
GW_HWNDPREV
)
);
if
(
!
hwnd
||
!
GetWindowInfo
(
hwnd
,
&
wi
)
||
(
wi
.
dwExStyle
&
WS_EX_TOPMOST
)
)
#else
if
(
isActiveWindow
()
)
#endif
{
hide
();
}
else
setWindowFlags
(
windowFlags
()
&
~
Qt
::
WindowStaysOnTopHint
);
show
();
/* necessary to apply window flags?? */
{
activateWindow
();
}
}
QVLCMenu
::
updateSystrayMenu
(
this
,
p_intf
);
}
void
MainInterface
::
handleSystrayClick
(
QSystemTrayIcon
::
ActivationReason
reason
)
{
switch
(
reason
)
{
case
QSystemTrayIcon
:
:
Trigger
:
toggleUpdateSystrayMenu
();
break
;
case
QSystemTrayIcon
:
:
MiddleClick
:
sysTray
->
showMessage
(
qtr
(
"VLC media player"
),
qtr
(
"Control menu for the player"
),
QSystemTrayIcon
::
Information
,
4000
);
break
;
}
}
/**
* Updates the name of the systray Icon tooltip.
* Doesn't check if the systray exists, check before you call it.
* FIXME !!! Fusion with next function ?
**/
void
MainInterface
::
updateSystrayTooltipName
(
QString
name
)
{
if
(
name
.
isEmpty
()
)
{
sysTray
->
setToolTip
(
qtr
(
"VLC media player"
)
);
}
else
{
sysTray
->
setToolTip
(
name
);
sysTray
->
showMessage
(
qtr
(
"VLC media player"
),
name
,
QSystemTrayIcon
::
NoIcon
,
4000
);
}
}
/**
* Updates the status of the systray Icon tooltip.
* Doesn't check if the systray exists, check before you call it.
**/
void
MainInterface
::
updateSystrayTooltipStatus
(
int
i_status
)
{
switch
(
i_status
)
{
case
0
:
{
sysTray
->
setToolTip
(
qtr
(
"VLC media player"
)
);
break
;
}
case
PLAYING_S
:
{
sysTray
->
setToolTip
(
input_name
);
//+ " - " + qtr( "Playing" ) );
break
;
}
case
PAUSE_S
:
{
sysTray
->
setToolTip
(
input_name
+
" - "
+
qtr
(
"Paused"
)
);
break
;
}
}
}
/************************************************************************
* D&D
* D&D
Events
************************************************************************/
void
MainInterface
::
dropEvent
(
QDropEvent
*
event
)
{
...
...
@@ -847,8 +871,30 @@ void MainInterface::dragLeaveEvent(QDragLeaveEvent *event)
}
/************************************************************************
*
Other
stuff
*
Events
stuff
************************************************************************/
void
MainInterface
::
customEvent
(
QEvent
*
event
)
{
if
(
event
->
type
()
==
PLDockEvent_Type
)
{
PlaylistDialog
::
killInstance
();
playlistEmbeddedFlag
=
true
;
menuBar
()
->
clear
();
QVLCMenu
::
createMenuBar
(
this
,
p_intf
,
true
,
isAdvancedVisible
(),
visualSelectorEnabled
);
togglePlaylist
();
}
else
if
(
event
->
type
()
==
SetVideoOnTopEvent_Type
)
{
SetVideoOnTopQtEvent
*
p_event
=
(
SetVideoOnTopQtEvent
*
)
event
;
if
(
p_event
->
OnTop
()
)
setWindowFlags
(
windowFlags
()
|
Qt
::
WindowStaysOnTopHint
);
else
setWindowFlags
(
windowFlags
()
&
~
Qt
::
WindowStaysOnTopHint
);
show
();
/* necessary to apply window flags?? */
}
}
void
MainInterface
::
keyPressEvent
(
QKeyEvent
*
e
)
{
int
i_vlck
=
qtEventToVLCKey
(
e
);
...
...
@@ -868,58 +914,15 @@ void MainInterface::wheelEvent( QWheelEvent *e )
e
->
accept
();
}
void
MainInterface
::
setDisplay
(
float
pos
,
int
time
,
int
length
)
{
char
psz_length
[
MSTRTIME_MAX_SIZE
],
psz_time
[
MSTRTIME_MAX_SIZE
];
secstotimestr
(
psz_length
,
length
);
secstotimestr
(
psz_time
,
time
);
QString
title
;
title
.
sprintf
(
"%s/%s"
,
psz_time
,
psz_length
);
timeLabel
->
setText
(
" "
+
title
+
" "
);
}
void
MainInterface
::
setName
(
QString
name
)
{
input_name
=
name
;
nameLabel
->
setText
(
" "
+
name
+
" "
);
}
void
MainInterface
::
setStatus
(
int
status
)
{
controls
->
setStatus
(
status
);
if
(
sysTray
)
updateSystrayMenu
(
status
);
}
void
MainInterface
::
updateOnTimer
()
{
/* \todo Make this event-driven */
// TO MOVE TO controls
advControls
->
enableInput
(
THEMIM
->
getIM
()
->
hasInput
()
);
controls
->
enableInput
(
THEMIM
->
getIM
()
->
hasInput
()
);
advControls
->
enableVideo
(
THEMIM
->
getIM
()
->
hasVideo
()
);
controls
->
enableVideo
(
THEMIM
->
getIM
()
->
hasVideo
()
);
if
(
intf_ShouldDie
(
p_intf
)
)
{
QApplication
::
closeAllWindows
();
QApplication
::
quit
();
}
if
(
need_components_update
)
{
doComponentsUpdate
();
need_components_update
=
false
;
}
controls
->
updateOnTimer
();
}
void
MainInterface
::
closeEvent
(
QCloseEvent
*
e
)
{
hide
();
vlc_object_kill
(
p_intf
);
}
/*****************************************************************************
* Callbacks
*****************************************************************************/
static
int
InteractCallback
(
vlc_object_t
*
p_this
,
const
char
*
psz_var
,
vlc_value_t
old_val
,
vlc_value_t
new_val
,
void
*
param
)
...
...
modules/gui/qt4/main_interface.hpp
View file @
5aebc3b8
...
...
@@ -25,7 +25,6 @@
#ifndef _MAIN_INTERFACE_H_
#define _MAIN_INTERFACE_H_
#include "qt4.hpp"
#include "util/qvlcframe.hpp"
...
...
@@ -54,14 +53,16 @@ class MainInterface : public QVLCMW
public:
MainInterface
(
intf_thread_t
*
);
virtual
~
MainInterface
();
void
*
requestVideo
(
vout_thread_t
*
p_nvout
,
int
*
pi_x
,
int
*
pi_y
,
unsigned
int
*
pi_width
,
unsigned
int
*
pi_height
);
void
releaseVideo
(
void
*
);
void
releaseVideo
(
void
*
);
int
controlVideo
(
void
*
p_window
,
int
i_query
,
va_list
args
);
QSystemTrayIcon
*
getSysTray
()
{
return
sysTray
;
};
QMenu
*
getSysTrayMenu
()
{
return
systrayMenu
;
};
bool
isAdvancedVisible
();
protected:
void
resizeEvent
(
QResizeEvent
*
);
void
dropEvent
(
QDropEvent
*
);
...
...
@@ -69,18 +70,18 @@ protected:
void
dragMoveEvent
(
QDragMoveEvent
*
);
void
dragLeaveEvent
(
QDragLeaveEvent
*
);
void
closeEvent
(
QCloseEvent
*
);
//Ui::MainInterfaceUI ui;
friend
class
VolumeClickHandler
;
private:
QSettings
*
settings
;
QSize
mainSize
,
addSize
;
QSystemTrayIcon
*
sysTray
;
QMenu
*
systrayMenu
;
QString
input_name
;
QVBoxLayout
*
mainLayout
;
ControlsWidget
*
controls
;
bool
need_components_update
;
QSettings
*
settings
;
QSize
mainSize
,
addSize
;
QSystemTrayIcon
*
sysTray
;
QMenu
*
systrayMenu
;
QString
input_name
;
QVBoxLayout
*
mainLayout
;
ControlsWidget
*
controls
;
bool
need_components_update
;
void
calculateInterfaceSize
();
void
handleMainUi
(
QSettings
*
);
void
handleSystray
();
...
...
@@ -92,20 +93,17 @@ private:
virtual
void
keyPressEvent
(
QKeyEvent
*
);
virtual
void
wheelEvent
(
QWheelEvent
*
);
bool
embeddedPlaylistWasActive
;
bool
videoIsActive
;
QSize
savedVideoSize
;
bool
embeddedPlaylistWasActive
;
bool
videoIsActive
;
QSize
savedVideoSize
;
BackgroundWidget
*
bgWidget
;
VisualSelector
*
visualSelector
;
AdvControlsWidget
*
advControls
;
PlaylistWidget
*
playlistWidget
;
bool
playlistEmbeddedFlag
;
bool
videoEmbeddedFlag
;
bool
alwaysVideoFlag
;
bool
advControlsEnabled
;
bool
visualSelectorEnabled
;
InputManager
*
main_input_manager
;
...
...
@@ -119,17 +117,19 @@ private:
public
slots
:
void
undockPlaylist
();
void
toggleMenus
();
void
p
laylist
();
void
toggleP
laylist
();
void
toggleUpdateSystrayMenu
();
void
toggleAdvanced
();
private
slots
:
void
updateOnTimer
();
void
setStatus
(
int
);
void
setName
(
QString
);
void
setVLCWindowsTitle
(
QString
title
=
""
);
void
setDisplay
(
float
,
int
,
int
);
void
updateOnTimer
();
#if 0
void visual();
void
advanced
();
void
handleSystrayClick
(
QSystemTrayIcon
::
ActivationReason
);
#endif
void
handleSystrayClick
(
QSystemTrayIcon
::
ActivationReason
);
void
updateSystrayMenu
(
int
);
void
updateSystrayTooltipName
(
QString
);
void
updateSystrayTooltipStatus
(
int
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment