📄 mediaselector.cpp
字号:
setCurrentItem( first ); setSelected( first, TRUE ); }}void MediaSelector::removeAll(){ clear();}void MediaSelector::contentsMouseMoveEvent( QMouseEvent *event ){ if ( event->state() == QMouseEvent::LeftButton && !d->haveMoved ) { int x, y; contentsToViewport(event->pos().x(), event->pos().y(), x, y); if ( !d->doingSelection ) { QListViewItem *currentItem = selectedItem(); QListViewItem *itemUnder = itemAt(QPoint(x, y)); if ( currentItem && currentItem->itemAbove() == itemUnder ) { d->haveMoved = true; moveSelectedUp(); } else if ( currentItem && currentItem->itemBelow() == itemUnder ) { d->haveMoved = true; moveSelectedDown(); } } else { QListViewItem *currentItem = itemAt(QPoint(x, y)); if ( currentItem == d->prevItem ) return; int currentItemPos = currentItem->itemPos(); QCheckListItem *item = (currentItemPos == d->firstItemPos) ? (QCheckListItem *)d->prevItem : ((currentItemPos > d->firstItemPos) == (currentItemPos > d->prevItemPos)) ? (QCheckListItem *)currentItem : (QCheckListItem *)d->prevItem; if ( item != d->firstItem ) item->setOn( !item->isOn() ); d->prevItem = currentItem; d->prevItemPos = currentItemPos; } }}void MediaSelector::contentsMousePressEvent( QMouseEvent *event ){ d->haveMoved = false; d->doingSelection = (event->pos().x() <= CHECK_BOX_WIDTH); if ( d->doingSelection ) { int x, y; contentsToViewport(event->pos().x(), event->pos().y(), x, y); d->firstItem = itemAt(QPoint(x, y)); if ( d->firstItem ) { d->firstItemPos = d->firstItem->itemPos(); d->prevItem = d->firstItem; d->prevItemPos = d->firstItemPos; } } QListView::contentsMousePressEvent(event);}void MediaSelector::contentsMouseReleaseEvent( QMouseEvent *event ){ if ( !d->doingSelection ) { if ( event->button() & QMouseEvent::RightButton ) d->haveMoved = true; if ( !d->haveMoved ) if ( event->button() & QMouseEvent::LeftButton ) { int x, y; contentsToViewport(event->pos().x(), event->pos().y(), x, y); if ( itemAt(QPoint(x, y)) ) mediaPlayerState->setPlaying(); d->haveMoved = true; } } QListView::contentsMouseReleaseEvent(event);}const DocLnk *MediaSelector::current() { MediaSelectorItem *item = (MediaSelectorItem *)selectedItem(); if ( item ) return &(item->file()); if ( firstChild() ) { // try harder setSelected( firstChild(), TRUE ); item = (MediaSelectorItem *)firstChild(); if ( item ) return &(item->file()); } return NULL;}void MediaSelector::categorize(){ CategorySelectDialog *catDlg = new CategorySelectDialog("Document View", this, 0, true); catDlg->setAllCategories(false); catDlg->setMinimumWidth(180); QPEApplication::execDialog(catDlg); addSelectionToCategory(catDlg->currentCategory());}void MediaSelector::addSelectionToCategory(int catId){ MediaSelectorItem *item = (MediaSelectorItem *)firstChild(); while ( item ) { if ( item->isOn() ) { QArray<int> cats = item->file().categories(); if ( !cats.contains(catId) ) { cats.resize(cats.size()+1); cats[cats.size()-1] = catId; DocLnk lnk = item->file(); lnk.setCategories(cats); lnk.writeLink(); item->setFile(lnk); } } item = (MediaSelectorItem *)item->nextSibling(); }}void MediaSelector::selectAll(){ MediaSelectorItem *item = (MediaSelectorItem *)firstChild(); while ( item ) { item->setOn(true); item = (MediaSelectorItem *)item->nextSibling(); }}void MediaSelector::addToSelector( const DocLnk &lnk ){ MediaSelectorItem *item = newItem( lnk ); QListViewItem *current = selectedItem(); if ( current ) item->moveItem( current ); setSelected( item, TRUE ); ensureItemVisible( selectedItem() );}void MediaSelector::removeSelected(){ QListViewItem *item = selectedItem(); if ( item ) deleteItem( (MediaSelectorItem *)item ); setSelected( currentItem(), TRUE ); ensureItemVisible( selectedItem() );}void MediaSelector::moveSelectedUp(){ QListViewItem *item = selectedItem(); if ( item && item->itemAbove() ) item->itemAbove()->moveItem( item ); ensureItemVisible( selectedItem() );}void MediaSelector::moveSelectedDown(){ QListViewItem *item = selectedItem(); if ( item && item->itemBelow() ) item->moveItem( item->itemBelow() ); ensureItemVisible( selectedItem() );}bool MediaSelector::prev(){#ifdef QTOPIA_PHONE if ( mediaPlayerState->looping() ) return TRUE;#endif QListViewItem *curItem = selectedItem(); QListViewItem *prevItem = 0; if ( mediaPlayerState->shuffled() ) { d->shuffledList.find( curItem ); prevItem = d->shuffledList.prev(); } else if ( curItem ) prevItem = curItem->itemAbove(); if ( !prevItem ) {#ifndef QTOPIA_PHONE if ( mediaPlayerState->looping() ) { if ( mediaPlayerState->shuffled() ) { prevItem = d->shuffledList.last(); } else { return last(); } } else#endif return FALSE; } setSelected( prevItem, TRUE ); ensureItemVisible( prevItem ); return TRUE;}bool MediaSelector::next(){#ifdef QTOPIA_PHONE/* if ( mainDocumentWindow->isRinging() ) { mainDocumentWindow->songFinished(); return FALSE; }*/ if ( mediaPlayerState->looping() ) return TRUE;#endif QListViewItem *curItem = selectedItem(); QListViewItem *nextItem = 0; if ( mediaPlayerState->shuffled() ) { d->shuffledList.find( curItem ); nextItem = d->shuffledList.next(); } else if ( curItem ) nextItem = curItem->itemBelow(); if ( !nextItem ) {#ifndef QTOPIA_PHONE if ( mediaPlayerState->looping() ) { if ( mediaPlayerState->shuffled() ) { nextItem = d->shuffledList.first(); } else { return first(); } } else#endif return FALSE; } setSelected( nextItem, TRUE ); ensureItemVisible( nextItem ); return TRUE;}bool MediaSelector::advanceSelector(){ QListViewItem *curItem = selectedItem(); if ( curItem ) { QListViewItem *nextItem = curItem->itemBelow(); if ( nextItem ) { setSelected( nextItem, TRUE ); ensureItemVisible( nextItem ); return TRUE; } } return FALSE;}bool MediaSelector::first(){ QListViewItem *item = firstChild(); if ( item ) setSelected( item, TRUE ); else return FALSE; ensureItemVisible( selectedItem() ); return TRUE;}bool MediaSelector::last(){ QListViewItem *prevItem = NULL; QListViewItem *item = firstChild(); while ( ( item = item->nextSibling() ) ) prevItem = item; if ( prevItem ) setSelected( prevItem, TRUE ); else return FALSE; ensureItemVisible( selectedItem() ); return TRUE;}void MediaSelector::keyPressEvent(QKeyEvent *ke){ QCheckListItem *currentItem; switch ( ke->key() ) { case Key_Left: case Key_Right: currentItem = (QCheckListItem *)selectedItem(); if ( currentItem ) currentItem->setOn(!currentItem->isOn()); break;#ifdef QTOPIA_PHONE case Key_Select:#endif case Key_Space: case Key_Enter: mediaPlayerState->setPlaying(false); mediaPlayerState->setPlaying(true); return; default: QListView::keyPressEvent(ke); break; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -