~ubuntu-branches/debian/stretch/psi-plus/stretch

« back to all changes in this revision

Viewing changes to src/plugins/generic/attentionplugin/attentionplugin.cpp

  • Committer: Package Import Robot
  • Author(s): Boris Pek
  • Date: 2013-10-23 02:42:20 UTC
  • mfrom: (1.4.7)
  • Revision ID: package-import@ubuntu.com-20131023024220-bk2hyoenqkwfhpgw
Tags: 0.16.242-1
* New upstream release:
  fixed the problem of initialization of private conversation when both
  sides use libotr 4.0.x. (Closes: #724880)
* Update debian/watch: sources were moved.
* Delete psi-plus-content-downloader package and update all related files.
  This plugin is in psi-plus-plugins package now.
* Update debian/control:
  - remove all currently unneeded Replaces and Breaks fields
  - add build dependency on libidn11-dev
* Update debian/rules: simplify get-orig-source section.
* Update debian/copyright:
  - update Source field due to changes in sources location
  - remove copyright holders whose code was deleted from source tree
    (bundled libidn library was removed)

Show diffs side-by-side

added added

removed removed

Lines of Context:
45
45
 
46
46
#include "ui_options.h"
47
47
 
48
 
#define cVer "0.1.9"
 
48
#define cVer "0.2.0"
49
49
#define constSoundFile "sndfl"
50
50
#define constInterval "intrvl"
51
51
#define constInfPopup "infPopup"
55
55
#define POPUP_OPTION "Attention Plugin"
56
56
 
57
57
class AttentionPlugin: public QObject, public PsiPlugin, public StanzaFilter, public AccountInfoAccessor,
58
 
public OptionAccessor, public ActiveTabAccessor, public ToolbarIconAccessor, public ApplicationInfoAccessor,
59
 
public IconFactoryAccessor, public PopupAccessor, public StanzaSender, public MenuAccessor, public PluginInfoProvider,
60
 
public SoundAccessor
 
58
                                           public OptionAccessor, public ActiveTabAccessor, public ToolbarIconAccessor, public ApplicationInfoAccessor,
 
59
                                           public IconFactoryAccessor, public PopupAccessor, public StanzaSender, public MenuAccessor, public PluginInfoProvider,
 
60
                                           public SoundAccessor
61
61
{
62
62
        Q_OBJECT
63
 
        Q_INTERFACES(PsiPlugin StanzaFilter AccountInfoAccessor OptionAccessor ActiveTabAccessor ApplicationInfoAccessor
64
 
                     ToolbarIconAccessor IconFactoryAccessor PopupAccessor StanzaSender MenuAccessor PluginInfoProvider
65
 
                     SoundAccessor)
 
63
#ifdef HAVE_QT5
 
64
        Q_PLUGIN_METADATA(IID "com.psi-plus.AttentionPlugin")
 
65
#endif
 
66
        Q_INTERFACES(PsiPlugin StanzaFilter AccountInfoAccessor OptionAccessor ActiveTabAccessor ApplicationInfoAccessor
 
67
                                 ToolbarIconAccessor IconFactoryAccessor PopupAccessor StanzaSender MenuAccessor PluginInfoProvider
 
68
                                 SoundAccessor)
66
69
 
67
70
public:
68
71
        AttentionPlugin();
69
72
        virtual QString name() const;
70
73
        virtual QString shortName() const;
71
74
        virtual QString version() const;
72
 
        virtual QWidget* options();
 
75
        virtual QWidget* options();
73
76
        virtual bool enable();
74
 
        virtual bool disable();
75
 
        virtual void applyOptions();
76
 
        virtual void restoreOptions();
77
 
        virtual bool incomingStanza(int account, const QDomElement& xml);
 
77
        virtual bool disable();
 
78
        virtual void applyOptions();
 
79
        virtual void restoreOptions();
 
80
        virtual bool incomingStanza(int account, const QDomElement& xml);
78
81
        virtual bool outgoingStanza(int account, QDomElement& xml);
79
 
        virtual void setAccountInfoAccessingHost(AccountInfoAccessingHost* host);
80
 
        virtual void setOptionAccessingHost(OptionAccessingHost* host);
81
 
        virtual void optionChanged(const QString& option);
82
 
        virtual void setActiveTabAccessingHost(ActiveTabAccessingHost* host);
83
 
        virtual void setIconFactoryAccessingHost(IconFactoryAccessingHost* host);
84
 
        virtual void setPopupAccessingHost(PopupAccessingHost* host);
85
 
        virtual void setStanzaSendingHost(StanzaSendingHost *host);
 
82
        virtual void setAccountInfoAccessingHost(AccountInfoAccessingHost* host);
 
83
        virtual void setOptionAccessingHost(OptionAccessingHost* host);
 
84
        virtual void optionChanged(const QString& option);
 
85
        virtual void setActiveTabAccessingHost(ActiveTabAccessingHost* host);
 
86
        virtual void setIconFactoryAccessingHost(IconFactoryAccessingHost* host);
 
87
        virtual void setPopupAccessingHost(PopupAccessingHost* host);
 
88
        virtual void setStanzaSendingHost(StanzaSendingHost *host);
86
89
        virtual QList < QVariantHash > getButtonParam();
87
90
        virtual QAction* getAction(QObject* , int , const QString& ) { return 0; };
88
91
        virtual QList < QVariantHash > getAccountMenuParam();
89
92
        virtual QList < QVariantHash > getContactMenuParam();
90
93
        virtual QAction* getContactAction(QObject* , int , const QString& ) { return 0; };
91
94
        virtual QAction* getAccountAction(QObject* , int ) { return 0; };
92
 
        virtual void setApplicationInfoAccessingHost(ApplicationInfoAccessingHost* host);
 
95
        virtual void setApplicationInfoAccessingHost(ApplicationInfoAccessingHost* host);
93
96
        virtual void setSoundAccessingHost(SoundAccessingHost* host);
94
97
        virtual QString pluginInfo();
95
 
 
 
98
        virtual QPixmap icon() const;
96
99
 
97
100
private:
98
 
        bool enabled;
99
 
        OptionAccessingHost* psiOptions;
 
101
        bool enabled;
 
102
        OptionAccessingHost* psiOptions;
100
103
        AccountInfoAccessingHost *accInfoHost;
101
 
        ActiveTabAccessingHost* activeTab;       
 
104
        ActiveTabAccessingHost* activeTab;
102
105
        IconFactoryAccessingHost *icoHost;
103
 
        PopupAccessingHost* popup;
104
 
        StanzaSendingHost *stanzaSender;
105
 
        ApplicationInfoAccessingHost* appInfo;
 
106
        PopupAccessingHost* popup;
 
107
        StanzaSendingHost *stanzaSender;
 
108
        ApplicationInfoAccessingHost* appInfo;
106
109
        SoundAccessingHost* sound_;
107
110
        QString soundFile;
108
111
        int timeout_;
114
117
        int popupId;
115
118
 
116
119
 
117
 
        struct Blocked {
 
120
        struct Blocked {
118
121
                int Acc;
119
122
                QString Jid;
120
123
                QDateTime LastMes;
121
 
        };
 
124
        };
122
125
        QVector<Blocked> blockedJids_;
123
126
 
124
127
        Ui::Options ui_;
133
136
        void showPopup(int account, const QString& jid, const QString& text);
134
137
 
135
138
private slots:
136
 
        void checkSound();
137
 
        void getSound();
138
 
        void sendAttentionFromTab();
139
 
        void sendAttentionFromMenu();
 
139
        void checkSound();
 
140
        void getSound();
 
141
        void sendAttentionFromTab();
 
142
        void sendAttentionFromMenu();
140
143
        void nudgeTimerTimeout();
141
144
};
142
145
 
 
146
#ifndef HAVE_QT5
143
147
Q_EXPORT_PLUGIN(AttentionPlugin);
 
148
#endif
144
149
 
145
150
AttentionPlugin::AttentionPlugin()
146
151
        : enabled(false)
162
167
}
163
168
 
164
169
QString AttentionPlugin::name() const {
165
 
        return "Attention Plugin";
 
170
        return "Attention Plugin";
166
171
}
167
172
 
168
173
QString AttentionPlugin::shortName() const {
169
 
        return "attention";
 
174
        return "attention";
170
175
}
171
176
 
172
177
QString AttentionPlugin::version() const {
173
 
        return cVer;
 
178
        return cVer;
174
179
}
175
180
 
176
181
bool AttentionPlugin::enable() {
191
196
                infPopup = psiOptions->getPluginOption(constInfPopup, QVariant(infPopup)).toBool();
192
197
                disableDnd = psiOptions->getPluginOption(constDisableDnd, QVariant(disableDnd)).toBool();
193
198
                popupId = popup->registerOption(POPUP_OPTION,  psiOptions->getPluginOption(constInterval, QVariant(4000)).toInt()/1000,
194
 
                                                "plugins.options."+shortName()+"."+constInterval);
 
199
                                                                                "plugins.options."+shortName()+"."+constInterval);
195
200
 
196
201
                QWidgetList wl = qApp->allWidgets();
197
202
                foreach(QWidget *w, wl) {
208
213
}
209
214
 
210
215
bool AttentionPlugin::disable() {
211
 
        enabled = false;
 
216
        enabled = false;
212
217
        nudgeTimer_->stop();
213
218
        delete nudgeTimer_;
214
219
        nudgeTimer_ = 0;
278
283
                                playSound(soundFile);
279
284
 
280
285
                        /*QTextEdit *te = activeTab->getEditBox();
281
 
             if(te)
282
 
                     nudgeWindow_ = te->window();
 
286
                          if(te)
 
287
                          nudgeWindow_ = te->window();
283
288
 
284
 
             else
285
 
                     nudgeWindow_ = qApp->activeWindow();*/
 
289
                          else
 
290
                          nudgeWindow_ = qApp->activeWindow();*/
286
291
 
287
292
 
288
293
 
297
302
                        {
298
303
                                if(query.attribute("node") == "http://psi-dev.googlecode.com/caps#at-pl") {
299
304
                                        QString reply = QString("<iq type=\"result\" to=\"%1\" id=\"%2\">"
300
 
                                                        "<query xmlns=\"http://jabber.org/protocol/disco#info\" node=\"http://psi-dev.googlecode.com/caps#at-pl\">"
301
 
                                                        "<feature var=\"urn:xmpp:attention:0\"/></query></iq>")
302
 
                                                        .arg(stanzaSender->escape(stanza.attribute("from")), stanzaSender->escape(stanza.attribute("id")));
 
305
                                                                                        "<query xmlns=\"http://jabber.org/protocol/disco#info\" node=\"http://psi-dev.googlecode.com/caps#at-pl\">"
 
306
                                                                                        "<feature var=\"urn:xmpp:attention:0\"/></query></iq>")
 
307
                                                                .arg(stanzaSender->escape(stanza.attribute("from")), stanzaSender->escape(stanza.attribute("id")));
303
308
                                        stanzaSender->sendStanza(account, reply);
304
309
                                        return true;
305
310
                                }
475
480
 
476
481
bool AttentionPlugin::findAcc(int account, const QString& Jid, int &i) {
477
482
        for(; i > 0;) {
478
 
                Blocked Block =  blockedJids_[--i];
 
483
                Blocked Block =  blockedJids_[--i];
479
484
                if(Block.Acc == account && Block.Jid == Jid) {
480
485
                        return true;
481
486
                }
488
493
}
489
494
 
490
495
QList < QVariantHash > AttentionPlugin::getContactMenuParam() {
491
 
        QVariantHash hash;
492
 
        hash["icon"] = QVariant(QString("attentionplugin/attention"));
493
 
        hash["name"] = QVariant(tr("Send Attention"));
494
 
        hash["reciver"] = qVariantFromValue(qobject_cast<QObject *>(this));
495
 
        hash["slot"] = QVariant(SLOT(sendAttentionFromMenu()));
 
496
        QVariantHash hash;
 
497
        hash["icon"] = QVariant(QString("attentionplugin/attention"));
 
498
        hash["name"] = QVariant(tr("Send Attention"));
 
499
        hash["reciver"] = qVariantFromValue(qobject_cast<QObject *>(this));
 
500
        hash["slot"] = QVariant(SLOT(sendAttentionFromMenu()));
496
501
        QList< QVariantHash >  l;
497
502
        l.push_back(hash);
498
 
        return l;
 
503
        return l;
499
504
}
500
505
 
501
506
void AttentionPlugin::nudge() {
502
507
        if(!nudgeWindow_ || !nudgeTimer_ || nudgeTimer_->isActive())
503
508
                return;
504
509
 
505
 
        oldPoint_ = nudgeWindow_->pos();        
 
510
        oldPoint_ = nudgeWindow_->pos();
506
511
        nudgeTimer_->start();
507
512
}
508
513
 
528
533
}
529
534
 
530
535
QString AttentionPlugin::pluginInfo() {
531
 
        return tr("Author: ") +  "Dealer_WeARE\n"
532
 
                        + tr("Email: ") + "wadealer@gmail.com\n\n"
533
 
                        + trUtf8("This plugin is designed to send and receive special messages such as Attentions.\n"
534
 
                                 "To work correctly, the plugin requires that the client of the other part supports XEP-0224 (for example: Pidgin, Miranda IM with Nudge plugin).");
 
536
        return tr("Author: ") +  "Dealer_WeARE\n"
 
537
             + tr("Email: ") + "wadealer@gmail.com\n\n"
 
538
             + trUtf8("This plugin is designed to send and receive special messages such as Attentions.\n"
 
539
                              "To work correctly, the plugin requires that the client of the other part supports XEP-0224 (for example: Pidgin, Miranda IM with Nudge plugin).");
 
540
}
 
541
 
 
542
QPixmap AttentionPlugin::icon() const
 
543
{
 
544
        return QPixmap(":/attentionplugin/attention.png");
535
545
}
536
546
 
537
547
#include "attentionplugin.moc"