Skip to content

Commit 1871e6f

Browse files
authored
Merge pull request #12 from IrelDev/develop
Release 1.2.0
2 parents 26a3e4e + 8a3ec3b commit 1871e6f

File tree

10 files changed

+91
-49
lines changed

10 files changed

+91
-49
lines changed

XcodeCleaner.xcodeproj/project.pbxproj

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -299,7 +299,7 @@
299299
isa = PBXProject;
300300
attributes = {
301301
LastSwiftUpdateCheck = 1150;
302-
LastUpgradeCheck = 1170;
302+
LastUpgradeCheck = 1200;
303303
ORGANIZATIONNAME = "Kirill Pustovalov";
304304
TargetAttributes = {
305305
9DD3BA6B24B4639400EDA308 = {
@@ -422,6 +422,7 @@
422422
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
423423
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
424424
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
425+
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
425426
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
426427
CLANG_WARN_STRICT_PROTOTYPES = YES;
427428
CLANG_WARN_SUSPICIOUS_MOVE = YES;
@@ -482,6 +483,7 @@
482483
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
483484
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
484485
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
486+
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
485487
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
486488
CLANG_WARN_STRICT_PROTOTYPES = YES;
487489
CLANG_WARN_SUSPICIOUS_MOVE = YES;

XcodeCleaner/DirectoryManager.swift

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,16 @@ struct DirectoryManager {
3030
let derivedDataPath = "DerivedData/"
3131
return "\(xcodePath + derivedDataPath)"
3232
}
33-
func getDeviceSupportPath() -> String {
33+
func getIOSDeviceSupportPath() -> String {
3434
let xcodePath = getXcodeDefaultPath()
3535
let deviceSupportPath = "iOS DeviceSupport/"
3636
return "\(xcodePath + deviceSupportPath)"
3737
}
38+
func getWatchOSDeviceSupportPath() -> String {
39+
let xcodePath = getXcodeDefaultPath()
40+
let watchOSDeviceSupport = "watchOS DeviceSupport/"
41+
return "\(xcodePath + watchOSDeviceSupport)"
42+
}
3843
func getArchivesPath() -> String {
3944
let xcodePath = getXcodeDefaultPath()
4045
let archivesPath = "Archives/"
@@ -125,8 +130,10 @@ struct DirectoryManager {
125130
switch type {
126131
case .derivedData:
127132
path = getDerivedDataPath()
128-
case .deviceSupport:
129-
path = getDeviceSupportPath()
133+
case .iOSDeviceSupport:
134+
path = getIOSDeviceSupportPath()
135+
case .watchOSDeviceSupport:
136+
path = getWatchOSDeviceSupportPath()
130137
case .archives:
131138
path = getArchivesPath()
132139
case .iOSDeviceLogs:

XcodeCleaner/Enums/DirectoryType.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@
99
import SwiftUI
1010

1111
public enum DirectoryType: String, CaseIterable {
12-
1312
case derivedData
14-
case deviceSupport
13+
case iOSDeviceSupport
14+
case watchOSDeviceSupport
15+
case documentationCache
1516
case archives
1617
case iOSDeviceLogs
17-
case documentationCache
1818
}

XcodeCleaner/Protocols/PieChartViewModelProtocol.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,6 @@ import Foundation
1111
protocol PieChartViewModelProtocol {
1212
var items: [PieChartItemModel] { get set }
1313

14-
mutating func createItems(derivedData: [DirectoryModel], deviceSupport: [DirectoryModel], archives: [DirectoryModel], iOSDeviceLogs: [DirectoryModel], documentationCache: [DirectoryModel])
14+
mutating func createItems(derivedData: [DirectoryModel], iOSDeviceSupport: [DirectoryModel], watchOSDeviceSupport: [DirectoryModel], archives: [DirectoryModel], iOSDeviceLogs: [DirectoryModel], documentationCache: [DirectoryModel])
1515
func getPCItems() -> PCItems
1616
}

XcodeCleaner/Protocols/ViewModelProtocol.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ protocol ViewModelProtocol {
1616
var totalSize: Int64 { get set }
1717

1818
var derivedData: [DirectoryModel] { get set }
19-
var deviceSupport: [DirectoryModel] { get set }
19+
var iOSDeviceSupport: [DirectoryModel] { get set }
2020
var archives: [DirectoryModel] { get set }
2121

2222
var scanProgress: Double { get }

XcodeCleaner/ViewModels/PieChartViewModel.swift

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,20 @@ import SwiftUI
1111
struct PieChartViewModel: PieChartViewModelProtocol {
1212
var items: [PieChartItemModel] = []
1313

14-
mutating func createItems(derivedData: [DirectoryModel], deviceSupport: [DirectoryModel], archives: [DirectoryModel], iOSDeviceLogs: [DirectoryModel], documentationCache: [DirectoryModel]) {
14+
mutating func createItems(derivedData: [DirectoryModel], iOSDeviceSupport: [DirectoryModel], watchOSDeviceSupport: [DirectoryModel], archives: [DirectoryModel], iOSDeviceLogs: [DirectoryModel], documentationCache: [DirectoryModel]) {
1515
var derivedDataSize: Int64 = 0
1616
derivedData.forEach {
1717
derivedDataSize += $0.size
1818
}
1919

20-
var deviceSupportSize: Int64 = 0
21-
deviceSupport.forEach {
22-
deviceSupportSize += $0.size
20+
var iOSDeviceSupportSize: Int64 = 0
21+
iOSDeviceSupport.forEach {
22+
iOSDeviceSupportSize += $0.size
23+
}
24+
25+
var watchOSDeviceSupportSize: Int64 = 0
26+
watchOSDeviceSupport.forEach {
27+
watchOSDeviceSupportSize += $0.size
2328
}
2429

2530
var archivesSize: Int64 = 0
@@ -38,28 +43,30 @@ struct PieChartViewModel: PieChartViewModelProtocol {
3843
}
3944

4045
var derivedData: PieChartItemModel
41-
var deviceSupport: PieChartItemModel
46+
var iOSDeviceSupport: PieChartItemModel
47+
var watchOSDeviceSupport: PieChartItemModel
4248
var archives: PieChartItemModel
4349
var iOSDeviceLogs: PieChartItemModel
4450
var documentationCache: PieChartItemModel
4551

46-
if derivedDataSize == 0 && deviceSupportSize == 0 && archivesSize == 0 && iOSDeviceLogsSize == 0 && documentationCacheSize == 0 {
52+
if derivedDataSize == 0 && iOSDeviceSupportSize == 0 && archivesSize == 0 && iOSDeviceLogsSize == 0 && watchOSDeviceSupportSize == 0 && documentationCacheSize == 0 {
4753
let defaultValue = 1.0
4854

4955
derivedData = PieChartItemModel(value: defaultValue, color: .pink)
50-
deviceSupport = PieChartItemModel(value: defaultValue, color: Color(.cyan))
56+
iOSDeviceSupport = PieChartItemModel(value: defaultValue, color: Color(.cyan))
5157
archives = PieChartItemModel(value: defaultValue, color: .orange)
5258

53-
let items = [archives, deviceSupport, derivedData]
59+
let items = [archives, iOSDeviceSupport, derivedData]
5460
self.items = items
5561
} else {
5662
derivedData = PieChartItemModel(value: Double(derivedDataSize), color: .pink)
57-
deviceSupport = PieChartItemModel(value: Double(deviceSupportSize), color: Color(.cyan))
63+
iOSDeviceSupport = PieChartItemModel(value: Double(iOSDeviceSupportSize), color: Color(.cyan))
64+
watchOSDeviceSupport = PieChartItemModel(value: Double(watchOSDeviceSupportSize), color: .green)
5865
archives = PieChartItemModel(value: Double(archivesSize), color: .orange)
5966
iOSDeviceLogs = PieChartItemModel(value: Double(iOSDeviceLogsSize), color: .purple)
6067
documentationCache = PieChartItemModel(value: Double(documentationCacheSize), color: .gray)
6168

62-
let items = [archives, deviceSupport, derivedData, iOSDeviceLogs, documentationCache]
69+
let items = [archives, iOSDeviceSupport, watchOSDeviceSupport, derivedData, iOSDeviceLogs, documentationCache]
6370

6471
var normalizedItems: [PieChartItemModel] = []
6572

XcodeCleaner/ViewModels/ViewModel.swift

Lines changed: 38 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@ class ViewModel: ObservableObject, ViewModelProtocol {
1919
var totalSize: Int64 = 0
2020

2121
var derivedData: [DirectoryModel] = []
22-
var deviceSupport: [DirectoryModel] = []
22+
var iOSDeviceSupport: [DirectoryModel] = []
23+
var watchOSDeviceSupport: [DirectoryModel] = []
2324
var archives: [DirectoryModel] = []
2425
var iOSDeviceLogs: [DirectoryModel] = []
2526
var documentationCache: [DirectoryModel] = []
@@ -40,26 +41,41 @@ class ViewModel: ObservableObject, ViewModelProtocol {
4041

4142
let derivedDataDirectories = directoryManager.getSubDirectoriesForPath(path: directoryManager.getDerivedDataPath())
4243
directoriesCount += derivedDataDirectories.count
44+
DispatchQueue.global(qos: .utility).async {
45+
self.calculateSize(ofDirectory: &self.derivedData, subDirectories: derivedDataDirectories, type: .derivedData)
46+
}
4347

44-
let deviceSupportDirectories = directoryManager.getSubDirectoriesForPath(path: directoryManager.getDeviceSupportPath())
45-
directoriesCount += deviceSupportDirectories.count
48+
let iOSDeviceSupportDirectories = directoryManager.getSubDirectoriesForPath(path: directoryManager.getIOSDeviceSupportPath())
49+
directoriesCount += iOSDeviceSupportDirectories.count
50+
DispatchQueue.global(qos: .utility).async {
51+
self.calculateSize(ofDirectory: &self.iOSDeviceSupport, subDirectories: iOSDeviceSupportDirectories, type: .iOSDeviceSupport)
52+
}
53+
54+
let watchOSDeviceSupportDirectories = directoryManager.getSubDirectoriesForPath(path: directoryManager.getWatchOSDeviceSupportPath())
55+
directoriesCount += watchOSDeviceSupportDirectories.count
56+
DispatchQueue.global(qos: .utility).async {
57+
self.calculateSize(ofDirectory: &self.watchOSDeviceSupport, subDirectories: watchOSDeviceSupportDirectories, type: .watchOSDeviceSupport)
58+
}
4659

4760
let archivesDirectories = directoryManager.getSubDirectoriesForPath(path: directoryManager.getArchivesPath())
4861
directoriesCount += archivesDirectories.count
62+
DispatchQueue.global(qos: .utility).async {
63+
self.calculateSize(ofDirectory: &self.archives, subDirectories: archivesDirectories, type: .archives)
64+
}
4965

5066
let iOSDeviceLogsDirectories = directoryManager.getSubDirectoriesForPath(path: directoryManager.getIOSDeviceLogsPath())
5167
directoriesCount += iOSDeviceLogsDirectories.count
68+
DispatchQueue.global(qos: .utility).async {
69+
self.calculateSize(ofDirectory: &self.iOSDeviceLogs, subDirectories: iOSDeviceLogsDirectories, type: .iOSDeviceLogs)
70+
}
5271

5372
let documentationCacheDirectories = directoryManager.getSubDirectoriesForPath(path: directoryManager.getDocumentationCachePath())
5473
directoriesCount += documentationCacheDirectories.count
55-
5674
DispatchQueue.global(qos: .utility).async {
57-
self.calculateSize(ofDirectory: &self.derivedData, subDirectories: derivedDataDirectories, type: .derivedData)
58-
self.calculateSize(ofDirectory: &self.deviceSupport, subDirectories: deviceSupportDirectories, type: .deviceSupport)
59-
self.calculateSize(ofDirectory: &self.archives, subDirectories: archivesDirectories, type: .archives)
60-
self.calculateSize(ofDirectory: &self.iOSDeviceLogs, subDirectories: iOSDeviceLogsDirectories, type: .iOSDeviceLogs)
6175
self.calculateSize(ofDirectory: &self.documentationCache, subDirectories: documentationCacheDirectories, type: .documentationCache)
62-
76+
}
77+
78+
DispatchQueue.global(qos: .utility).async {
6379
self.isScanStarted.toggle()
6480
self.isReadyToBeCleaned.toggle()
6581

@@ -93,10 +109,14 @@ class ViewModel: ObservableObject, ViewModelProtocol {
93109
directories = derivedData
94110
directoryName = "Derived Data"
95111
circleColor = .pink
96-
case .deviceSupport:
97-
directories = deviceSupport
98-
directoryName = "Device Support"
112+
case .iOSDeviceSupport:
113+
directories = iOSDeviceSupport
114+
directoryName = "iOS Device Support"
99115
circleColor = Color(.cyan)
116+
case .watchOSDeviceSupport:
117+
directories = watchOSDeviceSupport
118+
directoryName = "watchOS Device Support"
119+
circleColor = .green
100120
case .archives:
101121
directories = archives
102122
directoryName = "Archives"
@@ -107,7 +127,7 @@ class ViewModel: ObservableObject, ViewModelProtocol {
107127
circleColor = .purple
108128
case .documentationCache:
109129
directories = documentationCache
110-
directoryName = "Doc. Cache"
130+
directoryName = "Documentation Cache"
111131
circleColor = .gray
112132
}
113133

@@ -122,7 +142,8 @@ class ViewModel: ObservableObject, ViewModelProtocol {
122142
totalSize = 0
123143

124144
derivedData.removeAll()
125-
deviceSupport.removeAll()
145+
iOSDeviceSupport.removeAll()
146+
watchOSDeviceSupport.removeAll()
126147
archives.removeAll()
127148
iOSDeviceLogs.removeAll()
128149
documentationCache.removeAll()
@@ -131,7 +152,7 @@ class ViewModel: ObservableObject, ViewModelProtocol {
131152
}
132153
func getViewModelForPieChart() -> PieChartViewModelProtocol {
133154
var viewModel = PieChartViewModel()
134-
viewModel.createItems(derivedData: derivedData, deviceSupport: deviceSupport, archives: archives, iOSDeviceLogs: iOSDeviceLogs, documentationCache: documentationCache)
155+
viewModel.createItems(derivedData: derivedData, iOSDeviceSupport: iOSDeviceSupport, watchOSDeviceSupport: watchOSDeviceSupport, archives: archives, iOSDeviceLogs: iOSDeviceLogs, documentationCache: documentationCache)
135156

136157
return viewModel
137158
}
@@ -143,7 +164,8 @@ class ViewModel: ObservableObject, ViewModelProtocol {
143164

144165
DispatchQueue.global(qos: .userInitiated).async {
145166
self.directoryManager.cleanDirectory(forType: .derivedData)
146-
self.directoryManager.cleanDirectory(forType: .deviceSupport)
167+
self.directoryManager.cleanDirectory(forType: .iOSDeviceSupport)
168+
self.directoryManager.cleanDirectory(forType: .watchOSDeviceSupport)
147169
self.directoryManager.cleanDirectory(forType: .archives)
148170
self.directoryManager.cleanDirectory(forType: .iOSDeviceLogs)
149171
self.directoryManager.cleanDirectory(forType: .documentationCache)

XcodeCleaner/Views/BodyViews/BodyView.swift

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,16 @@ struct BodyView: View {
1212
var viewModel: PieChartViewModelProtocol
1313

1414
var body: some View {
15-
HStack {
16-
DirectoryListView()
17-
.frame(width: 350)
18-
GeometryReader { geometryReader in
19-
PieChartView(items: self.viewModel.getPCItems())
20-
.frame(width: geometryReader.size.width / 2, height: geometryReader.size.height / 2)
21-
.position(CGPoint(x: geometryReader.size.width / 2, y: geometryReader.size.height / 2))
22-
.animation(.easeIn(duration: 1.0))
15+
GeometryReader { globalGeometry in
16+
HStack {
17+
DirectoryListView()
18+
.frame(width: 450)
19+
GeometryReader { geometryReader in
20+
PieChartView(items: self.viewModel.getPCItems())
21+
.frame(width: globalGeometry.size.width / 2, height: globalGeometry.size.height / 2)
22+
.position(CGPoint(x: geometryReader.size.width / 2, y: geometryReader.size.height / 2))
23+
.animation(.easeIn(duration: 1.0))
24+
}
2325
}
2426
}
2527
}
@@ -28,7 +30,7 @@ struct BodyView: View {
2830
struct MainView_Previews: PreviewProvider {
2931
static var previews: some View {
3032
var viewModel = PieChartViewModel()
31-
viewModel.createItems(derivedData: [DirectoryModel(name: "Test", size: 2)], deviceSupport: [DirectoryModel(name: "Test", size: 2)], archives: [DirectoryModel(name: "Test", size: 2)], iOSDeviceLogs: [DirectoryModel(name: "Test", size: 2)], documentationCache: [DirectoryModel(name: "Test", size: 2)])
33+
viewModel.createItems(derivedData: [DirectoryModel(name: "Test", size: 2)], iOSDeviceSupport: [DirectoryModel(name: "Test", size: 2)], watchOSDeviceSupport: [DirectoryModel(name: "Test", size: 4)], archives: [DirectoryModel(name: "Test", size: 2)], iOSDeviceLogs: [DirectoryModel(name: "Test", size: 2)], documentationCache: [DirectoryModel(name: "Test", size: 2)])
3234

3335
return BodyView(viewModel: viewModel)
3436
.environmentObject(ViewModel())

XcodeCleaner/Views/BodyViews/DropDownView.swift

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,21 +17,23 @@ struct DropDownView: View {
1717
HStack {
1818
HStack {
1919
Text("\(viewModel.directories.count == 0 ? "": isExpanded ? "": "") \(viewModel.directoryName)")
20-
.font(.title)
20+
.font(.system(size: 22))
2121
.fontWeight(.heavy)
2222
Spacer()
2323

2424
Text("\(BytesToStringFormatter.format(size: viewModel.totalSize))")
2525
.foregroundColor(viewModel.circleColor)
26-
.font(.title)
26+
.font(.system(size: 22))
2727
.fontWeight(.heavy)
2828

2929
Circle()
3030
.fill(viewModel.circleColor)
31-
.frame(width: 30, height: 30)
31+
.frame(width: 22, height: 22)
3232
}
3333
}.onTapGesture {
34-
self.isExpanded.toggle()
34+
withAnimation {
35+
self.isExpanded.toggle()
36+
}
3537
}
3638
if viewModel.directories.count > 0 {
3739
if isExpanded {

XcodeCleaner/Views/FooterViews/FooterView.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ struct FooterView: View {
2121
.padding(10)
2222

2323
Text("\(BytesToStringFormatter.format(size: viewModel.totalSize, allowedUnits: [.useGB]))")
24-
.font(.title)
24+
.font(.system(size: 22))
2525
.fontWeight(.heavy)
2626
.foregroundColor(.pink)
2727
.frame(width: 100)

0 commit comments

Comments
 (0)