summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Zeuthen <davidz@redhat.com>2011-05-27 15:44:42 -0400
committerDavid Zeuthen <davidz@redhat.com>2011-05-27 15:44:42 -0400
commit52ab0c730c13ababbe1b1bd43445ccaca9c5321f (patch)
tree9efd4535fc1568f76244621bcebae071f502be9d
parent695f81ff8ca23b0532c97902923ba203634406b7 (diff)
Add icons
Signed-off-by: David Zeuthen <davidz@redhat.com>
-rw-r--r--configure.ac7
-rw-r--r--data/Makefile.am2
-rw-r--r--data/dbus-interfaces.xml35
-rw-r--r--data/goa-prefs.desktop.in2
-rw-r--r--data/icons/16x16/Makefile.am13
-rw-r--r--data/icons/16x16/goa-account.pngbin0 -> 846 bytes
-rw-r--r--data/icons/16x16/goa-panel.pngbin0 -> 846 bytes
-rw-r--r--data/icons/24x24/Makefile.am13
-rw-r--r--data/icons/24x24/goa-account.pngbin0 -> 1230 bytes
-rw-r--r--data/icons/24x24/goa-panel.pngbin0 -> 1230 bytes
-rw-r--r--data/icons/256x256/Makefile.am13
-rw-r--r--data/icons/256x256/goa-account.pngbin0 -> 25710 bytes
-rw-r--r--data/icons/256x256/goa-panel.pngbin0 -> 25710 bytes
-rw-r--r--data/icons/32x32/Makefile.am13
-rw-r--r--data/icons/32x32/goa-account.pngbin0 -> 1938 bytes
-rw-r--r--data/icons/32x32/goa-panel.pngbin0 -> 1938 bytes
-rw-r--r--data/icons/48x48/Makefile.am13
-rw-r--r--data/icons/48x48/goa-account.pngbin0 -> 3123 bytes
-rw-r--r--data/icons/48x48/goa-panel.pngbin0 -> 3123 bytes
-rw-r--r--data/icons/Makefile.am16
-rw-r--r--data/icons/scalable/Makefile.am11
-rw-r--r--doc/goa-sections.txt7
-rw-r--r--src/daemon/goadaemon.c26
-rw-r--r--src/goabackend/goafacebookprovider.c9
-rw-r--r--src/goabackend/goagoogleprovider.c9
-rw-r--r--src/goabackend/goaoauth2provider.c2
-rw-r--r--src/goabackend/goaoauthprovider.c2
-rw-r--r--src/goabackend/goaprovider.c58
-rw-r--r--src/goabackend/goaprovider.h13
-rw-r--r--src/goabackend/goatwitterprovider.c9
-rw-r--r--src/goabackend/goayahooprovider.c9
-rw-r--r--src/panel/goapanel.c15
-rw-r--r--src/panel/goapanelaccountsmodel.c28
-rw-r--r--src/panel/goapanelaccountsmodel.h1
34 files changed, 269 insertions, 57 deletions
diff --git a/configure.ac b/configure.ac
index a13eca1..797aada 100644
--- a/configure.ac
+++ b/configure.ac
@@ -80,6 +80,13 @@ AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE],["$GETTEXT_PACKAGE"],[gettext domain])
AC_OUTPUT([
Makefile
data/Makefile
+data/icons/Makefile
+data/icons/16x16/Makefile
+data/icons/24x24/Makefile
+data/icons/32x32/Makefile
+data/icons/48x48/Makefile
+data/icons/256x256/Makefile
+data/icons/scalable/Makefile
src/Makefile
src/goa/Makefile
src/goa/goa-1.0.pc
diff --git a/data/Makefile.am b/data/Makefile.am
index 218f46c..7813949 100644
--- a/data/Makefile.am
+++ b/data/Makefile.am
@@ -1,4 +1,6 @@
+SUBDIRS = icons
+
NULL =
desktopdir = $(datadir)/applications
diff --git a/data/dbus-interfaces.xml b/data/dbus-interfaces.xml
index 74e74b4..dd37c95 100644
--- a/data/dbus-interfaces.xml
+++ b/data/dbus-interfaces.xml
@@ -33,17 +33,36 @@
The base account interface.
-->
<interface name="org.gnome.OnlineAccounts.Account">
- <!-- ProviderType: The provider of the account.
- Known values include
- <variablelist>
- <varlistentry><term>google</term><listitem><para>The account is a Google Account.</para></listitem></varlistentry>
- <varlistentry><term>facebook</term><listitem><para>The account is a Facebook Account.</para></listitem></varlistentry>
- <varlistentry><term>yahoo</term><listitem><para>The account is a Yahoo Account.</para></listitem></varlistentry>
- <varlistentry><term>twitter</term><listitem><para>The account is a Twitter Account.</para></listitem></varlistentry>
- </variablelist>
+ <!--
+ ProviderType:
+ The type of provider of the account.
+
+ This value describes how data is accessed, e.g. what API
+ applications should use. Use
+ #org.gnome.OnlineAccounts.Account:ProviderName for the name of
+ the provider (which might differ from the provider name in
+ hosted scenarios) to display in the user interface.
-->
<property name="ProviderType" type="s" access="read"/>
+ <!--
+ ProviderName:
+ The name of the provider to display in the user interface.
+ -->
+ <property name="ProviderName" type="s" access="read"/>
+
+ <!--
+ ProviderIcon:
+ The icon/logo of the provider.
+
+ This is a serialized <ulink
+ url="http://developer.gnome.org/gio/unstable/GIcon.html">GIcon</ulink>
+ - use e.g. <ulink
+ url="http://developer.gnome.org/gio/unstable/GIcon.html#g-icon-new-for-string">g_icon_new_for_string()</ulink>
+ to create an instance.
+ -->
+ <property name="ProviderIcon" type="s" access="read"/>
+
<!-- Id: An identifier for this account.
This identifier cannot be changed and should never be
displayed in any user interface.
diff --git a/data/goa-prefs.desktop.in b/data/goa-prefs.desktop.in
index 1665807..1a72c4f 100644
--- a/data/goa-prefs.desktop.in
+++ b/data/goa-prefs.desktop.in
@@ -1,7 +1,7 @@
[Desktop Entry]
_Name=Online Accounts
_Comment=Manage online accounts
-Icon=config-users
+Icon=goa-panel
Exec=gnome-control-center goa
Terminal=false
Type=Application
diff --git a/data/icons/16x16/Makefile.am b/data/icons/16x16/Makefile.am
new file mode 100644
index 0000000..783ee6e
--- /dev/null
+++ b/data/icons/16x16/Makefile.am
@@ -0,0 +1,13 @@
+NULL =
+
+icondir = $(datadir)/icons/hicolor/16x16/apps
+icon_DATA = \
+ goa-panel.png \
+ goa-account.png \
+ $(NULL)
+
+EXTRA_DIST = \
+ $(icon_DATA)
+
+clean-local :
+ rm -f *~
diff --git a/data/icons/16x16/goa-account.png b/data/icons/16x16/goa-account.png
new file mode 100644
index 0000000..0d231ee
--- /dev/null
+++ b/data/icons/16x16/goa-account.png
Binary files differ
diff --git a/data/icons/16x16/goa-panel.png b/data/icons/16x16/goa-panel.png
new file mode 100644
index 0000000..0d231ee
--- /dev/null
+++ b/data/icons/16x16/goa-panel.png
Binary files differ
diff --git a/data/icons/24x24/Makefile.am b/data/icons/24x24/Makefile.am
new file mode 100644
index 0000000..6180d34
--- /dev/null
+++ b/data/icons/24x24/Makefile.am
@@ -0,0 +1,13 @@
+NULL =
+
+icondir = $(datadir)/icons/hicolor/24x24/apps
+icon_DATA = \
+ goa-panel.png \
+ goa-account.png \
+ $(NULL)
+
+EXTRA_DIST = \
+ $(icon_DATA)
+
+clean-local :
+ rm -f *~
diff --git a/data/icons/24x24/goa-account.png b/data/icons/24x24/goa-account.png
new file mode 100644
index 0000000..79cf8f4
--- /dev/null
+++ b/data/icons/24x24/goa-account.png
Binary files differ
diff --git a/data/icons/24x24/goa-panel.png b/data/icons/24x24/goa-panel.png
new file mode 100644
index 0000000..79cf8f4
--- /dev/null
+++ b/data/icons/24x24/goa-panel.png
Binary files differ
diff --git a/data/icons/256x256/Makefile.am b/data/icons/256x256/Makefile.am
new file mode 100644
index 0000000..40d8104
--- /dev/null
+++ b/data/icons/256x256/Makefile.am
@@ -0,0 +1,13 @@
+NULL =
+
+icondir = $(datadir)/icons/hicolor/256x256/apps
+icon_DATA = \
+ goa-panel.png \
+ goa-account.png \
+ $(NULL)
+
+EXTRA_DIST = \
+ $(icon_DATA)
+
+clean-local :
+ rm -f *~
diff --git a/data/icons/256x256/goa-account.png b/data/icons/256x256/goa-account.png
new file mode 100644
index 0000000..c07d172
--- /dev/null
+++ b/data/icons/256x256/goa-account.png
Binary files differ
diff --git a/data/icons/256x256/goa-panel.png b/data/icons/256x256/goa-panel.png
new file mode 100644
index 0000000..c07d172
--- /dev/null
+++ b/data/icons/256x256/goa-panel.png
Binary files differ
diff --git a/data/icons/32x32/Makefile.am b/data/icons/32x32/Makefile.am
new file mode 100644
index 0000000..5f8edcf
--- /dev/null
+++ b/data/icons/32x32/Makefile.am
@@ -0,0 +1,13 @@
+NULL =
+
+icondir = $(datadir)/icons/hicolor/32x32/apps
+icon_DATA = \
+ goa-panel.png \
+ goa-account.png \
+ $(NULL)
+
+EXTRA_DIST = \
+ $(icon_DATA)
+
+clean-local :
+ rm -f *~
diff --git a/data/icons/32x32/goa-account.png b/data/icons/32x32/goa-account.png
new file mode 100644
index 0000000..b4f31d4
--- /dev/null
+++ b/data/icons/32x32/goa-account.png
Binary files differ
diff --git a/data/icons/32x32/goa-panel.png b/data/icons/32x32/goa-panel.png
new file mode 100644
index 0000000..b4f31d4
--- /dev/null
+++ b/data/icons/32x32/goa-panel.png
Binary files differ
diff --git a/data/icons/48x48/Makefile.am b/data/icons/48x48/Makefile.am
new file mode 100644
index 0000000..f7e0403
--- /dev/null
+++ b/data/icons/48x48/Makefile.am
@@ -0,0 +1,13 @@
+NULL =
+
+icondir = $(datadir)/icons/hicolor/48x48/apps
+icon_DATA = \
+ goa-panel.png \
+ goa-account.png \
+ $(NULL)
+
+EXTRA_DIST = \
+ $(icon_DATA)
+
+clean-local :
+ rm -f *~
diff --git a/data/icons/48x48/goa-account.png b/data/icons/48x48/goa-account.png
new file mode 100644
index 0000000..8a58ee3
--- /dev/null
+++ b/data/icons/48x48/goa-account.png
Binary files differ
diff --git a/data/icons/48x48/goa-panel.png b/data/icons/48x48/goa-panel.png
new file mode 100644
index 0000000..8a58ee3
--- /dev/null
+++ b/data/icons/48x48/goa-panel.png
Binary files differ
diff --git a/data/icons/Makefile.am b/data/icons/Makefile.am
new file mode 100644
index 0000000..c1549d0
--- /dev/null
+++ b/data/icons/Makefile.am
@@ -0,0 +1,16 @@
+
+SUBDIRS = 16x16 24x24 32x32 48x48 256x256 scalable
+
+gtk_update_icon_cache = gtk-update-icon-cache -f -t $(datadir)/icons/hicolor
+
+install-data-hook:
+ @-if test -z "$(DESTDIR)"; then \
+ echo "Updating Gtk icon cache."; \
+ $(gtk_update_icon_cache); \
+ else \
+ echo "*** Icon cache not updated. After install, run this:"; \
+ echo "*** $(gtk_update_icon_cache)"; \
+ fi
+
+clean-local :
+ rm -f *~
diff --git a/data/icons/scalable/Makefile.am b/data/icons/scalable/Makefile.am
new file mode 100644
index 0000000..3bbcecd
--- /dev/null
+++ b/data/icons/scalable/Makefile.am
@@ -0,0 +1,11 @@
+NULL =
+
+icondir = $(datadir)/icons/hicolor/scalable/apps
+icon_DATA = \
+ $(NULL)
+
+EXTRA_DIST = \
+ $(icon_DATA)
+
+clean-local :
+ rm -f *~
diff --git a/doc/goa-sections.txt b/doc/goa-sections.txt
index 9089b9d..7ec98c0 100644
--- a/doc/goa-sections.txt
+++ b/doc/goa-sections.txt
@@ -106,6 +106,10 @@ goa_account_interface_info
goa_account_override_properties
goa_account_get_provider_type
goa_account_set_provider_type
+goa_account_get_provider_name
+goa_account_set_provider_name
+goa_account_get_provider_icon
+goa_account_set_provider_icon
goa_account_get_id
goa_account_set_id
goa_account_get_attention_needed
@@ -304,7 +308,8 @@ goa_error_get_type
GoaProvider
GoaProviderClass
goa_provider_get_provider_type
-goa_provider_get_name
+goa_provider_get_provider_name
+goa_provider_get_provider_icon
goa_provider_build_object
goa_provider_add_account
goa_provider_refresh_account
diff --git a/src/daemon/goadaemon.c b/src/daemon/goadaemon.c
index 6fc9102..c040687 100644
--- a/src/daemon/goadaemon.c
+++ b/src/daemon/goadaemon.c
@@ -406,6 +406,9 @@ update_account_object (GoaDaemon *daemon,
gchar *identity;
gchar *presentation_identity;
gchar *type;
+ gchar *name;
+ GIcon *icon;
+ gchar *serialized_icon;
GError *error;
g_return_val_if_fail (GOA_IS_DAEMON (daemon), FALSE);
@@ -417,6 +420,9 @@ update_account_object (GoaDaemon *daemon,
identity = NULL;
type = NULL;
account = NULL;
+ name = NULL;
+ icon = NULL;
+ serialized_icon = NULL;
goa_debug ("updating %s %d", g_dbus_object_get_object_path (G_DBUS_OBJECT (object)), just_added);
@@ -433,11 +439,6 @@ update_account_object (GoaDaemon *daemon,
account = goa_object_get_account (GOA_OBJECT (object));
}
- goa_account_set_id (account, g_strrstr (g_dbus_object_get_object_path (G_DBUS_OBJECT (object)), "/") + 1);
- goa_account_set_provider_type (account, type);
- goa_account_set_identity (account, identity);
- goa_account_set_presentation_identity (account, presentation_identity);
-
provider = goa_provider_get_for_provider_type (type);
if (provider == NULL)
{
@@ -446,6 +447,17 @@ update_account_object (GoaDaemon *daemon,
goto out;
}
+ name = goa_provider_get_provider_name (provider, GOA_OBJECT (object));
+ icon = goa_provider_get_provider_icon (provider, GOA_OBJECT (object));
+ serialized_icon = g_icon_to_string (icon);
+
+ goa_account_set_id (account, g_strrstr (g_dbus_object_get_object_path (G_DBUS_OBJECT (object)), "/") + 1);
+ goa_account_set_provider_type (account, type);
+ goa_account_set_provider_name (account, name);
+ goa_account_set_provider_icon (account, serialized_icon);
+ goa_account_set_identity (account, identity);
+ goa_account_set_presentation_identity (account, presentation_identity);
+
error = NULL;
if (!goa_provider_build_object (provider, object, key_file, group, &error))
{
@@ -459,6 +471,10 @@ update_account_object (GoaDaemon *daemon,
ret = TRUE;
out:
+ g_free (serialized_icon);
+ if (icon != NULL)
+ g_object_unref (icon);
+ g_free (name);
if (provider != NULL)
g_object_unref (provider);
g_object_unref (account);
diff --git a/src/goabackend/goafacebookprovider.c b/src/goabackend/goafacebookprovider.c
index fb34acb..ac13e66 100644
--- a/src/goabackend/goafacebookprovider.c
+++ b/src/goabackend/goafacebookprovider.c
@@ -71,10 +71,11 @@ get_provider_type (GoaProvider *_provider)
return "facebook";
}
-static const gchar *
-get_name (GoaProvider *_provider)
+static gchar *
+get_provider_name (GoaProvider *_provider,
+ GoaObject *object)
{
- return _("Facebook Account");
+ return g_strdup (_("Facebook"));
}
static const gchar *
@@ -273,7 +274,7 @@ goa_facebook_provider_class_init (GoaFacebookProviderClass *klass)
provider_class = GOA_PROVIDER_CLASS (klass);
provider_class->get_provider_type = get_provider_type;
- provider_class->get_name = get_name;
+ provider_class->get_provider_name = get_provider_name;
provider_class->build_object = build_object;
provider_class->show_account = show_account;
diff --git a/src/goabackend/goagoogleprovider.c b/src/goabackend/goagoogleprovider.c
index d66acb9..096b25b 100644
--- a/src/goabackend/goagoogleprovider.c
+++ b/src/goabackend/goagoogleprovider.c
@@ -71,10 +71,11 @@ get_provider_type (GoaProvider *_provider)
return "google";
}
-static const gchar *
-get_name (GoaProvider *_provider)
+static gchar *
+get_provider_name (GoaProvider *_provider,
+ GoaObject *object)
{
- return _("Google Account");
+ return g_strdup (_("Google"));
}
static const gchar *
@@ -401,7 +402,7 @@ goa_google_provider_class_init (GoaGoogleProviderClass *klass)
provider_class = GOA_PROVIDER_CLASS (klass);
provider_class->get_provider_type = get_provider_type;
- provider_class->get_name = get_name;
+ provider_class->get_provider_name = get_provider_name;
provider_class->build_object = build_object;
provider_class->show_account = show_account;
provider_class->get_credentials_generation = get_credentials_generation;
diff --git a/src/goabackend/goaoauth2provider.c b/src/goabackend/goaoauth2provider.c
index 5200389..937966f 100644
--- a/src/goabackend/goaoauth2provider.c
+++ b/src/goabackend/goaoauth2provider.c
@@ -52,7 +52,7 @@
*
* Additionally, the
* #GoaProviderClass.get_provider_type,
- * #GoaProviderClass.get_name,
+ * #GoaProviderClass.get_provider_name,
* #GoaProviderClass.build_object (this should chain up to its
* parent class) methods must be implemented.
*
diff --git a/src/goabackend/goaoauthprovider.c b/src/goabackend/goaoauthprovider.c
index 352a54a..184704c 100644
--- a/src/goabackend/goaoauthprovider.c
+++ b/src/goabackend/goaoauthprovider.c
@@ -56,7 +56,7 @@
*
* Additionally, the
* #GoaProviderClass.get_provider_type,
- * #GoaProviderClass.get_name,
+ * #GoaProviderClass.get_provider_name,
* #GoaProviderClass.build_object (this should chain up to its
* parent class) methods must be implemented.
*
diff --git a/src/goabackend/goaprovider.c b/src/goabackend/goaprovider.c
index 66e62a8..dda1da4 100644
--- a/src/goabackend/goaprovider.c
+++ b/src/goabackend/goaprovider.c
@@ -61,6 +61,9 @@ static void goa_provider_show_account_real (GoaProvider *provider,
static guint goa_provider_get_credentials_generation_real (GoaProvider *provider);
+static GIcon *goa_provider_get_provider_icon_default (GoaProvider *provider,
+ GoaObject *object);
+
G_DEFINE_ABSTRACT_TYPE (GoaProvider, goa_provider, G_TYPE_OBJECT);
static void
@@ -75,6 +78,7 @@ goa_provider_class_init (GoaProviderClass *klass)
klass->ensure_credentials_sync = goa_provider_ensure_credentials_sync_real;
klass->show_account = goa_provider_show_account_real;
klass->get_credentials_generation = goa_provider_get_credentials_generation_real;
+ klass->get_provider_icon = goa_provider_get_provider_icon_default;
}
/**
@@ -96,22 +100,62 @@ goa_provider_get_provider_type (GoaProvider *provider)
}
/**
- * goa_provider_get_name:
+ * goa_provider_get_provider_name:
* @provider: A #GoaProvider.
+ * @object: (allow-none): A #GoaObject for an account.
*
- * Gets a localized name for @provider that is suitable for display in
- * an user interface.
+ * Gets a name for @provider and @object that is suitable for display
+ * in an user interface. The returned value may depend on @object (if
+ * it's not %NULL) - for example, hosted accounts might return a
+ * different name.
*
* This is a pure virtual method - a subclass must provide an
* implementation.
*
- * Returns: (transfer none): A string owned by @provider, do not free.
+ * Returns: (transfer full): A string that should be freed with g_free().
*/
-const gchar *
-goa_provider_get_name (GoaProvider *provider)
+gchar *
+goa_provider_get_provider_name (GoaProvider *provider,
+ GoaObject *object)
{
g_return_val_if_fail (GOA_IS_PROVIDER (provider), NULL);
- return GOA_PROVIDER_GET_CLASS (provider)->get_name (provider);
+ return GOA_PROVIDER_GET_CLASS (provider)->get_provider_name (provider, object);
+}
+
+/**
+ * goa_provider_get_provider_icon:
+ * @provider: A #GoaProvider.
+ * @object: A #GoaObject for an account.
+ *
+ * Gets an icon for @provider and @object that is suitable for display
+ * in an user interface. The returned value may depend on @object -
+ * for example, hosted accounts might return a different icon.
+ *
+ * This is a virtual method with a default implementation that returns
+ * a #GThemedIcon with fallbacks constructed from the name
+ * <literal>goa-account-TYPE</literal> where <literal>TYPE</literal>
+ * is the return value of goa_provider_get_provider_type().
+ *
+ * Returns: (transfer full): An icon that should be freed with g_object_unref().
+ */
+GIcon *
+goa_provider_get_provider_icon (GoaProvider *provider,
+ GoaObject *object)
+{
+ g_return_val_if_fail (GOA_IS_PROVIDER (provider), NULL);
+ return GOA_PROVIDER_GET_CLASS (provider)->get_provider_icon (provider, object);
+}
+
+static GIcon *
+goa_provider_get_provider_icon_default (GoaProvider *provider,
+ GoaObject *object)
+{
+ GIcon *ret;
+ gchar *s;
+ s = g_strdup_printf ("goa-account-%s", goa_provider_get_provider_type (provider));
+ ret = g_themed_icon_new_with_default_fallbacks (s);
+ g_free (s);
+ return ret;
}
/* ---------------------------------------------------------------------------------------------------- */
diff --git a/src/goabackend/goaprovider.h b/src/goabackend/goaprovider.h
index 472ec3e..590850b 100644
--- a/src/goabackend/goaprovider.h
+++ b/src/goabackend/goaprovider.h
@@ -58,7 +58,8 @@ struct _GoaProvider
* GoaProviderClass:
* @parent_class: The parent class.
* @get_provider_type: Virtual function for goa_provider_get_provider_type().
- * @get_name: Virtual function for goa_provider_get_name().
+ * @get_provider_name: Virtual function for goa_provider_get_provider_name().
+ * @get_provider_icon: Virtual function for goa_provider_get_provider_icon().
* @add_account: Virtual function for goa_provider_add_account().
* @refresh_account: Virtual function for goa_provider_refresh_account().
* @build_object: Virtual function for goa_provider_build_object().
@@ -73,7 +74,10 @@ struct _GoaProviderClass
/* pure virtual */
const gchar *(*get_provider_type) (GoaProvider *provider);
- const gchar *(*get_name) (GoaProvider *provider);
+ gchar *(*get_provider_name) (GoaProvider *provider,
+ GoaObject *object);
+ GIcon *(*get_provider_icon) (GoaProvider *provider,
+ GoaObject *object);
GoaObject *(*add_account) (GoaProvider *provider,
GoaClient *client,
GtkDialog *dialog,
@@ -110,7 +114,10 @@ struct _GoaProviderClass
GType goa_provider_get_type (void) G_GNUC_CONST;
const gchar *goa_provider_get_provider_type (GoaProvider *provider);
-const gchar *goa_provider_get_name (GoaProvider *provider);
+gchar *goa_provider_get_provider_name (GoaProvider *provider,
+ GoaObject *object);
+GIcon *goa_provider_get_provider_icon (GoaProvider *provider,
+ GoaObject *object);
GoaObject *goa_provider_add_account (GoaProvider *provider,
GoaClient *client,
GtkDialog *dialog,
diff --git a/src/goabackend/goatwitterprovider.c b/src/goabackend/goatwitterprovider.c
index 4d9ed18..018f97d 100644
--- a/src/goabackend/goatwitterprovider.c
+++ b/src/goabackend/goatwitterprovider.c
@@ -71,10 +71,11 @@ get_provider_type (GoaProvider *_provider)
return "twitter";
}
-static const gchar *
-get_name (GoaProvider *_provider)
+static gchar *
+get_provider_name (GoaProvider *_provider,
+ GoaObject *object)
{
- return _("Twitter Account");
+ return g_strdup (_("Twitter"));
}
static const gchar *
@@ -274,7 +275,7 @@ goa_twitter_provider_class_init (GoaTwitterProviderClass *klass)
provider_class = GOA_PROVIDER_CLASS (klass);
provider_class->get_provider_type = get_provider_type;
- provider_class->get_name = get_name;
+ provider_class->get_provider_name = get_provider_name;
provider_class->build_object = build_object;
provider_class->show_account = show_account;
diff --git a/src/goabackend/goayahooprovider.c b/src/goabackend/goayahooprovider.c
index 37d4c71..f5e58a4 100644
--- a/src/goabackend/goayahooprovider.c
+++ b/src/goabackend/goayahooprovider.c
@@ -71,10 +71,11 @@ get_provider_type (GoaProvider *_provider)
return "yahoo";
}
-static const gchar *
-get_name (GoaProvider *_provider)
+static gchar *
+get_provider_name (GoaProvider *_provider,
+ GoaObject *object)
{
- return _("Yahoo Account");
+ return g_strdup (_("Yahoo"));
}
static const gchar *
@@ -337,7 +338,7 @@ goa_yahoo_provider_class_init (GoaYahooProviderClass *klass)
provider_class = GOA_PROVIDER_CLASS (klass);
provider_class->get_provider_type = get_provider_type;
- provider_class->get_name = get_name;
+ provider_class->get_provider_name = get_provider_name;
provider_class->build_object = build_object;
provider_class->show_account = show_account;
diff --git a/src/panel/goapanel.c b/src/panel/goapanel.c
index 6ad4401..1d593a1 100644
--- a/src/panel/goapanel.c
+++ b/src/panel/goapanel.c
@@ -162,6 +162,16 @@ goa_panel_init (GoaPanel *panel)
column = gtk_tree_view_column_new ();
gtk_tree_view_append_column (GTK_TREE_VIEW (panel->accounts_treeview), column);
+ renderer = gtk_cell_renderer_pixbuf_new ();
+ gtk_tree_view_column_pack_start (column, renderer, FALSE);
+ g_object_set (G_OBJECT (renderer),
+ "stock-size", GTK_ICON_SIZE_DIALOG,
+ NULL);
+ gtk_tree_view_column_set_attributes (column,
+ renderer,
+ "gicon", GOA_PANEL_ACCOUNTS_MODEL_COLUMN_ICON,
+ NULL);
+
renderer = gtk_cell_renderer_text_new ();
gtk_tree_view_column_pack_start (column, renderer, FALSE);
gtk_tree_view_column_set_attributes (column,
@@ -460,9 +470,12 @@ on_toolbar_add_button_clicked (GtkToolButton *button,
for (l = providers; l != NULL; l = l->next)
{
GoaProvider *provider = GOA_PROVIDER (l->data);
+ gchar *provider_name;
+ provider_name = goa_provider_get_provider_name (provider, NULL);
gtk_combo_box_text_append (GTK_COMBO_BOX_TEXT (combo_box),
goa_provider_get_provider_type (provider),
- goa_provider_get_name (provider));
+ provider_name);
+ g_free (provider_name);
}
gtk_combo_box_set_active (GTK_COMBO_BOX (combo_box), 0);
diff --git a/src/panel/goapanelaccountsmodel.c b/src/panel/goapanelaccountsmodel.c
index 7f2dfc7..0833168 100644
--- a/src/panel/goapanelaccountsmodel.c
+++ b/src/panel/goapanelaccountsmodel.c
@@ -137,7 +137,8 @@ goa_panel_accounts_model_constructed (GObject *object)
types[1] = GOA_TYPE_OBJECT;
types[2] = G_TYPE_BOOLEAN;
types[3] = G_TYPE_STRING;
- G_STATIC_ASSERT (4 == GOA_PANEL_ACCOUNTS_MODEL_N_COLUMNS);
+ types[4] = G_TYPE_ICON;
+ G_STATIC_ASSERT (5 == GOA_PANEL_ACCOUNTS_MODEL_N_COLUMNS);
gtk_list_store_set_column_types (GTK_LIST_STORE (model),
GOA_PANEL_ACCOUNTS_MODEL_N_COLUMNS,
types);
@@ -315,23 +316,24 @@ set_values (GoaPanelAccountsModel *model,
GtkTreeIter *iter)
{
GoaAccount *account;
- GoaProvider *provider;
- const gchar *type;
- gchar *provider_name;
+ GIcon *icon;
gchar *markup;
+ GError *error;
account = goa_object_peek_account (object);
- type = goa_account_get_provider_type (account);
- provider = goa_provider_get_for_provider_type (type);
- if (provider != NULL)
- provider_name = g_strdup (goa_provider_get_name (provider));
- else
- provider_name = g_strdup_printf (_("Unknown Provider (%s)"), type);
+ error = NULL;
+ icon = g_icon_new_for_string (goa_account_get_provider_icon (account), &error);
+ if (icon == NULL)
+ {
+ goa_warning ("Error creating GIcon for account: %s (%s, %d)",
+ error->message, g_quark_to_string (error->domain), error->code);
+ g_error_free (error);
+ }
markup = g_strdup_printf ("<b>%s</b>\n"
"<small><span foreground=\"#555555\">%s</span></small>",
- provider_name,
+ goa_account_get_provider_name (account),
goa_account_get_presentation_identity (account));
gtk_list_store_set (GTK_LIST_STORE (model),
@@ -340,11 +342,11 @@ set_values (GoaPanelAccountsModel *model,
GOA_PANEL_ACCOUNTS_MODEL_COLUMN_OBJECT, object,
GOA_PANEL_ACCOUNTS_MODEL_COLUMN_ATTENTION_NEEDED, goa_account_get_attention_needed (account),
GOA_PANEL_ACCOUNTS_MODEL_COLUMN_MARKUP, markup,
+ GOA_PANEL_ACCOUNTS_MODEL_COLUMN_ICON, icon,
-1);
g_free (markup);
- g_free (provider_name);
- g_clear_object (&provider);
+ g_clear_object (&icon);
}
static void
diff --git a/src/panel/goapanelaccountsmodel.h b/src/panel/goapanelaccountsmodel.h
index aa99235..a5d44e2 100644
--- a/src/panel/goapanelaccountsmodel.h
+++ b/src/panel/goapanelaccountsmodel.h
@@ -41,6 +41,7 @@ enum
GOA_PANEL_ACCOUNTS_MODEL_COLUMN_OBJECT,
GOA_PANEL_ACCOUNTS_MODEL_COLUMN_ATTENTION_NEEDED,
GOA_PANEL_ACCOUNTS_MODEL_COLUMN_MARKUP,
+ GOA_PANEL_ACCOUNTS_MODEL_COLUMN_ICON,
GOA_PANEL_ACCOUNTS_MODEL_N_COLUMNS
};