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

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

?? playlistbrowser.cpp

?? Amarok是一款在LINUX或其他類UNIX操作系統中運行的音頻播放器軟件。 經過兩年開發后
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
    QDomDocument d;    QDomElement e;    QListViewItem *after = m_dynamicCategory;    if( !file.open( IO_ReadOnly ) || !d.setContent( stream.read() ) )    { /*Couldn't open the file or it had invalid content, so let's create an empty element*/        return new PlaylistCategory( m_listview, after , i18n("Radio Streams") );    }    else {        e = d.namedItem( "category" ).toElement();        if ( e.attribute("formatversion") =="1.1" ) {            PlaylistCategory* p = new PlaylistCategory( m_listview, after, e );            p->setText(0, i18n("Radio Streams") );            return p;        }        else { // Old unversioned format            PlaylistCategory* p = new PlaylistCategory( m_listview, after, i18n("Radio Streams") );            QListViewItem *last = 0;            QDomNode n = d.namedItem( "streambrowser" ).namedItem("stream");            for( ; !n.isNull();  n = n.nextSibling() ) {                last = new StreamEntry( p, last, n.toElement() );            }            return p;        }    }}void PlaylistBrowser::loadCoolStreams(){    QFile file( locate( "data","amarok/data/Cool-Streams.xml" ) );    if( !file.open( IO_ReadOnly ) )        return;    QTextStream stream( &file );    stream.setEncoding( QTextStream::UnicodeUTF8 );    QDomDocument d;    if( !d.setContent( stream.read() ) )    {        error() << "Bad Cool Streams XML file" << endl;        return;    }    m_coolStreams = new PlaylistCategory( m_streamsCategory, 0, i18n("Cool-Streams") );    m_coolStreams->setOpen( m_coolStreamsOpen );    m_coolStreams->setKept( false );    StreamEntry *last = 0;    QDomNode n = d.namedItem( "coolstreams" ).firstChild();    for( ; !n.isNull(); n = n.nextSibling() )    {        QDomElement e = n.toElement();        QString name = e.attribute( "name" );        e = n.namedItem( "url" ).toElement();        KURL url( e.text() );        last = new StreamEntry( m_coolStreams, last, url, name );        last->setKept( false );    }}void PlaylistBrowser::addStream( QListViewItem *parent ){    StreamEditor dialog( this, i18n( "Radio Stream" ), QString::null );    dialog.setCaption( i18n( "Add Radio Stream" ) );    if( !parent ) parent = static_cast<QListViewItem*>(m_streamsCategory);    if( dialog.exec() == QDialog::Accepted )    {        new StreamEntry( parent, 0, dialog.url(), dialog.name() );        parent->sortChildItems( 0, true );        parent->setOpen( true );        saveStreams();    }}void PlaylistBrowser::editStreamURL( StreamEntry *item, const bool readonly ){    StreamEditor dialog( this, item->title(), item->url().prettyURL(), readonly );    dialog.setCaption( readonly ? i18n( "Radio Stream" ) : i18n( "Edit Radio Stream" ) );    if( dialog.exec() == QDialog::Accepted )    {        item->setTitle( dialog.name() );        item->setURL( dialog.url() );        item->setText(0, dialog.name() );    }}void PlaylistBrowser::saveStreams(){    QFile file( streamBrowserCache() );    QDomDocument doc;    QDomElement streamB = m_streamsCategory->xml();    streamB.setAttribute( "product", "Amarok" );    streamB.setAttribute( "version", APP_VERSION );    streamB.setAttribute( "formatversion", "1.1" );    QDomNode streamsNode = doc.importNode( streamB, true );    doc.appendChild( streamsNode );    QString temp( doc.toString() );    // Only open the file after all data is ready. If it crashes, data is not lost!    if ( !file.open( IO_WriteOnly ) ) return;    QTextStream stream( &file );    stream.setEncoding( QTextStream::UnicodeUTF8 );    stream << "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";    stream << temp;}/** ************************************************************************* *  LAST.FM ************************************************************************* **/void PlaylistBrowser::loadLastfmStreams( const bool subscriber /*false*/ ){    QFile file( Amarok::saveLocation() + "lastfmbrowser_save.xml" );    QTextStream stream( &file );    stream.setEncoding( QTextStream::UnicodeUTF8 );    QDomDocument d;    QDomElement e;    QListViewItem *after = m_streamsCategory;    if( !file.open( IO_ReadOnly ) || !d.setContent( stream.read() ) )    { /*Couldn't open the file or it had invalid content, so let's create an empty element*/        m_lastfmCategory = new PlaylistCategory( m_listview, after , i18n("Last.fm Radio") );    }    else {        e = d.namedItem( "category" ).toElement();        m_lastfmCategory = new PlaylistCategory( m_listview, after, e );        m_lastfmCategory->setText( 0, i18n("Last.fm Radio") );    }    /// Load the default items    QStringList globaltags;    globaltags << "Alternative" << "Ambient" << "Chill Out" << "Classical" << "Dance"            << "Electronica" << "Favorites" << "Heavy Metal" << "Hip Hop" << "Indie Rock"            << "Industrial" << "Japanese" << "Pop" << "Psytrance" << "Rap" << "Rock"            << "Soundtrack" << "Techno" << "Trance";    PlaylistCategory *tagsFolder = new PlaylistCategory( m_lastfmCategory, 0, i18n("Global Tags") );    tagsFolder->setKept( false );    LastFmEntry *last = 0;    foreach( globaltags )    {        const KURL url( "lastfm://globaltags/" + *it );        last = new LastFmEntry( tagsFolder, last, url, *it );        last->setKept( false );    }    QString user = AmarokConfig::scrobblerUsername();    KURL url( QString("lastfm://user/%1/neighbours").arg( user ) );    last = new LastFmEntry( m_lastfmCategory, tagsFolder, url, i18n( "Neighbor Radio" ) );    last->setKept( false );    if( subscriber )    {        url = KURL::fromPathOrURL( QString("lastfm://user/%1/personal").arg( user ) );        last = new LastFmEntry( m_lastfmCategory, last, url, i18n( "Personal Radio" ) );        last->setKept( false );        url = KURL::fromPathOrURL( QString("lastfm://user/%1/loved").arg( user ) );        last = new LastFmEntry( m_lastfmCategory, last, url, i18n( "Loved Radio" ) );        last->setKept( false );    }}void PlaylistBrowser::addLastFmRadio( QListViewItem *parent ){    StreamEditor dialog( this, i18n( "Last.fm Radio" ), QString::null );    dialog.setCaption( i18n( "Add Last.fm Radio" ) );    if( !parent ) parent = static_cast<QListViewItem*>(m_lastfmCategory);    if( dialog.exec() == QDialog::Accepted )    {        new LastFmEntry( parent, 0, dialog.url(), dialog.name() );        parent->sortChildItems( 0, true );        parent->setOpen( true );        saveLastFm();    }}void PlaylistBrowser::addLastFmCustomRadio( QListViewItem *parent ){    QString token = LastFm::Controller::createCustomStation();    if( token.isEmpty() ) return;    token.replace( "/", "%252" );    const QString text = "lastfm://artistnames/" + token;    const KURL url( text );    QString name = LastFm::Controller::stationDescription( text );    name.replace( "%252", "/" );    new LastFmEntry( parent, 0, url, name );    saveLastFm();}void PlaylistBrowser::saveLastFm(){    if ( !m_lastfmCategory )        return;    QFile file( Amarok::saveLocation() + "lastfmbrowser_save.xml" );    QDomDocument doc;    QDomElement lastfmB = m_lastfmCategory->xml();    lastfmB.setAttribute( "product", "Amarok" );    lastfmB.setAttribute( "version", APP_VERSION );    lastfmB.setAttribute( "formatversion", "1.1" );    QDomNode lastfmNode = doc.importNode( lastfmB, true );    doc.appendChild( lastfmNode );    QString temp( doc.toString() );    // Only open the file after all data is ready. If it crashes, data is not lost!    if ( !file.open( IO_WriteOnly ) ) return;    QTextStream stream( &file );    stream.setEncoding( QTextStream::UnicodeUTF8 );    stream << "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";    stream << temp;}/** ************************************************************************* *  SMART-PLAYLISTS ************************************************************************* **/QString PlaylistBrowser::smartplaylistBrowserCache() const{    return Amarok::saveLocation() + "smartplaylistbrowser_save.xml";}void PlaylistBrowser::addSmartPlaylist( QListViewItem *parent ) //SLOT{    if( CollectionDB::instance()->isEmpty() || !m_smartCategory )        return;    if( !parent ) parent = static_cast<QListViewItem*>(m_smartCategory);    SmartPlaylistEditor dialog( i18n("Untitled"), this );    if( dialog.exec() == QDialog::Accepted ) {        PlaylistCategory *category = dynamic_cast<PlaylistCategory*>(parent);        for( QListViewItem *item = category->firstChild(); item; item = item->nextSibling() ) {            SmartPlaylist *sp = dynamic_cast<SmartPlaylist*>(item);            if ( sp && sp->title() == dialog.name() ) {                if( KMessageBox::warningContinueCancel(                    PlaylistWindow::self(),                    i18n( "A Smart Playlist named \"%1\" already exists. Do you want to overwrite it?" ).arg( dialog.name() ),                    i18n( "Overwrite Playlist?" ), i18n( "Overwrite" ) ) == KMessageBox::Continue )                {                    delete item;                    break;                }                else                    return;            }        }        new SmartPlaylist( parent, 0, dialog.result() );        parent->sortChildItems( 0, true );        parent->setOpen( true );        saveSmartPlaylists();    }}PlaylistCategory* PlaylistBrowser::loadSmartPlaylists(){    QFile file( smartplaylistBrowserCache() );    QTextStream stream( &file );    stream.setEncoding( QTextStream::UnicodeUTF8 );    QListViewItem *after = m_playlistCategory;    QDomDocument d;    QDomElement e;    if( !file.open( IO_ReadOnly ) || !d.setContent( stream.read() ) )    { /*Couldn't open the file or it had invalid content, so let's create an empty element*/        return new PlaylistCategory(m_listview, after, i18n("Smart Playlists") );    }    else {        e = d.namedItem( "category" ).toElement();        QString version = e.attribute("formatversion");        float fversion = e.attribute("formatversion").toFloat();        if ( version == "1.8" )        {            PlaylistCategory* p = new PlaylistCategory(m_listview, after, e );            p->setText( 0, i18n("Smart Playlists") );            return p;        }        else if ( fversion > 1.0f  )        {            PlaylistCategory* p = new PlaylistCategory(m_listview, after, e );            p->setText( 0, i18n("Smart Playlists") );            debug() << "loading old format smart playlists, converted to new format" << endl;            updateSmartPlaylists( p );            saveSmartPlaylists( p );            return p;        }        else { // Old unversioned format            PlaylistCategory* p = new PlaylistCategory(m_listview, after , i18n("Smart Playlists") );            QListViewItem *last = 0;            QDomNode n = d.namedItem( "smartplaylists" ).namedItem("smartplaylist");            for( ; !n.isNull();  n = n.nextSibling() ) {                last = new SmartPlaylist( p, last, n.toElement() );            }            return p;        }    }}void PlaylistBrowser::updateSmartPlaylists( QListViewItem *p ){    if( !p )        return;    for( QListViewItem *it =  p->firstChild();            it;            it = it->nextSibling() )    {        SmartPlaylist *spl = dynamic_cast<SmartPlaylist *>( it );        if( spl )        {            QDomElement xml = spl->xml();            QDomElement query = xml.namedItem( "sqlquery" ).toElement();            QDomElement expandBy = xml.namedItem( "expandby" ).toElement();            updateSmartPlaylistElement( query );            updateSmartPlaylistElement( expandBy );            spl->setXml( xml );        }        else            updateSmartPlaylists( it );    }}void PlaylistBrowser::updateSmartPlaylistElement( QDomElement& query ){    QRegExp limitSearch( "LIMIT.*(\\d+)\\s*,\\s*(\\d+)" );    QRegExp selectFromSearch( "SELECT[^'\"]*FROM" );    for(QDomNode child = query.firstChild();            !child.isNull();            child = child.nextSibling() )    {        if( child.isText() )        {            //HACK this should be refactored to just regenerate the SQL from the <criteria>'s            QDomText text = child.toText();            QString sql = text.data();            if ( selectFromSearch.search( sql ) != -1 )                sql.replace( selectFromSearch, "SELECT (*ListOfFields*) FROM" );            if ( limitSearch.search( sql ) != -1 )                sql.replace( limitSearch,                    QString( "LIMIT %1 OFFSET %2").arg( limitSearch.capturedTexts()[2].toInt() ).arg( limitSearch.capturedTexts()[1].toInt() ) );            text.setData( sql );            break;        }    }}void PlaylistBrowser::loadDefaultSmartPlaylists(){    DEBUG_BLOCK    const QStringList genres  = CollectionDB::instance()->query( "SELECT DISTINCT name FROM genre;" );    const QStringList artists = CollectionDB::instance()->artistList();    SmartPlaylist *item;    QueryBuilder qb;    SmartPlaylist *last = 0;    m_smartDefaults = new PlaylistCategory( m_smartCategory, 0, i18n("Collection") );    m_smartDefaults->setOpen( m_smartDefaultsOpen );    m_smartDefaults->setKept( false );    /********** All Collection **************/    qb.initSQLDrag();    qb.sortBy( QueryBuilder::tabArtist, QueryBuilder::valName );    qb.sortBy( QueryBuilder::tabAlbum, QueryBuilder::valName );    qb.sortBy( QueryBuilder::tabSong, QueryBuilder::valTrack );

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
蜜臀久久99精品久久久画质超高清| 久久日韩精品一区二区五区| 三级久久三级久久| 国产精品羞羞答答xxdd| 在线观看不卡一区| 国产精品欧美精品| 国产综合色产在线精品| 91精品国产综合久久久蜜臀粉嫩 | 国产精品理伦片| 日韩精品久久理论片| 在线看一区二区| 日韩伦理av电影| 国产成人精品1024| 久久中文字幕电影| 蜜臀av性久久久久蜜臀aⅴ | 日韩美女在线视频| 亚洲成人免费视频| 91精品福利视频| 中文字幕在线一区| 成人国产电影网| 欧美国产精品一区二区三区| 国产麻豆午夜三级精品| 日韩精品一区二区三区视频在线观看| 午夜婷婷国产麻豆精品| 欧美日韩免费视频| 亚洲一区二区三区自拍| 色就色 综合激情| 亚洲精选一二三| 欧美在线免费视屏| 艳妇臀荡乳欲伦亚洲一区| 在线免费观看日本一区| 亚洲综合小说图片| 欧美美女一区二区在线观看| 亚洲午夜一二三区视频| 欧美午夜不卡在线观看免费| 一区二区三区四区精品在线视频| 一本久久综合亚洲鲁鲁五月天| 自拍偷拍亚洲激情| 在线观看成人小视频| 亚洲成人综合网站| 日韩精品一区二区在线| 国内成人免费视频| 国产精品日日摸夜夜摸av| eeuss影院一区二区三区| 亚洲三级小视频| 欧美疯狂做受xxxx富婆| 激情深爱一区二区| 国产精品免费人成网站| 日本韩国欧美在线| 人人超碰91尤物精品国产| 精品国产伦一区二区三区免费 | 亚洲精品欧美在线| 欧美在线视频日韩| 久久国产精品第一页| 久久精品一区二区三区不卡| 91色porny| 秋霞午夜鲁丝一区二区老狼| 欧美精品一区二区三区蜜臀| 国产iv一区二区三区| 亚洲制服丝袜av| 日韩精品资源二区在线| av在线一区二区三区| 日日摸夜夜添夜夜添亚洲女人| 久久久无码精品亚洲日韩按摩| 成人黄色大片在线观看| 日韩国产一区二| 亚洲国产精品传媒在线观看| 欧美日韩精品高清| 粉嫩一区二区三区性色av| 亚洲成人免费视| 欧美韩国日本综合| 欧美高清视频在线高清观看mv色露露十八| 激情另类小说区图片区视频区| 亚洲美女免费视频| 26uuu亚洲综合色欧美| 在线亚洲人成电影网站色www| 极品尤物av久久免费看| 亚洲在线观看免费| 国产亚洲成年网址在线观看| 欧美日韩国产天堂| av成人免费在线| 黄色精品一二区| 五月婷婷激情综合网| 中文字幕一区二区三区视频| 亚洲丝袜另类动漫二区| 精品国偷自产国产一区| 欧美日韩免费观看一区三区| 成人少妇影院yyyy| 久久99国产精品久久| 亚洲第一在线综合网站| 国产精品久久久久久一区二区三区| 在线成人午夜影院| 欧美影院一区二区| 91在线观看高清| 不卡视频在线看| 国产一区二区三区不卡在线观看 | 中文字幕免费不卡在线| 91.成人天堂一区| 在线免费观看日韩欧美| 成人app在线| 国产精品538一区二区在线| 久久激情五月激情| 日本午夜精品视频在线观看 | 亚洲午夜精品久久久久久久久| 亚洲国产精品成人综合色在线婷婷| 91精品国产综合久久精品麻豆| av中文一区二区三区| youjizz久久| 成人激情免费视频| 成人h动漫精品一区二区| 粉嫩嫩av羞羞动漫久久久| 精品亚洲成a人| 国产乱色国产精品免费视频| 久久狠狠亚洲综合| 狠狠色丁香婷婷综合久久片| 精油按摩中文字幕久久| 国内不卡的二区三区中文字幕 | 91在线视频观看| 成人18视频在线播放| 成人黄色一级视频| 99九九99九九九视频精品| 99re视频精品| 91久久奴性调教| 欧美日韩一区在线观看| 欧美一级片在线看| 精品第一国产综合精品aⅴ| 国产香蕉久久精品综合网| 国产三级一区二区三区| 亚洲欧洲精品天堂一级| 亚洲欧美二区三区| 五月综合激情日本mⅴ| 日本美女视频一区二区| 国产剧情一区在线| 成人精品在线视频观看| 色婷婷精品大在线视频| 欧美日韩黄色一区二区| 精品欧美一区二区在线观看| 国产丝袜美腿一区二区三区| 中文字幕中文乱码欧美一区二区| 亚洲在线一区二区三区| 玖玖九九国产精品| www.欧美日韩国产在线| 欧美日本一区二区三区四区| 欧美大片拔萝卜| 日韩一区日韩二区| 琪琪久久久久日韩精品| 国产91精品露脸国语对白| 在线观看av一区| 久久婷婷一区二区三区| 亚洲精品国产视频| 精品一区二区三区影院在线午夜 | 看国产成人h片视频| 北条麻妃一区二区三区| 6080亚洲精品一区二区| 国产日韩av一区| 午夜国产精品一区| 成人午夜在线播放| 欧美一卡二卡在线观看| 亚洲婷婷综合久久一本伊一区 | 精品日韩在线一区| 亚洲丝袜自拍清纯另类| 国产中文字幕精品| 欧美视频一区二区| 国产精品视频麻豆| 蜜臀精品久久久久久蜜臀 | 欧美一区二区私人影院日本| 中文字幕精品一区| 蜜桃视频在线观看一区二区| 91免费观看在线| 国产色产综合色产在线视频| 日韩精品一区第一页| 色综合久久久久综合体桃花网| 精品福利视频一区二区三区| 午夜日韩在线电影| aaa亚洲精品| 日本一区二区三区久久久久久久久不 | 亚洲一区二区视频| 99国产精品一区| 国产精品久久久久影院老司 | 欧美一级高清大全免费观看| 亚洲精品中文字幕乱码三区| 成人听书哪个软件好| 26uuu精品一区二区| 麻豆一区二区三区| 欧美日本在线一区| 午夜伦理一区二区| 欧美体内she精高潮| 亚洲视频一区二区在线| 成人午夜视频网站| 国产欧美va欧美不卡在线| 国产麻豆视频精品| 26uuu国产电影一区二区| 久久福利资源站| 精品国产制服丝袜高跟| 裸体健美xxxx欧美裸体表演| 91精品一区二区三区久久久久久| 亚洲bt欧美bt精品777| 欧美日韩日本视频| 午夜精品爽啪视频| 欧美一区二区三区在线看|