blob: 545c4f25b2fd7fed1bfc0aba081d056243c712be [file] [log] [blame]
// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "ash/system/bluetooth/bluetooth_device_list_item_multiple_battery_view.h"
#include "ash/strings/grit/ash_strings.h"
#include "ash/style/ash_color_provider.h"
#include "ash/system/tray/tray_constants.h"
#include "ash/system/tray/tray_popup_utils.h"
#include "ash/system/tray/unfocusable_label.h"
#include "base/check.h"
#include "base/strings/string_number_conversions.h"
#include "ui/base/l10n/l10n_util.h"
#include "ui/base/metadata/metadata_impl_macros.h"
#include "ui/views/controls/image_view.h"
#include "ui/views/controls/label.h"
#include "ui/views/layout/box_layout.h"
#include "ui/views/view_utils.h"
namespace ash {
BluetoothDeviceListItemMultipleBatteryView::
BluetoothDeviceListItemMultipleBatteryView() {
auto box_layout = std::make_unique<views::BoxLayout>(
views::BoxLayout::Orientation::kHorizontal);
box_layout->set_cross_axis_alignment(
views::BoxLayout::CrossAxisAlignment::kCenter);
SetLayoutManager(std::move(box_layout));
}
BluetoothDeviceListItemMultipleBatteryView::
~BluetoothDeviceListItemMultipleBatteryView() = default;
void BluetoothDeviceListItemMultipleBatteryView::UpdateBatteryInfo(
const bluetooth_config::mojom::DeviceBatteryInfoPtr& battery_info) {
int index = 0;
if (battery_info->left_bud_info) {
if (!left_bud_battery_view_) {
left_bud_battery_view_ = AddChildViewAt(
std::make_unique<BluetoothDeviceListItemBatteryView>(), index);
index++;
}
left_bud_battery_view_->UpdateBatteryInfo(
battery_info->left_bud_info->battery_percentage,
IDS_ASH_STATUS_TRAY_BLUETOOTH_DEVICE_BATTERY_PERCENTAGE_LEFT_BUD_LABEL);
} else if (left_bud_battery_view_) {
RemoveChildViewT(left_bud_battery_view_.get());
left_bud_battery_view_ = nullptr;
}
if (battery_info->case_info) {
if (!case_battery_view_) {
case_battery_view_ = AddChildViewAt(
std::make_unique<BluetoothDeviceListItemBatteryView>(), index);
index++;
}
case_battery_view_->UpdateBatteryInfo(
battery_info->case_info->battery_percentage,
IDS_ASH_STATUS_TRAY_BLUETOOTH_DEVICE_BATTERY_PERCENTAGE_CASE_LABEL);
} else if (case_battery_view_) {
RemoveChildViewT(case_battery_view_.get());
case_battery_view_ = nullptr;
}
if (battery_info->right_bud_info) {
if (!right_bud_battery_view_) {
right_bud_battery_view_ = AddChildViewAt(
std::make_unique<BluetoothDeviceListItemBatteryView>(), index);
index++;
}
right_bud_battery_view_->UpdateBatteryInfo(
battery_info->right_bud_info->battery_percentage,
IDS_ASH_STATUS_TRAY_BLUETOOTH_DEVICE_BATTERY_PERCENTAGE_RIGHT_BUD_LABEL);
} else if (right_bud_battery_view_) {
RemoveChildViewT(right_bud_battery_view_.get());
right_bud_battery_view_ = nullptr;
}
}
BEGIN_METADATA(BluetoothDeviceListItemMultipleBatteryView)
END_METADATA
} // namespace ash