環境設定パネルから常駐プログラムを制御する時の覚え書き、その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 Notification(PFKeyAvailerXdにイベントを送信)
[ 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 件のコメント:
コメントを投稿