summaryrefslogtreecommitdiffstats
path: root/lib/util/configwidgetproxy.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/util/configwidgetproxy.cpp')
-rw-r--r--lib/util/configwidgetproxy.cpp105
1 files changed, 105 insertions, 0 deletions
diff --git a/lib/util/configwidgetproxy.cpp b/lib/util/configwidgetproxy.cpp
new file mode 100644
index 00000000..128fa2ad
--- /dev/null
+++ b/lib/util/configwidgetproxy.cpp
@@ -0,0 +1,105 @@
+/* This file is part of the KDE project
+ Copyright (C) 2004 Jens Dagerbo <[email protected]>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+
+
+#include <qstring.h>
+#include <qvbox.h>
+
+#include <kdebug.h>
+#include <kdialogbase.h>
+#include <kiconloader.h>
+
+#include <kdevcore.h>
+
+
+#include "configwidgetproxy.h"
+
+
+ConfigWidgetProxy::ConfigWidgetProxy( KDevCore * core )
+{
+ connect( core, SIGNAL(configWidget(KDialogBase*)), this, SLOT(slotConfigWidget( KDialogBase*)) );
+ connect( core, SIGNAL(projectConfigWidget(KDialogBase*)), this, SLOT(slotProjectConfigWidget( KDialogBase*)) );
+}
+
+ConfigWidgetProxy::~ConfigWidgetProxy()
+{}
+
+void ConfigWidgetProxy::createGlobalConfigPage( QString const & title, unsigned int pagenumber, QString const & icon )
+{
+ _globalTitleMap.insert( pagenumber, qMakePair( title, icon ) );
+}
+
+void ConfigWidgetProxy::createProjectConfigPage( QString const & title, unsigned int pagenumber, QString const & icon )
+{
+ _projectTitleMap.insert( pagenumber, qMakePair( title, icon ) );
+}
+
+void ConfigWidgetProxy::removeConfigPage( int pagenumber )
+{
+ _globalTitleMap.remove( pagenumber );
+ _projectTitleMap.remove( pagenumber );
+}
+
+void ConfigWidgetProxy::slotConfigWidget( KDialogBase * dlg )
+{
+ TitleMap::Iterator it = _globalTitleMap.begin();
+ while ( it != _globalTitleMap.end() )
+ {
+ _pageMap.insert( dlg->addVBoxPage( it.data().first, it.data().first, BarIcon( it.data().second, KIcon::SizeMedium ) ), it.key() );
+ ++it;
+ }
+
+ connect( dlg, SIGNAL(aboutToShowPage(QWidget*)), this, SLOT( slotAboutToShowPage(QWidget*)) );
+ connect( dlg, SIGNAL(destroyed()), this, SLOT(slotConfigWidgetDestroyed()) );
+}
+
+void ConfigWidgetProxy::slotProjectConfigWidget( KDialogBase * dlg )
+{
+ TitleMap::Iterator it = _projectTitleMap.begin();
+ while ( it != _projectTitleMap.end() )
+ {
+ _pageMap.insert( dlg->addVBoxPage( it.data().first, it.data().first, BarIcon( it.data().second, KIcon::SizeMedium ) ), it.key() );
+ ++it;
+ }
+
+ connect( dlg, SIGNAL(aboutToShowPage(QWidget*)), this, SLOT( slotAboutToShowPage(QWidget*)) );
+ connect( dlg, SIGNAL(destroyed()), this, SLOT(slotConfigWidgetDestroyed()) );
+}
+
+void ConfigWidgetProxy::slotConfigWidgetDestroyed( )
+{
+ _pageMap.clear();
+}
+
+void ConfigWidgetProxy::slotAboutToShowPage( QWidget * page )
+{
+ if ( !page ) return;
+
+ PageMap::Iterator it = _pageMap.find( page );
+ if ( it != _pageMap.end() )
+ {
+ emit insertConfigWidget( static_cast<KDialogBase*>(const_cast<QObject*>(sender())), page, it.data() );
+ _pageMap.remove( it );
+ }
+}
+
+#include "configwidgetproxy.moc"
+
+// kate: space-indent off; indent-width 4; replace-tabs off; tab-width 4;