From 1d55a15ece762c77eb0f7b4f1ccc7cb994480e92 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Fri, 9 Sep 2022 07:43:57 -0700 Subject: =?UTF-8?q?fixes=20#3186=20(SmileyAdd:=20=D0=B4=D0=BE=D0=B1=D0=B0?= =?UTF-8?q?=D0=B2=D0=B8=D1=82=D1=8C=20=D1=81=D1=81=D1=8B=D0=BB=D0=BA=D1=83?= =?UTF-8?q?=20=D0=BD=D0=B0=20=D0=B7=D0=B0=D0=BA=D0=B0=D1=87=D0=BA=D1=83=20?= =?UTF-8?q?=D1=81=D0=BC=D0=B0=D0=B9=D0=BB=D0=BE=D0=B2)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- plugins/SmileyAdd/src/options.cpp | 179 ++++++++++++++++++++++++-------------- plugins/SmileyAdd/src/resource.h | 4 +- plugins/SmileyAdd/src/version.h | 2 +- 3 files changed, 117 insertions(+), 68 deletions(-) (limited to 'plugins/SmileyAdd/src') diff --git a/plugins/SmileyAdd/src/options.cpp b/plugins/SmileyAdd/src/options.cpp index 4d07a6713f..324506dd8d 100644 --- a/plugins/SmileyAdd/src/options.cpp +++ b/plugins/SmileyAdd/src/options.cpp @@ -116,9 +116,90 @@ void OptionsType::WriteContactCategory(MCONTACT hContact, const CMStringW &cats) } ///////////////////////////////////////////////////////////////////////////////////////// -// Init and de-init functions, called from main +// Basic class for options -class COptionsDialog : public CDlgBase +class COptionsBaseDialog : public CDlgBase +{ + void OnFinish(CDlgBase*) + { + ProcessAllInputAreas(true); + CloseSmileys(); + + opt.Save(); + + NotifyEventHooks(hEvent1, 0, 0); + ProcessAllInputAreas(false); + } + +protected: + COptionsBaseDialog(int dlgId) : + CDlgBase(g_plugin, dlgId) + { + m_OnFinishWizard = Callback(this, &COptionsBaseDialog::OnFinish); + } +}; + +///////////////////////////////////////////////////////////////////////////////////////// +// General options page + +class CGeneralOptions : public COptionsBaseDialog +{ + CCtrlHyperlink linkGetMore; + +public: + CGeneralOptions() : + COptionsBaseDialog(IDD_OPT_GENERAL), + linkGetMore(this, IDC_GETMORE, "https://miranda-ng.org/tags/smileyadd/") + {} + + bool OnInitDialog() override + { + CheckDlgButton(m_hwnd, IDC_SPACES, opt.EnforceSpaces ? BST_CHECKED : BST_UNCHECKED); + CheckDlgButton(m_hwnd, IDC_SCALETOTEXTHEIGHT, opt.ScaleToTextheight ? BST_CHECKED : BST_UNCHECKED); + CheckDlgButton(m_hwnd, IDC_APPENDSPACES, opt.SurroundSmileyWithSpaces ? BST_CHECKED : BST_UNCHECKED); + CheckDlgButton(m_hwnd, IDC_SCALEALLSMILEYS, opt.ScaleAllSmileys ? BST_CHECKED : BST_UNCHECKED); + CheckDlgButton(m_hwnd, IDC_IEVIEWSTYLE, opt.IEViewStyle ? BST_CHECKED : BST_UNCHECKED); + CheckDlgButton(m_hwnd, IDC_ANIMATESEL, opt.AnimateSel ? BST_CHECKED : BST_UNCHECKED); + CheckDlgButton(m_hwnd, IDC_ANIMATEDLG, opt.AnimateDlg ? BST_CHECKED : BST_UNCHECKED); + CheckDlgButton(m_hwnd, IDC_INPUTSMILEYS, opt.InputSmileys ? BST_CHECKED : BST_UNCHECKED); + CheckDlgButton(m_hwnd, IDC_DCURSORSMILEY, opt.DCursorSmiley ? BST_CHECKED : BST_UNCHECKED); + CheckDlgButton(m_hwnd, IDC_HQSCALING, opt.HQScaling ? BST_CHECKED : BST_UNCHECKED); + CheckDlgButton(m_hwnd, IDC_SORTING_HORIZONTAL, opt.HorizontalSorting ? BST_CHECKED : BST_UNCHECKED); + + SendDlgItemMessage(m_hwnd, IDC_MAXCUSTSPIN, UDM_SETRANGE32, 0, 99); + SendDlgItemMessage(m_hwnd, IDC_MAXCUSTSPIN, UDM_SETPOS, 0, opt.MaxCustomSmileySize); + SendDlgItemMessage(m_hwnd, IDC_MAXCUSTSMSZ, EM_LIMITTEXT, 2, 0); + + SendDlgItemMessage(m_hwnd, IDC_MINSPIN, UDM_SETRANGE32, 0, 99); + SendDlgItemMessage(m_hwnd, IDC_MINSPIN, UDM_SETPOS, 0, opt.MinSmileySize); + SendDlgItemMessage(m_hwnd, IDC_MINSMSZ, EM_LIMITTEXT, 2, 0); + return true; + } + + bool OnApply() override + { + opt.EnforceSpaces = IsDlgButtonChecked(m_hwnd, IDC_SPACES) == BST_CHECKED; + opt.ScaleToTextheight = IsDlgButtonChecked(m_hwnd, IDC_SCALETOTEXTHEIGHT) == BST_CHECKED; + opt.SurroundSmileyWithSpaces = IsDlgButtonChecked(m_hwnd, IDC_APPENDSPACES) == BST_CHECKED; + opt.ScaleAllSmileys = IsDlgButtonChecked(m_hwnd, IDC_SCALEALLSMILEYS) == BST_CHECKED; + opt.IEViewStyle = IsDlgButtonChecked(m_hwnd, IDC_IEVIEWSTYLE) == BST_CHECKED; + opt.AnimateSel = IsDlgButtonChecked(m_hwnd, IDC_ANIMATESEL) == BST_CHECKED; + opt.AnimateDlg = IsDlgButtonChecked(m_hwnd, IDC_ANIMATEDLG) == BST_CHECKED; + opt.InputSmileys = IsDlgButtonChecked(m_hwnd, IDC_INPUTSMILEYS) == BST_CHECKED; + opt.DCursorSmiley = IsDlgButtonChecked(m_hwnd, IDC_DCURSORSMILEY) == BST_CHECKED; + opt.HQScaling = IsDlgButtonChecked(m_hwnd, IDC_HQSCALING) == BST_CHECKED; + opt.HorizontalSorting = IsDlgButtonChecked(m_hwnd, IDC_SORTING_HORIZONTAL) == BST_CHECKED; + + opt.MaxCustomSmileySize = GetDlgItemInt(m_hwnd, IDC_MAXCUSTSMSZ, nullptr, FALSE); + opt.MinSmileySize = GetDlgItemInt(m_hwnd, IDC_MINSMSZ, nullptr, FALSE); + return true; + } +}; + +///////////////////////////////////////////////////////////////////////////////////////// +// Categories options page + +class CGategoriesOptions : public COptionsBaseDialog { SmileyCategoryListType tmpsmcat; SmileyPackType smPack; @@ -278,8 +359,8 @@ class COptionsDialog : public CDlgBase CCtrlTreeView categories; public: - COptionsDialog() : - CDlgBase(g_plugin, IDD_OPT_SMILEYS), + CGategoriesOptions() : + COptionsBaseDialog(IDD_OPT_CATEGORIES), btnAdd(this, IDC_ADDCATEGORY), btnBrowse(this, IDC_BROWSE), btnDelete(this, IDC_DELETECATEGORY), @@ -289,16 +370,16 @@ public: categories(this, IDC_CATEGORYLIST), edtFilename(this, IDC_FILENAME) { - btnAdd.OnClick = Callback(this, &COptionsDialog::onClick_Add); - btnBrowse.OnClick = Callback(this, &COptionsDialog::onClick_Browse); - btnDelete.OnClick = Callback(this, &COptionsDialog::onClick_Delete); - btnPreview.OnClick = Callback(this, &COptionsDialog::onClick_Preview); + btnAdd.OnClick = Callback(this, &CGategoriesOptions::onClick_Add); + btnBrowse.OnClick = Callback(this, &CGategoriesOptions::onClick_Browse); + btnDelete.OnClick = Callback(this, &CGategoriesOptions::onClick_Delete); + btnPreview.OnClick = Callback(this, &CGategoriesOptions::onClick_Preview); - chkStdPack.OnChange = Callback(this, &COptionsDialog::onChange_StdPack); - chkUsePhys.OnChange = Callback(this, &COptionsDialog::onChange_UsePhys); + chkStdPack.OnChange = Callback(this, &CGategoriesOptions::onChange_StdPack); + chkUsePhys.OnChange = Callback(this, &CGategoriesOptions::onChange_UsePhys); - categories.OnSelChanged = Callback(this, &COptionsDialog::onSelectChange_Tree); - categories.OnItemChanged = Callback(this, &COptionsDialog::onChange_Filename); + categories.OnSelChanged = Callback(this, &CGategoriesOptions::onSelectChange_Tree); + categories.OnItemChanged = Callback(this, &CGategoriesOptions::onChange_Filename); } bool OnInitDialog() override @@ -307,26 +388,6 @@ public: chkUsePhys.SetState(opt.UsePhysProto); chkUsePhys.Enable(!opt.UseOneForAll); - CheckDlgButton(m_hwnd, IDC_SPACES, opt.EnforceSpaces ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton(m_hwnd, IDC_SCALETOTEXTHEIGHT, opt.ScaleToTextheight ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton(m_hwnd, IDC_APPENDSPACES, opt.SurroundSmileyWithSpaces ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton(m_hwnd, IDC_SCALEALLSMILEYS, opt.ScaleAllSmileys ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton(m_hwnd, IDC_IEVIEWSTYLE, opt.IEViewStyle ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton(m_hwnd, IDC_ANIMATESEL, opt.AnimateSel ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton(m_hwnd, IDC_ANIMATEDLG, opt.AnimateDlg ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton(m_hwnd, IDC_INPUTSMILEYS, opt.InputSmileys ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton(m_hwnd, IDC_DCURSORSMILEY, opt.DCursorSmiley ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton(m_hwnd, IDC_HQSCALING, opt.HQScaling ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton(m_hwnd, IDC_SORTING_HORIZONTAL, opt.HorizontalSorting ? BST_CHECKED : BST_UNCHECKED); - - SendDlgItemMessage(m_hwnd, IDC_MAXCUSTSPIN, UDM_SETRANGE32, 0, 99); - SendDlgItemMessage(m_hwnd, IDC_MAXCUSTSPIN, UDM_SETPOS, 0, opt.MaxCustomSmileySize); - SendDlgItemMessage(m_hwnd, IDC_MAXCUSTSMSZ, EM_LIMITTEXT, 2, 0); - - SendDlgItemMessage(m_hwnd, IDC_MINSPIN, UDM_SETRANGE32, 0, 99); - SendDlgItemMessage(m_hwnd, IDC_MINSPIN, UDM_SETPOS, 0, opt.MinSmileySize); - SendDlgItemMessage(m_hwnd, IDC_MINSMSZ, EM_LIMITTEXT, 2, 0); - // Create and populate image list HIMAGELIST hImList = ImageList_Create(GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), ILC_MASK | ILC_COLOR32, g_SmileyCategories.NumberOfSmileyCategories(), 0); @@ -354,39 +415,11 @@ public: return true; } - INT_PTR DlgProc(UINT uMsg, WPARAM wParam, LPARAM lParam) override - { - if (uMsg == WM_COMMAND && LOWORD(wParam) == IDC_FILENAME && HIWORD(wParam) == EN_KILLFOCUS) - onChange_Filename(0); - - return CDlgBase::DlgProc(uMsg, wParam, lParam); - } - bool OnApply() override { - ProcessAllInputAreas(true); - CloseSmileys(); - opt.UseOneForAll = !chkStdPack.GetState(); opt.UsePhysProto = chkUsePhys.GetState(); - - opt.EnforceSpaces = IsDlgButtonChecked(m_hwnd, IDC_SPACES) == BST_CHECKED; - opt.ScaleToTextheight = IsDlgButtonChecked(m_hwnd, IDC_SCALETOTEXTHEIGHT) == BST_CHECKED; - opt.SurroundSmileyWithSpaces = IsDlgButtonChecked(m_hwnd, IDC_APPENDSPACES) == BST_CHECKED; - opt.ScaleAllSmileys = IsDlgButtonChecked(m_hwnd, IDC_SCALEALLSMILEYS) == BST_CHECKED; - opt.IEViewStyle = IsDlgButtonChecked(m_hwnd, IDC_IEVIEWSTYLE) == BST_CHECKED; - opt.AnimateSel = IsDlgButtonChecked(m_hwnd, IDC_ANIMATESEL) == BST_CHECKED; - opt.AnimateDlg = IsDlgButtonChecked(m_hwnd, IDC_ANIMATEDLG) == BST_CHECKED; - opt.InputSmileys = IsDlgButtonChecked(m_hwnd, IDC_INPUTSMILEYS) == BST_CHECKED; - opt.DCursorSmiley = IsDlgButtonChecked(m_hwnd, IDC_DCURSORSMILEY) == BST_CHECKED; - opt.HQScaling = IsDlgButtonChecked(m_hwnd, IDC_HQSCALING) == BST_CHECKED; - opt.HorizontalSorting = IsDlgButtonChecked(m_hwnd, IDC_SORTING_HORIZONTAL) == BST_CHECKED; - - opt.MaxCustomSmileySize = GetDlgItemInt(m_hwnd, IDC_MAXCUSTSMSZ, nullptr, FALSE); - opt.MinSmileySize = GetDlgItemInt(m_hwnd, IDC_MINSMSZ, nullptr, FALSE); - - opt.Save(); - + // Cleanup database CMStringW empty; auto &smc = *g_SmileyCategories.GetSmileyCategoryList(); @@ -399,9 +432,6 @@ public: g_SmileyCategories.ClearAndLoadAll(); smPack.LoadSmileyFile(tmpsmcat.GetSmileyCategory(GetSelProto())->GetFilename(), tmpsmcat.GetSmileyCategory(GetSelProto())->GetDisplayName(), false, true); - - NotifyEventHooks(hEvent1, 0, 0); - ProcessAllInputAreas(false); return true; } @@ -411,6 +441,14 @@ public: ImageList_Destroy(hImList); } + INT_PTR DlgProc(UINT uMsg, WPARAM wParam, LPARAM lParam) override + { + if (uMsg == WM_COMMAND && LOWORD(wParam) == IDC_FILENAME && HIWORD(wParam) == EN_KILLFOCUS) + onChange_Filename(0); + + return COptionsBaseDialog::DlgProc(uMsg, wParam, lParam); + } + void onClick_Add(CCtrlButton*) { wchar_t cat[30]; @@ -490,14 +528,23 @@ public: } }; +///////////////////////////////////////////////////////////////////////////////////////// +// Module entry point + int SmileysOptionsInitialize(WPARAM addInfo, LPARAM) { OPTIONSDIALOGPAGE odp = {}; + odp.flags = ODPF_BOLDGROUPS; odp.position = 910000000; odp.szTitle.a = LPGEN("Smileys"); odp.szGroup.a = LPGEN("Customize"); - odp.pDialog = new COptionsDialog(); - odp.flags = ODPF_BOLDGROUPS; + + odp.szTab.a = LPGEN("General"); + odp.pDialog = new CGeneralOptions(); + g_plugin.addOptions(addInfo, &odp); + + odp.szTab.a = LPGEN("Categories"); + odp.pDialog = new CGategoriesOptions(); g_plugin.addOptions(addInfo, &odp); return 0; } diff --git a/plugins/SmileyAdd/src/resource.h b/plugins/SmileyAdd/src/resource.h index f3b1188d87..2d66704ce2 100644 --- a/plugins/SmileyAdd/src/resource.h +++ b/plugins/SmileyAdd/src/resource.h @@ -3,7 +3,9 @@ // Used by w:\miranda-ng\plugins\SmileyAdd\res\resource.rc // #define IDI_SMILINGICON 124 -#define IDD_OPT_SMILEYS 245 +#define IDD_OPT_GENERAL 200 +#define IDD_OPT_CATEGORIES 201 +#define IDC_GETMORE 1000 #define IDC_CATEGORYLIST 1017 #define IDC_INPUTSMILEYS 1020 #define IDC_DCURSORSMILEY 1021 diff --git a/plugins/SmileyAdd/src/version.h b/plugins/SmileyAdd/src/version.h index ac718a41a7..aaa10e3c4b 100644 --- a/plugins/SmileyAdd/src/version.h +++ b/plugins/SmileyAdd/src/version.h @@ -1,7 +1,7 @@ #define __MAJOR_VERSION 0 #define __MINOR_VERSION 3 #define __RELEASE_NUM 2 -#define __BUILD_NUM 1 +#define __BUILD_NUM 2 #include -- cgit v1.2.3