summaryrefslogtreecommitdiffstats
path: root/kcontrol/kcontrol/main.cpp
diff options
context:
space:
mode:
authortoma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2009-11-25 17:56:58 +0000
committertoma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2009-11-25 17:56:58 +0000
commit4aed2c8219774f5d797760606b8489a92ddc5163 (patch)
tree3f8c130f7d269626bf6a9447407ef6c35954426a /kcontrol/kcontrol/main.cpp
downloadtdebase-4aed2c8219774f5d797760606b8489a92ddc5163.tar.gz
tdebase-4aed2c8219774f5d797760606b8489a92ddc5163.zip
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923 git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdebase@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kcontrol/kcontrol/main.cpp')
-rw-r--r--kcontrol/kcontrol/main.cpp153
1 files changed, 153 insertions, 0 deletions
diff --git a/kcontrol/kcontrol/main.cpp b/kcontrol/kcontrol/main.cpp
new file mode 100644
index 000000000..90e63583c
--- /dev/null
+++ b/kcontrol/kcontrol/main.cpp
@@ -0,0 +1,153 @@
+/*
+ Copyright (c) 1999 Matthias Hoelzer-Kluepfel <hoelzer@kde.org>
+ Copyright (c) 2000 Matthias Elter <elter@kde.org>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program 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 General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+*/
+
+
+/**
+ * Howto debug:
+ * start "kcontrol --nofork" in a debugger.
+ *
+ * If you want to test with command line arguments you need
+ * -after you have started kcontrol in the debugger-
+ * open another shell and run kcontrol with the desired
+ * command line arguments.
+ *
+ * The command line arguments will be passed to the version of
+ * kcontrol in the debugger via DCOP and will cause a call
+ * to newInstance().
+ */
+
+#include <qpaintdevicemetrics.h>
+
+#include <kcmdlineargs.h>
+#include <dcopclient.h>
+#include <kaboutdata.h>
+#include <kglobalsettings.h>
+#include <kconfig.h>
+#include <kdebug.h>
+
+#include "main.h"
+#include "main.moc"
+#include "toplevel.h"
+#include "global.h"
+#include "moduleIface.h"
+
+#include "version.h"
+
+KControlApp::KControlApp()
+ : KUniqueApplication()
+ , toplevel(0)
+{
+ toplevel = new TopLevel();
+
+ setMainWidget(toplevel);
+ KGlobal::setActiveInstance(this);
+
+ // KUniqueApplication does dcop regitration for us
+ ModuleIface *modIface = new ModuleIface(toplevel, "moduleIface");
+
+ connect (modIface, SIGNAL(helpClicked()), toplevel, SLOT(slotHelpRequest()));
+ connect (modIface, SIGNAL(handbookClicked()), toplevel, SLOT(slotHandbookRequest()));
+
+ QRect desk = KGlobalSettings::desktopGeometry(toplevel);
+ KConfig *config = KGlobal::config();
+ config->setGroup("General");
+ // Initial size is:
+ // never bigger than workspace as reported by desk
+ // 940x700 on 96 dpi, 12 pt font
+ // 800x600 on 72 dpi, 12 pt font
+ // --> 368 + 6 x dpiX, 312 + 4 x dpiY
+ // Adjusted for font size
+ QPaintDeviceMetrics pdm(toplevel);
+ int fontSize = toplevel->fontInfo().pointSize();
+ if (fontSize == 0)
+ fontSize = (toplevel->fontInfo().pixelSize() * 72) / pdm.logicalDpiX();
+ int x = config->readNumEntry(QString::fromLatin1("InitialWidth %1").arg(desk.width()),
+ QMIN( desk.width(), 368 + (6*pdm.logicalDpiX()*fontSize)/12 ) );
+ int y = config->readNumEntry(QString::fromLatin1("InitialHeight %1").arg(desk.height()),
+ QMIN( desk.height(), 312 + (4*pdm.logicalDpiX()*fontSize)/12 ) );
+ toplevel->resize(x,y);
+}
+
+KControlApp::~KControlApp()
+{
+ if (toplevel)
+ {
+ KConfig *config = KGlobal::config();
+ config->setGroup("General");
+ QWidget *desk = QApplication::desktop();
+ config->writeEntry(QString::fromLatin1("InitialWidth %1").arg(desk->width()), toplevel->width());
+ config->writeEntry(QString::fromLatin1("InitialHeight %1").arg(desk->height()), toplevel->height());
+ config->sync();
+ }
+ delete toplevel;
+}
+
+extern "C" KDE_EXPORT int kdemain(int argc, char *argv[])
+{
+ KLocale::setMainCatalogue("kcontrol");
+ KAboutData aboutKControl( "kcontrol", I18N_NOOP("KDE Control Center"),
+ KCONTROL_VERSION, I18N_NOOP("The KDE Control Center"), KAboutData::License_GPL,
+ I18N_NOOP("(c) 1998-2004, The KDE Control Center Developers"));
+
+ KAboutData aboutKInfoCenter( "kinfocenter", I18N_NOOP("KDE Info Center"),
+ KCONTROL_VERSION, I18N_NOOP("The KDE Info Center"), KAboutData::License_GPL,
+ I18N_NOOP("(c) 1998-2004, The KDE Control Center Developers"));
+
+ QCString argv_0 = argv[0];
+ KAboutData *aboutData;
+ if (argv_0.right(11) == "kinfocenter")
+ {
+ aboutData = &aboutKInfoCenter;
+ KCGlobal::setIsInfoCenter(true);
+ kdDebug(1208) << "Running as KInfoCenter!\n" << endl;
+ }
+ else
+ {
+ aboutData = &aboutKControl;
+ KCGlobal::setIsInfoCenter(false);
+ }
+
+
+ if (argv_0.right(11) == "kinfocenter")
+ aboutData->addAuthor("Helge Deller", I18N_NOOP("Current Maintainer"), "deller@kde.org");
+ else
+ aboutData->addAuthor("Daniel Molkentin", I18N_NOOP("Current Maintainer"), "molkentin@kde.org");
+
+ aboutData->addAuthor("Matthias Hoelzer-Kluepfel",0, "hoelzer@kde.org");
+ aboutData->addAuthor("Matthias Elter",0, "elter@kde.org");
+ aboutData->addAuthor("Matthias Ettrich",0, "ettrich@kde.org");
+ aboutData->addAuthor("Waldo Bastian",0, "bastian@kde.org");
+
+ KCmdLineArgs::init( argc, argv, aboutData );
+ KUniqueApplication::addCmdLineOptions();
+
+ KCGlobal::init();
+
+ if (!KControlApp::start()) {
+ kdDebug(1208) << "kcontrol is already running!\n" << endl;
+ return (0);
+ }
+
+ KControlApp app;
+
+ // show the whole stuff
+ app.mainWidget()->show();
+
+ return app.exec();
+}