Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc
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
Commits
a1710873
Commit
a1710873
authored
Jun 07, 2008
by
Lukas Durfina
Committed by
Jean-Baptiste Kempf
Jun 09, 2008
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fullscreen controller
Signed-off-by:
Jean-Baptiste Kempf
<
jb@videolan.org
>
parent
e6a8ec99
Changes
6
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
465 additions
and
17 deletions
+465
-17
modules/gui/qt4/components/interface_widgets.cpp
modules/gui/qt4/components/interface_widgets.cpp
+333
-13
modules/gui/qt4/components/interface_widgets.hpp
modules/gui/qt4/components/interface_widgets.hpp
+86
-4
modules/gui/qt4/input_manager.cpp
modules/gui/qt4/input_manager.cpp
+1
-0
modules/gui/qt4/input_manager.hpp
modules/gui/qt4/input_manager.hpp
+5
-0
modules/gui/qt4/main_interface.cpp
modules/gui/qt4/main_interface.cpp
+37
-0
modules/gui/qt4/main_interface.hpp
modules/gui/qt4/main_interface.hpp
+3
-0
No files found.
modules/gui/qt4/components/interface_widgets.cpp
View file @
a1710873
This diff is collapsed.
Click to expand it.
modules/gui/qt4/components/interface_widgets.hpp
View file @
a1710873
...
...
@@ -42,6 +42,22 @@
#include <QFrame>
#define VOLUME_MAX 200
/* on WIN32 hide() for fullscreen controller doesnt work, so it have to be
done by trick with setting the opacity of window */
#ifdef WIN32
#define WIN32TRICK
#endif
/* to trying transparency with fullscreen controller on windows enable that */
/* #define TRANSPARENCY */
/* it can be enabled on non windows systems,
but it will be transparent only with composite manager */
#ifndef WIN32
#define TRANSPARENCY
#endif
class
ResizeEvent
;
class
QPalette
;
class
QPixmap
;
...
...
@@ -155,7 +171,8 @@ class ControlsWidget : public QFrame
Q_OBJECT
public:
/* p_intf, advanced control visible or not, blingbling or not */
ControlsWidget
(
intf_thread_t
*
,
MainInterface
*
,
bool
,
bool
);
ControlsWidget
(
intf_thread_t
*
_p_i
,
MainInterface
*
_p_mi
,
bool
b_advControls
,
bool
b_shiny
,
bool
b_fsCreation
=
false
);
virtual
~
ControlsWidget
();
QPushButton
*
playlistButton
;
...
...
@@ -167,21 +184,23 @@ public slots:
protected:
friend
class
MainInterface
;
friend
class
VolumeClickHandler
;
pr
ivate
:
pr
otected
:
intf_thread_t
*
p_intf
;
QWidget
*
discFrame
;
QWidget
*
telexFrame
;
QGridLayout
*
controlLayout
;
InputSlider
*
slider
;
QPushButton
*
prevSectionButton
,
*
nextSectionButton
,
*
menuButton
;
QPushButton
*
playButton
,
*
fullscreenButton
;
QPushButton
*
playButton
,
*
fullscreenButton
,
*
extSettingsButton
;
QToolButton
*
slowerButton
,
*
fasterButton
;
QHBoxLayout
*
controlButLayout
;
AdvControlsWidget
*
advControls
;
QLabel
*
volMuteLabel
;
QAbstractSlider
*
volumeSlider
;
VolumeClickHandler
*
hVolLabel
;
bool
b_advancedVisible
;
pr
ivate
slots
:
pr
otected
slots
:
void
play
();
void
stop
();
void
prev
();
...
...
@@ -198,6 +217,69 @@ signals:
void
advancedControlsToggled
(
bool
);
};
/***********************************
* Fullscreen controller
***********************************/
static
int
showFullscreenControllCallback
(
vlc_object_t
*
vlc_object
,
const
char
*
variable
,
vlc_value_t
old_val
,
vlc_value_t
new_val
,
void
*
data
);
static
int
regMouseMoveCallback
(
vlc_object_t
*
vlc_object
,
const
char
*
variable
,
vlc_value_t
old_val
,
vlc_value_t
new_val
,
void
*
data
);
class
FullscreenControllerWidget
:
public
ControlsWidget
{
Q_OBJECT
public:
FullscreenControllerWidget
(
intf_thread_t
*
,
MainInterface
*
,
bool
,
bool
);
virtual
~
FullscreenControllerWidget
();
void
SetHideTimeout
(
int
hideTimeout
)
{
i_hideTimeout
=
hideTimeout
;
}
void
regFullscreenCallback
(
vout_thread_t
*
p_vout
);
bool
isFSCHidden
();
public
slots
:
void
unregFullscreenCallback
();
protected:
friend
class
MainInterface
;
friend
class
VolumeClickHandler
;
virtual
void
mouseMoveEvent
(
QMouseEvent
*
event
);
virtual
void
mousePressEvent
(
QMouseEvent
*
event
);
virtual
void
enterEvent
(
QEvent
*
event
);
virtual
void
leaveEvent
(
QEvent
*
event
);
virtual
void
keyPressEvent
(
QKeyEvent
*
event
);
private
slots
:
void
hideFSControllerWidget
();
#ifdef TRANSPARENCY
void
slowHideFSC
();
#endif
private:
QTimer
*
p_hideTimer
;
#ifdef TRANSPARENCY
QTimer
*
p_slowHideTimer
;
#endif
int
i_lastPosX
;
int
i_lastPosY
;
int
i_hideTimeout
;
/* FSC hiding timeout, same as mouse hiding timeout */
bool
b_mouseIsOver
;
#ifdef WIN32TRICK
bool
fscHidden
;
#endif
virtual
void
customEvent
(
QEvent
*
event
);
};
class
VolumeClickHandler
:
public
QObject
{
public:
...
...
modules/gui/qt4/input_manager.cpp
View file @
a1710873
...
...
@@ -98,6 +98,7 @@ void InputManager::setInput( input_thread_t *_p_input )
p_input
=
NULL
;
i_input_id
=
0
;
emit
rateChanged
(
INPUT_RATE_DEFAULT
);
emit
inputUnset
();
}
}
...
...
modules/gui/qt4/input_manager.hpp
View file @
a1710873
...
...
@@ -42,6 +42,9 @@ static int const ItemStateChanged_Type = QEvent::User + IMEventType + 3;
static
int
const
ItemTitleChanged_Type
=
QEvent
::
User
+
IMEventType
+
4
;
static
int
const
ItemRateChanged_Type
=
QEvent
::
User
+
IMEventType
+
5
;
static
int
const
VolumeChanged_Type
=
QEvent
::
User
+
IMEventType
+
6
;
static
int
const
FullscreenControlShow_Type
=
QEvent
::
User
+
IMEventType
+
7
;
static
int
const
FullscreenControlHide_Type
=
QEvent
::
User
+
IMEventType
+
8
;
static
int
const
FullscreenControlPlanHide_Type
=
QEvent
::
User
+
IMEventType
+
9
;
class
IMEvent
:
public
QEvent
{
...
...
@@ -113,6 +116,8 @@ signals:
/// Play/pause status
void
statusChanged
(
int
);
void
artChanged
(
QString
);
/// Controll of fullscreen controller
void
inputUnset
();
#ifdef ZVBI_COMPILED
void
teletextEnabled
(
bool
);
#endif
...
...
modules/gui/qt4/main_interface.cpp
View file @
a1710873
...
...
@@ -82,10 +82,19 @@ static void *DoRequest( intf_thread_t *p_intf, vout_thread_t *p_vout,
{
return
p_intf
->
p_sys
->
p_mi
->
requestVideo
(
p_vout
,
pi1
,
pi2
,
pi3
,
pi4
);
}
static
void
*
DoNotEmbeddedRequest
(
intf_thread_t
*
p_intf
,
vout_thread_t
*
p_vout
,
int
*
pi1
,
int
*
pi2
,
unsigned
int
*
pi3
,
unsigned
int
*
pi4
)
{
p_intf
->
p_sys
->
p_mi
->
requestNotEmbeddedVideo
(
p_vout
);
return
NULL
;
}
static
void
DoRelease
(
intf_thread_t
*
p_intf
,
void
*
p_win
)
{
return
p_intf
->
p_sys
->
p_mi
->
releaseVideo
(
p_win
);
}
static
int
DoControl
(
intf_thread_t
*
p_intf
,
void
*
p_win
,
int
i_q
,
va_list
a
)
{
return
p_intf
->
p_sys
->
p_mi
->
controlVideo
(
p_win
,
i_q
,
a
);
...
...
@@ -240,6 +249,13 @@ MainInterface::MainInterface( intf_thread_t *_p_intf ) : QVLCMW( _p_intf )
CONNECT
(
controls
,
advancedControlsToggled
(
bool
),
this
,
doComponentsUpdate
()
);
CONNECT
(
fullscreenControls
,
advancedControlsToggled
(
bool
),
this
,
doComponentsUpdate
()
);
CONNECT
(
THEMIM
->
getIM
(),
inputUnset
(),
fullscreenControls
,
unregFullscreenCallback
()
);
/* Size and placement of interface */
QVLCTools
::
restoreWidgetPosition
(
settings
,
this
,
QSize
(
350
,
60
));
...
...
@@ -404,6 +420,12 @@ void MainInterface::handleMainUi( QSettings *settings )
settings
->
value
(
"adv-controls"
,
false
).
toBool
(),
config_GetInt
(
p_intf
,
"qt-blingbling"
)
);
/* Create the FULLSCREEN CONTROLS Widget */
/* bool b_shiny = config_GetInt( p_intf, "qt-blingbling" ); */
fullscreenControls
=
new
FullscreenControllerWidget
(
p_intf
,
this
,
settings
->
value
(
"adv-controls"
,
false
).
toBool
(),
config_GetInt
(
p_intf
,
"qt-blingbling"
)
);
/* Add the controls Widget to the main Widget */
mainLayout
->
insertWidget
(
0
,
controls
,
0
,
Qt
::
AlignBottom
);
...
...
@@ -444,6 +466,10 @@ void MainInterface::handleMainUi( QSettings *settings )
p_intf
->
pf_release_window
=
::
DoRelease
;
p_intf
->
pf_control_window
=
::
DoControl
;
}
else
{
p_intf
->
pf_request_window
=
::
DoNotEmbeddedRequest
;
}
/* Finish the sizing */
main
->
updateGeometry
();
...
...
@@ -695,10 +721,19 @@ void *MainInterface::requestVideo( vout_thread_t *p_nvout, int *pi_x,
emit
askVideoToResize
(
*
pi_width
,
*
pi_height
);
emit
askUpdate
();
fullscreenControls
->
regFullscreenCallback
(
p_nvout
);
}
return
ret
;
}
/* function called from ::DoRequest in order to show a nice VideoWidget
at the good size */
void
MainInterface
::
requestNotEmbeddedVideo
(
vout_thread_t
*
p_nvout
)
{
fullscreenControls
->
regFullscreenCallback
(
p_nvout
);
}
void
MainInterface
::
releaseVideo
(
void
*
p_win
)
{
emit
askReleaseVideo
(
p_win
);
...
...
@@ -898,8 +933,10 @@ void MainInterface::setStatus( int status )
msg_Dbg
(
p_intf
,
"I was here, updating your status"
);
/* Forward the status to the controls to toggle Play/Pause */
controls
->
setStatus
(
status
);
fullscreenControls
->
setStatus
(
status
);
controls
->
updateInput
();
fullscreenControls
->
updateInput
();
speedControl
->
setEnable
(
THEMIM
->
getIM
()
->
hasInput
()
);
/* And in the systray for the menu */
...
...
modules/gui/qt4/main_interface.hpp
View file @
a1710873
...
...
@@ -45,6 +45,7 @@ class PlaylistWidget;
class
VisualSelector
;
class
AdvControlsWidget
;
class
ControlsWidget
;
class
FullscreenControllerWidget
;
class
SpeedControlWidget
;
class
QMenu
;
class
QSize
;
...
...
@@ -72,6 +73,7 @@ public:
void
*
requestVideo
(
vout_thread_t
*
p_nvout
,
int
*
pi_x
,
int
*
pi_y
,
unsigned
int
*
pi_width
,
unsigned
int
*
pi_height
);
void
requestNotEmbeddedVideo
(
vout_thread_t
*
p_nvout
);
void
releaseVideo
(
void
*
);
int
controlVideo
(
void
*
p_window
,
int
i_query
,
va_list
args
);
void
requestLayoutUpdate
();
...
...
@@ -99,6 +101,7 @@ private:
QString
input_name
;
QVBoxLayout
*
mainLayout
;
ControlsWidget
*
controls
;
FullscreenControllerWidget
*
fullscreenControls
;
QMenu
*
speedControlMenu
;
SpeedControlWidget
*
speedControl
;
QProgressBar
*
pgBar
;
...
...
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