diff --git a/shell/openprojectpage.cpp b/shell/openprojectpage.cpp index 7f82be0111..4ff72b12bb 100644 --- a/shell/openprojectpage.cpp +++ b/shell/openprojectpage.cpp @@ -1,136 +1,142 @@ /*************************************************************************** * Copyright (C) 2008 by Andreas Pakulat #include #include #include #include #include #include #include #include #include #include #include #include #include #include "shellextension.h" #include "core.h" #include "plugincontroller.h" #include #include #include namespace KDevelop { OpenProjectPage::OpenProjectPage( const KUrl& startUrl, QWidget* parent ) : QWidget( parent ) { QHBoxLayout* layout = new QHBoxLayout( this ); fileWidget = new KFileWidget( startUrl, this); QStringList filters; QStringList allEntry; allEntry << "*."+ShellExtension::getInstance()->projectFileExtension(); filters << QString( "%1|%2 (%1)").arg("*."+ShellExtension::getInstance()->projectFileExtension()).arg(ShellExtension::getInstance()->projectFileDescription()); foreach(const KPluginInfo& info, ICore::self()->pluginController()->queryExtensionPlugins( "org.kdevelop.IProjectFileManager" ) ) { QVariant filter = info.property("X-KDevelop-ProjectFilesFilter"); QVariant desc = info.property("X-KDevelop-ProjectFilesFilterDescription"); QString filterline; if( filter.isValid() && desc.isValid() ) { m_projectFilters.insert( info.name(), filter.toStringList() ); allEntry += filter.toStringList(); filters << QString("%1|%2 (%1)").arg(filter.toStringList().join(" ")).arg(desc.toString()); } } filters.prepend( i18n( "%1|All Project Files (%1)", allEntry.join(" ") ) ); fileWidget->setFilter( filters.join("\n") ); fileWidget->setMode( KFile::Modes( KFile::File | KFile::Directory | KFile::ExistingOnly ) ); layout->addWidget( fileWidget ); QWidget* ops= fileWidget->findChild( "KFileWidget::ops" ); // Emitted for changes in the places view, the url navigator and when using the back/forward/up buttons connect( ops, SIGNAL(urlEntered(KUrl)), SLOT(opsEntered(KUrl))); // Emitted when selecting an entry from the "Name" box or editing in there connect( fileWidget->locationEdit(), SIGNAL(editTextChanged(QString)), SLOT(comboTextChanged(QString))); // Emitted when clicking on a file in the fileview area connect( fileWidget, SIGNAL(fileHighlighted(QString)), SLOT(highlightFile(QString)) ); connect( fileWidget->dirOperator()->dirLister(), SIGNAL(completed(KUrl)), SLOT(dirChanged(KUrl))); connect( fileWidget, SIGNAL(accepted()), SIGNAL(accepted())); } KUrl OpenProjectPage::getAbsoluteUrl( const QString& file ) const { KUrl u(file); if( u.isRelative() ) { u = fileWidget->baseUrl(); u.addPath( file ); } return u; } void OpenProjectPage::setUrl(const KUrl& url) { fileWidget->setUrl(url, false); } void OpenProjectPage::dirChanged(const KUrl& /*url*/) { if(fileWidget->selectedFiles().isEmpty()) { KFileItemList items=fileWidget->dirOperator()->dirLister()->items(); foreach(const KFileItem& item, items) { if(item.url().path().endsWith(ShellExtension::getInstance()->projectFileExtension()) && item.isFile()) fileWidget->setSelection(item.url().url()); } } } +void OpenProjectPage::showEvent(QShowEvent* ev) +{ + fileWidget->locationEdit()->setFocus(); + QWidget::showEvent(ev); +} + void OpenProjectPage::highlightFile( const QString& file ) { emit urlSelected( getAbsoluteUrl( file ) ); } void OpenProjectPage::opsEntered( const KUrl& url ) { emit urlSelected( getAbsoluteUrl( url.url() ) ); } void OpenProjectPage::comboTextChanged( const QString& file ) { emit urlSelected( getAbsoluteUrl( file ) ); } QMap OpenProjectPage::projectFilters() const { return m_projectFilters; } } #include "openprojectpage.moc" diff --git a/shell/openprojectpage.h b/shell/openprojectpage.h index 862ea933d4..5e33de9956 100644 --- a/shell/openprojectpage.h +++ b/shell/openprojectpage.h @@ -1,51 +1,54 @@ /*************************************************************************** * Copyright (C) 2008 by Andreas Pakulat #include class KUrl; class KFileItem; class KFileWidget; namespace KDevelop { class OpenProjectPage : public QWidget { Q_OBJECT public: OpenProjectPage( const KUrl& startUrl, QWidget* parent = 0 ); QMap projectFilters() const; void setUrl(const KUrl& url); signals: void urlSelected( const KUrl& ); void accepted(); +protected: + virtual void showEvent(QShowEvent*); + private slots: void highlightFile(const QString&); void opsEntered(const KUrl& item ); void comboTextChanged(const QString& ); void dirChanged(const KUrl& url); private: KUrl getAbsoluteUrl( const QString& ) const; KFileWidget* fileWidget; QMap m_projectFilters; }; } #endif