diff options
| author | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 | 
|---|---|---|
| committer | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 | 
| commit | 114a878c64ce6f8223cfd22d76a20eb16d177e5e (patch) | |
| tree | acaf47eb0fa12142d3896416a69e74cbf5a72242 /parts/fileview/filetreeviewwidgetimpl.cpp | |
| download | tdevelop-114a878c64ce6f8223cfd22d76a20eb16d177e5e.tar.gz tdevelop-114a878c64ce6f8223cfd22d76a20eb16d177e5e.zip | |
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdevelop@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'parts/fileview/filetreeviewwidgetimpl.cpp')
| -rw-r--r-- | parts/fileview/filetreeviewwidgetimpl.cpp | 169 | 
1 files changed, 169 insertions, 0 deletions
| diff --git a/parts/fileview/filetreeviewwidgetimpl.cpp b/parts/fileview/filetreeviewwidgetimpl.cpp new file mode 100644 index 00000000..9e40a3bb --- /dev/null +++ b/parts/fileview/filetreeviewwidgetimpl.cpp @@ -0,0 +1,169 @@ +/*************************************************************************** + *   Copyright (C) 2003 by Mario Scalas                                    * + *   mario.scalas@libero.it                                                * + *                                                                         * + *   This program is free software; you can redistribute it and/or modify  * + *   it under the terms of the GNU General Public License as published by  * + *   the Free Software Foundation; either version 2 of the License, or     * + *   (at your option) any later version.                                   * + *                                                                         * + ***************************************************************************/ + +#include <qpopupmenu.h> +#include <kxmlguiclient.h> +#include <kdebug.h> +#include <kaction.h> +#include <klocale.h> +#include <kdeversion.h> + +#include <kdevproject.h> + +#include "fileviewpart.h" +#include "filetreewidget.h" +#include "fileitemfactory.h" + +#include "filetreeviewwidgetimpl.h" + +using namespace filetreeview; + +/////////////////////////////////////////////////////////////////////////////// +// class FileTreeViewWidgetImpl +/////////////////////////////////////////////////////////////////////////////// + +FileTreeViewWidgetImpl::FileTreeViewWidgetImpl( FileTreeWidget *parent, const char *name ) +    : QObject( parent, name ), m_branchItemFactory( 0 ), +    m_part( parent->part() ), m_isReloadingTree( false ) +{ +    kdDebug(9017) << "FileTreeViewWidgetImpl::FileTreeViewWidgetImpl()" << endl; + +    // Actions +    m_actionToggleShowNonProjectFiles = new KToggleAction( i18n("Show Non Project Files"), KShortcut(), +        this, SLOT(slotToggleShowNonProjectFiles()), this, "actiontoggleshowshownonprojectfiles" ); +    m_actionToggleShowNonProjectFiles->setCheckedState(i18n("Hide Non Project Files")); +    m_actionToggleShowNonProjectFiles->setWhatsThis(i18n("<b>Show non project files</b><p>Shows files that do not belong to a project in a file tree.")); + +    // Reload good ol' settings +    QDomDocument &dom = *m_part->projectDom(); +    m_actionToggleShowNonProjectFiles->setChecked( !DomUtil::readBoolEntry(dom, "/kdevfileview/tree/hidenonprojectfiles") ); +} + +/////////////////////////////////////////////////////////////////////////////// + +FileTreeViewWidgetImpl::~FileTreeViewWidgetImpl() +{ +    kdDebug(9017) << "FileTreeViewWidgetImpl::~FileTreeViewWidgetImpl()" << endl; + +    delete m_branchItemFactory; + +    QDomDocument &dom = *m_part->projectDom(); +    DomUtil::writeBoolEntry( dom, "/kdevfileview/tree/hidenonprojectfiles", !showNonProjectFiles() ); +} + +/////////////////////////////////////////////////////////////////////////////// + +FileTreeWidget *FileTreeViewWidgetImpl::fileTree() const +{ +    return static_cast<FileTreeWidget *>( parent() ); +} + +/////////////////////////////////////////////////////////////////////////////// + +QDomDocument &FileTreeViewWidgetImpl::projectDom() const +{ +    return *part()->projectDom(); +} + +/////////////////////////////////////////////////////////////////////////////// + +QString FileTreeViewWidgetImpl::projectDirectory() const +{ +    return part()->project()->projectDirectory(); +} + +/////////////////////////////////////////////////////////////////////////////// + +bool FileTreeViewWidgetImpl::showNonProjectFiles() const +{ +    return m_actionToggleShowNonProjectFiles->isChecked(); +} + +/////////////////////////////////////////////////////////////////////////////// + +void FileTreeViewWidgetImpl::fillPopupMenu( QPopupMenu *popupMenu, QListViewItem *item ) const +{ +    // Show the "reload tree" menu-item only if it is requested for the root object +    // and we don't have a sync-with-repository operation pending (which otherwise will +    // kill the call-back's from working) +    if (item == fileTree()->firstChild() && canReloadTree()) +    { +        int id = popupMenu->insertItem( i18n( "Reload Tree"), this, SLOT( slotReloadTree() ) ); +        popupMenu->setWhatsThis( id, i18n("<b>Reload tree</b><p>Reloads the project files tree.") ); +    } + +    m_actionToggleShowNonProjectFiles->plug( popupMenu ); +} + +/////////////////////////////////////////////////////////////////////////////// + +KURL::List FileTreeViewWidgetImpl::selectedPathUrls() +{ +    kdDebug(9017) << "FileTreeViewWidgetImpl::selectedPathUrls()" << endl; + +	KURL::List urlList; + +	QValueList<QListViewItem*> list = allSelectedItems( fileTree()->firstChild() ); +	QValueList<QListViewItem*>::Iterator it = list.begin(); +	while( it != list.end() ) +	{ +		FileTreeViewItem * item = static_cast<FileTreeViewItem*>( *it ); +		if ( fileTree()->shouldBeShown( item ) ) +		{ +			KURL url; +			url.setPath( item->path() ); +			urlList << url; +		} +		++it; +	} + +	return urlList; +} + +/////////////////////////////////////////////////////////////////////////////// + +QValueList<QListViewItem*> FileTreeViewWidgetImpl::allSelectedItems( QListViewItem * item ) const +{ +	QValueList<QListViewItem*> list; + +	if ( item ) +	{ +		if ( item->isSelected() ) +		{ +			list << item; +		} + +		QListViewItem * it = item->firstChild(); +		while( it  ) +		{ +			list += allSelectedItems( it ); +			it = it->nextSibling(); +		} +	} + +	return list; +} + +/////////////////////////////////////////////////////////////////////////////// + +void FileTreeViewWidgetImpl::slotReloadTree() +{ +    fileTree()->openDirectory( projectDirectory() ); +} + +/////////////////////////////////////////////////////////////////////////////// + +void FileTreeViewWidgetImpl::slotToggleShowNonProjectFiles() +{ +    fileTree()->hideOrShow(); +} + +#include "filetreeviewwidgetimpl.moc" | 
