OREFOLDER

KWGTでTajmみたいな「◯時まであと×分」「△時から□分経過」という時計表示を作る

Tajm』という時刻をテキストで表示する時計ウィジェットがありました。ただ、2018年2月8日現在Playストアからは削除されているようです。

この時計の表示するテキストは日本語訳すると「◯時まであと×分」「△時から□分経過」というような表示でした。日本ではあまり馴染みのない形式ですが表示としては気に入っていたので、KWGTを使って作ってみました。もちろんKLWPでも同じように使えます。

  • 本記事は広告およびアフィリエイトプログラムによる収益を得ています。

完成形と概要

上にあるのがKWGTで作ったもので、下が本物のTajmです。かなりそっくりに作ることができました。KWGTで作っているので、当然フォントやサイズは自由自在です。

今回作ったものは以下のようなルールで表示されます。

表示を見るだけなら分かりやすいのですが、実際にこれを場合分けしたりするとなかなか面倒に感じます。

構成

今回のウィジェットは上図のように5つのパーツでできています。まず「グループ化(並べる)」を配置し、その中に「1」「2+3」「4+5」の3つを縦に並べます。

3つの段それぞれ「グループ化(並べる)」で並べています。上段は1つのテキストのみですが、それでも「グループ化(並べる)」に入れています。

上段

上段の分表示の部分は1つのテキストで作成しています。「加工」で「大文字」「数字をアルファベットに」にチェックを入れています。「大文字」は好みでしかありません。

テキストの内容は以下のとおりです。
$if(df(m)=0, "", df(m)=15, quarter, df(m)=45, quarter, df(m)=30, half, df(m)>30, tf(df(yyyy'y'MM'M'dd'd') + df(hh, a1h) + h01m, m), df(m))$

ifのところは|(OR)など使えばもっと短くなりそうですが、なんだか上手く行かなかったので。たぶんどこか変です。

また、上段は毎時0分のときは表示しないので、テキストを包むグループ化の「レイヤー」で「表示」を以下のようにコントロールしています。
$if(df(m)=0, REMOVE, ALWAYS)$

中段

中段左側

中段左側は

となります。なのでテキストの内容は以下の通り。
$if(df(m)=1|59, minute + " ", df(m)%15!=0, minutes + " ")$

中段右側

中段右側は30分まではpast、31分からはtoなので単純です。
$if(df(m)>30, to, past)$

また、中段を包むグループ化も、毎時0分には非表示にするので、「レイヤー」の「表示」を上段と同じようにします。

下段

下段左側

下段左側は「30分まではその時の『時』、31分からは次の『時』」となります。

$if(df(m)>30, df(K, a1h), df(K))$

df(K)を使っているのは、KWGTの設定で24時間表示を基本としていても12時間表示で表示するためです。ただし、0時がZEROとなってしまいます。TajmだとTWELVEであり、これもやろうと思えばできるのですが、面倒だしZEROでもいいかな、と放置しています。

下段右側

下段左側は「30分まではその時の、31分からは次の午前午後表記」となります。ただこれにdf(A)を使うと、日本語環境で「午前/午後」になってしまいます。日本語ではなく英語でAM/PMを使いたいので、ifを使って無駄に長くします。
$if(df(m)>30, if(df(H, a1h)>11, PM, AM), if(df(H)>11, PM, AM))$

これで完成です。

別の方法もある

実はKWGT/KLWPは「$df(W)$」で「◯時まであと×分」「△時から□分」という表記ができます。ただこれはTajmのようなminuteやAM/PMが付きません。付かないでいいのならこっちのほうが簡単です。

フォントやサイズを別々にしたい場合も、「$df(W)$」をなんとか分解するなどすればできると思います。どっちが簡単かは…わかりません。

ダウンロード

一応今回のものもダウンロードできるようにしてみました。KWGTのProを持っていれば、ダウンロードしたtajm.kwgtファイルを端末のKUSTOM/widgetsフォルダに入れれば、読み込めると思います。

Tajm
制作: orefolder
価格: 無料

ダウンロード

ぜひお試しください。

モバイルバージョンを終了