#ifndef ASH_SYSTEM_PHONEHUB_LOCATE_PHONE_QUICK_ACTION_CONTROLLER_H_
#define ASH_SYSTEM_PHONEHUB_LOCATE_PHONE_QUICK_ACTION_CONTROLLER_H_
#include "ash/system/phonehub/quick_action_controller_base.h"
#include "base/memory/raw_ptr.h"
#include "chromeos/ash/components/phonehub/find_my_device_controller.h"
namespace base {
class OneShotTimer;
}
namespace ash {
class LocatePhoneQuickActionController
: public QuickActionControllerBase,
public phonehub::FindMyDeviceController::Observer {
public:
LocatePhoneQuickActionController(
phonehub::FindMyDeviceController* find_my_device_controller);
~LocatePhoneQuickActionController() override;
LocatePhoneQuickActionController(LocatePhoneQuickActionController&) = delete;
LocatePhoneQuickActionController operator=(
LocatePhoneQuickActionController&) = delete;
QuickActionItem* CreateItem() override;
void OnButtonPressed(bool is_now_enabled) override;
void UpdateQuickActionItemUi() override;
void OnPhoneRingingStateChanged() override;
private:
enum class ActionState { kNotAvailable, kOff, kOn };
void UpdateState();
void SetItemState(ActionState state);
void CheckRequestedState();
raw_ptr<phonehub::FindMyDeviceController> find_my_device_controller_ =
nullptr;
raw_ptr<QuickActionItem> item_ = nullptr;
ActionState state_ = ActionState::kOff;
std::optional<ActionState> requested_state_;
std::unique_ptr<base::OneShotTimer> check_requested_state_timer_;
};
}
#endif