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 */