From: Karai C. <ck...@us...> - 2007-03-20 21:05:20
|
Update of /cvsroot/krusader/krusader_kde3/krusader/Locate In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv19836/krusader_kde3/krusader/Locate Modified Files: locate.cpp locate.h Log Message: ADDED: Locate-results: dragging items, copy to clipboard (CTRL+C) Index: locate.h =================================================================== RCS file: /cvsroot/krusader/krusader_kde3/krusader/Locate/locate.h,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** locate.h 26 Jan 2005 19:10:09 -0000 1.5 --- locate.h 20 Mar 2007 20:05:39 -0000 1.6 *************** *** 45,48 **** --- 45,50 ---- LocateDlg(); + static LocateDlg *LocateDialog; + virtual void slotUser1(); virtual void slotUser2(); *************** *** 50,53 **** --- 52,57 ---- virtual void feedToListBox(); + void reset(); + public slots: void processStdout(KProcess *, char *, int); Index: locate.cpp =================================================================== RCS file: /cvsroot/krusader/krusader_kde3/krusader/Locate/locate.cpp,v retrieving revision 1.21 retrieving revision 1.22 diff -C2 -d -r1.21 -r1.22 *** locate.cpp 19 Mar 2007 11:28:49 -0000 1.21 --- locate.cpp 20 Mar 2007 20:05:39 -0000 1.22 *************** *** 53,66 **** #include <qregexp.h> #include <qdir.h> // these are the values that will exist in the menu ! #define VIEW_ID 90 ! #define EDIT_ID 91 ! #define FIND_ID 92 ! #define FIND_NEXT_ID 93 ! #define FIND_PREV_ID 94 ////////////////////////////////////////////////////////// KProcess * LocateDlg::updateProcess = 0; LocateDlg::LocateDlg() : KDialogBase(0,0,false,"Locate", KDialogBase::User1 | KDialogBase::User2 | KDialogBase::User3 | KDialogBase::Close, --- 53,100 ---- #include <qregexp.h> #include <qdir.h> + #include <qclipboard.h> + #include <kurldrag.h> + #include <../kicons.h> // these are the values that will exist in the menu ! #define VIEW_ID 90 ! #define EDIT_ID 91 ! #define FIND_ID 92 ! #define FIND_NEXT_ID 93 ! #define FIND_PREV_ID 94 ! #define COPY_SELECTED_TO_CLIPBOARD 95 ////////////////////////////////////////////////////////// + class LocateListView : public KListView + { + public: + LocateListView( QWidget * parent, const char * name = 0 ) : KListView( parent, name ) + { + } + + void startDrag() + { + KURL::List urls; + + QListViewItem * item = 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 ) ); + d->dragCopy(); + } + }; + KProcess * LocateDlg::updateProcess = 0; + LocateDlg * LocateDlg::LocateDialog = 0; LocateDlg::LocateDlg() : KDialogBase(0,0,false,"Locate", KDialogBase::User1 | KDialogBase::User2 | KDialogBase::User3 | KDialogBase::Close, *************** *** 104,108 **** grid->addWidget( line1, 2, 0 ); ! resultList=new KListView( widget ); // create the main container krConfig->setGroup("Look&Feel"); --- 138,142 ---- grid->addWidget( line1, 2, 0 ); ! resultList=new LocateListView( widget ); // create the main container krConfig->setGroup("Look&Feel"); *************** *** 114,117 **** --- 148,152 ---- resultList->setShowSortIndicator(false); resultList->setSorting(-1); + resultList->setSelectionMode( QListView::Extended ); resultList->addColumn( i18n("Results"), QFontMetrics(resultList->font()).width("W") * 60 ); *************** *** 147,151 **** show(); ! exec(); } --- 182,186 ---- show(); ! LocateDialog = this; } *************** *** 290,293 **** --- 325,330 ---- else lastItem = new KListViewItem( resultList, *it ); + + lastItem->setDragEnabled( true ); } } *************** *** 327,330 **** --- 364,372 ---- 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()); *************** *** 337,340 **** --- 379,383 ---- case FIND_NEXT_ID: case FIND_PREV_ID: + case COPY_SELECTED_TO_CLIPBOARD: operate( item, result ); break; *************** *** 362,365 **** --- 405,415 ---- void LocateDlg::keyPressEvent( QKeyEvent *e ) { + if( Krusader::actCopy->shortcut().contains( KKey( e ) ) ) + { + operate( 0, COPY_SELECTED_TO_CLIPBOARD ); + e->accept(); + return; + } + switch ( e->key() ) { *************** *** 398,402 **** void LocateDlg::operate( QListViewItem *item, int task ) { ! KURL name = vfs::fromPathOrURL( item->text( 0 ) ); switch ( task ) --- 448,454 ---- void LocateDlg::operate( QListViewItem *item, int task ) { ! KURL name; ! if( item != 0 ) ! name = vfs::fromPathOrURL( item->text( 0 ) ); switch ( task ) *************** *** 458,461 **** --- 510,534 ---- } 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; } } *************** *** 532,534 **** --- 605,613 ---- } + void LocateDlg::reset() + { + locateSearchFor->lineEdit()->setFocus(); + locateSearchFor->lineEdit()->selectAll(); + } + #include "locate.moc" |