• Skip to content
  • Skip to link menu
Trinity API Reference
  • Trinity API Reference
  • tdeio/tdefile
 

tdeio/tdefile

  • tdeio
  • tdefile
tdefiletreeview.cpp
1 /* This file is part of the KDEproject
2  Copyright (C) 2000 David Faure <faure@kde.org>
3  2000 Carsten Pfeiffer <pfeiffer@kde.org>
4 
5  This library is free software; you can redistribute it and/or
6  modify it under the terms of the GNU Library General Public
7  License version 2 as published by the Free Software Foundation.
8 
9  This library is distributed in the hope that it will be useful,
10  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12  Library General Public License for more details.
13 
14  You should have received a copy of the GNU Library General Public License
15  along with this library; see the file COPYING.LIB. If not, write to
16  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17  Boston, MA 02110-1301, USA.
18 */
19 
20 #include <tqapplication.h>
21 #include <tqheader.h>
22 #include <tqtimer.h>
23 #include <kdebug.h>
24 #include <kdirnotify_stub.h>
25 #include <tdeglobalsettings.h>
26 #include <tdefileitem.h>
27 #include <tdefileview.h>
28 #include <kmimetype.h>
29 #include <kstandarddirs.h>
30 #include <stdlib.h>
31 #include <assert.h>
32 #include <tdeio/job.h>
33 #include <tdeio/global.h>
34 #include <kurldrag.h>
35 #include <kiconloader.h>
36 
37 
38 #include "tdefiletreeview.h"
39 #include "tdefiletreebranch.h"
40 #include "tdefiletreeviewitem.h"
41 
42 KFileTreeView::KFileTreeView( TQWidget *parent, const char *name )
43  : TDEListView( parent, name ),
44  m_wantOpenFolderPixmaps( true ),
45  m_toolTip( this )
46 {
47  setDragEnabled(true);
48  setSelectionModeExt( TDEListView::Single );
49 
50  m_animationTimer = new TQTimer( this );
51  connect( m_animationTimer, TQ_SIGNAL( timeout() ),
52  this, TQ_SLOT( slotAnimation() ) );
53 
54  m_currentBeforeDropItem = 0;
55  m_dropItem = 0;
56 
57  m_autoOpenTimer = new TQTimer( this );
58  connect( m_autoOpenTimer, TQ_SIGNAL( timeout() ),
59  this, TQ_SLOT( slotAutoOpenFolder() ) );
60 
61  /* The executed-Slot only opens a path, while the expanded-Slot populates it */
62  connect( this, TQ_SIGNAL( executed( TQListViewItem * ) ),
63  this, TQ_SLOT( slotExecuted( TQListViewItem * ) ) );
64  connect( this, TQ_SIGNAL( expanded ( TQListViewItem *) ),
65  this, TQ_SLOT( slotExpanded( TQListViewItem *) ));
66  connect( this, TQ_SIGNAL( collapsed( TQListViewItem *) ),
67  this, TQ_SLOT( slotCollapsed( TQListViewItem* )));
68 
69 
70  /* connections from the konqtree widget */
71  connect( this, TQ_SIGNAL( selectionChanged() ),
72  this, TQ_SLOT( slotSelectionChanged() ) );
73  connect( this, TQ_SIGNAL( onItem( TQListViewItem * )),
74  this, TQ_SLOT( slotOnItem( TQListViewItem * ) ) );
75  connect( this, TQ_SIGNAL(itemRenamed(TQListViewItem*, const TQString &, int)),
76  this, TQ_SLOT(slotItemRenamed(TQListViewItem*, const TQString &, int)));
77 
78 
79  m_bDrag = false;
80  m_branches.setAutoDelete( true );
81 
82  m_openFolderPixmap = DesktopIcon( "folder_open",TDEIcon::SizeSmall,TDEIcon::ActiveState );
83 }
84 
85 KFileTreeView::~KFileTreeView()
86 {
87  // we must make sure that the KFileTreeViewItems are deleted _before_ the
88  // branches are deleted. Otherwise, the KFileItems would be destroyed
89  // and the KFileTreeViewItems had dangling pointers to them.
90  hide();
91  clear();
92  m_branches.clear(); // finally delete the branches and KFileItems
93 }
94 
95 
96 bool KFileTreeView::isValidItem( TQListViewItem *item)
97 {
98  if (!item)
99  return false;
100  TQPtrList<TQListViewItem> lst;
101  TQListViewItemIterator it( this );
102  while ( it.current() )
103  {
104  if ( it.current() == item )
105  return true;
106  ++it;
107  }
108  return false;
109 }
110 
111 void KFileTreeView::contentsDragEnterEvent( TQDragEnterEvent *ev )
112 {
113  if ( ! acceptDrag( ev ) )
114  {
115  ev->ignore();
116  return;
117  }
118  ev->acceptAction();
119  m_currentBeforeDropItem = selectedItem();
120 
121  TQListViewItem *item = itemAt( contentsToViewport( ev->pos() ) );
122  if( item )
123  {
124  m_dropItem = item;
125  m_autoOpenTimer->start( KFileView::autoOpenDelay() );
126  }
127  else
128  {
129  m_dropItem = 0;
130 }
131 }
132 
133 void KFileTreeView::contentsDragMoveEvent( TQDragMoveEvent *e )
134 {
135  if( ! acceptDrag( e ) )
136  {
137  e->ignore();
138  return;
139  }
140  e->acceptAction();
141 
142 
143  TQListViewItem *afterme;
144  TQListViewItem *parent;
145 
146  findDrop( e->pos(), parent, afterme );
147 
148  // "afterme" is 0 when aiming at a directory itself
149  TQListViewItem *item = afterme ? afterme : parent;
150 
151  if( item && item->isSelectable() )
152  {
153  setSelected( item, true );
154  if( item != m_dropItem ) {
155  m_autoOpenTimer->stop();
156  m_dropItem = item;
157  m_autoOpenTimer->start( KFileView::autoOpenDelay() );
158  }
159  }
160  else
161  {
162  m_autoOpenTimer->stop();
163  m_dropItem = 0;
164  }
165 }
166 
167 void KFileTreeView::contentsDragLeaveEvent( TQDragLeaveEvent * )
168 {
169  // Restore the current item to what it was before the dragging (#17070)
170  if ( isValidItem(m_currentBeforeDropItem) )
171  {
172  setSelected( m_currentBeforeDropItem, true );
173  ensureItemVisible( m_currentBeforeDropItem );
174  }
175  else if ( isValidItem(m_dropItem) )
176  setSelected( m_dropItem, false ); // no item selected
177  m_currentBeforeDropItem = 0;
178  m_dropItem = 0;
179 
180 }
181 
182 void KFileTreeView::contentsDropEvent( TQDropEvent *e )
183 {
184 
185  m_autoOpenTimer->stop();
186  m_dropItem = 0;
187 
188  kdDebug(250) << "contentsDropEvent !" << endl;
189  if( ! acceptDrag( e ) ) {
190  e->ignore();
191  return;
192  }
193 
194  e->acceptAction();
195  TQListViewItem *afterme;
196  TQListViewItem *parent;
197  findDrop(e->pos(), parent, afterme);
198 
199  //kdDebug(250) << " parent=" << (parent?parent->text(0):TQString::null)
200  // << " afterme=" << (afterme?afterme->text(0):TQString::null) << endl;
201 
202  if (e->source() == viewport() && itemsMovable())
203  movableDropEvent(parent, afterme);
204  else
205  {
206  emit dropped(e, afterme);
207  emit dropped(this, e, afterme);
208  emit dropped(e, parent, afterme);
209  emit dropped(this, e, parent, afterme);
210 
211  KURL::List urls;
212  KURLDrag::decode( e, urls );
213  emit dropped( this, e, urls );
214 
215  KURL parentURL;
216  if( parent )
217  parentURL = static_cast<KFileTreeViewItem*>(parent)->url();
218  else
219  // can happen when dropping above the root item
220  // Should we choose the first branch in such a case ??
221  return;
222 
223  emit dropped( urls, parentURL );
224  emit dropped( this , e, urls, parentURL );
225  }
226 }
227 
228 bool KFileTreeView::acceptDrag(TQDropEvent* e ) const
229 {
230 
231  bool ancestOK= acceptDrops();
232  // kdDebug(250) << "Do accept drops: " << ancestOK << endl;
233  ancestOK = ancestOK && itemsMovable();
234  // kdDebug(250) << "acceptDrag: " << ancestOK << endl;
235  // kdDebug(250) << "canDecode: " << KURLDrag::canDecode(e) << endl;
236  // kdDebug(250) << "action: " << e->action() << endl;
237 
238  /* TDEListView::acceptDrag(e); */
239  /* this is what TDEListView does:
240  * acceptDrops() && itemsMovable() && (e->source()==viewport());
241  * ask acceptDrops and itemsMovable, but not the third
242  */
243  return ancestOK && KURLDrag::canDecode( e ) &&
244  // Why this test? All DnDs are one of those AFAIK (DF)
245  ( e->action() == TQDropEvent::Copy
246  || e->action() == TQDropEvent::Move
247  || e->action() == TQDropEvent::Link );
248 }
249 
250 
251 
252 TQDragObject * KFileTreeView::dragObject()
253 {
254 
255  KURL::List urls;
256  const TQPtrList<TQListViewItem> fileList = selectedItems();
257  TQPtrListIterator<TQListViewItem> it( fileList );
258  for ( ; it.current(); ++it )
259  {
260  urls.append( static_cast<KFileTreeViewItem*>(it.current())->url() );
261  }
262  TQPoint hotspot;
263  TQPixmap pixmap;
264  if( urls.count() > 1 ){
265  pixmap = DesktopIcon( "application-vnd.tde.tdemultiple", 16 );
266  }
267  if( pixmap.isNull() )
268  pixmap = currentKFileTreeViewItem()->fileItem()->pixmap( 16 );
269  hotspot.setX( pixmap.width() / 2 );
270  hotspot.setY( pixmap.height() / 2 );
271  TQDragObject* dragObject = new KURLDrag( urls, this );
272  if( dragObject )
273  dragObject->setPixmap( pixmap, hotspot );
274  return dragObject;
275 }
276 
277 
278 
279 void KFileTreeView::slotCollapsed( TQListViewItem *item )
280 {
281  KFileTreeViewItem *kftvi = static_cast<KFileTreeViewItem*>(item);
282  kdDebug(250) << "hit slotCollapsed" << endl;
283  if( kftvi && kftvi->isDir())
284  {
285  item->setPixmap( 0, itemIcon(kftvi));
286  }
287 }
288 
289 void KFileTreeView::slotExpanded( TQListViewItem *item )
290 {
291  kdDebug(250) << "slotExpanded here !" << endl;
292 
293  if( ! item ) return;
294 
295  KFileTreeViewItem *it = static_cast<KFileTreeViewItem*>(item);
296  KFileTreeBranch *branch = it->branch();
297 
298  /* Start the animation for the branch object */
299  if( it->isDir() && branch && item->childCount() == 0 )
300  {
301  /* check here if the branch really needs to be populated again */
302  kdDebug(250 ) << "starting to open " << it->url().prettyURL() << endl;
303  startAnimation( it );
304  bool branchAnswer = branch->populate( it->url(), it );
305  kdDebug(250) << "Branches answer: " << branchAnswer << endl;
306  if( ! branchAnswer )
307  {
308  kdDebug(250) << "ERR: Could not populate!" << endl;
309  stopAnimation( it );
310  }
311  }
312 
313  /* set a pixmap 'open folder' */
314  if( it->isDir() && isOpen( item ) )
315  {
316  kdDebug(250)<< "Setting open Pixmap" << endl;
317  item->setPixmap( 0, itemIcon( it )); // 0, m_openFolderPixmap );
318  }
319 }
320 
321 
322 
323 void KFileTreeView::slotExecuted( TQListViewItem *item )
324 {
325  if ( !item )
326  return;
327  /* This opens the dir and causes the Expanded-slot to be called,
328  * which strolls through the children.
329  */
330  if( static_cast<KFileTreeViewItem*>(item)->isDir())
331  {
332  item->setOpen( !item->isOpen() );
333  }
334 }
335 
336 
337 void KFileTreeView::slotAutoOpenFolder()
338 {
339  m_autoOpenTimer->stop();
340 
341  if ( !isValidItem(m_dropItem) || m_dropItem->isOpen() )
342  return;
343 
344  m_dropItem->setOpen( true );
345  m_dropItem->repaint();
346 }
347 
348 
349 void KFileTreeView::slotSelectionChanged()
350 {
351  if ( !m_dropItem ) // don't do this while the dragmove thing
352  {
353  }
354 }
355 
356 
357 KFileTreeBranch* KFileTreeView::addBranch( const KURL &path, const TQString& name,
358  bool showHidden )
359 {
360  const TQPixmap& folderPix = KMimeType::mimeType("inode/directory")->pixmap( TDEIcon::Desktop,TDEIcon::SizeSmall );
361 
362  return addBranch( path, name, folderPix, showHidden);
363 }
364 
365 KFileTreeBranch* KFileTreeView::addBranch( const KURL &path, const TQString& name,
366  const TQPixmap& pix, bool showHidden )
367 {
368  kdDebug(250) << "adding another root " << path.prettyURL() << endl;
369 
370  /* Open a new branch */
371  KFileTreeBranch *newBranch = new KFileTreeBranch( this, path, name, pix,
372  showHidden );
373  return addBranch(newBranch);
374 }
375 
376 KFileTreeBranch *KFileTreeView::addBranch(KFileTreeBranch *newBranch)
377 {
378  connect( newBranch, TQ_SIGNAL(populateFinished( KFileTreeViewItem* )),
379  this, TQ_SLOT( slotPopulateFinished( KFileTreeViewItem* )));
380 
381  connect( newBranch, TQ_SIGNAL( newTreeViewItems( KFileTreeBranch*,
382  const KFileTreeViewItemList& )),
383  this, TQ_SLOT( slotNewTreeViewItems( KFileTreeBranch*,
384  const KFileTreeViewItemList& )));
385 
386  m_branches.append( newBranch );
387  return( newBranch );
388 }
389 
390 KFileTreeBranch *KFileTreeView::branch( const TQString& searchName )
391 {
392  KFileTreeBranch *branch = 0;
393  TQPtrListIterator<KFileTreeBranch> it( m_branches );
394 
395  while ( (branch = it.current()) != 0 ) {
396  ++it;
397  TQString bname = branch->name();
398  kdDebug(250) << "This is the branches name: " << bname << endl;
399  if( bname == searchName )
400  {
401  kdDebug(250) << "Found branch " << bname << " and return ptr" << endl;
402  return( branch );
403  }
404  }
405  return ( 0L );
406 }
407 
408 KFileTreeBranchList& KFileTreeView::branches()
409 {
410  return( m_branches );
411 }
412 
413 
414 bool KFileTreeView::removeBranch( KFileTreeBranch *branch )
415 {
416  if(m_branches.contains(branch))
417  {
418  delete (branch->root());
419  m_branches.remove( branch );
420  return true;
421  }
422  else
423  {
424  return false;
425  }
426 }
427 
428 void KFileTreeView::setDirOnlyMode( KFileTreeBranch* branch, bool bom )
429 {
430  if( branch )
431  {
432  branch->setDirOnlyMode( bom );
433  }
434 }
435 
436 
437 void KFileTreeView::slotPopulateFinished( KFileTreeViewItem *it )
438 {
439  if( it && it->isDir())
440  stopAnimation( it );
441 }
442 
443 void KFileTreeView::slotNewTreeViewItems( KFileTreeBranch* branch, const KFileTreeViewItemList& itemList )
444 {
445  if( ! branch ) return;
446  kdDebug(250) << "hitting slotNewTreeViewItems" << endl;
447 
448  /* Sometimes it happens that new items should become selected, i.e. if the user
449  * creates a new dir, he probably wants it to be selected. This can not be done
450  * right after creating the directory or file, because it takes some time until
451  * the item appears here in the treeview. Thus, the creation code sets the member
452  * m_neUrlToSelect to the required url. If this url appears here, the item becomes
453  * selected and the member nextUrlToSelect will be cleared.
454  */
455  if( ! m_nextUrlToSelect.isEmpty() )
456  {
457  KFileTreeViewItemListIterator it( itemList );
458 
459  bool end = false;
460  for( ; !end && it.current(); ++it )
461  {
462  KURL url = (*it)->url();
463 
464  if( m_nextUrlToSelect.equals(url, true )) // ignore trailing / on dirs
465  {
466  setCurrentItem( static_cast<TQListViewItem*>(*it) );
467  m_nextUrlToSelect = KURL();
468  end = true;
469  }
470  }
471  }
472 }
473 
474 TQPixmap KFileTreeView::itemIcon( KFileTreeViewItem *item, int gap ) const
475 {
476  TQPixmap pix;
477  kdDebug(250) << "Setting icon for column " << gap << endl;
478 
479  if( item )
480  {
481  /* Check if it is a branch root */
482  KFileTreeBranch *brnch = item->branch();
483  if( item == brnch->root() )
484  {
485  pix = brnch->pixmap();
486  if( m_wantOpenFolderPixmaps && brnch->root()->isOpen() )
487  {
488  pix = brnch->openPixmap();
489  }
490  }
491  else
492  {
493  // TODO: different modes, user Pixmaps ?
494  pix = item->fileItem()->pixmap( TDEIcon::SizeSmall ); // , TDEIcon::DefaultState);
495 
496  /* Only if it is a dir and the user wants open dir pixmap and it is open,
497  * change the fileitem's pixmap to the open folder pixmap. */
498  if( item->isDir() && m_wantOpenFolderPixmaps )
499  {
500  if( isOpen( static_cast<TQListViewItem*>(item)))
501  pix = m_openFolderPixmap;
502  }
503  }
504  }
505 
506  return pix;
507 }
508 
509 
510 void KFileTreeView::slotAnimation()
511 {
512  MapCurrentOpeningFolders::Iterator it = m_mapCurrentOpeningFolders.begin();
513  MapCurrentOpeningFolders::Iterator end = m_mapCurrentOpeningFolders.end();
514  for (; it != end;)
515  {
516  KFileTreeViewItem *item = it.key();
517  if (!isValidItem(item))
518  {
519  ++it;
520  m_mapCurrentOpeningFolders.remove(item);
521  continue;
522  }
523 
524  uint & iconNumber = it.data().iconNumber;
525  TQString icon = TQString::fromLatin1( it.data().iconBaseName ).append( TQString::number( iconNumber ) );
526  // kdDebug(250) << "Loading icon " << icon << endl;
527  item->setPixmap( 0, DesktopIcon( icon,TDEIcon::SizeSmall,TDEIcon::ActiveState )); // KFileTreeViewFactory::instance() ) );
528 
529  iconNumber++;
530  if ( iconNumber > it.data().iconCount )
531  iconNumber = 1;
532 
533  ++it;
534  }
535 }
536 
537 
538 void KFileTreeView::startAnimation( KFileTreeViewItem * item, const char * iconBaseName, uint iconCount )
539 {
540  /* TODO: allow specific icons */
541  if( ! item )
542  {
543  kdDebug(250) << " startAnimation Got called without valid item !" << endl;
544  return;
545  }
546 
547  m_mapCurrentOpeningFolders.insert( item,
548  AnimationInfo( iconBaseName,
549  iconCount,
550  itemIcon(item, 0) ) );
551  if ( !m_animationTimer->isActive() )
552  m_animationTimer->start( 50 );
553 }
554 
555 void KFileTreeView::stopAnimation( KFileTreeViewItem * item )
556 {
557  if( ! item ) return;
558 
559  kdDebug(250) << "Stoping Animation !" << endl;
560 
561  MapCurrentOpeningFolders::Iterator it = m_mapCurrentOpeningFolders.find(item);
562  if ( it != m_mapCurrentOpeningFolders.end() )
563  {
564  if( item->isDir() && isOpen( item) )
565  {
566  kdDebug(250) << "Setting folder open pixmap !" << endl;
567  item->setPixmap( 0, itemIcon( item ));
568  }
569  else
570  {
571  item->setPixmap( 0, it.data().originalPixmap );
572  }
573  m_mapCurrentOpeningFolders.remove( item );
574  }
575  else
576  {
577  if( item )
578  kdDebug(250)<< "StopAnimation - could not find item " << item->url().prettyURL()<< endl;
579  else
580  kdDebug(250)<< "StopAnimation - item is zero !" << endl;
581  }
582  if (m_mapCurrentOpeningFolders.isEmpty())
583  m_animationTimer->stop();
584 }
585 
586 KFileTreeViewItem * KFileTreeView::currentKFileTreeViewItem() const
587 {
588  return static_cast<KFileTreeViewItem *>( selectedItem() );
589 }
590 
591 KURL KFileTreeView::currentURL() const
592 {
593  KFileTreeViewItem *item = currentKFileTreeViewItem();
594  if ( item )
595  return currentKFileTreeViewItem()->url();
596  else
597  return KURL();
598 }
599 
600 void KFileTreeView::slotOnItem( TQListViewItem *item )
601 {
602  KFileTreeViewItem *i = static_cast<KFileTreeViewItem *>( item );
603  if( i )
604  {
605  const KURL url = i->url();
606  if ( url.isLocalFile() )
607  emit onItem( url.path() );
608  else
609  emit onItem( url.prettyURL() );
610  }
611 }
612 
613 void KFileTreeView::slotItemRenamed(TQListViewItem* item, const TQString &name, int col)
614 {
615  (void) item;
616  kdDebug(250) << "Do not bother: " << name << col << endl;
617 }
618 
619 KFileTreeViewItem *KFileTreeView::findItem( const TQString& branchName, const TQString& relUrl )
620 {
621  KFileTreeBranch *br = branch( branchName );
622  return( findItem( br, relUrl ));
623 }
624 
625 KFileTreeViewItem *KFileTreeView::findItem( KFileTreeBranch* brnch, const TQString& relUrl )
626 {
627  KFileTreeViewItem *ret = 0;
628  if( brnch )
629  {
630  KURL url = brnch->rootUrl();
631 
632  if( ! relUrl.isEmpty() && TQDir::isRelativePath(relUrl) )
633  {
634  TQString partUrl( relUrl );
635 
636  if( partUrl.endsWith("/"))
637  partUrl.truncate( relUrl.length()-1 );
638 
639  url.addPath( partUrl );
640 
641  kdDebug(250) << "assembled complete dir string " << url.prettyURL() << endl;
642 
643  KFileItem *fi = brnch->findByURL( url );
644  if( fi )
645  {
646  ret = static_cast<KFileTreeViewItem*>( fi->extraData( brnch ));
647  kdDebug(250) << "Found item !" <<ret << endl;
648  }
649  }
650  else
651  {
652  ret = brnch->root();
653  }
654  }
655  return( ret );
656 }
657 
660 
661 
662 void KFileTreeViewToolTip::maybeTip( const TQPoint & )
663 {
664 #if 0
665  TQListViewItem *item = m_view->itemAt( point );
666  if ( item ) {
667  TQString text = static_cast<KFileViewItem*>( item )->toolTipText();
668  if ( !text.isEmpty() )
669  tip ( m_view->itemRect( item ), text );
670  }
671 #endif
672 }
673 
674 void KFileTreeView::virtual_hook( int id, void* data )
675 { TDEListView::virtual_hook( id, data ); }
676 
677 #include "tdefiletreeview.moc"
KFileTreeBranch
This is the branch class of the KFileTreeView, which represents one branch in the treeview.
Definition: tdefiletreebranch.h:49
KFileTreeBranch::rootUrl
KURL rootUrl() const
Definition: tdefiletreebranch.h:69
KFileTreeBranch::root
KFileTreeViewItem * root()
Definition: tdefiletreebranch.h:82
KFileTreeBranch::populate
virtual bool populate(const KURL &url, KFileTreeViewItem *currItem)
populates a branch.
Definition: tdefiletreebranch.cpp:495
KFileTreeBranch::name
TQString name() const
Definition: tdefiletreebranch.h:87
KFileTreeViewItem
An item for a KFileTreeView that knows about its own KFileItem.
Definition: tdefiletreeviewitem.h:41
KFileTreeViewItem::isDir
bool isDir() const
Definition: tdefiletreeviewitem.cpp:80
KFileTreeViewItem::url
KURL url() const
Definition: tdefiletreeviewitem.cpp:70
KFileTreeViewItem::branch
KFileTreeBranch * branch() const
Definition: tdefiletreeviewitem.h:50
KFileTreeViewItem::fileItem
KFileItem * fileItem() const
Definition: tdefiletreeviewitem.h:55
KFileTreeView::findItem
KFileTreeViewItem * findItem(KFileTreeBranch *brnch, const TQString &relUrl)
searches a branch for a KFileTreeViewItem identified by the relative url given as second parameter.
Definition: tdefiletreeview.cpp:625
KFileTreeView::setDirOnlyMode
virtual void setDirOnlyMode(KFileTreeBranch *branch, bool)
set the directory mode for branches.
Definition: tdefiletreeview.cpp:428
KFileTreeView::removeBranch
virtual bool removeBranch(KFileTreeBranch *branch)
removes the branch from the treeview.
Definition: tdefiletreeview.cpp:414
KFileTreeView::branch
KFileTreeBranch * branch(const TQString &searchName)
Definition: tdefiletreeview.cpp:390
KFileTreeView::addBranch
KFileTreeBranch * addBranch(const KURL &path, const TQString &name, bool showHidden=false)
Adds a branch to the treeview item.
Definition: tdefiletreeview.cpp:357
KFileTreeView::branches
KFileTreeBranchList & branches()
Definition: tdefiletreeview.cpp:408
KFileTreeView::currentKFileTreeViewItem
KFileTreeViewItem * currentKFileTreeViewItem() const
Definition: tdefiletreeview.cpp:586
KFileTreeView::acceptDrag
virtual bool acceptDrag(TQDropEvent *event) const
Definition: tdefiletreeview.cpp:228
KFileTreeView::currentURL
KURL currentURL() const
Definition: tdefiletreeview.cpp:591

tdeio/tdefile

Skip menu "tdeio/tdefile"
  • Main Page
  • Class Hierarchy
  • Alphabetical List
  • Class List
  • File List
  • Class Members
  • Related Pages

tdeio/tdefile

Skip menu "tdeio/tdefile"
  • arts
  • dcop
  • dnssd
  • interfaces
  •   kspeech
  •     interface
  •     library
  •   tdetexteditor
  • kate
  • kded
  • kdoctools
  • kimgio
  • kjs
  • libtdemid
  • libtdescreensaver
  • tdeabc
  • tdecmshell
  • tdecore
  • tdefx
  • tdehtml
  • tdeinit
  • tdeio
  •   bookmarks
  •   httpfilter
  •   kpasswdserver
  •   kssl
  •   tdefile
  •   tdeio
  •   tdeioexec
  • tdeioslave
  •   http
  • tdemdi
  •   tdemdi
  • tdenewstuff
  • tdeparts
  • tdeprint
  • tderandr
  • tderesources
  • tdespell2
  • tdesu
  • tdeui
  • tdeunittest
  • tdeutils
  • tdewallet
Generated for tdeio/tdefile by doxygen 1.9.1
This website is maintained by Timothy Pearson.