gnome: set display name for RING accounts

Setting the alias will also set the the display name to the same
value for a RING account.  All RING accounts with empty display
names have theirs set to the same as their alias.

Issue: #77367
Change-Id: Ie031f381f0b3bd272802746120a05c22b04f4fdc
diff --git a/src/utils/accounts.cpp b/src/utils/accounts.cpp
new file mode 100644
index 0000000..ed5906e
--- /dev/null
+++ b/src/utils/accounts.cpp
@@ -0,0 +1,61 @@
+/*
+ *  Copyright (C) 2015 Savoir-faire Linux Inc.
+ *  Author: Stepan Salenikovich <stepan.salenikovich@savoirfairelinux.com>
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY 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, write to the Free Software
+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA.
+ *
+ *  Additional permission under GNU GPL version 3 section 7:
+ *
+ *  If you modify this program, or any covered work, by linking or
+ *  combining it with the OpenSSL project's OpenSSL library (or a
+ *  modified version of that library), containing parts covered by the
+ *  terms of the OpenSSL or SSLeay licenses, Savoir-faire Linux Inc.
+ *  grants you additional permission to convey the resulting work.
+ *  Corresponding Source for a non-source form of such a combination
+ *  shall include the source code for the parts of OpenSSL used as well
+ *  as that of the covered work.
+ */
+
+#include "accounts.h"
+
+#include <accountmodel.h>
+
+/**
+ * returns TRUE if a RING account exists; FALSE otherwise
+ */
+gboolean
+has_ring_account()
+{
+    return !AccountModel::instance()->getAccountsByProtocol(Account::Protocol::RING).isEmpty();
+}
+
+/**
+ * itterates through all existing accounts and make sure all RING accounts have
+ * a display name set; if a display name is empty, it is set to the alias of the
+ * account
+ */
+void
+force_ring_display_name()
+{
+    auto ringaccounts = AccountModel::instance()->getAccountsByProtocol(Account::Protocol::RING);
+    for (int i = 0; i < ringaccounts.size(); ++i) {
+        auto account = ringaccounts.at(i);
+        if (account->displayName().isEmpty()) {
+            g_debug("updating RING account display name to: %s", account->alias().toUtf8().constData());
+            account->setDisplayName(account->alias());
+            account << Account::EditAction::SAVE;
+        }
+    }
+}
diff --git a/src/utils/accounts.h b/src/utils/accounts.h
new file mode 100644
index 0000000..fce3b4e
--- /dev/null
+++ b/src/utils/accounts.h
@@ -0,0 +1,50 @@
+/*
+ *  Copyright (C) 2015 Savoir-faire Linux Inc.
+ *  Author: Stepan Salenikovich <stepan.salenikovich@savoirfairelinux.com>
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY 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, write to the Free Software
+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA.
+ *
+ *  Additional permission under GNU GPL version 3 section 7:
+ *
+ *  If you modify this program, or any covered work, by linking or
+ *  combining it with the OpenSSL project's OpenSSL library (or a
+ *  modified version of that library), containing parts covered by the
+ *  terms of the OpenSSL or SSLeay licenses, Savoir-faire Linux Inc.
+ *  grants you additional permission to convey the resulting work.
+ *  Corresponding Source for a non-source form of such a combination
+ *  shall include the source code for the parts of OpenSSL used as well
+ *  as that of the covered work.
+ */
+
+#ifndef _ACCOUNTS_H
+#define _ACCOUNTS_H
+
+#include <gtk/gtk.h>
+
+/**
+ * returns TRUE if a RING account exists; FALSE otherwise
+ */
+gboolean
+has_ring_account();
+
+/**
+ * itterates through all existing accounts and make sure all RING accounts have
+ * a display name set; if a display name is empty, it is set to the alias of the
+ * account
+ */
+void
+force_ring_display_name();
+
+#endif /* _ACCOUNTS_H */