Original Classフォルダ
ArrayWarpperクラス
配列を使用して1次元リスト構造を実装する基底となるクラス
Thread SafeになるようにメンバmCSでクリティカルセッションを管理する。
このクラスの親クラスは配列なのでXojoの組み込み機能でハンドリング出来る。
Listクラス
親クラスはListWrapperクラス
Listを実装したクラス。
Stackクラス
親クラスはListWrapperクラス
Arrayを用いて, Stack(LIFO:Last In First Out)を実装するクラス
Queueクラス
親クラスはListWrapperクラス
Arrayを用いて、Queue(FIFO:First In First Out)を実装するクラス
IntervalTimerクラス
一定時間ごとに、メソッドAction()を実行する。
時間間隔はミリ秒単位。
TimerクラスはAction()処理が終わってからperiodミリ秒を計測するので、一定間隔では
無くなります。このクラスは再度起動されるまでの間隔を再計算してPeriodに設定するので
比較的一定間隔での呼び出しが可能です。
Task, ThreadMgrフォルダ 試作実験中のクラス
DigltalClockContainer
ウィンドウ上にレイアウトして、デジタル時計を表示する。(24時間表示)
ウインドウにレイアウトして、デジタルクロックを表示する。
このコンテナだけでデジタルクロックが表示され、1秒毎に表示が更新される。
UIControlContainer
実装中のコンテナ。ウインドウのコントロールをアクティブ/非アクティブするコンテナ
DateLabelContainer
ウィンドウ上にレイアウトされ、今日の日付を表示する。
クリックするとトグル動作で、西暦と和暦を切り替えて表示する。
Xojoには和暦へ変換する機能が無いので、独自に実装しました。
1970年以降の昭和/平成/令和の日付に対応しています。
アプリケーションで使われるクラス
AlarmThread
アプリで管理されるアラームリストを調べて、現在時刻に合致すると、音声を再生する処理にデータを送る。
バックグラウンドで処理されます。
SoundEffectThread
AlarmThreadから送られた音声データ(テキスト文字列)をShellを経由してsayコマンドを起動する事で
音声を再生する。
バックグラウンドで処理されます。
UserIFControlThread
ボタンなどのコントロールをテキストフィールドの情報を元にアクティブ/非アクティブする。
個々のコントロールやテキストリストの選択や変更などを個別に処理をしていると、間違いや
設定漏れなどが発生するため、このThreadで一括処理しています。
コントロールが数個程度なら個別に処理しても適切に処理されると思われますが、
不具合の混入や、設定漏れなどの無いように一ヶ所にまとめました。
バックグラウンドで処理されます。
その他のコントロールはUI機能を実現するためのもので、特に拘った作り方をした訳では無いので
ソースコードを参照下さい。
GlobalSの使い方や、Thread処理の参考になれば幸いです。