File indexing completed on 2025-02-02 05:43:09
0001 /* 0002 This file is part of the Okteta Kasten module, made within the KDE community. 0003 0004 SPDX-FileCopyrightText: 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 "readonlybarcontroller.hpp" 0010 0011 // Kasten core 0012 #include <Kasten/AbstractDocument> 0013 // Kasten ui 0014 #include <Kasten/ToggleButton> 0015 #include <Kasten/StatusBar> 0016 // KF 0017 #include <KLocalizedString> 0018 0019 namespace Kasten { 0020 0021 ReadOnlyBarController::ReadOnlyBarController(StatusBar* statusBar) 0022 { 0023 const QString readWriteText = i18nc("@option:check the document is read-write", "Read-write"); 0024 const QString readOnlyText = i18nc("@option:check the document is read-only", "Read-only"); 0025 mReadOnlyButton = new ToggleButton(QIcon::fromTheme(QStringLiteral("object-unlocked")), QString(), readWriteText, statusBar); 0026 mReadOnlyButton->setCheckedState(QIcon::fromTheme(QStringLiteral("object-locked")), QString(), readOnlyText); 0027 statusBar->addWidget(mReadOnlyButton); 0028 connect(mReadOnlyButton, &QAbstractButton::clicked, 0029 this, &ReadOnlyBarController::setReadOnly); 0030 0031 setTargetModel(nullptr); 0032 } 0033 0034 void ReadOnlyBarController::setTargetModel(AbstractModel* model) 0035 { 0036 if (mDocument) { 0037 mDocument->disconnect(mReadOnlyButton); 0038 } 0039 0040 mDocument = model ? model->findBaseModel<AbstractDocument*>() : nullptr; 0041 0042 if (mDocument) { 0043 mReadOnlyButton->setChecked(mDocument->isReadOnly()); 0044 0045 connect(mDocument, &AbstractModel::readOnlyChanged, 0046 mReadOnlyButton, &QAbstractButton::setChecked); 0047 connect(mDocument, &AbstractModel::modifiableChanged, 0048 mReadOnlyButton, &QWidget::setEnabled); 0049 } else { 0050 mReadOnlyButton->setChecked(false); 0051 } 0052 0053 mReadOnlyButton->setEnabled(mDocument ? mDocument->isModifiable() : false); 0054 } 0055 0056 void ReadOnlyBarController::setReadOnly(bool isReadOnly) 0057 { 0058 mDocument->setReadOnly(isReadOnly); 0059 } 0060 0061 } 0062 0063 #include "moc_readonlybarcontroller.cpp"