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

📄 locate.cpp

📁 LINUX 下, 以 QT/KDE 写的档案管理员
💻 CPP
📖 第 1 页 / 共 2 页
字号:
        QString fileName = (*it).stripWhiteSpace();        if( fileName.endsWith( "/" ) && fileName != "/" )          fileName.truncate( fileName.length() -1 );        fileName = fileName.mid( fileName.findRev( '/' ) + 1 );                if( !regExp.exactMatch( fileName ) )          continue;              }      if( onlyExist )      {        KFileItem file(KFileItem::Unknown, KFileItem::Unknown, (*it).stripWhiteSpace() );        if( !file.isReadable() )          continue;      }            if( lastItem )            lastItem = new KListViewItem( resultList, lastItem, *it );      else        lastItem = new KListViewItem( resultList, *it );      lastItem->setDragEnabled( true );    }  }  if( stopping )    proc->kill( SIGKILL );    qApp->processEvents();}void LocateDlg::processStderr(KProcess *, char *buffer, int length){  char *buf = new char[ length+1 ];  memcpy( buf, buffer, length );  buf[ length ] = 0;  collectedErr += QString::fromLocal8Bit( buf );  delete []buf;  }void LocateDlg::slotRightClick(QListViewItem *item){  if ( !item )    return;  // create the menu  KPopupMenu popup;  popup.insertTitle(i18n("Locate"));  popup.insertItem(i18n("View (F3)"), VIEW_ID);  popup.insertItem(i18n("Edit (F4)"), EDIT_ID);  popup.insertSeparator();  popup.insertItem(i18n("Find (Ctrl+F)"), FIND_ID);  popup.insertItem(i18n("Find next (Ctrl+N)"), FIND_NEXT_ID);  popup.insertItem(i18n("Find previous (Ctrl+P)"), FIND_PREV_ID);  popup.insertSeparator();  popup.insertItem(i18n("Copy selected to clipboard"), COPY_SELECTED_TO_CLIPBOARD);  int result=popup.exec(QCursor::pos());  // check out the user's option  switch (result)  {  case VIEW_ID:  case EDIT_ID:  case FIND_ID:  case FIND_NEXT_ID:  case FIND_PREV_ID:  case COPY_SELECTED_TO_CLIPBOARD:    operate( item, result );    break;  }}void LocateDlg::slotDoubleClick(QListViewItem *item){  if ( !item )    return;  QString dirName = item->text(0);  QString fileName;  if( !QDir( dirName ).exists() )  {    fileName = dirName.mid( dirName.findRev( '/' ) + 1 );    dirName.truncate( dirName.findRev( '/' ) );  }      ACTIVE_FUNC->openUrl(vfs::fromPathOrURL( dirName ), fileName );  KDialogBase::accept();}void LocateDlg::keyPressEvent( QKeyEvent *e ){  if( Krusader::actCopy->shortcut().contains( KKey( e ) ) )  {    operate( 0, COPY_SELECTED_TO_CLIPBOARD );    e->accept();    return;  }  switch ( e->key() )  {  case Key_M :    if( e->state() == ControlButton )    {      resultList->setFocus();      e->accept();    }    break;  case Key_F3 :    if( resultList->currentItem() )      operate( resultList->currentItem(), VIEW_ID );    break;  case Key_F4 :    if( resultList->currentItem() )      operate( resultList->currentItem(), EDIT_ID );    break;  case Key_N :    if ( e->state() == ControlButton )      operate( resultList->currentItem(), FIND_NEXT_ID );    break;  case Key_P :    if ( e->state() == ControlButton )      operate( resultList->currentItem(), FIND_PREV_ID );    break;  case Key_F :    if ( e->state() == ControlButton )      operate( resultList->currentItem(), FIND_ID );    break;  }  QDialog::keyPressEvent( e );}void LocateDlg::operate( QListViewItem *item, int task ){  KURL name;  if( item != 0 )    name = vfs::fromPathOrURL( item->text( 0 ) );    switch ( task )  {  case VIEW_ID:    KrViewer::view( name, this ); // view the file    break;  case EDIT_ID:    KrViewer::edit( name, this ); // view the file    break;  case FIND_ID:    {      krConfig->setGroup("Locate");      long options = krConfig->readNumEntry("Find Options", 0);      QStringList list = krConfig->readListEntry("Find Patterns");            KFindDialog dlg( this, "locateFindDialog", options, list );      if ( dlg.exec() != QDialog::Accepted )        return;      if( list.first() != ( findPattern = dlg.pattern() ) )        list.push_front( dlg.pattern() );              krConfig->writeEntry( "Find Options", findOptions = dlg.options() );      krConfig->writeEntry( "Find Patterns", list );      if( !( findOptions & KFindDialog::FromCursor ) )        resultList->setCurrentItem( ( findOptions & KFindDialog::FindBackwards ) ?                                    resultList->lastItem() : resultList->firstChild() );      findCurrentItem = (KListViewItem *)resultList->currentItem();            if( find() && findCurrentItem )        resultList->setCurrentItem( findCurrentItem );      else        KMessageBox::information( 0, i18n( "Search string not found!" ) );              resultList->ensureItemVisible( resultList->currentItem() );    }    break;        case FIND_NEXT_ID:  case FIND_PREV_ID:    {      if( task == FIND_PREV_ID )        findOptions ^= KFindDialog::FindBackwards;            findCurrentItem = (KListViewItem *)resultList->currentItem();      nextLine();      if( find() && findCurrentItem )        resultList->setCurrentItem( findCurrentItem );      else        KMessageBox::information( 0, i18n( "Search string not found!" ) );      resultList->ensureItemVisible( resultList->currentItem() );      if( task == FIND_PREV_ID )        findOptions ^= KFindDialog::FindBackwards;    }    break;  case COPY_SELECTED_TO_CLIPBOARD:    {      KURL::List urls;      QListViewItem * item = resultList->firstChild();      while( item )      {        if( item->isSelected() )           urls.push_back( vfs::fromPathOrURL( item->text( 0 ) ) );        item = item->nextSibling();      }      if( urls.count() == 0 )        return;      KURLDrag *d = new KURLDrag(urls, this);      d->setPixmap( FL_LOADICON( "file" ), QPoint( -7, 0 ) );      QApplication::clipboard()->setData( d );    }    break;  }}void LocateDlg::nextLine(){  if( findOptions & KFindDialog::FindBackwards )    findCurrentItem = (KListViewItem *)findCurrentItem->itemAbove();  else    findCurrentItem = (KListViewItem *)findCurrentItem->itemBelow();}bool LocateDlg::find(){  while( findCurrentItem )  {    QString item = findCurrentItem->text( 0 );    if( findOptions & KFindDialog::RegularExpression )    {      if( item.contains( QRegExp( findPattern, findOptions & KFindDialog::CaseSensitive ) ) )        return true;    }    else    {      if( item.contains( findPattern, findOptions & KFindDialog::CaseSensitive ) )        return true;    }        nextLine();  }    return false;}void LocateDlg::feedToListBox(){  virt_vfs v(0,true);  v.vfs_refresh( KURL( "/" ) );    krConfig->setGroup( "Locate" );    int listBoxNum = krConfig->readNumEntry( "Feed To Listbox Counter", 1 );    QString queryName;  do {    queryName = i18n("Locate results")+QString( " %1" ).arg( listBoxNum++ );  }while( v.vfs_search( queryName ) != 0 );  krConfig->writeEntry( "Feed To Listbox Counter", listBoxNum );      krConfig->setGroup( "Advanced" );  if ( krConfig->readBoolEntry( "Confirm Feed to Listbox",  _ConfirmFeedToListbox ) ) {    bool ok;    queryName = KInputDialog::getText(                i18n("Query name"),		// Caption                i18n("Here you can name the file collection"),	// Questiontext                queryName,	// Default                &ok );     if ( ! ok)       return;  }      KURL::List urlList;  QListViewItem * item = resultList->firstChild();  while( item )  {    urlList.push_back( vfs::fromPathOrURL( item->text( 0 ) ) );    item = item->nextSibling();  }  KURL url = KURL::fromPathOrURL(QString("virt:/")+ queryName);  v.vfs_refresh( url );  v.vfs_addFiles( &urlList, KIO::CopyJob::Copy, 0 );  //ACTIVE_FUNC->openUrl(url);    ACTIVE_MNG->slotNewTab(url.prettyURL());  accept();}void LocateDlg::reset(){  locateSearchFor->lineEdit()->setFocus();  locateSearchFor->lineEdit()->selectAll();}#include "locate.moc"

⌨️ 快捷键说明

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