source: trunk/Erasext/ConfirmDialog.cpp @ 23

Revision 23, 6.3 KB checked in by lowjoel, 7 years ago (diff)

Move all third-party code to the Shared and EraserUI folders. EraserUI contains UI-specific controls and other miscellany, Shared contains code helper classes.
EXCEPTION: DropTargetWnd?, OleTreeCtrl? and ShellTree? are elft in the root, because they have been modified quite extensively.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
Line 
1// ConfirmDialog.cpp
2//
3// Eraser. Secure data removal. For Windows.
4// Copyright © 1997-2001  Sami Tolvanen (sami@tolvanen.com).
5//
6// This program is free software; you can redistribute it and/or
7// modify it under the terms of the GNU General Public License
8// as published by the Free Software Foundation; either version 2
9// of the License, or (at your option) any later version.
10//
11// This program is distributed in the hope that it will be useful,
12// but WITHOUT ANY WARRANTY; without even the implied warranty of
13// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14// GNU General Public License for more details.
15//
16// You should have received a copy of the GNU General Public License
17// along with this program; if not, write to the Free Software
18// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
19// 02111-1307, USA.
20
21#include "stdafx.h"
22#include "erasext.h"
23#include "..\EraserDll\eraserdll.h"
24#include "..\EraserUI\FitFileNameToScrn.h"
25#include "ConfirmDialog.h"
26
27#ifdef _DEBUG
28#define new DEBUG_NEW
29#undef THIS_FILE
30static char THIS_FILE[] = __FILE__;
31#endif
32
33/////////////////////////////////////////////////////////////////////////////
34// CConfirmDialog dialog
35
36
37CConfirmDialog::CConfirmDialog(CWnd* pParent /*=NULL*/) :
38CDialog(CConfirmDialog::IDD, pParent),
39m_bSingleFile(FALSE),
40m_bUseFiles(TRUE),
41m_bMove(FALSE),
42m_hAccel(NULL)
43{
44    //{{AFX_DATA_INIT(CConfirmDialog)
45    m_strLineOne = _T("");
46    m_strLineTwo = _T("");
47    //}}AFX_DATA_INIT
48}
49
50
51void CConfirmDialog::DoDataExchange(CDataExchange* pDX)
52{
53    CDialog::DoDataExchange(pDX);
54    //{{AFX_DATA_MAP(CConfirmDialog)
55    DDX_Text(pDX, IDC_STATIC_LINEONE, m_strLineOne);
56    DDX_Text(pDX, IDC_STATIC_LINETWO, m_strLineTwo);
57    //}}AFX_DATA_MAP
58}
59
60
61BEGIN_MESSAGE_MAP(CConfirmDialog, CDialog)
62    //{{AFX_MSG_MAP(CConfirmDialog)
63    ON_BN_CLICKED(IDOPTIONS, OnOptions)
64    ON_BN_CLICKED(IDOK, OnYes)
65    //}}AFX_MSG_MAP
66END_MESSAGE_MAP()
67
68/////////////////////////////////////////////////////////////////////////////
69// CConfirmDialog message handlers
70
71
72BOOL CConfirmDialog::OnInitDialog()
73{
74    try
75    {
76        if (!m_bMove)
77            m_strLineOne.LoadString(IDS_CONFIRM);
78        else
79        {
80            CString strTitle;
81
82            strTitle.LoadString(IDS_MOVE_TITLE);
83            m_strLineOne.LoadString(IDS_CONFIRM_MOVE);
84
85            SetWindowText(strTitle);
86        }
87
88        CWnd  *pWnd = GetDlgItem(IDC_STATIC_LINEONE);
89        CWnd  *pWnd2 = GetDlgItem(IDC_STATIC_LINETWO);
90        CRect rectWnd;
91        CSize sizeText;
92        int   iSaved;
93
94        // create a context for the window
95        CClientDC dc(pWnd);
96        iSaved = dc.SaveDC();
97
98        // select the used font
99        dc.SelectObject(pWnd->GetFont());
100
101        if (m_bSingleFile)
102        {
103            if (!m_bMove)
104            {
105                // the width required to display the whole string
106                sizeText = dc.GetTextExtent(m_strLineOne + "\'" + m_strData + "\'?");
107
108                // the width of the window
109                pWnd->GetClientRect(&rectWnd);
110
111                if (rectWnd.Width() >= sizeText.cx)
112                    m_strLineOne += "\'" + m_strData + "\'?";
113                else
114                {
115                    fitFileNameToScrn(pWnd2, m_strData, "\'", "\'?");
116                    m_strLineTwo = "\'" + m_strData + "\'?";
117                }
118            }
119            else
120            {
121                CString strTo;
122                strTo.LoadString(IDS_CONFIRM_MOVE_FILE);
123
124                // the width required to display the whole string
125                sizeText = dc.GetTextExtent(m_strLineOne + "\'" + m_strData + "\' " + strTo);
126
127                // the width of the window
128                pWnd->GetClientRect(&rectWnd);
129
130                if (rectWnd.Width() >= sizeText.cx)
131                {
132                    m_strLineOne += "\'" + m_strData + "\' " + strTo;
133
134                    sizeText = dc.GetTextExtent(m_strLineOne + " \'" + m_strTarget + "\'?");
135
136                    if (rectWnd.Width() >= sizeText.cx)
137                        m_strLineOne += " \'" + m_strTarget + "\'?";
138                    else
139                    {
140                        fitFileNameToScrn(pWnd2, m_strTarget, "\'", "\'?");
141                        m_strLineTwo = "\'" + m_strTarget + "\'?";
142                    }
143                }
144                else
145                {
146                    fitFileNameToScrn(pWnd, m_strData, m_strLineOne + "\'", "\'");
147                    m_strLineOne += "\'" + m_strData + "\'";
148
149                    fitFileNameToScrn(pWnd2, m_strTarget, strTo + " \'", "\'?");
150                    m_strLineTwo = strTo + " \'" + m_strTarget + "\'?";
151                }
152            }
153        }
154        else
155        {
156            m_strLineOne += m_strData;
157
158            if (m_bMove)
159            {
160                // the width required to display the whole string
161                sizeText = dc.GetTextExtent(m_strLineOne + "\'" + m_strTarget + "\'?");
162
163                // the width of the window
164                pWnd->GetClientRect(&rectWnd);
165
166                if (rectWnd.Width() >= sizeText.cx)
167                {
168                    m_strLineOne += "\'" + m_strTarget + "\'?";
169                }
170                else
171                {
172                    fitFileNameToScrn(pWnd2, m_strTarget, "\'", "\'?");
173                    m_strLineTwo = "\'" + m_strTarget + "\'?";
174                }
175            }
176        }
177
178        dc.RestoreDC(iSaved);
179
180        CDialog::OnInitDialog();
181
182        m_hAccel = LoadAccelerators(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDR_ACCELERATOR_CONFIRM));
183    }
184    catch (CException *e)
185    {
186        ASSERT(FALSE);
187
188        e->ReportError(MB_ICONERROR);
189        e->Delete();
190    }
191    catch (...)
192    {
193        ASSERT(FALSE);
194    }
195
196    return TRUE;  // return TRUE unless you set the focus to a control
197                  // EXCEPTION: OCX Property Pages should return FALSE
198}
199
200BOOL CConfirmDialog::PreTranslateMessage(MSG* pMsg)
201{
202    if (TranslateAccelerator(GetSafeHwnd(), m_hAccel, pMsg))
203        return TRUE;
204
205    return CDialog::PreTranslateMessage(pMsg);
206}
207
208void CConfirmDialog::OnOptions()
209{
210    if (m_bUseFiles)
211        eraserShowOptions(GetSafeHwnd(), ERASER_PAGE_FILES);
212    else
213        eraserShowOptions(GetSafeHwnd(), ERASER_PAGE_DRIVE);
214}
215
216void CConfirmDialog::OnYes()
217{
218    CDialog::OnOK();
219}
220
221void CConfirmDialog::OnCancel()
222{
223    CDialog::OnCancel();
224}
Note: See TracBrowser for help on using the repository browser.