summaryrefslogtreecommitdiff
path: root/plugins/SendScreenshotPlus/src/UMainForm.h
blob: c56c5d7a991d8be33b8e343fe569f9fdfc7fd01c (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
/*

Miranda IM: the free IM client for Microsoft* Windows*
Copyright 2000-2009 Miranda ICQ/IM project, 

This file is part of Send Screenshot Plus, a Miranda IM plugin.
Copyright (c) 2010 Ing.U.Horn

Parts of this file based on original sorce code
(c) 2004-2006 Sérgio Vieira Rolanski (portet from Borland C++)

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 UMainFormH
#define UMainFormH
//---------------------------------------------------------------------------
#include "global.h"
#include "Utils.h"
#include "CSend.h"
#include "CSendFile.h"
#include "CSendImageShack.h"
#include "CSendHTTPServer.h"
#include "CSendFTPFile.h"
#include "CSendEmail.h"

#define SS_JUSTSAVE		0
#define SS_FILESEND		1
#define SS_EMAIL		2
#define SS_HTTPSERVER	3
#define SS_FTPFILE		4
#define SS_IMAGESHACK	5

// Used for our own cheap TrackMouseEvent
#define BUTTON_POLLDELAY    50

// User Events
#define EVT_CaptureDone		1
#define EVT_SendFileDone	2
#define EVT_CheckOpenAgain	3

extern FI_INTERFACE *FIP;

typedef struct MyTabData {
	TCITEMHEADER tcih;
	HWND hwndMain;		//main window 
	HWND hwndTab;		//tab control 
	HWND hwndTabPage;	//current child dialog box 
}TAB_INFO;

//---------------------------------------------------------------------------
class TfrmMain{

	public:
		// Deklaration Standardkonstruktor/Standarddestructor
		TfrmMain();
		~TfrmMain();

		BYTE		m_opt_tabCapture;			//capure tab page
		BYTE		m_opt_btnDesc;				//TCheckBox *chkDesc;
		BYTE		m_opt_cboxDesktop;			//TRadioButton *rbtnDesktop;
		BYTE		m_opt_chkEditor;			//TCheckBox *chkEditor;
		BYTE		m_opt_chkTimed;				//TCheckBox *chkTimed;
		BYTE		m_opt_cboxSendBy;			//TComboBox *cboxSendBy;
		bool		m_bOnExitSave;

		void		Show(){ShowWindow(m_hWnd,SW_SHOW);}
		void		Hide(){ShowWindow(m_hWnd,SW_HIDE);}
		void		Close(){SendMessage(m_hWnd,WM_CLOSE,0,0);}
		void		Init(LPTSTR DestFolder, HANDLE Contact);
		void		btnCaptureClick();
		void		cboxSendByChange();

	private:
		HWND		m_hWnd;
		HANDLE		m_hContact;
		bool		m_bSelectingWindow, m_bDeleteAfterSend;
		bool		m_bFormAbout, m_bFormEdit;
		HWND		m_hTargetWindow, m_hLastWin;
		LPTSTR		m_FDestFolder;
		LPTSTR		m_pszFile;
		LPTSTR		m_pszFileDesc;
		FIBITMAP*	m_Screenshot;				//Graphics::TBitmap *Screenshot;
		RGBQUAD		m_AlphaColor;				//
		HCURSOR		m_hCursor;
		CSend*		m_cSend;

		void		chkTimedClick();
		void		imgTargetMouseDown();
		void		imgTargetMouseUp();
		void		btnAboutClick();
		void		btnAboutOnCloseWindow(HWND hWnd);
		void		btnExploreClick();
		void		LoadOptions(void);
		void		SaveOptions(void);
		INT_PTR		SaveScreenshot(FIBITMAP* dib);
		void		FormClose();
		static void	edtSizeUpdate(HWND hWnd, BOOL ClientArea, HWND hTarget, UINT Ctrl);
		static void	edtSizeUpdate(RECT rect, HWND hTarget, UINT Ctrl);

	protected:
		size_t			m_MonitorCount;
		MONITORINFOEX*	m_Monitors;
		RECT			m_VirtualScreen;

		BYTE			m_opt_chkOpenAgain;			//TCheckBox *chkOpenAgain;
		BYTE			m_opt_chkClientArea;		//TCheckBox *chkClientArea;
		BYTE			m_opt_edtQuality;			//TLabeledEdit *edtQuality;
		BYTE			m_opt_btnDeleteAfterSend;	//TCheckBox *chkDeleteAfterSend;
		BYTE			m_opt_cboxFormat;			//TComboBox *cboxFormat;
		BYTE			m_opt_edtTimed;				//TLabeledEdit *edtTimed;
		bool			m_bCapture;					//is capture activ

		typedef std::map<HWND, TfrmMain *> CHandleMapping;
		static CHandleMapping _HandleMapping;
		static LRESULT CALLBACK DlgTfrmMain(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);

		LRESULT		wmInitdialog(WPARAM wParam, LPARAM lParam);
		LRESULT		wmCommand(WPARAM wParam, LPARAM lParam);
		LRESULT		wmClose(WPARAM wParam, LPARAM lParam);
		LRESULT		wmNotify(WPARAM wParam, LPARAM lParam);
		LRESULT		wmTimer(WPARAM wParam, LPARAM lParam);

		LRESULT		UMevent(WPARAM wParam, LPARAM lParam);
		LRESULT		UMClosing(WPARAM wParam, LPARAM lParam);
		LRESULT		UMTab1(WPARAM wParam, LPARAM lParam);

		HWND		m_hwndTab;		//TabControl handle
		HWND		m_hwndTabPage;	//TabControl activ page handle
		HIMAGELIST	m_himlTab;		//TabControl imagelist
		static INT_PTR CALLBACK DlgProc_CaptureWindow (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
		static INT_PTR CALLBACK DlgProc_CaptureDesktop(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
//		LRESULT CALLBACK DlgProc_UseLastFile   (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);

};

//---------------------------------------------------------------------------

#endif