|
|
|
|
#ifndef SARIBBONCUSTOMIZEDATA_H
|
|
|
|
|
#define SARIBBONCUSTOMIZEDATA_H
|
|
|
|
|
#include "SARibbonGlobal.h"
|
|
|
|
|
#include "SARibbonActionsManager.h"
|
|
|
|
|
#include "SARibbonPannel.h"
|
|
|
|
|
#include <QList>
|
|
|
|
|
class SARibbonBar;
|
|
|
|
|
class SARibbonMainWindow;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief 记录所有自定义操作的数据类
|
|
|
|
|
* @note 此数据依赖于@ref SARibbonActionsManager 要在SARibbonActionsManager之后使用此类
|
|
|
|
|
*/
|
|
|
|
|
class SA_RIBBON_EXPORT SARibbonCustomizeData
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
enum ActionType
|
|
|
|
|
{
|
|
|
|
|
UnknowActionType = 0, ///< 未知操作
|
|
|
|
|
AddCategoryActionType, ///< 添加category操作(1)
|
|
|
|
|
AddPannelActionType, ///< 添加pannel操作(2)
|
|
|
|
|
AddActionActionType, ///< 添加action操作(3)
|
|
|
|
|
RemoveCategoryActionType, ///< 删除category操作(4)
|
|
|
|
|
RemovePannelActionType, ///< 删除pannel操作(5)
|
|
|
|
|
RemoveActionActionType, ///< 删除action操作(6)
|
|
|
|
|
ChangeCategoryOrderActionType, ///< 改变category顺序的操作(7)
|
|
|
|
|
ChangePannelOrderActionType, ///< 改变pannel顺序的操作(8)
|
|
|
|
|
ChangeActionOrderActionType, ///< 改变action顺序的操作(9)
|
|
|
|
|
RenameCategoryActionType, ///< 对category更名操作(10)
|
|
|
|
|
RenamePannelActionType, ///< 对Pannel更名操作(11)
|
|
|
|
|
VisibleCategoryActionType ///< 对category执行隐藏/显示操作(12)
|
|
|
|
|
};
|
|
|
|
|
SARibbonCustomizeData();
|
|
|
|
|
SARibbonCustomizeData(ActionType type, SARibbonActionsManager* mgr = nullptr);
|
|
|
|
|
//获取CustomizeData的action type
|
|
|
|
|
ActionType actionType() const;
|
|
|
|
|
|
|
|
|
|
//设置CustomizeData的action type
|
|
|
|
|
void setActionType(ActionType a);
|
|
|
|
|
|
|
|
|
|
//判断是否是一个正常的CustomizeData
|
|
|
|
|
bool isValid() const;
|
|
|
|
|
|
|
|
|
|
//应用SARibbonCustomizeData
|
|
|
|
|
bool apply(SARibbonBar* bar) const;
|
|
|
|
|
|
|
|
|
|
//获取actionmanager指针
|
|
|
|
|
SARibbonActionsManager* actionManager();
|
|
|
|
|
|
|
|
|
|
//设置ActionsManager
|
|
|
|
|
void setActionsManager(SARibbonActionsManager* mgr);
|
|
|
|
|
|
|
|
|
|
//对应AddCategoryActionType
|
|
|
|
|
static SARibbonCustomizeData makeAddCategoryCustomizeData(const QString& title, int index, const QString& objName);
|
|
|
|
|
|
|
|
|
|
//对应AddPannelActionType
|
|
|
|
|
static SARibbonCustomizeData makeAddPannelCustomizeData(const QString& title, int index, const QString& categoryobjName, const QString& objName);
|
|
|
|
|
|
|
|
|
|
//对应AddActionActionType
|
|
|
|
|
static SARibbonCustomizeData makeAddActionCustomizeData(const QString& key,
|
|
|
|
|
SARibbonActionsManager* mgr,
|
|
|
|
|
SARibbonPannelItem::RowProportion rp,
|
|
|
|
|
const QString& categoryObjName,
|
|
|
|
|
const QString& pannelObjName);
|
|
|
|
|
|
|
|
|
|
//对应RenameCategoryActionType
|
|
|
|
|
static SARibbonCustomizeData makeRenameCategoryCustomizeData(const QString& newname, const QString& categoryobjName);
|
|
|
|
|
|
|
|
|
|
//对应RenamePannelActionType
|
|
|
|
|
static SARibbonCustomizeData makeRenamePannelCustomizeData(const QString& newname,
|
|
|
|
|
const QString& categoryobjName,
|
|
|
|
|
const QString& pannelObjName);
|
|
|
|
|
|
|
|
|
|
//对应RemoveCategoryActionType
|
|
|
|
|
static SARibbonCustomizeData makeRemoveCategoryCustomizeData(const QString& categoryobjName);
|
|
|
|
|
|
|
|
|
|
//对应ChangeCategoryOrderActionType
|
|
|
|
|
static SARibbonCustomizeData makeChangeCategoryOrderCustomizeData(const QString& categoryobjName, int moveindex);
|
|
|
|
|
|
|
|
|
|
//对应ChangePannelOrderActionType
|
|
|
|
|
static SARibbonCustomizeData makeChangePannelOrderCustomizeData(const QString& categoryobjName,
|
|
|
|
|
const QString& pannelObjName,
|
|
|
|
|
int moveindex);
|
|
|
|
|
|
|
|
|
|
//对应ChangeActionOrderActionType
|
|
|
|
|
static SARibbonCustomizeData makeChangeActionOrderCustomizeData(const QString& categoryobjName,
|
|
|
|
|
const QString& pannelObjName,
|
|
|
|
|
const QString& key,
|
|
|
|
|
SARibbonActionsManager* mgr,
|
|
|
|
|
int moveindex);
|
|
|
|
|
|
|
|
|
|
//对应RemovePannelActionType
|
|
|
|
|
static SARibbonCustomizeData makeRemovePannelCustomizeData(const QString& categoryobjName, const QString& pannelObjName);
|
|
|
|
|
|
|
|
|
|
//对应RemoveActionActionType
|
|
|
|
|
static SARibbonCustomizeData makeRemoveActionCustomizeData(const QString& categoryobjName,
|
|
|
|
|
const QString& pannelObjName,
|
|
|
|
|
const QString& key,
|
|
|
|
|
SARibbonActionsManager* mgr);
|
|
|
|
|
|
|
|
|
|
//对应VisibleCategoryActionType
|
|
|
|
|
static SARibbonCustomizeData makeVisibleCategoryCustomizeData(const QString& categoryobjName, bool isShow);
|
|
|
|
|
|
|
|
|
|
//判断是否可以自定义,如果某个action不想被编辑,可以通过此函数设置
|
|
|
|
|
static bool isCanCustomize(QObject* obj);
|
|
|
|
|
static void setCanCustomize(QObject* obj, bool canbe = true);
|
|
|
|
|
|
|
|
|
|
//对QList<SARibbonCustomizeData>进行简化
|
|
|
|
|
static QList< SARibbonCustomizeData > simplify(const QList< SARibbonCustomizeData >& csd);
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
/**
|
|
|
|
|
* @brief 记录顺序的参数
|
|
|
|
|
*
|
|
|
|
|
* 在actionType==AddCategoryActionType时,此参数记录Category的insert位置,
|
|
|
|
|
* 在actionType==AddPannelActionType时,此参数记录pannel的insert位置,
|
|
|
|
|
* 在actionType==AddActionActionType时,此参数记录pannel的insert位置
|
|
|
|
|
*/
|
|
|
|
|
int indexValue;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief 记录标题、索引等参数
|
|
|
|
|
*
|
|
|
|
|
* 在actionType==AddCategoryActionType时,key为category标题,
|
|
|
|
|
* 在actionType==AddPannelActionType时,key为pannel标题,
|
|
|
|
|
* 在actionType==AddActionActionType时,key为action的查询依据,基于SARibbonActionsManager::action查询
|
|
|
|
|
*/
|
|
|
|
|
QString keyValue;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief 记录categoryObjName,用于定位Category
|
|
|
|
|
*/
|
|
|
|
|
QString categoryObjNameValue;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief 记录pannelObjName,saribbon的Customize索引大部分基于objname
|
|
|
|
|
*/
|
|
|
|
|
QString pannelObjNameValue;
|
|
|
|
|
|
|
|
|
|
SARibbonPannelItem::RowProportion actionRowProportionValue; ///< 行的占比,ribbon中有large,media和small三种占比,见@ref RowProportion
|
|
|
|
|
private:
|
|
|
|
|
ActionType m_type; ///< 标记这个data是category还是pannel亦或是action
|
|
|
|
|
SARibbonActionsManager* m_actionsManagerPointer;
|
|
|
|
|
};
|
|
|
|
|
Q_DECLARE_METATYPE(SARibbonCustomizeData)
|
|
|
|
|
|
|
|
|
|
typedef QList< SARibbonCustomizeData > SARibbonCustomizeDataList;
|
|
|
|
|
|
|
|
|
|
#endif // SARIBBONCUSTOMIZEDATA_H
|