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
|
/*
* messagefilter.h - plugin main class
*
* Copyright (C) 2015 Ivan Romanov <drizt@land.ru>
*
* 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 program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#ifndef MESSAGEFILTER_H
#define MESSAGEFILTER_H
#include "options.h"
#include <psiplugin.h>
#include <applicationinfoaccessinghost.h>
#include <plugininfoprovider.h>
#include <stanzafilter.h>
#include <stanzasender.h>
#include <psiaccountcontroller.h>
#include <optionaccessor.h>
#include <toolbariconaccessor.h>
#include <iconfactoryaccessor.h>
#include <activetabaccessor.h>
#include <accountinfoaccessor.h>
class Options;
class QMenu;
class MessageFilter : public QObject
, public PsiPlugin
, public PluginInfoProvider
, public StanzaFilter
, public PsiAccountController
, public OptionAccessor
, public StanzaSender
, public AccountInfoAccessor
{
Q_OBJECT
#ifdef HAVE_QT5
Q_PLUGIN_METADATA(IID "com.psi-plus.MessageFilter")
#endif
Q_INTERFACES(PsiPlugin
PluginInfoProvider
StanzaFilter
PsiAccountController
OptionAccessor
StanzaSender
AccountInfoAccessor)
public:
MessageFilter();
~MessageFilter();
// from PsiPlugin
QString name() const { return "Message Filter Plugin"; }
QString shortName() const { return "messagefilter"; }
QString version() const { return "0.0.2"; }
QWidget *options();
bool enable();
bool disable();
void applyOptions();
void restoreOptions();
QPixmap icon() const;
// from PluginInfoProvider
QString pluginInfo();
// from StanzaSender
void setStanzaSendingHost(StanzaSendingHost *host) { _stanzaSending = host; }
// from StanzaFilter
bool incomingStanza(int account, const QDomElement &stanza);
bool outgoingStanza(int /*account*/, QDomElement &/*stanza*/) { return false; }
// from PsiAccountController
void setPsiAccountControllingHost(PsiAccountControllingHost *host) { _accountHost = host; }
// from OptionAccessor
void setOptionAccessingHost(OptionAccessingHost *host) { _optionHost = host; }
void optionChanged(const QString &/*option*/) { }
// from AccountInfoAccessor
void setAccountInfoAccessingHost(AccountInfoAccessingHost* host) { _accountInfo = host; }
private:
void loadRules();
bool _enabled;
Options *_optionsForm;
PsiAccountControllingHost *_accountHost;
OptionAccessingHost *_optionHost;
StanzaSendingHost *_stanzaSending;
AccountInfoAccessingHost *_accountInfo;
QList<Rule> _rules;
};
#endif // MESSAGEFILTER_H
|