File indexing completed on 2024-04-28 04:39:02

0001 /*
0002     SPDX-FileCopyrightText: 2010 Friedrich W. H. Kossebau <kossebau@kde.org>
0003 
0004     SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0005 */
0006 
0007 #include "kastentoolviewwidget.h"
0008 
0009 // plugin
0010 #include "oktetaview.h"
0011 // Okteta Kasten
0012 #include <Kasten/Okteta/ByteArrayView>
0013 // Kasten
0014 #include <Kasten/AbstractToolView>
0015 #include <Kasten/AbstractTool>
0016 // KDev
0017 #include <interfaces/icore.h>
0018 #include <interfaces/iuicontroller.h>
0019 #include <sublime/mainwindow.h>
0020 #include <sublime/controller.h>
0021 // Qt
0022 #include <QVBoxLayout>
0023 
0024 namespace KDevelop
0025 {
0026 
0027 // TODO: find if hidden, than unset target model
0028 KastenToolViewWidget::KastenToolViewWidget( Kasten::AbstractToolView* toolView, QWidget* parent )
0029   : QWidget( parent ),
0030     mToolView( toolView )
0031 {
0032     Sublime::Controller* controller = ICore::self()->uiController()->controller();
0033     connect( controller, &Sublime::Controller::mainWindowAdded,
0034              this, &KastenToolViewWidget::onMainWindowAdded );
0035     const QList<Sublime::MainWindow*>& mainWindows = controller->mainWindows();
0036     for (Sublime::MainWindow* mainWindow : mainWindows) {
0037         onMainWindowAdded( mainWindow );
0038     }
0039 
0040     auto* layout = new QVBoxLayout( this );
0041     layout->setContentsMargins(0, 0, 0, 0);
0042     layout->addWidget( mToolView->widget() );
0043 }
0044 
0045 void KastenToolViewWidget::onMainWindowAdded( Sublime::MainWindow* mainWindow )
0046 {
0047     connect( mainWindow, &Sublime::MainWindow::activeViewChanged,
0048              this, &KastenToolViewWidget::onActiveViewChanged );
0049     onActiveViewChanged( mainWindow->activeView() );
0050 }
0051 
0052 void KastenToolViewWidget::onActiveViewChanged( Sublime::View* view )
0053 {
0054     // TODO: check if own mainWindow
0055     auto* oktetaView = qobject_cast<OktetaView*>( view );
0056     Kasten::ByteArrayView* byteArrayView = oktetaView ? oktetaView->byteArrayView() : nullptr;
0057     mToolView->tool()->setTargetModel( byteArrayView );
0058 }
0059 
0060 KastenToolViewWidget::~KastenToolViewWidget()
0061 {
0062     Kasten::AbstractTool* tool = mToolView->tool();
0063     delete mToolView;
0064     delete tool;
0065 }
0066 
0067 }
0068 
0069 #include "moc_kastentoolviewwidget.cpp"