UNPKG

cordova-mobile-app-template

Version:

Simple and fully customizable user interface template. Design for mobile app development on Apache Cordova framework or Ionic / Capacitor Native Runtime. Platforms: Android, iOS.

710 lines (511 loc) 19 kB
const settingsPage = {}; settingsPage.PAGE_ID = "settingsPage"; settingsPage.themeDataList = [ { id: "default", name: "Default" }, { id: "starwars", name: "StarWars" }, { id: "supernova", name: "Supernova" }, { id: "metro", name: "Metro" }, { id: "flatty", name: "Flatty" }, { id: "material", name: "Material" }, { id: "1990s", name: "1990s" } ]; settingsPage.updateDataList = [ { id: "auto", name: "Auto" }, { id: "ask-to-me", name: "Ask to me" }, { id: "off", name: "Off" } ]; settingsPage.notificationDataList = [ { id: "on", name: "On" }, { id: "friends-only", name: "Friends only" }, { id: "off", name: "Off" }, { id: "dont-disturb-1-hour", name: "Dont disturb 1 hour" }, { id: "dont-disturb-24-hours", name: "Dont disturb 24 hours" } ]; settingsPage.languageDataList = [ { id: "en", name: "English" }, { id: "es", name: "Spanish" }, { id: "fr", name: "French" }, { id: "tr", name: "Türkçe" } ]; settingsPage.videoQualityDataList = [ { id: "low", name: "Low"}, { id: "standart", name: "Standart"}, { id: "high", name: "High"} ]; // NOTE: Selected values are kept in variable global.settings settingsPage.openInDefaultView = function() { defaultView.clear(); const box = defaultView.getContainerBox(); // Out of this function, use "settingsPage.box" for "box". settingsPage.box = box; topBar.setVisible(1); topBar.setTitle("Settings"); topBar.setBackgroundColor("#FFFFFF"); topBar.setTitleColor("rgba(0, 0, 0, 0.8)"); topBar.setBorderLine(1); topBar.setTitleAlign("left"); topBar.backButton.setVisible(0); topBar.menuButton.setVisible(1); bottomBar.setVisible(1); bottomBar.selectItemByIndex(4); bottomBar.setBorderLine(1); defaultView.setTopAndBottomOuterSpaces(topBar.getHeight(), bottomBar.getHeight()); box.color = "transparent"; UISelectText.setSelectedColor("#E1F0FF"); UISelectText.setSearchInfoText("Filter"); // A. APPEARANCE: // UI SUB TITLE: APPEARANCE box.appearanceUISubTitle = settingsPage.createRelativeUISubTitle("APPEARANCE"); box.add(that); // A1. Dark Mode: global.settings.isDarkModeOn // UI LEFT TITLE: Default values. settingsPage.setLeftTitleDefaultValues(); // UI LEFT TITLE: Dark Mode. box.darkModeUILeftTitle = UILeftTitle.create({ title: "Dark Mode", description: "Use interface colors inverted." }); box.add(that); // Show that.position = "relative"; // UI TOGGLE: Dark mode toggle. settingsPage.createUIToggleInLeftTitle({ uiLeftTitle: box.darkModeUILeftTitle, toggleId: "isDarkModeOn" }); // A2. Theme: global.settings.themeId // UI LEFT TITLE: Theme. box.themeUILeftTitle = UILeftTitle.create({ title: "Theme", description: "" }); box.add(that); // Show that.position = "relative"; // UI SELECT TEXT: Theme. settingsPage.createUISelectTextInLeftTitle({ uiLeftTitle: box.themeUILeftTitle, selectTextId: "theme", itemDataList: settingsPage.themeDataList }); // A3. Menu style: // UI LEFT TITLE: Menu style. box.categoriesLeftTitle = UILeftTitle.create({ title: "Menu Style", description: "Choose how your navigation menu appears." }); box.add(that); // Show that.position = "relative"; // Right Arrow Image: box.categoriesLeftTitle.addObject(settingsPage.createRightArrowImage()); box.categoriesLeftTitle.onClick(function(uiLeftTitle) { menuStylePage.openInSecondView(); }); // A4. Primary color: global.settings.selectedColor // UI LEFT TITLE: Primary color. box.colorLeftTitle = UILeftTitle.create({ title: "Primary Color", description: "Choose a color for the colored interface buttons." }); box.add(that); // Show that.position = "relative"; // BOX: Primary color. (Custom Item) box.colorLeftTitle.boxPrimaryColor = createBox(0, 0, 40, 40); that.color = global.settings.selectedColor || "#689BD2"; that.colorData = global.settings.selectedColor || "#689BD2"; that.border = 2; that.borderColor = "#141414"; that.round = 4; that.onClick(function(boxPrimaryColor) { // smallView "Select a Color:" selectColorDialog.selectedColor = boxPrimaryColor.colorData; selectColorDialog.openInSmallView(function colorSelected(color) { boxPrimaryColor.color = color; boxPrimaryColor.colorData = color; global.settings.selectedColor = color; saveGlobal(); }); }); box.colorLeftTitle.addObject(box.colorLeftTitle.boxPrimaryColor); // B. SYSTEM: // UI SUB TITLE: SYSTEM: box.systemUISubTitle = settingsPage.createRelativeUISubTitle("SYSTEM"); box.add(that); // B1. Update Status: global.settings.updateId // UI LEFT TITLE: Update status. box.updateUILeftTitle = UILeftTitle.create({ title: "Update", description: "" }); box.add(that); // Show that.position = "relative"; // UI SELECT TEXT: Update status. settingsPage.createUISelectTextInLeftTitle({ uiLeftTitle: box.updateUILeftTitle, selectTextId: "update", itemDataList: settingsPage.updateDataList }); // B2. Only When Charging: global.settings.isOnlyWhenChargingOn // UI LEFT TITLE: Only When Charging. box.onlyWhenChargingUILeftTitle = UILeftTitle.create({ title: "Only When Charging", description: "The app only updates when plugged in." }); box.add(that); that.position = "relative"; // UI TOGGLE: Only when charging toggle. settingsPage.createUIToggleInLeftTitle({ uiLeftTitle: box.onlyWhenChargingUILeftTitle, toggleId: "isOnlyWhenChargingOn" }); // B3. Notifications: global.settings.notificationId // UI LEFT TITLE: Notifications. box.notificationsUILeftTitle = UILeftTitle.create({ title: "Notifications", description: "" }); box.add(that); that.position = "relative"; // UI SELECT TEXT: notifications select text. settingsPage.createUISelectTextInLeftTitle({ uiLeftTitle: box.notificationsUILeftTitle, selectTextId: "notification", itemDataList: settingsPage.notificationDataList }); // B4. Font Size: global.settings.fontSize // UI LEFT TITLE: Font size. box.fontSizeUILeftTitle = UILeftTitle.create({ title: "Font Size", description: "" }); box.add(that); that.position = "relative"; // UI STEPPER: Font size stepper. settingsPage.createUIStepperInLeftTitle({ uiLeftTitle: box.fontSizeUILeftTitle, stepperId: "fontSize" }, function setCustomStyle() { //UIStepper.default.backgroundColor = "whitesmoke"; //UIStepper.default.buttonOuterSpace = 4; UIStepper.default.width = 180; }, function setOptions(uiToggle) { uiToggle.setMinimumNumber(18); uiToggle.setMaximumNumber(24); uiToggle.setUnitText("px"); }); // B5. Language: global.settings.languageId // UI LEFT TITLE: Language. box.languageUILeftTitle = UILeftTitle.create({ title: "Language", description: "" }); box.add(that); that.position = "relative"; // UI SELECT TEXT: Language. settingsPage.createUISelectTextInLeftTitle({ uiLeftTitle: box.languageUILeftTitle, selectTextId: "language", itemDataList: settingsPage.languageDataList }); // C. DOWNLOADS: // UI SUB TITLE: DOWNLOADS box.othersUISubTitle = settingsPage.createRelativeUISubTitle("DOWNLOADS") box.add(that) // C1. Download Over Wi-Fi Only: global.settings.isDownloadWiFiOnlyOn // UI LEFT TITLE: Download Over Wi-Fi Only. box.downloadWiFiOnlyUILeftTitle = UILeftTitle.create({ title: "Download Over Wi-Fi Only", description: "" }); box.add(that); that.position = "relative"; // UI TOGGLE: Download over wi-fi only toggle. settingsPage.createUIToggleInLeftTitle({ uiLeftTitle: box.downloadWiFiOnlyUILeftTitle, toggleId: "isDownloadWiFiOnlyOn" }, function setCustomStyle() { UIToggle.default.backgroundOnColor = "#FE5D49"; }); // C2. Video Quality: global.settings.videoQualityId // UI LEFT TITLE: Video Quality. box.videoQualityUILeftTitle = UILeftTitle.create({ title: "Video Quality", description: "" }); box.add(that); that.position = "relative"; // UI SELECT TEXT: Video Quality. settingsPage.createUISelectTextInLeftTitle({ uiLeftTitle: box.videoQualityUILeftTitle, selectTextId: "videoQuality", itemDataList: settingsPage.videoQualityDataList }, function setCustomStyle(uiSelectText) { //uiSelectText.color = "whitesmoke"; //uiSelectText.boxMask.element.style.background = "linear-gradient(to right, #FFFFFF00, lightgray)"; }); settingsPage.updateInfo_videoQuality(); // C3. Delete all downloads. // UI LEFT TITLE: Delete all downloads UILeftTitle.default.titleTextColor = "orangered"; //UILeftTitle.default.descriptionTextColor = "#FE5D4999"; box.deleteAllDownloadsLeftTitle = UILeftTitle.create({ title: "Delete All Downloads", description: "Nothing will be deleted. It is a demo." }); box.add(that); that.position = "relative"; // IMAGE: Trash icon. const imgTrash = createImage(0, 0, 36, 36); that.load("assets/settings/trash.svg"); that.opacity = 0.9; box.deleteAllDownloadsLeftTitle.addObject(imgTrash); box.deleteAllDownloadsLeftTitle.onClick(function(uiLeftTitle) { notice.show({ message: "All downloads are still exist." }); }); // D. OTHERS: // UI SUB TITLE: OTHERS box.appearanceUISubTitle = settingsPage.createRelativeUISubTitle("OTHERS"); box.add(that); // D1. Security: // UI LEFT TITLE: Default values. settingsPage.setLeftTitleDefaultValues(); // UI LEFT TITLE: Security. box.securityLeftTitle = UILeftTitle.create({ title: "Security", description: "" }); box.add(that); that.position = "relative"; // Right Arrow Image: box.securityLeftTitle.addObject(settingsPage.createRightArrowImage()); box.securityLeftTitle.onClick(function(uiLeftTitle) { securityPage.openInSecondView(); }); // D2. Privacy Policy and Terms of Use. // UI LEFT TITLE: Privacy Policy and Terms of Use. box.termOfUseLeftTitle = UILeftTitle.create({ title: "Privacy Policy and Terms of Use", description: "" }); box.add(that); that.position = "relative"; // Right Arrow Image: box.termOfUseLeftTitle.addObject(settingsPage.createRightArrowImage()); box.termOfUseLeftTitle.onClick(function(uiLeftTitle) { termsOfUsePage.openInSecondView(); }); // -- // Relative space at bottom. box.bottomUISpace = settingsPage.createRelativeUISpace(120, "whitesmoke"); box.add(that); defaultView.setVisible(1); print("Opened page id: " + settingsPage.PAGE_ID); } settingsPage.createRelativeUISubTitle = function(title, color = "whitesmoke") { // BOX: UI object container const box = createBox(0, 0, app.usedWidth, 90); that.color = color; that.borderColor = "rgba(0, 0, 0, 0.1)"; that.element.style.borderBottomWidth = "3px"; that.element.style.position = "relative"; // LABEL: object title text box.lblTitle = createLabel(20, 50, "auto"); box.add(that); that.text = title; that.fontSize = 18; that.element.style.fontFamily = "opensans-bold"; makeBasicObject(box); return box; } settingsPage.createRelativeUISpace = function(height = 100, color = "transparent") { const box = createBox(0, 0, app.usedWidth, height); that.color = color; that.element.style.position = "relative"; return box; } settingsPage.setLeftTitleDefaultValues = function() { // UI LEFT TITLE: Default values. UILeftTitle.resetDefault(); UILeftTitle.default.width = app.usedWidth; UILeftTitle.default.height = 100; UILeftTitle.default.titleFontSize = 20; UILeftTitle.default.leftInnerSpace = 20; UILeftTitle.default.rightInnerSpace = 20; UILeftTitle.default.bottomBorder = 1; UILeftTitle.default.round = 0; } settingsPage.createRightArrowImage = function() { const imgIcon = createImage(0, 0, 36, 36); that.load("js/component/ui-left-title/arrow.svg"); that.opacity = 0.8; return imgIcon; } settingsPage.makeRelative = function(box) { //box.element.style.position = "relative"; //box.left = 0; //box.top = 0; box.position = "relative"; } settingsPage.createUIToggleInLeftTitle = function(parameters = {}, setCustomStyle = function() {}, setOptions = function() {}) { // parameters.uiLeftTitle // parameters.toggleId // UI TOGGLE: UIToggle.resetDefault(); //UIToggle.style.microsoft(); // Custom style: setCustomStyle(); parameters.uiLeftTitle.uiToggle = UIToggle.create(); parameters.uiLeftTitle.add(that); // Show at: that.right = UILeftTitle.default.rightInnerSpace; that.center("top"); that.toggleId = parameters.toggleId; // Options: setOptions(that); //that.setValue(global.settings[parameters.toggleId]); that.setValue(settingsPage.getValue(that.toggleId) || 0); that.onChange(settingsPage.valueChanged_toggle); } settingsPage.createUISelectTextInLeftTitle = function(parameters = {}, setCustomStyle = function() {}, setOptions = function() {}) { // parameters.uiLeftTitle // parameters.selectTextId // parameters.itemDataList // UI SELECT TEXT: parameters.uiLeftTitle.uiSelectText = UISelectText.create(); parameters.uiLeftTitle.add(that); // Show at: that.right = 20; that.center("top"); that.setAutoResize(1); //that.color = "whitesmoke"; //that.boxMask.element.style.background = "linear-gradient(to right, #FFFFFF00, lightgray)"; that.color = "white"; that.boxMask.element.style.background = "linear-gradient(to right, #FFFFFF00, white)"; // Custom style setCustomStyle(that); parameters.uiLeftTitle.uiSelectText.selectTextId = parameters.selectTextId; // Options setOptions(that); parameters.uiLeftTitle.uiSelectText.createItemsByDataList(parameters.itemDataList); let itemIndex = parameters.uiLeftTitle.uiSelectText.getIndexById( global.settings[parameters.uiLeftTitle.uiSelectText.selectTextId + "Id"] ); if (itemIndex < 0) { itemIndex = 0; } parameters.uiLeftTitle.uiSelectText.setSelectedIndex(itemIndex); parameters.uiLeftTitle.uiSelectText.onChange(settingsPage.valueChanged_selectText); } settingsPage.createUIStepperInLeftTitle = function(parameters = {}, setCustomStyle = function() {}, setOptions = function() {}) { // parameters.uiLeftTitle // parameters.stepperId // UI STEPPER: Default values. UIStepper.resetDefault(); UIStepper.default.buttonOuterSpace = 0; setCustomStyle(); parameters.uiLeftTitle.uiStepper = UIStepper.create(); parameters.uiLeftTitle.add(that); that.stepperId = parameters.stepperId; // Show at: that.right = UILeftTitle.default.rightInnerSpace; that.center("top"); setOptions(that); that.setValue(settingsPage.getValue(that.stepperId) || 0); that.onChange(settingsPage.valueChanged_stepper); } settingsPage.valueChanged_toggle = function(uiToggle) { print("Toggle value (" + uiToggle.toggleId + "): " + uiToggle.getValue()); settingsPage.setValue(uiToggle.toggleId, uiToggle.getValue()); switch(uiToggle.toggleId) { case "isDarkModeOn": // Do something. break; case "isDownloadWiFiOnlyOn": // Do something. break; case "isOnlyWhenChargingOn": // Do something. break; } } settingsPage.valueChanged_selectText = function(uiSelectText) { print("Selected name (" + uiSelectText.selectTextId + "): " + uiSelectText.getSelectedName()); settingsPage.setValue(uiSelectText.selectTextId + "Id", uiSelectText.getSelectedId()); settingsPage.setValue(uiSelectText.selectTextId + "Name", uiSelectText.getSelectedName()); switch(uiSelectText.selectTextId) { case "theme": // Do something. //alert(uiSelectText.getSelectedName()); break; case "videoQuality": // Do something. settingsPage.updateInfo_videoQuality(); settingsPage.action_videoQuality(); break; case "update": // Do something. break; case "notification": // Do something. break; case "language": // Do something. break; } } settingsPage.valueChanged_stepper = function(uiStepper) { print("Stepper number (" + uiStepper.stepperId + "): " + uiStepper.getValue()); settingsPage.setValue(uiStepper.stepperId, uiStepper.getValue()); switch(uiStepper.stepperId) { case "fontSize": // Do something. break; } } settingsPage.setValue = function(id, value) { global.settings[id] = value; saveGlobal(); } settingsPage.getValue = function(id) { return global.settings[id]; } settingsPage.updateInfo_videoQuality = function() { const uiLeftTitle = settingsPage.box.videoQualityUILeftTitle; switch(uiLeftTitle.uiSelectText.getSelectedId()) { case "low": uiLeftTitle.setDescription("Current quality: 25%"); break; case "standart": uiLeftTitle.setDescription(""); break; case "high": uiLeftTitle.setDescription("Remaining disk space: 2.3GB"); break; } } settingsPage.action_videoQuality = function() { switch(settingsPage.box.videoQualityUILeftTitle.uiSelectText.getSelectedId()) { case "low": // Do something. notice.show({ message: "Videos will look very poor quality.", backgroundColor: notice.colors.YELLOW, textColor: "#141414" }); break; case "standart": // Do something. break; case "high": // Do something. notice.show({ message: "Videos will take up a lot of space.", backgroundColor: notice.colors.YELLOW, textColor: "#141414" }); break; } }