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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? collectionbrowser.cpp

?? Amarok是一款在LINUX或其他類UNIX操作系統(tǒng)中運(yùn)行的音頻播放器軟件。 經(jīng)過兩年開發(fā)后
?? CPP
?? 第 1 頁(yè) / 共 5 頁(yè)
字號(hào):
                    appendSearchResults();                }                return true;            default:                return false;            }        }        // (Joe Rabinoff) the code that was here which dealt with wrapping        // the selection around when Key_Up or Key_Down was pressed was        // moved to CollectionView::keyPressEvent().  That code also        // skips dividers.        if( ( e->key() >= Key_0 && e->key() <= Key_Z ) || e->key() == Key_Backspace || e->key() == Key_Escape )        {            m_searchEdit->setFocus();            QApplication::sendEvent( m_searchEdit, e );            return true;        }        #undef e        break;    default:        break;    }    return QVBox::eventFilter( o, e );}voidCollectionBrowser::layoutToolbar(){    if ( !m_toolbar ) return;    m_toolbar->clear();    m_toolbar->setIconText( KToolBar::IconTextRight, false );    m_tagfilterMenuButton->plug( m_toolbar );    m_toolbar->setIconText( KToolBar::IconOnly, false );    m_toolbar->insertLineSeparator();    m_treeViewAction->plug( m_toolbar );    m_flatViewAction->plug( m_toolbar );    m_ipodViewAction->plug( m_toolbar );    m_toolbar->insertLineSeparator();    m_showDividerAction->plug( m_toolbar );    m_configureAction->plug( m_toolbar );    //This would break things if the toolbar is too big, see bug #121915    //setMinimumWidth( m_toolbar->sizeHint().width() + 2 ); //set a reasonable minWidth}// (De)activate the iPod toolbar when switching into and out of// iPod browsing modevoidCollectionBrowser::ipodToolbar( bool activate ){    if( activate )        m_ipodToolbar->show();    else        m_ipodToolbar->hide();}//////////////////////////////////////////////////////////////////////////////////////////// CLASS CollectionView//////////////////////////////////////////////////////////////////////////////////////////CollectionView* CollectionView::m_instance = 0;CollectionView::CollectionView( CollectionBrowser* parent )        : KListView( parent )        , m_parent( parent )        , m_timeFilter( 0 )        , m_currentDepth( 0 )        , m_ipodIncremented ( 1 )        , m_dirty( true )        , m_organizingFileCancelled( false ){    DEBUG_FUNC_INFO    m_instance = this;    setSelectionMode( QListView::Extended );    setItemsMovable( false );    setSorting( 0 );    setShowSortIndicator( true );    setAcceptDrops( true );    setAllColumnsShowFocus( true );    //<READ CONFIG>        KConfig* config = Amarok::config( "Collection Browser" );        m_cat1 = config->readNumEntry( "Category1", IdArtist );        m_cat2 = config->readNumEntry( "Category2", IdAlbum );        m_cat3 = config->readNumEntry( "Category3", IdNone );#define saneCat(x) (x==IdAlbum||x==IdArtist||x==IdComposer||x==IdGenre||x==IdYear \        ||x==IdNone \        ||x==IdArtistAlbum||x==IdGenreArtist||x==IdGenreArtistAlbum||x==IdVisYearAlbum||x==IdArtistVisYearAlbum)        if( !saneCat(m_cat1) )        {            m_cat1 = IdArtist;            m_cat2 = IdAlbum;            m_cat2 = IdNone;        }        if( !saneCat(m_cat2) || !saneCat(m_cat3) )        {            m_cat2 = m_cat3 = IdNone;        }#undef saneCat        m_viewMode = config->readNumEntry( "ViewMode", modeTreeView );        m_showDivider = config->readBoolEntry( "ShowDivider", true);        updateTrackDepth();        m_flatColumnWidths.clear();        QStringList flatWidths = config->readListEntry( "FlatColumnWidths" );        for( QStringList::iterator it = flatWidths.begin();                it != flatWidths.end();                it++ )            m_flatColumnWidths.push_back( (*it).toInt() );    //</READ CONFIG>     KActionCollection* ac = new KActionCollection( this );     KStdAction::selectAll( this, SLOT( selectAll() ), ac, "collectionview_select_all" );    connect( CollectionDB::instance(), SIGNAL( scanStarted() ),             this,                      SLOT( scanStarted() ) );    connect( CollectionDB::instance(), SIGNAL( scanDone( bool ) ),             this,                      SLOT( scanDone( bool ) ) );    connect( BrowserBar::instance(),   SIGNAL( browserActivated( int ) ),             this,                      SLOT( renderView() ) ); // renderView() checks if current tab is this    connect( CollectionDB::instance(), SIGNAL( ratingChanged( const QString&, int ) ),             this, SLOT( ratingChanged( const QString&, int ) ) );    connect( this,           SIGNAL( expanded( QListViewItem* ) ),             this,             SLOT( slotExpand( QListViewItem* ) ) );    connect( this,           SIGNAL( collapsed( QListViewItem* ) ),             this,             SLOT( slotCollapse( QListViewItem* ) ) );    connect( this,           SIGNAL( returnPressed( QListViewItem* ) ),             this,             SLOT( invokeItem( QListViewItem* ) ) );    connect( this,           SIGNAL( doubleClicked( QListViewItem*, const QPoint&, int ) ),             this,             SLOT( invokeItem( QListViewItem*, const QPoint&, int ) ) );    connect( this,           SIGNAL( clicked( QListViewItem*, const QPoint&, int ) ),             this,             SLOT( ipodItemClicked( QListViewItem*, const QPoint&, int ) ) );    connect( this,           SIGNAL( contextMenuRequested( QListViewItem*, const QPoint&, int ) ),             this,             SLOT( rmbPressed( QListViewItem*, const QPoint&, int ) ) );    connect( header(),       SIGNAL( sizeChange( int, int, int ) ),             this,             SLOT( triggerUpdate() ) );    connect( MountPointManager::instance(), SIGNAL( mediumConnected( int ) ),             this,                            SLOT( databaseChanged() ) );    connect( MountPointManager::instance(), SIGNAL( mediumRemoved( int ) ),             this,                            SLOT( databaseChanged() ) );}CollectionView::~CollectionView() {    DEBUG_FUNC_INFO    KConfig* const config = Amarok::config( "Collection Browser" );    config->writeEntry( "Category1", m_cat1 );    config->writeEntry( "Category2", m_cat2 );    config->writeEntry( "Category3", m_cat3 );    config->writeEntry( "ViewMode", m_viewMode );    config->writeEntry( "ShowDivider", m_showDivider );    QStringList flatWidths;    for( QValueList<int>::iterator it = m_flatColumnWidths.begin();            it != m_flatColumnWidths.end();            it++ )            flatWidths.push_back( QString::number( (*it) ) );    config->writeEntry( "FlatColumnWidths", flatWidths );}voidCollectionView::setShowDivider( bool show ){    if (show != m_showDivider) {        m_showDivider = show;        renderView(true);    }}// Reimplemented for iPod-style navigation, and to skip dividers// Specifically, this method traps the Key_Up/Down/Left/Right events.// When Up or Down is pressed, it skips dividers and wraps around when// necessary.  When Left or Right is pressed and we are viewing in// iPod mode, the iPod "move forward / backward" actions are activated.voidCollectionView::keyPressEvent( QKeyEvent *e ){    typedef QListViewItemIterator It;    // Reimplement up and down to skip dividers and to loop around.    // Some of this code used to be in CollectionBrowser::eventFilter.    // This rewritten code is more faithful to the ordinary moving    // behavior, even when looping around.  (For instance, it behaves    // correctly if control-up is pressed at the top of the screen.)    // It sends fake keypress events to the parent instead of programatically    // selecting items.    if( (e->key() == Key_Up  ||  e->key() == Key_Down )  && currentItem() )    {        // Handle both up and down at once to avoid code duplication (it's        // a delicate piece of logic, and was hard to get right)        QListViewItem *cur = currentItem();        #define nextItem (e->key() == Key_Up ? cur->itemAbove() : cur->itemBelow())        bool wraparound = true;        // First skip any dividers directly above / below        do        {            KListView::keyPressEvent( e );            if( currentItem() == cur ) // Prevent infinite loops            {                if( nextItem != 0 )                    wraparound = false;                break;            }            cur = currentItem();            if( cur && dynamic_cast<DividerItem*>( cur ) == 0 )                wraparound = false;  // Found an item above / below        } while( cur != NULL                 && dynamic_cast<DividerItem*>(cur) != 0                 && nextItem != 0 );        if( cur == 0 ) return;  // Shouldn't happen        // Wrap around if necessary, by sending a Key_Home/Key_End event.        if( wraparound )        {            QKeyEvent e2 ( e->type(),                    (e->key() == Key_Up ? Key_End : Key_Home),                    0, e->state(),                    QString::null, e->isAutoRepeat(), e->count() );            QApplication::sendEvent( this, &e2 );            cur = currentItem();            // The first item may also be a divider, so keep moving            // until it's not            while ( cur != 0                    && dynamic_cast<DividerItem*>(cur) != 0                    && nextItem != 0 )            {                KListView::keyPressEvent( e );                if( currentItem() == cur ) // Prevent infinite loops                    break;                cur = currentItem();            }        }      #undef nextItem    }    // When Right/Left is pressed in iPod view mode, activate the iPod    // "move forward/backward" action.    else if( (e->key() == Key_Left  ||  e->key() == Key_Right)           && m_viewMode == modeIpodView )    {        if( e->key() == Key_Right )            m_parent->m_ipodIncrement->activate();        else if( e->key() == Key_Left )            m_parent->m_ipodDecrement->activate();    }    else // we don't want the event        KListView::keyPressEvent( e );}//////////////////////////////////////////////////////////////////////////////////////////// public slots//////////////////////////////////////////////////////////////////////////////////////////voidCollectionView::renderView(bool force /* = false */)  //SLOT{    SHOULD_BE_GUI    if(!force && !m_dirty )        return;    if( BrowserBar::instance()->currentBrowser() != m_parent )    {        // the collectionbrowser is intensive for sql, so we only renderView() if the tab        // is currently active.  else, wait until user focuses it.//         debug() << "current browser is not collection, aborting renderView()" << endl;        m_dirty = true;        return;    }    m_dirty = false;    // Don't cache / restore view if we're in ipod mode and we've    // just incremented or decremented, since we'll run selectIpodItems()    // below anyway.    if( childCount()  &&        !(m_viewMode == modeIpodView && m_ipodIncremented > 0) )        cacheView();    //clear();    safeClear();    if ( m_viewMode == modeFlatView )    {        renderFlatModeView( force );    }    if( m_viewMode == modeIpodView )    {        renderIpodModeView( force );    }    if( m_viewMode == modeTreeView )    {        renderTreeModeView( force );    }    // Don't cache or restore view when we're just going to run    // selectIpodItems() below anyway.    if( !(m_viewMode == modeIpodView && m_ipodIncremented > 0) )        restoreView();    else        selectIpodItems();}//////////////////////////////////////////////////////////////////////////////////////////// private slots//////////////////////////////////////////////////////////////////////////////////////////voidCollectionView::setupDirs()  //SLOT{    KDialogBase dialog( this, 0, false );    kapp->setTopWidget( &dialog );    dialog.setCaption( kapp->makeStdCaption( i18n("Configure Collection") ) );    CollectionSetup *setup = new CollectionSetup( &dialog );    dialog.setMainWidget( setup );    dialog.showButtonApply( false );    dialog.adjustSize();    // Make the dialog a bit bigger, default is too small to be useful    dialog.resize( dialog.width() + 50, dialog.height() + 150 );    if ( dialog.exec() != QDialog::Rejected )    {        const bool rescan = ( MountPointManager::instance()->collectionFolders() != setup->dirs() );        setup->writeConfig();        if ( rescan )            CollectionDB::instance()->startScan();

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品1024| 国产一区二区不卡| 久久久不卡网国产精品一区| 91福利精品第一导航| 国产乱码精品一品二品| 亚洲香肠在线观看| 亚洲欧洲在线观看av| 久久久久国产免费免费| 这里只有精品免费| 色哟哟欧美精品| 国产91高潮流白浆在线麻豆| 美腿丝袜亚洲综合| 亚洲一区二区中文在线| 国产精品免费视频一区| 欧美精品一区在线观看| 欧美一区二区日韩| 精品视频1区2区3区| 91首页免费视频| 成人综合婷婷国产精品久久蜜臀| 老司机精品视频线观看86| 一区二区三区 在线观看视频 | 亚洲同性gay激情无套| 精品国产乱码久久久久久免费| 欧美羞羞免费网站| 99精品一区二区三区| 国产成人在线视频网址| 狠狠色丁香婷综合久久| 免费看黄色91| 蜜臀a∨国产成人精品| 天堂va蜜桃一区二区三区| 亚洲一二三四久久| 亚洲激情第一区| 亚洲精品视频免费看| 中文字幕一区在线| 亚洲欧美偷拍三级| 亚洲视频一区二区在线观看| 亚洲天堂免费看| 亚洲欧美色图小说| 亚洲激情图片一区| 亚洲午夜免费视频| 亚洲国产精品久久久久秋霞影院| 亚洲影院免费观看| 午夜视频在线观看一区二区三区| 亚洲第一福利一区| 亚洲成人精品影院| 日产国产高清一区二区三区| 日韩高清在线电影| 美女视频免费一区| 国产综合久久久久影院| 国产精品综合久久| 成人国产亚洲欧美成人综合网| 成人少妇影院yyyy| 色婷婷久久综合| 欧美猛男超大videosgay| 91精品一区二区三区在线观看| 精品精品国产高清a毛片牛牛 | 国产精品二三区| 亚洲精品水蜜桃| 丝袜脚交一区二区| 狠狠色综合播放一区二区| 成熟亚洲日本毛茸茸凸凹| 色婷婷久久久综合中文字幕| 欧美日韩精品欧美日韩精品一| 日韩美女天天操| 中日韩av电影| 亚洲国产日韩精品| 久久超碰97人人做人人爱| 成人小视频免费在线观看| 91国偷自产一区二区使用方法| 在线综合+亚洲+欧美中文字幕| www成人在线观看| 成人欧美一区二区三区视频网页 | 国产欧美一区二区三区鸳鸯浴 | 精品美女在线播放| 欧美精品一区二区三区视频| 国产精品乱码久久久久久| 亚洲精品中文在线影院| 青草国产精品久久久久久| 国产成人av网站| 欧美性猛片xxxx免费看久爱| 精品日韩99亚洲| 日韩理论片一区二区| 蜜臀久久久久久久| 91视视频在线观看入口直接观看www| 欧美日韩国产综合一区二区三区| 久久日一线二线三线suv| 亚洲欧美日韩一区二区| 另类人妖一区二区av| 99re这里只有精品视频首页| 日韩欧美一区电影| 亚洲欧美一区二区三区久本道91| 另类小说综合欧美亚洲| 色悠久久久久综合欧美99| 精品国产91乱码一区二区三区 | 久久男人中文字幕资源站| 中文字幕av不卡| 免费高清不卡av| 日本韩国精品在线| 久久久久久久免费视频了| 性做久久久久久久免费看| 成人成人成人在线视频| 日韩免费高清电影| 亚洲一区二区三区四区中文字幕| 丁香五精品蜜臀久久久久99网站| 在线成人午夜影院| 一级中文字幕一区二区| 国产成人免费av在线| 欧美一区永久视频免费观看| 亚洲黄一区二区三区| 国产成人免费在线观看不卡| 日韩精品专区在线影院重磅| 亚洲午夜激情av| 91在线小视频| 国产精品色在线观看| 国产一区免费电影| 日韩精品一区二区在线| 日本在线观看不卡视频| 欧美性高清videossexo| 亚洲女与黑人做爰| 99麻豆久久久国产精品免费| 欧美国产禁国产网站cc| 韩国精品一区二区| 日韩欧美国产一二三区| 秋霞午夜av一区二区三区| 欧美精品tushy高清| 一区二区三区蜜桃网| 91丨九色丨蝌蚪富婆spa| 国产精品家庭影院| 福利一区福利二区| 国产欧美一区二区在线观看| 高清在线成人网| 欧美国产精品一区二区三区| 高清免费成人av| 国产精品美女久久久久久久 | 欧美日韩精品欧美日韩精品一 | 国产亚洲欧洲一区高清在线观看| 久99久精品视频免费观看| 日韩一区二区三区电影| 久久超级碰视频| 久久只精品国产| 国产成人免费网站| 国产精品三级在线观看| 北岛玲一区二区三区四区| 成人欧美一区二区三区在线播放| 91在线视频免费观看| 亚洲美女屁股眼交| 欧美色图第一页| 奇米精品一区二区三区在线观看一| 日韩视频国产视频| 国产一区二区不卡| 中文字幕一区二区三区av | 亚洲精品在线网站| 高清久久久久久| 亚洲精品欧美在线| 欧美精品久久一区| 国产主播一区二区| 国产精品福利av | 中文字幕乱码日本亚洲一区二区 | 欧美国产禁国产网站cc| av在线不卡免费看| 亚洲成人先锋电影| 精品少妇一区二区三区在线视频| 国产麻豆一精品一av一免费| 亚洲欧洲在线观看av| 欧美精品免费视频| 国产福利一区在线| 一区二区成人在线| 日韩免费看网站| 91片在线免费观看| 青青青伊人色综合久久| 欧美国产在线观看| 欧美色精品在线视频| 国产在线精品免费av| 亚洲天堂成人在线观看| 欧美一区二区三区人| 成人av第一页| 日韩不卡一区二区| 国产精品对白交换视频| 欧美一区二区三区在线视频| 国产99久久久精品| 首页欧美精品中文字幕| 国产欧美精品一区二区三区四区| 欧美性色综合网| 国产九九视频一区二区三区| 亚洲国产乱码最新视频| 久久久国际精品| 欧美精品在欧美一区二区少妇 | 欧美精品久久天天躁| 成人永久看片免费视频天堂| 午夜欧美2019年伦理| 国产精品乱码一区二区三区软件 | 国产欧美一区二区在线| 欧美日韩精品一区二区| 国产.欧美.日韩| 精品在线视频一区| 亚洲午夜精品久久久久久久久| 国产日韩精品久久久| 欧美一区二区三区喷汁尤物| 色综合久久久网| 粉嫩av亚洲一区二区图片|