// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later #ifndef APPMENU_H #define APPMENU_H #include #include #include #include #include #include typedef std::function AppMenuAction; class AppMenu; // 应用菜单选项 struct AppMenuItem { AppMenuItem() : isActive(true) , hint(0) { } QString id; QString text; QString isCheckable; QString checked; QString icon; QString iconHover; QString iconInactive; QString showCheckMark; std::shared_ptr subMenu; bool isActive; int hint; AppMenuAction action; }; // 应用菜单类 class AppMenu { public: AppMenu(); void appendItem(AppMenuItem item); void setDirtyStatus(bool isDirty); void handleAction(uint32_t timestamp, QString itemId); QString getMenuJsonStr(); private: QString allocateId(); private: int m_itemCount; bool m_dirty; bool m_checkableMenu; // json:"checkableMenu" bool m_singleCheck; // json:"singleCheck" QVector m_items; // json:"items" }; #endif // APPMENU_H