[gnome-documents/gnome-3-24] documents: Add property to denote the URI to be loaded by the preview
- From: Debarshi Ray <debarshir src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-documents/gnome-3-24] documents: Add property to denote the URI to be loaded by the preview
- Date: Thu, 20 Apr 2017 14:34:56 +0000 (UTC)
commit e4a6c789dff549060c6463138cde1dec30a82ce1
Author: Debarshi Ray <debarshir gnome org>
Date: Thu Mar 30 17:25:44 2017 +0200
documents: Add property to denote the URI to be loaded by the preview
We want to open ODFs and OOXMLs from OneDrive using LOKDocView, not
EvView. Therefore, the logic to convert a remote document into
something that can be loaded by the different preview widgets can no
longer be hidden inside GdPdfLoader. LOKDocView needs to know the URI
it can load without hitting the network.
For local and ownCloud this is the same as the actual URI because they
are natively handled by GIO. The property is not defined for Google
because it is still handled entirely by GdPdfLoader.
This changes the caching for SkydriveDocuments. The old scheme was:
~/.cache/gnome-documents/gnome-documents-<g_str_hash(id)>.pdf
The new structure is:
~/.cache/gnome-documents/skydrive/<SHA1(id)>.<original-extension>
The new scheme namespaces each document type and uses a hash function
that can be easily replicated by other tools for debugging. This is a
good time to change this because we are about to invalidate existing
caches by not using the ".pdf" extension for all SkydriveDocuments.
https://bugzilla.gnome.org/show_bug.cgi?id=774937
src/documents.js | 24 +++++++++++++++++++++++-
src/epubview.js | 2 +-
src/lokview.js | 2 +-
3 files changed, 25 insertions(+), 3 deletions(-)
---
diff --git a/src/documents.js b/src/documents.js
index 586abd3..7359dcf 100644
--- a/src/documents.js
+++ b/src/documents.js
@@ -234,6 +234,7 @@ const DocCommon = new Lang.Class({
_init: function(cursor) {
this.id = null;
this.uri = null;
+ this.uriToLoad = null;
this.filename = null;
this.name = null;
this.author = null;
@@ -625,7 +626,7 @@ const DocCommon = new Lang.Class({
return;
}
- GdPrivate.pdf_loader_load_uri_async(this.uri, passwd, cancellable, Lang.bind(this,
+ GdPrivate.pdf_loader_load_uri_async(this.uriToLoad, passwd, cancellable, Lang.bind(this,
function(source, res) {
try {
let docModel = GdPrivate.pdf_loader_load_uri_finish(res);
@@ -751,6 +752,7 @@ const LocalDocument = new Lang.Class({
populateFromCursor: function(cursor) {
this.parent(cursor);
+ this.uriToLoad = this.uri;
if (!Application.application.gettingStartedLocation)
return;
@@ -1015,6 +1017,11 @@ const OwncloudDocument = new Lang.Class({
this.defaultAppName = this.defaultApp.get_name();
},
+ populateFromCursor: function(cursor) {
+ this.parent(cursor);
+ this.uriToLoad = this.uri;
+ },
+
createThumbnail: function(callback) {
GdPrivate.queue_thumbnail_job_for_file_async(this._file, Lang.bind(this,
function(object, res) {
@@ -1075,6 +1082,21 @@ const SkydriveDocument = new Lang.Class({
this.sourceName = _("OneDrive");
},
+ populateFromCursor: function(cursor) {
+ this.parent(cursor);
+
+ let localDir = GLib.build_filenamev([GLib.get_user_cache_dir(), "gnome-documents", "skydrive"]);
+
+ let identifierHash = GLib.compute_checksum_for_string(GLib.ChecksumType.SHA1, this.identifier, -1);
+ let filenameStripped = GdPrivate.filename_strip_extension(this.filename);
+ let extension = this.filename.substring(filenameStripped.length);
+ let localFilename = identifierHash + extension;
+
+ let localPath = GLib.build_filenamev([localDir, localFilename]);
+ let localFile = Gio.File.new_for_path(localPath);
+ this.uriToLoad = localFile.get_uri();
+ },
+
_createZpjEntry: function(cancellable, callback) {
let source = Application.sourceManager.getItemById(this.resourceUrn);
diff --git a/src/epubview.js b/src/epubview.js
index 28c72cb..87d580c 100644
--- a/src/epubview.js
+++ b/src/epubview.js
@@ -85,7 +85,7 @@ const EPUBView = new Lang.Class({
onLoadFinished: function(manager, doc) {
this.parent(manager, doc);
- let f = Gio.File.new_for_uri(doc.uri);
+ let f = Gio.File.new_for_uri(doc.uriToLoad);
this._epubdoc = new Gepub.Doc({ path: f.get_path() });
this._epubdoc.init(null);
diff --git a/src/lokview.js b/src/lokview.js
index 371086a..ae98d5d 100644
--- a/src/lokview.js
+++ b/src/lokview.js
@@ -148,7 +148,7 @@ const LOKView = new Lang.Class({
if (!isAvailable())
return;
this._doc = doc;
- this._lokview.open_document(doc.uri, '{}', null, Lang.bind(this, this._onDocumentOpened));
+ this._lokview.open_document(doc.uriToLoad, '{}', null, Lang.bind(this, this._onDocumentOpened));
this._progressBar.show();
},
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]