From a3fa5c819c23f283879b4ce93042247b2ac22e43 Mon Sep 17 00:00:00 2001 From: Renato Araujo Oliveira Filho Date: Wed, 30 Mar 2016 13:26:14 -0300 Subject: Ignore alarms for events marked as not attending. --- 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..04c2126 --- /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 + +#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) +{ + auto emails = m_emails.get(); + return (std::find(emails.begin(), emails.end(), email) != emails.end()); +} + +void Myself::on_accounts_changed(AgManager *, guint, Myself *self) +{ + self->reloadEmails(); +} + +void Myself::reloadEmails() +{ + std::vector 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)); + auto account_name = ag_account_get_display_name(acc); + emails.push_back(account_name); + } + ag_manager_list_free(ids); + + m_emails.set(emails); +} + +} // namespace datetime +} // namespace indicator +} // namespace ayatana + -- cgit v1.2.3