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
c37a9dfc
Commit
c37a9dfc
authored
Apr 18, 2007
by
Jean-Baptiste Kempf
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Qt4 - popupMenu and AlwaysOnTop. Needs testing.
Mostly patch by Sergey Volk
parent
5b4d0319
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
122 additions
and
12 deletions
+122
-12
modules/gui/qt4/dialogs_provider.cpp
modules/gui/qt4/dialogs_provider.cpp
+5
-5
modules/gui/qt4/dialogs_provider.hpp
modules/gui/qt4/dialogs_provider.hpp
+0
-1
modules/gui/qt4/input_manager.cpp
modules/gui/qt4/input_manager.cpp
+16
-2
modules/gui/qt4/input_manager.hpp
modules/gui/qt4/input_manager.hpp
+3
-0
modules/gui/qt4/main_interface.cpp
modules/gui/qt4/main_interface.cpp
+93
-3
modules/gui/qt4/menus.cpp
modules/gui/qt4/menus.cpp
+2
-1
modules/gui/qt4/qt4.cpp
modules/gui/qt4/qt4.cpp
+2
-0
modules/gui/qt4/qt4.hpp
modules/gui/qt4/qt4.hpp
+1
-0
No files found.
modules/gui/qt4/dialogs_provider.cpp
View file @
c37a9dfc
...
...
@@ -103,11 +103,15 @@ void DialogsProvider::customEvent( QEvent *event )
bookmarksDialog
();
break
;
case
INTF_DIALOG_EXTENDED
:
extendedDialog
();
break
;
/* We might want to make it better with custom functions */
case
INTF_DIALOG_POPUPMENU
:
QVLCMenu
::
PopupMenu
(
p_intf
);
break
;
case
INTF_DIALOG_AUDIOPOPUPMENU
:
QVLCMenu
::
AudioPopupMenu
(
p_intf
);
break
;
case
INTF_DIALOG_VIDEOPOPUPMENU
:
QVLCMenu
::
VideoPopupMenu
(
p_intf
);
break
;
case
INTF_DIALOG_MISCPOPUPMENU
:
popupMenu
(
de
->
i_dialog
);
break
;
QVLCMenu
::
MiscPopupMenu
(
p_intf
);
break
;
case
INTF_DIALOG_INTERACTION
:
doInteraction
(
de
->
p_arg
);
break
;
case
INTF_DIALOG_VLM
:
...
...
@@ -457,7 +461,3 @@ void DialogsProvider::switchToSkins()
{
var_SetString
(
p_intf
,
"intf-switch"
,
"skins2"
);
}
void
DialogsProvider
::
popupMenu
(
int
i_dialog
)
{
}
modules/gui/qt4/dialogs_provider.hpp
View file @
c37a9dfc
...
...
@@ -136,7 +136,6 @@ public slots:
void
openDiscDialog
();
void
PLAppendDialog
();
void
MLAppendDialog
();
void
popupMenu
(
int
);
void
doInteraction
(
intf_dialog_args_t
*
);
void
menuAction
(
QObject
*
);
void
menuUpdateAction
(
QObject
*
);
...
...
modules/gui/qt4/input_manager.cpp
View file @
c37a9dfc
...
...
@@ -182,7 +182,7 @@ void InputManager::sectionPrev()
{
if
(
hasInput
()
)
{
int
i_type
=
var_Type
(
p_input
,
"
prev
-chapter"
);
int
i_type
=
var_Type
(
p_input
,
"
next
-chapter"
);
vlc_value_t
val
;
val
.
b_bool
=
VLC_TRUE
;
var_Set
(
p_input
,
(
i_type
&
VLC_VAR_TYPE
)
!=
0
?
"prev-chapter"
:
"prev-title"
,
val
);
...
...
@@ -271,6 +271,21 @@ void MainInputManager::updateInput()
vlc_mutex_unlock
(
&
p_intf
->
change_lock
);
}
void
MainInputManager
::
stop
()
{
playlist_Stop
(
THEPL
);
}
void
MainInputManager
::
next
()
{
playlist_Next
(
THEPL
);
}
void
MainInputManager
::
prev
()
{
playlist_Prev
(
THEPL
);
}
void
MainInputManager
::
togglePlayPause
()
{
if
(
p_input
==
NULL
)
...
...
@@ -281,7 +296,6 @@ void MainInputManager::togglePlayPause()
getIM
()
->
togglePlayPause
();
}
static
int
ChangeAudio
(
vlc_object_t
*
p_this
,
const
char
*
var
,
vlc_value_t
o
,
vlc_value_t
n
,
void
*
param
)
{
...
...
modules/gui/qt4/input_manager.hpp
View file @
c37a9dfc
...
...
@@ -94,6 +94,9 @@ private:
MainInputManager
(
intf_thread_t
*
);
public
slots
:
void
togglePlayPause
();
void
stop
();
void
next
();
void
prev
();
private
slots
:
void
updateInput
();
signals:
...
...
modules/gui/qt4/main_interface.cpp
View file @
c37a9dfc
...
...
@@ -58,6 +58,11 @@
#define DS(i) i.width(),i.height()
/* Callback prototypes */
static
int
PopupMenuCB
(
vlc_object_t
*
p_this
,
const
char
*
psz_variable
,
vlc_value_t
old_val
,
vlc_value_t
new_val
,
void
*
param
);
static
int
IntfShowCB
(
vlc_object_t
*
p_this
,
const
char
*
psz_variable
,
vlc_value_t
old_val
,
vlc_value_t
new_val
,
void
*
param
);
static
int
InteractCallback
(
vlc_object_t
*
,
const
char
*
,
vlc_value_t
,
vlc_value_t
,
void
*
);
/* Video handling */
...
...
@@ -81,6 +86,8 @@ MainInterface::MainInterface( intf_thread_t *_p_intf ) : QVLCMW( _p_intf )
settings
=
new
QSettings
(
"VideoLAN"
,
"VLC"
);
settings
->
beginGroup
(
"MainWindow"
);
setWindowIcon
(
QApplication
::
windowIcon
()
);
need_components_update
=
false
;
bgWidget
=
NULL
;
videoWidget
=
NULL
;
playlistWidget
=
NULL
;
embeddedPlaylistWasActive
=
videoIsActive
=
false
;
...
...
@@ -136,10 +143,30 @@ MainInterface::MainInterface( intf_thread_t *_p_intf ) : QVLCMW( _p_intf )
var_Create
(
p_intf
,
"interaction"
,
VLC_VAR_ADDRESS
);
var_AddCallback
(
p_intf
,
"interaction"
,
InteractCallback
,
this
);
p_intf
->
b_interaction
=
VLC_TRUE
;
/* Register callback for the intf-popupmenu variable */
playlist_t
*
p_playlist
=
(
playlist_t
*
)
vlc_object_find
(
p_intf
,
VLC_OBJECT_PLAYLIST
,
FIND_ANYWHERE
);
if
(
p_playlist
!=
NULL
)
{
var_AddCallback
(
p_playlist
,
"intf-popupmenu"
,
PopupMenuCB
,
p_intf
);
var_AddCallback
(
p_playlist
,
"intf-show"
,
IntfShowCB
,
p_intf
);
vlc_object_release
(
p_playlist
);
}
}
MainInterface
::~
MainInterface
()
{
/* Unregister callback for the intf-popupmenu variable */
playlist_t
*
p_playlist
=
(
playlist_t
*
)
vlc_object_find
(
p_intf
,
VLC_OBJECT_PLAYLIST
,
FIND_ANYWHERE
);
if
(
p_playlist
!=
NULL
)
{
var_DelCallback
(
p_playlist
,
"intf-popupmenu"
,
PopupMenuCB
,
p_intf
);
var_DelCallback
(
p_playlist
,
"intf-show"
,
IntfShowCB
,
p_intf
);
vlc_object_release
(
p_playlist
);
}
settings
->
setValue
(
"playlist-embedded"
,
playlistEmbeddedFlag
);
settings
->
setValue
(
"adv-controls"
,
advControlsEnabled
);
settings
->
setValue
(
"pos"
,
pos
()
);
...
...
@@ -328,6 +355,23 @@ void MainInterface::releaseVideo( void *p_win )
need_components_update
=
true
;
}
class
SetVideoOnTopQtEvent
:
public
QEvent
{
public:
SetVideoOnTopQtEvent
(
bool
_onTop
)
:
QEvent
(
(
QEvent
::
Type
)
SetVideoOnTopEvent_Type
),
onTop
(
_onTop
)
{
}
bool
OnTop
()
const
{
return
onTop
;
}
private:
bool
onTop
;
};
int
MainInterface
::
controlVideo
(
void
*
p_window
,
int
i_query
,
va_list
args
)
{
int
i_ret
=
VLC_EGENERIC
;
...
...
@@ -353,6 +397,12 @@ int MainInterface::controlVideo( void *p_window, int i_query, va_list args )
break
;
}
case
VOUT_SET_STAY_ON_TOP
:
{
int
i_arg
=
va_arg
(
args
,
int
);
QApplication
::
postEvent
(
this
,
new
SetVideoOnTopQtEvent
(
i_arg
)
);
i_ret
=
VLC_SUCCESS
;
break
;
}
default:
msg_Warn
(
p_intf
,
"unsupported control query"
);
break
;
...
...
@@ -487,6 +537,15 @@ void MainInterface::customEvent( QEvent *event )
visualSelectorEnabled
);
playlist
();
}
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?? */
}
}
...
...
@@ -560,7 +619,7 @@ void MainInterface::wheelEvent( QWheelEvent *e )
void
MainInterface
::
stop
()
{
playlist_Stop
(
THEPL
);
THEMIM
->
stop
(
);
}
void
MainInterface
::
play
()
{
...
...
@@ -575,11 +634,11 @@ void MainInterface::play()
}
void
MainInterface
::
prev
()
{
playlist_Prev
(
THEPL
);
THEMIM
->
prev
(
);
}
void
MainInterface
::
next
()
{
playlist_Next
(
THEPL
);
THEMIM
->
next
(
);
}
void
MainInterface
::
setDisplay
(
float
pos
,
int
time
,
int
length
)
...
...
@@ -692,3 +751,34 @@ static int InteractCallback( vlc_object_t *p_this,
QApplication
::
postEvent
(
THEDP
,
static_cast
<
QEvent
*>
(
event
)
);
return
VLC_SUCCESS
;
}
/*****************************************************************************
* PopupMenuCB: callback triggered by the intf-popupmenu playlist variable.
* We don't show the menu directly here because we don't want the
* caller to block for a too long time.
*****************************************************************************/
static
int
PopupMenuCB
(
vlc_object_t
*
p_this
,
const
char
*
psz_variable
,
vlc_value_t
old_val
,
vlc_value_t
new_val
,
void
*
param
)
{
intf_thread_t
*
p_intf
=
(
intf_thread_t
*
)
param
;
if
(
p_intf
->
pf_show_dialog
)
{
p_intf
->
pf_show_dialog
(
p_intf
,
INTF_DIALOG_POPUPMENU
,
new_val
.
b_bool
,
0
);
}
return
VLC_SUCCESS
;
}
/*****************************************************************************
* IntfShowCB: callback triggered by the intf-show playlist variable.
*****************************************************************************/
static
int
IntfShowCB
(
vlc_object_t
*
p_this
,
const
char
*
psz_variable
,
vlc_value_t
old_val
,
vlc_value_t
new_val
,
void
*
param
)
{
intf_thread_t
*
p_intf
=
(
intf_thread_t
*
)
param
;
//p_intf->p_sys->b_intf_show = VLC_TRUE;
return
VLC_SUCCESS
;
}
modules/gui/qt4/menus.cpp
View file @
c37a9dfc
...
...
@@ -717,8 +717,9 @@ void QVLCMenu::CreateItem( QMenu *menu, const char *psz_var,
case
VLC_VAR_BOOL
:
var_Get
(
p_object
,
psz_var
,
&
val
);
val
.
b_bool
=
!
val
.
b_bool
;
CreateAndConnect
(
menu
,
psz_var
,
TEXT_OR_VAR
,
""
,
ITEM_CHECK
,
p_object
->
i_object_id
,
val
,
i_type
,
val
.
b_bool
);
p_object
->
i_object_id
,
val
,
i_type
,
!
val
.
b_bool
);
break
;
}
FREENULL
(
text
.
psz_string
);
...
...
modules/gui/qt4/qt4.cpp
View file @
c37a9dfc
...
...
@@ -156,6 +156,8 @@ static void Init( intf_thread_t *p_intf )
playlist_Control
(
THEPL
,
PLAYLIST_AUTOPLAY
,
VLC_FALSE
);
}
p_intf
->
pf_show_dialog
=
ShowDialog
;
app
->
setQuitOnLastWindowClosed
(
false
);
app
->
exec
();
MainInputManager
::
killInstance
();
...
...
modules/gui/qt4/qt4.hpp
View file @
c37a9dfc
...
...
@@ -82,6 +82,7 @@ struct intf_sys_t
static
int
DialogEvent_Type
=
QEvent
::
User
+
1
;
static
int
PLUndockEvent_Type
=
QEvent
::
User
+
2
;
static
int
PLDockEvent_Type
=
QEvent
::
User
+
3
;
static
int
SetVideoOnTopEvent_Type
=
QEvent
::
User
+
4
;
class
DialogEvent
:
public
QEvent
{
...
...
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