File indexing completed on 2024-05-26 05:56:50

0001 /*
0002     This file is part of the Okteta Kasten module, made within the KDE community.
0003 
0004     SPDX-FileCopyrightText: 2008 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 "viewmodecontroller.hpp"
0010 
0011 // Okteta Kasten gui
0012 #include <Kasten/Okteta/ByteArrayView>
0013 // KF
0014 #include <kwidgetsaddons_version.h>
0015 #include <KXMLGUIClient>
0016 #include <KLocalizedString>
0017 #include <KActionCollection>
0018 #include <KSelectAction>
0019 
0020 namespace Kasten {
0021 
0022 ViewModeController::ViewModeController(KXMLGUIClient* guiClient)
0023 {
0024     // view style
0025     mViewModeAction = new KSelectAction(i18nc("@title:menu", "&View Mode"), this);
0026     mViewModeAction->setItems(QStringList {
0027         i18nc("@item:inmenu", "&Columns"),
0028         i18nc("@item:inmenu", "&Rows"),
0029     });
0030     connect(mViewModeAction, &KSelectAction::indexTriggered,
0031             this, &ViewModeController::setViewMode);
0032 
0033     guiClient->actionCollection()->addAction(QStringLiteral("viewmode"), mViewModeAction);
0034 
0035     setTargetModel(nullptr);
0036 }
0037 
0038 void ViewModeController::setTargetModel(AbstractModel* model)
0039 {
0040     if (mByteArrayView) {
0041         mByteArrayView->disconnect(this);
0042     }
0043 
0044     mByteArrayView = model ? model->findBaseModel<ByteArrayView*>() : nullptr;
0045 
0046     const bool hasView = (mByteArrayView != nullptr);
0047     if (hasView) {
0048         onViewModusChanged((int)mByteArrayView->viewModus());
0049         connect(mByteArrayView, &ByteArrayView::viewModusChanged,
0050                 this, &ViewModeController::onViewModusChanged);
0051 
0052     }
0053     mViewModeAction->setEnabled(hasView);
0054 }
0055 
0056 void ViewModeController::setViewMode(int viewMode)
0057 {
0058     mByteArrayView->setViewModus(viewMode);
0059 }
0060 
0061 void ViewModeController::onViewModusChanged(int viewModus)
0062 {
0063     mViewModeAction->setCurrentItem(viewModus);
0064 }
0065 
0066 }
0067 
0068 #include "moc_viewmodecontroller.cpp"