#ifndef ASH_SHELF_SHELF_CONTEXT_MENU_MODEL_H_
#define ASH_SHELF_SHELF_CONTEXT_MENU_MODEL_H_
#include <memory>
#include <vector>
#include "ash/ash_export.h"
#include "base/memory/raw_ptr.h"
#include "ui/menus/simple_menu_model.h"
namespace ash {
class ShelfItemDelegate;
class ASH_EXPORT ShelfContextMenuModel : public ui::SimpleMenuModel,
public ui::SimpleMenuModel::Delegate {
public:
enum CommandId {
MENU_ASH_START = 500,
MENU_AUTO_HIDE = MENU_ASH_START,
MENU_ALIGNMENT_MENU = 501,
MENU_ALIGNMENT_LEFT = 502,
MENU_ALIGNMENT_RIGHT = 503,
MENU_ALIGNMENT_BOTTOM = 504,
MENU_PERSONALIZATION_HUB = 506,
MENU_HIDE_CONTINUE_SECTION = 507,
MENU_SHOW_CONTINUE_SECTION = 508,
MENU_HIDE_DESK_NAME = 509,
MENU_SHOW_DESK_NAME = 510,
MENU_ASH_END
};
ShelfContextMenuModel(ShelfItemDelegate* delegate,
int64_t display_id,
bool menu_in_shelf);
ShelfContextMenuModel(const ShelfContextMenuModel&) = delete;
ShelfContextMenuModel& operator=(const ShelfContextMenuModel&) = delete;
~ShelfContextMenuModel() override;
bool IsCommandIdChecked(int command_id) const override;
void ExecuteCommand(int command_id, int event_flags) override;
private:
void AddShelfAndWallpaperItems();
raw_ptr<ShelfItemDelegate> delegate_;
const int64_t display_id_;
const bool menu_in_shelf_;
std::unique_ptr<ui::SimpleMenuModel> alignment_submenu_;
};
}
#endif