From fe99a7a35c819e0b93b80a0f139b1827d38b04d8 Mon Sep 17 00:00:00 2001 From: Tobias Doerffel Date: Fri, 21 Aug 2009 23:48:33 +0200 Subject: [PATCH] WelcomeScreen: implemented project loading functionality It's now possible to load projects by clicking them in one of the two lists (recent projects, recent community resources). --- include/WelcomeScreen.h | 8 ++++++ src/gui/WelcomeScreen.cpp | 57 ++++++++++++++++++++++++++++++++++----- 2 files changed, 59 insertions(+), 6 deletions(-) diff --git a/include/WelcomeScreen.h b/include/WelcomeScreen.h index 81121bea5..9f73476b7 100644 --- a/include/WelcomeScreen.h +++ b/include/WelcomeScreen.h @@ -25,11 +25,13 @@ #ifndef _WELCOME_SCREEN_H #define _WELCOME_SCREEN_H +#include #include namespace Ui { class WelcomeScreen; } class QListWidgetItem; +class RecentResourceListModel; class WelcomeScreen : public QWidget @@ -45,11 +47,17 @@ private slots: void importProject(); void openTutorial(); void instantMidiAction(); + void openRecentProject( const QModelIndex & ); + void openCommunityResource( const QModelIndex & ); void openOnlineResource( QListWidgetItem * _item ); private: + void switchView(); + Ui::WelcomeScreen * ui; + RecentResourceListModel * m_recentProjectsModel; + RecentResourceListModel * m_communityResourcesModel; } ; diff --git a/src/gui/WelcomeScreen.cpp b/src/gui/WelcomeScreen.cpp index 1ad6d7a7a..964988aeb 100644 --- a/src/gui/WelcomeScreen.cpp +++ b/src/gui/WelcomeScreen.cpp @@ -27,6 +27,7 @@ #include "WelcomeScreen.h" #include "RecentResourceListModel.h" #include "MainWindow.h" +#include "ResourceAction.h" #include "engine.h" #include "embed.h" @@ -68,16 +69,24 @@ WelcomeScreen::WelcomeScreen( QWidget * _parent ) : this, SLOT( instantMidiAction() ) ); // setup recent projects list view - RecentResourceListModel * recentProjectsModel = + m_recentProjectsModel = new RecentResourceListModel( engine::workingDirResourceDB(), -1, this ); - recentProjectsModel->resourceListModel()-> + m_recentProjectsModel->resourceListModel()-> setTypeFilter( ResourceItem::TypeProject ); - ui->recentProjectsListView->setModel( recentProjectsModel ); + ui->recentProjectsListView->setModel( m_recentProjectsModel ); + + connect( ui->recentProjectsListView, + SIGNAL( clicked( const QModelIndex & ) ), + this, SLOT( openRecentProject( const QModelIndex & ) ) ); // setup recent community resources list view - RecentResourceListModel * recentCommunityResourcesModel = + m_communityResourcesModel = new RecentResourceListModel( engine::webResourceDB(), 100, this ); - ui->communityResourcesListView->setModel( recentCommunityResourcesModel ); + ui->communityResourcesListView->setModel( m_communityResourcesModel ); + + connect( ui->communityResourcesListView, + SIGNAL( clicked( const QModelIndex & ) ), + this, SLOT( openCommunityResource( const QModelIndex & ) ) ); // setup online resources list widget for( int i = 0; i < ui->onlineResourcesListWidget->count(); ++i ) @@ -103,7 +112,7 @@ WelcomeScreen::~WelcomeScreen() void WelcomeScreen::createNewProject() { - engine::mainWindow()->setMainWidgetVisible( true ); + switchView(); } @@ -130,6 +139,34 @@ void WelcomeScreen::instantMidiAction() +void WelcomeScreen::openRecentProject( const QModelIndex & _idx ) +{ + switchView(); + ResourceAction( m_recentProjectsModel->item( _idx ) ).loadProject(); +} + + + + +void WelcomeScreen::openCommunityResource( const QModelIndex & _idx ) +{ + ResourceItem * item = m_communityResourcesModel->item( _idx ); + ResourceAction action( item ); + + switch( item->type() ) + { + case ResourceItem::TypeProject: + switchView(); + action.loadProject(); + break; + default: + break; + } +} + + + + void WelcomeScreen::openOnlineResource( QListWidgetItem * _item ) { // the URL to be opened is encoded in status tip (no other @@ -138,5 +175,13 @@ void WelcomeScreen::openOnlineResource( QListWidgetItem * _item ) } + + +void WelcomeScreen::switchView() +{ + engine::mainWindow()->setMainWidgetVisible( true ); +} + + #include "moc_WelcomeScreen.cxx"