drive: add xdg office icons to xdg desktop files

This commit is contained in:
Pau Rodriguez-Estivill 2020-09-24 15:53:42 +02:00 committed by Nick Craig-Wood
parent 671dd047f7
commit f0bf9cfda1

View File

@ -73,6 +73,7 @@ const (
partialFields = "id,name,size,md5Checksum,trashed,explicitlyTrashed,modifiedTime,createdTime,mimeType,parents,webViewLink,shortcutDetails,exportLinks" partialFields = "id,name,size,md5Checksum,trashed,explicitlyTrashed,modifiedTime,createdTime,mimeType,parents,webViewLink,shortcutDetails,exportLinks"
listRGrouping = 50 // number of IDs to search at once when using ListR listRGrouping = 50 // number of IDs to search at once when using ListR
listRInputBuffer = 1000 // size of input buffer when using ListR listRInputBuffer = 1000 // size of input buffer when using ListR
defaultXDGIcon = "text-html"
) )
// Globals // Globals
@ -128,6 +129,12 @@ var (
_mimeTypeCustomTransform = map[string]string{ _mimeTypeCustomTransform = map[string]string{
"application/vnd.google-apps.script+json": "application/json", "application/vnd.google-apps.script+json": "application/json",
} }
_mimeTypeToXDGLinkIcons = map[string]string{
"application/vnd.google-apps.document": "x-office-document",
"application/vnd.google-apps.drawing": "x-office-drawing",
"application/vnd.google-apps.presentation": "x-office-presentation",
"application/vnd.google-apps.spreadsheet": "x-office-spreadsheet",
}
fetchFormatsOnce sync.Once // make sure we fetch the export/import formats only once fetchFormatsOnce sync.Once // make sure we fetch the export/import formats only once
_exportFormats map[string][]string // allowed export MIME type conversions _exportFormats map[string][]string // allowed export MIME type conversions
_importFormats map[string][]string // allowed import MIME type conversions _importFormats map[string][]string // allowed import MIME type conversions
@ -1294,11 +1301,15 @@ func (f *Fs) newLinkObject(remote string, info *drive.File, extension, exportMim
if t == nil { if t == nil {
return nil, errors.Errorf("unsupported link type %s", exportMimeType) return nil, errors.Errorf("unsupported link type %s", exportMimeType)
} }
xdgIcon := _mimeTypeToXDGLinkIcons[info.MimeType]
if xdgIcon == "" {
xdgIcon = defaultXDGIcon
}
var buf bytes.Buffer var buf bytes.Buffer
err := t.Execute(&buf, struct { err := t.Execute(&buf, struct {
URL, Title string URL, Title, XDGIcon string
}{ }{
info.WebViewLink, info.Name, info.WebViewLink, info.Name, xdgIcon,
}) })
if err != nil { if err != nil {
return nil, errors.Wrap(err, "executing template failed") return nil, errors.Wrap(err, "executing template failed")
@ -3750,7 +3761,7 @@ URL={{ .URL }}{{"\r"}}
Encoding=UTF-8 Encoding=UTF-8
Name={{ .Title }} Name={{ .Title }}
URL={{ .URL }} URL={{ .URL }}
Icon=text-html Icon={{ .XDGIcon }}
Type=Link Type=Link
` `
htmlTemplate = `<html> htmlTemplate = `<html>