Done!の主な役割は時計です。
作者は腕時計をしない人なので、プログラムが作れる環境では片っ端から時計を作っています。というわけで、PalmPilotでも作ってみました。
また、仕事の都合上、どの仕事をいつからいつまでやっていたかを記録しておく必要があって、PDAのアポイントメントは行動記録としても使用しているのですが、得てしてこの手のソフトでは開始・終了時刻(特に終了時刻)の修正が面倒です。PalmPilotでもやはりこのあたりは面倒なので、時計機能に加えて、行動記録を「予定表[Datebook]」のデータに直接書き込む機能もつけてしまいました。これがDone!の名前の由来になっています。
|
こんな感じのデジタル時計です。 |
次に、「Done!」ボタンをタップすると、下方の表示が、
Last job: 1998/08/19 13:37->14:22
の様なものになり、ボタンは「begin!」に戻ります。
「Done!/begin!」ボタンの左の「Round」を設定すると、「Done!/begin!」ボタンをタップしたときの時刻を、5分、10分、15分、30分、1時間毎に調整することができます。この時、どちらに調整するかは、その下のポップアップリストで、近い方(nearest)、前(before)、後(after)のいずれかに設定します。
|
「Send to datebook」をタップすると、行動記録を予定表[Datebook]に書き込むためのフォーム(SendTo Datebook)に切り替わります。 |
「Send to Datebook」フォームでは、行動記録の日の予定と(new data)というリストがあるので、予定のある行動であった場合は、その予定を選択した後、「OK」をタップします。すると、その予定の開始時刻、終了時刻が行動記録の時刻に修正されます。
予定のない行動であった場合は、(new data)を選択して、「OK」をタップすると、新規データとして、予定表[Datebook]のデータに追加されます。この時、そのデータの見出しは、リストのしたのDescription欄で指定されたものになります。
後述する方法で、あらかじめDescriptionのリストを作っておくと、Description欄の右に「B」ボタンが現れ、それをタップすると用意されているリストがポップアップします。このリストから、適当なものを選ぶと、それがDescription欄に書き込まれます。
|
Descriptionをリストで選べます。 |
「Done!」ボタンで行動記録した後、「begin!」をタップすると、次の行動記録を保持しますが、それをまた、「Done!」して「Send to Datebook」でDatebookに送ると、前の行動記録が表示されます。
「Done!」「begin!」を繰り返すことにより、複数の行動記録を保持し、最近の行動記録から順に予定表[Datebook]に登録します。
注:もともとが、1件の記録しか保持できない設計だったものを、無理やり複数記録対応にしているので、ユーザ・インターフェース的には練れていない感が否めません。
後述のように、作者的にはめんどくさいからほかっとこうとしているので、困る人は要望を上げてください。
消したい場合は、メニューの「Lock/Unlock button」を実行します。あるいは、Datebookに書き込むフォームで「Lock & Cancel」ボタンをタップした場合も同様にボタンが消えます。
「Lock/Unlock button」の動作はトグルになっているので、消えている状態で実行すると、「Done!/begin!」ボタンが現れます。
メニューの「Change button layout」を実行すると、「It will not take effect until restart」というアラートが表示されます(次回起動時まで、変更されないと言いたいらしい)。
この時点では、レイアウトの変更は行われず、次回起動時(実際にはウィンドウを開き直したとき)には、入れ替わっているはずです。
|
こんな感じになります。 |
なぜ、その場で反映されないかというと、コードでレイアウトをいじるのは、作者の趣味としてあまり、好きじゃない(なんのためのリソース)ということと、後述(既知の問題点)の問題があって将来的には、リソース自体を書き換えるという技に走るかもしれないため、その際にこういう仕様にしておいた方が楽ということもあるためです。
|
こんな感じのメモを作る |
「Prefs」というカテゴリを作成しておくと、「Prefs」カテゴリのメモのみを検索するので、若干、動作がはやくなります。この場合、上記のメモのカテゴリが「Prefs」でないと、無いと判断されますので、注意してください。
メモ帳[MemoPad]のカテゴリの使用については、pilot-tech-mlで、議論されており(そんなに活発ではないけど)、アンケートにもそれについての質問がありますので、ご意見をお寄せください。
また、現状では「Prefs」というカテゴリを使用するようにしています(既にそういう実装が公開されたため)が、アンケートの結果や、mlでの議論の行方によっては変更される場合がありますので、あらかじめご了承ください。
いわゆるヒストリのように、一度入力したものを記憶しておいて、それを選択できるようにするというのが、もともとの寄せられたアイデアなのですが、
などと考えて、今の仕様になっています。
ボタンのレイアウトを変更している場合、一瞬もとの位置で表示されてから、入れ替わった位置に表示し直されます。これについては、自分自身のリソースを書き換えて、レイアウトの変更を実現するという方向で対応しようかとも、考えているのですが、まだ、それを実現できるほど修行を積んでいないため、現状のようになっています。
ただ、これについては、作者自身はあまり気になっていないので、強い要望がなければ、対応しないままかもしれません。
複数の行動記録を保持しているときに、最後の行動記録の終了時刻が確定していないと前の行動記録についても、予定表[Datebook]に送ることができません(そもそもそのフォーム移るためのボタンが表示されない)。これは、もともと複数の行動記録を保持することを考慮していなかったものに無理やり対応させたことに起因しています。本来は、ユーザ・インターフェースの見直しをするべきなのですが、作者的には、今のままでも十分実用になると感じているので、モチベーションが低くなっているのが、本音です。
「それは、許せん」という意見とか「こうすれば、いいじゃん」というアイデアがあれば、考え始めると思うので、お便りください。
やはり、オーソドックスなフォントがあった方がいいのでは、という意見もあったので、ちょっと日和って、普通のデジタル時計風のものも用意しました。好みでお選びください。
|
done_digi.prcはこんな感じ とても大変だったので、もう、自分では作らないと思う。 |
「これを採用せい!」という自信作があれば、作者に送ってくだされば、こちらでコンパイルして公開させていただきます。
とりあえず、カテゴリ関連で、ちょっと困ったことが起きうることがわかっています。
標準の予定表[Datebook]やDone!では、カテゴリを使用していません(特にいじってないので未分類[Unfiled]になるのだと思う)。PalmOSはOSレベルでカテゴリを活用できるようになっている(さすがPDA専用OS)ので、使わないのはもったいないのですが、標準の予定表[Datebook]がそういう仕様です。
それに対し、Datebk3では、ちゃんと利用できるようになっていて、カテゴリ毎に表示/非表示を設定できるのですが、ここで未分類[Unfiled]を非表示にしていると、Done!で追加した(もしくは定期的な予定[Repeat]を変更した)データは表示されません(前述のように未分類[Unfiled]になるのでしょうがないです)。
あと、タイムゾーンについてもなにか問題が出そうな気がするのですが、Datebk3でのタイムゾーンの使い方もよく分かってないので、問題があったら具体的な症状とその時のDatebk3の設定などを教えていただけるとありがたいです。
一部、3ComのDevelopmentZoneに公開されているExamplesから流用したソースがあります。
Copyright (C) 1998 ABplus Inc. kazhida.
Portions copyright c 1998 3ComCorporation or its subsidiaries.
All rights reserved.
公の場(ネットや書籍など)に出す場合は、事前に作者に連絡してください。
そのまま、メイクし直すにはgcc for PalmOSが必要です。
添付ソースそのもの、およびそれを改造して(または改造せずに)メイクしたものを再配布することは禁止させていただきます。
Q:ということは、自分でちょっと改造してメイクすればタダで使えるということ?
A:そうです。でも、それを再配布することはできません。
添付ソースの一部(dateDB.c)は、3ComのDevelopmentZoneに公開されているExamplesから必要なものを抜粋したものです。
せっかく、Beginボタンで記録を開始しても、Doneし忘れることがあるんで、なんとかならないか
との要望を受けています。
実は、作者自身もよくやってしまうので、アラーム機能をつけようかなとか、考えています。