source: trunk/Item.h @ 47

Revision 47, 7.2 KB checked in by lowjoel, 7 years ago (diff)

Removed the Erase Files in Mask option.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
Line 
1// Item.h
2// $Id$
3//
4// Eraser. Secure data removal. For Windows.
5// Copyright © 1997-2001  Sami Tolvanen (sami@tolvanen.com).
6//
7// This program is free software; you can redistribute it and/or
8// modify it under the terms of the GNU General Public License
9// as published by the Free Software Foundation; either version 2
10// of the License, or (at your option) any later version.
11//
12// This program is distributed in the hope that it will be useful,
13// but WITHOUT ANY WARRANTY; without even the implied warranty of
14// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15// GNU General Public License for more details.
16//
17// You should have received a copy of the GNU General Public License
18// along with this program; if not, write to the Free Software
19// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
20// 02111-1307, USA.
21
22#if !defined(AFX_ITEM_H__44195821_F0FC_11D2_BBF3_00105AAF62C4__INCLUDED_)
23#define AFX_ITEM_H__44195821_F0FC_11D2_BBF3_00105AAF62C4__INCLUDED_
24
25#if _MSC_VER > 1000
26#pragma once
27#endif // _MSC_VER > 1000
28
29#include "EraserDll\EraserDll.h"
30
31
32// should older file formats be supported?
33#define SCHEDULER_IMPORT_COMPATIBLE
34
35// task version information
36#define ITEMVERSION     7   // Eraser 7.1 -
37#define ITEMVERSION_41  6   // Eraser 4.1 -
38#define ITEMVERSION_40  5   // Eraser 3.5 - 4.0
39#define ITEMVERSION_30  4   // Eraser 3.0
40#define ITEMVERSION_21  3   // Eraser Scheduler 2.1
41
42// ítem IDs (Eraser 3.0 -)
43#define ITEM_ID         0   // On-Demand
44#define SCHEDULE_ID     1   // Scheduler
45
46// data type
47enum Type
48{
49    Drive,
50    Folder,
51    File
52};
53
54// schedule IDs
55enum Schedule
56{
57    Day,
58    Sunday,     // 1
59    Monday,
60    Tuesday,
61    Wednesday,
62    Thursday,
63    Friday,
64    Saturday,    // 7
65    Reboot
66};
67
68// schedule names
69const LPCTSTR szScheduleName[] =
70{
71    "Day",
72    "Sunday",
73    "Monday",
74    "Tuesday",
75    "Wednesday",
76    "Thursday",
77    "Friday",
78    "Saturday",
79    "Reboot"
80};
81
82// helper for scheduler task statistics
83
84class CTaskStatistics
85{
86public:
87    CTaskStatistics()           { Reset(); }
88
89    void Reset()
90    {
91        m_dwAveArea             = 0;
92        m_dwAveWritten          = 0;
93        m_dwAveTime             = 0;
94        m_dwTimes               = 0;
95        m_dwTimesInterrupted    = 0;
96        m_dwTimesSuccess        = 0;
97    };
98
99    void    Serialize(CArchive&);
100
101    DWORD   m_dwAveArea;
102    DWORD   m_dwAveWritten;
103    DWORD   m_dwAveTime;
104
105    DWORD   m_dwTimes;
106    DWORD   m_dwTimesInterrupted;
107    DWORD   m_dwTimesSuccess;
108
109};
110
111typedef CTaskStatistics TASKSTATISTICS, *LPTASKSTATISTICS;
112
113// the On-Demand item
114class CItem
115{
116public:
117    CItem();
118    CItem(const CItem&);
119    virtual ~CItem();
120
121    CItem&  operator=(const CItem&);
122
123    BOOL    SetFolder(const CString& str);
124    BOOL    SetDrive(const CString&);
125    BOOL    SetFile(const CString&);
126
127    CString GetData() const                    { return m_strData; }
128    void    GetData(CString& str) const        { str = m_strData; }
129    Type    GetType() const                    { return m_tType; }
130
131    BOOL    IsPersistent()                     { return m_bPersistent; }
132    void    SetPersistent(BOOL bPersistent)    { m_bPersistent = bPersistent; }
133
134    BOOL    UseWildcards()                     { return m_bUseWildcards; }
135    void    UseWildcards(BOOL bUseWildcards)   { m_bUseWildcards = bUseWildcards; }
136
137    BOOL    WildcardsInSubfolders()            { return m_bWildCardsInSubfolders; }
138    void    WildcardsInSubfolders(BOOL bSF)    { m_bWildCardsInSubfolders = bSF; }
139
140    void    RemoveFolder(BOOL bRemove)         { m_bRemoveFolder = bRemove; }
141    BOOL    RemoveFolder() const               { return m_bRemoveFolder; }
142    void    Subfolders(BOOL bSub)              { m_bSubfolders = bSub; }
143    BOOL    Subfolders() const                 { return m_bSubfolders; }
144    void    OnlySubfolders(BOOL bOnly)         { m_bRemoveOnlySub = bOnly; }
145    BOOL    OnlySubfolders() const             { return m_bRemoveOnlySub; }
146    inline int FinishAction() const            { return m_iFinishAction; }
147    inline void FinishAction(DWORD iAct)          {m_iFinishAction = iAct;} 
148    inline int FinishActionInd() const             { return m_iFinishActionInd; }
149    inline void FinishActionInd(int iAct)          {m_iFinishActionInd = iAct;} 
150
151    void    Serialize(CArchive& ar);
152#ifdef SCHEDULER_IMPORT_COMPATIBLE
153    void    Serialize30(CArchive& ar);         // Eraser 3.0 load support
154    void    Serialize40(CArchive& ar);         // Eraser 3.5 - 4.0 load support
155#endif
156
157protected:
158    void    Copy(const CItem&);
159
160    CString m_strData;
161    Type    m_tType;
162    BOOL    m_bPersistent;
163
164    BOOL    m_bUseWildcards;
165    BOOL    m_bWildCardsInSubfolders;
166    BOOL    m_bRemoveFolder;
167    BOOL    m_bRemoveOnlySub;
168    BOOL    m_bSubfolders;
169    DWORD   m_iFinishAction;
170    int     m_iFinishActionInd;
171};
172
173// the scheduler item
174class CScheduleItem  : public CItem
175{
176public:
177
178    CScheduleItem();
179    CScheduleItem(const CScheduleItem&);
180    virtual ~CScheduleItem();
181
182    CScheduleItem&  operator=(const CScheduleItem&);
183
184    // time
185
186    BOOL            CalcNextTime();
187    BOOL            StillValid();
188    BOOL            ScheduledNow();
189    UINT            GetTimeSpan() const;
190    UINT            GetTimeSpan(const COleDateTime&) const;
191
192    WORD            GetHour() const;
193    WORD            GetMinute() const;
194    CString         GetId() const;
195    void            SetSchedule(Schedule sc)    { m_scWhen = sc; }
196    BOOL            SetTime(WORD, WORD);
197    BOOL            SetTime(DWORD);
198
199    DWORD           GetTime() const             { return m_dwTime; }
200    DWORD           GetSchedule() const         { return (DWORD) m_scWhen; }
201
202    BOOL            GetNextTime(CString&) const;
203    BOOL            SetNextTime(CString&);
204    COleDateTime    GetNextTime() const         { return m_odtNext; }
205
206    void            SetLastTime(COleDateTime& odt)
207                                                { m_odtLast = odt; }
208    COleDateTime    GetLastTime() const         { return m_odtLast; }
209
210    void            SetStatistics(const TASKSTATISTICS& ts)
211                                                { m_tsStatistics = ts; }
212    LPTASKSTATISTICS GetStatistics()            { return &m_tsStatistics; }
213    void            UpdateStatistics();
214
215    void            Serialize(CArchive&);
216    void            Serialize41(CArchive& ar);
217#ifdef SCHEDULER_IMPORT_COMPATIBLE
218    void            Serialize40(CArchive&);     // Eraser 3.5 - 4.0 load support
219    void            Serialize30(CArchive&);     // Eraser 3.0 load support
220    void            Serialize21(CArchive&);     // Eraser Scheduler 2.1 load support
221#endif
222
223    // timer
224
225    UINT            m_uTimerID;
226
227    // wiping
228
229    void            SetQueued(BOOL bOnQueue)    { m_bQueued = bOnQueue; }
230    BOOL            IsQueued()                  { return m_bQueued; }
231
232    BOOL            IsRunning();
233
234    ERASER_HANDLE   m_ehContext;
235    E_UINT8         m_bMethod;
236    E_UINT16        m_nRndPass;
237    E_UINT8         m_uEraseItems;
238
239
240protected:
241    void            Copy(const CScheduleItem&);
242
243    COleDateTime    m_odtNext;
244    COleDateTime    m_odtLast;
245    Schedule        m_scWhen;
246    DWORD           m_dwTime;
247    TASKSTATISTICS  m_tsStatistics;
248
249    BOOL            m_bQueued;  // not serialized!
250};
251
252
253#endif // !defined(AFX_ITEM_H__44195821_F0FC_11D2_BBF3_00105AAF62C4__INCLUDED_)
Note: See TracBrowser for help on using the repository browser.