2009年11月27日金曜日

PrefPaneから常駐プログラムの制御(3)

環境設定パネルから常駐プログラムを制御する時の覚え書き、その3。


PFKeyAvailerPrefは、ファンクションキーにアプリケーションや書類を登録して、キー一発で起動できるようにするシステム環境設定パネルです。


その1の動作概要に沿って具体的な処理を記載します。

今回はは、「初期設定の変更時の流れ」です。


PFKeyAvailerPrefで、ユーザーがファンクションキーで起動する対象を変更した時の処理は以下のとおりです。


2 初期設定の変更時の流れ

2.1 ユーザーが、システム環境設定上でPFKeyAvailerPref起動する。

2.2 ユーザーが、ファンクションキーにアプリケーションや書類を登録する。


フィールドへのドロップや、ファイル選択シートによって得られた起動対象ファイルのフルパスをNSStringの配列にファンクションキーの番号に対応させて記憶します。


2.3 PFKeyAvailerPrefが、登録されたアプリケーションや書類を初期設定ファイルに書き込む。


PFKeyAvailerPrefの初期設定ファイルに、ファンクションキー毎に対応する起動対象ファイルのフルパスを書き込みます。


2.4 PFKeyAvailerPrefが、PFKeyAvailerXdに初期設定ファイルが変更されたことを通知する。


NSDistributedNotificationCenter でイベントを送信します。


ソース:PFKeyAvailerXPrefPref.m


NSDistributedNotificationCenter *center = [ NSDistributedNotificationCenter defaultCenter ];


// Distributed NotificationPFKeyAvailerXdにイベントを送信)

[ center postNotificationName : @"PFKeyAvailerX Notification"

object : @"com.KyasuSoft.PFKeyAvailerX"

userInfo : nil

deliverImmediately : YES ];



2.5 通知を受け取ったPFKeyAvailerXdが、初期設定ファイルを読み直しホットキーの登録を変更する。


PFKeyAvailerPrefからの、初期設定変更通知を受け取るためにPFKeyAvailXdは、applicationDidFinishLaunching: でオブザーバーを登録しておきます。


ソース:PFKeyAvailerXdAppDelegate.m


- (void)applicationDidFinishLaunching:(NSNotification *)aNotification

{

// Distributed Notification組み込み

//  システム環境設定から変更の通知を受け取る

NSString *observedObject = @"com.KyasuSoft.PFKeyAvailerX";

NSDistributedNotificationCenter *center = [NSDistributedNotificationCenter defaultCenter];

[center addObserver:self

selector:@selector(callbackWithNotification:)

name:@"PFKeyAvailerX Notification"

object:observedObject];

 ~~~~

}


PFKeyAvailerPrefがイベントを送信すると、addObserverで登録した callbackWithNotification: が呼び出されます。


callbackWithNotification: では、まず変更のあった初期設定ファイルを読み直します。

次に、既に登録してあるホットキーをすべて削除し、新たに登録し直します。


// システム環境設定から変更の通知

- (void) callbackWithNotification:(NSNotification *)myNotification

{

// 初期設定読み込み

[myData1 loadPref];

// ホットキーをすべて削除

[self unregisterHotKey];

// ホットキーを登録

[self registerHotKey];

}


0 件のコメント:

コメントを投稿