/* * Copyright (C) 2021 ~ 2022 Deepin Technology Co., Ltd. * * Author: weizhixiang * * Maintainer: weizhixiang * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #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 handleAction(uint32_t timestamp, QString itemId); void setDirtyStatus(bool isDirty); QString getMenuJsonStr(); private: QString allocateId(); private: QVector m_items; // json:"items" bool m_checkableMenu; // json:"checkableMenu" bool m_singleCheck; // json:"singleCheck" int m_itemCount; bool m_dirty; }; #endif // APPMENU_H