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
|
#define _CRT_SECURE_NO_WARNINGS
#include <windows.h>
#include <commctrl.h>
#include <memory.h>
#include <time.h>
#include <richedit.h>
#include <stdio.h>
#include <WinSock.h>
#include <mmsystem.h>
#include "win2k.h"
#include "newpluginapi.h"
#include "m_system.h"
#include "m_database.h"
#include "m_clist.h"
#include "m_langpack.h"
#include "m_options.h"
#include "m_skin.h"
#include "m_fontservice.h"
#include "m_hotkeys.h"
#include "m_icolib.h"
#include "m_toptoolbar.h"
#include "miscutils.h"
#include "resource.h"
// {842A6668-F9DA-4968-BFD7-D2BD9DF848EE}
#define MIID_NNR {0x842a6668, 0xf9da, 0x4968, {0xbf, 0xd7, 0xd2, 0xbd, 0x9d, 0xf8, 0x48, 0xee}}
#define MODULENAME "StickyNotes"
#define SECTIONNAME "Notes & Reminders"
// normal timer interval for reminder update processing
#define REMINDER_UPDATE_INTERVAL 10000
// short timer interval for reminder updates used as long as there are pending alarams in the event queue
#define REMINDER_UPDATE_INTERVAL_SHORT 5000
// font IDs used with LoadNRFont
#define NR_FONTID_CAPTION 0
#define NR_FONTID_BODY 1
#define NR_FONTID_MAX NR_FONTID_BODY
typedef struct {
HFONT hFont;
char size;
BYTE style; // see the DBFONTF_* flags
BYTE charset;
char szFace[LF_FACESIZE];
} STICKYNOTEFONT;
typedef struct {
HWND SNHwnd,REHwnd;
BOOL Visible,OnTop;
char *data;
ULARGE_INTEGER ID; // FILETIME in UTC
char *title;
BOOL CustomTitle;
DWORD BgColor; // custom bg color override (only valid if non-zero)
DWORD FgColor; // custom fg/text color override (only valid if non-zero)
STICKYNOTEFONT *pCustomFont;// custom (body) font override (NULL if default font is used)
} STICKYNOTE;
typedef struct {
HWND handle;
BOOL RemVisible;
DWORD uid;
char *Reminder;
ULARGE_INTEGER When; // FILETIME in UTC
UINT RepeatSound;
UINT RepeatSoundTTL;
int SoundSel; // -1 if sound disabled
BOOL SystemEventQueued;
} REMINDERDATA;
extern void CreateMsgWindow(void);
extern void DestroyMsgWindow(void);
extern STICKYNOTE* NewNote(int Ax,int Ay,int Aw,int Ah,char *Data,
ULARGE_INTEGER *ID,BOOL Visible,BOOL OnTop,int scrollV);
extern void LoadNotes(BOOL bIsStartup);
extern void SaveNotes(void);
extern void DeleteNotes(void);
extern void ShowHideNotes(void);
extern void ListNotes(void);
extern void NewReminder(void);
extern void LoadReminders(void);
extern void SaveReminders(void);
extern void DeleteReminders(void);
extern void ListReminders(void);
extern BOOL CheckRemindersAndStart(void);
extern void InitSettings(void);
extern void TermSettings(void);
extern int CALLBACK DlgProcOptions(HWND hdlg,UINT message,
WPARAM wParam,LPARAM lParam);
extern void LoadNRFont(int i, LOGFONT *lf, COLORREF *colour);
extern BOOL WS_Init();
extern void WS_CleanUp();
extern LPCSTR GetDateFormatStr();
extern LPCSTR GetTimeFormatStr();
extern HINSTANCE hinstance;
extern HINSTANCE hmiranda;
extern PLUGINLINK *pluginLink;
extern BOOL g_CloseAfterAddReminder, g_UseDefaultPlaySound;
extern HICON g_hReminderIcon;
extern LOGFONT lfBody,lfCaption;
extern HFONT hBodyFont,hCaptionFont;
extern long BodyColor;
extern long CaptionFontColor,BodyFontColor;
extern BOOL g_ShowNotesAtStart,g_ShowScrollbar,g_AddContListMI,g_ShowNoteButtons;
extern int g_NoteTitleDate, g_NoteTitleTime;
extern int g_NoteWidth,g_NoteHeight;
extern int g_Transparency;
extern char *g_RemindSMS;
extern BOOL g_isWin2kPlus;
extern TCHAR *g_lpszAltBrowser;
extern int g_reminderListGeom[4];
extern int g_reminderListColGeom[2];
extern int g_notesListGeom[4];
extern int g_notesListColGeom[4];
extern HWND HKHwnd;
extern HANDLE hIconLibItem[];
// these defs are only used to emphasize that SYSTEMTIMEtoFILETIME/FILETIMEtoSYSTEMTIME only convert the data type,
// it does not apply any time conversion/correction like UTC to local etc. (if input is local, then output is local too)
#define SYSTEMTIMEtoFILETIME SystemTimeToFileTime
#define FILETIMEtoSYSTEMTIME FileTimeToSystemTime
|