mirror of
https://github.com/google/pebble.git
synced 2025-11-23 07:50:55 -05:00
Import of the watch repository from Pebble
This commit is contained in:
89
src/fw/shell/normal/welcome.c
Normal file
89
src/fw/shell/normal/welcome.c
Normal file
@@ -0,0 +1,89 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#include "welcome.h"
|
||||
|
||||
#include "kernel/event_loop.h"
|
||||
#include "resource/timeline_resource_ids.auto.h"
|
||||
#include "services/common/evented_timer.h"
|
||||
#include "services/common/i18n/i18n.h"
|
||||
#include "services/common/shared_prf_storage/shared_prf_storage.h"
|
||||
#include "shell/prefs.h"
|
||||
#include "system/logging.h"
|
||||
#include "util/attributes.h"
|
||||
#include "util/size.h"
|
||||
|
||||
static void prv_push_welcome_notification(void *UNUSED data) {
|
||||
AttributeList notif_attr_list = {};
|
||||
attribute_list_add_uint32(¬if_attr_list, AttributeIdIconTiny,
|
||||
TIMELINE_RESOURCE_NOTIFICATION_FLAG);
|
||||
attribute_list_add_cstring(¬if_attr_list, AttributeIdTitle,
|
||||
/// Welcome title text welcoming a 3.x user to 4.x
|
||||
i18n_get("Pebble Updated!", ¬if_attr_list));
|
||||
/// Welcome body text welcoming a 3.x user to 4.x.
|
||||
const char *welcome_text = i18n_get(
|
||||
"For activity and sleep tracking, press up from your watch face.\n\n"
|
||||
"Press down for current and future events.\n\n"
|
||||
"Read more at blog.pebble.com",
|
||||
¬if_attr_list);
|
||||
attribute_list_add_cstring(¬if_attr_list, AttributeIdBody, welcome_text);
|
||||
attribute_list_add_uint8(¬if_attr_list, AttributeIdBgColor, GColorOrangeARGB8);
|
||||
|
||||
AttributeList dismiss_action_attr_list = {};
|
||||
attribute_list_add_cstring(&dismiss_action_attr_list, AttributeIdTitle,
|
||||
i18n_get("Dismiss", ¬if_attr_list));
|
||||
|
||||
int action_id = 0;
|
||||
TimelineItemAction actions[] = {
|
||||
{
|
||||
.id = action_id++,
|
||||
.type = TimelineItemActionTypeDismiss,
|
||||
.attr_list = dismiss_action_attr_list,
|
||||
},
|
||||
};
|
||||
TimelineItemActionGroup action_group = {
|
||||
.num_actions = ARRAY_LENGTH(actions),
|
||||
.actions = actions,
|
||||
};
|
||||
|
||||
const time_t now = rtc_get_time();
|
||||
TimelineItem *item = timeline_item_create_with_attributes(
|
||||
now, 0, TimelineItemTypeNotification, LayoutIdNotification, ¬if_attr_list, &action_group);
|
||||
i18n_free_all(¬if_attr_list);
|
||||
attribute_list_destroy_list(¬if_attr_list);
|
||||
attribute_list_destroy_list(&dismiss_action_attr_list);
|
||||
|
||||
if (!item) {
|
||||
PBL_LOG(LOG_LEVEL_WARNING, "Failed to welcome the user.");
|
||||
return;
|
||||
}
|
||||
|
||||
item->header.from_watch = true;
|
||||
notifications_add_notification(item);
|
||||
timeline_item_destroy(item);
|
||||
welcome_set_welcome_version(WelcomeVersionCurrent);
|
||||
}
|
||||
|
||||
void welcome_push_notification(bool factory_reset_or_first_use) {
|
||||
const WelcomeVersion version = welcome_get_welcome_version();
|
||||
// This check only works if it is called before getting started complete is set
|
||||
if (!factory_reset_or_first_use && (version < WelcomeVersion_4xNormalFirmware)) {
|
||||
// This has completed getting started on a previous normal firmware, welcome them if the
|
||||
// version is before 4.x
|
||||
// We wait some time since notification storage takes time to initialize
|
||||
launcher_task_add_callback(prv_push_welcome_notification, NULL);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user