StartDialog::StartDialog(MainWindow *mainWindow, ProjectManager *projectManager) : ManagedClosableDialog(mainWindow, false) , mMainWindow(mainWindow) , mProjectManager(projectManager) { setMinimumSize(mMinimumSize); QTabWidget *tabWidget = new QTabWidget; RecentProjectsListWidget *recentProjects = new RecentProjectsListWidget(this); tabWidget->addTab(recentProjects, tr("&Recent projects")); SuggestToCreateDiagramWidget *diagrams = new SuggestToCreateDiagramWidget(mMainWindow, this); tabWidget->addTab(diagrams, tr("&New project with diagram")); if (recentProjects->count() == 0) { tabWidget->setCurrentWidget(diagrams); } QCommandLinkButton *quitLink = new QCommandLinkButton(tr("&Quit QReal")); QCommandLinkButton *openLink = new QCommandLinkButton(tr("&Open existing project")); QHBoxLayout *commandLinksLayout = new QHBoxLayout; commandLinksLayout->addWidget(openLink); commandLinksLayout->addWidget(quitLink); QVBoxLayout *mainLayout = new QVBoxLayout; mainLayout->addWidget(tabWidget); mainLayout->addLayout(commandLinksLayout); setLayout(mainLayout); setWindowTitle(tr("Start page")); connect(openLink, SIGNAL(clicked()), this, SLOT(openExistingProject())); connect(quitLink, SIGNAL(clicked()), this, SLOT(exitApp())); connect(recentProjects, SIGNAL(userDataSelected(QString)), this, SLOT(openRecentProject(QString))); connect(diagrams, SIGNAL(userDataSelected(QString)), this, SLOT(createProjectWithDiagram(QString))); }
StartDialog::StartDialog(MainWindow &mainWindow, ProjectManager &projectManager) : QDialog(&mainWindow, false) , mMainWindow(mainWindow) , mProjectManager(projectManager) { setMinimumSize(mMinimumSize); setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); QTabWidget *tabWidget = new QTabWidget; RecentProjectsListWidget *recentProjects = new RecentProjectsListWidget(this); tabWidget->addTab(recentProjects, tr("&Recent projects")); Id const theOnlyDiagram = mMainWindow.editorManager().theOnlyDiagram(); if (theOnlyDiagram.isNull()) { SuggestToCreateDiagramWidget *diagrams = new SuggestToCreateDiagramWidget(&mMainWindow, this); tabWidget->addTab(diagrams, tr("&New project with diagram")); connect(diagrams, SIGNAL(userDataSelected(QString)), this, SLOT(createProjectWithDiagram(QString))); if (recentProjects->count() == 0) { tabWidget->setCurrentWidget(diagrams); } } QCommandLinkButton *openIDLink = new QCommandLinkButton(tr("&Open interpreted diagram")); QCommandLinkButton *createIDLink = new QCommandLinkButton(tr("&Create interpreted diagram")); QHBoxLayout *openIDLinkLayout = new QHBoxLayout; openIDLinkLayout->addWidget(openIDLink); mInterpreterButton = openIDLink; QHBoxLayout *createIDLinkLayout = new QHBoxLayout; createIDLinkLayout->addWidget(createIDLink); mCreateInterpreterButton = createIDLink; QHBoxLayout *commandLinksLayout = new QHBoxLayout; if (theOnlyDiagram != Id()) { Id const editor = mMainWindow.editorManager().editors()[0]; QString const diagramIdString = mMainWindow.editorManager().diagramNodeNameString(editor, theOnlyDiagram); QSignalMapper *newProjectMapper = new QSignalMapper(this); QCommandLinkButton *newLink = createCommandButton(tr("New project") , newProjectMapper, SLOT(map()), QKeySequence::New); newProjectMapper->setMapping(newLink, diagramIdString); connect(newProjectMapper, SIGNAL(mapped(QString)), this, SLOT(createProjectWithDiagram(QString))); commandLinksLayout->addWidget(newLink); } commandLinksLayout->addWidget(createCommandButton(tr("Open existing project") , this, SLOT(openExistingProject()), QKeySequence::Open)); QVBoxLayout *mainLayout = new QVBoxLayout; mainLayout->addWidget(tabWidget); mainLayout->addLayout(openIDLinkLayout); mainLayout->addLayout(createIDLinkLayout); mainLayout->addLayout(commandLinksLayout); setLayout(mainLayout); setWindowTitle(tr("Start page")); connect(openIDLink, SIGNAL(clicked()), this, SLOT(openInterpretedDiagram())); connect(createIDLink, SIGNAL(clicked()), this, SLOT(createInterpretedDiagram())); connect(recentProjects, SIGNAL(userDataSelected(QString)), this, SLOT(openRecentProject(QString))); connect(this, SIGNAL(rejected()), this, SLOT(exitApp())); }