summaryrefslogtreecommitdiff
path: root/plugins/StatusPlugins/StartupStatus/startupstatus.h
blob: 69cd54b39283663c52a9ded0fc0742776f5218f2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
/*
    StartupStatus Plugin for Miranda-IM (www.miranda-im.org)
    Copyright 2003-2006 P. Boon

    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; either version 2 of the License, or
    (at your option) any later version.

    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, write to the Free Software
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*/
#ifndef __STARTUPSTATUSHEADER
#define __STARTUPSTATUSHEADER

#include <windows.h>
#include <wininet.h>
#include <shlobj.h>
#include <m_options.h>
#include <m_clui.h>
#include <m_toptoolbar.h>
#include "version.h"

#define MODULENAME						"StartupStatus"

struct TSSSetting : public PROTOCOLSETTINGEX, public MZeroedObject
{
	TSSSetting( PROTOACCOUNT* pa );
	TSSSetting( int profile, PROTOACCOUNT* pa );
	~TSSSetting();
};

typedef OBJLIST<TSSSetting> TSettingsList;

struct PROFILECE
{
	int profile;
	char *szProto;
	TCHAR *msg;
};

struct PROFILEOPTIONS : public MZeroedObject
{
	__inline ~PROFILEOPTIONS()
	{
		delete ps;
		if (szName != NULL)
			mir_free(szName);
	}

	char *szName;
	TSettingsList* ps;
	BOOL showDialog;
	BOOL createTtb;
	BOOL createMmi;
	BOOL inSubMenu;
	BOOL regHotkey;
	WORD hotKey;
};

typedef struct {
	ATOM id;
	int profile;
} HKINFO;

#define UM_REINITPROFILES	WM_USER + 1
#define UM_SETPROFILE		WM_USER + 2
#define UM_SETPROTOCOL		WM_USER + 3
#define UM_SETSTATUSMSG		WM_USER + 4
#define UM_ADDPROFILE		WM_USER + 5
#define UM_DELPROFILE		WM_USER + 6
#define UM_REINITDOCKED		WM_USER + 7
#define UM_REINITWINSTATE	WM_USER + 8
#define UM_REINITWINSIZE	WM_USER + 9

#define CLUIINTM_REDRAW (WM_USER+100)

#define MODULE_CLIST					"CList"
#define MODULE_CLUI						"CLUI"
#define SETTING_STATUS					"Status"

#define SETTING_SETWINSTATE				"SetState"
#define SETTING_WINSTATE				"State"

#define SETTING_SETDOCKED				"SetDocked"
#define SETTING_DOCKED					"Docked"

#define SETTING_SHOWDIALOG				"ShowDialog"
#define SETTING_OFFLINECLOSE			"OfflineOnClose"
#define SETTING_SETPROFILE				"SetStatusOnStartup"
#define SETTING_AUTODIAL				"AutoDial"
#define SETTING_AUTOHANGUP				"AutoHangup"

#define SETTING_TOOLWINDOW				"ToolWindow"

#define SETTING_OVERRIDE				"AllowOverride"

#define SETTING_SETWINLOCATION			"SetWinLoc"
#define SETTING_XPOS					"x"
#define SETTING_YPOS					"y"

#define SETTING_SETWINSIZE				"SetWinSize"
#define SETTING_WIDTH					"Width"
#define SETTING_HEIGHT					"Height"
#define SETTING_AUTOSIZE				"AutoSize"

#define SETTING_PROFILECOUNT			"ProfileCount"
#define SETTING_DEFAULTPROFILE			"DefaultProfile"
#define SETTING_PROFILENAME				"ProfileName"
#define SETTING_CREATETTBBUTTON			"CreateTTBButton"
#define SETTING_PROFILE_STSMSG			"StatusMsg"
#define SETTING_SHOWCONFIRMDIALOG		"profile_ShowDialog"
#define SETTING_CREATEMMITEM			"CreateMMItem"
#define SETTING_INSUBMENU				"InSubMenu"
#define SETTING_REGHOTKEY				"RegHotKey"
#define SETTING_HOTKEY					"HotKey"
#define SETTING_PROFILENO				"ProfileNo"

#define SETTING_SETPROFILEDELAY			"SetStatusDelay"
#define SETTING_DLGTIMEOUT				"DialogTimeout"

#define SHORTCUT_DESC					"Miranda IM"
#define SHORTCUT_FILENAME				"\\Miranda IM.lnk"

#define DOCKED_NONE						0
#define DOCKED_LEFT						1
#define DOCKED_RIGHT					2

#define MS_SS_MENUSETPROFILEPREFIX		"StartupStatus/SetProfile_"

// options
int OptionsInit(WPARAM wparam,LPARAM lparam);
char* OptName(int i, const char* setting);

// startupstatus
int LoadMainOptions();

int CompareSettings( const TSSSetting* p1, const TSSSetting* p2 );

TSettingsList* GetCurrentProtoSettings();

// profile
int GetProfile(int profileID, TSettingsList& arSettings );
TCHAR *GetStatusMessage(int profile, char *szProto);

INT_PTR LoadAndSetProfile(WPARAM wParam, LPARAM lParam);
INT_PTR GetProfileCount(WPARAM wParam, LPARAM lParam);
INT_PTR GetProfileName(WPARAM wParam, LPARAM lParam);

extern HANDLE hTTBModuleLoadedHook;
void RemoveTopToolbarButtons();
int  CreateTopToolbarButtons(WPARAM wParam, LPARAM lParam);
void RegisterButtons();

int LoadProfileModule();
int InitProfileModule();
int DeinitProfilesModule();

#endif //__STARTUPSTATUSHEADER