File indexing completed on 2025-01-19 04:22:35

0001 /*
0002     SnoreNotify is a Notification Framework based on Qt
0003     Copyright (C) 2013-2015  Hannah von Reth <vonreth@kde.org>
0004 
0005     SnoreNotify is free software: you can redistribute it and/or modify
0006     it under the terms of the GNU Lesser General Public License as published by
0007     the Free Software Foundation, either version 3 of the License, or
0008     (at your option) any later version.
0009 
0010     SnoreNotify is distributed in the hope that it will be useful,
0011     but WITHOUT ANY WARRANTY; without even the implied warranty of
0012     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
0013     GNU Lesser General Public License for more details.
0014 
0015     You should have received a copy of the GNU Lesser General Public License
0016     along with SnoreNotify.  If not, see <http://www.gnu.org/licenses/>.
0017 */
0018 
0019 #ifndef SNARL_BACKEND_H
0020 #define SNARL_BACKEND_H
0021 #include "libsnore/plugins/snorebackend.h"
0022 #include "SnarlInterface.h"
0023 
0024 class SnarlWidget;
0025 
0026 namespace SnorePlugin {
0027 
0028 class Snarl : public Snore::SnoreBackend
0029 {
0030     Q_OBJECT
0031     Q_INTERFACES(Snore::SnoreBackend)
0032     Q_PLUGIN_METADATA(IID "org.Snore.NotificationBackend/1.0" FILE "snore_plugin.json")
0033 public:
0034     Snarl();
0035     ~Snarl();
0036 
0037     virtual bool canCloseNotification() const override;
0038     virtual bool canUpdateNotification() const override;
0039 
0040     bool isReady() override;
0041 
0042 protected:
0043     void setDefaultSettings() override;
0044 
0045 private:
0046     friend class SnarlWidget;
0047     SnarlWidget *m_eventLoop = nullptr;
0048     QHash<QString, ::Snarl::V42::SnarlInterface *> m_applications;
0049 
0050 public Q_SLOTS:
0051     void slotRegisterApplication(const Snore::Application &application) override;
0052     void slotDeregisterApplication(const Snore::Application &application) override;
0053     void slotNotify(Snore::Notification notification) override;
0054     void slotCloseNotification(Snore::Notification notification) override;
0055 
0056 private:
0057     QHash<LONG32, Snore::Notification> m_idMap;
0058 
0059     friend class ::SnarlWidget;
0060 };
0061 }
0062 
0063 #endif // SNARL_BACKEND_H