mirror of
https://github.com/google/pebble.git
synced 2025-11-20 22:40:57 -05:00
Import of the watch repository from Pebble
This commit is contained in:
81
src/fw/applib/ui/time_selection_window.h
Normal file
81
src/fw/applib/ui/time_selection_window.h
Normal file
@@ -0,0 +1,81 @@
|
||||
/*
|
||||
* Copyright 2024 Google LLC
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "date_time_selection_window_private.h"
|
||||
|
||||
#include "applib/ui/selection_layer.h"
|
||||
#include "applib/ui/status_bar_layer.h"
|
||||
#include "applib/ui/text_layer.h"
|
||||
#include "applib/ui/window.h"
|
||||
#include "services/common/clock.h"
|
||||
|
||||
#include <time.h>
|
||||
|
||||
#define TIME_SELECTION_WINDOW_MAX_RANGE_LENGTH 64
|
||||
|
||||
struct TimeSelectionWindowData;
|
||||
|
||||
typedef void (*TimeSelectionCompleteCallback)(struct TimeSelectionWindowData *window, void *ctx);
|
||||
|
||||
typedef struct TimeSelectionWindowData {
|
||||
Window window;
|
||||
SelectionLayer selection_layer;
|
||||
TextLayer label_text_layer;
|
||||
TextLayer range_subtitle_text_layer;
|
||||
TextLayer range_text_layer;
|
||||
StatusBarLayer status_layer;
|
||||
TimeData time_data;
|
||||
|
||||
TimeSelectionCompleteCallback complete_callback;
|
||||
void *callback_context;
|
||||
|
||||
const char *range_text;
|
||||
int range_duration_m;
|
||||
|
||||
//! Range buffer. Large enough for just the two time strings
|
||||
char range_buf[2 * TIME_STRING_TIME_LENGTH];
|
||||
//! Range subtitle buffer. Large enough for the range label
|
||||
char range_subtitle_buf[TIME_SELECTION_WINDOW_MAX_RANGE_LENGTH];
|
||||
char cell_buf[3];
|
||||
} TimeSelectionWindowData;
|
||||
|
||||
typedef struct TimeSelectionWindowConfig {
|
||||
const char *label;
|
||||
GColor color;
|
||||
struct {
|
||||
bool update;
|
||||
const char *text;
|
||||
int duration_m;
|
||||
bool enabled;
|
||||
} range;
|
||||
struct {
|
||||
bool update;
|
||||
TimeSelectionCompleteCallback complete;
|
||||
void *context;
|
||||
} callback;
|
||||
} TimeSelectionWindowConfig;
|
||||
|
||||
void time_selection_window_set_to_current_time(TimeSelectionWindowData *date_time_window);
|
||||
|
||||
void time_selection_window_configure(TimeSelectionWindowData *time_selection_window,
|
||||
const TimeSelectionWindowConfig *config);
|
||||
|
||||
void time_selection_window_init(TimeSelectionWindowData *time_selection_window,
|
||||
const TimeSelectionWindowConfig *config);
|
||||
|
||||
void time_selection_window_deinit(TimeSelectionWindowData *time_selection_window);
|
||||
Reference in New Issue
Block a user