summaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'plugins')
-rw-r--r--plugins/Import/src/main.cpp28
-rw-r--r--plugins/Import/src/progress.cpp8
-rw-r--r--plugins/Import/src/stdafx.h2
-rw-r--r--plugins/Import/src/wizard.cpp3
4 files changed, 31 insertions, 10 deletions
diff --git a/plugins/Import/src/main.cpp b/plugins/Import/src/main.cpp
index 61d6da6cce..d6c7389699 100644
--- a/plugins/Import/src/main.cpp
+++ b/plugins/Import/src/main.cpp
@@ -27,7 +27,7 @@ int nImportOptions;
HINSTANCE hInst;
INT_PTR CALLBACK WizardDlgProc(HWND hdlg, UINT message, WPARAM wParam, LPARAM lParam);
-bool g_bServiceMode = false;
+bool g_bServiceMode = false, g_bSendQuit = false;
HWND hwndWizard, hwndAccMerge;
int hLangpack;
@@ -76,7 +76,7 @@ extern "C" __declspec(dllexport) PLUGININFOEX* MirandaPluginInfoEx(DWORD)
/////////////////////////////////////////////////////////////////////////////////////////
// MirandaInterfaces - returns the protocol interface to the core
-extern "C" __declspec(dllexport) const MUUID MirandaInterfaces[] = { MIID_IMPORT, MIID_DATABASE, MIID_SERVICEMODE, MIID_LAST };
+extern "C" __declspec(dllexport) const MUUID MirandaInterfaces[] = { MIID_IMPORT, MIID_SERVICEMODE, MIID_LAST };
/////////////////////////////////////////////////////////////////////////////////////////
// Performs a primary set of actions upon plugin loading
@@ -108,11 +108,27 @@ static int OnExit(WPARAM, LPARAM)
static INT_PTR ServiceMode(WPARAM, LPARAM)
{
- g_bServiceMode = true;
+ if (!g_bServiceMode) {
+ g_bServiceMode = true;
+ return SERVICE_ONLYDB;
+ }
+
+ ptrW wszFullName(Utils_ReplaceVarsW(L"%miranda_userdata%\\%miranda_profilename%.dat.bak"));
+ if (!_waccess(wszFullName, 0)) {
+ nImportOptions = IOPT_ADDUNKNOWN + IOPT_COMPLETE;
+ wcsncpy_s(importFile, MAX_PATH, wszFullName, _TRUNCATE);
+
+ WizardDlgParam param = { IDD_PROGRESS, (LPARAM)ProgressPageProc };
+ DialogBoxParam(hInst, MAKEINTRESOURCE(IDD_WIZARD), nullptr, WizardDlgProc, LPARAM(&param));
+ }
+ else {
+ g_bSendQuit = true;
+
+ WizardDlgParam param = { IDD_WIZARDINTRO, (LPARAM)WizardIntroPageProc };
+ CreateDialogParam(hInst, MAKEINTRESOURCE(IDD_WIZARD), nullptr, WizardDlgProc, (LPARAM)&param);
+ }
- WizardDlgParam param = { IDD_WIZARDINTRO, (LPARAM)WizardIntroPageProc };
- CreateDialogParam(hInst, MAKEINTRESOURCE(IDD_WIZARD), nullptr, WizardDlgProc, (LPARAM)&param);
- return SERVICE_ONLYDB;
+ return SERVICE_CONTINUE;
}
static INT_PTR CustomImport(WPARAM wParam, LPARAM)
diff --git a/plugins/Import/src/progress.cpp b/plugins/Import/src/progress.cpp
index 6fa32e8701..26708529c4 100644
--- a/plugins/Import/src/progress.cpp
+++ b/plugins/Import/src/progress.cpp
@@ -51,8 +51,12 @@ INT_PTR CALLBACK ProgressPageProc(HWND hdlg, UINT message, WPARAM wParam, LPARAM
case PROGM_START:
MirandaImport(hdlg);
- SendMessage(GetParent(hdlg), WIZM_ENABLEBUTTON, 1, 0);
- SendMessage(GetParent(hdlg), WIZM_ENABLEBUTTON, 2, 0);
+ if (g_bServiceMode && !g_bSendQuit)
+ DestroyWindow(hwndWizard);
+ else {
+ SendMessage(GetParent(hdlg), WIZM_ENABLEBUTTON, 1, 0);
+ SendMessage(GetParent(hdlg), WIZM_ENABLEBUTTON, 2, 0);
+ }
break;
case WM_COMMAND:
diff --git a/plugins/Import/src/stdafx.h b/plugins/Import/src/stdafx.h
index 21007d9136..36e5156142 100644
--- a/plugins/Import/src/stdafx.h
+++ b/plugins/Import/src/stdafx.h
@@ -89,7 +89,7 @@ extern HWND hwndWizard, hwndAccMerge;
extern int nImportOptions;
extern wchar_t importFile[];
extern time_t dwSinceDate;
-extern bool g_bServiceMode;
+extern bool g_bServiceMode, g_bSendQuit;
HANDLE GetIconHandle(int iIconId);
void RegisterIcons(void);
diff --git a/plugins/Import/src/wizard.cpp b/plugins/Import/src/wizard.cpp
index 1decf1d74f..4f54560ddc 100644
--- a/plugins/Import/src/wizard.cpp
+++ b/plugins/Import/src/wizard.cpp
@@ -163,8 +163,9 @@ INT_PTR CALLBACK WizardDlgProc(HWND hdlg, UINT message, WPARAM wParam, LPARAM lP
DestroyWindow(hwndPage);
DestroyWindow(hdlg);
break;
+
case WM_DESTROY:
- if (g_bServiceMode)
+ if (g_bSendQuit)
PostQuitMessage(0);
}