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 /buildtools/autotools/fileselectorwidget.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 'buildtools/autotools/fileselectorwidget.cpp')
| -rw-r--r-- | buildtools/autotools/fileselectorwidget.cpp | 243 | 
1 files changed, 243 insertions, 0 deletions
diff --git a/buildtools/autotools/fileselectorwidget.cpp b/buildtools/autotools/fileselectorwidget.cpp new file mode 100644 index 00000000..65b87bf7 --- /dev/null +++ b/buildtools/autotools/fileselectorwidget.cpp @@ -0,0 +1,243 @@ +/**************************************************************************** + *   Copyright (C) 2001 by Hugo Varotto										* + *   hugo@varotto-usa.com													* + *																			* + *	 Based on Kate's fileselector widget	by									* + *          Matt Newell														* + *			(C) 2001 by Matt Newell											* + *			newellm@proaxis.com												* + *																			* + *   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 <qlayout.h> +#include <qpushbutton.h> +#include <qhbox.h> +#include <qlabel.h> +#include <qstrlist.h> +#include <qtooltip.h> +#include <qregexp.h> + +#include <kxmlguiclient.h> +#include <kiconloader.h> +#include <kurlcombobox.h> +#include <kurlcompletion.h> +#include <kprotocolinfo.h> +#include <kconfig.h> +#include <klocale.h> +#include <kcombobox.h> + +#include <kdebug.h> + +#include "fileselectorwidget.h" +#include <kdiroperator.h> +#include <kcombiview.h> +#include <kfilepreview.h> +#include <kfileview.h> +#include <kfileitem.h> +#include <kimagefilepreview.h> + +#include "autoprojectwidget.h" +#include "autoprojectpart.h" +#include "kdevlanguagesupport.h" + +#include "kfilednddetailview.h" +#include "kfiledndiconview.h" + +KDnDDirOperator::KDnDDirOperator ( const KURL &urlName, QWidget* parent, const char* name ) : KDirOperator ( urlName, parent, name ) +{ + +} + +KFileView* KDnDDirOperator::createView( QWidget* parent, KFile::FileView view ) +{ +    KFileView* new_view = 0L; + +    if( (view & KFile::Detail) == KFile::Detail ) { +        new_view = new KFileDnDDetailView( parent, "detail view"); +    } +    else if ((view & KFile::Simple) == KFile::Simple ) { +        new_view = new KFileDnDIconView( parent, "simple view"); +        new_view->setViewName( i18n("Short View") ); +    } + +    return new_view; +} + + +FileSelectorWidget::FileSelectorWidget(AutoProjectPart* part, KFile::Mode mode, QWidget* parent, const char* name ) : QWidget(parent, name) +{ +    m_part = part; + +	// widgets and layout +	QVBoxLayout* lo = new QVBoxLayout(this); + +	QHBox *hlow = new QHBox (this); +	lo->addWidget(hlow); + +	home = new QPushButton( hlow ); +	home->setPixmap(SmallIcon("gohome")); +	QToolTip::add(home, i18n("Home directory")); +	up = new QPushButton( /*i18n("&Up"),*/ hlow ); +	up->setPixmap(SmallIcon("up")); +	QToolTip::add(up, i18n("Up one level")); +	back = new QPushButton( /*i18n("&Back"),*/ hlow ); +	back->setPixmap(SmallIcon("back")); +	QToolTip::add(back, i18n("Previous directory")); +	forward = new QPushButton( /*i18n("&Next"),*/ hlow ); +	forward->setPixmap(SmallIcon("forward")); +	QToolTip::add(forward, i18n("Next directory")); + +	// HACK +	QWidget* spacer = new QWidget(hlow); +	hlow->setStretchFactor(spacer, 1); +	hlow->setMaximumHeight(up->height()); + +	cmbPath = new KURLComboBox( KURLComboBox::Directories, true, this, "path combo" ); +	cmbPath->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed )); +	KURLCompletion* cmpl = new KURLCompletion(); +	cmbPath->setCompletionObject( cmpl ); +	lo->addWidget(cmbPath); + +	dir = new KDnDDirOperator(KURL(), this, "operator"); +	dir->setView(KFile::Simple); +    dir->setMode(mode); + +	lo->addWidget(dir); +	lo->setStretchFactor(dir, 2); + +	QHBox* filterBox = new QHBox(this); +	filterIcon = new QLabel(filterBox); +	filterIcon->setPixmap( BarIcon("filter") ); +	filter = new KHistoryCombo(filterBox, "filter"); +	filter->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed )); +	filterBox->setStretchFactor(filter, 2); +	lo->addWidget(filterBox); + +	// slots and signals +	connect( filter, SIGNAL( textChanged(const QString&) ), SLOT( slotFilterChanged(const QString&) ) ); +	connect( filter, SIGNAL( activated(const QString&) ), SLOT( slotFilterChanged(const QString&) ) ); +	connect( filter, SIGNAL( returnPressed(const QString&) ), SLOT( filterReturnPressed(const QString&) ) ); + +	connect( home, SIGNAL( clicked() ), dir, SLOT( home() ) ); +	connect( up, SIGNAL( clicked() ), dir, SLOT( cdUp() ) ); +	connect( back, SIGNAL( clicked() ), dir, SLOT( back() ) ); +	connect( forward, SIGNAL( clicked() ), dir, SLOT( forward() ) ); + +	connect( cmbPath, SIGNAL( urlActivated( const KURL&  )), this,  SLOT( cmbPathActivated( const KURL& ) )); +	//connect( cmbPath, SIGNAL( returnPressed( const QString&  )), this,  SLOT( cmbPathReturnPressed( const QString& ) )); +	connect( dir, SIGNAL(urlEntered(const KURL&)), this, SLOT(dirUrlEntered(const KURL&)) ); + +	connect( dir, SIGNAL(finishedLoading()), this, SLOT(dirFinishedLoading()) ); + +//    dirUrlEntered( dir->url() ); + +    QStringList list; + +    /* read the file patterns from the project DOM */ +    QDomElement docEl = m_part->projectDom()->documentElement(); +    QDomElement fileviewEl = docEl.namedItem("kdevfileview").toElement(); +    QDomElement groupsEl = fileviewEl.namedItem("groups").toElement(); +    QDomElement groupEl = groupsEl.firstChild().toElement(); + +    while ( !groupEl.isNull() ) +    { +        if (groupEl.tagName() == "group") +        { +            list << groupEl.attribute("pattern").replace ( QRegExp ( ";" ), " " ) + " (" + groupEl.attribute("name") + ")"; +        } +        groupEl = groupEl.nextSibling().toElement(); +    } + +    filter->setHistoryItems ( list ); + +} + + +FileSelectorWidget::~FileSelectorWidget() +{ +} + +void FileSelectorWidget::dragEnterEvent ( QDragEnterEvent* /*ev*/ ) +{ +} + +void FileSelectorWidget::dropEvent ( QDropEvent* /*ev*/ ) +{ +    kdDebug ( 9020 ) << "Dropped" << endl; + +    QString path = "Something was dropped in the Destination directory file-selector"; + +    emit dropped ( path ); + +} + +void FileSelectorWidget::filterReturnPressed ( const QString& nf ) +{ +    // KURL u ( m_part->project()->projectDirectory() ); +    setDir ( nf ); +} + +void FileSelectorWidget::slotFilterChanged( const QString & nf ) +{ +  dir->setNameFilter( nf ); +  dir->updateDir(); +} + +void FileSelectorWidget::cmbPathActivated( const KURL& u ) +{ +   dir->setURL( u, true ); +} + +void FileSelectorWidget::cmbPathReturnPressed( const QString& u ) +{ +   dir->setFocus(); +   dir->setURL( KURL(u), true ); +} + + +void FileSelectorWidget::dirUrlEntered( const KURL& u ) +{ +   cmbPath->removeURL( u ); +   QStringList urls = cmbPath->urls(); +   urls.prepend( u.url() ); +   while ( urls.count() >= (uint)cmbPath->maxItems() ) +      urls.remove( urls.last() ); +   cmbPath->setURLs( urls ); +} + + +void FileSelectorWidget::dirFinishedLoading() +{ +   // HACK - enable the nav buttons +   // have to wait for diroperator... +   up->setEnabled( dir->actionCollection()->action( "up" )->isEnabled() ); +   back->setEnabled( dir->actionCollection()->action( "back" )->isEnabled() ); +   forward->setEnabled( dir->actionCollection()->action( "forward" )->isEnabled() ); +   home->setEnabled( dir->actionCollection()->action( "home" )->isEnabled() ); +} + + +void FileSelectorWidget::focusInEvent(QFocusEvent*) +{ +   dir->setFocus(); +} + +void FileSelectorWidget::setDir( KURL u ) +{ +  dir->setURL(u, true); +} + +void FileSelectorWidget::setDir(const QString& path) +{ +    KURL u ( path ); +    dir->setURL ( u, true ); +} + + +#include "fileselectorwidget.moc" +  | 
