summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--po/en.po6
-rw-r--r--res/lang/en.binbin26614 -> 26603 bytes
-rw-r--r--res/lang/eo.binbin25568 -> 25567 bytes
-rw-r--r--res/lang/isv.binbin25334 -> 25324 bytes
-rw-r--r--res/lang/sk.binbin25670 -> 25660 bytes
-rw-r--r--src/ui/linkinfo.c104
6 files changed, 54 insertions, 56 deletions
diff --git a/po/en.po b/po/en.po
index 481545cf..04b6ac19 100644
--- a/po/en.po
+++ b/po/en.po
@@ -3,7 +3,7 @@ msgstr "Preformatted text without a caption"
3 3
4# Link download progress message. 4# Link download progress message.
5msgid "doc.fetching" 5msgid "doc.fetching"
6msgstr "Fetching" 6msgstr "Loading"
7 7
8#, c-format 8#, c-format
9msgid "doc.archive" 9msgid "doc.archive"
@@ -933,10 +933,10 @@ msgid "dlg.certimport.nokey"
933msgstr "No Private Key" 933msgstr "No Private Key"
934 934
935msgid "link.hint.audio" 935msgid "link.hint.audio"
936msgstr "Play Audio" 936msgstr "Audio"
937 937
938msgid "link.hint.image" 938msgid "link.hint.image"
939msgstr "View Image" 939msgstr "Image"
940 940
941msgid "bookmark.title.blank" 941msgid "bookmark.title.blank"
942msgstr "Blank Page" 942msgstr "Blank Page"
diff --git a/res/lang/en.bin b/res/lang/en.bin
index 28c11997..942dfdc2 100644
--- a/res/lang/en.bin
+++ b/res/lang/en.bin
Binary files differ
diff --git a/res/lang/eo.bin b/res/lang/eo.bin
index d148e2f0..513c3a0b 100644
--- a/res/lang/eo.bin
+++ b/res/lang/eo.bin
Binary files differ
diff --git a/res/lang/isv.bin b/res/lang/isv.bin
index 56ed525c..26c23dc5 100644
--- a/res/lang/isv.bin
+++ b/res/lang/isv.bin
Binary files differ
diff --git a/res/lang/sk.bin b/res/lang/sk.bin
index bf13f594..4d91e8a6 100644
--- a/res/lang/sk.bin
+++ b/res/lang/sk.bin
Binary files differ
diff --git a/src/ui/linkinfo.c b/src/ui/linkinfo.c
index cb1404fc..fb608d41 100644
--- a/src/ui/linkinfo.c
+++ b/src/ui/linkinfo.c
@@ -51,10 +51,11 @@ iInt2 size_LinkInfo(const iLinkInfo *d) {
51 return add_I2(d->buf->size, init_I2(2 * hPad_LinkInfo_, 2 * vPad_LinkInfo_)); 51 return add_I2(d->buf->size, init_I2(2 * hPad_LinkInfo_, 2 * vPad_LinkInfo_));
52} 52}
53 53
54iBool update_LinkInfo(iLinkInfo *d, const iGmDocument *doc, iGmLinkId linkId, int maxWidth) { 54iBool update_LinkInfo(iLinkInfo *d, const iGmDocument *doc, iGmLinkId linkId, int maxWidth) {
55 if (!d) { 55 if (!d) {
56 return iFalse; 56 return iFalse;
57 } 57 }
58 const iBool isAnimated = prefs_App()->uiAnimations;
58 if (d->linkId != linkId || d->maxWidth != maxWidth) { 59 if (d->linkId != linkId || d->maxWidth != maxWidth) {
59 d->linkId = linkId; 60 d->linkId = linkId;
60 d->maxWidth = maxWidth; 61 d->maxWidth = maxWidth;
@@ -62,79 +63,81 @@ iBool update_LinkInfo(iLinkInfo *d, const iGmDocument *doc, iGmLinkId linkId, in
62 if (linkId) { 63 if (linkId) {
63 /* Measure and draw. */ 64 /* Measure and draw. */
64 if (targetValue_Anim(&d->opacity) < 1) { 65 if (targetValue_Anim(&d->opacity) < 1) {
65 setValue_Anim(&d->opacity, 1, 75); 66 setValue_Anim(&d->opacity, 1, isAnimated ? 75 : 0);
66 } 67 }
67 const int avail = iMax(minWidth_LinkInfo_, maxWidth) - 2 * hPad_LinkInfo_; 68 const int avail = iMax(minWidth_LinkInfo_, maxWidth) - 2 * hPad_LinkInfo_;
68 const iString *url = linkUrl_GmDocument(doc, linkId); 69 const iString *url = linkUrl_GmDocument(doc, linkId);
69 iUrl parts; 70 iUrl parts;
70 init_Url(&parts, url); 71 init_Url(&parts, url);
71 const int flags = linkFlags_GmDocument(doc, linkId); 72 const int flags = linkFlags_GmDocument(doc, linkId);
72 const enum iGmLinkScheme scheme = scheme_GmLinkFlag(flags); 73 const enum iGmLinkScheme scheme = scheme_GmLinkFlag(flags);
73 const iBool showHost = (flags & humanReadable_GmLinkFlag && 74 const iBool isImage = (flags & imageFileExtension_GmLinkFlag) != 0;
74 (!isEmpty_Range(&parts.host) || 75 const iBool isAudio = (flags & audioFileExtension_GmLinkFlag) != 0;
75 scheme == mailto_GmLinkScheme)); 76 // int fg = linkColor_GmDocument(doc, linkId,
76 const iBool showImage = (flags & imageFileExtension_GmLinkFlag) != 0; 77 // textHover_GmLinkPart);
77 const iBool showAudio = (flags & audioFileExtension_GmLinkFlag) != 0;
78// int fg = linkColor_GmDocument(doc, linkId, textHover_GmLinkPart);
79 iString str; 78 iString str;
80 init_String(&str); 79 init_String(&str);
81 if ((showHost || 80 /* Most important info first: the identity that will be used. */
82 (flags & (imageFileExtension_GmLinkFlag | audioFileExtension_GmLinkFlag))) && 81 const iGmIdentity *ident = identityForUrl_GmCerts(certs_App(), url);
83 scheme != mailto_GmLinkScheme) { 82 if (ident) {
83 appendFormat_String(&str, person_Icon " %s",
84 //escape_Color(tmBannerItemTitle_ColorId),
85 cstr_String(name_GmIdentity(ident)));
86 }
87 /* Possibly inlined content. */
88 if (isImage || isAudio) {
84 if (!isEmpty_String(&str)) { 89 if (!isEmpty_String(&str)) {
85 appendCStr_String(&str, "\n"); 90 appendCStr_String(&str, "\n");
86 } 91 }
87 if (showHost && scheme != gemini_GmLinkScheme) { 92 appendCStr_String(
88 append_String( 93 &str,
89 &str, collect_String(upper_String(collectNewRange_String(parts.scheme)))); 94 format_CStr(isImage ? photo_Icon " %s " : "\U0001f3b5 %s",
90 appendCStr_String(&str, " \u2014 "); 95 cstr_Lang(isImage ? "link.hint.image" : "link.hint.audio")));
91 } 96 }
92 if (showHost) { 97 if (!isEmpty_String(&str)) {
93 appendFormat_String(&str, "\x1b[1m%s\x1b[0m", cstr_Rangecc(parts.host)); 98 appendCStr_String(&str, " \u2014 ");
94 } 99 }
95 if (showImage || showAudio) { 100 /* Indicate non-Gemini schemes. */
96 appendFormat_String( 101 if (scheme == mailto_GmLinkScheme) {
97 &str, 102 appendCStr_String(&str, envelope_Icon " ");
98 "%s%s", 103 append_String(&str, url);
99 showHost ? " \u2014" : "", 104 }
100 format_CStr(showImage ? photo_Icon " %s " : "\U0001f3b5 %s", 105 else if (scheme != gemini_GmLinkScheme && !isEmpty_Range(&parts.host)) {
101 cstr_Lang(showImage ? "link.hint.image" : "link.hint.audio"))); 106 appendCStr_String(&str, globe_Icon " \x1b[1m");
102 } 107 appendRange_String(&str, (iRangecc){ constBegin_String(url),
108 parts.host.end });
109 appendCStr_String(&str, "\x1b[0m");
110 appendRange_String(&str, (iRangecc){ parts.path.start, constEnd_String(url) });
103 } 111 }
112 else if (scheme != gemini_GmLinkScheme) {
113 appendCStr_String(&str, globe_Icon " ");
114 append_String(&str, url);
115 }
116 else {
117 appendCStr_String(&str, "\x1b[1m");
118 appendRange_String(&str, parts.host);
119 appendCStr_String(&str, "\x1b[0m");
120 appendRange_String(&str, (iRangecc){ parts.path.start, constEnd_String(url) });
121 }
122 /* Date of last visit. */
104 if (flags & visited_GmLinkFlag) { 123 if (flags & visited_GmLinkFlag) {
105 iDate date; 124 iDate date;
106 init_Date(&date, linkTime_GmDocument(doc, linkId)); 125 init_Date(&date, linkTime_GmDocument(doc, linkId));
107 if (!isEmpty_String(&str)) { 126 if (!isEmpty_String(&str)) {
108 appendCStr_String(&str, " \u2014 "); 127 appendCStr_String(&str, " \u2014 ");
109 } 128 }
110// appendCStr_String(&str, escape_Color(tmQuoteIcon_ColorId));
111 iString *dateStr = format_Date(&date, "%b %d"); 129 iString *dateStr = format_Date(&date, "%b %d");
112 append_String(&str, dateStr); 130 append_String(&str, dateStr);
113 delete_String(dateStr); 131 delete_String(dateStr);
114 } 132 }
115 /* Identity that will be used. */ 133 /* Draw to a buffer, wrapped. */
116 const iGmIdentity *ident = identityForUrl_GmCerts(certs_App(), url);
117 if (ident) {
118 if (!isEmpty_String(&str)) {
119 appendCStr_String(&str, " \u2014 ");
120 }
121 appendFormat_String(&str, person_Icon " %s",
122 //escape_Color(tmBannerItemTitle_ColorId),
123 cstr_String(name_GmIdentity(ident)));
124 }
125 /* Show scheme and host. */
126 if (!isEmpty_String(&str)) {
127 appendCStr_String(&str, "\n");
128 }
129 appendRange_String(&str, range_String(url));
130 /* Draw the text. */
131 iWrapText wt = { .text = range_String(&str), .maxWidth = avail, .mode = word_WrapTextMode }; 134 iWrapText wt = { .text = range_String(&str), .maxWidth = avail, .mode = word_WrapTextMode };
132 d->buf = new_TextBuf(&wt, uiLabel_FontId, tmQuote_ColorId); 135 d->buf = new_TextBuf(&wt, uiLabel_FontId, tmQuote_ColorId);
133 deinit_String(&str); 136 deinit_String(&str);
134 } 137 }
135 else { 138 else {
136 if (targetValue_Anim(&d->opacity) > 0) { 139 if (targetValue_Anim(&d->opacity) > 0) {
137 setValue_Anim(&d->opacity, 0, 150); 140 setValue_Anim(&d->opacity, 0, isAnimated ? 150 : 0);
138 } 141 }
139 } 142 }
140 return iTrue; 143 return iTrue;
@@ -144,13 +147,8 @@ iBool update_LinkInfo(iLinkInfo *d, const iGmDocument *doc, iGmLinkId linkId, in
144 147
145void invalidate_LinkInfo(iLinkInfo *d) { 148void invalidate_LinkInfo(iLinkInfo *d) {
146 if (targetValue_Anim(&d->opacity) > 0) { 149 if (targetValue_Anim(&d->opacity) > 0) {
147 setValue_Anim(&d->opacity, 0, 150); 150 setValue_Anim(&d->opacity, 0, prefs_App()->uiAnimations ? 150 : 0);
148 } 151 }
149
150 // if (d->buf) {
151// delete_TextBuf(d->buf);
152// d->buf = NULL;
153// }
154} 152}
155 153
156void draw_LinkInfo(const iLinkInfo *d, iInt2 topLeft) { 154void draw_LinkInfo(const iLinkInfo *d, iInt2 topLeft) {