Philip Withnall [Wed, 25 Aug 2010 18:00:37 +0000 (19:00 +0100)]
Bug 627968 — Add Individual.trust_level property
Add a property to indicate how far the Individual should be trusted. This
is NONE if any of the Individual's Personas come from a non-trusted
PersonaStore. Closes: bgo#627968
Philip Withnall [Thu, 19 Aug 2010 16:59:27 +0000 (17:59 +0100)]
Only keep one reference to each Persona in an Individual
Philip Withnall [Thu, 19 Aug 2010 16:55:02 +0000 (17:55 +0100)]
Bug 626725 — Add an Individual.personas_changed signal
Add a personas_changed signal, allowing client code to do various things
with the lists of added and removed Personas, instead of having to determine
which Personas were added or removed themselves. Closes: bgo#626725
Philip Withnall [Thu, 19 Aug 2010 15:17:08 +0000 (16:17 +0100)]
Store a set of Personas inside each Individual for speed of lookup
Store a set of all the Personas in the Individual, rather than
compartmentalised sets of the Personas from each PersonaStore. With the
set of Personas kept in sync with the list of Personas, this allows both
fast lookup and iteration.
Travis Reitter [Mon, 23 Aug 2010 20:07:30 +0000 (13:07 -0700)]
Fix the calculation for the persona_store_id length in Persona.split_uid().
Philip Withnall [Mon, 23 Aug 2010 16:59:58 +0000 (17:59 +0100)]
Depend on libgee <= 0.5.2
libgee 0.5.3 breaks API. See bgo#627746
Travis Reitter [Fri, 20 Aug 2010 18:15:52 +0000 (11:15 -0700)]
Make gobject-introspection a hard requirement.
Fixes bgo#627506
Travis Reitter [Fri, 20 Aug 2010 15:37:04 +0000 (08:37 -0700)]
Clean up the variable naming for parallel data structures.
Philip Withnall [Fri, 20 Aug 2010 11:22:13 +0000 (12:22 +0100)]
Ensure duplicate Individuals don't enter candidate_inds when aggregating
If Individuals matched on more than one property, they would appear in the
list of candidate Individuals multiple times, causing the resulting linked
Individual to contain duplicate Personas and Bad Things to happen.
Helps: bgo#626544
Philip Withnall [Fri, 20 Aug 2010 10:53:18 +0000 (11:53 +0100)]
Ensure the IMable.im_addresses property does not contain duplicates
This can cause Personas to appear multiple times in a linked Individual,
leading to bad state. Helps: bgo#626544
Maciej Piechotka [Wed, 18 Aug 2010 22:24:05 +0000 (00:24 +0200)]
Bug 627314 — folks cannot be install in gentoo sandbox
Correct a problem in the Telepathy backend's LDADD. Closes: bgo#627314
Travis Reitter [Thu, 19 Aug 2010 01:27:10 +0000 (18:27 -0700)]
Bundle introspection.m4, because ...autotools.
Travis Reitter [Wed, 18 Aug 2010 19:15:45 +0000 (12:15 -0700)]
Check whether the Persona instance is IMable, not the class.
Travis Reitter [Wed, 18 Aug 2010 16:31:04 +0000 (09:31 -0700)]
Post-release version bump and non-release indicator
Travis Reitter [Wed, 18 Aug 2010 16:15:20 +0000 (09:15 -0700)]
Release version 0.1.14.1
Travis Reitter [Wed, 18 Aug 2010 16:11:34 +0000 (09:11 -0700)]
Make the 'Group invalidated' warning a debug statement.
This seems to only be printed when signing off of some accounts, so it doesn't
deserve to be a warning.
Travis Reitter [Wed, 18 Aug 2010 14:57:59 +0000 (07:57 -0700)]
Depend upon a released version of Vala.
Travis Reitter [Wed, 18 Aug 2010 05:18:57 +0000 (22:18 -0700)]
Bump Vala version requirement to where it should be
The move of tp-lowlevel to gobject-introspection requires this version of Vala.
I forgot to bump this in time for that commit.
Travis Reitter [Wed, 18 Aug 2010 04:28:02 +0000 (21:28 -0700)]
Post-release version bump and non-release indicator
Travis Reitter [Wed, 18 Aug 2010 03:55:18 +0000 (20:55 -0700)]
Release version 0.1.14
Travis Reitter [Tue, 17 Aug 2010 23:55:48 +0000 (16:55 -0700)]
Fix calls to deprecated Gee.Map.remove()
Travis Reitter [Tue, 17 Aug 2010 23:35:28 +0000 (16:35 -0700)]
Update object ownership in the Telepathy backend for the new tp-lowlevel ownership.
Travis Reitter [Tue, 17 Aug 2010 23:07:07 +0000 (16:07 -0700)]
Don't free the return value of transfer-full TpLowlevel functions.
These transfer return value ownership, so we're asking for a double-free error.
Travis Reitter [Tue, 17 Aug 2010 23:31:07 +0000 (16:31 -0700)]
Build tp-lowlevel via gobject-introspection
Travis Reitter [Tue, 17 Aug 2010 23:34:15 +0000 (16:34 -0700)]
Add gobject-introspection annotations to tp-lowlevel
Philip Withnall [Tue, 17 Aug 2010 14:00:27 +0000 (15:00 +0100)]
Use gen-introspect-0.10 instead of gen-introspect
This is needed because Vala renamed gen-introspect for 0.9.5.
Guillaume Desmottes [Tue, 17 Aug 2010 11:39:27 +0000 (13:39 +0200)]
use debug() when failing to get a contact list channel
Guillaume Desmottes [Tue, 17 Aug 2010 11:35:01 +0000 (13:35 +0200)]
use debug() instead of message()
Travis Reitter [Thu, 12 Aug 2010 17:39:34 +0000 (10:39 -0700)]
Cut dependence on vala-1.0.pc for other programs
Travis Reitter [Thu, 12 Aug 2010 16:35:51 +0000 (09:35 -0700)]
Detect Vala by special automake macro, not .pc file.
The .pc file is meant for internal use only.
Philip Withnall [Wed, 11 Aug 2010 16:11:17 +0000 (17:11 +0100)]
Post-release version bump and non-release indicator
Philip Withnall [Wed, 11 Aug 2010 16:09:14 +0000 (17:09 +0100)]
Release version 0.1.13
Philip Withnall [Wed, 11 Aug 2010 16:08:46 +0000 (17:08 +0100)]
Ensure the telepathy-vala configure check works for builddir != srcdir
Philip Withnall [Tue, 10 Aug 2010 16:03:17 +0000 (17:03 +0100)]
Rework unlinking in the IndividualAggregator
Ensure it causes linked Individuals to be split apart and their Personas
which haven't been removed to be relinked.
Philip Withnall [Tue, 10 Aug 2010 15:59:36 +0000 (16:59 +0100)]
Signal the removal of personas from the Kf.PersonaStore
Philip Withnall [Tue, 10 Aug 2010 15:56:31 +0000 (16:56 +0100)]
Improve the IDs stored in the key file
Instead of storing the full Persona.UID in the key file, only store the
display ID (the number). The IID then becomes the key file filename plus the
display ID, to prevent unwanted linking of Kf.Personas from different key
files.
Philip Withnall [Mon, 9 Aug 2010 16:49:57 +0000 (17:49 +0100)]
Improve the heuristic for choosing an Individual's alias
Change the heuristic to choose the first alias which isn't unset or empty,
and if possible to choose the first alias which isn't equal to the Persona's
display-id. If all the aliases are equal to display-ids, however, use one
of them in preference to having no alias at all.
Philip Withnall [Mon, 9 Aug 2010 16:18:32 +0000 (17:18 +0100)]
Don't synchronise groups between Personas
Philip Withnall [Mon, 9 Aug 2010 16:11:59 +0000 (17:11 +0100)]
Don't synchronise favourite status between Personas
Philip Withnall [Mon, 9 Aug 2010 16:08:43 +0000 (17:08 +0100)]
Don't synchronise alias between Personas
When setting a new alias on an Individual, only push it to Personas from
the writeable PersonaStore. This prevents every other Persona's alias from
being unnecessarily overwritten.
Philip Withnall [Mon, 9 Aug 2010 16:07:28 +0000 (17:07 +0100)]
Add a PersonaStore.is_writeable property
Travis Reitter [Tue, 10 Aug 2010 22:45:16 +0000 (15:45 -0700)]
Update folks-telepathy pkg-config files.
Now they require telepathy-glib, not the obsolete telepathy-vala.
Travis Reitter [Tue, 10 Aug 2010 22:43:57 +0000 (15:43 -0700)]
Update folks pkg-config files.
Now they require telepathy-glib, not the obsolete telepathy-vala.
Travis Reitter [Tue, 10 Aug 2010 22:28:23 +0000 (15:28 -0700)]
Check for telepathy-glib Vala bindings by compilation success, not specific file.
Travis Reitter [Tue, 10 Aug 2010 21:24:41 +0000 (14:24 -0700)]
Arrange configure checks from most- to least-likely to succeed.
Travis Reitter [Fri, 16 Jul 2010 01:33:28 +0000 (18:33 -0700)]
Catch up with the new location for the telepathy-glib.vapi bindings file.
Travis Reitter [Mon, 9 Aug 2010 23:32:10 +0000 (16:32 -0700)]
Don't warn if the 'stored' channel doesn't exist.
Philip Withnall [Mon, 9 Aug 2010 13:48:35 +0000 (14:48 +0100)]
Add IndividualAggregator.link_personas() and .unlink_individual() API
These methods allow persistent linking and unlinking of Personas, compared to
the transient linking which editing Individual.personas provides. This allows
for an interface to preview the properties of a newly linked Individual
before committing the changes using IndividualAggregator.link_personas().
Philip Withnall [Mon, 9 Aug 2010 11:44:03 +0000 (12:44 +0100)]
Implement the IMable interface on TpfPersona
Use it to expose the Persona's IM address. Do not allow setting the IM
address.
Philip Withnall [Mon, 9 Aug 2010 13:47:36 +0000 (14:47 +0100)]
Take "im-addresses" as the parameter for a new Kf.Persona
This allows construction of new key file personas which contain multiple
IM addresses from different protocols.
Philip Withnall [Mon, 9 Aug 2010 13:46:26 +0000 (14:46 +0100)]
Use autogenerated numeric IDs for key file groups
Philip Withnall [Fri, 6 Aug 2010 10:20:59 +0000 (11:20 +0100)]
Let the IndividualAggregator designate one PersonaStore as its writeable store
Philip Withnall [Fri, 6 Aug 2010 14:05:53 +0000 (15:05 +0100)]
Allow late linking of Individuals if Personas are added at runtime
If a Persona is added after the initial aggregation phase and it should be
linked to more than one existing Individual, the Individuals are now destroyed
and their Personas added to a new linked Individual containing the late
Persona.
This is necessary for supporting runtime linking and unlinking of Personas.
Philip Withnall [Mon, 9 Aug 2010 17:03:38 +0000 (18:03 +0100)]
Specify a replacement Individual in Individual.removed()
This allows clients to better keep track of which Individuals have been
removed through the user linking them with other Individuals, and which have
been removed for more mundane reasons.
Philip Withnall [Thu, 5 Aug 2010 13:42:22 +0000 (14:42 +0100)]
Warn if the MIME type of a potential backend couldn't be determined
This prevents backends silently not being loaded if shared-mime-info wasn't
installed. Closes: bgo#626108
Philip Withnall [Wed, 4 Aug 2010 10:09:33 +0000 (11:09 +0100)]
Add @since lines to the documentation of some new methods
Travis Reitter [Tue, 3 Aug 2010 21:07:10 +0000 (17:07 -0400)]
Add a display-name property to PersonaStore
This is equivalent to display-id for Persona.
Travis Reitter [Tue, 3 Aug 2010 19:43:39 +0000 (15:43 -0400)]
Add the display-id property to Persona.
This is meant to be a human-readable, familiar identifier for presenting to the
user (when absolutely necessary).
Philip Withnall [Thu, 22 Jul 2010 16:16:51 +0000 (17:16 +0100)]
Use the Persona's UID instead of the IID as the Individual's ID
Because the UID is globally unique, so this ensures that Individuals'
IDs are globally unique.
Philip Withnall [Thu, 22 Jul 2010 15:24:14 +0000 (16:24 +0100)]
Allow specifying the key file to load via an environment variable
Philip Withnall [Thu, 22 Jul 2010 14:26:15 +0000 (15:26 +0100)]
Add the key-file backend to the documentation build
This requires filtering out the BackendFactory Vala files, since they contain
global symbols (module_init(), module_finalize(), backend_factory) in both
backends, which conflict in the documentation.
Philip Withnall [Tue, 20 Jul 2010 16:51:46 +0000 (17:51 +0100)]
Tidy up UIDs and IIDs in the backends
IIDs are now defined as unique within a backend, and formatted to make them
most useful for linking. UIDs are now defined as unique across all backends,
and formatted as Backend.name:PersonaStore.id:Persona ID.
Philip Withnall [Mon, 19 Jul 2010 15:37:46 +0000 (16:37 +0100)]
Add linking support to the IndividualAggregator
Personas are linked together to form Individuals using a link map containing
mappings from UIDs and linkable properties to Individual instances. This
takes PersonaStore trust levels into account.
Philip Withnall [Fri, 16 Jul 2010 12:41:34 +0000 (13:41 +0100)]
Add a key-file backend
This backend stores Personas in a key file which is completely under the
user's control, making it the only fully trusted Backend. Currently, it only
stores IM addresses, which can then be used as linkable properties by the
IndividualAggregator to link together Personas from multiple backends to
automagically produce Individuals.
Philip Withnall [Mon, 19 Jul 2010 11:11:56 +0000 (12:11 +0100)]
Add PersonaStore trust levels
The Personas from each PersonaStore now have an assigned trust level (none,
partial or full) which indicates how much of their data can be used for
linking Personas together to form Individuals.
At the moment, the key-file backend is hard-coded as having the only fully
trusted PersonaStore.
Philip Withnall [Fri, 16 Jul 2010 12:40:39 +0000 (13:40 +0100)]
Add IMable interface
Philip Withnall [Fri, 16 Jul 2010 12:39:55 +0000 (13:39 +0100)]
Add concept of linkeable properties to Persona
Philip Withnall [Tue, 20 Jul 2010 12:37:07 +0000 (13:37 +0100)]
Downgrade UID-as-alias warning to just a message
It's routinely triggered by the key-file backend, and doesn't need to
be a warning anyway.
Philip Withnall [Fri, 23 Jul 2010 11:21:22 +0000 (12:21 +0100)]
Manually iterate through personas in remove_individual().
This lets us properly yield upon remove_persona().
Travis Reitter [Tue, 3 Aug 2010 13:22:48 +0000 (09:22 -0400)]
Set the autoconf link to folks bugzilla.
Philip Withnall [Mon, 2 Aug 2010 15:57:28 +0000 (16:57 +0100)]
Don't warn when adding an existing contact.
Closes bgo#625830
Travis Reitter [Mon, 2 Aug 2010 19:41:27 +0000 (15:41 -0400)]
Post-release version bump and non-release indicator
Travis Reitter [Mon, 2 Aug 2010 18:01:51 +0000 (14:01 -0400)]
Release version 0.1.12
Travis Reitter [Mon, 2 Aug 2010 17:59:32 +0000 (13:59 -0400)]
Bump revision, in anticipation of release.
Philip Withnall [Fri, 23 Jul 2010 12:38:53 +0000 (13:38 +0100)]
Version the installed backends using the LT current version number
This changes with every API/ABI change which is made to libfolks,
so it should ensure that only binary compatible modules are loaded
at runtime.
Philip Withnall [Mon, 2 Aug 2010 12:12:21 +0000 (13:12 +0100)]
Handle connections which are ready as soon as they're connected
This fixes contacts from Facebook and MSN accounts sometimes not showing up
in the contact list. Closes: bgo#625815
Travis Reitter [Mon, 2 Aug 2010 14:16:53 +0000 (10:16 -0400)]
Bump Vala version requirement.
We actually depended on this version de facto as soon as we added the debugging
clean-ups.
Philip Withnall [Mon, 2 Aug 2010 11:55:59 +0000 (12:55 +0100)]
Add some more debug output to the Telepathy backend
Philip Withnall [Mon, 2 Aug 2010 10:14:36 +0000 (11:14 +0100)]
Don't log errors in tp-lowlevel functions if they return a GError
Let the higher-level code decide whether a message or warning needs to
be logged to the terminal instead.
Philip Withnall [Wed, 21 Jul 2010 10:45:07 +0000 (11:45 +0100)]
Use g_message() in tp-lowlevel rather than g_warning()
Any of the tp-glib calls we make could routinely fail, so to stop gdb
halting on every warning, change them to messages.
Philip Withnall [Wed, 21 Jul 2010 10:27:03 +0000 (11:27 +0100)]
Change a message() to a debug()
Philip Withnall [Tue, 29 Jun 2010 14:18:54 +0000 (15:18 +0100)]
Add debug flags support
Debug flags for libfolks, controlling which debug domains spew messages, can
be specified using the FOLKS_DEBUG environment variable, with a GLib-style
debug flags string.
The two initial debug domains are:
* Core: everything in the folks directory
* TelepathyBackend: everything in the backends/telepathy directory
Travis Reitter [Tue, 27 Jul 2010 16:38:02 +0000 (18:38 +0200)]
Post-release version bump.
Travis Reitter [Tue, 27 Jul 2010 16:33:32 +0000 (18:33 +0200)]
Update (a little late) the LT versioning fields for 0.1.11
Travis Reitter [Tue, 27 Jul 2010 06:59:28 +0000 (08:59 +0200)]
Ensure all methods that should be async are, to get API breaking out of the way.
Travis Reitter [Mon, 26 Jul 2010 15:58:36 +0000 (17:58 +0200)]
Always throw an error in async functions, to avoid breaking (C) API later.
Travis Reitter [Mon, 26 Jul 2010 10:43:52 +0000 (12:43 +0200)]
Merge remote branch 'pwith/offline-fixes' into prep-0.1.11
Philip Withnall [Fri, 23 Jul 2010 11:21:22 +0000 (12:21 +0100)]
Make remove_persona() and remove_individual() async
They could involve blocking operations, so should be async.
Philip Withnall [Thu, 22 Jul 2010 13:18:43 +0000 (14:18 +0100)]
Reset the TpfPersonaStore state when going offline
Emit a signal to remove all the Personas, then reset the store's state
so that it can come online again later from a clean slate.
Philip Withnall [Thu, 22 Jul 2010 13:18:23 +0000 (14:18 +0100)]
Don't hold a reference to the Account when iterating through an Account list
Philip Withnall [Thu, 22 Jul 2010 10:41:13 +0000 (11:41 +0100)]
Don't emit "group invalidated" warnings when disconnecting
Philip Withnall [Fri, 9 Jul 2010 10:04:52 +0000 (11:04 +0100)]
Don't initialise favourite contacts support if the Logger doesn't exist
Philip Withnall [Wed, 21 Jul 2010 11:08:35 +0000 (12:08 +0100)]
Fix Presence.is_online()
Due to a signed/unsigned int problem, typecmp() was never returning
negative answers, so everyone was always online.
Philip Withnall [Wed, 30 Jun 2010 13:49:01 +0000 (14:49 +0100)]
Split setup of the IndividualAggregator out into a .prepare() method
Philip Withnall [Wed, 30 Jun 2010 13:33:54 +0000 (14:33 +0100)]
Split setup of Backends out into a Backend.prepare() method
Philip Withnall [Wed, 30 Jun 2010 12:52:08 +0000 (13:52 +0100)]
Split setup of PersonaStores out into a PersonaStore.prepare() method
This allows the PersonaStore.personas_added and PersonaStore.personas_removed
signals to be connected to before the PersonaStore could first emit them,
removing a race condition.
Philip Withnall [Mon, 19 Jul 2010 18:10:39 +0000 (19:10 +0100)]
Only connect to group-changed signals if the Persona implements Groups
Travis Reitter [Thu, 15 Jul 2010 21:42:31 +0000 (14:42 -0700)]
Post-release version bump.
Travis Reitter [Thu, 15 Jul 2010 21:15:49 +0000 (14:15 -0700)]
Cut unnecessary dbus-glib flags from the libfolks build process.
Travis Reitter [Thu, 15 Jul 2010 21:15:02 +0000 (14:15 -0700)]
Explicitly build and link generated C code against telepathy-glib as necessary.