summaryrefslogtreecommitdiffstats
path: root/kopete/libkopete/kopetesimplemessagehandler.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kopete/libkopete/kopetesimplemessagehandler.cpp')
-rw-r--r--kopete/libkopete/kopetesimplemessagehandler.cpp101
1 files changed, 101 insertions, 0 deletions
diff --git a/kopete/libkopete/kopetesimplemessagehandler.cpp b/kopete/libkopete/kopetesimplemessagehandler.cpp
new file mode 100644
index 00000000..3e44520c
--- /dev/null
+++ b/kopete/libkopete/kopetesimplemessagehandler.cpp
@@ -0,0 +1,101 @@
+/*
+ kopetemessagefilter.cpp - Kopete Message Filtering
+
+ Copyright (c) 2004 by Richard Smith <kde@metafoo.co.uk>
+ Kopete (c) 2002-2004 by the Kopete developers <kopete-devel@kde.org>
+
+ *************************************************************************
+ * *
+ * This library is free software; you can redistribute it and/or *
+ * modify it under the terms of the GNU Lesser General Public *
+ * License as published by the Free Software Foundation; either *
+ * version 2 of the License, or (at your option) any later version. *
+ * *
+ *************************************************************************
+*/
+
+#include "kopetesimplemessagehandler.h"
+#include "kopetemessageevent.h"
+
+#include <kstaticdeleter.h>
+
+#include <qguardedptr.h>
+
+namespace Kopete
+{
+
+//BEGIN SimpleMessageHandlerFactory
+
+class SimpleMessageHandlerFactory::Private
+{
+public:
+ Message::MessageDirection direction;
+ int position;
+ QGuardedPtr<QObject> target;
+ const char *slot;
+};
+
+SimpleMessageHandlerFactory::SimpleMessageHandlerFactory( Message::MessageDirection direction,
+ int position, QObject *target, const char *slot )
+ : d( new Private )
+{
+ d->direction = direction;
+ d->position = position;
+ d->target = target;
+ d->slot = slot;
+}
+
+SimpleMessageHandlerFactory::~SimpleMessageHandlerFactory()
+{
+ delete d;
+}
+
+MessageHandler *SimpleMessageHandlerFactory::create( ChatSession */*manager*/, Message::MessageDirection direction )
+{
+ if ( direction != d->direction )
+ return 0;
+ MessageHandler *handler = new SimpleMessageHandler;
+ QObject::connect( handler, SIGNAL( handle( Kopete::Message & ) ), d->target, d->slot );
+ return handler;
+}
+
+int SimpleMessageHandlerFactory::filterPosition( ChatSession */*manager*/, Message::MessageDirection direction )
+{
+ if ( direction != d->direction )
+ return StageDoNotCreate;
+ return d->position;
+}
+
+//END SimpleMessageHandlerFactory
+
+//BEGIN SimpleMessageHandler
+
+class SimpleMessageHandler::Private
+{
+};
+
+SimpleMessageHandler::SimpleMessageHandler()
+ : d(0)
+{
+}
+
+SimpleMessageHandler::~SimpleMessageHandler()
+{
+ delete d;
+}
+
+void SimpleMessageHandler::handleMessage( MessageEvent *event )
+{
+ Message message = event->message();
+ emit handle( message );
+ event->setMessage( message );
+ MessageHandler::handleMessage( event );
+}
+
+//END SimpleMessageHandler
+
+}
+
+#include "kopetesimplemessagehandler.moc"
+
+// vim: set noet ts=4 sts=4 sw=4: