Fix some error
[kdeartwork.git] / kscreensaver / xsavers / main.cpp
blobde514e7846b827a572f2a18c58f75e766fd6fa0b
1 //-----------------------------------------------------------------------------
2 //
3 // Screen savers for KDE
4 //
5 // Copyright (c) Martin R. Jones 1999
6 //
8 #include <config.h>
10 #include <stdio.h>
11 #include <stdlib.h>
12 #include <signal.h>
14 #include <qcolor.h>
16 #include <klocale.h>
17 #include <kconfig.h>
18 #include <kstandarddirs.h>
19 #include <kdebug.h>
20 #include <kapplication.h>
21 #include <kcmdlineargs.h>
22 #include <kcrash.h>
23 #include <QDesktopWidget>
24 #include "demowin.h"
25 #include "saver.h"
27 static const char appName[] = "klock";
28 static const char description[] = I18N_NOOP("KDE Screen Lock/Saver");
29 static const char version[] = "2.0.0";
31 static const KCmdLineOptions options[] =
33 { "setup", I18N_NOOP("Setup screen saver"), 0 },
34 { "window-id wid", I18N_NOOP("Run in the specified XWindow"), 0 },
35 { "root", I18N_NOOP("Run in the root XWindow"), 0 },
36 { "demo", I18N_NOOP("Start screen saver in demo mode"), "default"},
37 KCmdLineLastOption
40 static void crashHandler( int /*sig*/ )
42 #ifdef SIGABRT
43 signal ( SIGABRT, SIG_DFL );
44 #endif
45 abort();
48 //----------------------------------------------------------------------------
50 int main(int argc, char *argv[])
52 KCmdLineArgs::init(argc, argv, appName, I18N_NOOP("KLock"), description, version);
54 KCmdLineArgs::addCmdLineOptions(options);
56 KApplication app;
58 KCrash::setCrashHandler( crashHandler );
60 DemoWindow *demoWidget = 0;
61 Window saveWin = 0;
63 KCmdLineArgs *args = KCmdLineArgs::parsedArgs();
65 if (args->isSet("setup"))
67 setupScreenSaver();
68 exit(0);
71 if (args->isSet("window-id"))
73 saveWin = atol(args->getOption("window-id"));
76 if (args->isSet("root"))
78 saveWin = QApplication::desktop()->handle();
81 if (args->isSet("demo"))
83 saveWin = 0;
86 if (saveWin == 0)
88 demoWidget = new DemoWindow();
89 demoWidget->setBackgroundMode(Qt::NoBackground);
90 // demoWidget->setBackgroundColor(Qt::black);
91 demoWidget->show();
92 saveWin = demoWidget->winId();
93 app.setMainWidget(demoWidget);
94 app.processEvents();
97 startScreenSaver(saveWin);
98 app.exec();
99 stopScreenSaver();
101 if (demoWidget)
103 delete demoWidget;
106 return 0;