リストビューの表示用のデータ構造とフォルダごとのメッセージリストのデータ構造を分離したので、こんなことが可能に(というか、こんなことをするために分離したとも)。
1. リストビューにフィルタ
たとえば、フィルタとして"@Not(@Seen())"を設定しておくと、未読メールのみ表示する。簡易検索として使えるように。
2. 複数のリストビューを開くことが可能に
複数のリストビューを開いて、あっちのフォルダを見ながらこっちのフォルダを見たり、同じフォルダをソート条件やフィルタを変えて表示することが可能に。
ちなみに、常にフィルタ条件をアップデートするようにして、1のフィルタで未読メッセージのみを表示するようにすると、
i) あるメッセージを選択(未読)
ii) プレビューに表示
iii) 既読になる
iv) リストビューから消える
v) 自動的に次のメールが選択される
vi) iに戻る
という動作をしてしまって、あっという間に全てのメッセージが既読になってしまうので、フィルタのチェックはフォルダを開いたときと明示的にリフレッシュした時だけ行う。検索フォルダと同じような動作です。
コモンコントロールのリストビューは、LVS_OWNDATAとLVS_OWNERDRAWを両方セットして使うと以下のような問題があります(以前からQsMLで定期的に指摘されています)。
1. プログラム側から選択状態を変えると、Shift+カーソルで選択できる範囲が期待した動作をしなくなる(内部で最後に選択された行を保持していると思われるが、そのデータがアップデートされない)
2. CEだと時々二行選択されてしまう。LVM_SETITEMCOUNTを送って行数を設定した直後とかに良く起きる
しょうがないので、リストビューは自前でゴリゴリ描くことに。ヘッダコントロールの部分だけは、コモンコントロールのヘッダコントロールを使うことに。
Hotmail->POP3ゲートウェイみたいなものは幾つかあるみたいだけれど、Hotmail->IMAP4ゲートウェイというのはないんだろうか?
せっかくサーバ上でメール管理ができるのに(っていってもメールボックス小さいから使い物になるのか良くわからないけど)、POP3に変換しちゃったらローカル管理になってしまうし。
QMAIL2は元々プロトコルの部分がPlaggableになっているのだけれど(だからQMAIL2.1.xではdllに分かれている)、リファクタリング後には、インターフェイスをもう少しきれいにまとめて、プロトコルを追加しやすくする予定。なので、Hotmailプラグインとかもできるのではないかと。ざっと見たところでは、XMLをHTTPに載せてやり取りしているので、プロキシをはさんでプロトコルを解析してやればそれほど困難ではないと思う。
クライアントを選ばないと言う意味では、Hotmail->IMAP4ゲートウェイがいいと思うのだけれど、IMAP4サーバを作るのは大変そうだ。
ちなみに、私のHotmailアカウントは作ったものの使っていないのでSPAMだけがやたら来るアカウントになってしまいました。