diff --git a/HalfFifty_FE/HalfFifty_FE.xcodeproj/project.pbxproj b/HalfFifty_FE/HalfFifty_FE.xcodeproj/project.pbxproj index f12cf50..7a8f5e0 100644 --- a/HalfFifty_FE/HalfFifty_FE.xcodeproj/project.pbxproj +++ b/HalfFifty_FE/HalfFifty_FE.xcodeproj/project.pbxproj @@ -6,8 +6,37 @@ objectVersion = 77; objects = { +/* Begin PBXBuildFile section */ + C9270D712D36472E00BDFD97 /* HalfFifty_Watch Watch App.app in Embed Watch Content */ = {isa = PBXBuildFile; fileRef = C9270D642D36472D00BDFD97 /* HalfFifty_Watch Watch App.app */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + C9270D6F2D36472E00BDFD97 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = A5EAB71C2D2B6D2900FE064E /* Project object */; + proxyType = 1; + remoteGlobalIDString = C9270D632D36472C00BDFD97; + remoteInfo = "HalfFifty_Watch Watch App"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + C9270D752D36472E00BDFD97 /* Embed Watch Content */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "$(CONTENTS_FOLDER_PATH)/Watch"; + dstSubfolderSpec = 16; + files = ( + C9270D712D36472E00BDFD97 /* HalfFifty_Watch Watch App.app in Embed Watch Content */, + ); + name = "Embed Watch Content"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + /* Begin PBXFileReference section */ A5EAB7242D2B6D2900FE064E /* HalfFifty_FE.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = HalfFifty_FE.app; sourceTree = BUILT_PRODUCTS_DIR; }; + C9270D642D36472D00BDFD97 /* HalfFifty_Watch Watch App.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "HalfFifty_Watch Watch App.app"; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFileSystemSynchronizedRootGroup section */ @@ -16,6 +45,11 @@ path = HalfFifty_FE; sourceTree = ""; }; + C9270D652D36472D00BDFD97 /* HalfFifty_Watch Watch App */ = { + isa = PBXFileSystemSynchronizedRootGroup; + path = "HalfFifty_Watch Watch App"; + sourceTree = ""; + }; /* End PBXFileSystemSynchronizedRootGroup section */ /* Begin PBXFrameworksBuildPhase section */ @@ -26,6 +60,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + C9270D612D36472C00BDFD97 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ @@ -33,6 +74,7 @@ isa = PBXGroup; children = ( A5EAB7262D2B6D2900FE064E /* HalfFifty_FE */, + C9270D652D36472D00BDFD97 /* HalfFifty_Watch Watch App */, A5EAB7252D2B6D2900FE064E /* Products */, ); sourceTree = ""; @@ -41,6 +83,7 @@ isa = PBXGroup; children = ( A5EAB7242D2B6D2900FE064E /* HalfFifty_FE.app */, + C9270D642D36472D00BDFD97 /* HalfFifty_Watch Watch App.app */, ); name = Products; sourceTree = ""; @@ -55,10 +98,12 @@ A5EAB7202D2B6D2900FE064E /* Sources */, A5EAB7212D2B6D2900FE064E /* Frameworks */, A5EAB7222D2B6D2900FE064E /* Resources */, + C9270D752D36472E00BDFD97 /* Embed Watch Content */, ); buildRules = ( ); dependencies = ( + C9270D702D36472E00BDFD97 /* PBXTargetDependency */, ); fileSystemSynchronizedGroups = ( A5EAB7262D2B6D2900FE064E /* HalfFifty_FE */, @@ -70,6 +115,28 @@ productReference = A5EAB7242D2B6D2900FE064E /* HalfFifty_FE.app */; productType = "com.apple.product-type.application"; }; + C9270D632D36472C00BDFD97 /* HalfFifty_Watch Watch App */ = { + isa = PBXNativeTarget; + buildConfigurationList = C9270D722D36472E00BDFD97 /* Build configuration list for PBXNativeTarget "HalfFifty_Watch Watch App" */; + buildPhases = ( + C9270D602D36472C00BDFD97 /* Sources */, + C9270D612D36472C00BDFD97 /* Frameworks */, + C9270D622D36472C00BDFD97 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + fileSystemSynchronizedGroups = ( + C9270D652D36472D00BDFD97 /* HalfFifty_Watch Watch App */, + ); + name = "HalfFifty_Watch Watch App"; + packageProductDependencies = ( + ); + productName = "HalfFifty_Watch Watch App"; + productReference = C9270D642D36472D00BDFD97 /* HalfFifty_Watch Watch App.app */; + productType = "com.apple.product-type.application"; + }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ @@ -77,12 +144,15 @@ isa = PBXProject; attributes = { BuildIndependentTargetsInParallel = 1; - LastSwiftUpdateCheck = 1610; + LastSwiftUpdateCheck = 1620; LastUpgradeCheck = 1610; TargetAttributes = { A5EAB7232D2B6D2900FE064E = { CreatedOnToolsVersion = 16.1; }; + C9270D632D36472C00BDFD97 = { + CreatedOnToolsVersion = 16.2; + }; }; }; buildConfigurationList = A5EAB71F2D2B6D2900FE064E /* Build configuration list for PBXProject "HalfFifty_FE" */; @@ -100,6 +170,7 @@ projectRoot = ""; targets = ( A5EAB7232D2B6D2900FE064E /* HalfFifty_FE */, + C9270D632D36472C00BDFD97 /* HalfFifty_Watch Watch App */, ); }; /* End PBXProject section */ @@ -112,6 +183,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + C9270D622D36472C00BDFD97 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -122,8 +200,23 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + C9270D602D36472C00BDFD97 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXSourcesBuildPhase section */ +/* Begin PBXTargetDependency section */ + C9270D702D36472E00BDFD97 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = C9270D632D36472C00BDFD97 /* HalfFifty_Watch Watch App */; + targetProxy = C9270D6F2D36472E00BDFD97 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + /* Begin XCBuildConfiguration section */ A5EAB7302D2B6D2A00FE064E /* Debug */ = { isa = XCBuildConfiguration; @@ -252,7 +345,7 @@ CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_ASSET_PATHS = "\"HalfFifty_FE/Preview Content\""; - DEVELOPMENT_TEAM = 78678N7NGX; + DEVELOPMENT_TEAM = ""; ENABLE_PREVIEWS = YES; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_KEY_NSCameraUsageDescription = "앱에서 카메라를 사용하기 위해 권한이 필요합니다."; @@ -261,6 +354,7 @@ INFOPLIST_KEY_UILaunchScreen_Generation = YES; INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_WKCompanionAppBundleIdentifier = "halffifty.HalfFifty-FE"; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -282,7 +376,7 @@ CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_ASSET_PATHS = "\"HalfFifty_FE/Preview Content\""; - DEVELOPMENT_TEAM = 78678N7NGX; + DEVELOPMENT_TEAM = ""; ENABLE_PREVIEWS = YES; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_KEY_NSCameraUsageDescription = "앱에서 카메라를 사용하기 위해 권한이 필요합니다."; @@ -291,6 +385,7 @@ INFOPLIST_KEY_UILaunchScreen_Generation = YES; INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_WKCompanionAppBundleIdentifier = "halffifty.HalfFifty-FE"; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -304,6 +399,66 @@ }; name = Release; }; + C9270D732D36472E00BDFD97 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_ASSET_PATHS = "\"HalfFifty_Watch Watch App/Preview Content\""; + DEVELOPMENT_TEAM = ""; + ENABLE_PREVIEWS = YES; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_CFBundleDisplayName = HalfFifty_Watch; + INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown"; + INFOPLIST_KEY_WKCompanionAppBundleIdentifier = "com.minji.HalfFifty-FE"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = "com.minji.HalfFifty-FE.watchkitapp"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = watchos; + SKIP_INSTALL = YES; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 4; + WATCHOS_DEPLOYMENT_TARGET = 11.2; + }; + name = Debug; + }; + C9270D742D36472E00BDFD97 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_ASSET_PATHS = "\"HalfFifty_Watch Watch App/Preview Content\""; + DEVELOPMENT_TEAM = ""; + ENABLE_PREVIEWS = YES; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_CFBundleDisplayName = HalfFifty_Watch; + INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown"; + INFOPLIST_KEY_WKCompanionAppBundleIdentifier = "com.minji.HalfFifty-FE"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = "com.minji.HalfFifty-FE.watchkitapp"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = watchos; + SKIP_INSTALL = YES; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 4; + WATCHOS_DEPLOYMENT_TARGET = 11.2; + }; + name = Release; + }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ @@ -325,6 +480,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + C9270D722D36472E00BDFD97 /* Build configuration list for PBXNativeTarget "HalfFifty_Watch Watch App" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C9270D732D36472E00BDFD97 /* Debug */, + C9270D742D36472E00BDFD97 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; /* End XCConfigurationList section */ }; rootObject = A5EAB71C2D2B6D2900FE064E /* Project object */; diff --git a/HalfFifty_FE/HalfFifty_FE.xcodeproj/project.xcworkspace/xcuserdata/jeong-yun-lim.xcuserdatad/UserInterfaceState.xcuserstate b/HalfFifty_FE/HalfFifty_FE.xcodeproj/project.xcworkspace/xcuserdata/jeong-yun-lim.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000..6da44df Binary files /dev/null and b/HalfFifty_FE/HalfFifty_FE.xcodeproj/project.xcworkspace/xcuserdata/jeong-yun-lim.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/HalfFifty_FE/HalfFifty_FE.xcodeproj/xcuserdata/jeong-yun-lim.xcuserdatad/xcschemes/xcschememanagement.plist b/HalfFifty_FE/HalfFifty_FE.xcodeproj/xcuserdata/jeong-yun-lim.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..35d6fa9 --- /dev/null +++ b/HalfFifty_FE/HalfFifty_FE.xcodeproj/xcuserdata/jeong-yun-lim.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,19 @@ + + + + + SchemeUserState + + HalfFifty_FE.xcscheme_^#shared#^_ + + orderHint + 0 + + HalfFifty_Watch Watch App.xcscheme_^#shared#^_ + + orderHint + 1 + + + + diff --git a/HalfFifty_FE/HalfFifty_Watch Watch App/Assets.xcassets/AccentColor.colorset/Contents.json b/HalfFifty_FE/HalfFifty_Watch Watch App/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 0000000..eb87897 --- /dev/null +++ b/HalfFifty_FE/HalfFifty_Watch Watch App/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/HalfFifty_FE/HalfFifty_Watch Watch App/Assets.xcassets/AppIcon.appiconset/Contents.json b/HalfFifty_FE/HalfFifty_Watch Watch App/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..49c81cd --- /dev/null +++ b/HalfFifty_FE/HalfFifty_Watch Watch App/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,13 @@ +{ + "images" : [ + { + "idiom" : "universal", + "platform" : "watchos", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/HalfFifty_FE/HalfFifty_Watch Watch App/Assets.xcassets/Contents.json b/HalfFifty_FE/HalfFifty_Watch Watch App/Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/HalfFifty_FE/HalfFifty_Watch Watch App/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/HalfFifty_FE/HalfFifty_Watch Watch App/ContentView.swift b/HalfFifty_FE/HalfFifty_Watch Watch App/ContentView.swift new file mode 100644 index 0000000..82c8216 --- /dev/null +++ b/HalfFifty_FE/HalfFifty_Watch Watch App/ContentView.swift @@ -0,0 +1,71 @@ +// +// ContentView.swift +// HalfFifty_Watch Watch App +// +// Created by 임정윤 on 1/14/25. +// + +import SwiftUI + +struct ContentView: View { + var body: some View { + VStack(spacing: 15) { + HStack { + Spacer() + Text("手다쟁이") + .font(.title2) + .fontWeight(.semibold) + .foregroundColor(.blue) + } + + VStack(spacing: 5) { + Button(action: { + print("음성변환 버튼 클릭됨") + }) { + HStack(spacing: 8) { + ZStack { + Circle() + .fill(Color.white) + .frame(width: 32, height: 32) + Image(systemName: "mic.fill") + .foregroundColor(Color(red: 0.2549019607843137, green: 0.4117647058823529, blue: 0.8823529411764706)) + } + Text("음성변환") + .font(.headline) + .foregroundColor(.primary) + Spacer() + } + .padding() + .background(RoundedRectangle(cornerRadius: 10).fill(Color.gray).opacity(0.5)) + } + .buttonStyle(PlainButtonStyle()) + + Button(action: { + print("키워드 관리 버튼 클릭됨") + }) { + HStack(spacing: 8) { + ZStack { + Circle() + .fill(Color(red: 0.2549019607843137, green: 0.4117647058823529, blue: 0.8823529411764706)) + .frame(width: 32, height: 32) + Image(systemName: "tag.fill") + .foregroundColor(.white) + } + Text("키워드 관리") + .font(.headline) + .foregroundColor(.primary) + Spacer() + } + .padding() + .background(RoundedRectangle(cornerRadius: 10).fill(Color.gray).opacity(0.5)) + } + .buttonStyle(PlainButtonStyle()) + } + } + .padding() + } +} + +#Preview { + ContentView() +} diff --git a/HalfFifty_FE/HalfFifty_Watch Watch App/HalfFifty_WatchApp.swift b/HalfFifty_FE/HalfFifty_Watch Watch App/HalfFifty_WatchApp.swift new file mode 100644 index 0000000..107c3f5 --- /dev/null +++ b/HalfFifty_FE/HalfFifty_Watch Watch App/HalfFifty_WatchApp.swift @@ -0,0 +1,17 @@ +// +// HalfFifty_WatchApp.swift +// HalfFifty_Watch Watch App +// +// Created by 임정윤 on 1/14/25. +// + +import SwiftUI + +@main +struct HalfFifty_Watch_Watch_AppApp: App { + var body: some Scene { + WindowGroup { + ContentView() + } + } +} diff --git a/HalfFifty_FE/HalfFifty_Watch Watch App/Preview Content/Preview Assets.xcassets/Contents.json b/HalfFifty_FE/HalfFifty_Watch Watch App/Preview Content/Preview Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/HalfFifty_FE/HalfFifty_Watch Watch App/Preview Content/Preview Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +}