[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