From 1b1e6455fa79f2f6993115f9afbb506a5f93e315 Mon Sep 17 00:00:00 2001 From: Goraf <22941576+Goraf@users.noreply.github.com> Date: Fri, 3 Nov 2017 15:13:56 +0100 Subject: StartPostion: use base class * rewrite using classes * reduce globals * remove obsolete headers * code cleaning --- plugins/StartPosition/src/main.cpp | 75 +++++++++-------------------- plugins/StartPosition/src/options.cpp | 54 ++++++++------------- plugins/StartPosition/src/options.h | 4 +- plugins/StartPosition/src/startposition.cpp | 57 ++++++++++++++++++++++ plugins/StartPosition/src/startposition.h | 34 +++++++++++++ plugins/StartPosition/src/stdafx.cxx | 2 +- plugins/StartPosition/src/stdafx.h | 11 ++--- plugins/StartPosition/src/version.h | 2 +- 8 files changed, 142 insertions(+), 97 deletions(-) create mode 100644 plugins/StartPosition/src/startposition.cpp create mode 100644 plugins/StartPosition/src/startposition.h diff --git a/plugins/StartPosition/src/main.cpp b/plugins/StartPosition/src/main.cpp index 8965ccffdb..1302faac10 100644 --- a/plugins/StartPosition/src/main.cpp +++ b/plugins/StartPosition/src/main.cpp @@ -23,77 +23,50 @@ along with this program. If not, see . #include "stdafx.h" + HINSTANCE g_hInst; int hLangpack; -StartPositionOptions spOptions; -ClistOptions clOptions; +StartPositionPlugin* startposition; PLUGININFOEX pluginInfo = { - sizeof(PLUGININFOEX), - __PLUGIN_NAME, - PLUGIN_MAKE_VERSION(__MAJOR_VERSION, __MINOR_VERSION, __RELEASE_NUM, __BUILD_NUM), - __DESCRIPTION, - __AUTHOR, - __AUTHOREMAIL, - __COPYRIGHT, - __AUTHORWEB, - UNICODE_AWARE, - // {211F6277-6F9B-4B77-A939-84D04B26B38C} - {0x211f6277, 0x6f9b, 0x4b77, {0xa9, 0x39, 0x84, 0xd0, 0x4b, 0x26, 0xb3, 0x8c}} + sizeof(PLUGININFOEX), + __PLUGIN_NAME, + PLUGIN_MAKE_VERSION(__MAJOR_VERSION, __MINOR_VERSION, __RELEASE_NUM, __BUILD_NUM), + __DESCRIPTION, + __AUTHOR, + __AUTHOREMAIL, + __COPYRIGHT, + __AUTHORWEB, + UNICODE_AWARE, + // {211F6277-6F9B-4B77-A939-84D04B26B38C} + {0x211f6277, 0x6f9b, 0x4b77, {0xa9, 0x39, 0x84, 0xd0, 0x4b, 0x26, 0xb3, 0x8c}} }; BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD, LPVOID) { - g_hInst = hinstDLL; - return TRUE; + g_hInst = hinstDLL; + return TRUE; } extern "C" __declspec(dllexport) PLUGININFOEX* MirandaPluginInfoEx(DWORD) { - return &pluginInfo; + return &pluginInfo; } extern "C" __declspec(dllexport) int Load(void) { - mir_getLP(&pluginInfo); - - RECT WorkArea; - SystemParametersInfo(SPI_GETWORKAREA, 0, &WorkArea, 0); - - if (spOptions.setClistStartState) - clOptions.state = static_cast(spOptions.clistState); - - if (spOptions.setClistWidth && spOptions.clistWidth > 0) - clOptions.width = static_cast(spOptions.clistWidth); - else - spOptions.clistWidth = static_cast(clOptions.width); - - if (spOptions.setTopPosition || spOptions.setBottomPosition || spOptions.setSidePosition) - clOptions.isDocked = false; + mir_getLP(&pluginInfo); + startposition = new StartPositionPlugin; - if (spOptions.setTopPosition) - clOptions.y = static_cast(spOptions.pixelsFromTop); + startposition->positionClist(); - if (spOptions.setBottomPosition) { - if (spOptions.setTopPosition) - clOptions.height = WorkArea.bottom - WorkArea.top - spOptions.pixelsFromTop - spOptions.pixelsFromBottom; - else - clOptions.y = WorkArea.bottom - spOptions.pixelsFromBottom - clOptions.height; - } - - if (spOptions.setSidePosition) { - if (spOptions.clistAlign == ClistAlign::right) - clOptions.x = WorkArea.right - spOptions.clistWidth - spOptions.pixelsFromSide; - else - clOptions.x = WorkArea.left + spOptions.pixelsFromSide; - } - - HookEvent(ME_OPT_INITIALISE, OptInitialise); - - return 0; + return 0; } extern "C" __declspec(dllexport) int Unload(void) { - return 0; + delete startposition; + startposition = nullptr; + + return 0; } diff --git a/plugins/StartPosition/src/options.cpp b/plugins/StartPosition/src/options.cpp index 66dc633ea9..da33fc6ef3 100644 --- a/plugins/StartPosition/src/options.cpp +++ b/plugins/StartPosition/src/options.cpp @@ -15,10 +15,9 @@ StartPositionOptions::StartPositionOptions() : clistWidth(MODULE_NAME, "CLWidth", 180) {} -extern StartPositionOptions spOptions; - -COptionsDlg::COptionsDlg() : +COptionsDlg::COptionsDlg(StartPositionPlugin* instance) : CPluginDlgBase(g_hInst, IDD_OPTIONS, MODULE_NAME), + m_plugin(instance), chkPositionTop(this, IDC_CLTOPENABLE), edtPositionTop(this, IDC_CLTOP), chkPositionBottom(this, IDC_CLBOTTOMENABLE), @@ -33,16 +32,16 @@ COptionsDlg::COptionsDlg() : chkStartHidden(this, IDC_CLSTATETRAY), chkStartNormal(this, IDC_CLSTATEOPENED) { - CreateLink(chkPositionTop, spOptions.setTopPosition); - CreateLink(chkPositionBottom, spOptions.setBottomPosition); - CreateLink(chkPositionSide, spOptions.setSidePosition); - CreateLink(chkWidth, spOptions.setClistWidth); - CreateLink(chkStartState, spOptions.setClistStartState); + CreateLink(chkPositionTop, m_plugin->spOptions.setTopPosition); + CreateLink(chkPositionBottom, m_plugin->spOptions.setBottomPosition); + CreateLink(chkPositionSide, m_plugin->spOptions.setSidePosition); + CreateLink(chkWidth, m_plugin->spOptions.setClistWidth); + CreateLink(chkStartState, m_plugin->spOptions.setClistStartState); - CreateLink(edtPositionTop, spOptions.pixelsFromTop); - CreateLink(edtPositionBottom, spOptions.pixelsFromBottom); - CreateLink(edtPositionSide, spOptions.pixelsFromSide); - CreateLink(edtWidth, spOptions.clistWidth); + CreateLink(edtPositionTop, m_plugin->spOptions.pixelsFromTop); + CreateLink(edtPositionBottom, m_plugin->spOptions.pixelsFromBottom); + CreateLink(edtPositionSide, m_plugin->spOptions.pixelsFromSide); + CreateLink(edtWidth, m_plugin->spOptions.clistWidth); chkPositionTop.OnChange = Callback(this, &COptionsDlg::onCheck_PositionTop); chkPositionBottom.OnChange = Callback(this, &COptionsDlg::onCheck_PositionBottom); @@ -53,7 +52,7 @@ COptionsDlg::COptionsDlg() : void COptionsDlg::OnInitDialog() { - if (spOptions.clistState == ClistState::normal) + if (m_plugin->spOptions.clistState == ClistState::normal) chkStartNormal.SetState(true); else chkStartHidden.SetState(true); @@ -61,7 +60,7 @@ void COptionsDlg::OnInitDialog() chkStartHidden.Enable(chkStartState.GetState()); chkStartNormal.Enable(chkStartState.GetState()); - if (spOptions.clistAlign == ClistAlign::right) + if (m_plugin->spOptions.clistAlign == ClistAlign::right) chkFromRight.SetState(true); else chkFromLeft.SetState(true); @@ -80,23 +79,20 @@ void COptionsDlg::OnApply() removeOldSettings(); if (chkStartNormal.GetState()) - spOptions.clistState = ClistState::normal; + m_plugin->spOptions.clistState = ClistState::normal; else - spOptions.clistState = ClistState::hidden; + m_plugin->spOptions.clistState = ClistState::hidden; if (chkFromRight.GetState()) - spOptions.clistAlign = ClistAlign::right; + m_plugin->spOptions.clistAlign = ClistAlign::right; else - spOptions.clistAlign = ClistAlign::left; + m_plugin->spOptions.clistAlign = ClistAlign::left; } void COptionsDlg::removeOldSettings() { - if (db_get_b(0, MODULE_NAME, "CLEnableTop", dbERROR) == dbERROR) - { - db_unset(0, MODULE_NAME, "CLEnable"); - db_unset(0, MODULE_NAME, "CLuseLastWidth"); - } + m_plugin->delSetting("CLEnable"); + m_plugin->delSetting("CLuseLastWidth"); } void COptionsDlg::onCheck_PositionTop(CCtrlCheck*) @@ -126,15 +122,3 @@ void COptionsDlg::onCheck_StartState(CCtrlCheck*) chkStartHidden.Enable(chkStartState.GetState()); chkStartNormal.Enable(chkStartState.GetState()); } - -int OptInitialise(WPARAM wParam, LPARAM) -{ - OPTIONSDIALOGPAGE odp = {}; - odp.hInstance = g_hInst; - odp.szGroup.a = LPGEN("Contact list"); - odp.szTitle.a = LPGEN("Start position"); - odp.pDialog = new COptionsDlg; - odp.flags = ODPF_BOLDGROUPS; - Options_AddPage(wParam, &odp); - return 0; -} diff --git a/plugins/StartPosition/src/options.h b/plugins/StartPosition/src/options.h index 8066cddbf7..43d4a1d678 100644 --- a/plugins/StartPosition/src/options.h +++ b/plugins/StartPosition/src/options.h @@ -77,7 +77,7 @@ class COptionsDlg : public CPluginDlgBase CCtrlCheck chkStartState, chkStartHidden, chkStartNormal; public: - COptionsDlg(); + COptionsDlg(StartPositionPlugin* instance); virtual void OnInitDialog() override; virtual void OnApply() override; @@ -90,4 +90,6 @@ private: void onCheck_PositionSide(CCtrlCheck*); void onCheck_Width(CCtrlCheck*); void onCheck_StartState(CCtrlCheck*); + + StartPositionPlugin* m_plugin; }; diff --git a/plugins/StartPosition/src/startposition.cpp b/plugins/StartPosition/src/startposition.cpp new file mode 100644 index 0000000000..3f661f9f96 --- /dev/null +++ b/plugins/StartPosition/src/startposition.cpp @@ -0,0 +1,57 @@ +#include "stdafx.h" + + +StartPositionPlugin::StartPositionPlugin() : + PLUGIN(MODULE_NAME) +{ + HookPluginEvent(ME_OPT_INITIALISE, &StartPositionPlugin::OnOptionsInit); +} + +void StartPositionPlugin::positionClist() +{ + ClistOptions clOptions; + + if (spOptions.setClistStartState) + clOptions.state = static_cast(spOptions.clistState); + + if (spOptions.setClistWidth && spOptions.clistWidth > 0) + clOptions.width = static_cast(spOptions.clistWidth); + else + spOptions.clistWidth = static_cast(clOptions.width); + + if (spOptions.setTopPosition || spOptions.setBottomPosition || spOptions.setSidePosition) + clOptions.isDocked = false; + + if (spOptions.setTopPosition) + clOptions.y = static_cast(spOptions.pixelsFromTop); + + RECT WorkArea; + SystemParametersInfo(SPI_GETWORKAREA, 0, &WorkArea, 0); + + if (spOptions.setBottomPosition) { + if (spOptions.setTopPosition) + clOptions.height = WorkArea.bottom - WorkArea.top - spOptions.pixelsFromTop - spOptions.pixelsFromBottom; + else + clOptions.y = WorkArea.bottom - spOptions.pixelsFromBottom - clOptions.height; + } + + if (spOptions.setSidePosition) { + if (spOptions.clistAlign == ClistAlign::right) + clOptions.x = WorkArea.right - spOptions.clistWidth - spOptions.pixelsFromSide; + else + clOptions.x = WorkArea.left + spOptions.pixelsFromSide; + } +} + +int StartPositionPlugin::OnOptionsInit(WPARAM wParam, LPARAM) +{ + OPTIONSDIALOGPAGE odp = {}; + odp.hInstance = g_hInst; + odp.szGroup.a = LPGEN("Contact list"); + odp.szTitle.a = LPGEN("Start position"); + odp.pDialog = new COptionsDlg(this); + odp.flags = ODPF_BOLDGROUPS; + Options_AddPage(wParam, &odp); + + return 0; +} diff --git a/plugins/StartPosition/src/startposition.h b/plugins/StartPosition/src/startposition.h new file mode 100644 index 0000000000..85453eacb2 --- /dev/null +++ b/plugins/StartPosition/src/startposition.h @@ -0,0 +1,34 @@ +/* +Copyright (C) 2012-17 Miranda NG project (https://miranda-ng.org) + +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 "stdafx.h" + + +class StartPositionPlugin : public PLUGIN +{ + friend COptionsDlg; + +public: + StartPositionPlugin(); + + int __cdecl OnOptionsInit(WPARAM, LPARAM); + void positionClist(); + + StartPositionOptions spOptions; +}; diff --git a/plugins/StartPosition/src/stdafx.cxx b/plugins/StartPosition/src/stdafx.cxx index b05ed73bc5..e0372ed6dc 100644 --- a/plugins/StartPosition/src/stdafx.cxx +++ b/plugins/StartPosition/src/stdafx.cxx @@ -15,4 +15,4 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -#include "stdafx.h" \ No newline at end of file +#include "stdafx.h" diff --git a/plugins/StartPosition/src/stdafx.h b/plugins/StartPosition/src/stdafx.h index 27bef6bf2c..7b79fb2734 100644 --- a/plugins/StartPosition/src/stdafx.h +++ b/plugins/StartPosition/src/stdafx.h @@ -25,11 +25,10 @@ along with this program. If not, see . #include #include -#include #include #include #include -#include +#include #include "resource.h" #include "version.h" @@ -39,10 +38,6 @@ extern HINSTANCE g_hInst; #define MODULE_NAME "StartPosition" #define CLIST_MODULE_NAME "CList" -#define dbERROR -999999 -#define RIGHT 1 -#define LEFT 0 - +class StartPositionPlugin; #include "options.h" - -extern int OptInitialise(WPARAM wParam, LPARAM); +#include "startposition.h" diff --git a/plugins/StartPosition/src/version.h b/plugins/StartPosition/src/version.h index 4fd0f5a272..9adb18869b 100644 --- a/plugins/StartPosition/src/version.h +++ b/plugins/StartPosition/src/version.h @@ -1,7 +1,7 @@ #define __MAJOR_VERSION 0 #define __MINOR_VERSION 3 #define __RELEASE_NUM 0 -#define __BUILD_NUM 3 +#define __BUILD_NUM 4 #include -- cgit v1.2.3