summaryrefslogtreecommitdiffstats
path: root/src/otrplugin.h
blob: 2ce051d93b5ffab10ba0ed880a81ccfede8d731d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
/***************************************************************************
                          otrplugin.h  -  description
                             -------------------
    begin                : 11 03 2007
    copyright            : (C) 2007-2007 by Michael Zanetti
    email                : michael_zanetti@gmx.net
 ***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   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.                                   *
 *                                                                         *
 ***************************************************************************/

#ifndef OTRPLUGIN_H
#define OTRPLUGIN_H


#include "kdebug.h"

#include <kopeteplugin.h>
#include <kopetemessagehandler.h>

#include "otrlchatinterface.h"


/**
  * @author Michael Zanetti
  */

class OTRPlugin;
class KSelectAction;

class OtrMessageHandler : public Kopete::MessageHandler
{
private:
	OTRPlugin *plugin;
public:
	OtrMessageHandler( OTRPlugin *plugin ) : plugin(plugin) {
		kdDebug() << "MessageHandler created" << endl;
	}
	~OtrMessageHandler(){
		kdDebug() << "MessageHandler destroyed" << endl;
	}
	void handleMessage( Kopete::MessageEvent *event );
};

class OtrMessageHandlerFactory : public Kopete::MessageHandlerFactory
{
private:
	OTRPlugin *plugin;
	OtrMessageHandler *messageHandler;
public:
	OtrMessageHandlerFactory( OTRPlugin *plugin ) : plugin(plugin) {}
	Kopete::MessageHandler *create( Kopete::ChatSession *, Kopete::Message::MessageDirection direction )
	{
		return new OtrMessageHandler(plugin);
	}
	int filterPosition( Kopete::ChatSession *, Kopete::Message::MessageDirection )
	{
		return Kopete::MessageHandlerFactory::InStageToSent+1;
	}
};

class OTRPlugin : public Kopete::Plugin
{
	Q_OBJECT

public:

	static OTRPlugin  *plugin();

	OTRPlugin( QObject *parent, const char *name, const QStringList &args );
	~OTRPlugin();

	void emitGoneSecure( Kopete::ChatSession *session, int status );
	QMap<QString, QString> getMessageCache();

public slots:

	void slotOutgoingMessage( Kopete::Message& msg );
	void slotEnableOtr( Kopete::ChatSession *session, bool enable );
	void slotSettingsChanged();
	void slotVerifyFingerprint( Kopete::ChatSession *session );

private slots:
	void slotNewChatSessionWindow(Kopete::ChatSession * );
	void slotSelectionChanged( bool single );
	void slotSetPolicy();
	void accountReady( Kopete::Account *account );

private:
	static OTRPlugin* pluginStatic_;
	OtrMessageHandlerFactory *m_inboundHandler;
	OtrlChatInterface *otrlChatInterface;
	QMap<QString, QString> messageCache;
	KSelectAction* otrPolicyMenu;

/*	KActionMenu *otrPolicyMenuBar;
	KActionMenu *otrPolicyPopup;
	KAction *otrPolicyDefault;
	KAction *otrPolicyAlways;
	KAction *otrPolicyOpportunistic;
	KAction *otrPolicyManual;
	KAction *otrPolicyNever;
//	SessionManager manager
*/

signals:
	void goneSecure( Kopete::ChatSession *session, int state );


};

#endif