Skip to content

Commit 782c390

Browse files
author
Alexander Vakrilov
committed
Merge pull request NativeScript#448 from NativeScript/feature/action-bar-hidden-fix
Property renamed and bug fixes
2 parents 4b59455 + a458993 commit 782c390

File tree

13 files changed

+72
-46
lines changed

13 files changed

+72
-46
lines changed

CrossPlatformModules.csproj

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,9 @@
6161
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
6262
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
6363
<ItemGroup>
64+
<TypeScriptCompile Include="apps\action-bar-demo\pages\action-bar-hidden.ts">
65+
<DependentUpon>action-bar-hidden.xml</DependentUpon>
66+
</TypeScriptCompile>
6467
<TypeScriptCompile Include="apps\action-bar-demo\pages\action-items-text.ts">
6568
<DependentUpon>action-items-text.xml</DependentUpon>
6669
</TypeScriptCompile>
@@ -84,6 +87,9 @@
8487
<DependentUpon>main-page.xml</DependentUpon>
8588
</TypeScriptCompile>
8689
<TypeScriptCompile Include="apps\cuteness.unoptimized\reddit-app-view-model.ts" />
90+
<Content Include="apps\action-bar-demo\pages\action-bar-hidden.xml">
91+
<SubType>Designer</SubType>
92+
</Content>
8793
<Content Include="apps\action-bar-demo\pages\center-view-stack.xml" />
8894
<Content Include="apps\action-bar-demo\pages\center-view-segmented.xml" />
8995
<Content Include="apps\action-bar-demo\pages\center-view.xml" />
@@ -1755,7 +1761,7 @@
17551761
<SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile>
17561762
</WebProjectProperties>
17571763
</FlavorProperties>
1758-
<UserProperties ui_2scroll-view_2package_1json__JSONSchema="http://json.schemastore.org/package" apps_2editable-text-demo_2package_1json__JSONSchema="http://json.schemastore.org/package" apps_2absolute-layout-demo_2package_1json__JSONSchema="http://json.schemastore.org/package" apps_2gallery-app_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2content-view_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2web-view_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2layouts_2linear-layout_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2layouts_2absolute-layout_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2layouts_2dock-layout_2package_1json__JSONSchema="" ui_2layouts_2grid-layout_2package_1json__JSONSchema="" ui_2layouts_2wrap-layout_2package_1json__JSONSchema="http://json.schemastore.org/package" />
1764+
<UserProperties ui_2layouts_2wrap-layout_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2layouts_2grid-layout_2package_1json__JSONSchema="" ui_2layouts_2dock-layout_2package_1json__JSONSchema="" ui_2layouts_2absolute-layout_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2layouts_2linear-layout_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2web-view_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2content-view_2package_1json__JSONSchema="http://json.schemastore.org/package" apps_2gallery-app_2package_1json__JSONSchema="http://json.schemastore.org/package" apps_2absolute-layout-demo_2package_1json__JSONSchema="http://json.schemastore.org/package" apps_2editable-text-demo_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2scroll-view_2package_1json__JSONSchema="http://json.schemastore.org/package" />
17591765
</VisualStudio>
17601766
</ProjectExtensions>
17611767
</Project>

apps/action-bar-demo/main-page.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
<Page>
33
<ScrollView>
44
<StackLayout>
5+
<Button tap="itemTap" text="action bar hidden" tag="action-bar-hidden" />
56
<Button tap="itemTap" text="page title and icon" tag="page-title-icon" />
67
<Button tap="itemTap" text="navigation button" tag="navigation-button" />
78
<Button tap="itemTap" text="action items icons" tag="action-items-icon" />
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import pages = require("ui/page");
2+
import view = require("ui/core/view");
3+
4+
var toggle = false;
5+
export function toggleTap(args) {
6+
var page = <pages.Page>view.getAncestor(<view.View>args.object, "Page")
7+
page.actionBarHidden = toggle;
8+
toggle = !toggle;
9+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<Page actionBarHidden="true">
2+
<Page.actionBar>
3+
<ActionBar title="Hide Test"/>
4+
</Page.actionBar>
5+
<StackLayout>
6+
<Button text="hide/show" tap="toggleTap" />
7+
</StackLayout>
8+
</Page>

ui/action-bar/action-bar-common.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -158,16 +158,16 @@ export class ActionBar extends view.View implements dts.ActionBar {
158158
}
159159
}
160160

161-
public _shouldShow(): boolean {
161+
public _isEmpty(): boolean {
162162
if (this.title ||
163163
(this.android && this.android.icon) ||
164164
this.navigationButton ||
165165
this.actionItems.getItems().length > 0) {
166166

167-
return true;
167+
return false;
168168
}
169169

170-
return false;
170+
return true;
171171
}
172172
}
173173

ui/action-bar/action-bar.android.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,20 @@ export class ActionBar extends common.ActionBar {
105105
public _updateAndroid(menu: android.view.IMenu) {
106106
var actionBar: android.app.ActionBar = frame.topmost().android.actionBar;
107107

108+
if (this.page.actionBarHidden) {
109+
if (actionBar.isShowing()) {
110+
actionBar.hide();
111+
}
112+
113+
// If action bar is hidden - no need to fill it with items.
114+
return;
115+
}
116+
117+
// Assure action bar is showing;
118+
if (!actionBar.isShowing()) {
119+
actionBar.show();
120+
}
121+
108122
this._addActionItems(menu);
109123

110124
// Set title

ui/action-bar/action-bar.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ declare module "ui/action-bar" {
4949
update();
5050

5151
//@private
52-
_shouldShow(): boolean
52+
_isEmpty(): boolean
5353
_updateAndroid(menu: android.view.IMenu);
5454
_onAndroidItemSelected(itemId: number): boolean
5555

ui/frame/frame.ios.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import pages = require("ui/page");
55
import enums = require("ui/enums");
66
import utils = require("utils/utils");
77
import view = require("ui/core/view");
8+
import types = require("utils/types");
89

910
declare var exports;
1011
require("utils/module-merge").merge(frameCommon, exports);
@@ -84,7 +85,12 @@ export class Frame extends frameCommon.Frame {
8485

8586
case enums.NavigationBarVisibility.auto:
8687
var pageInstance: pages.Page = page || this.currentPage;
87-
newValue = this.backStack.length > 0 || (pageInstance && pageInstance.actionBar._shouldShow());
88+
if (pageInstance && types.isDefined(pageInstance.actionBarHidden)) {
89+
newValue = !pageInstance.actionBarHidden;
90+
}
91+
else {
92+
newValue = this.backStack.length > 0 || (pageInstance && !pageInstance.actionBar._isEmpty());
93+
}
8894
newValue = !!newValue; // Make sure it is boolean
8995
break;
9096
}

ui/page/page-common.ts

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,23 +10,23 @@ import actionBar = require("ui/action-bar");
1010
import dependencyObservable = require("ui/core/dependency-observable");
1111
import proxy = require("ui/core/proxy");
1212

13-
var navigationBarHiddenProperty = new dependencyObservable.Property(
14-
"navigationBarHidden",
13+
var actionBarHiddenProperty = new dependencyObservable.Property(
14+
"actionBarHidden",
1515
"Page",
1616
new proxy.PropertyMetadata(undefined, dependencyObservable.PropertyMetadataSettings.AffectsLayout)
1717
);
1818

19-
function onNavigationBarHiddenPropertyChanged(data: dependencyObservable.PropertyChangeData) {
19+
function onActionBarHiddenPropertyChanged(data: dependencyObservable.PropertyChangeData) {
2020
var page = <Page>data.object;
2121
if (page.isLoaded) {
22-
page._updateNavigationBar(data.newValue);
22+
page._updateActionBar(data.newValue);
2323
}
2424
}
2525

26-
(<proxy.PropertyMetadata>navigationBarHiddenProperty.metadata).onSetNativeValue = onNavigationBarHiddenPropertyChanged;
26+
(<proxy.PropertyMetadata>actionBarHiddenProperty.metadata).onSetNativeValue = onActionBarHiddenPropertyChanged;
2727

2828
export class Page extends contentView.ContentView implements dts.Page {
29-
public static navigationBarHiddenProperty = navigationBarHiddenProperty;
29+
public static actionBarHiddenProperty = actionBarHiddenProperty;
3030
public static navigatingToEvent = "navigatingTo";
3131
public static navigatedToEvent = "navigatedTo";
3232
public static navigatingFromEvent = "navigatingFrom";
@@ -47,22 +47,22 @@ export class Page extends contentView.ContentView implements dts.Page {
4747
public onLoaded() {
4848
this._applyCss();
4949

50-
if (this.navigationBarHidden !== undefined) {
51-
this._updateNavigationBar(this.navigationBarHidden);
50+
if (this.actionBarHidden !== undefined) {
51+
this._updateActionBar(this.actionBarHidden);
5252
}
5353

5454
super.onLoaded();
5555
}
5656

57-
get navigationBarHidden(): boolean {
58-
return this._getValue(Page.navigationBarHiddenProperty);
57+
get actionBarHidden(): boolean {
58+
return this._getValue(Page.actionBarHiddenProperty);
5959
}
6060

61-
set navigationBarHidden(value: boolean) {
62-
this._setValue(Page.navigationBarHiddenProperty, value);
61+
set actionBarHidden(value: boolean) {
62+
this._setValue(Page.actionBarHiddenProperty, value);
6363
}
6464

65-
public _updateNavigationBar(hidden: boolean) {
65+
public _updateActionBar(hidden: boolean) {
6666
//
6767
}
6868

ui/page/page.android.ts

Lines changed: 2 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -83,26 +83,7 @@ export class Page extends pageCommon.Page {
8383
this._onDetached(true);
8484
}
8585

86-
public _updateNavigationBar(hidden: boolean) {
87-
if (!this.frame || !this.frame.android) {
88-
return;
89-
}
90-
91-
var actionBar = this.frame.android.actionBar;
92-
93-
if (!actionBar) {
94-
return;
95-
}
96-
97-
if (hidden) {
98-
if (actionBar.isShowing()) {
99-
actionBar.hide();
100-
}
101-
}
102-
else {
103-
if (!actionBar.isShowing()) {
104-
actionBar.show();
105-
}
106-
}
86+
public _updateActionBar(hidden: boolean) {
87+
this.actionBar.update();
10788
}
10889
}

0 commit comments

Comments
 (0)