source: trunk/Item.h @ 31

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

Standardize the header

  • 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    Mask
53};
54
55// schedule IDs
56enum Schedule
57{
58    Day,
59    Sunday,     // 1
60    Monday,
61    Tuesday,
62    Wednesday,
63    Thursday,
64    Friday,
65    Saturday,    // 7
66    Reboot
67};
68
69// schedule names
70const LPCTSTR szScheduleName[] =
71{
72    "Day",
73    "Sunday",
74    "Monday",
75    "Tuesday",
76    "Wednesday",
77    "Thursday",
78    "Friday",
79    "Saturday",
80    "Reboot"
81};
82
83// helper for scheduler task statistics
84
85class CTaskStatistics
86{
87public:
88    CTaskStatistics()           { Reset(); }
89
90    void Reset()
91    {
92        m_dwAveArea             = 0;
93        m_dwAveWritten          = 0;
94        m_dwAveTime             = 0;
95        m_dwTimes               = 0;
96        m_dwTimesInterrupted    = 0;
97        m_dwTimesSuccess        = 0;
98    };
99
100    void    Serialize(CArchive&);
101
102    DWORD   m_dwAveArea;
103    DWORD   m_dwAveWritten;
104    DWORD   m_dwAveTime;
105
106    DWORD   m_dwTimes;
107    DWORD   m_dwTimesInterrupted;
108    DWORD   m_dwTimesSuccess;
109
110};
111
112typedef CTaskStatistics TASKSTATISTICS, *LPTASKSTATISTICS;
113
114// the On-Demand item
115class CItem
116{
117public:
118    CItem();
119    CItem(const CItem&);
120    virtual ~CItem();
121
122    CItem&  operator=(const CItem&);
123
124    BOOL    SetFolder(const CString& str);
125    BOOL    SetDrive(const CString&);
126    BOOL    SetFile(const CString&);
127    BOOL    SetMask(const CString& str);
128
129    CString GetData() const                    { return m_strData; }
130    void    GetData(CString& str) const        { str = m_strData; }
131    Type    GetType() const                    { return m_tType; }
132
133    BOOL    IsPersistent()                     { return m_bPersistent; }
134    void    SetPersistent(BOOL bPersistent)    { m_bPersistent = bPersistent; }
135
136    BOOL    UseWildcards()                     { return m_bUseWildcards; }
137    void    UseWildcards(BOOL bUseWildcards)   { m_bUseWildcards = bUseWildcards; }
138
139    BOOL    WildcardsInSubfolders()            { return m_bWildCardsInSubfolders; }
140    void    WildcardsInSubfolders(BOOL bSF)    { m_bWildCardsInSubfolders = bSF; }
141
142    void    RemoveFolder(BOOL bRemove)         { m_bRemoveFolder = bRemove; }
143    BOOL    RemoveFolder() const               { return m_bRemoveFolder; }
144    void    Subfolders(BOOL bSub)              { m_bSubfolders = bSub; }
145    BOOL    Subfolders() const                 { return m_bSubfolders; }
146    void    OnlySubfolders(BOOL bOnly)         { m_bRemoveOnlySub = bOnly; }
147    BOOL    OnlySubfolders() const             { return m_bRemoveOnlySub; }
148    inline int FinishAction() const            { return m_iFinishAction; }
149    inline void FinishAction(DWORD iAct)          {m_iFinishAction = iAct;} 
150    inline int FinishActionInd() const             { return m_iFinishActionInd; }
151    inline void FinishActionInd(int iAct)          {m_iFinishActionInd = iAct;} 
152
153    void    Serialize(CArchive& ar);
154#ifdef SCHEDULER_IMPORT_COMPATIBLE
155    void    Serialize30(CArchive& ar);         // Eraser 3.0 load support
156    void    Serialize40(CArchive& ar);         // Eraser 3.5 - 4.0 load support
157#endif
158
159protected:
160    void    Copy(const CItem&);
161
162    CString m_strData;
163    Type    m_tType;
164    BOOL    m_bPersistent;
165
166    BOOL    m_bUseWildcards;
167    BOOL    m_bWildCardsInSubfolders;
168    BOOL    m_bRemoveFolder;
169    BOOL    m_bRemoveOnlySub;
170    BOOL    m_bSubfolders;
171    DWORD   m_iFinishAction;
172    int     m_iFinishActionInd;
173};
174
175// the scheduler item
176class CScheduleItem  : public CItem
177{
178public:
179
180    CScheduleItem();
181    CScheduleItem(const CScheduleItem&);
182    virtual ~CScheduleItem();
183
184    CScheduleItem&  operator=(const CScheduleItem&);
185
186    // time
187
188    BOOL            CalcNextTime();
189    BOOL            StillValid();
190    BOOL            ScheduledNow();
191    UINT            GetTimeSpan() const;
192    UINT            GetTimeSpan(const COleDateTime&) const;
193
194    WORD            GetHour() const;
195    WORD            GetMinute() const;
196    CString         GetId() const;
197    void            SetSchedule(Schedule sc)    { m_scWhen = sc; }
198    BOOL            SetTime(WORD, WORD);
199    BOOL            SetTime(DWORD);
200
201    DWORD           GetTime() const             { return m_dwTime; }
202    DWORD           GetSchedule() const         { return (DWORD) m_scWhen; }
203
204    BOOL            GetNextTime(CString&) const;
205    BOOL            SetNextTime(CString&);
206    COleDateTime    GetNextTime() const         { return m_odtNext; }
207
208    void            SetLastTime(COleDateTime& odt)
209                                                { m_odtLast = odt; }
210    COleDateTime    GetLastTime() const         { return m_odtLast; }
211
212    void            SetStatistics(const TASKSTATISTICS& ts)
213                                                { m_tsStatistics = ts; }
214    LPTASKSTATISTICS GetStatistics()            { return &m_tsStatistics; }
215    void            UpdateStatistics();
216
217    void            Serialize(CArchive&);
218    void            Serialize41(CArchive& ar);
219#ifdef SCHEDULER_IMPORT_COMPATIBLE
220    void            Serialize40(CArchive&);     // Eraser 3.5 - 4.0 load support
221    void            Serialize30(CArchive&);     // Eraser 3.0 load support
222    void            Serialize21(CArchive&);     // Eraser Scheduler 2.1 load support
223#endif
224
225    // timer
226
227    UINT            m_uTimerID;
228
229    // wiping
230
231    void            SetQueued(BOOL bOnQueue)    { m_bQueued = bOnQueue; }
232    BOOL            IsQueued()                  { return m_bQueued; }
233
234    BOOL            IsRunning();
235
236    ERASER_HANDLE   m_ehContext;
237    E_UINT8         m_bMethod;
238    E_UINT16        m_nRndPass;
239    E_UINT8         m_uEraseItems;
240
241
242protected:
243    void            Copy(const CScheduleItem&);
244
245    COleDateTime    m_odtNext;
246    COleDateTime    m_odtLast;
247    Schedule        m_scWhen;
248    DWORD           m_dwTime;
249    TASKSTATISTICS  m_tsStatistics;
250
251    BOOL            m_bQueued;  // not serialized!
252};
253
254
255#endif // !defined(AFX_ITEM_H__44195821_F0FC_11D2_BBF3_00105AAF62C4__INCLUDED_)
Note: See TracBrowser for help on using the repository browser.