From b917e4ce17bc30772792a475af2eb0c64ae9f47b Mon Sep 17 00:00:00 2001 From: Robert Tari Date: Sat, 11 Jul 2020 00:11:05 +0200 Subject: -Made GCC 10.1.0 friendly -Fixed to work with ECal 2.0 -Added libaccounts-glib dependency -Added mate-time-admin handler --- src/myself.cpp | 73 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 src/myself.cpp (limited to 'src/myself.cpp') diff --git a/src/myself.cpp b/src/myself.cpp new file mode 100644 index 0000000..0d02056 --- /dev/null +++ b/src/myself.cpp @@ -0,0 +1,73 @@ +/* + * 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 . + * + * Authors: + * Renato Araujo Oliveira Filho + */ + +#include "datetime/myself.h" +#include +#include + +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 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 + -- cgit v1.2.3