diff options
author | Gluzskiy Alexandr <sss123next@list.ru> | 2010-08-13 02:27:42 +0300 |
---|---|---|
committer | Gluzskiy Alexandr <sss123next@list.ru> | 2010-08-13 02:27:42 +0300 |
commit | 72f3ccc35b220489bf52abd2abe1d901c87acb2c (patch) | |
tree | 2b1f3b97e46dbf4d19266f333042eef31a064404 | |
parent | bbc0a43dd52f35129599fa9774f52fc7ad8d089e (diff) |
modified: main.cpp
modified: messages.cpp
modified: new_gpg.rc
modified: resource.h
modified: utilities.cpp
-rw-r--r-- | main.cpp | 90 | ||||
-rw-r--r-- | messages.cpp | 19 | ||||
-rw-r--r-- | new_gpg.rc | 22 | ||||
-rw-r--r-- | resource.h | 6 | ||||
-rw-r--r-- | utilities.cpp | 1 |
5 files changed, 128 insertions, 10 deletions
@@ -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);
@@ -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
@@ -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;
}
}
+
|