Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
1d9e0d6
Update base activity name to get example running
Jun 8, 2016
28f3cc7
Update toolbar along with style update (may want to rename setNavigat…
Jun 8, 2016
128d2f7
Add basic setNavigationTitle method
Jun 8, 2016
2682147
Make the modal work and presentable on Android
Jun 8, 2016
c4433d1
Fix Android modal not closing on first try
Jun 8, 2016
9d8c0d2
Wire up tab show/hide and tab selection
Jun 8, 2016
2e48348
Wire up Android setTabBadge
Jun 8, 2016
714b31e
Add toolbar toggle, not sure if animation is working
Jun 8, 2016
005d1e5
Consolidate example code since everything but lightbox should now wor…
Jun 9, 2016
229fd5d
Fix circular reference error parsing navigatorEventSubscription
Jun 9, 2016
4515e13
Implement popToRoot
Jun 9, 2016
be6c8e2
Implement resetTo
Jun 9, 2016
496c2a9
Merge branch 'master' of https://github.com/wix/react-native-navigation
Jun 9, 2016
05b511c
Use update styles
Jun 9, 2016
cb48fd5
Remove setNavigationStyle since updatesStyles, which calls setNavigat…
Jun 9, 2016
3d0b6cd
Cleanup
Jun 9, 2016
2a18c6b
Fix boolean test
Jun 9, 2016
89a9ea4
Revert drawer flag
Jun 9, 2016
692e2e9
Update remaining alert references
Jun 9, 2016
1a7129f
Restore super call for modal back
Jun 9, 2016
1da6343
Restore update
Jun 9, 2016
efa84a2
Update tab title and persist title on tab change
Jun 9, 2016
7f3d9ba
Make sure addView is called before removeView to get fade transition
Jun 9, 2016
8d34eac
Restore toolbar updates
Jun 11, 2016
c79c92c
Fix reference
Jun 11, 2016
f5964a4
Fix reference
Jun 11, 2016
e2f3bb0
Fix navbar bg color and text color
Jun 11, 2016
7ef6dbf
Add left drawer for Android
Jun 12, 2016
5c0de57
Merge branch 'more-android-updates' of https://github.com/the-mx-grou…
Jun 12, 2016
b5fdfe7
Fix drawer appearance
Jun 12, 2016
f97f170
Fix tint color for native drawer icon
Jun 13, 2016
2e1f84e
Fix custom menu icon not displaying
Jun 13, 2016
127bdca
Merge branch 'master' of https://github.com/wix/react-native-navigation
Jun 24, 2016
dc74c1c
Set default nav arrow color to black
Jun 24, 2016
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
package com.reactnativenavigation.activities;

import android.content.Intent;
import android.content.res.Configuration;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.provider.Settings;
import android.support.annotation.CallSuper;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.KeyEvent;
Expand Down Expand Up @@ -48,8 +50,10 @@ public abstract class BaseReactActivity extends AppCompatActivity implements Def
protected static final String KEY_ANIMATED = "animated";
protected static final String KEY_BADGE = "badge";
protected static final String KEY_HIDDEN = "hidden";
protected static final String KEY_SIDE = "side";
protected static final String KEY_TAB_INDEX = "tabIndex";
protected static final String KEY_TITLE = "title";
protected static final String KEY_TO = "to";
private static final String TAG = "BaseReactActivity";
private static final String REDBOX_PERMISSION_MESSAGE =
"Overlay permissions needs to be granted in order for react native apps to run in dev mode";
Expand All @@ -59,6 +63,7 @@ public abstract class BaseReactActivity extends AppCompatActivity implements Def
private boolean mDoRefresh = false;
private Menu mMenu;
protected RnnToolBar mToolbar;
protected ActionBarDrawerToggle mDrawerToggle;

/**
* Returns the name of the bundle in assets. If this is null, and no file path is specified for
Expand Down Expand Up @@ -223,7 +228,7 @@ public void push(Screen screen) {

if (getCurrentNavigatorId().equals(screen.navigatorId) &&
getScreenStackSize() >= 1) {
mToolbar.showBackButton(screen);
mToolbar.setNavUpButton(screen);
}
}
}
Expand All @@ -233,15 +238,16 @@ public Screen pop(String navigatorId) {
if (mToolbar != null &&
getCurrentNavigatorId().equals(navigatorId) &&
getScreenStackSize() <= 2) {
mToolbar.hideBackButton();
mToolbar.setNavUpButton();
}

return null;
}

@CallSuper
public Screen popToRoot(String navigatorId) {
if (mToolbar != null) {
mToolbar.hideBackButton();
mToolbar.setNavUpButton();
}

return null;
Expand All @@ -251,7 +257,7 @@ public Screen popToRoot(String navigatorId) {
public Screen resetTo(Screen screen) {
StyleHelper.updateStyles(mToolbar, screen);
if (mToolbar != null) {
mToolbar.hideBackButton();
mToolbar.setNavUpButton();
}

return null;
Expand All @@ -273,6 +279,14 @@ public Screen getCurrentScreen() {

public abstract int getScreenStackSize();

@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (mDrawerToggle != null) {
mDrawerToggle.onConfigurationChanged(newConfig);
}
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
mMenu = menu;
Expand All @@ -285,6 +299,12 @@ public boolean onCreateOptionsMenu(Menu menu) {

@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (mDrawerToggle != null &&
getScreenStackSize() == 1 &&
mDrawerToggle.onOptionsItemSelected(item)) {
return true;
}

if (item.getItemId() == android.R.id.home) {
onBackPressed();
} else {
Expand All @@ -297,6 +317,14 @@ public boolean onOptionsItemSelected(MenuItem item) {
return super.onOptionsItemSelected(item);
}

@Override
public void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
if (mDrawerToggle != null) {
mDrawerToggle.syncState();
}
}

public Menu getMenu() {
return mMenu;
}
Expand Down Expand Up @@ -384,4 +412,25 @@ public void toggleNavigationBar(ReadableMap params) {
mToolbar.showToolbar(animated);
}
}

public void toggleDrawer(ReadableMap params) {
if (mToolbar == null || mDrawerToggle == null) {
return;
}

boolean animated = params.getBoolean(KEY_ANIMATED);
String side = params.getString(KEY_SIDE);
String to = params.getString(KEY_TO);
switch (to) {
case "open":
mToolbar.showDrawer(animated);
break;
case "closed":
mToolbar.hideDrawer(animated);
break;
default:
mToolbar.toggleDrawer(animated);
break;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import android.graphics.drawable.Drawable;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v4.widget.DrawerLayout;
import android.view.Menu;
import android.widget.FrameLayout;

Expand All @@ -12,6 +13,7 @@
import com.facebook.react.bridge.ReadableMap;
import com.reactnativenavigation.R;
import com.reactnativenavigation.core.RctManager;
import com.reactnativenavigation.core.objects.Drawer;
import com.reactnativenavigation.core.objects.Screen;
import com.reactnativenavigation.utils.StyleHelper;
import com.reactnativenavigation.views.RnnToolBar;
Expand All @@ -25,6 +27,7 @@
* Created by guyc on 02/04/16.
*/
public class BottomTabActivity extends BaseReactActivity implements AHBottomNavigation.OnTabSelectedListener {
public static final String DRAWER_PARAMS = "drawerParams";
public static final String EXTRA_SCREENS = "extraScreens";

private static final String TAB_STYLE_BUTTON_COLOR = "tabBarButtonColor";
Expand All @@ -40,6 +43,8 @@ public class BottomTabActivity extends BaseReactActivity implements AHBottomNavi
private AHBottomNavigation mBottomNavigation;
private FrameLayout mContentFrame;
private ArrayList<ScreenStack> mScreenStacks;
private ScreenStack mDrawerStack;
private DrawerLayout mDrawerLayout;
private int mCurrentStackPosition = -1;

@Override
Expand All @@ -52,7 +57,9 @@ protected void handleOnCreate() {
mContentFrame = (FrameLayout) findViewById(R.id.contentFrame);

final ArrayList<Screen> screens = (ArrayList<Screen>) getIntent().getSerializableExtra(EXTRA_SCREENS);
Drawer drawer = (Drawer) getIntent().getSerializableExtra(DRAWER_PARAMS);
mBottomNavigation.setForceTint(true);
setupDrawer(drawer, screens.get(0));
setupTabs(getIntent().getExtras());
setupPages(screens);

Expand All @@ -65,6 +72,20 @@ public void run() {
});
}

protected void setupDrawer(Drawer drawer, Screen screen) {
if (drawer == null || drawer.left == null) {
return;
}

mDrawerStack = new ScreenStack(this);
FrameLayout drawerFrame = (FrameLayout) findViewById(R.id.drawerFrame);
drawerFrame.addView(mDrawerStack);
mDrawerStack.push(drawer.left);

mDrawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout);
mDrawerToggle = mToolbar.setupDrawer(mDrawerLayout, drawer.left, screen);
}

private void setupPages(ArrayList<Screen> screens) {
new SetupTabsTask(this, mToolbar, screens).execute();
}
Expand Down Expand Up @@ -157,6 +178,7 @@ public Screen getCurrentScreen() {

public Screen resetTo(Screen screen) {
super.resetTo(screen);
StyleHelper.updateStyles(mToolbar, screen);
return mScreenStacks.get(mCurrentStackPosition).resetTo(screen);
}

Expand Down Expand Up @@ -189,13 +211,21 @@ public void onTabSelected(int position, boolean wasSelected) {

// Hide or show back button if needed
if (getScreenStackSize() > 1) {
mToolbar.showBackButton(getCurrentScreen());
mToolbar.setNavUpButton(getCurrentScreen());
} else {
mToolbar.hideBackButton();
mToolbar.setNavUpButton();
}
}

public void setTabBadge(ReadableMap params) {
@Override
public void setNavigationTitle(ReadableMap title) {
super.setNavigationTitle(title);

AHBottomNavigationItem currentItem = mBottomNavigation.getItem(mBottomNavigation.getCurrentItem());
currentItem.setTitle(title.getString(KEY_TITLE));
mBottomNavigation.refresh();
}
public void setTabBadge(ReadableMap params) {
// Badge comes across as int, but if it's 0 clear the notification
int badgeCount = params.getInt(KEY_BADGE);
String badge = (badgeCount > 0) ? Integer.toString(badgeCount) : "";
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
package com.reactnativenavigation.activities;

import android.support.v4.widget.DrawerLayout;
import android.widget.FrameLayout;

import com.reactnativenavigation.R;
import com.reactnativenavigation.core.RctManager;
import com.reactnativenavigation.core.objects.Drawer;
import com.reactnativenavigation.core.objects.Screen;
import com.reactnativenavigation.utils.StyleHelper;
import com.reactnativenavigation.views.RnnToolBar;
Expand All @@ -13,11 +15,13 @@
* Created by guyc on 05/04/16.
*/
public class SingleScreenActivity extends BaseReactActivity {

public static final String DRAWER_PARAMS = "drawerParams";
public static final String EXTRA_SCREEN = "extraScreen";

private ScreenStack mScreenStack;
private String mNavigatorId;
private ScreenStack mScreenStack;
private ScreenStack mDrawerStack;
private DrawerLayout mDrawerLayout;

@Override
protected void handleOnCreate() {
Expand All @@ -27,7 +31,11 @@ protected void handleOnCreate() {
mToolbar = (RnnToolBar) findViewById(R.id.toolbar);

final Screen screen = (Screen) getIntent().getSerializableExtra(EXTRA_SCREEN);
final Drawer drawer = (Drawer) getIntent().getSerializableExtra(DRAWER_PARAMS);

mNavigatorId = screen.navigatorId;
setupToolbar(screen);
setupDrawer(drawer, screen);

mScreenStack = new ScreenStack(this);
FrameLayout contentFrame = (FrameLayout) findViewById(R.id.contentFrame);
Expand All @@ -44,11 +52,25 @@ public void run() {
});
}

protected void setupDrawer(Drawer drawer, Screen screen) {
if (drawer == null || drawer.left == null) {
return;
}

mDrawerStack = new ScreenStack(this);
FrameLayout drawerFrame = (FrameLayout) findViewById(R.id.drawerFrame);
drawerFrame.addView(mDrawerStack);
mDrawerStack.push(drawer.left);

mDrawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout);
mDrawerToggle = mToolbar.setupDrawer(mDrawerLayout, drawer.left, screen);
}

protected void setupToolbar(Screen screen) {
mToolbar.update(screen);
StyleHelper.updateStyles(mToolbar, screen);
}

@Override
public void push(Screen screen) {
super.push(screen);
Expand Down Expand Up @@ -76,6 +98,7 @@ public Screen popToRoot(String navigatorId) {
public Screen resetTo(Screen screen) {
super.resetTo(screen);
Screen popped = mScreenStack.resetTo(screen);
StyleHelper.updateStyles(mToolbar, screen);
return popped;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import com.reactnativenavigation.adapters.ViewPagerAdapter;
import com.reactnativenavigation.core.RctManager;
import com.reactnativenavigation.core.objects.Screen;
import com.reactnativenavigation.utils.StyleHelper;
import com.reactnativenavigation.views.RnnTabLayout;
import com.reactnativenavigation.views.RnnToolBar;

Expand Down Expand Up @@ -68,7 +69,7 @@ public boolean onCreateOptionsMenu(Menu menu) {
@Override
public void push(Screen screen) {
super.push(screen);
setNavigationStyle(screen);
StyleHelper.updateStyles(mToolbar, screen);
mAdapter.push(screen);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -107,9 +107,6 @@ public void onTabSelected(TabLayout.Tab tab) {
Screen newScreen = mScreenStacks.get(position).peek();
mToolbar.setupToolbarButtonsAsync(prevScreen, newScreen);

// Set title
mToolbar.setTitle(newScreen.title == null ? "" : newScreen.title);

// Set navigation color
StyleHelper.updateStyles(mToolbar, newScreen);

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package com.reactnativenavigation.core.objects;

import com.facebook.react.bridge.ReadableMap;

import java.io.Serializable;

public class Drawer extends JsonObject implements Serializable {
private static final long serialVersionUID = 982836768712398756L;

private static final String KEY_LEFT = "left";
private static final String KEY_RIGHT = "right";
private static final String KEY_DISABLE_OPEN_GESTURE = "disableOpenGesture";

public final Screen left;
public final Screen right;
public final boolean disableOpenGesture;

public Drawer(ReadableMap params) {
left = params.hasKey(KEY_LEFT) ? new Screen(params.getMap(KEY_LEFT)) : null;
right = params.hasKey(KEY_RIGHT) ? new Screen(params.getMap(KEY_RIGHT)) : null;
disableOpenGesture = getBoolean(params, KEY_DISABLE_OPEN_GESTURE);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ public class Screen extends JsonObject implements Serializable {
private static final String KEY_RIGHT_BUTTONS = "rightButtons";
private static final String KEY_TOOL_BAR_STYLE = "navigatorStyle";
private static final String KEY_STATUS_BAR_COLOR = "statusBarColor";
private static final String KEY_TOOL_BAR_COLOR = "toolBarColor";
private static final String KEY_TOOL_BAR_COLOR = "navBarBackgroundColor";
private static final String KEY_TOOL_BAR_HIDDEN = "navBarHidden";
private static final String KEY_NAVIGATION_BAR_COLOR = "navigationBarColor";
private static final String KEY_NAV_BAR_BUTTON_COLOR = "navBarButtonColor";
Expand All @@ -44,7 +44,7 @@ public class Screen extends JsonObject implements Serializable {
private static final String KEY_TAB_INDICATOR_COLOR = "tabIndicatorColor";
private static final String KEY_PROPS = "passProps";

public final String title;
public String title;
public final String label;
public final String screenId;
public final String screenInstanceId;
Expand Down Expand Up @@ -85,6 +85,10 @@ public Screen(ReadableMap screen) {
setToolbarStyle(screen);
}

public void setTitle(ReadableMap params) {
this.title = getString(params, KEY_TITLE);
}

public void setButtons(ReadableMap params) {
this.buttons = getButtons(params);
}
Expand Down
Loading