Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc-gpu
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-gpu
Commits
fed21848
Commit
fed21848
authored
Nov 07, 2009
by
Jakob Leben
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Qt4: switch PLModel to use PlaylistEventManager
parent
0ab64d44
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
15 additions
and
103 deletions
+15
-103
modules/gui/qt4/components/playlist/playlist.hpp
modules/gui/qt4/components/playlist/playlist.hpp
+2
-2
modules/gui/qt4/components/playlist/playlist_model.cpp
modules/gui/qt4/components/playlist/playlist_model.cpp
+9
-62
modules/gui/qt4/components/playlist/playlist_model.hpp
modules/gui/qt4/components/playlist/playlist_model.hpp
+4
-39
No files found.
modules/gui/qt4/components/playlist/playlist.hpp
View file @
fed21848
...
...
@@ -99,8 +99,8 @@ public:
~
PlaylistEventManager
();
signals:
void
itemAdded
(
int
,
i
nt
);
void
itemRemoved
(
int
);
void
itemAdded
(
int
i_item
,
int
i_pare
nt
);
void
itemRemoved
(
int
i_id
);
private:
static
int
itemAddedCb
(
vlc_object_t
*
,
const
char
*
,
...
...
modules/gui/qt4/components/playlist/playlist_model.cpp
View file @
fed21848
...
...
@@ -32,6 +32,7 @@
#include "components/playlist/playlist_model.hpp"
#include "dialogs/mediainfo.hpp"
#include "dialogs/playlist.hpp"
#include "playlist.hpp"
#include <vlc_intf_strings.h>
#include "pixmaps/types/type_unknown.xpm"
...
...
@@ -47,11 +48,6 @@
QIcon
PLModel
::
icons
[
ITEM_TYPE_NUMBER
];
static
int
ItemAppended
(
vlc_object_t
*
p_this
,
const
char
*
psz_variable
,
vlc_value_t
oval
,
vlc_value_t
nval
,
void
*
param
);
static
int
ItemDeleted
(
vlc_object_t
*
p_this
,
const
char
*
psz_variable
,
vlc_value_t
oval
,
vlc_value_t
nval
,
void
*
param
);
/*************************************************************************
* Playlist model implementation
*************************************************************************/
...
...
@@ -69,6 +65,7 @@ PLModel::PLModel( playlist_t *_p_playlist, /* THEPL */
{
p_intf
=
_p_intf
;
p_playlist
=
_p_playlist
;
plEM
=
new
PlaylistEventManager
(
_p_playlist
);
i_cached_id
=
-
1
;
i_cached_input_id
=
-
1
;
i_popup_item
=
i_popup_parent
=
-
1
;
...
...
@@ -89,18 +86,19 @@ PLModel::PLModel( playlist_t *_p_playlist, /* THEPL */
ADD_ICON
(
NODE
,
":/type/node"
);
#undef ADD_ICON
addCallbacks
();
rebuild
(
p_root
,
true
);
CONNECT
(
THEMIM
->
getIM
(),
metaChanged
(
input_item_t
*
),
this
,
processInputItemUpdate
(
input_item_t
*
)
);
CONNECT
(
THEMIM
,
inputChanged
(
input_thread_t
*
),
this
,
processInputItemUpdate
(
input_thread_t
*
)
);
CONNECT
(
plEM
,
itemAdded
(
int
,
int
),
this
,
processItemAppend
(
int
,
int
)
);
CONNECT
(
plEM
,
itemRemoved
(
int
),
this
,
processItemRemoval
(
int
)
);
}
PLModel
::~
PLModel
()
{
delCallbacks
();
delete
rootItem
;
delete
plEM
;
}
Qt
::
DropActions
PLModel
::
supportedDropActions
()
const
...
...
@@ -290,20 +288,6 @@ void PLModel::removeItem( int i_id )
removeItem
(
item
);
}
/* callbacks and slots */
void
PLModel
::
addCallbacks
()
{
/* One item has been updated */
var_AddCallback
(
p_playlist
,
"playlist-item-append"
,
ItemAppended
,
this
);
var_AddCallback
(
p_playlist
,
"playlist-item-deleted"
,
ItemDeleted
,
this
);
}
void
PLModel
::
delCallbacks
()
{
var_DelCallback
(
p_playlist
,
"playlist-item-append"
,
ItemAppended
,
this
);
var_DelCallback
(
p_playlist
,
"playlist-item-deleted"
,
ItemDeleted
,
this
);
}
void
PLModel
::
activateItem
(
const
QModelIndex
&
index
)
{
assert
(
index
.
isValid
()
);
...
...
@@ -619,20 +603,6 @@ bool PLModel::canEdit() const
);
}
/************************* Updates handling *****************************/
void
PLModel
::
customEvent
(
QEvent
*
event
)
{
int
type
=
event
->
type
();
if
(
type
!=
ItemAppend_Type
&&
type
!=
ItemDelete_Type
)
return
;
PLEvent
*
ple
=
static_cast
<
PLEvent
*>
(
event
);
if
(
type
==
ItemAppend_Type
)
processItemAppend
(
&
ple
->
add
);
else
if
(
type
==
ItemDelete_Type
)
processItemRemoval
(
ple
->
i_id
);
}
/**** Events processing ****/
void
PLModel
::
processInputItemUpdate
(
input_thread_t
*
p_input
)
...
...
@@ -664,19 +634,19 @@ void PLModel::processItemRemoval( int i_id )
removeItem
(
i_id
);
}
void
PLModel
::
processItemAppend
(
const
playlist_add_t
*
p_add
)
void
PLModel
::
processItemAppend
(
int
i_item
,
int
i_parent
)
{
playlist_item_t
*
p_item
=
NULL
;
PLItem
*
newItem
=
NULL
;
PLItem
*
nodeItem
=
findById
(
rootItem
,
p_add
->
i_node
);
PLItem
*
nodeItem
=
findById
(
rootItem
,
i_parent
);
if
(
!
nodeItem
)
return
;
foreach
(
PLItem
*
existing
,
nodeItem
->
children
)
if
(
existing
->
i_id
==
p_add
->
i_item
)
return
;
if
(
existing
->
i_id
==
i_item
)
return
;
PL_LOCK
;
p_item
=
playlist_ItemGetById
(
p_playlist
,
p_add
->
i_item
);
p_item
=
playlist_ItemGetById
(
p_playlist
,
i_item
);
if
(
!
p_item
||
p_item
->
i_flags
&
PLAYLIST_DBL_FLAG
)
goto
end
;
newItem
=
new
PLItem
(
p_item
,
nodeItem
);
...
...
@@ -1100,26 +1070,3 @@ void PLModel::popupSortDesc()
{
sort
(
i_popup_parent
,
i_popup_column
,
Qt
::
DescendingOrder
);
}
/**********************************************************************
* Playlist callbacks
**********************************************************************/
static
int
ItemDeleted
(
vlc_object_t
*
p_this
,
const
char
*
psz_variable
,
vlc_value_t
oval
,
vlc_value_t
nval
,
void
*
param
)
{
PLModel
*
p_model
=
(
PLModel
*
)
param
;
PLEvent
*
event
=
new
PLEvent
(
ItemDelete_Type
,
nval
.
i_int
);
QApplication
::
postEvent
(
p_model
,
event
);
return
VLC_SUCCESS
;
}
static
int
ItemAppended
(
vlc_object_t
*
p_this
,
const
char
*
psz_variable
,
vlc_value_t
oval
,
vlc_value_t
nval
,
void
*
param
)
{
PLModel
*
p_model
=
(
PLModel
*
)
param
;
const
playlist_add_t
*
p_add
=
(
playlist_add_t
*
)
nval
.
p_address
;
PLEvent
*
event
=
new
PLEvent
(
p_add
);
QApplication
::
postEvent
(
p_model
,
event
);
return
VLC_SUCCESS
;
}
modules/gui/qt4/components/playlist/playlist_model.hpp
View file @
fed21848
...
...
@@ -44,41 +44,10 @@
#include <QAbstractItemModel>
#include <QVariant>
class
PlaylistEventManager
;
class
QSignalMapper
;
class
PLItem
;
#define DEPTH_PL -1
#define DEPTH_SEL 1
enum
{
ItemUpdate_Type
=
QEvent
::
User
+
PLEventType
+
2
,
ItemDelete_Type
=
QEvent
::
User
+
PLEventType
+
3
,
ItemAppend_Type
=
QEvent
::
User
+
PLEventType
+
4
,
};
class
PLEvent
:
public
QEvent
{
public:
PLEvent
(
int
type
,
int
id
)
:
QEvent
(
(
QEvent
::
Type
)(
type
)
)
{
i_id
=
id
;
add
.
i_node
=
-
1
;
add
.
i_item
=
-
1
;
};
PLEvent
(
const
playlist_add_t
*
a
)
:
QEvent
(
(
QEvent
::
Type
)(
ItemAppend_Type
)
)
{
add
=
*
a
;
};
virtual
~
PLEvent
()
{
};
int
i_id
;
playlist_add_t
add
;
};
class
PLModel
:
public
QAbstractItemModel
{
Q_OBJECT
...
...
@@ -131,6 +100,7 @@ public:
private:
/* General */
PlaylistEventManager
*
plEM
;
PLItem
*
rootItem
;
PLItem
*
currentItem
;
...
...
@@ -140,13 +110,6 @@ private:
static
QIcon
icons
[
ITEM_TYPE_NUMBER
];
/* Callbacks related */
void
addCallbacks
();
void
delCallbacks
();
void
customEvent
(
QEvent
*
);
void
processItemRemoval
(
int
i_id
);
void
processItemAppend
(
const
playlist_add_t
*
p_add
);
/* Actions */
void
recurseDelete
(
QList
<
PLItem
*>
children
,
QModelIndexList
*
fullList
);
void
doDeleteItem
(
PLItem
*
item
,
QModelIndexList
*
fullList
);
...
...
@@ -199,6 +162,8 @@ private slots:
void
popupSortDesc
();
void
processInputItemUpdate
(
input_item_t
*
);
void
processInputItemUpdate
(
input_thread_t
*
p_input
);
void
processItemRemoval
(
int
i_id
);
void
processItemAppend
(
int
item
,
int
parent
);
};
#endif
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