From c3f5e959a41ec2002eb79032eee54c9f3536015c Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Sat, 11 Mar 2023 23:18:53 +0100 Subject: [PATCH] feat(android): add collapseToolbar support (#1360) --- ....UI.Android.CollapseToolbar.ContentView.js | 11 ++++++ ....Android.CollapseToolbar._ProxyProperty.js | 13 +++++++ .../parsers/Ti.UI.Android.CollapseToolbar.js | 34 +++++++++++++++++++ ....UI.Android.DrawerLayout._ProxyProperty.js | 1 - Alloy/common/constants.js | 6 ++-- 5 files changed, 62 insertions(+), 3 deletions(-) create mode 100644 Alloy/commands/compile/parsers/Ti.UI.Android.CollapseToolbar.ContentView.js create mode 100644 Alloy/commands/compile/parsers/Ti.UI.Android.CollapseToolbar._ProxyProperty.js create mode 100644 Alloy/commands/compile/parsers/Ti.UI.Android.CollapseToolbar.js diff --git a/Alloy/commands/compile/parsers/Ti.UI.Android.CollapseToolbar.ContentView.js b/Alloy/commands/compile/parsers/Ti.UI.Android.CollapseToolbar.ContentView.js new file mode 100644 index 000000000..d297fb7a3 --- /dev/null +++ b/Alloy/commands/compile/parsers/Ti.UI.Android.CollapseToolbar.ContentView.js @@ -0,0 +1,11 @@ +exports.parse = function(node, state) { + _.extend(state, { + proxyPropertyDefinition: { + parents: [ + 'Ti.UI.Android.CollapseToolbar', + 'Ti.UI.iPad.Popover' + ] + } + }); + return require('./Ti.UI.Android.CollapseToolbar._ProxyProperty').parse(node, state); +}; diff --git a/Alloy/commands/compile/parsers/Ti.UI.Android.CollapseToolbar._ProxyProperty.js b/Alloy/commands/compile/parsers/Ti.UI.Android.CollapseToolbar._ProxyProperty.js new file mode 100644 index 000000000..1705fe315 --- /dev/null +++ b/Alloy/commands/compile/parsers/Ti.UI.Android.CollapseToolbar._ProxyProperty.js @@ -0,0 +1,13 @@ +const _ = require('lodash'); + +exports.parse = function(node, state) { + _.extend(state, { + proxyPropertyDefinition: { + parents: [ + 'Ti.UI.Android.CollapseToolbar', + 'Ti.UI.iPad.Popover' + ] + } + }); + return require('./Alloy.Abstract._ProxyProperty').parse(node, state); +}; diff --git a/Alloy/commands/compile/parsers/Ti.UI.Android.CollapseToolbar.js b/Alloy/commands/compile/parsers/Ti.UI.Android.CollapseToolbar.js new file mode 100644 index 000000000..b413b3e52 --- /dev/null +++ b/Alloy/commands/compile/parsers/Ti.UI.Android.CollapseToolbar.js @@ -0,0 +1,34 @@ +const _ = require('lodash'), + U = require('../../../utils'), + MIN_VERSION = '12.1.0'; + +exports.parse = function(node, state) { + return require('./base').parse(node, state, parse); +}; + +function parse(node, state, args) { + const tiappSdkVersion = tiapp.getSdkVersion(); + if (tiapp.version.lt(tiappSdkVersion, MIN_VERSION)) { + U.die(`Ti.UI.Android.CollapseToolbar requires Titanium SDK ${MIN_VERSION}+`); + } + + var children = U.XML.getElementsFromNodes(node.childNodes), + code = '', + extras = [], + proxyProperties = {}; + + // add all proxy properties at creation time + _.each(proxyProperties, function(v, k) { + extras.push([k, v]); + }); + + // if we got any extras, add them to the state + if (extras.length) { + state.extraStyle = styler.createVariableStyle(extras); + } + + viewState = require('./default').parse(node, state); + viewState.code = code + viewState.code; + + return viewState; +} diff --git a/Alloy/commands/compile/parsers/Ti.UI.Android.DrawerLayout._ProxyProperty.js b/Alloy/commands/compile/parsers/Ti.UI.Android.DrawerLayout._ProxyProperty.js index f396a59e7..c32e1d1ce 100644 --- a/Alloy/commands/compile/parsers/Ti.UI.Android.DrawerLayout._ProxyProperty.js +++ b/Alloy/commands/compile/parsers/Ti.UI.Android.DrawerLayout._ProxyProperty.js @@ -1,7 +1,6 @@ var _ = require('lodash'); exports.parse = function(node, state) { - console.log(' Ti.UI.Android.DrawerLayout'); _.extend(state, { proxyPropertyDefinition: { parents: [ diff --git a/Alloy/common/constants.js b/Alloy/common/constants.js index ef2976471..366895abe 100755 --- a/Alloy/common/constants.js +++ b/Alloy/common/constants.js @@ -235,8 +235,10 @@ exports.IMPLICIT_NAMESPACES = { TitleControl: 'Ti.UI.Window', WindowToolbar: 'Ti.UI.Window', - // Ti.UI.iPad.Popover - ContentView: 'Ti.UI.iPad.Popover', + ContentView: isTitanium && Ti.Platform.osname === 'android' ? + 'Ti.UI.Android.CollapseToolbar' : 'Ti.UI.iPad.Popover', + + CollapseToolbar: 'Ti.UI.Android', DrawerLayout: 'Ti.UI.Android', LeftView: 'Ti.UI.Android.DrawerLayout',