• 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 <tdestandarddirs.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
42KFileTreeView::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
85KFileTreeView::~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
96bool 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
111void 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
133void 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
167void 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
182void 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
228bool 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
252TQDragObject * 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
279void 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
289void 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
323void 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
337void 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
349void KFileTreeView::slotSelectionChanged()
350{
351 if ( !m_dropItem ) // don't do this while the dragmove thing
352 {
353 }
354}
355
356
357KFileTreeBranch* 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
365KFileTreeBranch* 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
376KFileTreeBranch *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
390KFileTreeBranch *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
408KFileTreeBranchList& KFileTreeView::branches()
409{
410 return( m_branches );
411}
412
413
414bool 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
428void KFileTreeView::setDirOnlyMode( KFileTreeBranch* branch, bool bom )
429{
430 if( branch )
431 {
432 branch->setDirOnlyMode( bom );
433 }
434}
435
436
437void KFileTreeView::slotPopulateFinished( KFileTreeViewItem *it )
438{
439 if( it && it->isDir())
440 stopAnimation( it );
441}
442
443void 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
474TQPixmap 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
510void 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
538void 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
555void 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
586KFileTreeViewItem * KFileTreeView::currentKFileTreeViewItem() const
587{
588 return static_cast<KFileTreeViewItem *>( selectedItem() );
589}
590
591KURL KFileTreeView::currentURL() const
592{
593 KFileTreeViewItem *item = currentKFileTreeViewItem();
594 if ( item )
595 return currentKFileTreeViewItem()->url();
596 else
597 return KURL();
598}
599
600void 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
613void KFileTreeView::slotItemRenamed(TQListViewItem* item, const TQString &name, int col)
614{
615 (void) item;
616 kdDebug(250) << "Do not bother: " << name << col << endl;
617}
618
619KFileTreeViewItem *KFileTreeView::findItem( const TQString& branchName, const TQString& relUrl )
620{
621 KFileTreeBranch *br = branch( branchName );
622 return( findItem( br, relUrl ));
623}
624
625KFileTreeViewItem *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
662void 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
674void 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::root
KFileTreeViewItem * root()
Definition: tdefiletreebranch.h:82
KFileTreeBranch::rootUrl
KURL rootUrl() const
Definition: tdefiletreebranch.h:69
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::fileItem
KFileItem * fileItem() const
Definition: tdefiletreeviewitem.h:55
KFileTreeViewItem::branch
KFileTreeBranch * branch() const
Definition: tdefiletreeviewitem.h:50
KFileTreeViewItem::url
KURL url() const
Definition: tdefiletreeviewitem.cpp:70
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.4
This website is maintained by Timothy Pearson.