Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc-2-2
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-2-2
Commits
bc778682
Commit
bc778682
authored
Feb 11, 2010
by
Jakob Leben
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Qt: add a list view
parent
01de7da1
Changes
7
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
284 additions
and
113 deletions
+284
-113
modules/gui/qt4/components/playlist/icon_view.cpp
modules/gui/qt4/components/playlist/icon_view.cpp
+169
-84
modules/gui/qt4/components/playlist/icon_view.hpp
modules/gui/qt4/components/playlist/icon_view.hpp
+30
-2
modules/gui/qt4/components/playlist/playlist_model.cpp
modules/gui/qt4/components/playlist/playlist_model.cpp
+7
-2
modules/gui/qt4/components/playlist/playlist_model.hpp
modules/gui/qt4/components/playlist/playlist_model.hpp
+2
-2
modules/gui/qt4/components/playlist/sorting.h
modules/gui/qt4/components/playlist/sorting.h
+1
-0
modules/gui/qt4/components/playlist/standardpanel.cpp
modules/gui/qt4/components/playlist/standardpanel.cpp
+63
-17
modules/gui/qt4/components/playlist/standardpanel.hpp
modules/gui/qt4/components/playlist/standardpanel.hpp
+12
-6
No files found.
modules/gui/qt4/components/playlist/icon_view.cpp
View file @
bc778682
This diff is collapsed.
Click to expand it.
modules/gui/qt4/components/playlist/icon_view.hpp
View file @
bc778682
...
...
@@ -30,12 +30,32 @@
class
QPainter
;
class
PLModel
;
class
PlListViewItemDelegate
:
public
QStyledItemDelegate
class
AbstractPlViewItemDelegate
:
public
QStyledItemDelegate
{
public:
AbstractPlViewItemDelegate
(
QWidget
*
parent
=
0
)
:
QStyledItemDelegate
(
parent
)
{}
QString
getMeta
(
const
QModelIndex
&
index
,
int
meta
)
const
;
void
paintPlayingItemBg
(
QPainter
*
painter
,
const
QStyleOptionViewItem
&
option
)
const
;
QPixmap
getArtPixmap
(
const
QModelIndex
&
index
,
const
QSize
&
size
)
const
;
};
class
PlIconViewItemDelegate
:
public
AbstractPlViewItemDelegate
{
Q_OBJECT
public:
PlListViewItemDelegate
(
QWidget
*
parent
=
0
)
:
QStyledItemDelegate
(
parent
)
{}
PlIconViewItemDelegate
(
QWidget
*
parent
=
0
)
:
AbstractPlViewItemDelegate
(
parent
)
{}
void
paint
(
QPainter
*
painter
,
const
QStyleOptionViewItem
&
option
,
const
QModelIndex
&
index
)
const
;
QSize
sizeHint
(
const
QStyleOptionViewItem
&
option
,
const
QModelIndex
&
index
)
const
;
};
class
PlListViewItemDelegate
:
public
AbstractPlViewItemDelegate
{
Q_OBJECT
public:
PlListViewItemDelegate
(
QWidget
*
parent
=
0
)
:
AbstractPlViewItemDelegate
(
parent
)
{}
void
paint
(
QPainter
*
painter
,
const
QStyleOptionViewItem
&
option
,
const
QModelIndex
&
index
)
const
;
QSize
sizeHint
(
const
QStyleOptionViewItem
&
option
,
const
QModelIndex
&
index
)
const
;
...
...
@@ -49,5 +69,13 @@ public:
PlIconView
(
PLModel
*
model
,
QWidget
*
parent
=
0
);
};
class
PlListView
:
public
QListView
{
Q_OBJECT
public:
PlListView
(
PLModel
*
model
,
QWidget
*
parent
=
0
);
};
#endif
modules/gui/qt4/components/playlist/playlist_model.cpp
View file @
bc778682
...
...
@@ -339,7 +339,12 @@ QVariant PLModel::data( const QModelIndex &index, int role ) const
QFont
f
;
f
.
setBold
(
true
);
return
QVariant
(
f
);
}
}
else
if
(
role
==
Qt
::
BackgroundRole
&&
isCurrent
(
index
)
)
{
return
QVariant
(
QBrush
(
Qt
::
gray
)
);
}
else
if
(
role
==
IsCurrentRole
)
return
QVariant
(
isCurrent
(
index
)
);
return
QVariant
();
}
...
...
@@ -532,7 +537,7 @@ PLItem * PLModel::findInner( PLItem *root, int i_id, bool b_input )
#undef CACHE
#undef ICACHE
int
PLModel
::
columnToMeta
(
int
_column
)
const
int
PLModel
::
columnToMeta
(
int
_column
)
{
int
meta
=
1
;
int
column
=
0
;
...
...
@@ -546,7 +551,7 @@ int PLModel::columnToMeta( int _column ) const
return
meta
;
}
int
PLModel
::
columnFromMeta
(
int
meta_col
)
const
int
PLModel
::
columnFromMeta
(
int
meta_col
)
{
int
meta
=
1
;
int
column
=
0
;
...
...
modules/gui/qt4/components/playlist/playlist_model.hpp
View file @
bc778682
...
...
@@ -90,6 +90,8 @@ public:
QModelIndex
currentIndex
();
bool
isCurrent
(
const
QModelIndex
&
index
)
const
;
int
itemId
(
const
QModelIndex
&
index
)
const
;
static
int
columnFromMeta
(
int
meta_column
);
static
int
columnToMeta
(
int
column
);
/* Actions */
void
popup
(
const
QModelIndex
&
index
,
const
QPoint
&
point
,
const
QModelIndexList
&
list
);
...
...
@@ -147,8 +149,6 @@ private:
PLItem
*
findById
(
PLItem
*
,
int
);
PLItem
*
findByInput
(
PLItem
*
,
int
);
PLItem
*
findInner
(
PLItem
*
,
int
,
bool
);
int
columnFromMeta
(
int
meta_column
)
const
;
int
columnToMeta
(
int
column
)
const
;
bool
canEdit
()
const
;
PLItem
*
p_cached_item
;
...
...
modules/gui/qt4/components/playlist/sorting.h
View file @
bc778682
...
...
@@ -73,6 +73,7 @@ static inline char * psz_column_meta( input_item_t *p_item, uint32_t i_column )
return
input_item_GetTitleFbName
(
p_item
);
case
COLUMN_DURATION
:
i_duration
=
input_item_GetDuration
(
p_item
)
/
1000000
;
if
(
i_duration
==
0
)
return
NULL
;
secstotimestr
(
psz_duration
,
i_duration
);
return
strdup
(
psz_duration
);
case
COLUMN_ARTIST
:
...
...
modules/gui/qt4/components/playlist/standardpanel.cpp
View file @
bc778682
...
...
@@ -52,6 +52,10 @@
#include "sorting.h"
static
const
QString
viewNames
[]
=
{
qtr
(
"Detailed View"
),
qtr
(
"Icon View"
),
qtr
(
"List View"
)
};
StandardPLPanel
::
StandardPLPanel
(
PlaylistWidget
*
_parent
,
intf_thread_t
*
_p_intf
,
playlist_t
*
p_playlist
,
...
...
@@ -64,6 +68,7 @@ StandardPLPanel::StandardPLPanel( PlaylistWidget *_parent,
iconView
=
NULL
;
treeView
=
NULL
;
listView
=
NULL
;
model
=
new
PLModel
(
p_playlist
,
p_intf
,
p_root
,
this
);
currentRootId
=
-
1
;
...
...
@@ -101,15 +106,13 @@ StandardPLPanel::StandardPLPanel( PlaylistWidget *_parent,
QActionGroup
*
actionGroup
=
new
QActionGroup
(
this
);
treeViewAction
=
actionGroup
->
addAction
(
"Detailed view"
);
treeViewAction
->
setCheckable
(
true
);
viewSelectionMapper
->
setMapping
(
treeViewAction
,
TREE_VIEW
);
CONNECT
(
treeViewAction
,
triggered
(),
viewSelectionMapper
,
map
()
);
iconViewAction
=
actionGroup
->
addAction
(
"Icon view"
);
iconViewAction
->
setCheckable
(
true
);
viewSelectionMapper
->
setMapping
(
iconViewAction
,
ICON_VIEW
);
CONNECT
(
iconViewAction
,
triggered
(),
viewSelectionMapper
,
map
()
);
for
(
int
i
=
0
;
i
<
VIEW_COUNT
;
i
++
)
{
viewActions
[
i
]
=
actionGroup
->
addAction
(
viewNames
[
i
]
);
viewActions
[
i
]
->
setCheckable
(
true
);
viewSelectionMapper
->
setMapping
(
viewActions
[
i
],
i
);
CONNECT
(
viewActions
[
i
],
triggered
(),
viewSelectionMapper
,
map
()
);
}
BUTTONACT
(
viewButton
,
cycleViews
()
);
QMenu
*
viewMenu
=
new
QMenu
(
this
);
...
...
@@ -138,7 +141,12 @@ StandardPLPanel::~StandardPLPanel()
getSettings
()
->
beginGroup
(
"Playlist"
);
if
(
treeView
)
getSettings
()
->
setValue
(
"headerStateV2"
,
treeView
->
header
()
->
saveState
()
);
getSettings
()
->
setValue
(
"view-mode"
,
(
currentView
==
iconView
)
?
ICON_VIEW
:
TREE_VIEW
);
if
(
currentView
==
treeView
)
getSettings
()
->
setValue
(
"view-mode"
,
TREE_VIEW
);
else
if
(
currentView
==
listView
)
getSettings
()
->
setValue
(
"view-mode"
,
LIST_VIEW
);
else
if
(
currentView
==
iconView
)
getSettings
()
->
setValue
(
"view-mode"
,
ICON_VIEW
);
getSettings
()
->
endGroup
();
}
...
...
@@ -287,6 +295,21 @@ void StandardPLPanel::createIconView()
layout
->
addWidget
(
iconView
,
1
,
0
,
1
,
-
1
);
}
void
StandardPLPanel
::
createListView
()
{
listView
=
new
PlListView
(
model
,
this
);
listView
->
setContextMenuPolicy
(
Qt
::
CustomContextMenu
);
CONNECT
(
listView
,
customContextMenuRequested
(
const
QPoint
&
),
this
,
popupPlView
(
const
QPoint
&
)
);
CONNECT
(
listView
,
activated
(
const
QModelIndex
&
),
this
,
activate
(
const
QModelIndex
&
)
);
CONNECT
(
locationBar
,
invoked
(
const
QModelIndex
&
),
listView
,
setRootIndex
(
const
QModelIndex
&
)
);
layout
->
addWidget
(
listView
,
1
,
0
,
1
,
-
1
);
}
void
StandardPLPanel
::
createTreeView
()
{
/* Create and configure the QTreeView */
...
...
@@ -354,9 +377,10 @@ void StandardPLPanel::showView( int i_view )
createTreeView
();
locationBar
->
setIndex
(
treeView
->
rootIndex
()
);
if
(
iconView
)
iconView
->
hide
();
if
(
listView
)
listView
->
hide
();
treeView
->
show
();
currentView
=
treeView
;
treeViewAction
->
setChecked
(
true
);
viewActions
[
i_view
]
->
setChecked
(
true
);
break
;
}
case
ICON_VIEW
:
...
...
@@ -364,11 +388,31 @@ void StandardPLPanel::showView( int i_view )
if
(
iconView
==
NULL
)
createIconView
();
locationBar
->
setIndex
(
iconView
->
rootIndex
()
);
if
(
treeView
)
treeView
->
hide
();
if
(
listView
)
{
listView
->
hide
();
iconView
->
setRootIndex
(
listView
->
rootIndex
()
);
}
locationBar
->
setIndex
(
iconView
->
rootIndex
()
);
iconView
->
show
();
currentView
=
iconView
;
iconViewAction
->
setChecked
(
true
);
viewActions
[
i_view
]
->
setChecked
(
true
);
break
;
}
case
LIST_VIEW
:
{
if
(
listView
==
NULL
)
createListView
();
if
(
treeView
)
treeView
->
hide
();
if
(
iconView
)
{
iconView
->
hide
();
listView
->
setRootIndex
(
iconView
->
rootIndex
()
);
}
locationBar
->
setIndex
(
listView
->
rootIndex
()
);
listView
->
show
();
currentView
=
listView
;
viewActions
[
i_view
]
->
setChecked
(
true
);
break
;
}
default:
;
...
...
@@ -380,6 +424,8 @@ void StandardPLPanel::cycleViews()
if
(
currentView
==
iconView
)
showView
(
TREE_VIEW
);
else
if
(
currentView
==
treeView
)
showView
(
LIST_VIEW
);
else
if
(
currentView
==
listView
)
showView
(
ICON_VIEW
);
else
assert
(
0
);
...
...
@@ -395,8 +441,8 @@ void StandardPLPanel::activate( const QModelIndex &index )
{
if
(
model
->
hasChildren
(
index
)
)
{
if
(
currentView
==
iconView
)
{
icon
View
->
setRootIndex
(
index
);
if
(
currentView
==
iconView
||
currentView
==
listView
)
{
current
View
->
setRootIndex
(
index
);
locationBar
->
setIndex
(
index
);
}
}
...
...
@@ -429,8 +475,8 @@ void StandardPLPanel::browseInto( input_item_t *p_input )
playlist_Unlock
(
THEPL
);
if
(
currentView
==
iconView
)
{
icon
View
->
setRootIndex
(
index
);
if
(
currentView
==
iconView
||
currentView
==
listView
)
{
current
View
->
setRootIndex
(
index
);
locationBar
->
setIndex
(
index
);
}
else
...
...
modules/gui/qt4/components/playlist/standardpanel.hpp
View file @
bc778682
...
...
@@ -46,6 +46,7 @@ class QPushButton;
class
QKeyEvent
;
class
QWheelEvent
;
class
PlIconView
;
class
PlListView
;
class
LocationBar
;
class
StandardPLPanel
:
public
QWidget
...
...
@@ -64,6 +65,14 @@ protected:
PLModel
*
model
;
private:
enum
{
TREE_VIEW
=
0
,
ICON_VIEW
,
LIST_VIEW
,
VIEW_COUNT
};
intf_thread_t
*
p_intf
;
QWidget
*
parent
;
...
...
@@ -74,8 +83,10 @@ private:
QTreeView
*
treeView
;
PlIconView
*
iconView
;
PlListView
*
listView
;
QAbstractItemView
*
currentView
;
QAction
*
viewActions
[
VIEW_COUNT
];
QAction
*
iconViewAction
,
*
treeViewAction
;
int
currentRootId
;
QSignalMapper
*
selectColumnsSigMapper
;
...
...
@@ -83,14 +94,9 @@ private:
int
last_activated_id
;
enum
{
TREE_VIEW
=
0
,
ICON_VIEW
,
COVER_VIEW
,
};
void
createTreeView
();
void
createIconView
();
void
createListView
();
public
slots
:
virtual
void
setRoot
(
playlist_item_t
*
);
...
...
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