1*f6dc9357SAndroid Build Coastguard Worker // UpdateProduce.h
2*f6dc9357SAndroid Build Coastguard Worker
3*f6dc9357SAndroid Build Coastguard Worker #ifndef ZIP7_INC_UPDATE_PRODUCE_H
4*f6dc9357SAndroid Build Coastguard Worker #define ZIP7_INC_UPDATE_PRODUCE_H
5*f6dc9357SAndroid Build Coastguard Worker
6*f6dc9357SAndroid Build Coastguard Worker #include "UpdatePair.h"
7*f6dc9357SAndroid Build Coastguard Worker
8*f6dc9357SAndroid Build Coastguard Worker struct CUpdatePair2
9*f6dc9357SAndroid Build Coastguard Worker {
10*f6dc9357SAndroid Build Coastguard Worker bool NewData;
11*f6dc9357SAndroid Build Coastguard Worker bool NewProps;
12*f6dc9357SAndroid Build Coastguard Worker bool UseArcProps; // if (UseArcProps && NewProps), we want to change only some properties.
13*f6dc9357SAndroid Build Coastguard Worker bool IsAnti; // if (!IsAnti) we use other ways to detect Anti status
14*f6dc9357SAndroid Build Coastguard Worker
15*f6dc9357SAndroid Build Coastguard Worker int DirIndex;
16*f6dc9357SAndroid Build Coastguard Worker int ArcIndex;
17*f6dc9357SAndroid Build Coastguard Worker int NewNameIndex;
18*f6dc9357SAndroid Build Coastguard Worker
19*f6dc9357SAndroid Build Coastguard Worker bool IsMainRenameItem;
20*f6dc9357SAndroid Build Coastguard Worker bool IsSameTime;
21*f6dc9357SAndroid Build Coastguard Worker
SetAs_NoChangeArcItemCUpdatePair222*f6dc9357SAndroid Build Coastguard Worker void SetAs_NoChangeArcItem(unsigned arcIndex) // int
23*f6dc9357SAndroid Build Coastguard Worker {
24*f6dc9357SAndroid Build Coastguard Worker NewData = NewProps = false;
25*f6dc9357SAndroid Build Coastguard Worker UseArcProps = true;
26*f6dc9357SAndroid Build Coastguard Worker IsAnti = false;
27*f6dc9357SAndroid Build Coastguard Worker ArcIndex = (int)arcIndex;
28*f6dc9357SAndroid Build Coastguard Worker }
29*f6dc9357SAndroid Build Coastguard Worker
ExistOnDiskCUpdatePair230*f6dc9357SAndroid Build Coastguard Worker bool ExistOnDisk() const { return DirIndex != -1; }
ExistInArchiveCUpdatePair231*f6dc9357SAndroid Build Coastguard Worker bool ExistInArchive() const { return ArcIndex != -1; }
32*f6dc9357SAndroid Build Coastguard Worker
CUpdatePair2CUpdatePair233*f6dc9357SAndroid Build Coastguard Worker CUpdatePair2():
34*f6dc9357SAndroid Build Coastguard Worker NewData(false),
35*f6dc9357SAndroid Build Coastguard Worker NewProps(false),
36*f6dc9357SAndroid Build Coastguard Worker UseArcProps(false),
37*f6dc9357SAndroid Build Coastguard Worker IsAnti(false),
38*f6dc9357SAndroid Build Coastguard Worker DirIndex(-1),
39*f6dc9357SAndroid Build Coastguard Worker ArcIndex(-1),
40*f6dc9357SAndroid Build Coastguard Worker NewNameIndex(-1),
41*f6dc9357SAndroid Build Coastguard Worker IsMainRenameItem(false),
42*f6dc9357SAndroid Build Coastguard Worker IsSameTime(false)
43*f6dc9357SAndroid Build Coastguard Worker {}
44*f6dc9357SAndroid Build Coastguard Worker };
45*f6dc9357SAndroid Build Coastguard Worker
46*f6dc9357SAndroid Build Coastguard Worker Z7_PURE_INTERFACES_BEGIN
47*f6dc9357SAndroid Build Coastguard Worker
DECLARE_INTERFACE(IUpdateProduceCallback)48*f6dc9357SAndroid Build Coastguard Worker DECLARE_INTERFACE(IUpdateProduceCallback)
49*f6dc9357SAndroid Build Coastguard Worker {
50*f6dc9357SAndroid Build Coastguard Worker virtual HRESULT ShowDeleteFile(unsigned arcIndex) = 0;
51*f6dc9357SAndroid Build Coastguard Worker };
52*f6dc9357SAndroid Build Coastguard Worker Z7_PURE_INTERFACES_END
53*f6dc9357SAndroid Build Coastguard Worker
54*f6dc9357SAndroid Build Coastguard Worker void UpdateProduce(
55*f6dc9357SAndroid Build Coastguard Worker const CRecordVector<CUpdatePair> &updatePairs,
56*f6dc9357SAndroid Build Coastguard Worker const NUpdateArchive::CActionSet &actionSet,
57*f6dc9357SAndroid Build Coastguard Worker CRecordVector<CUpdatePair2> &operationChain,
58*f6dc9357SAndroid Build Coastguard Worker IUpdateProduceCallback *callback);
59*f6dc9357SAndroid Build Coastguard Worker
60*f6dc9357SAndroid Build Coastguard Worker #endif
61