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).
This commit is contained in:
Tobias Doerffel
2009-08-21 23:48:33 +02:00
parent 97e52de521
commit fe99a7a35c
2 changed files with 59 additions and 6 deletions

View File

@@ -25,11 +25,13 @@
#ifndef _WELCOME_SCREEN_H
#define _WELCOME_SCREEN_H
#include <QtCore/QModelIndex>
#include <QtGui/QWidget>
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;
} ;

View File

@@ -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"