summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGluzskiy Alexandr <sss123next@list.ru>2010-08-13 02:27:42 +0300
committerGluzskiy Alexandr <sss123next@list.ru>2010-08-13 02:27:42 +0300
commit72f3ccc35b220489bf52abd2abe1d901c87acb2c (patch)
tree2b1f3b97e46dbf4d19266f333042eef31a064404
parentbbc0a43dd52f35129599fa9774f52fc7ad8d089e (diff)
modified: main.cpp
modified: messages.cpp modified: new_gpg.rc modified: resource.h modified: utilities.cpp
-rw-r--r--main.cpp90
-rw-r--r--messages.cpp19
-rw-r--r--new_gpg.rc22
-rw-r--r--resource.h6
-rw-r--r--utilities.cpp1
5 files changed, 128 insertions, 10 deletions
diff --git a/main.cpp b/main.cpp
index 1ab11aa..eeaa102 100644
--- a/main.cpp
+++ b/main.cpp
@@ -30,7 +30,7 @@ void test()
}
-HWND hwndFirstRun = NULL;
+HWND hwndFirstRun = NULL, hwndSetDirs = NULL;
int itemnum = 0;
@@ -193,8 +193,83 @@ static BOOL CALLBACK DlgProcFirstRun(HWND hwndDlg,UINT msg,WPARAM wParam,LPARAM
return FALSE;
}
+void ShowFirstRunDialog();
+
+static BOOL CALLBACK DlgProcGpgBinOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
+{
+ TCHAR *tmp = NULL;
+ switch (msg)
+ {
+ case WM_INITDIALOG:
+ {
+ TranslateDialogDefault(hwndDlg);
+ tmp = UniGetContactSettingUtf(NULL, szModuleName, "szGpgBinPath", _T(""));
+ SetDlgItemText(hwndDlg, IDC_BIN_PATH, tmp);
+ mir_free(tmp);
+ tmp = UniGetContactSettingUtf(NULL, szModuleName, "szHomePath", _T(""));
+ SetDlgItemText(hwndDlg, IDC_HOME_DIR, tmp);
+ mir_free(tmp);
+ return TRUE;
+ }
+
+
+ case WM_COMMAND:
+ {
+ switch (LOWORD(wParam))
+ {
+ case IDC_SET_BIN_PATH:
+ GetFilePath(_T("Choose gpg2.exe"), "szGpgBinPath", _T("*.exe"), _T("EXE Executables"));
+ tmp = UniGetContactSettingUtf(NULL, szModuleName, "szGpgBinPath", _T("gpg2.exe"));
+ SetDlgItemText(hwndDlg, IDC_BIN_PATH, tmp);
+ mir_free(tmp);
+ break;
+ case IDC_SET_HOME_DIR:
+ GetFolderPath(_T("Set home diractory"), "szHomePath");
+ tmp = UniGetContactSettingUtf(NULL, szModuleName, "szHomePath", _T(""));
+ SetDlgItemText(hwndDlg, IDC_HOME_DIR, tmp);
+ mir_free(tmp);
+ break;
+ case ID_OK:
+ {
+ TCHAR tmp[512];
+ GetDlgItemText(hwndDlg, IDC_BIN_PATH, tmp, 512);
+ DBWriteContactSettingTString(NULL, szModuleName, "szGpgBinPath", tmp);
+ GetDlgItemText(hwndDlg, IDC_HOME_DIR, tmp, 512);
+ DBWriteContactSettingTString(NULL, szModuleName, "szHomePath", tmp);
+ DestroyWindow(hwndDlg);
+ ShowFirstRunDialog();
+ break;
+ }
+
+ default:
+ break;
+ }
+
+ break;
+ }
+
+ case WM_NOTIFY:
+ {
+ switch (((LPNMHDR)lParam)->code)
+ {
+ }
+ }
+ break;
+ case WM_CLOSE:
+ DestroyWindow(hwndDlg);
+ break;
+ case WM_DESTROY:
+ hwndFirstRun = NULL;
+ break;
+
+ }
+ return FALSE;
+}
+
+
extern HINSTANCE hInst;
+
void ShowFirstRunDialog()
{
if (hwndFirstRun == NULL)
@@ -205,9 +280,20 @@ void ShowFirstRunDialog()
}
+void ShowSetDirsDialog()
+{
+ if (hwndSetDirs == NULL)
+ {
+ hwndSetDirs = CreateDialog(hInst, MAKEINTRESOURCE(IDD_BIN_PATH), NULL, DlgProcGpgBinOpts);
+ }
+ SetForegroundWindow(hwndSetDirs);
+}
+
+
void FirstRun()
{
+ DWORD pid = 0;
if(!DBGetContactSettingByte(NULL, szModuleName, "FirstRun", 1))
return;
- ShowFirstRunDialog();
+ ShowSetDirsDialog();
}
diff --git a/messages.cpp b/messages.cpp
index 792e3fa..db6fdad 100644
--- a/messages.cpp
+++ b/messages.cpp
@@ -102,7 +102,7 @@ int RecvMsgSvc(WPARAM w, LPARAM l)
cmd += _T("\\decrypted_data\"");
cmd += _T(" -d -a \"");
cmd += path;
- cmd += _T("\"");
+ cmd += _T("\"");
pxExecute(&cmd, "", &out, &code);
DeleteFile(path.c_str());
str.clear();
@@ -115,7 +115,11 @@ int RecvMsgSvc(WPARAM w, LPARAM l)
{
char tmp[256];
f.getline(tmp, 256);
- TCHAR *tmp2 = mir_a2t(tmp);
+ TCHAR *tmp2;
+// if(unicode)
+ tmp2 = mir_utf8decodeW(tmp);
+// else
+// tmp2 = mir_a2t(tmp);
str.append(tmp2).append(_T("\n"));
mir_free(tmp);
}
@@ -123,12 +127,11 @@ int RecvMsgSvc(WPARAM w, LPARAM l)
DeleteFile(path.c_str());
if(!str.length())
{
+ mir_free((void**)pre->szMessage);
pre->szMessage = "Failed to decrypt GPG encrypted message";
return CallService(MS_PROTO_CHAINRECV, w, (LPARAM)ccs);
}
- }
- {
- if(str.length() > 0)
+ else
{
mir_free((void**)pre->szMessage);
char *utf = mir_utf8encodeW(str.c_str());
@@ -185,7 +188,11 @@ int SendMsgSvc(WPARAM w, LPARAM l)
path.append(_T("\\exported_data"));
cmd += _T("\"");
{
- char *tmp = mir_t2a(str.c_str());
+ char *tmp;
+// if(unicode)
+ tmp = mir_utf8encodeW(str.c_str());
+// else
+// tmp = mir_t2a(str.c_str());
wfstream f(path.c_str(), std::ios::out);
f<<tmp;
mir_free(tmp);
diff --git a/new_gpg.rc b/new_gpg.rc
index 468071a..35a973c 100644
--- a/new_gpg.rc
+++ b/new_gpg.rc
@@ -73,6 +73,20 @@ BEGIN
LTEXT "Select key for use",IDC_STATIC,16,12,186,8
END
+IDD_BIN_PATH DIALOGEX 0, 0, 178, 89
+STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
+CAPTION "Set GPG bin path and keyring home dir."
+FONT 8, "MS Shell Dlg", 400, 0, 0x1
+BEGIN
+ DEFPUSHBUTTON "خت",ID_OK,7,68,50,14
+ PUSHBUTTON "Browse",IDC_SET_BIN_PATH,116,18,38,14
+ PUSHBUTTON "Browse",IDC_SET_HOME_DIR,116,44,38,14
+ EDITTEXT IDC_BIN_PATH,7,17,95,14,ES_AUTOHSCROLL
+ EDITTEXT IDC_HOME_DIR,7,44,95,14,ES_AUTOHSCROLL
+ LTEXT "GnuPG2 binary:",IDC_STATIC,10,7,147,8
+ LTEXT "Home directory:",IDC_STATIC,9,34,144,8
+END
+
/////////////////////////////////////////////////////////////////////////////
//
@@ -97,6 +111,14 @@ BEGIN
TOPMARGIN, 7
BOTTOMMARGIN, 189
END
+
+ IDD_BIN_PATH, DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 171
+ TOPMARGIN, 7
+ BOTTOMMARGIN, 82
+ END
END
#endif // APSTUDIO_INVOKED
diff --git a/resource.h b/resource.h
index e52578e..0884116 100644
--- a/resource.h
+++ b/resource.h
@@ -6,6 +6,8 @@
#define IDD_FIRST_RUN 103
#define IDD_OPT_GPG 104
#define IDD_OPT_GPG_BIN 105
+#define IDD_DIALOG1 106
+#define IDD_BIN_PATH 106
#define IDC_SET_BIN_PATH 1016
#define IDC_SET_HOME_DIR 1017
#define IDC_BIN_PATH 1018
@@ -27,9 +29,9 @@
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
-#define _APS_NEXT_RESOURCE_VALUE 104
+#define _APS_NEXT_RESOURCE_VALUE 107
#define _APS_NEXT_COMMAND_VALUE 40001
-#define _APS_NEXT_CONTROL_VALUE 1029
+#define _APS_NEXT_CONTROL_VALUE 1030
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif
diff --git a/utilities.cpp b/utilities.cpp
index 8001d97..38813cc 100644
--- a/utilities.cpp
+++ b/utilities.cpp
@@ -258,3 +258,4 @@ void cp866_to_cp1251(string *str)
*p -= 57;
}
}
+