From 1174f2e9318a58602baccdfb3e2465645d263601 Mon Sep 17 00:00:00 2001 From: Jaakko Keränen Date: Mon, 22 Feb 2021 11:55:13 +0200 Subject: iOS: Font adjustments --- src/app.c | 4 ++-- src/ui/sidebarwidget.c | 16 +++++++++----- src/ui/text.c | 1 + src/ui/text.h | 1 + src/ui/util.c | 57 +++++++++++++++++++++++++++++++++----------------- src/ui/window.c | 32 +++++++++++++++++----------- 6 files changed, 73 insertions(+), 38 deletions(-) (limited to 'src') diff --git a/src/app.c b/src/app.c index 08273591..0f642314 100644 --- a/src/app.c +++ b/src/app.c @@ -195,11 +195,11 @@ static iString *serializePrefs_App_(const iApp *d) { #endif } /* Sidebars. */ { - if (isVisible_Widget(sidebar)) { + if (isVisible_Widget(sidebar) && deviceType_App() != phone_AppDeviceType) { appendCStr_String(str, "sidebar.toggle\n"); } appendFormat_String(str, "sidebar.mode arg:%d\n", mode_SidebarWidget(sidebar)); - if (isVisible_Widget(sidebar2)) { + if (isVisible_Widget(sidebar2) && deviceType_App() != phone_AppDeviceType) { appendCStr_String(str, "sidebar2.toggle\n"); } appendFormat_String(str, "sidebar2.mode arg:%d\n", mode_SidebarWidget(sidebar2)); diff --git a/src/ui/sidebarwidget.c b/src/ui/sidebarwidget.c index 4857f025..5441381a 100644 --- a/src/ui/sidebarwidget.c +++ b/src/ui/sidebarwidget.c @@ -96,6 +96,7 @@ struct Impl_SidebarWidget { iLabelWidget * modeButtons[max_SidebarMode]; int maxButtonLabelWidth; int width; + int itemFonts[2]; iWidget * resizer; iWidget * menu; iSidebarItem * contextItem; /* list item accessed in the context menu */ @@ -408,7 +409,7 @@ static void updateItems_SidebarWidget_(iSidebarWidget *d) { static void updateItemHeight_SidebarWidget_(iSidebarWidget *d) { const float heights[max_SidebarMode] = { 1.333f, 2.333f, 1.333f, 3.5f, 1.2f }; - setItemHeight_ListWidget(d->list, heights[d->mode] * lineHeight_Text(uiContent_FontId)); + setItemHeight_ListWidget(d->list, heights[d->mode] * lineHeight_Text(d->itemFonts[0])); } iBool setMode_SidebarWidget(iSidebarWidget *d, enum iSidebarMode mode) { @@ -473,9 +474,14 @@ void init_SidebarWidget(iSidebarWidget *d, enum iSidebarSide side) { iZap(d->modeScroll); d->side = side; d->mode = -1; - d->width = 60 * gap_UI; #if defined (iPlatformAppleMobile) d->width = 73 * gap_UI; + d->itemFonts[0] = defaultBig_FontId; + d->itemFonts[1] = defaultBigBold_FontId; +#else + d->width = 60 * gap_UI; + d->itemFonts[0] = uiContent_FontId; + d->itemFonts[1] = uiContentBold_FontId; #endif setFlags_Widget(w, fixedWidth_WidgetFlag, iTrue); iWidget *vdiv = makeVDiv_Widget(); @@ -1219,7 +1225,7 @@ static void draw_SidebarItem_(const iSidebarItem *d, iPaint *p, iRect itemRect, const int itemHeight = height_Rect(itemRect); const int iconColor = isHover ? (isPressing ? uiTextPressed_ColorId : uiIconHover_ColorId) : uiIcon_ColorId; - const int font = d->isBold ? uiContentBold_FontId : uiContent_FontId; + const int font = sidebar->itemFonts[d->isBold ? 1 : 0]; int bg = uiBackground_ColorId; if (isHover) { bg = isPressing ? uiBackgroundPressed_ColorId @@ -1250,7 +1256,7 @@ static void draw_SidebarItem_(const iSidebarItem *d, iPaint *p, iRect itemRect, else if (sidebar->mode == feeds_SidebarMode) { const int fg = isHover ? (isPressing ? uiTextPressed_ColorId : uiTextFramelessHover_ColorId) : uiText_ColorId; - const int iconPad = 11 * gap_UI; + const int iconPad = 12 * gap_UI; if (d->listItem.isSeparator) { if (d != constItem_ListWidget(list, 0)) { drawHLine_Paint(p, @@ -1268,7 +1274,7 @@ static void draw_SidebarItem_(const iSidebarItem *d, iPaint *p, iRect itemRect, } else { const iBool isUnread = (d->indent != 0); - const int titleFont = isUnread ? uiContentBold_FontId : uiContent_FontId; + const int titleFont = sidebar->itemFonts[isUnread ? 1 : 0]; const int h1 = lineHeight_Text(uiLabel_FontId); const int h2 = lineHeight_Text(titleFont); iRect iconArea = { addY_I2(pos, 0), init_I2(iconPad, itemHeight) }; diff --git a/src/ui/text.c b/src/ui/text.c index 9f9d4396..8736ed18 100644 --- a/src/ui/text.c +++ b/src/ui/text.c @@ -262,6 +262,7 @@ static void initFonts_Text_(iText *d) { { &fontSourceSansProRegular_Embedded, uiSize * 1.125f, 1.0f, defaultMediumSymbols_FontId }, { &fontSourceSansProBold_Embedded, uiSize * 1.125f, 1.0f, defaultMediumSymbols_FontId }, { &fontSourceSansProRegular_Embedded, uiSize * 1.333f, 1.0f, defaultBigSymbols_FontId }, + { &fontSourceSansProBold_Embedded, uiSize * 1.333f, 1.0f, defaultBigSymbols_FontId }, { &fontSourceSansProRegular_Embedded, uiSize * 1.666f, 1.0f, defaultLargeSymbols_FontId }, { &fontIosevkaTermExtended_Embedded, uiSize * 0.866f, 1.0f, defaultSymbols_FontId }, { &fontSourceSansProRegular_Embedded, textSize, scaling, symbols_FontId }, diff --git a/src/ui/text.h b/src/ui/text.h index fd8f8da2..92da3e5d 100644 --- a/src/ui/text.h +++ b/src/ui/text.h @@ -35,6 +35,7 @@ enum iFontId { defaultMedium_FontId, defaultMediumBold_FontId, defaultBig_FontId, + defaultBigBold_FontId, defaultLarge_FontId, defaultMonospace_FontId, defaultContentSized_FontId, diff --git a/src/ui/util.c b/src/ui/util.c index 4f059dc7..7da68fa5 100644 --- a/src/ui/util.c +++ b/src/ui/util.c @@ -428,6 +428,17 @@ static iBool menuHandler_(iWidget *menu, const char *cmd) { return iFalse; } +static iWidget *makeMenuSeparator_(void) { + iWidget *sep = new_Widget(); + setBackgroundColor_Widget(sep, uiSeparator_ColorId); + sep->rect.size.y = gap_UI / 3; + if (deviceType_App() != desktop_AppDeviceType) { + sep->rect.size.y = gap_UI / 2; + } + setFlags_Widget(sep, hover_WidgetFlag | fixedHeight_WidgetFlag, iTrue); + return sep; +} + iWidget *makeMenu_Widget(iWidget *parent, const iMenuItem *items, size_t n) { iWidget *menu = new_Widget(); setFrameColor_Widget(menu, uiSeparator_ColorId); @@ -443,13 +454,7 @@ iWidget *makeMenu_Widget(iWidget *parent, const iMenuItem *items, size_t n) { for (size_t i = 0; i < n; ++i) { const iMenuItem *item = &items[i]; if (equal_CStr(item->label, "---")) { - iWidget *sep = addChild_Widget(menu, iClob(new_Widget())); - setBackgroundColor_Widget(sep, uiSeparator_ColorId); - sep->rect.size.y = gap_UI / 3; - if (deviceType_App() != desktop_AppDeviceType) { - sep->rect.size.y = gap_UI / 2; - } - setFlags_Widget(sep, hover_WidgetFlag | fixedHeight_WidgetFlag, iTrue); + addChild_Widget(menu, iClob(makeMenuSeparator_())); } else { iLabelWidget *label = addChildFlags_Widget( @@ -462,6 +467,12 @@ iWidget *makeMenu_Widget(iWidget *parent, const iMenuItem *items, size_t n) { } } } + if (deviceType_App() == phone_AppDeviceType) { + addChild_Widget(menu, iClob(makeMenuSeparator_())); + setFont_LabelWidget(addChildFlags_Widget(menu, iClob(new_LabelWidget("Cancel", "cancel")), + frameless_WidgetFlag | alignLeft_WidgetFlag), + defaultBig_FontId); + } addChild_Widget(parent, iClob(menu)); setCommandHandler_Widget(menu, menuHandler_); iWidget *cancel = addAction_Widget(menu, SDLK_ESCAPE, 0, "cancel"); @@ -471,29 +482,33 @@ iWidget *makeMenu_Widget(iWidget *parent, const iMenuItem *items, size_t n) { } void openMenu_Widget(iWidget *d, iInt2 coord) { + const iInt2 rootSize = rootSize_Window(get_Window()); + const iBool isPortraitPhone = (deviceType_App() == phone_AppDeviceType && isPortrait_App()); /* Menu closes when commands are emitted, so handle any pending ones beforehand. */ postCommand_App("cancel"); /* dismiss any other menus */ processEvents_App(postedEventsOnly_AppEventMode); setFlags_Widget(d, hidden_WidgetFlag, iFalse); setFlags_Widget(d, commandOnMouseMiss_WidgetFlag, iTrue); setFlags_Widget(findChild_Widget(d, "menu.cancel"), disabled_WidgetFlag, iFalse); - if (deviceType_App() == phone_AppDeviceType) { - if (isPortrait_App()) { - setFlags_Widget(d, arrangeWidth_WidgetFlag | resizeChildrenToWidestChild_WidgetFlag, iFalse); - setFlags_Widget(d, resizeWidthOfChildren_WidgetFlag, iTrue); - d->rect.size.x = rootSize_Window(get_Window()).x; - iForEach(ObjectList, i, children_Widget(d)) { - if (isInstance_Object(i.object, &Class_LabelWidget)) { - iLabelWidget *label = i.object; - setFont_LabelWidget(label, defaultBig_FontId); - } + if (isPortraitPhone) { + setFlags_Widget(d, arrangeWidth_WidgetFlag | resizeChildrenToWidestChild_WidgetFlag, iFalse); + setFlags_Widget(d, resizeWidthOfChildren_WidgetFlag, iTrue); + d->rect.size.x = rootSize_Window(get_Window()).x; + iForEach(ObjectList, i, children_Widget(d)) { + if (isInstance_Object(i.object, &Class_LabelWidget)) { + iLabelWidget *label = i.object; + setFont_LabelWidget(label, defaultBig_FontId); } } } arrange_Widget(d); - d->rect.pos = coord; + if (isPortraitPhone) { + d->rect.pos = init_I2(0, rootSize.y); + } + else { + d->rect.pos = coord; + } /* Ensure the full menu is visible. */ - const iInt2 rootSize = rootSize_Window(get_Window()); const iRect bounds = bounds_Widget(d); int leftExcess = -left_Rect(bounds); int rightExcess = right_Rect(bounds) - rootSize.x; @@ -523,6 +538,10 @@ void openMenu_Widget(iWidget *d, iInt2 coord) { } postRefresh_App(); postCommand_Widget(d, "menu.opened"); + if (isPortraitPhone) { + setVisualOffset_Widget(d, height_Widget(d), 0, 0); + setVisualOffset_Widget(d, 0, 330, easeOut_AnimFlag | softer_AnimFlag); + } } void closeMenu_Widget(iWidget *d) { diff --git a/src/ui/window.c b/src/ui/window.c index c2e33c89..510fe2fe 100644 --- a/src/ui/window.c +++ b/src/ui/window.c @@ -475,8 +475,8 @@ static void dismissPortraitPhoneSidebars_(void) { postCommand_App("sidebar2.toggle"); setVisualOffset_Widget(sidebar2, height_Widget(sidebar2), 250, easeIn_AnimFlag); } - setFlags_Widget(findWidget_App("toolbar.ident"), noBackground_WidgetFlag, iTrue); - setFlags_Widget(findWidget_App("toolbar.view"), noBackground_WidgetFlag, iTrue); +// setFlags_Widget(findWidget_App("toolbar.ident"), noBackground_WidgetFlag, iTrue); +// setFlags_Widget(findWidget_App("toolbar.view"), noBackground_WidgetFlag, iTrue); } } @@ -679,7 +679,7 @@ static void dismissSidebar_(iWidget *sidebar, const char *toolButtonId) { if (isVisible_Widget(sidebar)) { postCommandf_App("%s.toggle", cstr_String(id_Widget(sidebar))); if (toolButtonId) { - setFlags_Widget(findWidget_App(toolButtonId), noBackground_WidgetFlag, iTrue); +// setFlags_Widget(findWidget_App(toolButtonId), noBackground_WidgetFlag, iTrue); } setVisualOffset_Widget(sidebar, height_Widget(sidebar), 250, easeIn_AnimFlag); } @@ -694,16 +694,19 @@ static iBool handleToolBarCommands_(iWidget *toolBar, const char *cmd) { return iTrue; } else if (equal_Command(cmd, "toolbar.showview")) { + /* TODO: Clean this up. */ iWidget *sidebar = findWidget_App("sidebar"); iWidget *sidebar2 = findWidget_App("sidebar2"); dismissSidebar_(sidebar2, "toolbar.ident"); const iBool isVisible = isVisible_Widget(sidebar); - setFlags_Widget(findChild_Widget(toolBar, "toolbar.view"), noBackground_WidgetFlag, - isVisible); +// setFlags_Widget(findChild_Widget(toolBar, "toolbar.view"), noBackground_WidgetFlag, +// isVisible); + /* If a sidebar hasn't been shown yet, it's height is zero. */ + const int viewHeight = rootSize_Window(get_Window()).y; if (arg_Command(cmd) >= 0) { postCommandf_App("sidebar.mode arg:%d show:1", arg_Command(cmd)); if (!isVisible) { - setVisualOffset_Widget(sidebar, height_Widget(sidebar), 0, 0); + setVisualOffset_Widget(sidebar, viewHeight, 0, 0); setVisualOffset_Widget(sidebar, 0, 400, easeOut_AnimFlag | softer_AnimFlag); } } @@ -713,25 +716,30 @@ static iBool handleToolBarCommands_(iWidget *toolBar, const char *cmd) { setVisualOffset_Widget(sidebar, height_Widget(sidebar), 250, easeIn_AnimFlag); } else { - setVisualOffset_Widget(sidebar, height_Widget(sidebar), 0, 0); + setVisualOffset_Widget(sidebar, viewHeight, 0, 0); setVisualOffset_Widget(sidebar, 0, 400, easeOut_AnimFlag | softer_AnimFlag); } } return iTrue; } else if (equal_Command(cmd, "toolbar.showident")) { + /* TODO: Clean this up. */ iWidget *sidebar = findWidget_App("sidebar"); iWidget *sidebar2 = findWidget_App("sidebar2"); dismissSidebar_(sidebar, "toolbar.view"); const iBool isVisible = isVisible_Widget(sidebar2); - setFlags_Widget(findChild_Widget(toolBar, "toolbar.ident"), noBackground_WidgetFlag, - isVisible); - if (isVisible) { +// setFlags_Widget(findChild_Widget(toolBar, "toolbar.ident"), noBackground_WidgetFlag, +// isVisible); + /* If a sidebar hasn't been shown yet, it's height is zero. */ + const int viewHeight = rootSize_Window(get_Window()).y; + if (isVisible) { dismissSidebar_(sidebar2, NULL); } else { postCommand_App("sidebar2.mode arg:3 show:1"); - setVisualOffset_Widget(sidebar2, height_Widget(sidebar2), 0, 0); + int offset = height_Widget(sidebar2); + if (offset == 0) offset = rootSize_Window(get_Window()).y; + setVisualOffset_Widget(sidebar2, offset, 0, 0); setVisualOffset_Widget(sidebar2, 0, 400, easeOut_AnimFlag | softer_AnimFlag); } return iTrue; @@ -990,7 +998,7 @@ static void setupUserInterface_Window(iWindow *d) { iLabelWidget *btn = i.object; setFlags_Widget(i.object, noBackground_WidgetFlag, iTrue); setTextColor_LabelWidget(i.object, tmBannerIcon_ColorId); - setBackgroundColor_Widget(i.object, tmBannerSideTitle_ColorId); +// setBackgroundColor_Widget(i.object, tmBannerSideTitle_ColorId); } const iMenuItem items[] = { { "Bookmarks", 0, 0, "toolbar.showview arg:0" }, -- cgit v1.2.3