//============================================================================= // // File : libkvisetup.cpp // Creation date : Sat Oct 6 02:08:24 2001 GMT by Szymon Stefanek // // This file is part of the KVIrc irc client distribution // Copyright (C) 2001-2010 Szymon Stefanek (pragma at kvirc dot net) // // This program is FREE software. You can redistribute it and/or // modify it under the terms of the GNU General Public License // as published by the Free Software Foundation; either version 2 // of the License, or (at your opinion) any later version. // // This program is distributed in the HOPE that it will be USEFUL, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. // See the GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, write to the Free Software Foundation, // Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. // //============================================================================= #include "SetupWizard.h" #include "KviModule.h" #include "KviOptions.h" #include "kvi_defaults.h" #include "KviApplication.h" #include "KviKvsScript.h" #include "KviKvsVariantList.h" #include "KviWindow.h" #include "KviTheme.h" #include "KviIrcServerDataBase.h" #include #include // this will be chosen during the setup process QString g_szChoosenIncomingDirectory; int g_iThemeToApply = THEME_APPLY_NONE; bool bNeedToApplyDefaults; unsigned int uPort; QString szHost; QString szUrl; QString szMircServers; QString szMircIni; // this is called by KviApplication when no local kvirc directory has been found // we have nothing to rely on yet... (settings have not been loaded yet) KVIMODULEEXPORTFUNC bool setup_begin() { // FIXME: try to guess the user's .kvirc directory // and the preferred nickname from a previous installation SetupWizard * w = new SetupWizard(); int retcode = w->exec(); delete w; return (retcode == QDialog::Accepted); } // this is called just after the first startup // all the subsystems are up and running (we even have a nice console // to write on if needed). // all the options are loaded. KVIMODULEEXPORTFUNC void setup_finish() { if(bNeedToApplyDefaults) { KVI_OPTION_STRING(KviOption_stringIncomingPath) = g_szChoosenIncomingDirectory; // Reset the quit message and the real name... if they contain the KVIrc version // then probably the user hasn't even edited them. if(KVI_OPTION_STRING(KviOption_stringQuitMessage).indexOf("KVIrc",0,Qt::CaseInsensitive) != -1) KVI_OPTION_STRING(KviOption_stringQuitMessage) = KVI_DEFAULT_QUIT_MESSAGE; // We deserve to change the user's part message in something nice :) KVI_OPTION_STRING(KviOption_stringPartMessage) = KVI_DEFAULT_PART_MESSAGE; // FIXME: Should we also change these ? // #define KVI_DEFAULT_CTCP_USERINFO_REPLY "I'm too lazy to edit this field." // #define KVI_DEFAULT_AWAY_MESSAGE "I'm off to see the wizard." // Apply the chosen default theme KviThemeInfo out; switch(g_iThemeToApply) { case THEME_APPLY_HIRES: KviTheme::load("YellowIRC-1.0.0",out,BUILTIN); break; case THEME_APPLY_LORES: KviTheme::load("MinimalDark-1.0.0",out,BUILTIN); break; // default: no theme } if(!szMircServers.isEmpty()) { g_pServerDataBase->importFromMircIni(szMircServers,szMircIni, KVI_OPTION_STRINGLIST(KviOption_stringlistRecentServers)); g_pApp->saveIrcServerDataBase(); } g_pApp->loadDefaultScript(); if(!szUrl.isEmpty()) { KviKvsVariantList * pParams = new KviKvsVariantList(); pParams->append(szUrl); KviKvsScript::run("openurl $0",g_pActiveWindow,pParams); delete pParams; KVI_OPTION_BOOL(KviOption_boolShowServersConnectDialogOnStart) = TRUE; } else if(!szHost.isEmpty()) { KviKvsVariantList * pParams = new KviKvsVariantList(); pParams->append(szHost); pParams->append((kvs_int_t)uPort); KviKvsScript::run("server $0 $1",g_pActiveWindow,pParams); delete pParams; KVI_OPTION_BOOL(KviOption_boolShowServersConnectDialogOnStart) = TRUE; } } } static bool setup_module_init(KviModule *) { bNeedToApplyDefaults=true; return true; } static bool setup_module_cleanup(KviModule *) { return true; } static bool setup_module_can_unload(KviModule *) { return true; // can be always unloaded...this module does basically nothing } KVIRC_MODULE( "Setup Wizard", "4.0.0", "Szymon Stefanek ", "First-time-run setup wizard", setup_module_init, setup_module_can_unload, 0, setup_module_cleanup, 0 )