git.videolan.org
/
vlc.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Some more Qt playlist code
[vlc.git]
/
modules
/
gui
/
qt4
/
playlist_model.cpp
diff --git
a/modules/gui/qt4/playlist_model.cpp
b/modules/gui/qt4/playlist_model.cpp
index
e87772d
..
f5810dd
100644
(file)
--- a/
modules/gui/qt4/playlist_model.cpp
+++ b/
modules/gui/qt4/playlist_model.cpp
@@
-42,19
+42,31
@@
static int ItemDeleted( vlc_object_t *p_this, const char *psz_variable,
* Playlist item implementation
*************************************************************************/
* Playlist item implementation
*************************************************************************/
-PLItem::PLItem( int _i_id, int _i_input_id, PLItem *parent, PLModel *m)
+/**
+ * Column strings
+ * Title
+ * Artist
+ * Duration
+ */
+
+void PLItem::init( int _i_id, int _i_input_id, PLItem *parent, PLModel *m)
{
parentItem = parent;
i_id = _i_id; i_input_id = _i_input_id;
model = m;
{
parentItem = parent;
i_id = _i_id; i_input_id = _i_input_id;
model = m;
+ strings.append( "" );
+ strings.append( "" );
+ strings.append( "" );
+}
+
+PLItem::PLItem( int _i_id, int _i_input_id, PLItem *parent, PLModel *m)
+{
+ init( _i_id, _i_input_id, parent, m );
}
PLItem::PLItem( playlist_item_t * p_item, PLItem *parent, PLModel *m )
{
}
PLItem::PLItem( playlist_item_t * p_item, PLItem *parent, PLModel *m )
{
- i_id = p_item->i_id;
- i_input_id = p_item->p_input->i_id;
- parentItem = parent;
- model = m;
+ init( p_item->i_id, p_item->p_input->i_id, parent, m );
}
PLItem::~PLItem()
}
PLItem::~PLItem()
@@
-65,6
+77,7
@@
PLItem::~PLItem()
void PLItem::insertChild( PLItem *item, int i_pos, bool signal )
{
assert( model );
void PLItem::insertChild( PLItem *item, int i_pos, bool signal )
{
assert( model );
+ fprintf( stderr, "Inserting child \n" );
if( signal )
model->beginInsertRows( model->index( this , 0 ), i_pos, i_pos );
children.append( item );
if( signal )
model->beginInsertRows( model->index( this , 0 ), i_pos, i_pos );
children.append( item );
@@
-79,16
+92,24
@@
int PLItem::row() const
return 0;
}
return 0;
}
+void PLItem::update( playlist_item_t *p_item )
+{
+ assert( p_item->p_input->i_id == i_input_id );
+ strings[0] = QString::fromUtf8( p_item->p_input->psz_name );
+}
/*************************************************************************
* Playlist model implementation
*************************************************************************/
/*************************************************************************
* Playlist model implementation
*************************************************************************/
-PLModel::PLModel( playlist_item_t * p_root, int i_depth, QObject *parent)
+PLModel::PLModel( playlist_t *_p_playlist,
+ playlist_item_t * p_root, int i_depth, QObject *parent)
: QAbstractItemModel(parent)
{
: QAbstractItemModel(parent)
{
- rootItem = new PLItem( p_root, NULL, this );
-
+ rootItem = NULL;
+ rootItem = new PLItem( p_root, NULL, this );
+ fprintf( stderr, "%i -> %i, %i -> %i", p_root->i_id, rootItem->i_id, p_root->p_input->i_id, rootItem->i_input_id );
+ p_playlist= _p_playlist;
i_items_to_append = 0;
b_need_update = false;
i_cached_id = -1;
i_items_to_append = 0;
b_need_update = false;
i_cached_id = -1;
@@
-275,6
+296,7
@@
PLItem * PLModel::FindInner( PLItem *root, int i_id, bool b_input )
return childFound;
}
}
return childFound;
}
}
+ it++;
}
return NULL;
}
}
return NULL;
}
@@
-298,13
+320,15
@@
void PLModel::customEvent( QEvent *event )
/**** Events processing ****/
void PLModel::ProcessInputItemUpdate( int i_input_id )
{
/**** Events processing ****/
void PLModel::ProcessInputItemUpdate( int i_input_id )
{
- assert( i_input_id >= 0 );
- UpdateTreeItem( FindByInput( rootItem, i_input_id ), true );
+ if( i_input_id <= 0 ) return;
+ PLItem *item = FindByInput( rootItem, i_input_id );
+ fprintf( stderr, "Updating %i -> %p \n", i_input_id, item );
+ UpdateTreeItem( item, true );
}
void PLModel::ProcessItemRemoval( int i_id )
{
}
void PLModel::ProcessItemRemoval( int i_id )
{
-
assert( i_id >= 0 )
;
+
if( i_id <= 0 ) return
;
if( i_id == i_cached_id ) i_cached_id = -1;
i_cached_input_id = -1;
if( i_id == i_cached_id ) i_cached_id = -1;
i_cached_input_id = -1;
@@
-314,6
+338,7
@@
void PLModel::ProcessItemRemoval( int i_id )
void PLModel::ProcessItemAppend( playlist_add_t *p_add )
{
playlist_item_t *p_item = NULL;
void PLModel::ProcessItemAppend( playlist_add_t *p_add )
{
playlist_item_t *p_item = NULL;
+ PLItem *newItem = NULL;
i_items_to_append--;
if( b_need_update ) return;
i_items_to_append--;
if( b_need_update ) return;
@@
-323,7
+348,9
@@
void PLModel::ProcessItemAppend( playlist_add_t *p_add )
p_item = playlist_ItemGetById( p_playlist, p_add->i_item );
if( !p_item || p_item->i_flags & PLAYLIST_DBL_FLAG ) goto end;
p_item = playlist_ItemGetById( p_playlist, p_add->i_item );
if( !p_item || p_item->i_flags & PLAYLIST_DBL_FLAG ) goto end;
- nodeItem->appendChild( new PLItem( p_item, nodeItem, this ) );
+ newItem = new PLItem( p_item, nodeItem, this );
+ nodeItem->appendChild( newItem );
+ UpdateTreeItem( p_item, newItem, true );
end:
return;
end:
return;
@@
-362,6
+389,7
@@
void PLModel::UpdateNodeChildren( playlist_item_t *p_node, PLItem *root )
for( int i = 0; i < p_node->i_children ; i++ )
{
PLItem *newItem = new PLItem( p_node->pp_children[i], root, this );
for( int i = 0; i < p_node->i_children ; i++ )
{
PLItem *newItem = new PLItem( p_node->pp_children[i], root, this );
+ fprintf( stderr, "New %p\n", newItem );
root->appendChild( newItem, false );
UpdateTreeItem( newItem, false );
if( p_node->pp_children[i]->i_children != -1 )
root->appendChild( newItem, false );
UpdateTreeItem( newItem, false );
if( p_node->pp_children[i]->i_children != -1 )
@@
-371,13
+399,15
@@
void PLModel::UpdateNodeChildren( playlist_item_t *p_node, PLItem *root )
void PLModel::UpdateTreeItem( PLItem *item, bool signal )
{
void PLModel::UpdateTreeItem( PLItem *item, bool signal )
{
- playlist_item_t *p_item = playlist_ItemGetById( p_playlist,
rootI
tem->i_id );
+ playlist_item_t *p_item = playlist_ItemGetById( p_playlist,
i
tem->i_id );
UpdateTreeItem( p_item, item, signal );
}
void PLModel::UpdateTreeItem( playlist_item_t *p_item, PLItem *item, bool signal )
{
/// \todo
UpdateTreeItem( p_item, item, signal );
}
void PLModel::UpdateTreeItem( playlist_item_t *p_item, PLItem *item, bool signal )
{
/// \todo
+ fprintf( stderr, "Updating item %s\n", p_item->p_input->psz_name );
+ item->update( p_item );
if( signal )
{ // emit
}
if( signal )
{ // emit
}