From 084abf83af60fa6ea208f89777ab6026c2ac25cb Mon Sep 17 00:00:00 2001 From: sje Date: Fri, 2 Feb 2007 14:45:38 +0000 Subject: git-svn-id: https://server.scottellis.com.au/svn/mim_plugs@108 4f64403b-2f21-0410-a795-97e2b3489a10 --- clist_classic_sje/options.c | 384 -------------------------------------------- 1 file changed, 384 deletions(-) delete mode 100644 clist_classic_sje/options.c (limited to 'clist_classic_sje/options.c') diff --git a/clist_classic_sje/options.c b/clist_classic_sje/options.c deleted file mode 100644 index 9381923..0000000 --- a/clist_classic_sje/options.c +++ /dev/null @@ -1,384 +0,0 @@ -/* - -Miranda IM: the free IM client for Microsoft* Windows* - -Copyright 2000-2003 Miranda ICQ/IM project, -all portions of this codebase are copyrighted to the people -listed in contributors.txt. - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -#include "commonheaders.h" -#include "../../include/m_utils.h" -#include "../../include/m_trigger.h" -#include "../updater/m_updater.h" - -#include - -#include "database.h" -#include "options.h" - -extern HINSTANCE g_hInst; -Options options; - - -#define SUB_DIR "\\AutoBackups" -int GetProfileDirectory(char *szPath,int cbPath) { - return CallService(MS_DB_GETPROFILEPATH, (WPARAM)cbPath, (LPARAM)szPath); -} - -int Backup(void); -int BackupService(WPARAM wParam, LPARAM lParam); -int SetBackupTimer(void); - -int LoadOptions(void) { - DBVARIANT dbv; - - options.backup_types = (BackupType)DBGetContactSettingByte(0, "db3x", "BackupType", (BYTE)(BT_EXIT | BT_PERIODIC)); - options.period = (unsigned int)DBGetContactSettingWord(0, "db3x", "Period", 1); - options.period_type = (PeriodType)DBGetContactSettingByte(0, "db3x", "PeriodType", (BYTE)PT_DAYS); - - if(!DBGetContactSetting(0, "db3x", "Folder", &dbv) && dbv.type == DBVT_ASCIIZ) { - if(strlen(dbv.pszVal) >= 2 && dbv.pszVal[1] == ':') { - strncpy(options.folder, dbv.pszVal, MAX_PATH); - } else { - GetProfileDirectory(options.folder, MAX_PATH); - strcat(options.folder, "\\"); - strcat(options.folder, dbv.pszVal); - } - DBFreeVariant(&dbv); - } else { - int len; - GetProfileDirectory(options.folder, MAX_PATH); - len = strlen(options.folder); - strncat(options.folder, SUB_DIR, MAX_PATH - len); - } - - options.num_backups = (unsigned int)DBGetContactSettingWord(0, "db3x", "NumBackups", 3); - - options.disable_progress = (BOOL)DBGetContactSettingByte(0, "db3x", "NoProgress", 0); - - SetBackupTimer(); - return 0; -} - -int SaveOptions(void) { - char prof_dir[MAX_PATH]; - int prof_len, opt_len; - - DBWriteContactSettingByte(0, "db3x", "BackupType", (BYTE)options.backup_types); - DBWriteContactSettingWord(0, "db3x", "Period", (WORD)options.period); - DBWriteContactSettingByte(0, "db3x", "PeriodType", (BYTE)options.period_type); - - GetProfileDirectory(prof_dir, MAX_PATH); - strcat(prof_dir, "\\"); - prof_len = strlen(prof_dir); - opt_len = strlen(options.folder); - - if(opt_len > prof_len && strncmp(options.folder, prof_dir, prof_len) == 0) { - DBWriteContactSettingString(0, "db3x", "Folder", (options.folder + prof_len)); - } else - DBWriteContactSettingString(0, "db3x", "Folder", options.folder); - - DBWriteContactSettingWord(0, "db3x", "NumBackups", (WORD)options.num_backups); - DBWriteContactSettingByte(0, "db3x", "NoProgress", (BYTE)options.disable_progress); - - SetBackupTimer(); - return 0; -} - -Options new_options; - -int SetDlgState(HWND hwndDlg) { - HWND hwndCtrl; - char buff[10]; - - if(new_options.backup_types == BT_DISABLED) { - CheckDlgButton(hwndDlg, IDC_RAD_DISABLED, BST_CHECKED); - hwndCtrl = GetDlgItem(hwndDlg, IDC_RAD_DISABLED); - EnableWindow(hwndCtrl, FALSE); - - CheckDlgButton(hwndDlg, IDC_RAD_START, BST_UNCHECKED); - CheckDlgButton(hwndDlg, IDC_RAD_EXIT, BST_UNCHECKED); - CheckDlgButton(hwndDlg, IDC_RAD_PERIODIC, BST_UNCHECKED); - hwndCtrl = GetDlgItem(hwndDlg, IDC_ED_PERIOD); - EnableWindow(hwndCtrl, FALSE); - hwndCtrl = GetDlgItem(hwndDlg, IDC_RAD_DAYS); - EnableWindow(hwndCtrl, FALSE); - hwndCtrl = GetDlgItem(hwndDlg, IDC_RAD_HOURS); - EnableWindow(hwndCtrl, FALSE); - } else { - hwndCtrl = GetDlgItem(hwndDlg, IDC_RAD_DISABLED); - EnableWindow(hwndCtrl, TRUE); - CheckDlgButton(hwndDlg, IDC_RAD_DISABLED, BST_UNCHECKED); - CheckDlgButton(hwndDlg, IDC_RAD_START, new_options.backup_types & BT_START ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton(hwndDlg, IDC_RAD_EXIT, new_options.backup_types & BT_EXIT ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton(hwndDlg, IDC_RAD_PERIODIC, new_options.backup_types & BT_PERIODIC ? BST_CHECKED : BST_UNCHECKED); - hwndCtrl = GetDlgItem(hwndDlg, IDC_ED_PERIOD); - EnableWindow(hwndCtrl, new_options.backup_types & BT_PERIODIC); - hwndCtrl = GetDlgItem(hwndDlg, IDC_RAD_DAYS); - EnableWindow(hwndCtrl, new_options.backup_types & BT_PERIODIC); - hwndCtrl = GetDlgItem(hwndDlg, IDC_RAD_HOURS); - EnableWindow(hwndCtrl, new_options.backup_types & BT_PERIODIC); - } - - SetDlgItemText(hwndDlg, IDC_ED_PERIOD, itoa(new_options.period, buff, 10)); - - switch(new_options.period_type) { - case PT_DAYS: - CheckDlgButton(hwndDlg, IDC_RAD_DAYS, BST_CHECKED); - CheckDlgButton(hwndDlg, IDC_RAD_HOURS, BST_UNCHECKED); - break; - case PT_HOURS: - CheckDlgButton(hwndDlg, IDC_RAD_DAYS, BST_UNCHECKED); - CheckDlgButton(hwndDlg, IDC_RAD_HOURS, BST_CHECKED); - break; - } - - SetDlgItemText(hwndDlg, IDC_ED_NUMBACKUPS, itoa(new_options.num_backups, buff, 10)); - - SetDlgItemText(hwndDlg, IDC_ED_FOLDER, new_options.folder); - - CheckDlgButton(hwndDlg, IDC_CHK_NOPROG, new_options.disable_progress ? BST_CHECKED : BST_UNCHECKED); - - return 0; -} - -BOOL CALLBACK DlgProcOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) -{ - char buff[10]; - char folder_buff[MAX_PATH]; - BROWSEINFO bi; - LPCITEMIDLIST pidl; - - switch ( msg ) { - case WM_INITDIALOG: - TranslateDialogDefault( hwndDlg ); - memcpy(&new_options, &options, sizeof(Options)); - SetDlgState(hwndDlg); - return TRUE; - case WM_COMMAND: - if ( HIWORD( wParam ) == EN_CHANGE && ( HWND )lParam == GetFocus()) { - switch( LOWORD( wParam )) { - case IDC_ED_PERIOD: - case IDC_ED_FOLDER: - case IDC_ED_NUMBACKUPS: - SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); - } - } - if ( HIWORD( wParam ) == BN_CLICKED ) { - switch( LOWORD( wParam )) { - case IDC_RAD_DISABLED: - if(IsDlgButtonChecked(hwndDlg, IDC_RAD_DISABLED)) { - new_options.backup_types = BT_DISABLED; - } - SetDlgState(hwndDlg); - SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); - break; - case IDC_RAD_START: - if(IsDlgButtonChecked(hwndDlg, IDC_RAD_START)) - new_options.backup_types |= BT_START; - else - new_options.backup_types &= ~BT_START; - SetDlgState(hwndDlg); - SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); - break; - case IDC_RAD_EXIT: - if(IsDlgButtonChecked(hwndDlg, IDC_RAD_EXIT)) - new_options.backup_types |= BT_EXIT; - else - new_options.backup_types &= ~BT_EXIT; - SetDlgState(hwndDlg); - SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); - break; - case IDC_RAD_PERIODIC: - if(IsDlgButtonChecked(hwndDlg, IDC_RAD_PERIODIC)) - new_options.backup_types |= BT_PERIODIC; - else - new_options.backup_types &= ~BT_PERIODIC; - SetDlgState(hwndDlg); - SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); - break; - case IDC_RAD_DAYS: - new_options.period_type = PT_DAYS; - SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); - break; - case IDC_RAD_HOURS: - new_options.period_type = PT_HOURS; - SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); - break; - - case IDC_BUT_BROWSE: - bi.hwndOwner = hwndDlg; - bi.pidlRoot = 0; - bi.pszDisplayName = folder_buff; - bi.lpszTitle = Translate("Select Backup Folder"); - bi.ulFlags = 0; - bi.lpfn = 0; - bi.lParam = 0; - bi.iImage = 0; - - if((pidl = SHBrowseForFolder(&bi)) != 0) { - SHGetPathFromIDList(pidl, folder_buff); - SetDlgItemText(hwndDlg, IDC_ED_FOLDER, folder_buff); - SendMessage( GetParent( hwndDlg ), PSM_CHANGED, 0, 0 ); - - CoTaskMemFree((void *)pidl); - } - break; - case IDC_BUT_NOW: - Backup(); - break; - case IDC_CHK_NOPROG: - new_options.disable_progress = IsDlgButtonChecked(hwndDlg, IDC_CHK_NOPROG); - SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); - break; - } - } - - break; - case WM_NOTIFY: - if (((LPNMHDR)lParam)->code == PSN_APPLY ) { - GetDlgItemText(hwndDlg, IDC_ED_PERIOD, buff, sizeof(buff)); - new_options.period = atoi(buff); - GetDlgItemText(hwndDlg, IDC_ED_NUMBACKUPS, buff, sizeof(buff)); - new_options.num_backups = atoi(buff); - GetDlgItemText(hwndDlg, IDC_ED_FOLDER, folder_buff, MAX_PATH); - - { - BOOL folder_ok = TRUE; - if(!CreateDirectory(folder_buff, 0)) { - DWORD err = GetLastError(); - if(err != ERROR_ALREADY_EXISTS) { - char msg_buff[512]; - FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, 0, err, 0, msg_buff, 512, 0); - MessageBox(0, msg_buff, Translate("Error Creating Backup Folder"), MB_OK | MB_ICONERROR); - folder_ok = FALSE; - } - } - - if(folder_ok) { - strncpy(new_options.folder, folder_buff, MAX_PATH); - memcpy(&options, &new_options, sizeof(Options)); - SaveOptions(); - } else { - memcpy(&new_options, &options, sizeof(Options)); - SetDlgState(hwndDlg); - } - } - return TRUE; - - } - 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 = g_hInst; - odp.pszTemplate = MAKEINTRESOURCE(IDD_OPTIONS); - odp.pszTitle = Translate("Database Backups"); - odp.pszGroup = Translate("Services"); - odp.flags = ODPF_BOLDGROUPS; - odp.nIDBottomSimpleControl = 0; - odp.pfnDlgProc = DlgProcOpts; - CallService( MS_OPT_ADDPAGE, wParam,( LPARAM )&odp ); - - return 0; -} - -int ModulesLoaded(WPARAM wParam, LPARAM lParam) { - CLISTMENUITEM menu; - - HookEvent(ME_OPT_INITIALISE, OptInit); - - ZeroMemory(&menu,sizeof(menu)); - menu.cbSize=sizeof(menu); - menu.flags = CMIM_ALL; - - menu.hIcon=LoadIcon(g_hInst, MAKEINTRESOURCE(IDI_MENU)); - - // main menu item - menu.pszName = (char *)Translate("Backup Profile"); - menu.pszService = MS_DB_BACKUP; - menu.position = 500100000; - CallService(MS_CLIST_ADDMAINMENUITEM,0,(LPARAM)&menu); - - // register trigger action for triggerplugin - if(ServiceExists(MS_TRIGGER_REGISTERACTION)) { - // create update action for triggerplugin - ACTIONREGISTER ar = {0}; - ar.cbSize = sizeof(ACTIONREGISTER); - ar.pszName = Translate("Backup Database"); - ar.pszService = MS_DB_BACKUPTRGR; - - CallService(MS_TRIGGER_REGISTERACTION, 0, (LPARAM)&ar); - } - - - return 0; -} - -// can't do this on unload, since other plugins will be have already been unloaded, but their hooks -// for setting changed event not cleared. the backup on exit function will write to the db, calling those hooks. -int PreShutdown(WPARAM wParam, LPARAM lParam) { - if(options.backup_types & BT_EXIT) - Backup(); - - return 0; -} - -int BackupServiceTrgr(WPARAM wParam, LPARAM lParam) { - if(wParam & ACT_PERFORM) { - return CallService(MS_DB_BACKUP, 0, 0); - } - return 0; -} - -int InitOptions(void) { - - OleInitialize(0); - - CreateServiceFunction(MS_DB_BACKUP, BackupService); - CreateServiceFunction(MS_DB_BACKUPTRGR, BackupServiceTrgr); - - // we have to wait for the options module to load! - HookEvent(ME_SYSTEM_MODULESLOADED, ModulesLoaded); - - HookEvent(ME_SYSTEM_PRESHUTDOWN, PreShutdown); - - // but, our stuff has loaded so... - LoadOptions(); - - if(options.backup_types & BT_START) - Backup(); - - return 0; -} - -int UninitOptions(void) { - - OleUninitialize(); - - return 0; -} - -- cgit v1.2.3