QVariant MLModel::headerData( int section, Qt::Orientation orientation,
                                    int role ) const
{
    if (orientation == Qt::Horizontal && role == Qt::DisplayRole)
        return QVariant( psz_column_title( columnToMeta( section ) ) );
    else
        return QVariant();
}
Beispiel #2
0
QVariant VLCModel::headerData( int section, Qt::Orientation orientation,
                              int role ) const
{
    if (orientation != Qt::Horizontal || role != Qt::DisplayRole)
        return QVariant();

    int meta_col = columnToMeta( section );

    if( meta_col == COLUMN_END ) return QVariant();

    return QVariant( qfu( psz_column_title( meta_col ) ) );
}
Beispiel #3
0
/* Column manager */
void PLItem::updateColumnHeaders()
{
    item_col_strings.clear();

    assert( i_showflags < COLUMN_END );

    for( uint32_t i_index=1; i_index < COLUMN_END; i_index <<= 1 )
    {
        if( i_showflags & i_index )
            item_col_strings.append( qfu( psz_column_title( i_index ) ) );
    }
}
void StandardPLPanel::popupSelectColumn( QPoint )
{
    QMenu menu;
    assert( treeView );

    /* We do not offer the option to hide index 0 column, or
     * QTreeView will behave weird */
    for( int i = 1 << 1, j = 1; i < COLUMN_END; i <<= 1, j++ )
    {
        QAction* option = menu.addAction( qfu( psz_column_title( i ) ) );
        option->setCheckable( true );
        option->setChecked( !treeView->isColumnHidden( j ) );
        selectColumnsSigMapper->setMapping( option, j );
        CONNECT( option, triggered(), selectColumnsSigMapper, map() );
    }
    menu.exec( QCursor::pos() );
}
Beispiel #5
0
/*********** Popup *********/
bool StandardPLPanel::popup( const QPoint &point )
{
    QModelIndex index = popupIndex( currentView ); /* index for menu logic only. Do not store.*/
    VLCModel *model = qobject_cast<VLCModel *>(currentView->model());

#define ADD_MENU_ENTRY( icon, title, act ) \
    if ( model->isSupportedAction( act, index ) )\
    {\
    action = menu.addAction( icon, title ); \
    container.action = act; \
    action->setData( QVariant::fromValue( container ) );\
    }

    /* */
    QMenu menu;
    QAction *action;
    VLCModelSubInterface::actionsContainerType container;

    /* Play/Stream/Info static actions */

    ADD_MENU_ENTRY( QIcon( ":/menu/play" ), qtr(I_POP_PLAY),
                    VLCModelSubInterface::ACTION_PLAY )

    ADD_MENU_ENTRY( QIcon( ":/menu/stream" ), qtr(I_POP_STREAM),
                    VLCModelSubInterface::ACTION_STREAM )

    ADD_MENU_ENTRY( QIcon(), qtr(I_POP_SAVE),
                    VLCModelSubInterface::ACTION_SAVE );

    ADD_MENU_ENTRY( QIcon( ":/menu/info" ), qtr(I_POP_INFO),
                    VLCModelSubInterface::ACTION_INFO );

    menu.addSeparator();

    ADD_MENU_ENTRY( QIcon( ":/type/folder-grey" ), qtr(I_POP_EXPLORE),
                    VLCModelSubInterface::ACTION_EXPLORE );

    QIcon addIcon( ":/buttons/playlist/playlist_add" );

    ADD_MENU_ENTRY( addIcon, qtr(I_POP_NEWFOLDER),
                    VLCModelSubInterface::ACTION_CREATENODE )

    ADD_MENU_ENTRY( QIcon(), qtr(I_POP_RENAMEFOLDER),
                    VLCModelSubInterface::ACTION_RENAMENODE )

    menu.addSeparator();
    /* In PL or ML, allow to add a file/folder */
    ADD_MENU_ENTRY( addIcon, qtr(I_PL_ADDF),
                    VLCModelSubInterface::ACTION_ENQUEUEFILE )

    ADD_MENU_ENTRY( addIcon, qtr(I_PL_ADDDIR),
                    VLCModelSubInterface::ACTION_ENQUEUEDIR )

    ADD_MENU_ENTRY( addIcon, qtr(I_OP_ADVOP),
                    VLCModelSubInterface::ACTION_ENQUEUEGENERIC )

    ADD_MENU_ENTRY( QIcon(), qtr(I_PL_ADDPL),
                    VLCModelSubInterface::ACTION_ADDTOPLAYLIST );

    menu.addSeparator();
    ADD_MENU_ENTRY( QIcon(), qtr( I_PL_SAVE ),
                    VLCModelSubInterface::ACTION_SAVETOPLAYLIST );

    menu.addSeparator();

    /* Item removal */

    ADD_MENU_ENTRY( QIcon( ":/buttons/playlist/playlist_remove" ), qtr(I_POP_DEL),
                    VLCModelSubInterface::ACTION_REMOVE );

    ADD_MENU_ENTRY( QIcon( ":/toolbar/clear" ), qtr("Clear the playlist"),
                    VLCModelSubInterface::ACTION_CLEAR );

    menu.addSeparator();

    /* Playlist sorting */
    if ( model->isSupportedAction( VLCModelSubInterface::ACTION_SORT, index ) )
    {
        QMenu *sortingMenu = new QMenu( qtr( "Sort by" ), &menu );
        /* Choose what columns to show in sorting menu, not sure if this should be configurable*/
        QList<int> sortingColumns;
        sortingColumns << COLUMN_TITLE << COLUMN_ARTIST << COLUMN_ALBUM << COLUMN_TRACK_NUMBER << COLUMN_URI << COLUMN_DISC_NUMBER;
        container.action = VLCModelSubInterface::ACTION_SORT;
        foreach( int Column, sortingColumns )
        {
            action = sortingMenu->addAction( qfu( psz_column_title( Column ) ) + " " + qtr("Ascending") );
            container.column = model->columnFromMeta(Column) + 1;
            action->setData( QVariant::fromValue( container ) );

            action = sortingMenu->addAction( qfu( psz_column_title( Column ) ) + " " + qtr("Descending") );
            container.column = -1 * (model->columnFromMeta(Column)+1);
            action->setData( QVariant::fromValue( container ) );
        }
Beispiel #6
0
/*********** Popup *********/
bool StandardPLPanel::popup( const QModelIndex & index, const QPoint &point, const QModelIndexList &selectionlist )
{
    VLCModel *model = qobject_cast<VLCModel*>(currentView->model());
    QModelIndexList callerAsList;
    callerAsList << ( index.isValid() ? index : QModelIndex() );
    popupIndex = index; /* suitable for modal only */

#define ADD_MENU_ENTRY( icon, title, act, data ) \
    action = menu.addAction( icon, title ); \
    container.action = act; \
    container.indexes = data; \
    action->setData( QVariant::fromValue( container ) )

    /* */
    QMenu menu;
    QAction *action;
    PLModel::actionsContainerType container;

    /* Play/Stream/Info static actions */
    if( index.isValid() )
    {
        ADD_MENU_ENTRY( QIcon( ":/menu/play" ), qtr(I_POP_PLAY),
                        container.ACTION_PLAY, callerAsList );

        menu.addAction( QIcon( ":/menu/stream" ), qtr(I_POP_STREAM),
                        this, SLOT( popupStream() ) );

        menu.addAction( QIcon(), qtr(I_POP_SAVE),
                        this, SLOT( popupSave() ) );

        menu.addAction( QIcon( ":/menu/info" ), qtr(I_POP_INFO),
                        this, SLOT( popupInfoDialog() ) );

        menu.addSeparator();

        if( model->getURI( index ).startsWith( "file://" ) )
            menu.addAction( QIcon( ":/type/folder-grey" ), qtr(I_POP_EXPLORE),
                            this, SLOT( popupExplore() ) );
    }

    /* In PL or ML, allow to add a file/folder */
    if( model->canEdit() )
    {
        QIcon addIcon( ":/buttons/playlist/playlist_add" );

        if( model->isTree() )
            menu.addAction( addIcon, qtr(I_POP_NEWFOLDER),
                            this, SLOT( popupPromptAndCreateNode() ) );

        menu.addSeparator();
        if( model->isCurrentItem( model->rootIndex(), PLModel::IN_PLAYLIST ) )
        {
            menu.addAction( addIcon, qtr(I_PL_ADDF), THEDP, SLOT( simplePLAppendDialog()) );
            menu.addAction( addIcon, qtr(I_PL_ADDDIR), THEDP, SLOT( PLAppendDir()) );
            menu.addAction( addIcon, qtr(I_OP_ADVOP), THEDP, SLOT( PLAppendDialog()) );
        }
        else if( model->isCurrentItem( model->rootIndex(), PLModel::IN_MEDIALIBRARY ) )
        {
            menu.addAction( addIcon, qtr(I_PL_ADDF), THEDP, SLOT( simpleMLAppendDialog()) );
            menu.addAction( addIcon, qtr(I_PL_ADDDIR), THEDP, SLOT( MLAppendDir() ) );
            menu.addAction( addIcon, qtr(I_OP_ADVOP), THEDP, SLOT( MLAppendDialog() ) );
        }
    }

    if( index.isValid() )
    {
        if( !model->isCurrentItem( model->rootIndex(), PLModel::IN_PLAYLIST ) )
        {
            ADD_MENU_ENTRY( QIcon(), qtr("Add to playlist"),
                            container.ACTION_ADDTOPLAYLIST, selectionlist );
        }
    }

    menu.addSeparator();

    /* Item removal */
    if( index.isValid() )
    {
        ADD_MENU_ENTRY( QIcon( ":/buttons/playlist/playlist_remove" ), qtr(I_POP_DEL),
                        container.ACTION_REMOVE, selectionlist );
    }

    if( model->canEdit() ) {
        menu.addAction( QIcon( ":/toolbar/clear" ), qtr("Clear playlist"),
                        model, SLOT( clearPlaylist() ) );
    }

    menu.addSeparator();

    /* Playlist sorting */
    QMenu *sortingMenu = new QMenu( qtr( "Sort by" ) );
    /* Choose what columns to show in sorting menu, not sure if this should be configurable*/
    QList<int> sortingColumns;
    sortingColumns << COLUMN_TITLE << COLUMN_ARTIST << COLUMN_ALBUM << COLUMN_TRACK_NUMBER << COLUMN_URI;
    container.action = container.ACTION_SORT;
    container.indexes = callerAsList;
    foreach( int Column, sortingColumns )
    {
        action = sortingMenu->addAction( qfu( psz_column_title( Column ) ) + " " + qtr("Ascending") );
        container.column = model->columnFromMeta(Column) + 1;
        action->setData( QVariant::fromValue( container ) );

        action = sortingMenu->addAction( qfu( psz_column_title( Column ) ) + " " + qtr("Descending") );
        container.column = -1 * (model->columnFromMeta(Column)+1);
        action->setData( QVariant::fromValue( container ) );
    }