亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? playlistbrowseritem.cpp

?? Amarok是一款在LINUX或其他類UNIX操作系統中運行的音頻播放器軟件。 經過兩年開發后
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
        menu.insertItem( SmallIconSet(Amarok::icon( "add_playlist" )), i18n("Create Playlist..."), PLAYLIST );        menu.insertItem( SmallIconSet(Amarok::icon( "add_playlist" )), i18n("Import Playlist..."), PLAYLIST_IMPORT );    }    else if( parentCat == static_cast<QListViewItem*>(PlaylistBrowser::instance()->m_smartCategory) )        menu.insertItem( SmallIconSet(Amarok::icon( "add_playlist" )), i18n("New Smart Playlist..."), SMART );    else if( parentCat == static_cast<QListViewItem*>(PlaylistBrowser::instance()->m_dynamicCategory) )        menu.insertItem( SmallIconSet(Amarok::icon( "add_playlist" )), i18n("New Dynamic Playlist..."), DYNAMIC );    else if( parentCat == static_cast<QListViewItem*>(PlaylistBrowser::instance()->m_streamsCategory) )        menu.insertItem( SmallIconSet(Amarok::icon( "add_playlist" )), i18n("Add Radio Stream..."), STREAM );    else if( parentCat == static_cast<QListViewItem*>(PlaylistBrowser::instance()->m_lastfmCategory) )    {        menu.insertItem( SmallIconSet(Amarok::icon( "add_playlist" )), i18n("Add Last.fm Radio..."), LASTFM );        menu.insertItem( SmallIconSet(Amarok::icon( "add_playlist" )), i18n("Add Custom Last.fm Radio..."), LASTFMCUSTOM );    }    else if( parentCat == static_cast<QListViewItem*>(PlaylistBrowser::instance()->m_podcastCategory) )    {        isPodcastFolder = true;        menu.insertItem( SmallIconSet( Amarok::icon( "add_playlist" ) ), i18n("Add Podcast..."), PODCAST );        menu.insertItem( SmallIconSet( Amarok::icon( "refresh" ) ), i18n("Refresh All Podcasts"), REFRESH );        menu.insertSeparator();        menu.insertItem( SmallIconSet( Amarok::icon( "configure" ) ), i18n( "&Configure Podcasts..." ), CONFIG );        if( parentCat->childCount() == 0 )            menu.setItemEnabled( CONFIG, false );        if( parentCat == this )            menu.insertItem( SmallIconSet( Amarok::icon( "configure" ) ), i18n("Scan Interval..."), INTERVAL );    }    menu.insertSeparator();    menu.insertItem( SmallIconSet( Amarok::icon( "files" ) ), i18n("Create Sub-Folder"), CREATE );    QListViewItem *tracker = 0;    PlaylistCategory *newFolder = 0;    int c;    QString name;    switch( menu.exec( position ) ) {        case RENAME:            PlaylistBrowser::instance()->renameSelectedItem();            break;        case REMOVE:            PlaylistBrowser::instance()->removeSelectedItems();            break;        case PLAYLIST:            PlaylistBrowser::instance()->createPlaylist( this, false );            break;        case PLAYLIST_IMPORT:            PlaylistBrowser::instance()->openPlaylist( this );            break;        case SMART:            PlaylistBrowser::instance()->addSmartPlaylist( this );            break;        case STREAM:            PlaylistBrowser::instance()->addStream( this );            break;        case DYNAMIC:            ConfigDynamic::dynamicDialog( PlaylistBrowser::instance() );            break;        case LASTFM:            PlaylistBrowser::instance()->addLastFmRadio( this );            break;        case LASTFMCUSTOM:            PlaylistBrowser::instance()->addLastFmCustomRadio( this );            break;        case PODCAST:            PlaylistBrowser::instance()->addPodcast( this );            break;        case REFRESH:            PlaylistBrowser::instance()->refreshPodcasts( this );            break;        case CONFIG:            PlaylistBrowser::instance()->configurePodcasts( this );            break;        case CREATE:            tracker = firstChild();            for( c = 0 ; isCategory( tracker ); tracker = tracker->nextSibling() )            {                if( tracker->text(0).startsWith( i18n("Folder") ) )                    c++;                if( !isCategory( tracker->nextSibling() ) )                    break;            }            name = i18n("Folder");            if( c ) name = i18n("Folder %1").arg(c);            if( tracker == firstChild() && !isCategory( tracker ) ) tracker = 0;            newFolder = new PlaylistCategory( this, tracker, name, true );            newFolder->startRename( 0 );            if( isPodcastFolder )            {                c = CollectionDB::instance()->addPodcastFolder( newFolder->text(0), id(), false );                newFolder->setId( c );            }            break;        case INTERVAL:            PlaylistBrowser::instance()->changePodcastInterval();            break;    }}voidPlaylistCategory::paintCell( QPainter *p, const QColorGroup &cg, int column, int width, int align ){    QFont font( p->font() );    if( !m_folder ) {        font.setBold( true );    }    p->setFont( font );    KListViewItem::paintCell( p, cg, column, width, align );}////////////////////////////////////////////////////////////////////////////////    CLASS PlaylistEntry////////////////////////////////////////////////////////////////////////////PlaylistEntry::PlaylistEntry( QListViewItem *parent, QListViewItem *after, const KURL &url, int tracks, int length )    : PlaylistBrowserEntry( parent, after )    , m_url( url )    , m_length( length )    , m_trackCount( tracks )    , m_loading( false )    , m_loaded( false )    , m_dynamic( false )    , m_loading1( new QPixmap( locate("data", "amarok/images/loading1.png" ) ) )    , m_loading2( new QPixmap( locate("data", "amarok/images/loading2.png" ) ) )    , m_lastTrack( 0 ){    m_trackList.setAutoDelete( true );    tmp_droppedTracks.setAutoDelete( false );    setDragEnabled( true );    setRenameEnabled( 0, false );    setExpandable( true );    setPixmap( 0, SmallIcon( Amarok::icon( "playlist" ) ) );    if( !m_trackCount )    {        setText(0, i18n("Loading Playlist") );        load();   //load the playlist file    }    // set text is called from within customEvent()}PlaylistEntry::PlaylistEntry( QListViewItem *parent, QListViewItem *after, const QDomElement &xmlDefinition )    : PlaylistBrowserEntry( parent, after )    , m_loading( false )    , m_loaded( false )    , m_dynamic( false )    , m_loading1( new QPixmap( locate("data", "amarok/images/loading1.png" ) ) )    , m_loading2( new QPixmap( locate("data", "amarok/images/loading2.png" ) ) )    , m_lastTrack( 0 ){    m_url.setPath( xmlDefinition.attribute( "file" ) );    m_trackCount = xmlDefinition.namedItem( "tracks" ).toElement().text().toInt();    m_length = xmlDefinition.namedItem( "length" ).toElement().text().toInt();    QString title = xmlDefinition.attribute( "title" );    if( title.isEmpty() )    {        title = fileBaseName( m_url.path() );        title.replace( '_', ' ' );    }    setText( 0, title );    m_trackList.setAutoDelete( true );    tmp_droppedTracks.setAutoDelete( false );    setDragEnabled( true );    setRenameEnabled( 0, false );    setExpandable( true );    setPixmap( 0, SmallIcon( Amarok::icon( "playlist" ) ) );    if( !m_trackCount )    {        setText(0, i18n("Loading Playlist") );        load();   //load the playlist file    }    // set text is called from within customEvent()}PlaylistEntry::~PlaylistEntry(){    m_trackList.clear();    tmp_droppedTracks.setAutoDelete( true );    tmp_droppedTracks.clear();}void PlaylistEntry::load(){    if( m_loading )  return;    m_trackList.clear();    m_length = 0;    m_loaded = false;    m_loading = true;    //starts loading animation    m_iconCounter = 1;    startAnimation();    connect( &m_animationTimer, SIGNAL(timeout()), this, SLOT(slotAnimation()) );    //delete all children, so that we don't duplicate things    while( firstChild() )        delete firstChild();     //read the playlist file in a thread    ThreadManager::instance()->queueJob( new PlaylistReader( this, m_url.path() ) );}void PlaylistEntry::startAnimation(){    if( !m_animationTimer.isActive() )        m_animationTimer.start( ANIMATION_INTERVAL );}void PlaylistEntry::stopAnimation(){    m_animationTimer.stop();    m_dynamic ?        setPixmap( 0, SmallIcon( Amarok::icon( "favorites" ) ) ):        setPixmap( 0, SmallIcon( Amarok::icon( "playlist" ) ) );}void PlaylistEntry::slotAnimation(){    m_iconCounter % 2 ?        setPixmap( 0, *m_loading1 ):        setPixmap( 0, *m_loading2 );    m_iconCounter++;}void PlaylistEntry::insertTracks( QListViewItem *after, KURL::List list ){    QValueList<MetaBundle> bundles;    foreachType( KURL::List, list )        bundles += MetaBundle( *it );    insertTracks( after, bundles );}void PlaylistEntry::insertTracks( QListViewItem *after, QValueList<MetaBundle> bundles ){    int pos = 0;    if( after ) {        pos = m_trackList.find( static_cast<PlaylistTrackItem*>(after)->trackInfo() ) + 1;        if( pos == -1 )            return;    }    uint k = 0;    foreachType( QValueList<MetaBundle>, bundles )    {        TrackItemInfo *newInfo = new TrackItemInfo( *it );        m_length += newInfo->length();        m_trackCount++;        if( after ) {            m_trackList.insert( pos+k, newInfo );            if( isOpen() )                after = new PlaylistTrackItem( this, after, newInfo );        }        else {            if( m_loaded && !m_loading ) {                m_trackList.append( newInfo );                if( isOpen() )  //append the track item to the playlist                    m_lastTrack = new PlaylistTrackItem( this, m_lastTrack, newInfo );            }            else                tmp_droppedTracks.append( newInfo );        }        ++k;    }    if ( !m_loading ) {        PlaylistBrowser::instance()->savePlaylist( this );        if ( !m_loaded )            tmp_droppedTracks.clear(); // after saving, dropped tracks are on the file    }}void PlaylistEntry::removeTrack( QListViewItem *item, bool isLast ){    #define item static_cast<PlaylistTrackItem*>(item)    //remove a track and update playlist stats    TrackItemInfo *info = item->trackInfo();    m_length -= info->length();    m_trackCount--;    m_trackList.remove( info );    if( item == m_lastTrack ) {        QListViewItem *above = item->itemAbove();        m_lastTrack = above ? static_cast<PlaylistTrackItem *>( above ) : 0;    }    delete item;    #undef item    if( isLast )        PlaylistBrowser::instance()->savePlaylist( this );}void PlaylistEntry::customEvent( QCustomEvent *e ){    if( e->type() != (int)PlaylistReader::JobFinishedEvent )        return;#define playlist static_cast<PlaylistReader*>(e)    QString str = playlist->title;    if ( str.isEmpty() )        str = fileBaseName( m_url.path() );    str.replace( '_', ' ' );    setText( 0, str );    foreachType( BundleList, playlist->bundles )    {        const MetaBundle &b = *it;        TrackItemInfo *info = new TrackItemInfo( b );        m_trackList.append( info );        m_length += info->length();        if( isOpen() )            m_lastTrack = new PlaylistTrackItem( this, m_lastTrack, info );    }#undef playlist    //the tracks dropped on the playlist while it wasn't loaded are added to the track list    if( tmp_droppedTracks.count() ) {        for ( TrackItemInfo *info = tmp_droppedTracks.first(); info; info = tmp_droppedTracks.next() ) {            m_trackList.append( info );        }        tmp_droppedTracks.clear();    }    m_loading = false;    m_loaded = true;    stopAnimation();  //stops the loading animation    if( m_trackCount && !m_dynamic && !isDynamic() ) setOpen( true );    else listView()->repaintItem( this );    m_trackCount = m_trackList.count();}/** *  We destroy the tracks on collapsing the entry.  However, if we are using dynamic mode, then we leave them *  because adding from a custom list is problematic if the entry has no children.  Using load() is not effective *  since this is a threaded operation and would require pulling apart the entire class to make it work. */void PlaylistEntry::setOpen( bool open ){    if( open == isOpen())        return;    if( open ) {    //expand        if( m_loaded ) {            //create track items            for ( TrackItemInfo *info = m_trackList.first(); info; info = m_trackList.next() )                m_lastTrack = new PlaylistTrackItem( this, m_lastTrack, info );        }        else if( !isDynamic() || !m_dynamic ) {            load();            return;        }    }    else if( !isDynamic() || !m_dynamic ) {    //collapse        //delete all children        while( firstChild() )            delete firstChild();        m_lastTrack = 0;    }    QListViewItem::setOpen( open );    PlaylistBrowser::instance()->savePlaylists();}int PlaylistEntry::compare( QListViewItem* i, int /*col*/ ) const{    PlaylistEntry* item = static_cast<PlaylistEntry*>(i);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99re热这里只有精品免费视频| 中文字幕在线不卡一区| 日韩国产在线观看| 日韩一级片在线观看| 蜜桃av一区二区三区| 2020日本不卡一区二区视频| 韩国女主播成人在线| 国产午夜精品久久久久久免费视| 岛国精品一区二区| 一区二区三区国产精品| 欧美亚洲综合网| 麻豆成人久久精品二区三区红 | 久久影院视频免费| 国产成人av电影在线| 国产精品美女久久久久高潮| 91视视频在线观看入口直接观看www | 中文字幕综合网| 色女孩综合影院| 日本午夜一区二区| 欧美国产日本韩| 欧美亚州韩日在线看免费版国语版| 日本特黄久久久高潮| xvideos.蜜桃一区二区| 91在线小视频| 久久99蜜桃精品| 自拍偷自拍亚洲精品播放| 欧美日韩视频在线观看一区二区三区| 看片的网站亚洲| 亚洲婷婷在线视频| 日韩欧美在线观看一区二区三区| 成人动漫一区二区| 免费久久99精品国产| 国产精品女上位| 51午夜精品国产| www.欧美日韩| 精品一区二区三区的国产在线播放| 国产精品久久三区| 欧美一级夜夜爽| 一道本成人在线| 国产一区二区久久| 丝袜诱惑制服诱惑色一区在线观看| 精品国产精品一区二区夜夜嗨| 91免费视频网| 成人一级黄色片| 日本不卡一区二区三区高清视频| 国产精品美女一区二区| 日韩欧美一区二区不卡| 91精品1区2区| av一区二区三区四区| 久久激情综合网| 亚洲v中文字幕| 亚洲精品免费一二三区| 欧美韩国一区二区| 日韩精品在线一区| 777色狠狠一区二区三区| 91美女精品福利| 丁香啪啪综合成人亚洲小说| 麻豆精品一区二区综合av| 亚洲大型综合色站| 亚洲免费三区一区二区| 中国av一区二区三区| 久久你懂得1024| 欧美大片日本大片免费观看| 欧美人xxxx| 欧美日韩性生活| 欧美亚洲综合色| 色天天综合久久久久综合片| 成人午夜激情视频| 国产精品亚洲视频| 国产一区二区久久| 国产揄拍国内精品对白| 久久99国产精品尤物| 另类成人小视频在线| 免费在线看一区| 看电视剧不卡顿的网站| 久久精品国产久精国产爱| 男女男精品网站| 麻豆精品视频在线观看| 免费成人在线观看| 久久精品国产免费看久久精品| 日本美女一区二区| 精品夜夜嗨av一区二区三区| 精品一区二区三区影院在线午夜| 美女视频第一区二区三区免费观看网站| 日产精品久久久久久久性色| 日本欧美在线看| 国模大尺度一区二区三区| 国产一区二区在线视频| 国产精品亚洲成人| 99久久久国产精品免费蜜臀| 99re热这里只有精品免费视频| 色婷婷综合久久久中文一区二区 | 精品一区二区三区日韩| 激情亚洲综合在线| 东方aⅴ免费观看久久av| 不卡电影免费在线播放一区| 91影视在线播放| 欧美狂野另类xxxxoooo| 精品少妇一区二区三区视频免付费 | 欧美不卡一区二区| 亚洲国产精品精华液ab| 日韩美女视频一区二区| 午夜精品久久久久久久久久| 久久99久久久久久久久久久| 国产精品1区二区.| 色欧美片视频在线观看在线视频| 欧美日韩在线一区二区| 精品国产91洋老外米糕| 中文字幕在线一区免费| 亚洲成人综合视频| 国产乱码精品一区二区三区五月婷| 成人在线一区二区三区| 欧美日韩中文字幕一区| 26uuu亚洲综合色| 亚洲女人的天堂| 男男视频亚洲欧美| thepron国产精品| 欧美一区二区三区系列电影| 久久精品一区二区三区不卡牛牛| 伊人婷婷欧美激情| 精品中文字幕一区二区| 日本电影亚洲天堂一区| 久久免费精品国产久精品久久久久| 国产精品美女久久久久高潮| 日韩av一级电影| 成人动漫在线一区| 精品免费国产二区三区 | 久久亚洲精精品中文字幕早川悠里| 国产精品久久久久久久第一福利 | 成人中文字幕在线| 制服.丝袜.亚洲.中文.综合| 国产欧美一区二区精品婷婷| 日韩电影在线一区| 一本大道久久a久久综合婷婷 | 欧美激情一区二区三区全黄| 午夜精品久久久久久不卡8050| 成人精品视频一区二区三区尤物| 欧美一区二区性放荡片| 亚洲综合色在线| 大胆欧美人体老妇| ww亚洲ww在线观看国产| 日本特黄久久久高潮| 色综合视频在线观看| 久久欧美一区二区| 蜜桃一区二区三区四区| 日本二三区不卡| 日韩一区欧美小说| 高清免费成人av| 久久久一区二区三区捆绑**| 日本aⅴ精品一区二区三区 | 欧美军同video69gay| 18涩涩午夜精品.www| 福利91精品一区二区三区| 日韩精品一区二区三区在线播放 | 91麻豆精品在线观看| 久久精品欧美日韩精品| 麻豆91免费看| 欧美一区午夜精品| 日日欢夜夜爽一区| 欧美性受极品xxxx喷水| 一区二区三区在线免费视频| av在线播放不卡| 综合欧美亚洲日本| 91色视频在线| 曰韩精品一区二区| 91久久免费观看| 亚洲亚洲人成综合网络| 欧美午夜精品电影| 午夜视频久久久久久| 欧美午夜影院一区| 午夜在线成人av| 欧美喷潮久久久xxxxx| 三级在线观看一区二区| 欧美电影一区二区| 日本亚洲三级在线| 欧美xingq一区二区| 国产乱子伦视频一区二区三区 | 国产精品一品二品| 国产欧美日韩精品a在线观看| 国产99精品国产| 国产精品白丝在线| 欧美在线免费观看视频| 亚洲v中文字幕| 精品国产一区二区国模嫣然| 国产呦精品一区二区三区网站| 久久综合九色综合久久久精品综合| 韩国成人精品a∨在线观看| 国产日本亚洲高清| 99久久婷婷国产| 亚洲一区二区av在线| 日韩精品资源二区在线| 国产超碰在线一区| 亚洲综合在线观看视频| 欧美欧美午夜aⅴ在线观看| 经典三级视频一区| 中文字幕一区二区三区四区| 欧美在线一区二区三区| 免费在线观看日韩欧美| 国产精品无人区| 911精品国产一区二区在线|