diff options
-rw-r--r-- | po/en.po | 6 | ||||
-rw-r--r-- | res/lang/en.bin | bin | 26614 -> 26603 bytes | |||
-rw-r--r-- | res/lang/eo.bin | bin | 25568 -> 25567 bytes | |||
-rw-r--r-- | res/lang/isv.bin | bin | 25334 -> 25324 bytes | |||
-rw-r--r-- | res/lang/sk.bin | bin | 25670 -> 25660 bytes | |||
-rw-r--r-- | src/ui/linkinfo.c | 104 |
6 files changed, 54 insertions, 56 deletions
@@ -3,7 +3,7 @@ msgstr "Preformatted text without a caption" | |||
3 | 3 | ||
4 | # Link download progress message. | 4 | # Link download progress message. |
5 | msgid "doc.fetching" | 5 | msgid "doc.fetching" |
6 | msgstr "Fetching" | 6 | msgstr "Loading" |
7 | 7 | ||
8 | #, c-format | 8 | #, c-format |
9 | msgid "doc.archive" | 9 | msgid "doc.archive" |
@@ -933,10 +933,10 @@ msgid "dlg.certimport.nokey" | |||
933 | msgstr "No Private Key" | 933 | msgstr "No Private Key" |
934 | 934 | ||
935 | msgid "link.hint.audio" | 935 | msgid "link.hint.audio" |
936 | msgstr "Play Audio" | 936 | msgstr "Audio" |
937 | 937 | ||
938 | msgid "link.hint.image" | 938 | msgid "link.hint.image" |
939 | msgstr "View Image" | 939 | msgstr "Image" |
940 | 940 | ||
941 | msgid "bookmark.title.blank" | 941 | msgid "bookmark.title.blank" |
942 | msgstr "Blank Page" | 942 | msgstr "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 | ||
54 | iBool update_LinkInfo(iLinkInfo *d, const iGmDocument *doc, iGmLinkId linkId, int maxWidth) { | 54 | iBool 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 | ||
145 | void invalidate_LinkInfo(iLinkInfo *d) { | 148 | void 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 | ||
156 | void draw_LinkInfo(const iLinkInfo *d, iInt2 topLeft) { | 154 | void draw_LinkInfo(const iLinkInfo *d, iInt2 topLeft) { |