File: redirectplugin.h

package info (click to toggle)
psi-plugins 1.5-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 4,368 kB
  • sloc: cpp: 42,063; xml: 714; ansic: 84; makefile: 61; sh: 12
file content (100 lines) | stat: -rw-r--r-- 3,240 bytes parent folder | download
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
/*
 * redirectplugin.h - plugin
 * Copyright (C) 2013  Sergey Ilinykh
 *
 * 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.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 *
 */

#ifndef REDIRECTPLUGIN_H
#define REDIRECTPLUGIN_H

#include <QPixmap>
#include "psiplugin.h"
#include "optionaccessor.h"
#include "stanzafilter.h"
#include "stanzasender.h"
#include "accountinfoaccessor.h"
#include "applicationinfoaccessor.h"
#include "plugininfoprovider.h"
#include "contactinfoaccessor.h"

class QDomElement;

class OptionAccessingHost;
class StanzaSendingHost;
class AccountInfoAccessingHost;
class ApplicationInfoAccessingHost;
class ContactInfoAccessingHost;

#include "ui_options.h"

class Redirector: public QObject, public PsiPlugin, public OptionAccessor, public StanzaSender,  public StanzaFilter,
public AccountInfoAccessor, public ApplicationInfoAccessor,
public PluginInfoProvider, public ContactInfoAccessor
{
	Q_OBJECT
#ifdef HAVE_QT5
	Q_PLUGIN_METADATA(IID "com.psi-plus.Redirector")
#endif
	Q_INTERFACES(PsiPlugin OptionAccessor StanzaSender StanzaFilter AccountInfoAccessor ApplicationInfoAccessor
				 PluginInfoProvider ContactInfoAccessor)

public:
	inline Redirector() : enabled(false)
	  , psiOptions(0)
	  , stanzaHost(0)
	  , accInfoHost(0)
	  , appInfoHost(0)
	  , contactInfo(0) {}
	QString name() const { return "Redirect Plugin"; }
	QString shortName() const { return "redirect"; }
	QString version() const { return "0.0.2"; }
	//PsiPlugin::Priority priority() {return PriorityNormal;}
	QWidget* options();
	bool enable();
	bool disable();
	void applyOptions();
	void restoreOptions();
	QPixmap icon() const { return QPixmap(); }
	void setOptionAccessingHost(OptionAccessingHost* host) { psiOptions = host; }
	void optionChanged(const QString& ) {}
	void setStanzaSendingHost(StanzaSendingHost *host) { stanzaHost = host; }
	bool incomingStanza(int account, const QDomElement& xml);
	bool outgoingStanza(int account, QDomElement& xml);
	void setAccountInfoAccessingHost(AccountInfoAccessingHost* host) { accInfoHost = host; }
	void setApplicationInfoAccessingHost(ApplicationInfoAccessingHost* host) { appInfoHost = host; }
	void setContactInfoAccessingHost(ContactInfoAccessingHost* host) { contactInfo = host; }
	QString pluginInfo();

private slots:

private:
	QString targetJid;
	QHash<QString, int> contactIdMap;
	int nextContactId;
	QWidget *options_;

	bool enabled;
	OptionAccessingHost* psiOptions;
	StanzaSendingHost* stanzaHost;
	AccountInfoAccessingHost *accInfoHost;
	ApplicationInfoAccessingHost *appInfoHost;
	ContactInfoAccessingHost* contactInfo;

	Ui::Options ui_;
};

#endif