diff options
Diffstat (limited to 'plugins/StartPosition/src')
| -rw-r--r-- | plugins/StartPosition/src/main.cpp | 75 | ||||
| -rw-r--r-- | plugins/StartPosition/src/options.cpp | 54 | ||||
| -rw-r--r-- | plugins/StartPosition/src/options.h | 4 | ||||
| -rw-r--r-- | plugins/StartPosition/src/startposition.cpp | 57 | ||||
| -rw-r--r-- | plugins/StartPosition/src/startposition.h | 34 | ||||
| -rw-r--r-- | plugins/StartPosition/src/stdafx.cxx | 2 | ||||
| -rw-r--r-- | plugins/StartPosition/src/stdafx.h | 11 | ||||
| -rw-r--r-- | plugins/StartPosition/src/version.h | 2 | 
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>  | 
