Merge lp:~davidc3/unity-scope-colourlovers/enhance-previews into lp:unity-scope-colourlovers

Proposed by David Callé
Status: Merged
Approved by: Michal Hruby
Approved revision: 31
Merged at revision: 28
Proposed branch: lp:~davidc3/unity-scope-colourlovers/enhance-previews
Merge into: lp:unity-scope-colourlovers
Diff against target: 139 lines (+45/-23)
3 files modified
data/colourlovers.scope.in (+1/-1)
src/unity_colourlovers_daemon.py (+44/-21)
tests/test_colourlovers.py (+0/-1)
To merge this branch: bzr merge lp:~davidc3/unity-scope-colourlovers/enhance-previews
Reviewer Review Type Date Requested Status
Michal Hruby (community) Approve
PS Jenkins bot (community) continuous-integration Approve
Review via email: mp+161173@code.launchpad.net

Commit message

Enhance previews, make search faster by only looking for patterns

Description of the change

Add more metadata to previews:
http://ubuntuone.com/2jTSUKoHkjg5e88iSyDfYZ

Only search for patterns (palettes and colours are useless without Gimp and Inkscape integration, which needs to be redone)

To post a comment you must log in.
31. By David Callé

Don't use variants in results

Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Approve (continuous-integration)
Revision history for this message
Michal Hruby (mhr3) wrote :

+1

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'data/colourlovers.scope.in'
2--- data/colourlovers.scope.in 2013-04-26 14:37:19 +0000
3+++ data/colourlovers.scope.in 2013-04-26 15:46:23 +0000
4@@ -4,7 +4,7 @@
5 Icon=/usr/share/icons/unity-icon-theme/places/svg/service-colourlovers.svg
6 _Keywords=colourlovers;color;colors;patterns;pattern;palette;palettes;
7 RequiredMetadata=
8-OptionalMetadata=
9+OptionalMetadata=description[s];comment_nb[s];date_created[s];rating[s];
10 Loader=/usr/share/unity-scopes/colourlovers/unity_colourlovers_daemon.py
11 RemoteContent=true
12 Type=graphics
13
14=== modified file 'src/unity_colourlovers_daemon.py'
15--- src/unity_colourlovers_daemon.py 2013-03-25 06:53:01 +0000
16+++ src/unity_colourlovers_daemon.py 2013-04-26 15:46:23 +0000
17@@ -21,6 +21,7 @@
18 import json
19 import gettext
20 import os
21+import datetime
22
23 APP_NAME = 'unity-scope-colourlovers'
24 LOCAL_PATH = '/usr/share/locale/'
25@@ -49,7 +50,19 @@
26
27 FILTERS = []
28
29-EXTRA_METADATA = []
30+m1 = {'id' :'description',
31+ 'type' :'s',
32+ 'field':Unity.SchemaFieldType.OPTIONAL}
33+m2 = {'id' :'comment_nb',
34+ 'type' :'s',
35+ 'field':Unity.SchemaFieldType.OPTIONAL}
36+m3 = {'id' :'rating',
37+ 'type' :'s',
38+ 'field':Unity.SchemaFieldType.OPTIONAL}
39+m4 = {'id' :'date_created',
40+ 'type' :'s',
41+ 'field':Unity.SchemaFieldType.OPTIONAL}
42+EXTRA_METADATA = [m1, m2, m3, m4]
43
44 def search(search, filters):
45 '''
46@@ -66,10 +79,10 @@
47 extras metadata fields (variant)
48 '''
49 results = []
50- if not search:
51+ if not search or len(search) < 2:
52 return results
53 search = urllib.parse.quote(search)
54- for cat in ['patterns', 'palettes', 'colors']:
55+ for cat in ['patterns']:
56 uri = '%sapi/%s?format=json&keywords=%s' % (SEARCH_URI, cat,search)
57 try:
58 req = urllib.request.Request(uri, headers={'User-Agent' : "Magic Browser"})
59@@ -84,7 +97,11 @@
60 results.append({'uri':d['url'],
61 'icon':d['imageUrl'],
62 'title':d['title'],
63- 'comment':d['userName']})
64+ 'comment':d['userName'],
65+ 'description':d['description'],
66+ 'rating':str(d['numHearts']),
67+ 'date_created':str(d['dateCreated']),
68+ 'comment_nb':str(d['numComments'])})
69 return results
70
71
72@@ -121,34 +138,40 @@
73 i['comment'] = ''
74 if not 'dnd_uri' in i or not i['dnd_uri'] or i['dnd_uri'] == '':
75 i['dnd_uri'] = i['uri']
76- i['metadata'] = {}
77- if EXTRA_METADATA:
78- for e in i:
79- for m in EXTRA_METADATA:
80- if m['id'] == e:
81- i['metadata'][e] = i[e]
82- i['metadata']['provider_credits'] = GLib.Variant('s', PROVIDER_CREDITS)
83- result = Unity.ScopeResult.create(str(i['uri']), str(i['icon']),
84- i['category'], i['result_type'],
85- str(i['mimetype']), str(i['title']),
86- str(i['comment']), str(i['dnd_uri']),
87- i['metadata'])
88- result_set.add_result(result)
89+ i['provider_credits'] = GLib.Variant('s', PROVIDER_CREDITS)
90+ result_set.add_result(**i)
91 except Exception as error:
92 print (error)
93
94 class Preview (Unity.ResultPreviewer):
95
96 def do_run(self):
97- preview = Unity.GenericPreview.new(self.result.title, '', None)
98+ if self.result.metadata and 'description' in self.result.metadata and self.result.metadata['description'].get_string() != '':
99+ description = self.result.metadata['description'].get_string()
100+ else:
101+ description = ''
102+ preview = Unity.GenericPreview.new(self.result.title, description.strip(), None)
103 preview.props.subtitle = _("By ") + self.result.comment
104 preview.props.image_source_uri = self.result.icon_hint
105+ if self.result.metadata and 'date_created' in self.result.metadata and self.result.metadata['date_created'].get_string() != '':
106+ # Format date
107+ date = datetime.datetime.strptime(self.result.metadata['date_created'].get_string(), '%Y-%m-%d %H:%M:%S')
108+ translated_date = date.strftime('%x')
109+ preview.add_info(Unity.InfoHint.new("date_created", _("Created"), None, translated_date))
110+ if self.result.metadata and 'comment_nb' in self.result.metadata and self.result.metadata['comment_nb'].get_string() != '':
111+ preview.add_info(Unity.InfoHint.new("comment_nb", _("Comments"), None, self.result.metadata['comment_nb'].get_string()))
112+ if self.result.metadata and 'rating' in self.result.metadata and self.result.metadata['rating'].get_string() != '':
113+ # Create hearts rating
114+ fullhearts = int(float(self.result.metadata['rating'].get_string())) * "\u2665"
115+ emptyhearts = (5 - int(float(self.result.metadata['rating'].get_string()))) * "\u2661"
116+ if self.result.metadata['rating'].get_string() != '0':
117+ preview.add_info(Unity.InfoHint.new("rating", _("Rating"), None, fullhearts+emptyhearts))
118+ if "/patterns/" in self.result.icon_hint:
119+ wallpaper_action = Unity.PreviewAction.new("wallpaper", _("Set as wallpaper"), None)
120+ preview.add_action(wallpaper_action)
121 icon = Gio.FileIcon.new (Gio.file_new_for_path(PROVIDER_ICON))
122 view_action = Unity.PreviewAction.new("view", _("View"), icon)
123 preview.add_action(view_action)
124- if "/patterns/" in self.result.icon_hint:
125- wallpaper_action = Unity.PreviewAction.new("wallpaper", _("Set as wallpaper"), None)
126- preview.add_action(wallpaper_action)
127 return preview
128
129
130
131=== modified file 'tests/test_colourlovers.py'
132--- tests/test_colourlovers.py 2013-03-25 06:53:01 +0000
133+++ tests/test_colourlovers.py 2013-04-26 15:46:23 +0000
134@@ -5,7 +5,6 @@
135 import shutil
136 import tempfile
137 from unittest import TestCase
138-
139 from gi.repository import Unity
140
141

Subscribers

People subscribed via source and target branches

to all changes: