diff options
| author | Darrell Anderson <humanreadable@yahoo.com> | 2013-03-02 15:57:34 -0600 |
|---|---|---|
| committer | Darrell Anderson <humanreadable@yahoo.com> | 2013-03-02 15:57:34 -0600 |
| commit | 7c0b0c9dc9fcbe9c198925bdc7ee18ac6be49f4f (patch) | |
| tree | c76702a7f6310fbe9d437e347535422e836e94e9 /tdeio/tests/kdcopcheck.cpp | |
| parent | a2a38be7600e2a2c2b49c66902d912ca036a2c0f (diff) | |
| parent | 27bbee9a5f9dcda53d8eb23863ee670ad1360e41 (diff) | |
| download | tdelibs-7c0b0c9dc9fcbe9c198925bdc7ee18ac6be49f4f.tar.gz tdelibs-7c0b0c9dc9fcbe9c198925bdc7ee18ac6be49f4f.zip | |
Merge branch 'master' of http://scm.trinitydesktop.org/scm/git/tdelibs
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..5f1ad611a --- /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 <tdeapplication.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" |
