summaryrefslogtreecommitdiff
path: root/src/ui/window.c
diff options
context:
space:
mode:
authorJaakko Keränen <jaakko.keranen@iki.fi>2020-08-29 08:28:22 +0300
committerJaakko Keränen <jaakko.keranen@iki.fi>2020-08-29 08:28:22 +0300
commit83baf4eae5ea3b6c378acdfa07b9e9eeaf5de85b (patch)
tree47fcb6a4f27efab1e049da64e16ba9decac6a438 /src/ui/window.c
parent55e23dd24bf29c8aa6c257f74bac9b0b10c7e391 (diff)
Visualize identity in nav bar
Diffstat (limited to 'src/ui/window.c')
-rw-r--r--src/ui/window.c34
1 files changed, 26 insertions, 8 deletions
diff --git a/src/ui/window.c b/src/ui/window.c
index bdf80e52..19fe02ed 100644
--- a/src/ui/window.c
+++ b/src/ui/window.c
@@ -22,18 +22,18 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
22 22
23#include "window.h" 23#include "window.h"
24 24
25#include "labelwidget.h"
26#include "inputwidget.h"
27#include "documentwidget.h"
28#include "sidebarwidget.h"
25#include "embedded.h" 29#include "embedded.h"
26#include "app.h"
27#include "command.h" 30#include "command.h"
28#include "paint.h" 31#include "paint.h"
29#include "text.h"
30#include "util.h" 32#include "util.h"
33#include "../app.h"
31#include "../visited.h" 34#include "../visited.h"
32#include "labelwidget.h" 35#include "../gmcerts.h"
33#include "inputwidget.h" 36#include "../gmutil.h"
34#include "documentwidget.h"
35#include "sidebarwidget.h"
36#include "gmutil.h"
37#if defined (iPlatformMsys) 37#if defined (iPlatformMsys)
38# include "../win32.h" 38# include "../win32.h"
39#endif 39#endif
@@ -150,7 +150,7 @@ static const iMenuItem helpMenuItems[] = {
150#endif 150#endif
151 151
152static const iMenuItem identityButtonMenuItems[] = { 152static const iMenuItem identityButtonMenuItems[] = {
153 { "No Active Identity", 0, 0, NULL }, 153 { "No Active Identity", 0, 0, "ident.showactive" },
154 { "---", 0, 0, NULL }, 154 { "---", 0, 0, NULL },
155#if !defined (iHaveNativeMenus) 155#if !defined (iHaveNativeMenus)
156 { "New Identity...", SDLK_n, KMOD_PRIMARY | KMOD_SHIFT, "ident.new" }, 156 { "New Identity...", SDLK_n, KMOD_PRIMARY | KMOD_SHIFT, "ident.new" },
@@ -166,6 +166,21 @@ static const iMenuItem identityButtonMenuItems[] = {
166static const char *reloadCStr_ = "\U0001f503"; 166static const char *reloadCStr_ = "\U0001f503";
167static const char *stopCStr_ = uiTextCaution_ColorEscape "\U0001f310"; 167static const char *stopCStr_ = uiTextCaution_ColorEscape "\U0001f310";
168 168
169static void updateNavBarIdentity_(iWidget *navBar) {
170 const iGmIdentity *ident =
171 identityForUrl_GmCerts(certs_App(), url_DocumentWidget(document_App()));
172 iWidget *button = findChild_Widget(navBar, "navbar.ident");
173 setFlags_Widget(button, selected_WidgetFlag, ident != NULL);
174 /* Update menu. */
175 iLabelWidget *idItem = child_Widget(findChild_Widget(button, "menu"), 0);
176 setTextCStr_LabelWidget(
177 idItem,
178 ident ? format_CStr(uiTextAction_ColorEscape "%s",
179 cstrCollect_String(subject_TlsCertificate(ident->cert)))
180 : "No Active Identity");
181 setFlags_Widget(as_Widget(idItem), disabled_WidgetFlag, !ident);
182}
183
169static iBool handleNavBarCommands_(iWidget *navBar, const char *cmd) { 184static iBool handleNavBarCommands_(iWidget *navBar, const char *cmd) {
170 if (equal_Command(cmd, "window.resized")) { 185 if (equal_Command(cmd, "window.resized")) {
171 const iBool isNarrow = width_Rect(bounds_Widget(navBar)) / gap_UI < 140; 186 const iBool isNarrow = width_Rect(bounds_Widget(navBar)) / gap_UI < 140;
@@ -203,6 +218,7 @@ static iBool handleNavBarCommands_(iWidget *navBar, const char *cmd) {
203 const iString *urlStr = collect_String(suffix_Command(cmd, "url")); 218 const iString *urlStr = collect_String(suffix_Command(cmd, "url"));
204 setText_InputWidget(url, urlStr); 219 setText_InputWidget(url, urlStr);
205 updateTextCStr_LabelWidget(reloadButton, reloadCStr_); 220 updateTextCStr_LabelWidget(reloadButton, reloadCStr_);
221 updateNavBarIdentity_(navBar);
206 return iFalse; 222 return iFalse;
207 } 223 }
208 else if (equal_Command(cmd, "document.request.cancelled")) { 224 else if (equal_Command(cmd, "document.request.cancelled")) {
@@ -227,6 +243,7 @@ static iBool handleNavBarCommands_(iWidget *navBar, const char *cmd) {
227 setText_InputWidget(findChild_Widget(navBar, "url"), url_DocumentWidget(doc)); 243 setText_InputWidget(findChild_Widget(navBar, "url"), url_DocumentWidget(doc));
228 updateTextCStr_LabelWidget(findChild_Widget(navBar, "reload"), 244 updateTextCStr_LabelWidget(findChild_Widget(navBar, "reload"),
229 isRequestOngoing_DocumentWidget(doc) ? stopCStr_ : reloadCStr_); 245 isRequestOngoing_DocumentWidget(doc) ? stopCStr_ : reloadCStr_);
246 updateNavBarIdentity_(navBar);
230 } 247 }
231 } 248 }
232 else if (equal_Command(cmd, "mouse.clicked") && arg_Command(cmd)) { 249 else if (equal_Command(cmd, "mouse.clicked") && arg_Command(cmd)) {
@@ -317,6 +334,7 @@ static void setupUserInterface_Window(iWindow *d) {
317 makeMenuButton_LabelWidget("\U0001f464", identityButtonMenuItems, iElemCount(identityButtonMenuItems)); 334 makeMenuButton_LabelWidget("\U0001f464", identityButtonMenuItems, iElemCount(identityButtonMenuItems));
318 setAlignVisually_LabelWidget(idMenu, iTrue); 335 setAlignVisually_LabelWidget(idMenu, iTrue);
319 addChild_Widget(navBar, iClob(idMenu)); 336 addChild_Widget(navBar, iClob(idMenu));
337 setId_Widget(as_Widget(idMenu), "navbar.ident");
320 iLabelWidget *lock = 338 iLabelWidget *lock =
321 addChildFlags_Widget(navBar, 339 addChildFlags_Widget(navBar,
322 iClob(newIcon_LabelWidget("\U0001f513", 0, 0, "server.showcert")), 340 iClob(newIcon_LabelWidget("\U0001f513", 0, 0, "server.showcert")),