Skip to content

Instantly share code, notes, and snippets.

@yakov116
Created May 23, 2017 19:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save yakov116/a12c2631a122c01da84c221ff9b8314b to your computer and use it in GitHub Desktop.
Save yakov116/a12c2631a122c01da84c221ff9b8314b to your computer and use it in GitHub Desktop.
package com.fastaccess.ui.modules.main;
import android.content.Intent;
import android.graphics.Typeface;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.design.widget.FloatingActionButton;
import android.support.v4.view.GravityCompat;
import android.view.Menu;
import android.view.MenuItem;
import com.fastaccess.R;
import com.fastaccess.data.dao.model.Notification;
import com.fastaccess.helper.BundleConstant;
import com.fastaccess.helper.TypeFaceHelper;
import com.fastaccess.helper.ViewHelper;
import com.fastaccess.ui.base.BaseActivity;
import com.fastaccess.ui.modules.feeds.FeedsFragment;
import com.fastaccess.ui.modules.main.issues.pager.MyIssuesPagerFragment;
import com.fastaccess.ui.modules.main.pullrequests.pager.MyPullsPagerFragment;
import com.fastaccess.ui.modules.notification.NotificationActivity;
import com.fastaccess.ui.modules.search.SearchActivity;
import com.fastaccess.ui.modules.settings.SlackBottomSheetDialog;
import butterknife.BindView;
import butterknife.OnClick;
import icepick.State;
import it.sephiroth.android.library.bottomnavigation.BottomNavigation;
import shortbread.Shortcut;
@Shortcut(id = "feeds", icon = R.drawable.ic_github_shortcut, shortLabelRes = R.string.feeds, rank = 1)
public class MainActivity extends BaseActivity<MainMvp.View, MainPresenter> implements MainMvp.View {
@State @MainMvp.NavigationType int navType = MainMvp.FEEDS;
@BindView(R.id.bottomNavigation) BottomNavigation bottomNavigation;
@BindView(R.id.fab) FloatingActionButton fab;
@OnClick(R.id.fab) void onFilter() {}
@NonNull @Override public MainPresenter providePresenter() {
return new MainPresenter();
}
@Override protected int layout() {
return R.layout.activity_main_view;
}
@Override protected boolean isTransparent() {
return true;
}
@Override protected boolean canBack() {
return false;
}
@Override protected boolean isSecured() {
return false;
}
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState == null) {
if (getIntent() != null && getIntent().getBooleanExtra(SlackBottomSheetDialog.TAG, false)) {
new SlackBottomSheetDialog().show(getSupportFragmentManager(), SlackBottomSheetDialog.TAG);
}
}
selectHome(false);
hideShowShadow(navType == MainMvp.FEEDS);
setToolbarIcon(R.drawable.ic_menu);
onInit(savedInstanceState);
fab.setImageResource(R.drawable.ic_filter);
onNewIntent(getIntent());
}
@Override protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
if (intent != null && intent.getExtras() != null) {
boolean recreate = intent.getExtras().getBoolean(BundleConstant.YES_NO_EXTRA);
if (recreate) recreate();
}
}
@Override public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.search_menu, menu);
if (isLoggedIn() && Notification.hasUnreadNotifications()) {
ViewHelper.tintDrawable(menu.findItem(R.id.notifications).setIcon(R.drawable.ic_ring).getIcon(), ViewHelper.getAccentColor(this));
}
return super.onCreateOptionsMenu(menu);
}
@Override public boolean onOptionsItemSelected(@NonNull MenuItem item) {
if (item.getItemId() == android.R.id.home) {
if (drawer != null) drawer.openDrawer(GravityCompat.START);
return true;
} else if (item.getItemId() == R.id.search) {
startActivity(new Intent(this, SearchActivity.class));
return true;
} else if (item.getItemId() == R.id.notifications) {
ViewHelper.tintDrawable(item.setIcon(R.drawable.ic_notifications_none).getIcon(), ViewHelper.getIconColor(this));
startActivity(new Intent(this, NotificationActivity.class));
return true;
}
return super.onOptionsItemSelected(item);
}
@Override public void onNavigationChanged(@MainMvp.NavigationType int navType) {
this.navType = navType;
//noinspection WrongConstant
if (bottomNavigation.getSelectedIndex() != navType) bottomNavigation.setSelectedIndex(navType, true);
hideShowShadow(navType == MainMvp.FEEDS);
getPresenter().onModuleChanged(getSupportFragmentManager(), navType);
}
@Override public void onUpdateDrawerMenuHeader() {
setupNavigationView(extraNav);
}
@Shortcut(id = "myIssues", icon = R.drawable.ic_issues_shortcut, shortLabelRes = R.string.issues, rank = 2, action = "myIssues")
public void myIssues() {}//do nothing
@Shortcut(id = "myPulls", icon = R.drawable.ic_pull_requests_shortcut, shortLabelRes = R.string.pull_requests, rank = 3, action = "myPulls")
public void myPulls() {}//do nothing
private void onInit(@Nullable Bundle savedInstanceState) {
if (isLoggedIn()) {
if (savedInstanceState == null) {
boolean attachFeeds = true;
if (getIntent().getAction() != null) {
if (getIntent().getAction().equalsIgnoreCase("myPulls")) {
navType = MainMvp.PULL_REQUESTS;
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.container, MyPullsPagerFragment.newInstance(), MyPullsPagerFragment.TAG)
.commit();
bottomNavigation.setSelectedIndex(2, true);
attachFeeds = false;
} else if (getIntent().getAction().equalsIgnoreCase("myIssues")) {
navType = MainMvp.ISSUES;
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.container, MyIssuesPagerFragment.newInstance(), MyIssuesPagerFragment.TAG)
.commit();
bottomNavigation.setSelectedIndex(1, true);
attachFeeds = false;
}
}
hideShowShadow(navType == MainMvp.FEEDS);
if (attachFeeds) {
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.container, FeedsFragment.newInstance(), FeedsFragment.TAG)
.commit();
}
}
Typeface myTypeface = TypeFaceHelper.getTypeface();
bottomNavigation.setDefaultTypeface(myTypeface);
bottomNavigation.setOnMenuItemClickListener(getPresenter());
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment