Warning, file /utilities/okteta/kasten/controllers/view/overwritemode/overwritemodecontroller.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: 2008-2009 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 "overwritemodecontroller.hpp"
0010 
0011 // Okteta Kasten gui
0012 #include <Kasten/Okteta/ByteArrayView>
0013 // KF
0014 #include <KXMLGUIClient>
0015 #include <KLocalizedString>
0016 #include <KActionCollection>
0017 #include <KToggleAction>
0018 
0019 namespace Kasten {
0020 
0021 OverwriteModeController::OverwriteModeController(KXMLGUIClient* guiClient)
0022 {
0023     KActionCollection* actionCollection = guiClient->actionCollection();
0024 
0025     mSetOverWriteAction = new KToggleAction(i18nc("@option:check set the view into overwrite mode",
0026                                                   "Overwr&ite Mode"), this);
0027     mSetOverWriteAction->setWhatsThis(
0028         i18nc("@info:whatsthis",
0029               "Choose whether you want the input to be inserted or to overwrite existing data."));
0030     // TODO: or should we catch the signal from the view (needs to be added)
0031     actionCollection->setDefaultShortcut(mSetOverWriteAction, QKeySequence(Qt::Key_Insert));
0032     connect(mSetOverWriteAction, &KToggleAction::triggered, this, &OverwriteModeController::setOverWrite);
0033 
0034     actionCollection->addAction(QStringLiteral("set_overwrite"), mSetOverWriteAction);
0035 
0036     setTargetModel(nullptr);
0037 }
0038 
0039 void OverwriteModeController::setTargetModel(AbstractModel* model)
0040 {
0041     if (mByteArrayView) {
0042         mByteArrayView->disconnect(mSetOverWriteAction);
0043     }
0044 
0045     mByteArrayView = model ? model->findBaseModel<ByteArrayView*>() : nullptr;
0046 
0047     if (mByteArrayView) {
0048         mSetOverWriteAction->setChecked(mByteArrayView->isOverwriteMode());
0049 
0050         connect(mByteArrayView, &ByteArrayView::overwriteModeChanged,
0051                 mSetOverWriteAction, &KToggleAction::setChecked);
0052         // TODO: catch if isOverwriteOnly changes
0053     }
0054 
0055     const bool canInsert = mByteArrayView && !mByteArrayView->isOverwriteOnly();
0056     mSetOverWriteAction->setEnabled(canInsert);
0057 }
0058 
0059 void OverwriteModeController::setOverWrite(bool isOverWrite)
0060 {
0061     mByteArrayView->setOverwriteMode(isOverWrite);
0062 }
0063 
0064 }
0065 
0066 #include "moc_overwritemodecontroller.cpp"