[vlmc-devel] [PATCH] ProjectWizard: Don't fake RecentProjects when a project is supposed to be opend
Hugo Beauzée-Luyssen
hugo at beauzee.fr
Mon Apr 11 10:31:48 CEST 2016
On 04/10/2016 05:18 PM, Yikai Lu wrote:
> ---
> src/Gui/wizard/WelcomePage.cpp | 45 +++++++++++++++++++-----------------------
> src/Gui/wizard/WelcomePage.h | 1 +
> 2 files changed, 21 insertions(+), 25 deletions(-)
>
> diff --git a/src/Gui/wizard/WelcomePage.cpp b/src/Gui/wizard/WelcomePage.cpp
> index 6e44cb8..dfe9fea 100644
> --- a/src/Gui/wizard/WelcomePage.cpp
> +++ b/src/Gui/wizard/WelcomePage.cpp
> @@ -50,6 +50,7 @@ WelcomePage::WelcomePage( QWidget* parent )
> this, SLOT( selectOpenRadio() ) );
> connect( m_ui.projectsListWidget, SIGNAL( itemDoubleClicked(QListWidgetItem*) ),
> this, SLOT( projectDoubleClicked(QListWidgetItem*) ) );
> + connect( m_ui.projectsListWidget, &QListWidget::itemSelectionChanged, this, &WelcomePage::itemSelectionChanged);
>
> registerField( "loadProject", m_ui.projectsListWidget );
> m_projectPath = new QString();
> @@ -94,15 +95,13 @@ WelcomePage::validatePage()
> {
> if ( m_ui.openRadioButton->isChecked() )
> {
> - if ( m_ui.projectsListWidget->selectedItems().count() == 0 )
> + if ( m_projectPath->isEmpty() == true )
> {
> QMessageBox::information( this, tr( "Sorry" ),
> tr( "You first need to select a project from "
> "the list.\nThen click next to continue..." ) );
> return false;
> }
> - QList<QListWidgetItem*> selected = m_ui.projectsListWidget->selectedItems();
> - setProjectPath( selected.at( 0 )->data( FilePath ).toString() );
> return true;
> }
> return true;
> @@ -132,6 +131,7 @@ WelcomePage::loadRecentsProjects()
> void
> WelcomePage::loadProject()
> {
> + m_ui.openRadioButton->setChecked( true );
> QString projectPath =
> QFileDialog::getOpenFileName( nullptr, tr( "Select a project file" ),
> VLMC_GET_STRING( "vlmc/WorkspaceLocation" ),
> @@ -145,29 +145,12 @@ WelcomePage::loadProject()
> tr("Please use an existing project file."));
> return;
> }
> + m_ui.projectsListWidget->clearSelection();
> + m_ui.projectsListWidget->clearFocus();
>
> - // Search if the item is already in the list
> - QListWidgetItem* item = nullptr;
> - for ( int i = 0; i < m_ui.projectsListWidget->count(); ++i )
> - {
> - item = m_ui.projectsListWidget->item( i );
> - if ( item->data( FilePath ).toString().contains( projectPath ) )
> - break;
> - item = nullptr;
> - }
> -
> - // Item not in list, insert it temporarily
> - if ( !item )
> - {
> - QFileInfo fi( projectPath );
> - item = new QListWidgetItem( fi.fileName() );
> - item->setData( FilePath, fi.absoluteFilePath() );
> -
> - m_ui.projectsListWidget->addItem( item );
> - }
> -
> - item->setSelected( true );
> - selectOpenRadio();
> + setProjectPath( projectPath );
> + if ( wizard() )
> + wizard()->next();
> }
>
> void
> @@ -193,6 +176,18 @@ WelcomePage::selectOpenRadio()
> }
>
> void
> +WelcomePage::itemSelectionChanged()
> +{
> + if ( m_ui.projectsListWidget->selectedItems().count() == 0 )
> + setProjectPath( "" );
> + else
> + {
> + QList<QListWidgetItem*> selected = m_ui.projectsListWidget->selectedItems();
> + setProjectPath( selected.at( 0 )->data( FilePath ).toString() );
> + }
> +}
> +
> +void
> WelcomePage::projectDoubleClicked( QListWidgetItem* item )
> {
> Q_UNUSED( item );
> diff --git a/src/Gui/wizard/WelcomePage.h b/src/Gui/wizard/WelcomePage.h
> index 470b9c3..341edcf 100644
> --- a/src/Gui/wizard/WelcomePage.h
> +++ b/src/Gui/wizard/WelcomePage.h
> @@ -54,6 +54,7 @@ class WelcomePage : public QWizardPage
> void loadRecentsProjects();
> void projectDoubleClicked( QListWidgetItem* item );
> void selectOpenRadio();
> + void itemSelectionChanged();
>
> private:
> Ui::WelcomePage m_ui;
>
I would have expected this patch to simply remove code from the
loadProject() method, is the rest of the changes required? Or can it be
split in a separate patch?
Regards,
More information about the Vlmc-devel
mailing list