root/middleware-offline/trunk/_src/eidmw/dialogs/dialogsWin32/dlgWndAskAccess.cpp @ 5

Revision 5, 9.5 KB (checked in by vsilva, 9 years ago)

Initial comit

Line 
1/* ****************************************************************************
2
3 * eID Middleware Project.
4 * Copyright (C) 2008-2009 FedICT.
5 *
6 * This is free software; you can redistribute it and/or modify it
7 * under the terms of the GNU Lesser General Public License version
8 * 3.0 as published by the Free Software Foundation.
9 *
10 * This software is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Lesser General Public License for more details.
14 *
15 * You should have received a copy of the GNU Lesser General Public
16 * License along with this software; if not, see
17 * http://www.gnu.org/licenses/.
18
19**************************************************************************** */
20
21#include "stdafx.h"
22#include "dlgWndAskAccess.h"
23#include "resource.h"
24#include "../langUtil.h"
25#include "Log.h"
26
27#define IDB_YES 1
28#define IDB_NO 2
29#define IDB_ALWAYS 3
30#define IDB_NEVER 4
31#define IDC_STATIC1 5
32#define IDC_STATIC2 6
33#define IDC_STATIC3 7
34#define IDC_STATIC4 8
35#define IDC_STATIC5 9
36#define IDC_STATIC6 10
37#define IDC_CHECK 11
38
39#define IMG_ICO_SIZE 64
40
41dlgWndAskAccess::dlgWndAskAccess( const std::wstring &AppPath, 
42                        const std::wstring &ReaderName, DlgPFOperation ulOperation, HWND Parent)
43:Win32Dialog(L"WndAskAccess")
44{
45        std::wstring Msg;
46        HFONT Font1;
47        HFONT Font2;
48        HFONT Font3;
49        HFONT Font4;
50
51        std::wstring tmpTitle = L"";
52        const wchar_t *sOperation;
53
54        tmpTitle = GETSTRING_DLG(PrivacyFilter);
55        if(!ReaderName.empty())
56        {
57                tmpTitle += L" - ";
58                tmpTitle += ReaderName;
59        }
60
61        switch(ulOperation)
62        {
63        case    DLG_PF_OP_READ_ID:
64                sOperation = GETSTRING_DLG(ReadIdentityData) ;
65                break;
66        case    DLG_PF_OP_READ_PHOTO:
67                sOperation = GETSTRING_DLG(ReadPhoto);
68                break;
69        case    DLG_PF_OP_READ_ADDRESS:
70                sOperation = GETSTRING_DLG(ReadAddressData);
71                break;
72        case    DLG_PF_OP_READ_CERTS:
73                sOperation = GETSTRING_DLG(ReadCertificates);
74                break;
75        default:
76                sOperation = GETSTRING_DLG(ReadUnknownData);
77                break;
78        }
79
80        if( CreateWnd( tmpTitle.c_str() , 420, 240, 0, Parent ) )
81        {
82                RECT clientRect;
83                GetClientRect( m_hWnd, &clientRect );
84
85                Font1 = CreateFont( 18, 0, 0, 0, FW_BOLD, 0, 0, 0,
86                                DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS,
87                                DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, L"MS Shell Dlg" );
88
89                Font2 = CreateFont( 18, 0, 0, 0, FW_DONTCARE, 0, true, 0,
90                                DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS,
91                                DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, L"MS Shell Dlg" );
92
93                Font3 = CreateFont( 18, 0, 0, 0, FW_DONTCARE, 0, 0, 0,
94                                DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS,
95                                DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, L"MS Shell Dlg" );
96
97                Font4 = CreateFont( 12, 0, 0, 0, FW_DONTCARE, 0, 0, 0,
98                                DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS,
99                                DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, L"MS Shell Dlg" );
100
101                int iTop=10;
102                int iImgColumnWidth=IMG_ICO_SIZE+16;
103
104                HWND hStaticText1 = CreateWindow( 
105                        L"STATIC", GETSTRING_DLG(AnApplicationWantsToAccessTheCard), WS_CHILD | WS_VISIBLE, 
106                        iImgColumnWidth, iTop, clientRect.right-iImgColumnWidth, 22, 
107                        m_hWnd, (HMENU)IDC_STATIC1, m_hInstance, NULL );
108                SendMessage( hStaticText1, WM_SETFONT, (WPARAM)Font1, 0 );
109                iTop+=30;
110
111                HWND hStaticText2 = CreateWindow( 
112                        L"STATIC", GETSTRING_DLG(Application), WS_CHILD | WS_VISIBLE, 
113                        iImgColumnWidth, iTop, clientRect.right-iImgColumnWidth, 22, 
114                        m_hWnd, (HMENU)IDC_STATIC2, m_hInstance, NULL );
115                SendMessage( hStaticText2, WM_SETFONT, (WPARAM)Font2, 0 );
116                iTop+=22;
117
118                HWND hStaticText3 = CreateWindow( 
119                        L"STATIC", AppPath.c_str(), WS_CHILD | WS_VISIBLE, 
120                        iImgColumnWidth, iTop, clientRect.right-iImgColumnWidth, 22, 
121                        m_hWnd, (HMENU)IDC_STATIC3, m_hInstance, NULL );
122                SendMessage( hStaticText3, WM_SETFONT, (WPARAM)Font3, 0 );
123                iTop+=30;
124
125                HWND hStaticText4 = CreateWindow( 
126                        L"STATIC", GETSTRING_DLG(Function), WS_CHILD | WS_VISIBLE, 
127                        iImgColumnWidth, iTop, clientRect.right-iImgColumnWidth, 22, 
128                        m_hWnd, (HMENU)IDC_STATIC4, m_hInstance, NULL );
129                SendMessage( hStaticText4, WM_SETFONT, (WPARAM)Font2, 0 );
130                iTop+=22;
131
132                HWND hStaticText5 = CreateWindow( 
133                        L"STATIC", sOperation, WS_CHILD | WS_VISIBLE, 
134                        iImgColumnWidth, iTop, clientRect.right-iImgColumnWidth, 22, 
135                        m_hWnd, (HMENU)IDC_STATIC5, m_hInstance, NULL );
136                SendMessage( hStaticText5, WM_SETFONT, (WPARAM)Font3, 0 );
137                iTop+=30;
138
139                HWND hStaticText6 = CreateWindow( 
140                        L"STATIC", GETSTRING_DLG(DoYouWantToAcceptIt), WS_CHILD | WS_VISIBLE, 
141                        iImgColumnWidth, iTop, clientRect.right-iImgColumnWidth, 22, 
142                        m_hWnd, (HMENU)IDC_STATIC6, m_hInstance, NULL );
143                SendMessage( hStaticText6, WM_SETFONT, (WPARAM)Font1, 0 );
144                iTop+=30;
145
146                HWND hCheckBox= CreateWindow (
147                        L"BUTTON", GETSTRING_DLG(ForAllOperations), WS_CHILD | WS_VISIBLE | BS_AUTOCHECKBOX,
148                        iImgColumnWidth, iTop, clientRect.right-iImgColumnWidth, 22, 
149                        m_hWnd, (HMENU)IDC_CHECK, m_hInstance, NULL);
150                SendMessage( hCheckBox, WM_SETFONT, (WPARAM)Font3, 0 );
151                iTop+=30;
152
153                HWND hNeverButton = CreateWindow(
154                        L"BUTTON", GETSTRING_DLG(Never), WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_TEXT, 
155                        clientRect.right - 100, iTop, 72, 24, 
156                        m_hWnd, (HMENU)IDB_NEVER, m_hInstance, NULL );
157                SendMessage( hNeverButton, WM_SETFONT, (WPARAM)Font4, 0 );
158
159                HWND hAlwaysButton = CreateWindow(
160                        L"BUTTON", GETSTRING_DLG(Always), WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_TEXT, 
161                        clientRect.right - 200, iTop, 72, 24, 
162                        m_hWnd, (HMENU)IDB_ALWAYS, m_hInstance, NULL );
163                SendMessage( hAlwaysButton, WM_SETFONT, (WPARAM)Font4, 0 );
164
165                HWND hCancelButton = CreateWindow(
166                        L"BUTTON", GETSTRING_DLG(CancelNo), WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_TEXT, 
167                        clientRect.right - 300, iTop, 72, 24, 
168                        m_hWnd, (HMENU)IDB_NO, m_hInstance, NULL );
169                SendMessage( hCancelButton, WM_SETFONT, (WPARAM)Font4, 0 );
170
171                HWND hYesButton = CreateWindow(
172                        L"BUTTON", GETSTRING_DLG(Yes), WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_DEFPUSHBUTTON, 
173                        clientRect.right - 400, iTop, 72, 24, 
174                        m_hWnd, (HMENU)IDB_YES, m_hInstance, NULL );
175                SendMessage( hYesButton, WM_SETFONT, (WPARAM)Font4, 0 );
176
177                ImageICO = LoadBitmap( m_hInstance, MAKEINTRESOURCE(IDB_ICO_QUESTION) );
178                CreateBitapMask( ImageICO, ImageICO_Mask );
179
180        }
181}
182
183dlgWndAskAccess::~dlgWndAskAccess()
184{
185        KillWindow( );
186}
187
188LRESULT dlgWndAskAccess::ProcecEvent(   UINT            uMsg,                   // Message For This Window
189                                                                        WPARAM          wParam,                 // Additional Message Information
190                                                                        LPARAM          lParam )                // Additional Message Information
191{
192        PAINTSTRUCT ps;
193        RECT rect;
194
195        switch( uMsg )
196        {
197                case WM_COMMAND:
198                {
199                        switch( LOWORD(wParam) )
200                        {
201                                case IDB_YES:
202                                        dlgResult = eIDMW::DLG_YES;
203                                        close();
204                                        return TRUE;
205
206                                case IDB_NO:
207                                        dlgResult = eIDMW::DLG_CANCEL;
208                                        close();
209                                        return TRUE;
210
211                                case IDB_ALWAYS:
212                                        dlgResult = eIDMW::DLG_ALWAYS;
213                                        close();
214                                        return TRUE;
215
216                                case IDB_NEVER:
217                                        dlgResult = eIDMW::DLG_NEVER;
218                                        close();
219                                        return TRUE;
220
221                                default:
222                                        return DefWindowProc( m_hWnd, uMsg, wParam, lParam );
223                        }
224                }
225
226
227                case WM_SIZE:
228                {
229                        MWLOG(LEV_DEBUG, MOD_DLG, L"  --> dlgWndAskAccess::ProcecEvent WM_SIZE (wParam=%X, lParam=%X)",wParam,lParam);
230
231                        if( IsIconic( m_hWnd ) )
232                                return 0;
233                        break;
234                }
235
236                case WM_PAINT:
237                {
238                        m_hDC = BeginPaint( m_hWnd, &ps );
239
240                                HDC hdcMem;
241
242                                GetClientRect( m_hWnd, &rect );
243                                rect.bottom -= 48;
244
245                                hdcMem = CreateCompatibleDC( m_hDC );
246                                SelectObject( hdcMem , ImageICO );
247
248                                MaskBlt( m_hDC, 8, 8, IMG_ICO_SIZE, IMG_ICO_SIZE,
249                                        hdcMem, 0, 0,
250                                        ImageICO_Mask, 0, 0,
251                                        MAKEROP4( SRCCOPY, 0x00AA0029 ) );
252
253                                DeleteDC(hdcMem);
254
255                        EndPaint( m_hWnd, &ps );
256
257                        SetForegroundWindow( m_hWnd );
258
259                        return 0;
260                }
261
262                case WM_NCACTIVATE:
263                {
264                        MWLOG(LEV_DEBUG, MOD_DLG, L"  --> dlgWndAskAccess::ProcecEvent WM_NCACTIVATE (wParam=%X, lParam=%X)",wParam,lParam);
265
266                        if( !IsIconic( m_hWnd ) && m_ModalHold && Active_hWnd == m_hWnd )
267                        {
268                                ShowWindow( m_hWnd, SW_SHOW );
269                                SetFocus( m_hWnd );
270                                return 0;
271                        }
272                        break;
273                }
274
275                case WM_KILLFOCUS:
276                {
277                        MWLOG(LEV_DEBUG, MOD_DLG, L"  --> dlgWndAskAccess::ProcecEvent WM_KILLFOCUS (wParam=%X, lParam=%X)",wParam,lParam);
278
279                        if( !IsIconic( m_hWnd ) && m_ModalHold && Active_hWnd == m_hWnd )
280                        {
281                                if( GetParent((HWND)wParam ) != m_hWnd )
282                                {
283                                        SetFocus( m_hWnd );
284                                        return 0;
285                                }
286                        }
287                        break;
288                }
289
290                case WM_CREATE:
291                {
292                        MWLOG(LEV_DEBUG, MOD_DLG, L"  --> dlgWndAskAccess::ProcecEvent WM_CREATE (wParam=%X, lParam=%X)",wParam,lParam);
293
294                        HMENU hSysMenu;
295
296                        hSysMenu = GetSystemMenu( m_hWnd, FALSE );
297                        EnableMenuItem( hSysMenu, 2, MF_BYPOSITION | MF_GRAYED );
298
299                        return 1;
300                }
301
302
303                case WM_CLOSE:
304                {
305                        MWLOG(LEV_DEBUG, MOD_DLG, L"  --> dlgWndAskAccess::ProcecEvent WM_CLOSE (wParam=%X, lParam=%X)",wParam,lParam);
306
307                        if( IsIconic( m_hWnd ) )
308                                return DefWindowProc( m_hWnd, uMsg, wParam, lParam );
309
310                        ShowWindow( m_hWnd, SW_MINIMIZE );
311                        return 0;
312                }
313
314                case WM_DESTROY: 
315                {
316                        MWLOG(LEV_DEBUG, MOD_DLG, L"  --> dlgWndAskAccess::ProcecEvent WM_DESTROY (wParam=%X, lParam=%X)",wParam,lParam);
317                        break;
318                }
319
320                default:
321                {
322                        return DefWindowProc( m_hWnd, uMsg, wParam, lParam );
323                }
324        }
325        return DefWindowProc( m_hWnd, uMsg, wParam, lParam );
326}
327
328bool dlgWndAskAccess::ForAllIsChecked() 
329{ 
330        return (IsDlgButtonChecked (m_hWnd, IDC_CHECK) == BST_CHECKED?true:false); 
331}
Note: See TracBrowser for help on using the browser.