summaryrefslogtreecommitdiff
path: root/attache/options.cpp
diff options
context:
space:
mode:
authorsje <sje@4f64403b-2f21-0410-a795-97e2b3489a10>2006-11-01 14:28:18 +0000
committersje <sje@4f64403b-2f21-0410-a795-97e2b3489a10>2006-11-01 14:28:18 +0000
commit31d3a6408d045eadaff094d4c11bf017817743d7 (patch)
tree61f75240490677d57477fea63d6f771bf3d754d9 /attache/options.cpp
parent31654bd814b4e5fdc1b68807e341c623d74f357d (diff)
git-svn-id: https://server.scottellis.com.au/svn/mim_plugs@4 4f64403b-2f21-0410-a795-97e2b3489a10
Diffstat (limited to 'attache/options.cpp')
-rw-r--r--attache/options.cpp140
1 files changed, 140 insertions, 0 deletions
diff --git a/attache/options.cpp b/attache/options.cpp
new file mode 100644
index 0000000..df97534
--- /dev/null
+++ b/attache/options.cpp
@@ -0,0 +1,140 @@
+#include "common.h"
+#include "options.h"
+#include "resource.h"
+#include "DebugTools.h"
+#include "str_utils.h"
+
+#include "bzip2-1.0.3/bzlib.h"
+extern "C" void compressStream ( FILE *stream, FILE *zStream );
+
+/////////////////////////////
+///// HTTP multipart POST upload support
+#include "Uploader.h"
+#include "UploadSettings.h"
+#include "UploadResults.h"
+
+Options options;
+
+void DoTestUpload() {
+ // bzip the file
+ char szDumpFileName[MAX_PATH], szBzipFilename[MAX_PATH];
+
+ // bzip the plugin as a test file :)
+ GetModuleFileNameA(hInst, szDumpFileName, MAX_PATH);
+
+ strcpy(szBzipFilename, szDumpFileName);
+ strcat(szBzipFilename, ".bz2");
+ FILE *fin = fopen(szDumpFileName, "rb"), *fout = fopen(szBzipFilename, "w+b");
+ if(fin) {
+ if(fout) {
+ compressStream(fin, fout);
+ } else
+ fclose(fin);
+ }
+
+ TCHAR *stzBzipFilename = a2t(szBzipFilename);
+
+ TCHAR msg[1024];
+ mir_sntprintf(msg, 1024, TranslateT("MiniDump crash dump created.\nCrash in module: %s\n\nUpload to miranda-im.org?"), MODULE, stzBzipFilename);
+
+ // upload?
+ if(options.upload && (!options.confirm_upload || MessageBox(0, msg, TranslateT("MiniDump - Crash Dump"), MB_YESNO | MB_ICONERROR) == IDYES)) {
+ // yes...
+ if(HttpUpload(stzBzipFilename, _T(MODULE " Test"), _T(MODULE " Test2"), _T("a.b.c.d"), _T("e.f.g.h"), 0, 0) && options.delete_uploaded)
+ DeleteFile(stzBzipFilename);
+ } else {
+ mir_sntprintf(msg, 1024, TranslateT("Crash in module: %s\nDump file: %s"), MODULE, stzBzipFilename);
+ MessageBox(0, msg, TranslateT("MiniDump - Crash Dump Created"), MB_OK | MB_ICONERROR);
+ }
+
+ free(stzBzipFilename);
+
+}
+
+static BOOL CALLBACK DlgProcOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) {
+
+ switch ( msg ) {
+ case WM_INITDIALOG:
+ TranslateDialogDefault( hwndDlg );
+
+ CheckDlgButton(hwndDlg, IDC_CHK_CONFUPLOAD, options.confirm_upload ? TRUE : FALSE);
+ CheckDlgButton(hwndDlg, IDC_CHK_DELUPLOADED, options.delete_uploaded ? TRUE : FALSE);
+
+ ShowWindow(GetDlgItem(hwndDlg, IDC_BTN_TEST), DBGetContactSettingByte(0, MODULE, "EnableTestButton", 0) ? SW_SHOWNOACTIVATE : SW_HIDE);
+ SetDlgItemText(hwndDlg, IDC_ED_ID, options.reporter_id);
+
+ return FALSE;
+ case WM_COMMAND:
+ if ( HIWORD( wParam ) == EN_CHANGE && ( HWND )lParam == GetFocus()) {
+ switch( LOWORD( wParam )) {
+ case IDC_ED_ID:
+ SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0);
+ }
+ } else
+ if ( HIWORD( wParam ) == BN_CLICKED ) {
+ if(LOWORD(wParam) == IDC_BTN_TEST) {
+ DoTestUpload();
+ } else
+ SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0);
+ return TRUE;
+ }
+ break;
+
+ case WM_NOTIFY:
+ if (((LPNMHDR)lParam)->code == PSN_APPLY ) {
+ options.confirm_upload = (IsDlgButtonChecked(hwndDlg, IDC_CHK_CONFUPLOAD) ? true : false);
+ options.delete_uploaded = (IsDlgButtonChecked(hwndDlg, IDC_CHK_DELUPLOADED) ? true : false);
+ GetDlgItemText(hwndDlg, IDC_ED_ID, options.reporter_id, 512);
+
+ SaveOptions();
+ return TRUE;
+ }
+ break;
+ case WM_DESTROY:
+ break;
+ }
+ return FALSE;
+}
+
+
+int OptInit(WPARAM wParam,LPARAM lParam)
+{
+ OPTIONSDIALOGPAGE odp = { 0 };
+#define OPTIONPAGE_OLD_SIZE2 60
+ //odp.cbSize = sizeof(odp);
+ odp.cbSize = OPTIONPAGE_OLD_SIZE2;
+ odp.position = -790000000;
+ odp.hInstance = hInst;
+ odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPTIONS);
+ odp.pszTitle = Translate(MODULE);
+ odp.pszGroup = Translate("Services");
+ odp.flags = ODPF_BOLDGROUPS;
+ odp.nIDBottomSimpleControl = 0;
+ odp.pfnDlgProc = DlgProcOpts;
+ CallService( MS_OPT_ADDPAGE, wParam,( LPARAM )&odp );
+
+ return 0;
+}
+
+void LoadOptions() {
+ options.upload = (DBGetContactSettingByte(0, MODULE, "Upload", 1) == 1);
+ options.confirm_upload = (DBGetContactSettingByte(0, MODULE, "ConfirmUpload", 1) == 1);
+ options.delete_uploaded = (DBGetContactSettingByte(0, MODULE, "DeleteUploaded", 0) == 1);
+
+ DBVARIANT dbv;
+ if(!DBGetContactSettingTString(0, MODULE, "ReporterID", &dbv)) {
+ _tcsncpy(options.reporter_id, dbv.ptszVal, 512);
+ DBFreeVariant(&dbv);
+ } else
+ options.reporter_id[0] = 0;
+}
+
+void SaveOptions() {
+ DBWriteContactSettingByte(0, MODULE, "Upload", options.upload ? 1 : 0);
+ DBWriteContactSettingByte(0, MODULE, "ConfirmUpload", options.confirm_upload ? 1 : 0);
+ DBWriteContactSettingByte(0, MODULE, "DeleteUploaded", options.delete_uploaded ? 1 : 0);
+
+ DBWriteContactSettingTString(0, MODULE, "ReporterID", options.reporter_id);
+}
+
+