[vlmc-devel] [PATCH] ProjectWizard: Don't fake RecentProjects when a project is supposed to be opend

yikei lu luyikei.qmltu at gmail.com
Mon Apr 11 10:35:44 CEST 2016


Removing the loadProject() method means the project wizard will lose
the feature of opening a project. Is that ok?

2016-04-11 17:31 GMT+09:00 Hugo Beauzée-Luyssen <hugo at beauzee.fr>:
> 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,
> _______________________________________________
> Vlmc-devel mailing list
> Vlmc-devel at videolan.org
> https://mailman.videolan.org/listinfo/vlmc-devel


More information about the Vlmc-devel mailing list