"Fossies" - the Fresh Open Source Software Archive

Member "unrar/ui.hpp" (4 May 2022, 6471 Bytes) of package /linux/misc/unrarsrc-6.1.7.tar.gz:


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