File indexing completed on 2024-09-22 05:16:07

0001 /*
0002     This file is part of the Kasten Framework, made within the KDE community.
0003 
0004     SPDX-FileCopyrightText: 2006-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 "closecontroller.hpp"
0010 
0011 // Kasten gui
0012 #include <Kasten/ViewManager>
0013 // KF
0014 #include <KActionCollection>
0015 #include <KStandardAction>
0016 #include <KXMLGUIClient>
0017 // Qt
0018 #include <QAction>
0019 
0020 namespace Kasten {
0021 
0022 CloseController::CloseController(ViewManager* viewManager, KXMLGUIClient* guiClient)
0023     : mViewManager(viewManager)
0024 {
0025     mCloseAction = KStandardAction::close(this, &CloseController::close, this);
0026 
0027     guiClient->actionCollection()->addAction(mCloseAction->objectName(), mCloseAction);
0028 
0029     setTargetModel(0);
0030 }
0031 
0032 void CloseController::setTargetModel(AbstractModel* model)
0033 {
0034     mView = model ? model->findBaseModel<AbstractView*>() : 0;
0035 
0036     const bool hasView = (mView != 0);
0037 
0038     mCloseAction->setEnabled(hasView);
0039 }
0040 
0041 void CloseController::close()
0042 {
0043     mViewManager->closeView(mView);
0044 }
0045 
0046 }
0047 
0048 #include "moc_closecontroller.cpp"