diff options
Diffstat (limited to 'konqueror/sidebar/trees/konqsidebar_tree.cpp')
-rw-r--r-- | konqueror/sidebar/trees/konqsidebar_tree.cpp | 168 |
1 files changed, 168 insertions, 0 deletions
diff --git a/konqueror/sidebar/trees/konqsidebar_tree.cpp b/konqueror/sidebar/trees/konqsidebar_tree.cpp new file mode 100644 index 000000000..1903c2328 --- /dev/null +++ b/konqueror/sidebar/trees/konqsidebar_tree.cpp @@ -0,0 +1,168 @@ +#include "konqsidebar_tree.h" +#include "konqsidebar_tree.moc" +#include "konq_sidebartree.h" +#include <kdebug.h> +#include <kstandarddirs.h> +#include <ksimpleconfig.h> +#include <kinputdialog.h> +#include <kiconloader.h> +#include <tdelistviewsearchline.h> + +#include <tqclipboard.h> +#include <tqdragobject.h> +#include <tqtoolbutton.h> +#include <tqvbox.h> +#include <tqapplication.h> + +KonqSidebar_Tree::KonqSidebar_Tree(TDEInstance *instance,TQObject *parent,TQWidget *widgetParent, TQString &desktopName_, const char* name): + KonqSidebarPlugin(instance,parent,widgetParent,desktopName_,name) + { + KSimpleConfig ksc(desktopName_); + ksc.setGroup("Desktop Entry"); + int virt= ( (ksc.readEntry("X-TDE-TreeModule","")=="Virtual") ?VIRT_Folder:VIRT_Link); + if (virt==1) desktopName_=ksc.readEntry("X-TDE-RelURL",""); + + widget = new TQVBox(widgetParent); + + if (ksc.readBoolEntry("X-TDE-SearchableTreeModule",false)) { + TQHBox* searchline = new TQHBox(widget); + searchline->setSpacing(KDialog::spacingHint()); + tree=new KonqSidebarTree(this,widget,virt,desktopName_); + TQToolButton *clearSearch = new TQToolButton(searchline); + clearSearch->setTextLabel(i18n("Clear Search"), true); + clearSearch->setIconSet(SmallIconSet(TQApplication::reverseLayout() ? "clear_left" : "locationbar_erase")); + TQLabel* slbl = new TQLabel(i18n("Se&arch:"), searchline); + TDEListViewSearchLine* listViewSearch = new TDEListViewSearchLine(searchline,tree); + slbl->setBuddy(listViewSearch); + connect(clearSearch, TQT_SIGNAL(pressed()), listViewSearch, TQT_SLOT(clear())); + } + else + tree=new KonqSidebarTree(this,widget,virt,desktopName_); + + connect(tree, TQT_SIGNAL( openURLRequest( const KURL &, const KParts::URLArgs &)), + this,TQT_SIGNAL( openURLRequest( const KURL &, const KParts::URLArgs &))); + + connect(tree,TQT_SIGNAL(createNewWindow( const KURL &, const KParts::URLArgs &)), + this,TQT_SIGNAL(createNewWindow( const KURL &, const KParts::URLArgs &))); + + connect(tree,TQT_SIGNAL(popupMenu( const TQPoint &, const KURL &, const TQString &, mode_t )), + this,TQT_SIGNAL(popupMenu( const TQPoint &, const KURL &, const TQString &, mode_t ))); + + connect(tree,TQT_SIGNAL(popupMenu( const TQPoint &, const KFileItemList & )), + this,TQT_SIGNAL(popupMenu( const TQPoint &, const KFileItemList & ))); + + connect(tree,TQT_SIGNAL(enableAction( const char *, bool )), + this,TQT_SIGNAL(enableAction( const char *, bool))); + + } + + +KonqSidebar_Tree::~KonqSidebar_Tree(){;} + +void* KonqSidebar_Tree::provides(const TQString &) {return 0;} + +//void KonqSidebar_Tree::emitStatusBarText (const TQString &) {;} + +TQWidget *KonqSidebar_Tree::getWidget(){return widget;} + +void KonqSidebar_Tree::handleURL(const KURL &url) + { + emit started( 0 ); + tree->followURL( url ); + emit completed(); + } + +void KonqSidebar_Tree::cut() +{ + TQDragObject * drag = static_cast<KonqSidebarTreeItem*>(tree->selectedItem())->dragObject( 0L, true ); + if (drag) + TQApplication::clipboard()->setData( drag ); +} + +void KonqSidebar_Tree::copy() +{ + TQDragObject * drag = static_cast<KonqSidebarTreeItem*>(tree->selectedItem())->dragObject( 0L ); + if (drag) + TQApplication::clipboard()->setData( drag ); +} + +void KonqSidebar_Tree::paste() +{ + if (tree->currentItem()) + tree->currentItem()->paste(); +} + +void KonqSidebar_Tree::trash() +{ + if (tree->currentItem()) + tree->currentItem()->trash(); +} + +void KonqSidebar_Tree::del() +{ + if (tree->currentItem()) + tree->currentItem()->del(); +} + +void KonqSidebar_Tree::shred() +{ + if (tree->currentItem()) + tree->currentItem()->shred(); +} + +void KonqSidebar_Tree::rename() +{ + Q_ASSERT( tree->currentItem() ); + if (tree->currentItem()) + tree->currentItem()->rename(); +} + + + + + + +extern "C" +{ + KDE_EXPORT void* create_konqsidebar_tree(TDEInstance *inst,TQObject *par,TQWidget *widp,TQString &desktopname,const char *name) + { + return new KonqSidebar_Tree(inst,par,widp,desktopname,name); + } +} + +extern "C" +{ + KDE_EXPORT bool add_konqsidebar_tree(TQString* fn, TQString*, TQMap<TQString,TQString> *map) + { + TDEStandardDirs *dirs=TDEGlobal::dirs(); + TQStringList list=dirs->findAllResources("data","konqsidebartng/dirtree/*.desktop",false,true); + TQStringList names; + for (TQStringList::ConstIterator it=list.begin();it!=list.end();++it) + { + KSimpleConfig sc(*it); + sc.setGroup("Desktop Entry"); + names<<sc.readEntry("Name"); + } + + TQString item = KInputDialog::getItem( i18n( "Select Type" ), + i18n( "Select type:" ), names ); + if (!item.isEmpty()) + { + int id=names.findIndex( item ); + if (id==-1) return false; + KSimpleConfig ksc2(*list.at(id)); + ksc2.setGroup("Desktop Entry"); + map->insert("Type","Link"); + map->insert("Icon",ksc2.readEntry("Icon")); + map->insert("Name",ksc2.readEntry("Name")); + map->insert("Open","false"); + map->insert("URL",ksc2.readEntry("X-TDE-Default-URL")); + map->insert("X-TDE-KonqSidebarModule","konqsidebar_tree"); + map->insert("X-TDE-TreeModule",ksc2.readEntry("X-TDE-TreeModule")); + map->insert("X-TDE-TreeModule-ShowHidden",ksc2.readEntry("X-TDE-TreeModule-ShowHidden")); + fn->setLatin1("dirtree%1.desktop"); + return true; + } + return false; + } +} |