#include <pebble.h>
static Window *s_main_window;
static TextLayer *s_battery_layer;
static GFont s_time_fontss;
static void batteryhyouji(BatteryChargeState charge_state){
//バッテリーの情報表示用、文字列の容器と初期値
// static char battery_text[] = "---% charged";
static char battery_text[] = "-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n";
if (charge_state.is_charging) {
//バッテリーの充電中の表示
snprintf(battery_text
, sizeof(battery_text
), "+"); } else {
//バッテリーの残量を得る。そして残量を表示
// snprintf(battery_text, sizeof(battery_text), "%d%% charged", charge_state.charge_percent);
if(charge_state.charge_percent==100){
snprintf(battery_text
, sizeof(battery_text
), "-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n"); }else if(charge_state.charge_percent==90){
snprintf(battery_text
, sizeof(battery_text
), "-\n-\n-\n-\n-\n-\n-\n-\n-\n"); }else if(charge_state.charge_percent==80){
snprintf(battery_text
, sizeof(battery_text
), "-\n-\n-\n-\n-\n-\n-\n-\n"); }else if(charge_state.charge_percent==70){
snprintf(battery_text
, sizeof(battery_text
), "-\n-\n-\n-\n-\n-\n-\n"); }else if(charge_state.charge_percent==60){
snprintf(battery_text
, sizeof(battery_text
), "-\n-\n-\n-\n-\n-\n"); }else if(charge_state.charge_percent==50){
snprintf(battery_text
, sizeof(battery_text
), "-\n-\n-\n-\n-\n"); }else if(charge_state.charge_percent==40){
snprintf(battery_text
, sizeof(battery_text
), "-\n-\n-\n-\n"); }else if(charge_state.charge_percent==30){
snprintf(battery_text
, sizeof(battery_text
), "-\n-\n-\n"); }else if(charge_state.charge_percent==20){
snprintf(battery_text
, sizeof(battery_text
), "-\n-\n"); }else if(charge_state.charge_percent==10){
snprintf(battery_text
, sizeof(battery_text
), "-\n"); }else if(charge_state.charge_percent==0){
snprintf(battery_text
, sizeof(battery_text
), " "); }
}
text_layer_set_text(s_battery_layer, battery_text);
}
static void handle_battery(BatteryChargeState charge_state) {
batteryhyouji(charge_state);
}
static void tick_handler(struct tm *tick_time, TimeUnits units_changed) {
//ここに時計の表示などを記載する。
}
static void main_window_load(Window *window) {
Layer *window_layer = window_get_root_layer(window);
GRect bounds = layer_get_frame(window_layer);
//フォントを設定
s_time_fontss = fonts_get_system_font(FONT_KEY_GOTHIC_18);
//バッテリーの情報を表示する場所を作成(作るだけ。表示はまだ)。その位置、サイズを設定。
s_battery_layer = text_layer_create(GRect(bounds.size.w*2/4-33, bounds.size.h/2-74, 20, bounds.size.h));
//Pebble timeなどのカラーの場合とPebbleなどの白黒の場合を分けて設定。
#ifdef PBL_COLOR
text_layer_set_text_color(s_battery_layer, GColorRed);
text_layer_set_background_color(s_battery_layer, GColorClear);
#else
text_layer_set_text_color(s_battery_layer, GColorWhite);
text_layer_set_background_color(s_battery_layer, GColorClear);
#endif
//フォントの設定を関連付ける。
text_layer_set_font(s_battery_layer, s_time_fontss);
text_layer_set_text_alignment(s_battery_layer, GTextAlignmentCenter);
//バッテリー情報の文字列表示、初期値
text_layer_set_text(s_battery_layer, "X");
//バッテリーの情報に変化があったときhandle_batteryが呼び出される
battery_state_service_subscribe(handle_battery);
//バッテリー初期値
BatteryChargeState charge_state = battery_state_service_peek();
//バッテリーの初期値表示
batteryhyouji(charge_state);
//バッテリー情報を表示する場所を、時計のウインドウへセットし、表示する。
layer_add_child(window_layer, text_layer_get_layer(s_battery_layer));
}
static void main_window_unload(Window *window) {
// Destroy TextLayer
text_layer_destroy(s_battery_layer);
//バッテリーサービス解放
battery_state_service_unsubscribe();
}
static void init() {
// Create main Window element and assign to pointer
s_main_window = window_create();
// Set handlers to manage the elements inside the Window
window_set_window_handlers(s_main_window, (WindowHandlers) {
.load = main_window_load,
.unload = main_window_unload
});
// Show the Window on the watch, with animated=true
window_stack_push(s_main_window, true);
// Register with TickTimerService
//SECOND_UNITだと秒の間隔で更新する。
tick_timer_service_subscribe(SECOND_UNIT, tick_handler);
}
static void deinit() {
// Destroy Window
window_destroy(s_main_window);
}
int main(void) {
init();
app_event_loop();
deinit();
}