1*f6dc9357SAndroid Build Coastguard Worker // SystemPage.h 2*f6dc9357SAndroid Build Coastguard Worker 3*f6dc9357SAndroid Build Coastguard Worker #ifndef ZIP7_INC_SYSTEM_PAGE_H 4*f6dc9357SAndroid Build Coastguard Worker #define ZIP7_INC_SYSTEM_PAGE_H 5*f6dc9357SAndroid Build Coastguard Worker 6*f6dc9357SAndroid Build Coastguard Worker #include "../../../Windows/Control/ImageList.h" 7*f6dc9357SAndroid Build Coastguard Worker #include "../../../Windows/Control/ListView.h" 8*f6dc9357SAndroid Build Coastguard Worker #include "../../../Windows/Control/PropertyPage.h" 9*f6dc9357SAndroid Build Coastguard Worker 10*f6dc9357SAndroid Build Coastguard Worker #include "FilePlugins.h" 11*f6dc9357SAndroid Build Coastguard Worker #include "RegistryAssociations.h" 12*f6dc9357SAndroid Build Coastguard Worker 13*f6dc9357SAndroid Build Coastguard Worker enum EExtState 14*f6dc9357SAndroid Build Coastguard Worker { 15*f6dc9357SAndroid Build Coastguard Worker kExtState_Clear = 0, 16*f6dc9357SAndroid Build Coastguard Worker kExtState_Other, 17*f6dc9357SAndroid Build Coastguard Worker kExtState_7Zip 18*f6dc9357SAndroid Build Coastguard Worker }; 19*f6dc9357SAndroid Build Coastguard Worker 20*f6dc9357SAndroid Build Coastguard Worker struct CModifiedExtInfo: public NRegistryAssoc::CShellExtInfo 21*f6dc9357SAndroid Build Coastguard Worker { 22*f6dc9357SAndroid Build Coastguard Worker int OldState; 23*f6dc9357SAndroid Build Coastguard Worker int State; 24*f6dc9357SAndroid Build Coastguard Worker int ImageIndex; 25*f6dc9357SAndroid Build Coastguard Worker bool Other; 26*f6dc9357SAndroid Build Coastguard Worker bool Other7Zip; 27*f6dc9357SAndroid Build Coastguard Worker CModifiedExtInfoCModifiedExtInfo28*f6dc9357SAndroid Build Coastguard Worker CModifiedExtInfo(): ImageIndex(-1) {} 29*f6dc9357SAndroid Build Coastguard Worker 30*f6dc9357SAndroid Build Coastguard Worker CSysString GetString() const; 31*f6dc9357SAndroid Build Coastguard Worker SetStateCModifiedExtInfo32*f6dc9357SAndroid Build Coastguard Worker void SetState(const UString &iconPath) 33*f6dc9357SAndroid Build Coastguard Worker { 34*f6dc9357SAndroid Build Coastguard Worker State = kExtState_Clear; 35*f6dc9357SAndroid Build Coastguard Worker Other = false; 36*f6dc9357SAndroid Build Coastguard Worker Other7Zip = false; 37*f6dc9357SAndroid Build Coastguard Worker if (!ProgramKey.IsEmpty()) 38*f6dc9357SAndroid Build Coastguard Worker { 39*f6dc9357SAndroid Build Coastguard Worker State = kExtState_Other; 40*f6dc9357SAndroid Build Coastguard Worker Other = true; 41*f6dc9357SAndroid Build Coastguard Worker if (IsIt7Zip()) 42*f6dc9357SAndroid Build Coastguard Worker { 43*f6dc9357SAndroid Build Coastguard Worker Other7Zip = !iconPath.IsEqualTo_NoCase(IconPath); 44*f6dc9357SAndroid Build Coastguard Worker if (!Other7Zip) 45*f6dc9357SAndroid Build Coastguard Worker { 46*f6dc9357SAndroid Build Coastguard Worker State = kExtState_7Zip; 47*f6dc9357SAndroid Build Coastguard Worker Other = false; 48*f6dc9357SAndroid Build Coastguard Worker } 49*f6dc9357SAndroid Build Coastguard Worker } 50*f6dc9357SAndroid Build Coastguard Worker } 51*f6dc9357SAndroid Build Coastguard Worker OldState = State; 52*f6dc9357SAndroid Build Coastguard Worker } 53*f6dc9357SAndroid Build Coastguard Worker }; 54*f6dc9357SAndroid Build Coastguard Worker 55*f6dc9357SAndroid Build Coastguard Worker struct CAssoc 56*f6dc9357SAndroid Build Coastguard Worker { 57*f6dc9357SAndroid Build Coastguard Worker CModifiedExtInfo Pair[2]; 58*f6dc9357SAndroid Build Coastguard Worker int SevenZipImageIndex; 59*f6dc9357SAndroid Build Coastguard Worker GetIconIndexCAssoc60*f6dc9357SAndroid Build Coastguard Worker int GetIconIndex() const 61*f6dc9357SAndroid Build Coastguard Worker { 62*f6dc9357SAndroid Build Coastguard Worker for (unsigned i = 0; i < 2; i++) 63*f6dc9357SAndroid Build Coastguard Worker { 64*f6dc9357SAndroid Build Coastguard Worker const CModifiedExtInfo &pair = Pair[i]; 65*f6dc9357SAndroid Build Coastguard Worker if (pair.State == kExtState_Clear) 66*f6dc9357SAndroid Build Coastguard Worker continue; 67*f6dc9357SAndroid Build Coastguard Worker if (pair.State == kExtState_7Zip) 68*f6dc9357SAndroid Build Coastguard Worker return SevenZipImageIndex; 69*f6dc9357SAndroid Build Coastguard Worker if (pair.ImageIndex != -1) 70*f6dc9357SAndroid Build Coastguard Worker return pair.ImageIndex; 71*f6dc9357SAndroid Build Coastguard Worker } 72*f6dc9357SAndroid Build Coastguard Worker return -1; 73*f6dc9357SAndroid Build Coastguard Worker } 74*f6dc9357SAndroid Build Coastguard Worker }; 75*f6dc9357SAndroid Build Coastguard Worker 76*f6dc9357SAndroid Build Coastguard Worker #ifdef UNDER_CE 77*f6dc9357SAndroid Build Coastguard Worker #define NUM_EXT_GROUPS 1 78*f6dc9357SAndroid Build Coastguard Worker #else 79*f6dc9357SAndroid Build Coastguard Worker #define NUM_EXT_GROUPS 2 80*f6dc9357SAndroid Build Coastguard Worker #endif 81*f6dc9357SAndroid Build Coastguard Worker 82*f6dc9357SAndroid Build Coastguard Worker class CSystemPage: public NWindows::NControl::CPropertyPage 83*f6dc9357SAndroid Build Coastguard Worker { 84*f6dc9357SAndroid Build Coastguard Worker CExtDatabase _extDB; 85*f6dc9357SAndroid Build Coastguard Worker CObjectVector<CAssoc> _items; 86*f6dc9357SAndroid Build Coastguard Worker 87*f6dc9357SAndroid Build Coastguard Worker unsigned _numIcons; 88*f6dc9357SAndroid Build Coastguard Worker NWindows::NControl::CImageList _imageList; 89*f6dc9357SAndroid Build Coastguard Worker NWindows::NControl::CListView _listView; 90*f6dc9357SAndroid Build Coastguard Worker 91*f6dc9357SAndroid Build Coastguard Worker bool _needSave; 92*f6dc9357SAndroid Build Coastguard Worker GetHKey(unsigned group)93*f6dc9357SAndroid Build Coastguard Worker HKEY GetHKey(unsigned 94*f6dc9357SAndroid Build Coastguard Worker #if NUM_EXT_GROUPS != 1 95*f6dc9357SAndroid Build Coastguard Worker group 96*f6dc9357SAndroid Build Coastguard Worker #endif 97*f6dc9357SAndroid Build Coastguard Worker ) const 98*f6dc9357SAndroid Build Coastguard Worker { 99*f6dc9357SAndroid Build Coastguard Worker #if NUM_EXT_GROUPS == 1 100*f6dc9357SAndroid Build Coastguard Worker return HKEY_CLASSES_ROOT; 101*f6dc9357SAndroid Build Coastguard Worker #else 102*f6dc9357SAndroid Build Coastguard Worker return group == 0 ? HKEY_CURRENT_USER : HKEY_LOCAL_MACHINE; 103*f6dc9357SAndroid Build Coastguard Worker #endif 104*f6dc9357SAndroid Build Coastguard Worker } 105*f6dc9357SAndroid Build Coastguard Worker 106*f6dc9357SAndroid Build Coastguard Worker int AddIcon(const UString &path, int iconIndex); GetRealIndex(unsigned listIndex)107*f6dc9357SAndroid Build Coastguard Worker unsigned GetRealIndex(unsigned listIndex) const { return listIndex; } 108*f6dc9357SAndroid Build Coastguard Worker void RefreshListItem(unsigned group, unsigned listIndex); 109*f6dc9357SAndroid Build Coastguard Worker void ChangeState(unsigned group, const CUIntVector &indices); 110*f6dc9357SAndroid Build Coastguard Worker void ChangeState(unsigned group); 111*f6dc9357SAndroid Build Coastguard Worker 112*f6dc9357SAndroid Build Coastguard Worker bool OnListKeyDown(LPNMLVKEYDOWN keyDownInfo); 113*f6dc9357SAndroid Build Coastguard Worker 114*f6dc9357SAndroid Build Coastguard Worker public: 115*f6dc9357SAndroid Build Coastguard Worker bool WasChanged; 116*f6dc9357SAndroid Build Coastguard Worker CSystemPage()117*f6dc9357SAndroid Build Coastguard Worker CSystemPage(): WasChanged(false) {} 118*f6dc9357SAndroid Build Coastguard Worker 119*f6dc9357SAndroid Build Coastguard Worker virtual bool OnInit() Z7_override; 120*f6dc9357SAndroid Build Coastguard Worker virtual void OnNotifyHelp() Z7_override; 121*f6dc9357SAndroid Build Coastguard Worker virtual bool OnNotify(UINT controlID, LPNMHDR lParam) Z7_override; 122*f6dc9357SAndroid Build Coastguard Worker virtual LONG OnApply() Z7_override; 123*f6dc9357SAndroid Build Coastguard Worker virtual bool OnButtonClicked(unsigned buttonID, HWND buttonHWND) Z7_override; 124*f6dc9357SAndroid Build Coastguard Worker }; 125*f6dc9357SAndroid Build Coastguard Worker 126*f6dc9357SAndroid Build Coastguard Worker #endif 127