]> www.fi.muni.cz Git - evince.git/commitdiff
[libdocument] Add EvDocumentLicense to store information about the document license
authorCarlos Garcia Campos <carlosgc@gnome.org>
Sun, 25 Oct 2009 18:28:33 +0000 (19:28 +0100)
committerCarlos Garcia Campos <carlosgc@gnome.org>
Sun, 25 Oct 2009 18:28:33 +0000 (19:28 +0100)
See bgo#349173

libdocument/ev-document-info.h
libdocument/ev-document.c

index a75f6819b458fd90f380d6ce35545a2b5127b6b6..eee6178c605b1cb506353191055a6eccded232b8 100644 (file)
@@ -31,6 +31,7 @@
 G_BEGIN_DECLS
 
 typedef struct _EvDocumentInfo    EvDocumentInfo;
+typedef struct _EvDocumentLicense EvDocumentLicense;
 
 #define EV_TYPE_DOCUMENT_INFO (ev_document_info_get_type())
 
@@ -98,7 +99,9 @@ typedef enum
        EV_DOCUMENT_INFO_PERMISSIONS = 1 << 13,
        EV_DOCUMENT_INFO_N_PAGES = 1 << 14,
        EV_DOCUMENT_INFO_SECURITY = 1 << 15,
-       EV_DOCUMENT_INFO_PAPER_SIZE = 1 << 16
+       EV_DOCUMENT_INFO_PAPER_SIZE = 1 << 16,
+       EV_DOCUMENT_INFO_LICENSE = 1 << 17,
+
 } EvDocumentInfoFields;
 
 struct _EvDocumentInfo
@@ -121,6 +124,7 @@ struct _EvDocumentInfo
        int   n_pages;
        double paper_height;
        double paper_width;
+       EvDocumentLicense *license;
 
        /* Mask of all the valid fields */
        guint fields_mask;
@@ -130,6 +134,21 @@ GType           ev_document_info_get_type (void) G_GNUC_CONST;
 EvDocumentInfo *ev_document_info_copy     (EvDocumentInfo *info);
 void            ev_document_info_free     (EvDocumentInfo *info);
 
+/* EvDocumentLicense */
+#define EV_TYPE_DOCUMENT_LICENSE (ev_document_license_get_type())
+struct _EvDocumentLicense {
+       gchar *text;
+       gchar *uri;
+       gchar *web_statement;
+};
+GType              ev_document_license_get_type          (void) G_GNUC_CONST;
+EvDocumentLicense *ev_document_license_new               (void);
+EvDocumentLicense *ev_document_license_copy              (EvDocumentLicense *license);
+void               ev_document_license_free              (EvDocumentLicense *license);
+const gchar       *ev_document_license_get_text          (EvDocumentLicense *license);
+const gchar       *ev_document_license_get_uri           (EvDocumentLicense *license);
+const gchar       *ev_document_license_get_web_statement (EvDocumentLicense *license);
+
 G_END_DECLS
 
 #endif /* EV_DOCUMENT_INFO_H */
index 985fe8032417b963a39ca1253031abee1e7f6bed..b770f1092f34ee2dd73992dbd5fc798dbf0d0e84 100644 (file)
@@ -578,6 +578,8 @@ ev_document_info_copy (EvDocumentInfo *info)
        copy->ui_hints = info->ui_hints;
        copy->permissions = info->permissions;
        copy->n_pages = info->n_pages;
+       copy->license = ev_document_license_copy (info->license);
+
        copy->fields_mask = info->fields_mask;
 
        return copy;
@@ -598,10 +600,71 @@ ev_document_info_free (EvDocumentInfo *info)
        g_free (info->producer);
        g_free (info->linearized);
        g_free (info->security);
-       
+       ev_document_license_free (info->license);
+
        g_free (info);
 }
 
+/* EvDocumentLicense */
+EV_DEFINE_BOXED_TYPE (EvDocumentLicense, ev_document_license, ev_document_license_copy, ev_document_license_free)
+
+EvDocumentLicense *
+ev_document_license_new (void)
+{
+       return g_new0 (EvDocumentLicense, 1);
+}
+
+EvDocumentLicense *
+ev_document_license_copy (EvDocumentLicense *license)
+{
+       EvDocumentLicense *new_license;
+
+       if (!license)
+               return NULL;
+
+       new_license = ev_document_license_new ();
+
+       if (license->text)
+               new_license->text = g_strdup (license->text);
+       if (license->uri)
+               new_license->uri = g_strdup (license->uri);
+       if (license->web_statement)
+               new_license->web_statement = g_strdup (license->web_statement);
+
+       return new_license;
+}
+
+void
+ev_document_license_free (EvDocumentLicense *license)
+{
+       if (!license)
+               return;
+
+       g_free (license->text);
+       g_free (license->uri);
+       g_free (license->web_statement);
+
+       g_free (license);
+}
+
+const gchar *
+ev_document_license_get_text (EvDocumentLicense *license)
+{
+       return license->text;
+}
+
+const gchar *
+ev_document_license_get_uri (EvDocumentLicense *license)
+{
+       return license->uri;
+}
+
+const gchar *
+ev_document_license_get_web_statement (EvDocumentLicense *license)
+{
+       return license->web_statement;
+}
+
 /* EvRectangle */
 EV_DEFINE_BOXED_TYPE (EvRectangle, ev_rectangle, ev_rectangle_copy, ev_rectangle_free)