summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJaakko Keränen <jaakko.keranen@iki.fi>2021-04-21 13:48:34 +0300
committerJaakko Keränen <jaakko.keranen@iki.fi>2021-04-21 13:48:34 +0300
commitb19d76bcb518287e63c6808c6dc1418d349f4ff7 (patch)
tree85966a79b2c453a8a9ce344a08172e1356982e77
parent7fefd2ca4f1be52c1bef3bc87cc8972a57cab396 (diff)
Mobile: Added Settings > About
-rw-r--r--CMakeLists.txt1
-rw-r--r--src/defs.h1
-rw-r--r--src/ui/util.c83
3 files changed, 59 insertions, 26 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 2057f0c9..a42c88a4 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -319,6 +319,7 @@ if (APPLE)
319 XCODE_ATTRIBUTE_PRODUCT_BUNDLE_IDENTIFIER "fi.skyjake.lagrange" 319 XCODE_ATTRIBUTE_PRODUCT_BUNDLE_IDENTIFIER "fi.skyjake.lagrange"
320 ) 320 )
321 if (IOS) 321 if (IOS)
322 target_compile_definitions (app PUBLIC LAGRANGE_IOS_VERSION="${IOS_BUNDLE_VERSION}")
322 set_target_properties (app PROPERTIES 323 set_target_properties (app PROPERTIES
323 MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_LIST_DIR}/res/iOSBundleInfo.plist.in" 324 MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_LIST_DIR}/res/iOSBundleInfo.plist.in"
324 MACOSX_BUNDLE_BUNDLE_VERSION "${IOS_BUNDLE_VERSION}" 325 MACOSX_BUNDLE_BUNDLE_VERSION "${IOS_BUNDLE_VERSION}"
diff --git a/src/defs.h b/src/defs.h
index 3c1779e3..b013ba43 100644
--- a/src/defs.h
+++ b/src/defs.h
@@ -76,6 +76,7 @@ enum iFileVersion {
76#define rightAngle_Icon "\U0001fba5" 76#define rightAngle_Icon "\U0001fba5"
77#define planet_Icon "\U0001fa90" 77#define planet_Icon "\U0001fa90"
78#define info_Icon "\u2139" 78#define info_Icon "\u2139"
79#define bug_Icon "\U0001f41e"
79#define leftHalf_Icon "\u25e7" 80#define leftHalf_Icon "\u25e7"
80#define rightHalf_Icon "\u25e8" 81#define rightHalf_Icon "\u25e8"
81#define scissor_Icon "\u2700" 82#define scissor_Icon "\u2700"
diff --git a/src/ui/util.c b/src/ui/util.c
index fb12dd7c..8e808bd2 100644
--- a/src/ui/util.c
+++ b/src/ui/util.c
@@ -1070,10 +1070,9 @@ static iBool slidePanelHandler_(iWidget *d, const char *cmd) {
1070 } 1070 }
1071 return iTrue; 1071 return iTrue;
1072 } 1072 }
1073 if (equal_Command(cmd, "panel.showhelp")) { 1073 if (equal_Command(cmd, "document.changed")) {
1074 postCommand_App("prefs.dismiss"); 1074 postCommand_App("prefs.dismiss");
1075 postCommand_App("open url:about:help"); 1075 return iFalse;
1076 return iTrue;
1077 } 1076 }
1078 if (equal_Command(cmd, "window.resized")) { 1077 if (equal_Command(cmd, "window.resized")) {
1079 updateSheetPanelMetrics_(parent_Widget(d)); 1078 updateSheetPanelMetrics_(parent_Widget(d));
@@ -1219,6 +1218,30 @@ static iWidget *makeValuePaddingWithHeading_(iLabelWidget *heading, iWidget *val
1219 return div; 1218 return div;
1220} 1219}
1221 1220
1221static iWidget *addChildPanel_(iWidget *sheet, iLabelWidget *panelButton,
1222 const iString *titleText) {
1223 iWidget *owner = new_Widget();
1224 setId_Widget(owner, "panel");
1225 setUserData_Object(panelButton, owner);
1226 setBackgroundColor_Widget(owner, uiBackground_ColorId);
1227 setId_Widget(addChild_Widget(owner, iClob(makePadding_Widget(0))), "panel.toppad");
1228 if (titleText) {
1229 iLabelWidget *title =
1230 addChildFlags_Widget(owner,
1231 iClob(new_LabelWidget(cstr_String(titleText), NULL)),
1232 alignLeft_WidgetFlag | frameless_WidgetFlag);
1233 setFont_LabelWidget(title, uiLabelLargeBold_FontId);
1234 setTextColor_LabelWidget(title, uiHeading_ColorId);
1235 }
1236 addChildFlags_Widget(sheet,
1237 iClob(owner),
1238 focusRoot_WidgetFlag | hidden_WidgetFlag | disabled_WidgetFlag |
1239 arrangeVertical_WidgetFlag | resizeWidthOfChildren_WidgetFlag |
1240 arrangeHeight_WidgetFlag | overflowScrollable_WidgetFlag |
1241 horizontalOffset_WidgetFlag | commandOnClick_WidgetFlag);
1242 return owner;
1243}
1244
1222void finalizeSheet_Widget(iWidget *sheet) { 1245void finalizeSheet_Widget(iWidget *sheet) {
1223 /* The sheet contents are completely rearranged and restyled on a phone. 1246 /* The sheet contents are completely rearranged and restyled on a phone.
1224 We'll set up a linear fullscreen arrangement of the widgets. Sheets are already 1247 We'll set up a linear fullscreen arrangement of the widgets. Sheets are already
@@ -1317,31 +1340,14 @@ void finalizeSheet_Widget(iWidget *sheet) {
1317 if (useSlidePanels) { 1340 if (useSlidePanels) {
1318 /* Create a new child panel. */ 1341 /* Create a new child panel. */
1319 iLabelWidget *button = at_PtrArray(panelButtons, index_PtrArrayIterator(&j)); 1342 iLabelWidget *button = at_PtrArray(panelButtons, index_PtrArrayIterator(&j));
1320 owner = new_Widget(); 1343 owner = addChildPanel_(sheet, button,
1321 setId_Widget(owner, "panel"); 1344 collect_String(upper_String(text_LabelWidget(button))));
1322 setUserData_Object(button, owner);
1323 setBackgroundColor_Widget(owner, uiBackground_ColorId);
1324 setId_Widget(addChild_Widget(owner, iClob(makePadding_Widget(0))), "panel.toppad");
1325 iLabelWidget *title = addChildFlags_Widget(owner,
1326 iClob(new_LabelWidget(cstrCollect_String(upper_String(text_LabelWidget(button))), NULL)), alignLeft_WidgetFlag | frameless_WidgetFlag);
1327 setFont_LabelWidget(title, uiLabelLargeBold_FontId);
1328 setTextColor_LabelWidget(title, uiHeading_ColorId);
1329 addChildFlags_Widget(sheet,
1330 iClob(owner),
1331 focusRoot_WidgetFlag |
1332 hidden_WidgetFlag |
1333 disabled_WidgetFlag |
1334 arrangeVertical_WidgetFlag |
1335 resizeWidthOfChildren_WidgetFlag |
1336 arrangeHeight_WidgetFlag |
1337 overflowScrollable_WidgetFlag |
1338 horizontalOffset_WidgetFlag |
1339 commandOnClick_WidgetFlag);
1340 } 1345 }
1341 iWidget *pageContent = j.ptr; 1346 iWidget *pageContent = j.ptr;
1342 iWidget *headings = child_Widget(pageContent, 0); 1347 iWidget *headings = child_Widget(pageContent, 0);
1343 iWidget *values = child_Widget(pageContent, 1); 1348 iWidget *values = child_Widget(pageContent, 1);
1344 enum iPrefsElement prevElement = panelTitle_PrefsElement; 1349 enum iPrefsElement prevElement = panelTitle_PrefsElement;
1350 /* Identify the types of controls in the dialog and restyle/organize them. */
1345 while (!isEmpty_ObjectList(children_Widget(headings))) { 1351 while (!isEmpty_ObjectList(children_Widget(headings))) {
1346 iWidget *heading = child_Widget(headings, 0); 1352 iWidget *heading = child_Widget(headings, 0);
1347 iWidget *value = child_Widget(values, 0); 1353 iWidget *value = child_Widget(values, 0);
@@ -1455,11 +1461,36 @@ void finalizeSheet_Widget(iWidget *sheet) {
1455 if (isPrefs) { 1461 if (isPrefs) {
1456 addChild_Widget(topPanel, iClob(makePadding_Widget(lineHeight_Text(defaultBig_FontId)))); 1462 addChild_Widget(topPanel, iClob(makePadding_Widget(lineHeight_Text(defaultBig_FontId))));
1457 addChildFlags_Widget(topPanel, 1463 addChildFlags_Widget(topPanel,
1458 iClob(makePanelButton_(info_Icon " ${menu.help}", "panel.showhelp")), 1464 iClob(makePanelButton_(info_Icon " ${menu.help}", "!open url:about:help")),
1459 borderTop_WidgetFlag); 1465 borderTop_WidgetFlag);
1460 addChildFlags_Widget(topPanel, 1466 iLabelWidget *aboutButton = addChildFlags_Widget(topPanel,
1461 iClob(makePanelButton_(planet_Icon " ${menu.about}", "panel.about")), 1467 iClob(makePanelButton_(planet_Icon " ${menu.about}", "panel.open")),
1462 chevron_WidgetFlag); 1468 chevron_WidgetFlag);
1469 /* The About panel. */ {
1470 iWidget *panel = addChildPanel_(sheet, aboutButton, NULL);
1471 iString *msg = collectNew_String();
1472 setCStr_String(msg, "Lagrange " LAGRANGE_APP_VERSION);
1473#if defined (iPlatformAppleMobile)
1474 appendCStr_String(msg, " (" LAGRANGE_IOS_VERSION ")");
1475#endif
1476 addChild_Widget(panel, iClob(new_LabelWidget(cstr_String(msg), NULL)));
1477 addChildFlags_Widget(panel,
1478 iClob(makePanelButton_(globe_Icon " By @jk@skyjake.fi",
1479 "!open url:https://skyjake.fi/@jk")),
1480 borderTop_WidgetFlag);
1481 addChildFlags_Widget(panel,
1482 iClob(makePanelButton_(clock_Icon " ${menu.releasenotes}",
1483 "!open url:about:version")),
1484 0);
1485 addChildFlags_Widget(panel,
1486 iClob(makePanelButton_(info_Icon " ${menu.aboutpages}",
1487 "!open url:about:about")),
1488 0);
1489 addChildFlags_Widget(panel,
1490 iClob(makePanelButton_(bug_Icon " ${menu.debug}",
1491 "!open url:about:debug")),
1492 0);
1493 }
1463 } 1494 }
1464 else { 1495 else {
1465 setFlags_Widget(topPanel, overflowScrollable_WidgetFlag, iTrue); 1496 setFlags_Widget(topPanel, overflowScrollable_WidgetFlag, iTrue);