⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 krdetailedview.cpp

📁 LINUX 下, 以 QT/KDE 写的档案管理员
💻 CPP
📖 第 1 页 / 共 4 页
字号:
   int cl = -1;   if ( mode & KrViewProperties::Name )      cl = COLUMN( Name );   else	if ( mode & KrViewProperties::Ext )      cl = COLUMN( Extention );	else      if ( mode & KrViewProperties::Size )         cl = COLUMN( Size );      else         if ( mode & KrViewProperties::Type )            cl = COLUMN( Mime );         else            if ( mode & KrViewProperties::Modified )               cl = COLUMN( DateTime );            else               if ( mode & KrViewProperties::Permissions )                  cl = COLUMN( Permissions );               else                  if ( mode & KrViewProperties::KrPermissions )                     cl = COLUMN( KrPermissions );                  else                     if ( mode & KrViewProperties::Owner )                        cl = COLUMN( Owner );                     else                        if ( mode & KrViewProperties::Group )                           cl = COLUMN( Group );   setSorting( cl, ascending );   KListView::sort();}void KrDetailedView::slotClicked( QListViewItem *item ) {   if ( !item ) return ;   if ( !modifierPressed ) {      if ( singleClicked && !renameTimer.isActive() ) {         KConfig * config = KGlobal::config();         config->setGroup( "KDE" );         int doubleClickInterval = config->readNumEntry( "DoubleClickInterval", 400 );         int msecsFromLastClick = clickTime.msecsTo( QTime::currentTime() );         if ( msecsFromLastClick > doubleClickInterval && msecsFromLastClick < 5 * doubleClickInterval ) {            singleClicked = false;            renameTimer.start( doubleClickInterval, true );            return ;         }      }      CANCEL_TWO_CLICK_RENAME;      singleClicked = true;      clickTime = QTime::currentTime();      clickedItem = item;   }}void KrDetailedView::slotDoubleClicked( QListViewItem *item ) {   CANCEL_TWO_CLICK_RENAME;   if ( !item )      return ;   QString tmp = dynamic_cast<KrViewItem*>( item ) ->name();   op()->emitExecuted(tmp);}void KrDetailedView::prepareForActive() {	KrView::prepareForActive();   setFocus();   slotItemDescription( currentItem() );}void KrDetailedView::prepareForPassive() {	KrView::prepareForPassive();   CANCEL_TWO_CLICK_RENAME;   if ( renameLineEdit() ->isVisible() )      renameLineEdit() ->clearFocus();   KConfigGroupSaver grpSvr( _config, "Look&Feel" );   if ( _config->readBoolEntry( "New Style Quicksearch", _NewStyleQuicksearch ) ) {      if ( MAIN_VIEW ) {         if ( ACTIVE_PANEL ) {            if ( ACTIVE_PANEL->quickSearch ) {               if ( ACTIVE_PANEL->quickSearch->isShown() ) {                  stopQuickSearch( 0 );               }            }         }      }   }}void KrDetailedView::slotItemDescription( QListViewItem * item ) {   KrViewItem * it = static_cast<KrDetailedViewItem*>( item );   if ( !it )      return ;   QString desc = it->description();   op()->emitItemDescription(desc);}void KrDetailedView::handleQuickSearchEvent( QKeyEvent * e ) {   switch ( e->key() ) {         case Key_Insert:         {            QKeyEvent ev = QKeyEvent( QKeyEvent::KeyPress, Key_Space, 0, 0 );            KListView::keyPressEvent( & ev );            ev = QKeyEvent( QKeyEvent::KeyPress, Key_Down, 0, 0 );            keyPressEvent( & ev );            break;         }         case Key_Home:         {            QListView::setCurrentItem( firstChild() );            QKeyEvent ev = QKeyEvent( QKeyEvent::KeyPress, Key_Down, 0, 0 );            keyPressEvent( & ev );            break;         }         case Key_End:         {            QListView::setCurrentItem( firstChild() );            QKeyEvent ev = QKeyEvent( QKeyEvent::KeyPress, Key_Up, 0, 0 );            keyPressEvent( & ev );            break;         }   }}void KrDetailedView::slotCurrentChanged( QListViewItem * item ) {   CANCEL_TWO_CLICK_RENAME;   if ( !item )      return ;   _nameToMakeCurrent = static_cast<KrDetailedViewItem*>( item ) ->name();}void KrDetailedView::contentsMousePressEvent( QMouseEvent * e ) {   bool callDefaultHandler = true, processEvent = true, selectionChanged = false;   pressedItem = 0;   QListViewItem * oldCurrent = currentItem();   QListViewItem *newCurrent = itemAt( contentsToViewport( e->pos() ) );   if (e->button() == RightButton)   {	if (KrSelectionMode::getSelectionHandler()->rightButtonSelects() || 		(((e->state() & ShiftButton) || (e->state() & ControlButton))) && KrSelectionMode::getSelectionHandler()->shiftCtrlRightButtonSelects())     {       if (KrSelectionMode::getSelectionHandler()->rightButtonPreservesSelection() && !(e->state() & ShiftButton)          && !(e->state() & ControlButton) && !(e->state() & AltButton))       {         if (newCurrent)         {           if (KrSelectionMode::getSelectionHandler()->showContextMenu() >= 0)           {             swushSelects = !newCurrent->isSelected();             lastSwushPosition = newCurrent;           }           newCurrent->setSelected(!newCurrent->isSelected());           newCurrent->repaint();			  selectionChanged = true;         }         callDefaultHandler = false;         processEvent = false;         e->accept();       }       if( !KrSelectionMode::getSelectionHandler()->rightButtonPreservesSelection() && KrSelectionMode::getSelectionHandler()->showContextMenu() >= 0)       {         if( (e->state() & ControlButton) && !(e->state() & AltButton) )         {            if( newCurrent )            {               newCurrent->setSelected(!newCurrent->isSelected());               newCurrent->repaint();               selectionChanged = true;               callDefaultHandler = false;               e->accept();            }         }         else if( !(e->state() & ControlButton) && !(e->state() & AltButton) )         {            clearSelection();            if( newCurrent )            {               newCurrent->setSelected( true );               newCurrent->repaint();            }            selectionChanged = true;            callDefaultHandler = false;            e->accept();         }       }     }     else     {       callDefaultHandler = false;       processEvent = false;       e->accept();     }   }   if (e->button() == LeftButton)   {     dragStartPos = e->pos();	  if (KrSelectionMode::getSelectionHandler()->leftButtonSelects() || 	  		(((e->state() & ShiftButton) || (e->state() & ControlButton))) &&			KrSelectionMode::getSelectionHandler()->shiftCtrlLeftButtonSelects())     {       if (KrSelectionMode::getSelectionHandler()->leftButtonPreservesSelection() && !(e->state() & ShiftButton)          && !(e->state() & ControlButton) && !(e->state() & AltButton))       {         if (newCurrent)         {           newCurrent->setSelected(!newCurrent->isSelected());           newCurrent->repaint();			  selectionChanged = true;         }         callDefaultHandler = false;         processEvent = false;         e->accept();       }     }     else     {       callDefaultHandler = false;       processEvent = false;       e->accept();     }   }   modifierPressed = false;   if ( (e->state() & ShiftButton) || (e->state() & ControlButton) || (e->state() & AltButton) ) {      CANCEL_TWO_CLICK_RENAME;      modifierPressed = true;   }   // stop quick search in case a mouse click occured   KConfigGroupSaver grpSvr( _config, "Look&Feel" );   if ( _config->readBoolEntry( "New Style Quicksearch", _NewStyleQuicksearch ) ) {      if ( MAIN_VIEW ) {         if ( ACTIVE_PANEL ) {            if ( ACTIVE_PANEL->quickSearch ) {               if ( ACTIVE_PANEL->quickSearch->isShown() ) {                  stopQuickSearch( 0 );               }            }         }      }   }   if ( !_focused )   	op()->emitNeedFocus();   if (processEvent && ( (e->state() & ShiftButton) || (e->state() & ControlButton) || (e->state() & AltButton) ) && !KrSelectionMode::getSelectionHandler()->useQTSelection()){      if ( oldCurrent && newCurrent && oldCurrent != newCurrent && e->state() & ShiftButton ) {         int oldPos = oldCurrent->itemPos();         int newPos = newCurrent->itemPos();         QListViewItem *top = 0, *bottom = 0;         if ( oldPos > newPos ) {            top = newCurrent;            bottom = oldCurrent;         } else {            top = oldCurrent;            bottom = newCurrent;         }         QListViewItemIterator it( top );         for ( ; it.current(); ++it ) {            if ( !it.current() ->isSelected() ) {               it.current() ->setSelected( true );               selectionChanged = true;            }            if ( it.current() == bottom )               break;         }         QListView::setCurrentItem( newCurrent );         callDefaultHandler = false;      }   }		if (selectionChanged)		updateView(); // don't call triggerUpdate directly!	   //   QListViewItem * i = itemAt( contentsToViewport( e->pos() ) );   if (callDefaultHandler)   {     dragStartPos = QPoint( -1, -1 );     QString name = QString::null;    // will the file be deleted by the mouse event?     if( newCurrent )                 // save the name of the file       name = static_cast<KrDetailedViewItem*>( newCurrent ) ->name();     KListView::contentsMousePressEvent( e );     if( name.isEmpty() || _dict.find( name ) == 0 ) // is the file still valid?       newCurrent = 0;                // if not, don't do any crash...   } else {     // emitting the missing signals from QListView::contentsMousePressEvent();     // the right click signal is not emitted as it is used for selection     QPoint vp = contentsToViewport( e->pos() );     if( !newCurrent || ( newCurrent && newCurrent->isEnabled() ) ) {       emit pressed( pressedItem = newCurrent );       emit pressed( newCurrent, viewport()->mapToGlobal( vp ), 0 );     }     emit mouseButtonPressed( e->button(), newCurrent, viewport()->mapToGlobal( vp ), 0 );   }   //   if (i != 0) // comment in, if click sould NOT select   //     setSelected(i, FALSE);   if (newCurrent) QListView::setCurrentItem(newCurrent);   if ( ACTIVE_PANEL->quickSearch->isShown() ) {      ACTIVE_PANEL->quickSearch->hide();      ACTIVE_PANEL->quickSearch->clear();      krDirUp->setEnabled( true );   }   if ( OTHER_PANEL->quickSearch->isShown() ) {      OTHER_PANEL->quickSearch->hide();      OTHER_PANEL->quickSearch->clear();      krDirUp->setEnabled( true );   }}void KrDetailedView::contentsMouseReleaseEvent( QMouseEvent * e ) {  if (e->button() == RightButton)    contextMenuTimer.stop();  KListView::contentsMouseReleaseEvent( e );  if( pressedItem ) {    QPoint vp = contentsToViewport( e->pos() );    QListViewItem *newCurrent = itemAt( vp );    if( pressedItem == newCurrent ) {      // emitting the missing signals from QListView::contentsMouseReleaseEvent();      // the right click signal is not emitted as it is used for selection      if( !newCurrent || ( newCurrent && newCurrent->isEnabled() ) ) {        emit clicked( newCurrent );        emit clicked( newCurrent, viewport()->mapToGlobal( vp ), 0 );      }      emit mouseButtonClicked( e->button(), newCurrent, viewport()->mapToGlobal( vp ), 0 );    }    pressedItem = 0;  }}void KrDetailedView::contentsMouseMoveEvent ( QMouseEvent * e ) {   if ( ( singleClicked || renameTimer.isActive() ) && itemAt( contentsToViewport( e->pos() ) ) != clickedItem )      CANCEL_TWO_CLICK_RENAME;   if ( dragStartPos != QPoint( -1, -1 ) &&        e->state() & LeftButton && ( dragStartPos - e->pos() ).manhattanLength() > QApplication::startDragDistance() )      startDrag();   if (KrSelectionMode::getSelectionHandler()->rightButtonPreservesSelection()       && KrSelectionMode::getSelectionHandler()->rightButtonSelects()       && KrSelectionMode::getSelectionHandler()->showContextMenu() >= 0 && e->state() == Qt::RightButton)      {         QListViewItem *newItem = itemAt( contentsToViewport( e->pos() ) );         e->accept();         if (newItem != lastSwushPosition && newItem)         {           // is the new item above or below the previous one?           QListViewItem * above = newItem;           QListViewItem * below = newItem;           for (;(above || below) && above != lastSwushPosition && below != lastSwushPosition;)           {             if (above)               above = above->itemAbove();             if (below)               below = below->itemBelow();           }           if (above && (above == lastSwushPosition))           {             for (; above != newItem; above = above->itemBelow())               above->setSelected(swushSelects);             newItem->setSelected(swushSelects);             lastSwushPosition = newItem;             updateView();           }           else if (below && (below == lastSwushPosition))           {             for (; below != newItem; below = below->itemAbove())               below->setSelected(swushSelects);             newItem->setSelected(swushSelects);             lastSwushPosition = newItem;             updateView();           }           contextMenuTimer.stop();         }         // emitting the missing signals from QListView::contentsMouseMoveEvent();         if( newItem )           emit onItem( newItem );         else           emit onViewport();      }      else         KListView::contentsMouseMoveEvent( e );}void KrDetailedView::contentsWheelEvent( QWheelEvent * e ) {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -