📄 krbriefview.cpp
字号:
showContextMenu(); else if (i > 0) contextMenuTimer.start(i, true);}void KrBriefView::showContextMenu(){ if (lastSwushPosition) lastSwushPosition->setSelected(true); op()->emitContextMenu( contextMenuPoint );}KrViewItem *KrBriefView::getKrViewItemAt( const QPoint & vp ) { return dynamic_cast<KrViewItem*>( KIconView::findItem( vp ) );}bool KrBriefView::acceptDrag( QDropEvent* ) const { return true;}void KrBriefView::contentsDropEvent( QDropEvent * e ) { _currDragItem = 0; op()->emitGotDrop(e); e->ignore(); KIconView::contentsDropEvent( e ); }void KrBriefView::contentsDragMoveEvent( QDragMoveEvent * e ) { KrViewItem *oldDragItem = _currDragItem; _currDragItem = getKrViewItemAt( e->pos() ); if( _currDragItem && !_currDragItem->VF->vfile_isDir() ) _currDragItem = 0; KIconView::contentsDragMoveEvent( e ); if( _currDragItem != oldDragItem ) { if( oldDragItem ) dynamic_cast<KrBriefViewItem *>( oldDragItem )->repaint(); if( _currDragItem ) dynamic_cast<KrBriefViewItem *>( _currDragItem )->repaint(); }}void KrBriefView::contentsDragLeaveEvent ( QDragLeaveEvent *e ){ KrViewItem *oldDragItem = _currDragItem; _currDragItem = 0; KIconView::contentsDragLeaveEvent( e ); if( oldDragItem ) dynamic_cast<KrBriefViewItem *>( oldDragItem )->repaint();}void KrBriefView::imStartEvent(QIMEvent* e){ if ( ACTIVE_PANEL->quickSearch->isShown() ) { ACTIVE_PANEL->quickSearch->myIMStartEvent( e ); return ; }else { KConfigGroupSaver grpSvr( _config, "Look&Feel" ); if ( !_config->readBoolEntry( "New Style Quicksearch", _NewStyleQuicksearch ) ) KIconView::imStartEvent( e ); else { // first, show the quicksearch if its hidden if ( ACTIVE_PANEL->quickSearch->isHidden() ) { ACTIVE_PANEL->quickSearch->show(); // hack: if the pressed key requires a scroll down, the selected // item is "below" the quick search window, as the icon view will // realize its new size after the key processing. The following line // will resize the icon view immediately. ACTIVE_PANEL->layout->activate(); // second, we need to disable the dirup action - hack! krDirUp->setEnabled( false ); } // now, send the key to the quicksearch ACTIVE_PANEL->quickSearch->myIMStartEvent( e ); } }}void KrBriefView::imEndEvent(QIMEvent* e){ if ( ACTIVE_PANEL->quickSearch->isShown() ) { ACTIVE_PANEL->quickSearch->myIMEndEvent( e ); return ; }}void KrBriefView::imComposeEvent(QIMEvent* e){ if ( ACTIVE_PANEL->quickSearch->isShown() ) { ACTIVE_PANEL->quickSearch->myIMComposeEvent( e ); return ; }}void KrBriefView::keyPressEvent( QKeyEvent * e ) { if ( !e || !firstItem() ) return ; // subclass bug if ( ACTIVE_PANEL->quickSearch->isShown() ) { ACTIVE_PANEL->quickSearch->myKeyPressEvent( e ); return ; } switch ( e->key() ) { case Key_Up : if ( e->state() == ControlButton ) { // let the panel handle it - jump to the Location Bar e->ignore(); break; } else if (!KrSelectionMode::getSelectionHandler()->useQTSelection()) { QIconViewItem * i = currentItem(); if ( !i ) break; if ( e->state() == ShiftButton ) setSelected( i, !i->isSelected(), true ); i = i->prevItem(); if ( i ) { QIconView::setCurrentItem( i ); QIconView::ensureItemVisible( i ); } } else KIconView::keyPressEvent(e); break; case Key_Down : if ( e->state() == ControlButton || e->state() == ( ControlButton | ShiftButton ) ) { // let the panel handle it - jump to command line e->ignore(); break; } else if (!KrSelectionMode::getSelectionHandler()->useQTSelection()){ QIconViewItem * i = currentItem(); if ( !i ) break; if ( e->state() == ShiftButton ) setSelected( i, !i->isSelected(), true ); i = i->nextItem(); if ( i ) {QIconView::setCurrentItem( i ); QIconView::ensureItemVisible( i ); } } else KIconView::keyPressEvent(e); break; case Key_Next: if (!KrSelectionMode::getSelectionHandler()->useQTSelection()){ QIconViewItem * i = currentItem(), *j; if ( !i ) break; QRect r( i->rect() ); if ( !r.height() ) break; for ( int page = visibleHeight() / r.height() - 1; page > 0 && ( j = i->nextItem() ); --page ) i = j; if ( i ) {QIconView::setCurrentItem( i ); QIconView::ensureItemVisible( i ); } } else KIconView::keyPressEvent(e); break; case Key_Prior: if (!KrSelectionMode::getSelectionHandler()->useQTSelection()){ QIconViewItem * i = currentItem(), *j; if ( !i ) break; QRect r( i->rect() ); if ( !r.height() ) break; for ( int page = visibleHeight() / r.height() - 1; page > 0 && ( j = i->prevItem() ); --page ) i = j; if ( i ) {QIconView::setCurrentItem( i ); QIconView::ensureItemVisible( i ); } } else KIconView::keyPressEvent(e); break; case Key_Home: if (!KrSelectionMode::getSelectionHandler()->useQTSelection()){ if ( e->state() & ShiftButton ) /* Shift+Home */ { clearSelection(); KIconView::keyPressEvent( e ); op()->emitSelectionChanged(); arrangeItemsInGrid(); break; } else { QIconViewItem * i = firstItem(); if ( i ) {QIconView::setCurrentItem( i ); QIconView::ensureItemVisible( i ); } } } else KIconView::keyPressEvent(e); break; case Key_End: if (!KrSelectionMode::getSelectionHandler()->useQTSelection()){ if ( e->state() & ShiftButton ) /* Shift+End */ { clearSelection(); KIconView::keyPressEvent( e ); op()->emitSelectionChanged(); arrangeItemsInGrid(); break; } else { QIconViewItem *i = firstItem(), *j; while ( ( j = i->nextItem() ) ) i = j; while ( ( j = i->nextItem() ) ) i = j; if ( i ) {QIconView::setCurrentItem( i ); QIconView::ensureItemVisible( i ); } break; } } else KIconView::keyPressEvent(e); break; case Key_Enter : case Key_Return : { if ( e->state() & ControlButton ) // let the panel handle it e->ignore(); else { KrViewItem * i = getCurrentKrViewItem(); QString tmp = i->name(); op()->emitExecuted(tmp); } break; } case Key_QuoteLeft : // Terminal Emulator bugfix if ( e->state() == ControlButton ) { // let the panel handle it e->ignore(); break; } else { // a normal click - do a lynx-like moving thing SLOTS->home(); // ask krusader to move up a directory return ; // safety } break; case Key_Right : if ( e->state() == ControlButton ) { // let the panel handle it e->ignore(); break; } else if (!KrSelectionMode::getSelectionHandler()->useQTSelection()) { QIconViewItem *i = currentItem(); QIconViewItem *newCurrent = 0; if ( !i ) break; int minY = i->y() - i->height() / 2; int minX = i->width() / 2 + i->x(); if ( e->state() == ShiftButton ) setSelected( i, !i->isSelected(), true ); while( i && i->x() <= minX ) { if ( e->state() == ShiftButton ) setSelected( i, !i->isSelected(), true ); newCurrent = i; i = i->nextItem(); } while( i && i->y() < minY ) { if ( e->state() == ShiftButton ) setSelected( i, !i->isSelected(), true ); newCurrent = i; i = i->nextItem(); } if( i ) { if ( e->state() == ShiftButton ) setSelected( i, !i->isSelected(), true ); newCurrent = i; } if( newCurrent ) { QIconView::setCurrentItem( newCurrent ); QIconView::ensureItemVisible( newCurrent ); } } else KIconView::keyPressEvent(e); break; case Key_Backspace : // Terminal Emulator bugfix if ( e->state() == ControlButton || e->state() == ShiftButton ) { // let the panel handle it e->ignore(); break; } else { // a normal click - do a lynx-like moving thing SLOTS->dirUp(); // ask krusader to move up a directory return ; // safety } case Key_Left : if ( e->state() == ControlButton ) { // let the panel handle it e->ignore(); break; } else if (!KrSelectionMode::getSelectionHandler()->useQTSelection()) { QIconViewItem *i = currentItem(); QIconViewItem *newCurrent = 0; if ( !i ) break; int maxY = i->y() + i->height() / 2; int maxX = i->x() - i->width() / 2; if ( e->state() == ShiftButton ) setSelected( i, !i->isSelected(), true ); while( i && i->x() >= maxX ) { if ( e->state() == ShiftButton ) setSelected( i, !i->isSelected(), true ); newCurrent = i; i = i->prevItem(); } while( i && i->y() > maxY ) { if ( e->state() == ShiftButton ) setSelected( i, !i->isSelected(), true ); newCurrent = i; i = i->prevItem(); } if( i ) { if ( e->state() == ShiftButton ) setSelected( i, !i->isSelected(), true ); newCurrent = i; } if( newCurrent ) { QIconView::setCurrentItem( newCurrent ); QIconView::ensureItemVisible( newCurrent ); } } else KIconView::keyPressEvent(e); break; case Key_Delete : // kill file SLOTS->deleteFiles( e->state() == ShiftButton || e->state() == ControlButton ); break ; case Key_Insert : { { QIconViewItem *i = currentItem(); if( !i ) break; if (KrSelectionMode::getSelectionHandler()->insertMovesDown()) { setSelected( i, !i->isSelected(), true ); if( i->nextItem() ) { QIconView::setCurrentItem( i->nextItem() ); QIconView::ensureItemVisible( i->nextItem() ); } } else { setSelected( i, !i->isSelected(), true ); } } break ; } case Key_Space : { { QIconViewItem *i = currentItem(); if( !i ) break; if (KrSelectionMode::getSelectionHandler()->spaceMovesDown()) { setSelected( i, !i->isSelected(), true ); if( i->nextItem() ) { QIconView::setCurrentItem( i->nextItem() ); QIconView::ensureItemVisible( i->nextItem() ); } } else { setSelected( i, !i->isSelected(), true ); } } break ; } case Key_A : // mark all if ( e->state() == ControlButton ) { KIconView::keyPressEvent( e ); updateView(); break; } default: if ( e->key() == Key_Escape ) { QIconView::keyPressEvent( e ); return ; // otherwise the selection gets lost??!?? } // if the key is A..Z or 1..0 do quick search otherwise... if ( e->text().length() > 0 && e->text() [ 0 ].isPrint() ) // better choice. Otherwise non-ascii characters like can not be the first character of a filename /* if ( ( e->key() >= Key_A && e->key() <= Key_Z ) || ( e->key() >= Key_0 && e->key() <= Key_9 ) || ( e->key() == Key_Backspace ) || ( e->key() == Key_Down ) || ( e->key() == Key_Period ) ) */{ // are we doing quicksearch? if not, send keys to panel //if ( _config->readBoolEntry( "Do Quicksearch", _DoQuicksearch ) ) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -