Sleep::Usecase
Inherits Notify::SleepGate < Reference < Object
睡眠中かを決める(issue #54)。
入力を合わせて 1 つの理由を返す。入力は、トレイから始める手動、スケジュール、OyasumiVR の 3 つである。 notify からは SleepGate として見え、中継を止めるかだけを問われる。
手動の状態と起きている間の上書きは設定ファイルに書かず、再起動で消える。 睡眠中に再起動が起きるのは更新の適用くらいで、適用は手動の操作か次の起動に限られる。
Constructors
時計は差し替えられるようにしておく。 スケジュールも手動の期限も壁時計の時刻で決まり、テストで時刻を固定しないと境界を確かめられない。
Instance methods
OyasumiVR が睡眠モードを示していても中継するか。 睡眠モードのまま「おやすみモードを終了」を押したときに立ち、睡眠モードが切れたら下りる。 OyasumiVR には終わる時刻が無いため、スケジュールと違って状態の変化で期限を決める。
スケジュールの時間帯でも中継する期限。 寝ている途中で起きて「おやすみモードを終了」を押したときに立つ。 その時間帯が終わる時刻を入れるので、次の晩の時間帯ではまた止まる。
おやすみモードを始める。
期限は、スケジュールが有効なら次の終了時刻、無効なら設定した時間の後とする。 起きるつもりの時刻がスケジュールに書いてあるなら、それに揃えるほうが利用者の意図に近い。 起きている間の上書きは消す。寝ると決めた操作のほうを優先する。
おやすみモードを終える。トレイの「おやすみモードを終了」から呼ぶ。
手動の状態を消したうえで、スケジュールの時間帯にいれば、その時間帯が終わるまで中継する。 OyasumiVR が睡眠モードを示していれば、睡眠モードが切れるまで中継する。 手動だけを消すと、時間帯や睡眠モードの中では止まったままになり、押しても何も変わらない。