summaryrefslogtreecommitdiff
path: root/plugins/StartPosition
diff options
context:
space:
mode:
authorGoraf <22941576+Goraf@users.noreply.github.com>2017-11-03 15:13:56 +0100
committerGoraf <22941576+Goraf@users.noreply.github.com>2017-11-03 15:24:23 +0100
commit1b1e6455fa79f2f6993115f9afbb506a5f93e315 (patch)
tree9077992b8390fa5eea6870a4b18ad3f2d74cce6e /plugins/StartPosition
parent60db7dc0f88ccbff13e5bc8a7fcf2f20e4905ea9 (diff)
StartPostion: use base class
* rewrite using classes * reduce globals * remove obsolete headers * code cleaning
Diffstat (limited to 'plugins/StartPosition')
-rw-r--r--plugins/StartPosition/src/main.cpp75
-rw-r--r--plugins/StartPosition/src/options.cpp54
-rw-r--r--plugins/StartPosition/src/options.h4
-rw-r--r--plugins/StartPosition/src/startposition.cpp57
-rw-r--r--plugins/StartPosition/src/startposition.h34
-rw-r--r--plugins/StartPosition/src/stdafx.cxx2
-rw-r--r--plugins/StartPosition/src/stdafx.h11
-rw-r--r--plugins/StartPosition/src/version.h2
8 files changed, 142 insertions, 97 deletions
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 <http://www.gnu.org/licenses/>.
#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<BYTE>(spOptions.clistState);
-
- if (spOptions.setClistWidth && spOptions.clistWidth > 0)
- clOptions.width = static_cast<DWORD>(spOptions.clistWidth);
- else
- spOptions.clistWidth = static_cast<DWORD>(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<DWORD>(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<StartPositionPlugin>(MODULE_NAME)
+{
+ HookPluginEvent(ME_OPT_INITIALISE, &StartPositionPlugin::OnOptionsInit);
+}
+
+void StartPositionPlugin::positionClist()
+{
+ ClistOptions clOptions;
+
+ if (spOptions.setClistStartState)
+ clOptions.state = static_cast<BYTE>(spOptions.clistState);
+
+ if (spOptions.setClistWidth && spOptions.clistWidth > 0)
+ clOptions.width = static_cast<DWORD>(spOptions.clistWidth);
+ else
+ spOptions.clistWidth = static_cast<DWORD>(clOptions.width);
+
+ if (spOptions.setTopPosition || spOptions.setBottomPosition || spOptions.setSidePosition)
+ clOptions.isDocked = false;
+
+ if (spOptions.setTopPosition)
+ clOptions.y = static_cast<DWORD>(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 <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "stdafx.h"
+
+
+class StartPositionPlugin : public PLUGIN<StartPositionPlugin>
+{
+ 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 <http://www.gnu.org/licenses/>.
*/
-#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 <http://www.gnu.org/licenses/>.
#include <windows.h>
#include <newpluginapi.h>
-#include <m_database.h>
#include <m_gui.h>
#include <m_langpack.h>
#include <m_options.h>
-#include <m_utils.h>
+#include <m_plugin.h>
#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 <stdver.h>