QVariant MLModel::data( const QModelIndex &index, const int role ) const { if( index.isValid() ) { if( role == Qt::DisplayRole || role == Qt::EditRole ) { MLItem *it = static_cast<MLItem*>( index.internalPointer() ); if( !it ) return QVariant(); QVariant tmp = it->data( columnType( index.column() ) ); return tmp; } else if( role == Qt::DecorationRole && index.column() == 0 ) { /* FIXME: (see ml_type_e) media->type uses flags for media type information */ return QVariant( icons[ getInputItem(index)->i_type ] ); } else if( role == IsLeafNodeRole ) return isLeaf( index ); else if( role == IsCurrentsParentNodeRole ) return isParent( index, currentIndex() ); else if( role == IsCurrentRole ) { return QVariant( isCurrent( index ) ); } } return QVariant(); }
void MLModel::popupInfo() { MLItem *item = static_cast< MLItem* >( current_index.internalPointer() ); input_item_t* p_input = ml_CreateInputItem( p_ml, item->id() ); MediaInfoDialog *mid = new MediaInfoDialog( p_intf, p_input ); mid->setParent( PlaylistDialog::getInstance( p_intf ), Qt::Dialog ); mid->show(); }
void MLModel::play( const QModelIndex &idx ) { if( !idx.isValid() ) return; MLItem *item = static_cast< MLItem* >( idx.internalPointer() ); if( !item ) return; AddItemToPlaylist( item->id(), true, p_ml, true ); }
bool MLModel::setData( const QModelIndex &idx, const QVariant &value, int role ) { if( role != Qt::EditRole || !idx.isValid() ) return false; MLItem *media = static_cast<MLItem*>( idx.internalPointer() ); media->setData( columnType( idx.column() ), value ); emit dataChanged( idx, idx ); return true; }
QStringList MLModel::selectedURIs() { QStringList list; for( int i = 0; i < current_selection.size(); i++ ) { QModelIndex idx = current_selection.value(i); MLItem *item = static_cast< MLItem* >( idx.internalPointer() ); list.append( QString( item->getUri().toString() ) ); } return list; }
QModelIndex MLModel::getIndexByMLID( int id ) const { for( int i = 0; i < rowCount( ); i++ ) { QModelIndex idx = index( i, 0 ); MLItem *item = static_cast< MLItem* >( idx.internalPointer() ); if( item->id() == id ) return idx; } return QModelIndex(); }
QMimeData* MLModel::mimeData( const QModelIndexList &indexes ) const { QList< QUrl > urls; QList< int > rows; foreach( QModelIndex idx, indexes ) { if( rows.contains( idx.row() ) ) continue; rows.append( idx.row() ); MLItem* item = static_cast<MLItem*>( idx.internalPointer() ); urls.append( item->getUri() ); } QMimeData *data = new QMimeData; data->setUrls( urls ); return data; }
QVariant MLModel::data( const QModelIndex &index, const int role ) const { if( index.isValid() ) { if( role == Qt::DisplayRole || role == Qt::EditRole ) { MLItem *it = static_cast<MLItem*>( index.internalPointer() ); if( !it ) return QVariant(); QVariant tmp = it->data( index.column() ); return tmp; } else if( role == VLCModel::IsLeafNodeRole ) return QVariant( true ); else if( role == VLCModel::IsCurrentsParentNodeRole ) return QVariant( false ); } return QVariant(); }
static int mediaDeleted( vlc_object_t *p_this, char const *psz_var, vlc_value_t oldval, vlc_value_t newval, void *data ) { VLC_UNUSED( p_this ); VLC_UNUSED( psz_var ); VLC_UNUSED( oldval ); MLModel* p_model = ( MLModel* )data; QModelIndex remove_idx = QModelIndex(); for( int i = 0; i < p_model->rowCount( ); i++ ) { QModelIndex idx = p_model->index( i, 0 ); MLItem *item = static_cast< MLItem* >( idx.internalPointer() ); if( item->id() == newval.i_int ) { remove_idx = idx; break; } } if( remove_idx.isValid() ) p_model->remove( remove_idx ); return VLC_SUCCESS; }