// Copyright 2020 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/capture_mode/capture_mode_feature_pod_controller.h"
#include "ash/capture_mode/capture_mode_controller.h"
#include "ash/capture_mode/capture_mode_metrics.h"
#include "ash/constants/quick_settings_catalogs.h"
#include "ash/public/cpp/ash_view_ids.h"
#include "ash/resources/vector_icons/vector_icons.h"
#include "ash/session/session_controller_impl.h"
#include "ash/shell.h"
#include "ash/strings/grit/ash_strings.h"
#include "ash/system/unified/feature_pod_controller_base.h"
#include "ash/system/unified/feature_tile.h"
#include "ash/system/unified/unified_system_tray_controller.h"
#include "ui/base/l10n/l10n_util.h"
namespace ash {
CaptureModeFeaturePodController::CaptureModeFeaturePodController(
UnifiedSystemTrayController* tray_controller)
: tray_controller_(tray_controller) {}
CaptureModeFeaturePodController::~CaptureModeFeaturePodController() = default;
// static
bool CaptureModeFeaturePodController::CalculateButtonVisibility() {
return !Shell::Get()->session_controller()->IsUserSessionBlocked();
}
std::unique_ptr<FeatureTile> CaptureModeFeaturePodController::CreateTile(
bool compact) {
auto feature_tile = std::make_unique<FeatureTile>(
base::BindRepeating(&FeaturePodControllerBase::OnIconPressed,
weak_ptr_factory_.GetWeakPtr()),
/*is_togglable=*/false,
compact ? FeatureTile::TileType::kCompact
: FeatureTile::TileType::kPrimary);
const bool target_visibility = CalculateButtonVisibility();
feature_tile->SetVisible(target_visibility);
if (target_visibility) {
TrackVisibilityUMA();
}
feature_tile->SetVectorIcon(kCaptureModeIcon);
const auto label_text =
l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_CAPTURE_MODE_BUTTON_LABEL);
feature_tile->SetLabel(label_text);
if (!compact) {
feature_tile->SetSubLabelVisibility(false);
}
feature_tile->SetTooltipText(label_text);
return feature_tile;
}
QsFeatureCatalogName CaptureModeFeaturePodController::GetCatalogName() {
return QsFeatureCatalogName::kCaptureMode;
}
void CaptureModeFeaturePodController::OnIconPressed() {
TrackToggleUMA(/*target_toggle_state=*/true);
// Close the system tray bubble. Deletes |this|.
tray_controller_->CloseBubble();
CaptureModeController::Get()->Start(CaptureModeEntryType::kQuickSettings);
}
} // namespace ash