"Fossies" - the Fresh Open Source Software Archive 
As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style:
standard) with prefixed line numbers and
code folding option.
Alternatively you can here
view or
download the uninterpreted source code file.
For more information about "ui.hpp" see the
Fossies "Dox" file reference documentation.
1 #ifndef _RAR_UI_
2 #define _RAR_UI_
3
4 // UIERROR_ - error message;
5 // UIMSG_ - informational message;
6 // UIWAIT_ - message waiting for user confirmation;
7 // UIEVENT_ - if simple message is not enough;
8
9 enum UIMESSAGE_CODE {
10 UIERROR_SYSERRMSG, UIERROR_GENERALERRMSG, UIERROR_INCERRCOUNT,
11 UIERROR_CHECKSUM, UIERROR_CHECKSUMENC, UIERROR_CHECKSUMPACKED,
12 UIERROR_BADPSW, UIERROR_MEMORY, UIERROR_FILEOPEN, UIERROR_FILECREATE,
13 UIERROR_FILECLOSE, UIERROR_FILESEEK, UIERROR_FILEREAD, UIERROR_FILEWRITE,
14 UIERROR_FILEDELETE, UIERROR_RECYCLEFAILED, UIERROR_FILERENAME,
15 UIERROR_FILEATTR, UIERROR_FILECOPY, UIERROR_FILECOPYHINT,
16 UIERROR_DIRCREATE, UIERROR_SLINKCREATE, UIERROR_HLINKCREATE,
17 UIERROR_NOLINKTARGET, UIERROR_NEEDADMIN, UIERROR_ARCBROKEN,
18 UIERROR_HEADERBROKEN, UIERROR_MHEADERBROKEN, UIERROR_FHEADERBROKEN,
19 UIERROR_SUBHEADERBROKEN, UIERROR_SUBHEADERUNKNOWN,
20 UIERROR_SUBHEADERDATABROKEN, UIERROR_RRDAMAGED, UIERROR_UNKNOWNMETHOD,
21 UIERROR_UNKNOWNENCMETHOD, UIERROR_RENAMING, UIERROR_NEWERRAR,
22 UIERROR_NOTSFX, UIERROR_OLDTOSFX,
23 UIERROR_WRONGSFXVER, UIERROR_HEADENCMISMATCH, UIERROR_DICTOUTMEM,
24 UIERROR_USESMALLERDICT, UIERROR_MODIFYUNKNOWN, UIERROR_MODIFYOLD,
25 UIERROR_MODIFYLOCKED, UIERROR_MODIFYVOLUME, UIERROR_NOTVOLUME,
26 UIERROR_NOTFIRSTVOLUME, UIERROR_RECVOLLIMIT, UIERROR_RECVOLDIFFSETS,
27 UIERROR_RECVOLALLEXIST, UIERROR_RECVOLFOUND, UIERROR_RECONSTRUCTING,
28 UIERROR_RECVOLCANNOTFIX, UIERROR_OPFAILED, UIERROR_UNEXPEOF,
29 UIERROR_BADARCHIVE, UIERROR_CMTBROKEN, UIERROR_INVALIDNAME,
30 UIERROR_NEWRARFORMAT, UIERROR_NOTSUPPORTED, UIERROR_ENCRNOTSUPPORTED,
31 UIERROR_RARZIPONLY, UIERROR_REPAIROLDFORMAT, UIERROR_NOFILESREPAIRED,
32 UIERROR_NOFILESTOADD, UIERROR_NOFILESTODELETE, UIERROR_NOFILESTOEXTRACT,
33 UIERROR_MISSINGVOL, UIERROR_NEEDPREVVOL, UIERROR_UNKNOWNEXTRA,
34 UIERROR_CORRUPTEXTRA, UIERROR_NTFSREQUIRED, UIERROR_ZIPVOLSFX,
35 UIERROR_FILERO, UIERROR_TOOLARGESFX, UIERROR_NOZIPSFX, UIERROR_EMAIL,
36 UIERROR_ACLGET, UIERROR_ACLBROKEN, UIERROR_ACLUNKNOWN, UIERROR_ACLSET,
37 UIERROR_STREAMBROKEN, UIERROR_STREAMUNKNOWN, UIERROR_INCOMPATSWITCH,
38 UIERROR_PATHTOOLONG, UIERROR_DIRSCAN, UIERROR_UOWNERGET,
39 UIERROR_UOWNERBROKEN, UIERROR_UOWNERGETOWNERID, UIERROR_UOWNERGETGROUPID,
40 UIERROR_UOWNERSET, UIERROR_ULINKREAD, UIERROR_ULINKEXIST,
41 UIERROR_OPENPRESERVEATIME, UIERROR_READERRTRUNCATED, UIERROR_READERRCOUNT,
42 UIERROR_DIRNAMEEXISTS,UIERROR_TRUNCPSW,UIERROR_ADJUSTVALUE,
43
44 UIMSG_FIRST,
45 UIMSG_STRING, UIMSG_BUILD, UIMSG_RRSEARCH, UIMSG_ANALYZEFILEDATA,
46 UIMSG_RRFOUND, UIMSG_RRNOTFOUND, UIMSG_RRDAMAGED, UIMSG_BLOCKSRECOVERED,
47 UIMSG_COPYINGDATA, UIMSG_AREADAMAGED, UIMSG_SECTORDAMAGED,
48 UIMSG_SECTORRECOVERED, UIMSG_SECTORNOTRECOVERED, UIMSG_FOUND,
49 UIMSG_CORRECTINGNAME, UIMSG_BADARCHIVE, UIMSG_CREATING, UIMSG_RENAMING,
50 UIMSG_RECVOLCALCCHECKSUM, UIMSG_RECVOLFOUND, UIMSG_RECVOLMISSING,
51 UIMSG_MISSINGVOL, UIMSG_RECONSTRUCTING, UIMSG_CHECKSUM, UIMSG_FAT32SIZE,
52 UIMSG_SKIPENCARC,
53
54 UIWAIT_FIRST,
55 UIWAIT_DISKFULLNEXT, UIWAIT_FCREATEERROR, UIWAIT_BADPSW,
56
57 UIEVENT_FIRST,
58 UIEVENT_SEARCHDUPFILESSTART, UIEVENT_SEARCHDUPFILESEND,
59 UIEVENT_CLEARATTRSTART, UIEVENT_CLEARATTRFILE,
60 UIEVENT_DELADDEDSTART, UIEVENT_DELADDEDFILE, UIEVENT_FILESFOUND,
61 UIEVENT_ERASEDISK, UIEVENT_FILESUMSTART, UIEVENT_FILESUMPROGRESS,
62 UIEVENT_FILESUMEND, UIEVENT_PROTECTSTART, UIEVENT_PROTECTEND,
63 UIEVENT_TESTADDEDSTART, UIEVENT_TESTADDEDEND, UIEVENT_RRTESTINGSTART,
64 UIEVENT_RRTESTINGEND, UIEVENT_NEWARCHIVE, UIEVENT_NEWREVFILE
65 };
66
67 // Flags for uiAskReplace function.
68 enum UIASKREP_FLAGS {
69 UIASKREP_F_NORENAME=1,UIASKREP_F_EXCHSRCDEST=2,UIASKREP_F_SHOWNAMEONLY=4
70 };
71
72 // Codes returned by uiAskReplace. Note that uiAskReplaceEx returns only
73 // UIASKREP_R_REPLACE, UIASKREP_R_SKIP and UIASKREP_R_CANCEL codes.
74 enum UIASKREP_RESULT {
75 UIASKREP_R_REPLACE,UIASKREP_R_SKIP,UIASKREP_R_REPLACEALL,UIASKREP_R_SKIPALL,
76 UIASKREP_R_RENAME,UIASKREP_R_RENAMEAUTO,UIASKREP_R_CANCEL,UIASKREP_R_UNUSED
77 };
78
79 UIASKREP_RESULT uiAskReplace(wchar *Name,size_t MaxNameSize,int64 FileSize,RarTime *FileTime,uint Flags);
80 UIASKREP_RESULT uiAskReplaceEx(RAROptions *Cmd,wchar *Name,size_t MaxNameSize,int64 FileSize,RarTime *FileTime,uint Flags);
81
82 void uiInit(SOUND_NOTIFY_MODE Sound);
83
84
85 void uiStartArchiveExtract(bool Extract,const wchar *ArcName);
86 bool uiStartFileExtract(const wchar *FileName,bool Extract,bool Test,bool Skip);
87 void uiExtractProgress(int64 CurFileSize,int64 TotalFileSize,int64 CurSize,int64 TotalSize);
88 void uiProcessProgress(const char *Command,int64 CurSize,int64 TotalSize);
89
90 enum UIPASSWORD_TYPE {UIPASSWORD_GLOBAL,UIPASSWORD_FILE,UIPASSWORD_ARCHIVE};
91 bool uiGetPassword(UIPASSWORD_TYPE Type,const wchar *FileName,SecPassword *Password);
92 bool uiIsGlobalPasswordSet();
93
94 enum UIALARM_TYPE {UIALARM_ERROR, UIALARM_INFO, UIALARM_QUESTION};
95 void uiAlarm(UIALARM_TYPE Type);
96
97 void uiEolAfterMsg();
98
99 bool uiAskNextVolume(wchar *VolName,size_t MaxSize);
100 #if !defined(SILENT) && !defined(SFX_MODULE)
101 void uiAskRepeatRead(const wchar *FileName,bool &Ignore,bool &All,bool &Retry,bool &Quit);
102 #endif
103 bool uiAskRepeatWrite(const wchar *FileName,bool DiskFull);
104
105 #ifndef SFX_MODULE
106 const wchar *uiGetMonthName(int Month);
107 #endif
108
109 class uiMsgStore
110 {
111 private:
112 static const size_t MAX_MSG = 8;
113 const wchar *Str[MAX_MSG];
114 uint Num[MAX_MSG];
115 uint StrSize,NumSize;
116 UIMESSAGE_CODE Code;
117 public:
118 uiMsgStore(UIMESSAGE_CODE Code)
119 {
120 // Init arrays in case a caller passes fewer parameters than expected.
121 for (uint I=0;I<ASIZE(Str);I++)
122 Str[I]=L"";
123 memset(Num,0,sizeof(Num));
124
125 NumSize=StrSize=0;
126 this->Code=Code;
127 }
128 uiMsgStore& operator << (const wchar *s)
129 {
130 if (StrSize<MAX_MSG)
131 Str[StrSize++]=s;
132 return *this;
133 }
134 uiMsgStore& operator << (uint n)
135 {
136 if (NumSize<MAX_MSG)
137 Num[NumSize++]=n;
138 return *this;
139 }
140
141 void Msg();
142 };
143
144
145 // Templates recognize usual NULL as integer, not wchar*.
146 #define UINULL ((wchar *)NULL)
147
148 inline void uiMsg(UIMESSAGE_CODE Code)
149 {
150 uiMsgStore Store(Code);
151 Store.Msg();
152 }
153
154 template<class T1> void uiMsg(UIMESSAGE_CODE Code,T1 a1)
155 {
156 uiMsgStore Store(Code);
157 Store<<a1;
158 Store.Msg();
159 }
160
161 template<class T1,class T2> void uiMsg(UIMESSAGE_CODE Code,T1 a1,T2 a2)
162 {
163 uiMsgStore Store(Code);
164 Store<<a1<<a2;
165 Store.Msg();
166 }
167
168 template<class T1,class T2,class T3> void uiMsg(UIMESSAGE_CODE code,T1 a1,T2 a2,T3 a3)
169 {
170 uiMsgStore Store(code);
171 Store<<a1<<a2<<a3;
172 Store.Msg();
173 }
174
175 #endif