| static bool uiSoundEnabled; |
| |
| void uiInit(bool Sound) |
| { |
| uiSoundEnabled = Sound; |
| } |
| |
| |
| // Additionally to handling user input, it analyzes and sets command options. |
| // Returns only 'replace', 'skip' and 'cancel' codes. |
| UIASKREP_RESULT uiAskReplaceEx(RAROptions *Cmd,wchar *Name,size_t MaxNameSize,int64 FileSize,RarTime *FileTime,uint Flags) |
| { |
| if (Cmd->Overwrite==OVERWRITE_NONE) |
| return UIASKREP_R_SKIP; |
| |
| #if !defined(SFX_MODULE) && !defined(SILENT) |
| // Must be before Cmd->AllYes check or -y switch would override -or. |
| if (Cmd->Overwrite==OVERWRITE_AUTORENAME && GetAutoRenamedName(Name,MaxNameSize)) |
| return UIASKREP_R_REPLACE; |
| #endif |
| |
| // This check must be after OVERWRITE_AUTORENAME processing or -y switch |
| // would override -or. |
| if (Cmd->AllYes || Cmd->Overwrite==OVERWRITE_ALL) |
| { |
| PrepareToDelete(Name); |
| return UIASKREP_R_REPLACE; |
| } |
| |
| wchar NewName[NM]; |
| wcsncpyz(NewName,Name,ASIZE(NewName)); |
| UIASKREP_RESULT Choice=uiAskReplace(NewName,ASIZE(NewName),FileSize,FileTime,Flags); |
| |
| if (Choice==UIASKREP_R_REPLACE || Choice==UIASKREP_R_REPLACEALL) |
| PrepareToDelete(Name); |
| |
| if (Choice==UIASKREP_R_REPLACEALL) |
| { |
| Cmd->Overwrite=OVERWRITE_ALL; |
| return UIASKREP_R_REPLACE; |
| } |
| if (Choice==UIASKREP_R_SKIPALL) |
| { |
| Cmd->Overwrite=OVERWRITE_NONE; |
| return UIASKREP_R_SKIP; |
| } |
| if (Choice==UIASKREP_R_RENAME) |
| { |
| if (PointToName(NewName)==NewName) |
| SetName(Name,NewName,MaxNameSize); |
| else |
| wcsncpyz(Name,NewName,MaxNameSize); |
| if (FileExist(Name)) |
| return uiAskReplaceEx(Cmd,Name,MaxNameSize,FileSize,FileTime,Flags); |
| return UIASKREP_R_REPLACE; |
| } |
| #if !defined(SFX_MODULE) && !defined(SILENT) |
| if (Choice==UIASKREP_R_RENAMEAUTO && GetAutoRenamedName(Name,MaxNameSize)) |
| { |
| Cmd->Overwrite=OVERWRITE_AUTORENAME; |
| return UIASKREP_R_REPLACE; |
| } |
| #endif |
| return Choice; |
| } |