diff options
| author | 2007-04-05 19:28:31 +0000 | |
|---|---|---|
| committer | 2007-04-05 19:28:31 +0000 | |
| commit | 8e4d305f883e5c237468d7370a2ad09d4c3ab333 (patch) | |
| tree | 89316133326d3db4ff6754b6cd9ba94e4012697d /src/modules/setup/setupwizard.cpp | |
| parent | quick Fixed (diff) | |
| download | KVIrc-8e4d305f883e5c237468d7370a2ad09d4c3ab333.tar.gz KVIrc-8e4d305f883e5c237468d7370a2ad09d4c3ab333.tar.bz2 KVIrc-8e4d305f883e5c237468d7370a2ad09d4c3ab333.zip | |
Implemented easy migration from mIRC - loading mIRC servers, personal info and history at the first run
git-svn-id: https://svn.kvirc.de/svn/trunk/kvirc@462 17fca916-40b9-46aa-a4ea-0a15b648b75c
Diffstat (limited to 'src/modules/setup/setupwizard.cpp')
| -rw-r--r-- | src/modules/setup/setupwizard.cpp | 78 |
1 files changed, 76 insertions, 2 deletions
diff --git a/src/modules/setup/setupwizard.cpp b/src/modules/setup/setupwizard.cpp index 4aa323b54..b9f4caa4a 100644 --- a/src/modules/setup/setupwizard.cpp +++ b/src/modules/setup/setupwizard.cpp @@ -22,6 +22,7 @@ // //============================================================================== +bool g_bFoundMirc; #include "setupwizard.h" @@ -60,6 +61,8 @@ extern bool bNeedToApplyDefaults; extern unsigned int uPort; extern QString szHost; extern QString szUrl; +extern QString szMircServers; +extern QString szMircIni; #ifdef COMPILE_ON_WINDOWS #define KVI_LOCAL_KVIRC_SUBDIRECTORY_NAME "KVIrc" @@ -109,6 +112,7 @@ KviSetupPage::~KviSetupPage() KviSetupWizard::KviSetupWizard() : KviTalWizard(0,0,true) { + g_bFoundMirc = false; QString szLabelText; QString szImagePath; @@ -480,7 +484,12 @@ KviSetupWizard::KviSetupWizard() m_pServersOpenIrcUrl = new QRadioButton(__tr2qs("Open irc:// or irc6:// URL"),m_pServersButtonGroup); m_szServerUrl="irc://"; m_pServerUrlSelector = new KviStringSelector(m_pServersButtonGroup,__tr2qs("URL:"),&m_szServerUrl,true); - + +#ifdef COMPILE_ON_WINDOWS + m_pUseMircServerList = new QRadioButton(__tr2qs("Import server list from mIRC"),m_pServersButtonGroup); + m_pUseMircServerList->setEnabled(false); +#endif + m_pServersLoadConfig = new QRadioButton(__tr2qs("Use server config"),m_pServersButtonGroup); m_pServersLoadConfig->setEnabled(FALSE); m_pServerConfigSelector = new KviFileSelector(m_pServersButtonGroup,__tr2qs("Config file:"),&m_szServerConfigFile,true); @@ -521,6 +530,65 @@ KviSetupWizard::KviSetupWizard() } } } + + //mIRC import + #define QUERY_BUFFER 2048 + char* buffer; + DWORD len = QUERY_BUFFER; + buffer = (char*)malloc(len*sizeof(char)); + HKEY hKey; + QString szMircDir; + + if(RegOpenKeyEx(HKEY_CLASSES_ROOT,"ChatFile\\DefaultIcon",0,KEY_READ,&hKey) == ERROR_SUCCESS ) + { + if( RegQueryValueEx( hKey,0,0,0,(LPBYTE)buffer,&len) == ERROR_SUCCESS) + { + szMircDir = QString::fromLocal8Bit(buffer,len); + + szMircDir.remove('"'); + QString szMircFile = KviFileUtils::extractFileName(szMircDir); + szMircFile = szMircFile.left(szMircFile.length()-4); //cut off ".exe" + szMircDir = KviFileUtils::extractFilePath(szMircDir); + + szMircIni = szMircDir + "/" + szMircFile + ".ini"; + + if(!KviFileUtils::fileExists(szMircIni)) + szMircIni = szMircDir + "/mirc.ini"; + + if(!KviFileUtils::fileExists(szMircIni)) + szMircIni = szMircDir + "/pirc.ini"; + + if(KviFileUtils::fileExists(szMircIni)){ + KviConfig cfg(szMircIni,KviConfig::Read,true); + if(cfg.hasGroup("mirc")) + { + g_bFoundMirc = true; + cfg.setGroup("mirc"); + m_pNickSelector->setText(cfg.readQStringEntry("nick",KVI_OPTION_STRING(KviOption_stringNickname1))); + m_pRealNameSelector->setText(cfg.readQStringEntry("user",KVI_OPTION_STRING(KviOption_stringRealname))); + KVI_OPTION_STRING(KviOption_stringNickname2) = + cfg.readQStringEntry("anick",KVI_OPTION_STRING(KviOption_stringNickname2)); + KVI_OPTION_STRING(KviOption_stringUsername) = + cfg.readQStringEntry("email",KVI_OPTION_STRING(KviOption_stringUsername)).section('@',0,0); + + if(cfg.hasGroup("files")) + { + m_szMircServerIniFile = cfg.readQStringEntry("servers","servers.ini"); + m_szMircServerIniFile.prepend('/'); + m_szMircServerIniFile.prepend(szMircDir); + if(KviFileUtils::fileExists(m_szMircServerIniFile)){ + m_pUseMircServerList->setEnabled(true); + m_pUseMircServerList->setChecked(true); + } + } + KviMessageBox::information(__tr2qs("Setup found existing mIRC installation. It will try to import " + "some of mIRC settings and serverlist. If you don't want to do it, unselect import in setup pages")); + } + } + } + } + free(buffer); + #endif } @@ -913,7 +981,8 @@ void KviSetupWizard::accept() QString alt = szNickPart; alt.prepend("|"); // <-- this is an erroneous nickname on IrcNet :/ alt.append("|"); - KVI_OPTION_STRING(KviOption_stringNickname2) = alt; + if(!g_bFoundMirc) + KVI_OPTION_STRING(KviOption_stringNickname2) = alt; alt = szNickPart; alt.prepend("_"); alt.append("_"); @@ -958,6 +1027,11 @@ void KviSetupWizard::accept() KVI_OPTION_BOOL(KviOption_boolShowServersConnectDialogOnStart) = FALSE; szUrl=m_szServerUrl; } +#ifdef COMPILE_ON_WINDOWS + else if (m_pUseMircServerList->isOn()) { + szMircServers = m_szMircServerIniFile; + } +#endif } } #ifdef COMPILE_ON_WINDOWS |
