Skip to content

Commit

Permalink
Merge branch 'main' into back
Browse files Browse the repository at this point in the history
  • Loading branch information
0right0705 authored Feb 15, 2024
2 parents d1cb319 + 42c4786 commit 71bf1f4
Show file tree
Hide file tree
Showing 5 changed files with 143 additions and 2 deletions.
6 changes: 4 additions & 2 deletions AlwaysOnSize.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -421,12 +421,13 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
CODE_SIGN_ENTITLEMENTS = AlwaysOnSize/AlwaysOnSize.entitlements;
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "-";
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_ASSET_PATHS = "\"AlwaysOnSize/Preview Content\"";
DEVELOPMENT_TEAM = CY7T52VJ8W;
ENABLE_HARDENED_RUNTIME = YES;
ENABLE_HARDENED_RUNTIME = NO;
ENABLE_PREVIEWS = YES;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_KEY_NSHumanReadableCopyright = "";
Expand All @@ -448,12 +449,13 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
CODE_SIGN_ENTITLEMENTS = AlwaysOnSize/AlwaysOnSize.entitlements;
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "-";
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_ASSET_PATHS = "\"AlwaysOnSize/Preview Content\"";
DEVELOPMENT_TEAM = CY7T52VJ8W;
ENABLE_HARDENED_RUNTIME = YES;
ENABLE_HARDENED_RUNTIME = NO;
ENABLE_PREVIEWS = YES;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_KEY_NSHumanReadableCopyright = "";
Expand Down
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>SchemeUserState</key>
<dict>
<key>AlwaysOnSize.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>0</integer>
</dict>
</dict>
</dict>
</plist>
69 changes: 69 additions & 0 deletions AlwaysOnSize/AlwaysOnSizeApp.swift
Original file line number Diff line number Diff line change
Expand Up @@ -86,4 +86,73 @@ func findFileSize() -> [String] {
return dicarr
}

struct FileInformation {
var fileName: String
var fileSize: Double
var path: String
var isChecked: Bool = false // Checkbox의 상태를 나타내는 속성
}

func findFileInformations() -> [FileInformation] {
var fileInformations: [FileInformation] = []

if let filePaths = try? FileManager.default.contentsOfDirectory(at: .downloadsDirectory, includingPropertiesForKeys: [.fileSizeKey]) {
for filePath in filePaths {
do {
let attr = try FileManager.default.attributesOfItem(atPath: filePath.path)
let fileSize = attr[FileAttributeKey.size] as? Double ?? 0
let fileName = filePath.lastPathComponent // 옵셔널 체이닝을 사용하여 안전하게 파일 이름을 가져옵니다.
let path = filePath.path

fileInformations.append(FileInformation(fileName: fileName, fileSize: fileSize, path: path))
} catch {
print("Error: \(error)")
}
}
} else {
print("Failed to get contents of directory.")
}

return fileInformations
}

func totalCheckedFileSize(fileInformations: [FileInformation]) -> Double {
var totalSize: Double = 0
for fileInfo in fileInformations {
if fileInfo.isChecked {
totalSize += fileInfo.fileSize
}
}
return totalSize
}

func deleteFile(atPath path: String, filename: String) -> Bool {
let fileManager = FileManager.default
let filePath = path

do {
// 파일이 존재하는지 확인합니다.
if fileManager.fileExists(atPath: filePath) {
// 파일을 삭제합니다.
try fileManager.removeItem(atPath: filePath)
print("File deleted successfully at path: \(filePath)")
return true
} else {
print("File does not exist at path: \(filePath)")
return false
}
} catch {
print("Error deleting file: \(error)")
return false
}
}

func deleteFiles(fileInformations: [FileInformation]) {
for fileInfo in fileInformations {
if fileInfo.isChecked {
_ = deleteFile(atPath: fileInfo.path, filename: fileInfo.fileName)
}
}
}


56 changes: 56 additions & 0 deletions AlwaysOnSize/ContentView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import SwiftUI

struct ContentView: View {
@State private var fileInformations: [FileInformation] = []
@State var name : String = ""
@State var storage : String = getFreeSizeAsString()
var size : [String] = findFileSize()
Expand All @@ -25,11 +26,66 @@ struct ContentView: View {
}

timer.fire()
@State var size : String = findFileSize()

func updateFileInformations() {
fileInformations = findFileInformations()
}

var body: some View {
List(fileInformations.indices, id: \.self) { index in
// 각 파일 정보에 대한 Checkbox를 생성합니다.
Toggle(isOn: $fileInformations[index].isChecked) {
VStack(alignment: .leading) {
Text("Filename: \(fileInformations[index].fileName)")
Text("Filesize: \(getFormatedNumberString(size: fileInformations[index].fileSize))")
Text("Path: \(fileInformations[index].path)")
}
}
}
.onAppear {
self.fileInformations = findFileInformations()
}
.padding()
HStack(){
VStack(alignment: .leading) {
Image(systemName: "globe")
.imageScale(.large)
.foregroundStyle(.tint)
Text(storage)
Text(size)
}
Text("Total Checked File Size:\n \(totalCheckedFileSize(fileInformations: fileInformations)) bytes")
Button(action: {
deleteFiles(fileInformations: fileInformations)
updateFileInformations()
storage = getFreeSizeAsString()
size = findFileSize()
}, label: {
Text("Delete")
})
.padding()
}
.padding()
}
}

//struct ContentView: View {
// @State var name : String = ""
// var storage : String = getFreeSizeAsString()
// var size : String = findFileSize()
// var body: some View {
// VStack {
// Image(systemName: "globe")
// .imageScale(.large)
// .foregroundStyle(.tint)
// Text(storage)
// Text(size)
// }
// .padding()
// }
//}

#Preview {
ContentView()
}
Expand Down

0 comments on commit 71bf1f4

Please sign in to comment.