File indexing completed on 2024-05-12 04:33:20
0001 /* 0002 SPDX-FileCopyrightText: 2012 Victor Dodon <dodonvictor at gmail dot com> 0003 SPDX-FileCopyrightText: 2012-2018 Gilles Caulier <caulier dot gilles at gmail dot com> 0004 0005 SPDX-License-Identifier: GPL-2.0-or-later 0006 */ 0007 0008 #include "kipitestmainwindow.h" 0009 0010 // Qt includes 0011 0012 #include <QPointer> 0013 #include <QDebug> 0014 #include <QMenuBar> 0015 0016 // KF includes 0017 0018 #include <KConfigGroup> 0019 #include <KSharedConfig> 0020 #include <KToggleAction> 0021 #include <KStandardAction> 0022 #include <KActionCollection> 0023 #include <KShortcutsDialog> 0024 #include <KEditToolBar> 0025 #include <KWindowConfig> 0026 0027 // LibKIPI includes 0028 0029 #include "pluginloader.h" 0030 #include "libkipi_version.h" 0031 0032 // Local includes 0033 0034 #include "kipitestpluginloader.h" 0035 #include "kipiinterface.h" 0036 #include "kipisetup.h" 0037 0038 namespace KXMLKipiCmd 0039 { 0040 0041 KipiTestMainWindow* KipiTestMainWindow::m_instance = nullptr; 0042 0043 class KipiTestMainWindow::Private 0044 { 0045 0046 public: 0047 0048 Private() : 0049 config(nullptr), 0050 quitAction(nullptr), 0051 showMenuBarAction(nullptr), 0052 kipiInterface(nullptr), 0053 uiFile(QString()) 0054 { 0055 } 0056 0057 KSharedConfig::Ptr config; 0058 QAction* quitAction; 0059 KToggleAction* showMenuBarAction; 0060 KipiInterface* kipiInterface; 0061 QString uiFile; 0062 }; 0063 0064 KipiTestMainWindow::KipiTestMainWindow(const QList<QUrl>& selectedImages, 0065 const QList<QUrl>& selectedAlbums, 0066 const QList<QUrl>& allAlbums) 0067 : KXmlGuiWindow(nullptr), 0068 d(new Private()) 0069 { 0070 m_instance = this; 0071 d->config = KSharedConfig::openConfig(); 0072 d->kipiInterface = new KipiInterface(this, QLatin1String("kxmlkipicmd_KIPI_interface")); 0073 KConfigGroup uiGroup = d->config->group(QLatin1String("UI Settings")); 0074 QString uiFile = uiGroup.readEntry(QString::fromLatin1("UiFile"), QString::fromLatin1("kxmlkipicmd_defaultui.rc")); 0075 0076 d->uiFile = uiFile; 0077 setObjectName(QString::fromLatin1("kxmlkipicmd")); 0078 0079 setMinimumSize(QSize(800, 600)); 0080 KConfigGroup mainWindowGroup = d->config->group(QLatin1String("MainWindow Dialog")); 0081 KWindowConfig::restoreWindowSize(windowHandle(), mainWindowGroup); 0082 0083 if (!selectedImages.empty()) 0084 { 0085 d->kipiInterface->addSelectedImages(selectedImages); 0086 } 0087 if (!selectedAlbums.empty()) 0088 { 0089 d->kipiInterface->addSelectedAlbums(selectedAlbums); 0090 } 0091 if (!allAlbums.empty()) 0092 { 0093 d->kipiInterface->addAlbums(allAlbums); 0094 } 0095 0096 setupActions(); 0097 0098 // Provides a menu entry that allows showing/hiding the toolbar(s) 0099 setStandardToolBarMenuEnabled(true); 0100 0101 loadPlugins(); 0102 } 0103 0104 KipiTestMainWindow::~KipiTestMainWindow() 0105 { 0106 KConfigGroup group = d->config->group(QLatin1String("MainWindow Dialog")); 0107 KWindowConfig::saveWindowSize(windowHandle(), group); 0108 group.sync(); 0109 0110 delete d; 0111 } 0112 0113 KipiTestMainWindow* KipiTestMainWindow::instance() 0114 { 0115 return m_instance; 0116 } 0117 0118 void KipiTestMainWindow::setupActions() 0119 { 0120 d->showMenuBarAction = KStandardAction::showMenubar(this, SLOT(slotShowMenuBar()), actionCollection()); 0121 d->quitAction = KStandardAction::quit(this, SLOT(close()), actionCollection()); 0122 actionCollection()->addAction(QString::fromLatin1("app_exit"), d->quitAction); 0123 0124 KStandardAction::keyBindings(this, SLOT(slotEditKeys()), actionCollection()); 0125 KStandardAction::configureToolbars(this, SLOT(slotConfToolbars()), actionCollection()); 0126 KStandardAction::preferences(this, SLOT(slotSetup()), actionCollection()); 0127 0128 createGUI(d->uiFile); 0129 } 0130 0131 void KipiTestMainWindow::loadPlugins() 0132 { 0133 new KipiTestPluginLoader(this, d->kipiInterface); 0134 } 0135 0136 void KipiTestMainWindow::slotShowMenuBar() 0137 { 0138 menuBar()->setVisible(d->showMenuBarAction->isChecked()); 0139 } 0140 0141 void KipiTestMainWindow::slotEditKeys() 0142 { 0143 KShortcutsDialog dialog(KShortcutsEditor::AllActions, 0144 KShortcutsEditor::LetterShortcutsAllowed, this); 0145 dialog.addCollection(actionCollection(), QLatin1String("General")); 0146 dialog.addCollection(KipiTestPluginLoader::instance()->pluginsActionCollection(), 0147 QLatin1String("KIPI-Plugins")); 0148 dialog.configure(); 0149 } 0150 0151 void KipiTestMainWindow::slotConfToolbars() 0152 { 0153 KConfigGroup grp = d->config->group(QLatin1String("General Settings")); 0154 saveMainWindowSettings(grp); 0155 KEditToolBar dlg(factory(), this); 0156 0157 connect(&dlg, &KEditToolBar::newToolBarConfig, 0158 this, &KipiTestMainWindow::slotNewToolbarConfig); 0159 0160 dlg.exec(); 0161 } 0162 0163 void KipiTestMainWindow::slotNewToolbarConfig() 0164 { 0165 applyMainWindowSettings(d->config->group(QLatin1String("General Settings"))); 0166 } 0167 0168 void KipiTestMainWindow::slotSetup() 0169 { 0170 KipiSetup::runSetupDialog(this); 0171 } 0172 0173 } // namespace KXMLKipiCmd 0174 0175 #include "moc_kipitestmainwindow.cpp"