diff options
Diffstat (limited to 'tdeio/tests/kdcopcheck.cpp')
-rw-r--r-- | tdeio/tests/kdcopcheck.cpp | 132 |
1 files changed, 132 insertions, 0 deletions
diff --git a/tdeio/tests/kdcopcheck.cpp b/tdeio/tests/kdcopcheck.cpp new file mode 100644 index 000000000..79f050f51 --- /dev/null +++ b/tdeio/tests/kdcopcheck.cpp @@ -0,0 +1,132 @@ +#include <kuserprofile.h> +#include <ktrader.h> +#include <kservice.h> +#include <kmimetype.h> +#include <assert.h> +#include <kstandarddirs.h> +#include <kservicegroup.h> +#include <kimageio.h> +#include <kprotocolinfo.h> +#include <kprocess.h> +#include <tqtimer.h> + +#include "kdcopcheck.h" +#include <dcopclient.h> + +#include <kapplication.h> + +#include <stdio.h> +#include <stdlib.h> + +void debug(TQString txt) +{ + fprintf(stderr, "%s\n", txt.ascii()); +} + +void debug(const char *txt) +{ + fprintf(stderr, "%s\n", txt); +} +void debug(const char *format, const char *txt) +{ + fprintf(stderr, format, txt); + fprintf(stderr, "\n"); +} + +TestService::TestService(const TQString &exec) +{ + m_exec = exec; + proc << exec; + + proc.start(); + + connect(kapp->dcopClient(), TQT_SIGNAL( applicationRegistered(const TQCString&)), + this, TQT_SLOT(newApp(const TQCString&))); + connect(kapp->dcopClient(), TQT_SIGNAL( applicationRemoved(const TQCString&)), + this, TQT_SLOT(endApp(const TQCString&))); + connect(&proc, TQT_SIGNAL(processExited(TDEProcess *)), + this, TQT_SLOT(appExit())); + + TQTimer::singleShot(20*1000, this, TQT_SLOT(stop())); + result = KService::DCOP_None; +} + +void TestService::newApp(const TQCString &appId) +{ + TQString id = appId; + if (id == m_exec) + { + result = KService::DCOP_Unique; + stop(); + } + else if (id.startsWith(m_exec)) + { + result = KService::DCOP_Multi; + stop(); + } + tqWarning("Register %s", appId.data()); +} + +void TestService::endApp(const TQCString &appId) +{ + tqWarning("Unegister %s", appId.data()); +} + +void TestService::appExit() +{ + tqWarning("Exit"); +} + +void TestService::stop() +{ + kapp->exit_loop(); +} + +int TestService::exec() +{ + kapp->enter_loop(); + return result; +} + +int main(int argc, char *argv[]) +{ + putenv("IGNORE_SYCOCA_VERSION=true"); + TDEApplication k(argc,argv,"whatever",false/*noGUI*/); // KMessageBox needs KApp for makeStdCaption + + k.dcopClient()->setNotifications(true); + + KService::List list = KService::allServices(); + + tqWarning("I found %d services.", list.count()); + int i = 0; + for(KService::List::ConstIterator it = list.begin(); it != list.end(); ++it) + { + if (((*it)->DCOPServiceType() == KService::DCOP_None) && + !(*it)->desktopEntryPath().startsWith("SuSE") && + (*it)->hasServiceType("Application")) + { + if ((*it)->exec().startsWith((*it)->desktopEntryName())) + { + i++; + + TestService *test = new TestService((*it)->desktopEntryName()); + int n = test->exec(); + delete test; + + TQString result; + if (n == KService::DCOP_None) + result = "None"; + else if (n == KService::DCOP_Unique) + result = "Unique"; + else if (n == KService::DCOP_Multi) + result = "Multi"; + + tqWarning("%s %s", (*it)->desktopEntryPath().latin1(), + result.latin1()); + } + } + } + tqWarning("%d left after filtering.", i); +} + +#include "kdcopcheck.moc" |