LookinHierarchyInfo.m 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. #ifdef SHOULD_COMPILE_LOOKIN_SERVER
  2. //
  3. // LookinDisplayInfo.m
  4. // WeRead
  5. //
  6. // Created by Li Kai on 2018/10/22.
  7. // Copyright © 2018年 tencent. All rights reserved.
  8. //
  9. #import <objc/runtime.h>
  10. #import "LookinHierarchyInfo.h"
  11. #import "LookinAttributesGroup.h"
  12. #import "LookinDisplayItem.h"
  13. #import "LookinAppInfo.h"
  14. #import "NSArray+Lookin.h"
  15. #if TARGET_OS_IPHONE
  16. #import "LKS_HierarchyDisplayItemsMaker.h"
  17. #import "LKSConfigManager.h"
  18. #endif
  19. @implementation LookinHierarchyInfo
  20. #if TARGET_OS_IPHONE
  21. + (instancetype)staticInfo {
  22. LookinHierarchyInfo *info = [LookinHierarchyInfo new];
  23. info.serverVersion = LOOKIN_SERVER_VERSION;
  24. info.displayItems = [LKS_HierarchyDisplayItemsMaker itemsWithScreenshots:NO attrList:NO lowImageQuality:NO includedWindows:nil excludedWindows:nil];
  25. info.appInfo = [LookinAppInfo currentInfoWithScreenshot:NO icon:YES localIdentifiers:nil];
  26. info.collapsedClassList = [LKSConfigManager collapsedClassList];
  27. info.colorAlias = [LKSConfigManager colorAlias];
  28. info.serverSetupType = LOOKIN_SERVER_SETUP_TYPE;
  29. return info;
  30. }
  31. + (instancetype)exportedInfo {
  32. LookinHierarchyInfo *info = [LookinHierarchyInfo new];
  33. info.serverVersion = LOOKIN_SERVER_VERSION;
  34. info.displayItems = [LKS_HierarchyDisplayItemsMaker itemsWithScreenshots:YES attrList:YES lowImageQuality:YES includedWindows:nil excludedWindows:nil];
  35. info.appInfo = [LookinAppInfo currentInfoWithScreenshot:NO icon:YES localIdentifiers:nil];
  36. info.collapsedClassList = [LKSConfigManager collapsedClassList];
  37. info.colorAlias = [LKSConfigManager colorAlias];
  38. info.serverSetupType = LOOKIN_SERVER_SETUP_TYPE;
  39. return info;
  40. }
  41. + (instancetype)perspectiveInfoWithIncludedWindows:(NSArray<UIWindow *> *)includedWindows excludedWindows:(NSArray<UIWindow *> *)excludedWindows {
  42. LookinHierarchyInfo *info = [LookinHierarchyInfo new];
  43. info.serverVersion = LOOKIN_SERVER_VERSION;
  44. info.displayItems = [LKS_HierarchyDisplayItemsMaker itemsWithScreenshots:YES attrList:YES lowImageQuality:NO includedWindows:includedWindows excludedWindows:excludedWindows];
  45. info.appInfo = [LookinAppInfo currentInfoWithScreenshot:NO icon:YES localIdentifiers:nil];
  46. info.collapsedClassList = [LKSConfigManager collapsedClassList];
  47. info.colorAlias = [LKSConfigManager colorAlias];
  48. info.serverSetupType = LOOKIN_SERVER_SETUP_TYPE;
  49. return info;
  50. }
  51. #endif
  52. #pragma mark - <NSSecureCoding>
  53. static NSString * const LookinHierarchyInfoCodingKey_DisplayItems = @"1";
  54. static NSString * const LookinHierarchyInfoCodingKey_AppInfo = @"2";
  55. static NSString * const LookinHierarchyInfoCodingKey_ColorAlias = @"3";
  56. static NSString * const LookinHierarchyInfoCodingKey_CollapsedClassList = @"4";
  57. - (void)encodeWithCoder:(NSCoder *)aCoder {
  58. [aCoder encodeObject:self.displayItems forKey:LookinHierarchyInfoCodingKey_DisplayItems];
  59. [aCoder encodeObject:self.colorAlias forKey:LookinHierarchyInfoCodingKey_ColorAlias];
  60. [aCoder encodeObject:self.collapsedClassList forKey:LookinHierarchyInfoCodingKey_CollapsedClassList];
  61. [aCoder encodeObject:self.appInfo forKey:LookinHierarchyInfoCodingKey_AppInfo];
  62. [aCoder encodeInt:self.serverVersion forKey:@"serverVersion"];
  63. [aCoder encodeInt:self.serverSetupType forKey:@"serverSetupType"];
  64. }
  65. - (instancetype)initWithCoder:(NSCoder *)aDecoder {
  66. if (self = [super init]) {
  67. self.displayItems = [aDecoder decodeObjectForKey:LookinHierarchyInfoCodingKey_DisplayItems];
  68. self.colorAlias = [aDecoder decodeObjectForKey:LookinHierarchyInfoCodingKey_ColorAlias];
  69. self.collapsedClassList = [aDecoder decodeObjectForKey:LookinHierarchyInfoCodingKey_CollapsedClassList];
  70. self.appInfo = [aDecoder decodeObjectForKey:LookinHierarchyInfoCodingKey_AppInfo];
  71. self.serverVersion = [aDecoder decodeIntForKey:@"serverVersion"];
  72. self.serverSetupType = [aDecoder decodeIntForKey:@"serverSetupType"];
  73. }
  74. return self;
  75. }
  76. + (BOOL)supportsSecureCoding {
  77. return YES;
  78. }
  79. #pragma mark - <NSCopying>
  80. - (id)copyWithZone:(NSZone *)zone {
  81. LookinHierarchyInfo *newAppInfo = [[LookinHierarchyInfo allocWithZone:zone] init];
  82. newAppInfo.serverVersion = self.serverVersion;
  83. newAppInfo.appInfo = self.appInfo.copy;
  84. newAppInfo.collapsedClassList = self.collapsedClassList;
  85. newAppInfo.colorAlias = self.colorAlias;
  86. newAppInfo.serverSetupType = self.serverSetupType;
  87. newAppInfo.displayItems = [self.displayItems lookin_map:^id(NSUInteger idx, LookinDisplayItem *oldItem) {
  88. return oldItem.copy;
  89. }];
  90. return newAppInfo;
  91. }
  92. @end
  93. #endif /* SHOULD_COMPILE_LOOKIN_SERVER */