Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ name: CI
on: [push, pull_request]

env:
DEVELOPER_DIR: /Applications/Xcode_15.3.app
DEVELOPER_DIR: /Applications/Xcode_16.2.app

jobs:
build:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -554,13 +554,13 @@ class CalculateCalendarLogicTests: XCTestCase {
// 建国記念の日: 2025年2月11日(火曜日)
(2025, 2, 11, true),

// 天皇誕生日: 2024年2月23日(日曜日)
// 天皇誕生日: 2025年2月23日(日曜日)
(2025, 2, 23, true),

// 振替休日: 2024年2月24日(月曜日)
// 振替休日: 2025年2月24日(月曜日)
(2025, 2, 24, true),

// 春分の日: 2024年3月20日(木曜日)
// 春分の日: 2025年3月20日(木曜日)
(2025, 3, 20, true),

// 昭和の日: 2025年4月29日(火曜日)
Expand Down Expand Up @@ -602,6 +602,60 @@ class CalculateCalendarLogicTests: XCTestCase {
// 振替休日: 2025年11月24日(月曜日)
(2025, 11, 24, true),

// 2026年
// 元日: 2026年1月1日(木曜日)
(2026, 1, 1, true),

// 成人の日: 2026年1月12日(月曜日)
(2026, 1, 12, true),

// 建国記念の日: 2026年2月11日(水曜日)
(2026, 2, 11, true),

// 天皇誕生日: 2026年2月23日(月曜日)
(2026, 2, 23, true),

// 春分の日: 2026年3月20日(金曜日)
(2026, 3, 20, true),

// 昭和の日: 2026年4月29日(水曜日)
(2026, 4, 29, true),

// 憲法記念日: 2026年5月3日(日曜日)
(2026, 5, 3, true),

// みどりの日: 2026年5月4日(月曜日)
(2026, 5, 4, true),

// こどもの日: 2026年5月5日(火曜日)
(2026, 5, 5, true),

// 振替休日: 2026年5月6日(水曜日)
(2026, 5, 6, true),

// 海の日: 2026年7月20日(月曜日)
(2026, 7, 20, true),

// 山の日: 2026年8月11日(火曜日)
(2026, 8, 11, true),

// 敬老の日: 2026年9月21日(月曜日)
(2026, 9, 21, true),

// 振替休日: 2026年9月22日(火曜日)
(2026, 9, 22, true),

// 秋分の日: 2026年9月23日(水曜日)
(2026, 9, 23, true),

// スポーツの日: 2026年10月12日(月曜日)
(2026, 10, 12, true),

// 文化の日: 2026年11月3日(火曜日)
(2026, 11, 3, true),

// 勤労感謝の日: 2026年11月23日(月曜日)
(2026, 11, 23, true),
]
testCases.forEach { (arg) in

Expand Down
4 changes: 4 additions & 0 deletions handMadeCalendarAdvance.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
DE7397041CCB4EC100A9A222 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = DE7397021CCB4EC100A9A222 /* LaunchScreen.storyboard */; };
DE73970F1CCB4EC100A9A222 /* handMadeCalendarAdvanceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE73970E1CCB4EC100A9A222 /* handMadeCalendarAdvanceTests.swift */; };
DE73971A1CCB4EC100A9A222 /* handMadeCalendarAdvanceUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE7397191CCB4EC100A9A222 /* handMadeCalendarAdvanceUITests.swift */; };
DE7609502F05DFBF005D8CC2 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE76094F2F05DFBF005D8CC2 /* SceneDelegate.swift */; };
DEE369B4257C8A1600A22800 /* MainViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DEE369B3257C8A1600A22800 /* MainViewController.swift */; };
DEE369C3257C8E5A00A22800 /* DatePickerCalendarViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DEE369C2257C8E5A00A22800 /* DatePickerCalendarViewController.swift */; };
DEE369D1257CCD3400A22800 /* DisplayDateTextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = DEE369D0257CCD3400A22800 /* DisplayDateTextField.swift */; };
Expand Down Expand Up @@ -110,6 +111,7 @@
DE7397151CCB4EC100A9A222 /* handMadeCalendarAdvanceUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = handMadeCalendarAdvanceUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
DE7397191CCB4EC100A9A222 /* handMadeCalendarAdvanceUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = handMadeCalendarAdvanceUITests.swift; sourceTree = "<group>"; };
DE73971B1CCB4EC100A9A222 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
DE76094F2F05DFBF005D8CC2 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = "<group>"; };
DEE369B3257C8A1600A22800 /* MainViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainViewController.swift; sourceTree = "<group>"; };
DEE369C2257C8E5A00A22800 /* DatePickerCalendarViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DatePickerCalendarViewController.swift; sourceTree = "<group>"; };
DEE369D0257CCD3400A22800 /* DisplayDateTextField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DisplayDateTextField.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -220,6 +222,7 @@
DE0166BA1CDE40DC002BB133 /* Component */,
DEE369BB257C8B5600A22800 /* ViewController */,
DE7396F91CCB4EC100A9A222 /* AppDelegate.swift */,
DE76094F2F05DFBF005D8CC2 /* SceneDelegate.swift */,
DE7396FD1CCB4EC100A9A222 /* Main.storyboard */,
DE7397001CCB4EC100A9A222 /* Assets.xcassets */,
DE7397021CCB4EC100A9A222 /* LaunchScreen.storyboard */,
Expand Down Expand Up @@ -618,6 +621,7 @@
files = (
DEE369D1257CCD3400A22800 /* DisplayDateTextField.swift in Sources */,
DEE369C3257C8E5A00A22800 /* DatePickerCalendarViewController.swift in Sources */,
DE7609502F05DFBF005D8CC2 /* SceneDelegate.swift in Sources */,
DE03CFF329608C650054BCF1 /* NewCalendarViewController.swift in Sources */,
DE7396FC1CCB4EC100A9A222 /* MonthlyCalendarViewController.swift in Sources */,
DE4977542D26609200FEC950 /* DatePickerSelectView.swift in Sources */,
Expand Down
30 changes: 9 additions & 21 deletions handMadeCalendarAdvance/AppDelegate.swift
Original file line number Diff line number Diff line change
Expand Up @@ -11,36 +11,24 @@ import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

var window: UIWindow?


func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
return true
}

func applicationWillResignActive(_ application: UIApplication) {
// Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
// Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
}

func applicationDidEnterBackground(_ application: UIApplication) {
// Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
// If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
}

func applicationWillEnterForeground(_ application: UIApplication) {
// Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
}
// MARK: UISceneSession Lifecycle

func applicationDidBecomeActive(_ application: UIApplication) {
// Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {
// Called when a new scene session is being created.
// Use this method to select a configuration to create the new scene with.
return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role)
}

func applicationWillTerminate(_ application: UIApplication) {
// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set<UISceneSession>) {
// Called when the user discards a scene session.
// If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions.
// Use this method to release any resources that were specific to the discarded scenes, as they will not return.
}


}

19 changes: 19 additions & 0 deletions handMadeCalendarAdvance/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -34,5 +34,24 @@
<array>
<string>UIInterfaceOrientationPortrait</string>
</array>
<key>UIApplicationSceneManifest</key>
<dict>
<key>UIApplicationSupportsMultipleScenes</key>
<false/>
<key>UISceneConfigurations</key>
<dict>
<key>UIWindowSceneSessionRoleApplication</key>
<array>
<dict>
<key>UISceneConfigurationName</key>
<string>Default Configuration</string>
<key>UISceneDelegateClassName</key>
<string>$(PRODUCT_MODULE_NAME).SceneDelegate</string>
<key>UISceneStoryboardFile</key>
<string>Main</string>
</dict>
</array>
</dict>
</dict>
</dict>
</plist>
50 changes: 50 additions & 0 deletions handMadeCalendarAdvance/SceneDelegate.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
//
// SceneDelegate.swift
// handMadeCalendarAdvance
//
// Created by 酒井文也 on 2026/01/01.
// Copyright © 2026年 just1factory. All rights reserved.
//

import UIKit

class SceneDelegate: UIResponder, UIWindowSceneDelegate {

var window: UIWindow?

func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
// Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.
// If using a storyboard, the `window` property will automatically be initialized and attached to the scene.
// This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead).
guard let _ = (scene as? UIWindowScene) else { return }
}

func sceneDidDisconnect(_ scene: UIScene) {
// Called as the scene is being released by the system.
// This occurs shortly after the scene enters the background, or when its session is discarded.
// Release any resources associated with this scene that can be re-created the next time the scene connects.
// The scene may re-connect later, as its session was not necessarily discarded (see `application:didDiscardSceneSessions` instead).
}

func sceneDidBecomeActive(_ scene: UIScene) {
// Called when the scene has moved from an inactive state to an active state.
// Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive.
}

func sceneWillResignActive(_ scene: UIScene) {
// Called when the scene will move from an active state to an inactive state.
// This may occur due to temporary interruptions (ex. an incoming phone call).
}

func sceneWillEnterForeground(_ scene: UIScene) {
// Called as the scene transitions from the background to the foreground.
// Use this method to undo the changes made on entering the background.
}

func sceneDidEnterBackground(_ scene: UIScene) {
// Called as the scene transitions from the foreground to the background.
// Use this method to save data, release shared resources, and store enough scene-specific state information
// to restore the scene back to its current state.
}

}