56 lines
1.5 KiB
C++
56 lines
1.5 KiB
C++
#include "LayerTreeViewMenuProvider.h"
|
|
#include "LayerTreeView.h"
|
|
#include "LayerTreeModel.h"
|
|
#include "LayerTreeNode.h"
|
|
#include "HPPA.h"
|
|
#include <QAction>
|
|
#include <QDebug>
|
|
|
|
LayerTreeViewMenuProvider::LayerTreeViewMenuProvider(LayerTreeView* view, QObject* parent)
|
|
: QObject(parent), m_view(view)
|
|
{
|
|
}
|
|
|
|
QMenu* LayerTreeViewMenuProvider::createContextMenu()
|
|
{
|
|
m_contextIndex = m_view->currentIndex();
|
|
|
|
QMenu* menu = new QMenu();
|
|
|
|
if (!m_contextIndex.isValid())
|
|
{
|
|
return menu;
|
|
}
|
|
|
|
const LayerTreeModel* model = static_cast<const LayerTreeModel*>(m_contextIndex.model());
|
|
if (!model)
|
|
{
|
|
return menu;
|
|
}
|
|
|
|
LayerTreeNode* node = static_cast<LayerTreeNode*>(m_contextIndex.internalPointer());
|
|
if (!node)
|
|
{
|
|
return menu;
|
|
}
|
|
|
|
if (node->type() == LayerTreeNode::Type::Layer)
|
|
{
|
|
QAction* removeAction = new QAction(QStringLiteral("移除图层"), menu);
|
|
connect(removeAction, &QAction::triggered, HPPA::instance(), &HPPA::removeLayerByTreeIndex);
|
|
menu->addAction(removeAction);
|
|
}
|
|
else if (node->type() == LayerTreeNode::Type::Group)
|
|
{
|
|
HPPA* app = HPPA::instance();
|
|
if (app && node == app->rasterGroupNode())
|
|
{
|
|
QAction* removeAllAction = new QAction(QStringLiteral("移除所有图层"), menu);
|
|
connect(removeAllAction, &QAction::triggered, app, &HPPA::removeAllLayersInRasterGroup);
|
|
menu->addAction(removeAllAction);
|
|
}
|
|
}
|
|
|
|
return menu;
|
|
}
|