/* * Copyright (C) 2011 Collabora Ltd. * Copyright (C) 2011 Philip Withnall * * This library is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 2.1 of the License, or * (at your option) any later version. * * This library 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this library. If not, see . * * Authors: * Raul Gutierrez Segales * Philip Withnall */ using Gee; using GLib; /** * Object representing a note that can have some parameters associated with it. * * See {@link Folks.AbstractFieldDetails} for details on common parameter names * and values. * * @since 0.6.0 */ public class Folks.NoteFieldDetails : AbstractFieldDetails { private string _id; /** * {@inheritDoc} */ public override string id { get { return this._id; } set { this._id = (value != null ? value : ""); } } /** * The UID of the note (if any). */ [Deprecated (since = "0.6.5", replacement = "AbstractFieldDetails.id")] public string uid { get { return this.id; } set { this.id = value; } } /** * Create a new NoteFieldDetails. * * @param value the value of the field, which should be a non-empty free-form * UTF-8 string as entered by the user * @param parameters initial parameters. See * {@link AbstractFieldDetails.parameters}. A `null` value is equivalent to a * empty map of parameters. * * @return a new NoteFieldDetails * * @since 0.6.0 */ public NoteFieldDetails (string value, MultiMap? parameters = null, string? uid = null) { if (value == "") { warning ("Empty note passed to NoteFieldDetails."); } Object (value: value, id: uid, parameters: parameters); } /** * {@inheritDoc} * * @since 0.6.0 */ public override bool equal (AbstractFieldDetails that) { return base.equal (that); } /** * {@inheritDoc} * * @since 0.6.0 */ public override uint hash () { return (this.value.hash () + this.id.hash ()); } } /** * This interface represents the list of notes associated * to a {@link Persona} and {@link Individual}. * * @since 0.4.0 */ public interface Folks.NoteDetails : Object { /** * The notes about the contact. * * @since 0.5.1 */ public abstract Set notes { get; set; } /** * Change the contact's notes. * * It's preferred to call this rather than setting {@link NoteDetails.notes} * directly, as this method gives error notification and will only return once * the notes have been written to the relevant backing store (or the * operation's failed). * * @param notes the set of notes * @throws PropertyError if setting the notes failed * @since 0.6.2 */ public virtual async void change_notes (Set notes) throws PropertyError { /* Default implementation. */ throw new PropertyError.NOT_WRITEABLE ( _("Notes are not writeable on this contact.")); } }