logplus/ModuleConsole/src/WorkflowToolBarView.cpp

160 lines
4.9 KiB
C++
Raw Normal View History

2026-01-16 17:18:41 +08:00
/*
* WorkflowToolBarView.cpp
*
* Created on: 2011-10-8
* Author: dev
*/
#include <cassert>
#include <QApplication>
#include <QIcon>
#include <QAction>
#include <QPainter>
#include <QtDebug>
#include <QStyle>
#include <QMenu>
#include "WorkflowWidget.h"
#include "WorkflowToolBarView.h"
#include "PaiToolBar.h"
#include "PaiLineEdit.h"
#include "PageService.h"
#include "ConsoleGUIService.h"
#include "ToolBarService.h"
#include "WorkflowConst.h"
#include "PaiWorkflowDataModel.h"
#include "PaiTabWidget.h"
#include "PaiAction.h"
using namespace pai;
using namespace pai::gui;
using namespace pai::graphics2d;
namespace pai
{
/**
* P.A.I系统的插件的内容区通常有一个带菜单的工具栏
*/
class CPaiSubToolBar:public pai::gui::PaiToolBar
{
public:
CPaiSubToolBar(const QString& strTitle,QWidget* pParent):PaiToolBar(strTitle,pParent)
{
setIconSize(QSize(14, 14));
}
virtual ~CPaiSubToolBar()
{
}
protected:
virtual void paintEvent ( QPaintEvent * event )
{
PaiToolBar::paintEvent(event);
}
};
}
CWorkflowToolBarView::CWorkflowToolBarView(WorkflowWidget *wfw,const QUuid& pageID,QWidget *parent)
:PaiToolBarView(parent),m_pageID(pageID),m_workflowToolBarName(wfw->GetID().toString()+g_szStyleToolBarName) {
// TODO Auto-generated constructor stub
QIcon icon = QApplication::style()->standardIcon(QStyle::SP_CommandLink);
//删除里面所有的toolBar,其实只有一个默认toolBar
QList<QToolBar*> pToolBar = this->GetToolBars();
for(int i=0; i<pToolBar.size(); i++)
{
RemoveToolBar(pToolBar.at(i));
}
//注意这里给工具栏赋予了唯一的名字
CPaiSubToolBar* styleToolBar = new pai::CPaiSubToolBar(m_workflowToolBarName, NULL);
//为该工具栏添加工具栏服务
PageService* pPageService = ::GetConsoleGUIService()->GetViewTabService()->GetPageService(m_pageID);
assert(pPageService != NULL);
ToolBarService* pStyleToolBarService = new pai::ToolBarService();//该对象的生存期由PageService负责
pStyleToolBarService->SetStringID(m_workflowToolBarName.toStdString());//该ToolBarService的ExtensionID为工作流ID+g_szStyleToolBarName
pPageService->Register(pStyleToolBarService,ILocation());
//添加查询控件
PaiAction* pAddlineAction=new PaiAction(QIcon(":/WAddline.png"),tr(g_szConnect),NULL);
pAddlineAction->SetPermission(pai::gui::PaiAction::UPDATE);
pAddlineAction->setEnabled(false);
pStyleToolBarService->Register(pAddlineAction);
PaiAction* pBreakAction=new PaiAction(QIcon(":/WBreak.png"),tr(g_szBreak),NULL);
pBreakAction->setEnabled(false);
pBreakAction->SetPermission(pai::gui::PaiAction::UPDATE);
pStyleToolBarService->Register(pBreakAction);
PaiAction* pDeleteAction=new PaiAction(QIcon(":/WDelete.png"),tr(g_szDeleteO),NULL);
pDeleteAction->setEnabled(false);
pDeleteAction->SetPermission(pai::gui::PaiAction::UPDATE);
pStyleToolBarService->Register(pDeleteAction);
PaiAction* pLayoutAction=new PaiAction(QIcon(":/WLayout.png"),tr(g_szAutoAlign),NULL);
pLayoutAction->setEnabled(false);
pLayoutAction->SetPermission(pai::gui::PaiAction::UPDATE);
pStyleToolBarService->Register(pLayoutAction);
QAction* pEditAction=new QAction(QIcon(":/WEdit.png"),tr(g_szEditDot),NULL);
pEditAction->setEnabled(false);
pStyleToolBarService->Register(pEditAction);
QMenu *menu = new QMenu();
menu->addAction("item");
QAction* pDemoAction=new QAction(QIcon(":/WDemo.png"),tr(g_szDemo),NULL);
pDemoAction->setMenu(menu);
pDemoAction->setEnabled(false);
pStyleToolBarService->Register(pDemoAction);
QAction* pDeleteDisabledItemAction=new QAction(QIcon(":/DeleteDisable.png"),tr(g_szDeleteDisabledItems),NULL);
pDeleteDisabledItemAction->setEnabled(false);
pStyleToolBarService->Register(pDeleteDisabledItemAction);
styleToolBar->addActions(pStyleToolBarService->GetToolbarActions());
styleToolBar->AddSpacer();
QWidget *widget = new QWidget;
styleToolBar->addWidget(widget);
this->AddToolBar(styleToolBar, PaiToolBarView::SMALL_TOOLBAR);
this->SetViewport(wfw);
installEventFilter(this);
}
bool CWorkflowToolBarView::eventFilter(QObject *pObj, QEvent *pEvent)
{
bool ret = QObject::eventFilter(pObj, pEvent);
switch (pEvent->type())
{
case QEvent::WindowActivate:
{
if (this == pObj && parent() != NULL)
{
PaiTabWidget* pTabWidget = dynamic_cast<PaiTabWidget*>(parent()->parent());
if (pTabWidget != NULL)
{
pTabWidget->OnCurrentChanged(pTabWidget->currentIndex());
}
}
}
break;
default:
break;
}
return ret;
}
CWorkflowToolBarView::~CWorkflowToolBarView() {
// TODO Auto-generated destructor stub
PageService* pPageService = ::GetConsoleGUIService()->GetViewTabService()->GetPageService(m_pageID);
if (pPageService != NULL)
{
pPageService->CService::Unregister(m_workflowToolBarName.toStdString());
}
}