Warning, file /utilities/okteta/kasten/controllers/view/viewcontextmenu/viewcontextmenucontroller.cpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

0001 /*
0002     This file is part of the Okteta Kasten module, made within the KDE community.
0003 
0004     SPDX-FileCopyrightText: 2019 Friedrich W. H. Kossebau <kossebau@kde.org>
0005 
0006     SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0007 */
0008 
0009 #include "viewcontextmenucontroller.hpp"
0010 
0011 // Okteta Kasten gui
0012 #include <Kasten/Okteta/ByteArrayView>
0013 // KF
0014 #include <KXMLGUIClient>
0015 #include <KXMLGUIFactory>
0016 #include <KLocalizedString>
0017 // Qt
0018 #include <QMenu>
0019 
0020 namespace Kasten {
0021 
0022 ViewContextMenuController::ViewContextMenuController(KXMLGUIClient* guiClient)
0023     : mGuiClient(guiClient)
0024 {
0025     setTargetModel(nullptr);
0026 }
0027 
0028 void ViewContextMenuController::setTargetModel(AbstractModel* model)
0029 {
0030     if (mByteArrayView) {
0031         mByteArrayView->disconnect(this);
0032     }
0033 
0034     mByteArrayView = model ? model->findBaseModel<ByteArrayView*>() : nullptr;
0035 
0036     if (mByteArrayView) {
0037         connect(mByteArrayView, &ByteArrayView::viewContextMenuRequested,
0038                 this, &ViewContextMenuController::showContextMenu);
0039     }
0040 }
0041 
0042 void ViewContextMenuController::showContextMenu(QPoint pos)
0043 {
0044     QWidget* w = mGuiClient->factory()->container(QStringLiteral("viewContextMenu"), mGuiClient);
0045     auto* popup = static_cast<QMenu*>(w);
0046 
0047     const auto popupPoint = mByteArrayView->widget()->mapToGlobal(pos);
0048 
0049     popup->popup(popupPoint);
0050 }
0051 
0052 }
0053 
0054 #include "moc_viewcontextmenucontroller.cpp"