Hori,Masaki
masak****@users*****
2002年 11月 21日 (木) 21:08:14 JST
ども、堀です。 タイトルどおりです。 たりない、おかしい、それは英語なのか?等々ご意見お待ちしております。 ここから ------------------------- メールボックス(一覧)表示が行うであろう処理。 1,MainControllerを取得する id mainController = [NSObject sharedMainController]; 2,MailboxManagerを取得する id mailboxManager = [mainController mailboxManager]; 3,ルートメールボックスを取得する Mailbox* rootMailbox = [mailboxManager rootMailbox]; 4,子供の一覧を取得し解析する NSArray* children = [rootMailbox children]; Mailbox* aMailbox = [children objectAtIndex:n]; NSString* mailboxName = [aMailbox name]; unsigned mailsNum = [aMailbox mailsNum]; unsigned unreadMailsNum = [aMailbox unreadMailsNum]; unsigned long long mailsSize = [aMailbox mailsSize]; // bytes order. NSString* mailboxID = [aMailbox mailboxID]; 5,更に子供を... NSArray* children = [aMailbox children]; ... メールボックス(一覧)表示のアクション 2,メールボックスの削除 MailboxManagerに対し、 -(BOOL)deleteMailbox:(Mailbox*)mailbox; もしくは、 -(BOOL)deleteMailboxByID:(NSString*)mailboxID; 削除されればYESが、されなければNOが返される。 3,メールボックスの追加 MailboxManagerに対し、 -(BOOL)addMailboxNamed:(NSString*)name underMailbox:(Mailbox*)mailbox; もしくは、 -(BOOL)addMailboxNamed:(NSString*)name underMailboxByID:(NSString*)mailboxID; 追加されればYESが、されなければNOが返される。 4,メールボックスの名称変更 MailboxManagerに対し、 -(BOOL)changeName:(NSString*)name mailbox:(Mailbox*)mailbox; もしくは、 -(BOOL)changeName:(NSString*)name mailboxByID:(NSString*)mailboxID; 変更されればYESが、されなければNOが返される。 5,メールボックスの移動 MailboxManagerに対し、 -(BOOL)moveMailbox:(Mailbox*)target underMailbox:(Mailbox*)mailbox; もしくは、 -(BOOL)moveMailboxByID:(NSString*)targetID underMailboxByID:(NSString*)mailboxID; 移動できたらYESが、できなければNOが返される。 6,メールボックスの複写 MailboxManagerに対し、 -(BOOL)copyMailbox:(Mailbox*)target underMailbox:(Mailbox*)mailbox; もしくは、 -(BOOL)copyMailboxByID:(NSString*)targetID underMailboxByID:(NSString*)mailboxID; 複写できたらYESが、できなければNOが返される。 7,メールの追加(DnDによる。pastboardType等については別記) MailboxManagerに対し、 -(BOOL)dropMessage:(id <NSDraggingInfo>)sender intoMailbox:(Mailbox*)mailbox; もしくは、 -(BOOL)dropMessage:(id <NSDraggingInfo>)sender intoMailboxByID:(NSString*)mailboxID; ドロップできたらYES、できなければNOが返される。 8,メールボックスの再構築 MailboxManagerに対し、 -(void)rebuildMailbox:(Mailbox*)mailbox; もしくは、 -(void)rebuildMailboxByID:(NSString*)mailboxID; あるいは、 -(void)rebuildMailboxes; ******** MailboxIDに関して ********* MailboxIDは、インスタンスと違い、永続的にその値が不変です。 プロトタイプでは、メールボックスが作成された時点での名前と時間を連結し、MD5 にかけています。(予定) 時間を連結しますので初期状態の名前が常に@"Untitled"でも対応可能です。 MailboxManagerが管理していますので、MailboxManagerに対し、 -(Mailbox*)mailboxByID:(NSString*)mailboxID; -(NSStrnig*)mailboxIDForMailbox:(Mailbox*)mailbox; で変換可能です。(が、普通は使わないと思います。) メールボックス(一覧)表示に関するNotification *** Obseverの登録に関しては別記 *** 1,メールボックス内に変更があった(メールの追加削除、属性の変化) object: 変更のあったメールボックス userInfo: nil 2,メールボックスの構造に変更があった(メールボックスの追加削除、移動複写) object:MailboxManagerのインスタンス userInfo:nil ---------------- ここまで。 では。