/* Basic History plugin Copyright (C) 2011-2012 Krzysztof Kral 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 version 2 of the License. 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, see . */ #pragma once #include "IImport.h" #include "IExport.h" struct FilterOptions { FilterOptions() :onlyIncomming(false), onlyOutgoing(false) { } FilterOptions(const std::wstring& _name) :name(_name), onlyIncomming(false), onlyOutgoing(false) { } std::wstring name; std::vector events; bool onlyIncomming; bool onlyOutgoing; }; struct TaskOptions { bool compress; bool useFtp; bool isSystem; bool active; bool forceExecute; bool showMBAfterExecute; bool exportImported; enum TaskType { Export, Delete, ExportAndDelete, Import, ImportAndMarge } type; enum EventUnit { Minute, Hour, Day } eventUnit; enum TrigerType { AtStart, AtEnd, Daily, Weekly, Monthly, DeltaMin, DeltaHour } trigerType; IExport::ExportType exportType; IImport::ImportType importType; int eventDeltaTime; int filterId; int dayTime; int dayOfWeek; int dayOfMonth; int deltaTime; int orderNr; time_t lastExport; std::wstring ftpName; std::wstring filterName; std::wstring filePath; std::wstring taskName; std::string zipPassword; // char* because zip file using ANSI password std::vector contacts; TaskOptions() { forceExecute = false; showMBAfterExecute = false; exportImported = true; type = Export; eventUnit = Hour; trigerType = AtStart; exportType = IExport::RichHtml; importType = IImport::Binary; eventDeltaTime = 0; filterId = 0; compress = true; useFtp = false; isSystem = false; active = true; dayTime = 20 * 60; dayOfWeek = 0; dayOfMonth = 1; deltaTime = 24; orderNr = 0; wchar_t buf[MAX_PATH]; if (SUCCEEDED(SHGetFolderPath(nullptr, CSIDL_PERSONAL, nullptr, SHGFP_TYPE_CURRENT, buf))) { filePath = buf; filePath += L"\\"; } filePath += TranslateT("History"); filePath += L"__."; lastExport = time(nullptr); } }; class Options { private: std::vector customFiltersTemp; public: Options(); ~Options(); static int InitOptions(WPARAM wParam, LPARAM lParam); static INT_PTR CALLBACK DlgProcOptsMain(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam); static INT_PTR CALLBACK DlgProcOptsGroupList(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam); static INT_PTR CALLBACK DlgProcOptsMessages(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam); static INT_PTR CALLBACK DlgProcOptsSearching(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam); static INT_PTR CALLBACK DlgProcOptsExport(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam); static INT_PTR CALLBACK DlgProcOptsScheduler(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam); static INT_PTR CALLBACK DlgProcOptsTask(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam); static bool FTPAvail(); static Options *instance; void Save(); void SaveTasks(std::list* tasks); void SaveTaskTime(TaskOptions& to); void Load(void); void LoadTasks(); bool showContacts, showContactGroups, noFindBorder, groupNewOnTop, groupShowEvents, groupShowTime, groupShowName, groupShowMessage; bool messagesNewOnTop, messagesShowDate, messagesShowSec, messagesShowName, messagesShowEvents, messagesUseSmileys; bool searchForInList, searchForInMess, searchMatchCase, searchMatchWhole, searchOnlyIn, searchOnlyOut, searchOnlyGroup, searchAllContacts; bool schedulerAlerts, schedulerHistoryAlerts; int groupMessageLen, groupTime, groupMessagesNumber; std::vector customFilters; int defFilter; unsigned int codepageTxt, codepageHtml1, codepageHtml2; std::wstring encodingTxt, encodingHtml1, encodingHtml2; bool exportHtml1ShowDate, exportHtml2ShowDate, exportHtml2UseSmileys; std::wstring extCssHtml2; std::vector taskOptions; std::wstring ftpLogPath; std::wstring ftpExePathDef; std::wstring ftpExePath; mir_cs criticalSection; enum Fonts { OutTimestamp = 0, InTimestamp, OutName, InName, OutMessages, InMessages, GroupList, Find, }; enum Colors { OutBackground = 0, InBackground, GroupListBackground, WindowBackground, ContactListBackground, FindBackground, }; COLORREF GetFont(Fonts fontId, PLOGFONT font); COLORREF GetColor(Colors colorId); };