00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include "projectselectiondialog.h"
00022
00023 #include <KDE/KLocalizedString>
00024 #include <KDE/KConfig>
00025
00026 #include "newprojectdialogpage.h"
00027 #include "recentprojectsdialogpage.h"
00028 #include "openprojectdialogpage.h"
00029
00030 #include <core/debughelper.h>
00031
00032 using namespace GluonCreator;
00033
00034 class ProjectSelectionDialog::ProjectSelectionDialogPrivate
00035 {
00036 public:
00037 explicit ProjectSelectionDialogPrivate( ProjectSelectionDialog* qq )
00038 : q( qq )
00039 {
00040 pages.clear();
00041 }
00042
00043 void okClicked()
00044 {
00045 if( pages.key( q->currentPage() ) == ProjectSelectionDialog::NewProjectPage )
00046 {
00047 NewProjectDialogPage* page = static_cast<NewProjectDialogPage*>( q->currentPage() );
00048 if( page )
00049 fileName = page->createProject();
00050 }
00051
00052 if( pages.key( q->currentPage() ) == ProjectSelectionDialog::RecentProjectPage )
00053 {
00054 RecentProjectsDialogPage* page = static_cast<RecentProjectsDialogPage*>( q->currentPage() );
00055 if( page )
00056 fileName = page->selectedItem();
00057 }
00058
00059 }
00060
00061 void projectRequested( const QString& project )
00062 {
00063 fileName = project;
00064 q->accept();
00065 }
00066 public:
00067 QHash<ProjectPage, KPageWidgetItem*> pages;
00068 QString fileName;
00069 private:
00070 ProjectSelectionDialog* q;
00071 };
00072
00073 ProjectSelectionDialog::ProjectSelectionDialog( QWidget* parent, Qt::WFlags flags )
00074 : KPageDialog( parent, flags ),
00075 d( new ProjectSelectionDialogPrivate( this ) )
00076 {
00077 setFaceType( List );
00078 setButtons( Ok | Close );
00079
00080 addPage( new NewProjectDialogPage, NewProjectPage );
00081 addPage( new RecentProjectsDialogPage, RecentProjectPage );
00082 addPage( new OpenProjectDialogPage, OpenProjectPage );
00083
00084 restoreDialogSize( KGlobal::config()->group( "ProjectSelectionDialog" ) );
00085
00086 connect( this, SIGNAL( okClicked() ),
00087 SLOT( okClicked() ) );
00088 }
00089
00090 ProjectSelectionDialog::~ProjectSelectionDialog()
00091 {
00092 KConfigGroup group = KGlobal::config()->group( "ProjectSelectionDialog" );
00093 saveDialogSize( group );
00094 delete d;
00095 }
00096
00097 void ProjectSelectionDialog::addPage( KPageWidgetItem* item, ProjectSelectionDialog::ProjectPage page )
00098 {
00099 DEBUG_FUNC_NAME
00100 switch( page )
00101 {
00102 case NewProjectPage:
00103 DEBUG_TEXT( "New" );
00104 break;
00105 case OpenProjectPage:
00106 {
00107 DEBUG_TEXT( "Open" );
00108 connect( item, SIGNAL( projectRequested( QString ) ),
00109 SLOT( projectRequested( QString ) ) );
00110 break;
00111 }
00112 case RecentProjectPage:
00113 DEBUG_TEXT( "Recent" );
00114 connect( item, SIGNAL( projectRequested( QString ) ),
00115 SLOT( projectRequested( QString ) ) );
00116 break;
00117 default:
00118 DEBUG_TEXT( "Unknown Project Page" );
00119 break;
00120 };
00121
00122 d->pages.insert( page, item );
00123 KPageDialog::addPage( item );
00124 }
00125
00126 QString ProjectSelectionDialog::fileName() const
00127 {
00128 return d->fileName;
00129 }
00130
00131 void ProjectSelectionDialog::setPage( ProjectSelectionDialog::ProjectPage page )
00132 {
00133 setCurrentPage( d->pages[page] );
00134 }
00135
00136 #include "creator/dialogs/projectselectiondialog.moc"