void Application::initiateLogin( bool forceWizard ) throw( StubbornUserException ) { closeAllWindows(); if( forceWizard || !unicorn::Settings().value( SETTING_FIRST_RUN_WIZARD_COMPLETED, false ).toBool() ) { setWizardRunning( true ); FirstRunWizard w; if( w.exec() != QDialog::Accepted ) { setWizardRunning( false ); throw StubbornUserException(); } setWizardRunning( false ); } //this covers the case where the last user was removed //and the main window was closed. if ( m_mw ) m_mw->show(); if ( m_tray ) { //HACK: turns out when all the windows are closed, the tray stops working //unless you call the following methods. m_tray->hide(); m_tray->show(); } }
void App::firstRunWizard() { ///show firstRunWizard FirstRunWizard wizard; setTopWidget( &wizard ); KConfigDialogManager* config = new KConfigDialogManager(&wizard, AmarokConfig::self(), "wizardconfig"); config->updateWidgets(); // connect(config, SIGNAL(settingsChanged()), SLOT(updateSettings())); wizard.setCaption( makeStdCaption( i18n( "First-Run Wizard" ) ) ); if( wizard.exec() != QDialog::Rejected ) { switch( wizard.interface() ) { case FirstRunWizard::XMMS: amaroK::config()->writeEntry( "XMLFile", "amarokui_xmms.rc" ); AmarokConfig::setShowPlayerWindow( true ); //FIXME the statusbar is now quite essential and also without it // the popup messages break. Fix in 1.2.1 AmarokConfig::setShowStatusBar( /*false*/ true ); break; case FirstRunWizard::Compact: amaroK::config()->writeEntry( "XMLFile", "amarokui.rc" ); AmarokConfig::setShowPlayerWindow( false ); AmarokConfig::setShowStatusBar( true ); break; } const QStringList oldCollectionFolders = AmarokConfig::collectionFolders(); wizard.writeCollectionConfig(); // If wizard is invoked at runtime, rescan collection if folder setup has changed if ( !amaroK::config()->readBoolEntry( "First Run", true ) && oldCollectionFolders != AmarokConfig::collectionFolders() ) CollectionDB::instance()->startScan(); config->updateSettings(); } }
int main(int argc, char* argv[]) { Application app(argc, argv); // Set the organization / application names must be done very early because some other // classes will use these values (for example QSettings, Debug (for the file logging path))! Application::setOrganizationName("LibrePCB"); Application::setOrganizationDomain("librepcb.org"); #ifdef GIT_BRANCH Application::setApplicationName(QString("LibrePCB_git-%1").arg(GIT_BRANCH)); #else Application::setApplicationName("LibrePCB"); #endif Application::setApplicationVersion(Version(QString("%1.%2.%3").arg(APP_VERSION_MAJOR).arg(APP_VERSION_MINOR).arg(APP_VERSION_PATCH))); Debug::instance(); // this creates the Debug object and installs the message handler. // Install Qt translations QTranslator qtTranslator; qtTranslator.load("qt_" % QLocale::system().name(), QLibraryInfo::location(QLibraryInfo::TranslationsPath)); app.installTranslator(&qtTranslator); // Install system language translations (all system languages defined in the system settings, in the defined order) QTranslator systemTranslator; systemTranslator.load(QLocale::system(), "librepcb", "_", ":/i18n/"); app.installTranslator(&systemTranslator); // Install language translations (like "de" for German) QTranslator appTranslator1; appTranslator1.load("librepcb_" % QLocale::system().name().split("_").at(0), ":/i18n"); app.installTranslator(&appTranslator1); // Install language/country translations (like "de_ch" for German/Switzerland) QTranslator appTranslator2; appTranslator2.load("librepcb_" % QLocale::system().name(), ":/i18n"); app.installTranslator(&appTranslator2); Application::setQuitOnLastWindowClosed(false); // this is to remove the ugly frames around widgets in all status bars... // (from http://www.qtcentre.org/threads/1904) app.setStyleSheet("QStatusBar::item { border: 0px solid black; }"); // Initialization finished, open the workspace (or show the first run wizard)... FilePath wsPath(Workspace::getMostRecentlyUsedWorkspacePath()); if (!Workspace::isValidWorkspacePath(wsPath)) { FirstRunWizard wizard; if (wizard.exec() != QDialog::Accepted) return 0; wsPath = wizard.getWorkspaceFilePath(); if (wizard.getCreateNewWorkspace()) { if (!Workspace::createNewWorkspace(wsPath)) { QMessageBox::critical(0, Application::translate("Workspace", "Error"), Application::translate("Workspace", "Could not " "create the workspace directory. Check file permissions.")); return 0; // TODO: Show the wizard again instead of closing the application } } Workspace::setMostRecentlyUsedWorkspacePath(wsPath); } try { Workspace ws(wsPath); // The Workspace constructor can throw an exception. ControlPanel p(ws); p.show(); return appExec(); } catch (UserCanceled& e) { return 0; // quit the application } catch (Exception& e) { QMessageBox::critical(0, Application::translate("Workspace", "Cannot open the workspace"), QString(Application::translate( "Workspace", "The workspace \"%1\" cannot be opened: %2")) .arg(wsPath.toNative(), e.getUserMsg())); return 0; // quit the application } return 0; }