Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCarlos Garcia Campos <carlosgc@gnome.org>2009-10-25 18:28:33 (GMT)
committer Carlos Garcia Campos <carlosgc@gnome.org>2009-10-25 18:28:33 (GMT)
commitb0f71f598fe56d88c43110d1e7fe7b7b396bbdaa (patch)
treec06d7e3f41faa6b45e4e533d1d89c51373b0b818
parent0ea65770661ff5769d7539afb77dd634a78e9fd4 (diff)
[libdocument] Add EvDocumentLicense to store information about the document license
See bgo#349173
-rw-r--r--libdocument/ev-document-info.h21
-rw-r--r--libdocument/ev-document.c65
2 files changed, 84 insertions, 2 deletions
diff --git a/libdocument/ev-document-info.h b/libdocument/ev-document-info.h
index a75f681..eee6178 100644
--- a/libdocument/ev-document-info.h
+++ b/libdocument/ev-document-info.h
@@ -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 */
diff --git a/libdocument/ev-document.c b/libdocument/ev-document.c
index 985fe80..b770f10 100644
--- a/libdocument/ev-document.c
+++ b/libdocument/ev-document.c
@@ -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)