mirror of
https://github.com/google/pebble.git
synced 2025-11-22 23:40:54 -05:00
90 lines
3.4 KiB
C
90 lines
3.4 KiB
C
/*
|
|
* 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);
|
|
}
|
|
}
|