読者です 読者をやめる 読者になる 読者になる

おいしいとこはすこしだけ

文系出身SE見習いの備忘録。

自作ソフト「タスクタイマー(仮)」のβ版を公開します

文系出身SE見習いの北白川キリコです。

 

Windowsフリーソフトを作りました

ちょっと前からちょこちょこ作っていたWindows用自作ソフトのβ版を公開します。

もうちょっとチューンナップして、申請が通ったらVectorに置きたい。

 

アップロード先はこちら。

Axfc UpLoader -3608157.zip-

DLパスワードは「kiriko」です。

テストはしてありますが、未知のバグが存在する可能性があります。自己責任のもとで試してください。このソフトを使用したことにより発生したいかなる問題・損害にも、当方は一切の責任を負いません。

 

どんなソフトなの

このソフトはWindows上で動作するカウントダウン式タイマーです。
複数のタスクとその予定時間を設定し、タイマーをスタートさせることで、残り時間と現在の進捗、及び終了予定時刻を確認することができます。
予定時刻になると、ポップアップウィンドウまたはアラーム音で通知されます。

勉強やプレゼンテーションの時間配分を想定して作成されています。

(readme.txtより抜粋)

 

 簡単に使い方を説明すると、

f:id:kitashirakawakiriko:20160126204912j:plain

まずこういう画面で、これからやるべきタスクとその予定時間を入力します。

入力して右下のタイマースタートボタンを押すと、

f:id:kitashirakawakiriko:20160126205014j:plain

こういう画面が出てきてカウントダウンが始まります。

カウントが0になると、

f:id:kitashirakawakiriko:20160126205059j:plain

こういう感じ(画像中央)でポップアップが出てきたり、「ポーン」って音が鳴ったりして教えてくれます。

おわり。

 

開発環境はVisual C#

.NET FrameworkなんでWindowsでしか動きません。Vista以降なら問題なく動くと思うけどそれ以前のだと分からないです。

もう一回言っておきますが、一応テストはしてあると言えども未知のバグが存在する可能性があります。自己責任のもとで試してください。このソフトを使用したことにより発生したいかなる問題・損害にも、当方は一切の責任を負いません。

 

ちょっとした自分なりの工夫(あるいは悪あがき)

リストビュー上の順番入れ替えの実装。

private void
ReverseListViewItems(
    ReverseTo inReverseTo)  // 上と入れ替えるか下と入れ替えるか
{
    // リストビュー上で選択されたアイテムをコピー
    ListViewItem selectedCopy = TaskListView.SelectedItems[0];
    // 選択されたアイテムのインデックスを保持
    int selectedIndex
        = TaskListView.Items.IndexOf(TaskListView.SelectedItems[0]);

    // 保持したインデックスをもとに選択されたアイテムを削除
    // (TaskListView.Items.Remove(SelectedItems[0])だと、
    // 同じ内容のアイテムがあった場合そっちが削除されてしまう…はず)
    TaskListView.Items.RemoveAt(selectedIndex);

    if (inReverseTo == ReverseTo.Up) {    // 上のと入れ替え
        TaskListView.Items.Insert(selectedIndex - 1, selectedCopy);
    }
    else {                                // 下のと入れ替え
        TaskListView.Items.Insert(selectedIndex + 1, selectedCopy);
    }
}

private enum ReverseTo  // 入れ替える方向を示す列挙体
{
    Up = 0, // 上の項目と入れ替える場合
    Down    // 下の項目と入れ替える場合
};

不器用ながらこんな感じで。 

 

あとは、タスクの合計時間はリストビュー追加時点でint型(秒)に変換して、ListViewItemにTagとして持たせておいて、タイマー画面に渡すときにそのまま使えるようにしたりとか。

でもこれは良いのか悪いのかわかんないですね…タイマー画面からは設定画面へ戻るのは限りなく面倒になっちゃったし。

 

作るときお世話になったTips記事

色々参考にさせていただきましたが、特に助かった記事をご紹介させていただきます。

 

まずこちら。

sairoutine.hatenablog.com

タスクリスト情報を設定画面からタイマー画面へ受け渡す部分。

これすごく好き。

 

それからこちら。

ざっちのーと 【C#】メッセージボックスを最前面表示させる方法

タイトル通り。タイマー画面が最前面になくても通知ポップアップが最前面に来るようにできました。

 

あとこれ。

TextBoxに数字しか入力できないようにする: .NET Tips: C#, VB.NET

DOBON.NET様には他にも色々お世話になりました。

これからもめっちゃお世話になると思います。

 

一応β版なので

使用された方で、バグや、「こうすればもっと使いやすいかも」などのご意見があればどしどしお願いします。

宛先はこのブログのコメント欄でも、メールアドレス(kitashirakawakiriko★gmail.com/★→@)でも、ツイッター(@uril_ms)でも。

全てのご意見を反映できるとは限りませんが、頑張って対応してみたいです。