macOS

[Framework] 파인더 커스텀 FIFinderSync(2)

Daesiker 2021. 5. 3. 14:35
반응형

Custom Toolbar 생성

  • Toolbar 이름 정의
override var toolbarItemName: String {
        return "FinderSy"
    }

FinderSy라는 타이틀을 가진 Toolbar을 생성해준다

 

  • ToolBar 세부 내용 정의
override var toolbarItemToolTip: String {
        return "FinderSy: Click the toolbar item for a menu."
}

Toolbar안에 어떤 세부적인 기능들이 있는지 명시해준다.

 

  • Toolbar의 이미지 설정
override var toolbarItemImage: NSImage {
        return NSImage(named: NSImage.cautionName)!
    }

툴바의 이미지를 NSImage 타입으로 설정한다.

 


디렉토리 호출

  • beginObservingDirectory
override func beginObservingDirectory(at url: URL) {
        // The user is now seeing the container's contents.
        // If they see it in more than one view at a time, we're only told once.
        NSLog("beginObservingDirectoryAtURL: %@", url.path as NSString)
    }

커스텀한 폴더안에 있는 들어가는 시점에 들어간 폴더의 url을 호출하는 함수이다. 폴더에 처음 들어갔을 때 실행하고 싶은 함수를 넣으면 호출이 된다. 현재 이 메서드는 그냥 해당 폴더의 url을 로그로 찍어준다.

 

  • endObservingDirectory
override func endObservingDirectory(at url: URL) {
        // The user is no longer seeing the container's contents.
        NSLog("endObservingDirectoryAtURL: %@", url.path as NSString)
    }

해당 폴더에서 다른 폴더에서 넘어가는 시점에 호출되는 함수이다.

 


AppDelegate.swift

AppDelegate에서 app이 실행되어서 켜지는 시점에 FinderExtension이 잘 켜졌는지 확인해야한다.

func applicationDidFinishLaunching(_ aNotification: Notification) {
        DispatchQueue.main.async {
            if FIFinderSyncController.isExtensionEnabled {
                NSApplication.shared.terminate(self)
            } else {
                let alert = NSAlert()
                alert.alertStyle = .warning
                alert.informativeText = "ExtensionInformative"
                alert.messageText = "ExtensionMessage"
                alert.addButton(withTitle: "open")
                alert.addButton(withTitle: "cancel")
                if alert.runModal() == .alertFirstButtonReturn {
                    FIFinderSyncController.showExtensionManagementInterface()
                    NSApplication.shared.terminate(self)
                }
            }
        }
    }

FiFinderSyncController.isExtensionEnabled는 애플리케이션이 사용자가 확장을 활성화했는지 여부를 판단할 수 있다. 활성화가 되어있으면 NSApplication.shared.terminate(self)를 통해 애플리케이션을 완전히 종료시키고 활성화가 안되어있으면 환경설정에 FinderExtension창을 띄워준다.

 

여기에서 내가 만든 애플리케이션이 메뉴에 나타나는 것을 확인할 수 있고 해당 체크박스를 선택하면 우리가 커스텀한 파인더를 직접 실행이 가능하다.

 

반응형

'macOS' 카테고리의 다른 글

[Framework] 파인더 커스텀 FIFinderSync(1)  (0) 2021.04.29
[iOS, macOS] PromiseKit  (0) 2021.03.23
[Swift] Protocol(1)  (0) 2021.03.16
[Swift] UserDefaults  (0) 2021.03.15
[iOS, macOS] Alamofire Framework(3)  (2) 2021.03.11