diff options
-rw-r--r-- | include/datetime/myself.h | 62 | ||||
-rw-r--r-- | src/myself.cpp | 79 |
2 files changed, 0 insertions, 141 deletions
diff --git a/include/datetime/myself.h b/include/datetime/myself.h deleted file mode 100644 index 67e938d..0000000 --- a/include/datetime/myself.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright 2016 Canonical Ltd. - * - * This program is free software: you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 3, as published - * by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranties of - * MERCHANTABILITY, SATISFACTORY QUALITY, 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, see <http://www.gnu.org/licenses/>. - * - * Authors: - * Renato Araujo Oliveira Filho <renato.filho@canonical.com> - */ - -#ifndef INDICATOR_DATETIME_MYSELF_H -#define INDICATOR_DATETIME_MYSELF_H - -#include <core/property.h> - -#include <string> -#include <set> -#include <memory.h> -#include <glib.h> - -typedef struct _AgManager AgManager; - -namespace ayatana { -namespace indicator { -namespace datetime { - -class Myself -{ -public: - Myself(); - - const core::Property<std::set<std::string>>& emails() - { - return m_emails; - } - - bool isMyEmail(const std::string &email); - -private: - std::shared_ptr<AgManager> m_accounts_manager; - core::Property<std::set<std::string> > m_emails; - - static void on_accounts_changed(AgManager*, guint, Myself*); - void reloadEmails(); - -}; - - -} // namespace datetime -} // namespace indicator -} // namespace ayatana - -#endif // INDICATOR_DATETIME_MYSELF_H diff --git a/src/myself.cpp b/src/myself.cpp deleted file mode 100644 index 9c02054..0000000 --- a/src/myself.cpp +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright 2016 Canonical Ltd. - * - * This program is free software: you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 3, as published - * by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranties of - * MERCHANTABILITY, SATISFACTORY QUALITY, 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, see <http://www.gnu.org/licenses/>. - * - * Authors: - * Renato Araujo Oliveira Filho <renato.filho@canonical.com> - */ - -#include "datetime/myself.h" - -#if GLIB_CHECK_VERSION(2, 66, 0) - #include <libaccounts-glib.h> -#else - #include <libaccounts-glib/accounts-glib.h> -#endif - -#include <algorithm> - -namespace ayatana { -namespace indicator { -namespace datetime { - -Myself::Myself() - : m_accounts_manager(ag_manager_new(), g_object_unref) -{ - reloadEmails(); - g_object_connect(m_accounts_manager.get(), - "signal::account-created", on_accounts_changed, this, - "signal::account-deleted", on_accounts_changed, this, - "signal::account-updated", on_accounts_changed, this, - nullptr); -} - -bool Myself::isMyEmail(const std::string &email) -{ - return m_emails.get().count(email) > 0; -} - -void Myself::on_accounts_changed(AgManager *, guint, Myself *self) -{ - self->reloadEmails(); -} - -void Myself::reloadEmails() -{ - std::set<std::string> emails; - - auto manager = m_accounts_manager.get(); - auto ids = ag_manager_list(manager); - for (auto l=ids; l!=nullptr; l=l->next) - { - auto acc = ag_manager_get_account(manager, GPOINTER_TO_UINT(l->data)); - if (acc) { - auto account_name = ag_account_get_display_name(acc); - if (account_name != nullptr) - emails.insert(account_name); - g_object_unref(acc); - } - } - ag_manager_list_free(ids); - - m_emails.set(emails); -} - -} // namespace datetime -} // namespace indicator -} // namespace ayatana - |