diff options
Diffstat (limited to 'src/ui/root.c')
-rw-r--r-- | src/ui/root.c | 83 |
1 files changed, 37 insertions, 46 deletions
diff --git a/src/ui/root.c b/src/ui/root.c index bc2bc0fb..31176115 100644 --- a/src/ui/root.c +++ b/src/ui/root.c | |||
@@ -592,14 +592,21 @@ static void updateNavBarIdentity_(iWidget *navBar) { | |||
592 | 592 | ||
593 | static void updateNavDirButtons_(iWidget *navBar) { | 593 | static void updateNavDirButtons_(iWidget *navBar) { |
594 | const iHistory *history = history_DocumentWidget(document_App()); | 594 | const iHistory *history = history_DocumentWidget(document_App()); |
595 | const iBool atOldest = atOldest_History(history); | 595 | iBool atOldest = atOldest_History(history); |
596 | const iBool atNewest = atNewest_History(history); | 596 | iBool atNewest = atNewest_History(history); |
597 | setFlags_Widget(findChild_Widget(navBar, "navbar.back"), disabled_WidgetFlag, atOldest); | 597 | setFlags_Widget(findChild_Widget(navBar, "navbar.back"), disabled_WidgetFlag, atOldest); |
598 | setFlags_Widget(findChild_Widget(navBar, "navbar.forward"), disabled_WidgetFlag, atNewest); | 598 | setFlags_Widget(findChild_Widget(navBar, "navbar.forward"), disabled_WidgetFlag, atNewest); |
599 | iWidget *toolBar = findWidget_App("toolbar"); | 599 | iWidget *toolBar = findWidget_App("toolbar"); |
600 | if (toolBar) { | 600 | if (toolBar) { |
601 | iLabelWidget *back = findChild_Widget(toolBar, "toolbar.back"); | 601 | /* Reset the state. */ |
602 | iLabelWidget *fwd = findChild_Widget(toolBar, "toolbar.forward"); | 602 | for (int i = 0; i < 2; i++) { |
603 | const char *id = (i == 0 ? "toolbar.action1" : "toolbar.action2"); | ||
604 | setFlags_Widget(findChild_Widget(toolBar, id), disabled_WidgetFlag, iFalse); | ||
605 | setOutline_LabelWidget(findChild_Widget(toolBar, id), iFalse); | ||
606 | } | ||
607 | /* Disable certain actions. */ | ||
608 | iLabelWidget *back = findMenuItem_Widget(toolBar, "navigate.back"); | ||
609 | iLabelWidget *fwd = findMenuItem_Widget(toolBar, "navigate.forward"); | ||
603 | setFlags_Widget(as_Widget(back), disabled_WidgetFlag, atOldest); | 610 | setFlags_Widget(as_Widget(back), disabled_WidgetFlag, atOldest); |
604 | setOutline_LabelWidget(back, atOldest); | 611 | setOutline_LabelWidget(back, atOldest); |
605 | setFlags_Widget(as_Widget(fwd), disabled_WidgetFlag, atNewest); | 612 | setFlags_Widget(as_Widget(fwd), disabled_WidgetFlag, atNewest); |
@@ -1062,14 +1069,23 @@ static iBool handleSearchBarCommands_(iWidget *searchBar, const char *cmd) { | |||
1062 | } | 1069 | } |
1063 | 1070 | ||
1064 | #if defined (iPlatformMobile) | 1071 | #if defined (iPlatformMobile) |
1065 | static void dismissSidebar_(iWidget *sidebar, const char *toolButtonId) { | 1072 | |
1066 | if (isVisible_Widget(sidebar)) { | 1073 | static void updateToolBarActions_(iWidget *toolBar) { |
1067 | postCommandf_App("%s.toggle", cstr_String(id_Widget(sidebar))); | 1074 | const iPrefs *prefs = prefs_App(); |
1068 | // if (toolButtonId) { | 1075 | for (int i = 0; i < 2; i++) { |
1069 | // setFlags_Widget(findWidget_App(toolButtonId), noBackground_WidgetFlag, iTrue); | 1076 | int action = prefs->toolbarActions[i] |
1070 | // } | 1077 | ? prefs->toolbarActions[i] |
1071 | setVisualOffset_Widget(sidebar, height_Widget(sidebar), 250, easeIn_AnimFlag); | 1078 | : (i == 0 ? back_ToolbarAction : forward_ToolbarAction); |
1079 | iLabelWidget *button = | ||
1080 | findChild_Widget(toolBar, i == 0 ? "toolbar.action1" : "toolbar.action2"); | ||
1081 | if (button) { | ||
1082 | setFlags_Widget(as_Widget(button), disabled_WidgetFlag, iFalse); | ||
1083 | setOutline_LabelWidget(button, iFalse); | ||
1084 | updateTextCStr_LabelWidget(button, toolbarActions_Mobile[action].icon); | ||
1085 | setCommand_LabelWidget(button, collectNewCStr_String(toolbarActions_Mobile[action].command)); | ||
1086 | } | ||
1072 | } | 1087 | } |
1088 | refresh_Widget(toolBar); | ||
1073 | } | 1089 | } |
1074 | 1090 | ||
1075 | static iBool handleToolBarCommands_(iWidget *toolBar, const char *cmd) { | 1091 | static iBool handleToolBarCommands_(iWidget *toolBar, const char *cmd) { |
@@ -1081,13 +1097,6 @@ static iBool handleToolBarCommands_(iWidget *toolBar, const char *cmd) { | |||
1081 | return iTrue; | 1097 | return iTrue; |
1082 | } | 1098 | } |
1083 | else if (equal_Command(cmd, "toolbar.showview")) { | 1099 | else if (equal_Command(cmd, "toolbar.showview")) { |
1084 | /* TODO: Clean this up. */ | ||
1085 | // iWidget *sidebar = findWidget_App("sidebar"); | ||
1086 | // iWidget *sidebar2 = findWidget_App("sidebar2"); | ||
1087 | // dismissSidebar_(sidebar2, "toolbar.ident"); | ||
1088 | // const iBool isVisible = isVisible_Widget(sidebar); | ||
1089 | /* If a sidebar hasn't been shown yet, it's height is zero. */ | ||
1090 | // const int viewHeight = size_Root(get_Root()).y; | ||
1091 | if (arg_Command(cmd) >= 0) { | 1100 | if (arg_Command(cmd) >= 0) { |
1092 | postCommandf_App("sidebar.mode arg:%d show:1", arg_Command(cmd)); | 1101 | postCommandf_App("sidebar.mode arg:%d show:1", arg_Command(cmd)); |
1093 | } | 1102 | } |
@@ -1102,29 +1111,6 @@ static iBool handleToolBarCommands_(iWidget *toolBar, const char *cmd) { | |||
1102 | postCommandf_App("sidebar.toggle"); | 1111 | postCommandf_App("sidebar.toggle"); |
1103 | } | 1112 | } |
1104 | postCommand_App("preferences idents:1"); | 1113 | postCommand_App("preferences idents:1"); |
1105 | #if 0 | ||
1106 | /* TODO: Clean this up. */ | ||
1107 | iWidget *sidebar2 = findWidget_App("sidebar2"); | ||
1108 | //dismissSidebar_(sidebar, "toolbar.view"); | ||
1109 | if (isVisible_Widget(sidebar)) { | ||
1110 | postCommandf_App("sidebar.toggle"); | ||
1111 | } | ||
1112 | const iBool isVisible = isVisible_Widget(sidebar2); | ||
1113 | // setFlags_Widget(findChild_Widget(toolBar, "toolbar.ident"), noBackground_WidgetFlag, | ||
1114 | // isVisible); | ||
1115 | /* If a sidebar hasn't been shown yet, it's height is zero. */ | ||
1116 | const int viewHeight = size_Root(get_Root()).y; | ||
1117 | if (isVisible) { | ||
1118 | dismissSidebar_(sidebar2, NULL); | ||
1119 | } | ||
1120 | else { | ||
1121 | postCommand_App("sidebar2.mode arg:3 show:1"); | ||
1122 | int offset = height_Widget(sidebar2); | ||
1123 | if (offset == 0) offset = size_Root(get_Root()).y; | ||
1124 | setVisualOffset_Widget(sidebar2, offset, 0, 0); | ||
1125 | setVisualOffset_Widget(sidebar2, 0, 400, easeOut_AnimFlag | softer_AnimFlag); | ||
1126 | } | ||
1127 | #endif | ||
1128 | return iTrue; | 1114 | return iTrue; |
1129 | } | 1115 | } |
1130 | else if (equal_Command(cmd, "sidebar.mode.changed")) { | 1116 | else if (equal_Command(cmd, "sidebar.mode.changed")) { |
@@ -1132,8 +1118,13 @@ static iBool handleToolBarCommands_(iWidget *toolBar, const char *cmd) { | |||
1132 | updateTextCStr_LabelWidget(viewTool, icon_SidebarMode(arg_Command(cmd))); | 1118 | updateTextCStr_LabelWidget(viewTool, icon_SidebarMode(arg_Command(cmd))); |
1133 | return iFalse; | 1119 | return iFalse; |
1134 | } | 1120 | } |
1121 | else if (equal_Command(cmd, "toolbar.actions.changed")) { | ||
1122 | updateToolBarActions_(toolBar); | ||
1123 | return iFalse; | ||
1124 | } | ||
1135 | return iFalse; | 1125 | return iFalse; |
1136 | } | 1126 | } |
1127 | |||
1137 | #endif /* defined (iPlatformMobile) */ | 1128 | #endif /* defined (iPlatformMobile) */ |
1138 | 1129 | ||
1139 | static iLabelWidget *newLargeIcon_LabelWidget(const char *text, const char *cmd) { | 1130 | static iLabelWidget *newLargeIcon_LabelWidget(const char *text, const char *cmd) { |
@@ -1552,14 +1543,14 @@ void createUserInterface_Root(iRoot *d) { | |||
1552 | "toolbar.close"); | 1543 | "toolbar.close"); |
1553 | #else | 1544 | #else |
1554 | setId_Widget(addChildFlags_Widget(toolBar, | 1545 | setId_Widget(addChildFlags_Widget(toolBar, |
1555 | iClob(newLargeIcon_LabelWidget(backArrow_Icon, "navigate.back")), | 1546 | iClob(newLargeIcon_LabelWidget("", "...")), |
1556 | frameless_WidgetFlag), | 1547 | frameless_WidgetFlag), |
1557 | "toolbar.back"); | 1548 | "toolbar.action1"); |
1558 | #endif | 1549 | #endif |
1559 | setId_Widget(addChildFlags_Widget(toolBar, | 1550 | setId_Widget(addChildFlags_Widget(toolBar, |
1560 | iClob(newLargeIcon_LabelWidget(forwardArrow_Icon, "navigate.forward")), | 1551 | iClob(newLargeIcon_LabelWidget("", "...")), |
1561 | frameless_WidgetFlag), | 1552 | frameless_WidgetFlag), |
1562 | "toolbar.forward"); | 1553 | "toolbar.action2"); |
1563 | iWidget *identButton; | 1554 | iWidget *identButton; |
1564 | setId_Widget(identButton = addChildFlags_Widget( | 1555 | setId_Widget(identButton = addChildFlags_Widget( |
1565 | toolBar, | 1556 | toolBar, |
@@ -1589,10 +1580,10 @@ void createUserInterface_Root(iRoot *d) { | |||
1589 | setId_Widget(as_Widget(menuButton), "toolbar.navmenu"); | 1580 | setId_Widget(as_Widget(menuButton), "toolbar.navmenu"); |
1590 | addChildFlags_Widget(toolBar, iClob(menuButton), frameless_WidgetFlag); | 1581 | addChildFlags_Widget(toolBar, iClob(menuButton), frameless_WidgetFlag); |
1591 | iForEach(ObjectList, i, children_Widget(toolBar)) { | 1582 | iForEach(ObjectList, i, children_Widget(toolBar)) { |
1592 | iLabelWidget *btn = i.object; | ||
1593 | setFlags_Widget(i.object, noBackground_WidgetFlag, iTrue); | 1583 | setFlags_Widget(i.object, noBackground_WidgetFlag, iTrue); |
1594 | } | 1584 | } |
1595 | updateToolbarColors_Root(d); | 1585 | updateToolbarColors_Root(d); |
1586 | updateToolBarActions_(toolBar); | ||
1596 | const iMenuItem items[] = { | 1587 | const iMenuItem items[] = { |
1597 | { book_Icon " ${sidebar.bookmarks}", 0, 0, "toolbar.showview arg:0" }, | 1588 | { book_Icon " ${sidebar.bookmarks}", 0, 0, "toolbar.showview arg:0" }, |
1598 | { star_Icon " ${sidebar.feeds}", 0, 0, "toolbar.showview arg:1" }, | 1589 | { star_Icon " ${sidebar.feeds}", 0, 0, "toolbar.showview arg:1" }, |