package tof.cv.mpp;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.ShortcutInfo;
import android.content.pm.ShortcutManager;
import android.database.Cursor;
import android.graphics.drawable.Icon;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.support.design.widget.NavigationView;
import android.support.v4.app.Fragment;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.MenuItem;
import android.view.View;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.GoogleApiAvailability;
import com.readystatesoftware.systembartint.SystemBarTintManager;
import java.util.Arrays;
import tof.cv.mpp.Utils.DbAdapterConnection;
public class WelcomeActivity extends AppCompatActivity {
private Fragment mContent;
public DrawerLayout drawerLayout = null;
NavigationView navigationView;
String close;
/**
* Called when the activity is first created.
*/
SharedPreferences settings;
ActionBarDrawerToggle mDrawerToggle;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.N_MR1) {
int num=0;
DbAdapterConnection mDbHelper = new DbAdapterConnection(this);
ShortcutManager shortcutManager = getSystemService(ShortcutManager.class);
shortcutManager.removeAllDynamicShortcuts();
mDbHelper.open();
Cursor mCursor = mDbHelper.fetchAllFav();
try {
while (mCursor.moveToNext() && num<=4) {
String item = mCursor.getString(mCursor
.getColumnIndex(DbAdapterConnection.KEY_FAV_NAME));
String itemTwo = mCursor.getString(mCursor
.getColumnIndex(DbAdapterConnection.KEY_FAV_NAMETWO));
int type = mCursor.getInt(mCursor
.getColumnIndex(DbAdapterConnection.KEY_FAV_TYPE));
ShortcutInfo shortcut = null;
Intent i;
switch (type) {
case 1:
i = new Intent(this, InfoStationActivity.class);
i.putExtra("Name", item);
i.putExtra("ID", itemTwo);
try {
shortcut = new ShortcutInfo.Builder(this, itemTwo==null?item:itemTwo)
.setShortLabel(item)
.setLongLabel(item + " - " + itemTwo)
.setIcon(Icon.createWithResource(this, R.drawable.ic_fav_station))
.setIntent(i.setAction(""))
.build();
} catch (Exception e) {
//TODO Why is ID null here? To investigate
e.printStackTrace();
}
break;
case 2:
i = new Intent(this, InfoTrainActivity.class);
i.putExtra("Name", item);
shortcut = new ShortcutInfo.Builder(this, item)
.setShortLabel(item)
.setLongLabel(item)
.setIcon(Icon.createWithResource(this, R.drawable.ic_fav_train))
.setIntent(i.setAction(""))
.build();
break;
case 3:
i = new Intent(this, WelcomeActivity.class);
i.putExtra("Departure", item);
i.putExtra("Arrival", itemTwo);
shortcut = new ShortcutInfo.Builder(this, item + " - " + itemTwo)
.setShortLabel(item + " - " + itemTwo)
.setLongLabel(item + " - " + itemTwo)
.setIcon(Icon.createWithResource(this, R.drawable.ic_fav_map))
//.setIntent(i)
.setIntent(i.setAction(""))
.build();
break;
}
if (shortcut != null)
shortcutManager.addDynamicShortcuts(Arrays.asList(shortcut));
num++;
}
} finally {
mCursor.close();
}
mDbHelper.close();
}
setContentView(R.layout.responsive_content_frame);
setProgressBarIndeterminateVisibility(false);
setSupportActionBar((Toolbar) findViewById(R.id.my_awesome_toolbar));
try {//Just in case setStatusBarColor not available
getWindow().setStatusBarColor(getResources().getColor(R.color.primarycolortransparent));
} catch (Error e) {
e.printStackTrace();
}
settings = PreferenceManager.getDefaultSharedPreferences(this);
navigationView = (NavigationView) findViewById(R.id.navigation);
drawerLayout = (DrawerLayout) findViewById(R.id.drawer);
navigationView.getMenu().clear();
if (GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(WelcomeActivity.this) == ConnectionResult.SUCCESS)
navigationView.inflateMenu(R.menu.nav);
else
navigationView.inflateMenu(R.menu.nav_nogps);
if (drawerLayout != null) {
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
mDrawerToggle = new ActionBarDrawerToggle(
this,
drawerLayout,
(Toolbar) findViewById(R.id.my_awesome_toolbar),
R.string.app_name, R.string.app_name) {
@Override
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
// code here will execute once the drawer is opened
invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
}
@Override
public void onDrawerClosed(View drawerView) {
super.onDrawerClosed(drawerView);
// Code here will execute once drawer is closed
invalidateOptionsMenu();
}
;
};
mDrawerToggle.syncState();
drawerLayout.setDrawerListener(new DrawerLayout.DrawerListener() {
@Override
public void onDrawerSlide(View drawerView, float slideOffset) {
}
@Override
public void onDrawerOpened(View drawerView) {
PreferenceManager.getDefaultSharedPreferences(WelcomeActivity.this).edit().putBoolean("navigation_drawer_learned", true).apply();
if (mContent instanceof PlannerFragment)
findViewById(R.id.tuto).setVisibility(View.GONE);
}
@Override
public void onDrawerClosed(View drawerView) {
}
@Override
public void onDrawerStateChanged(int newState) {
}
});
}
//Setting Navigation View Item Selected Listener to handle the item click of the navigation menu
if (navigationView != null) {
navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
// This method will trigger on item Click of navigation menu
@Override
public boolean onNavigationItemSelected(final MenuItem menuItem) {
//menuItem.setChecked(true);
if (drawerLayout != null)
drawerLayout.closeDrawers();
switch (menuItem.getItemId()) {
case R.id.navigation_item_plan:
mContent = new PlannerFragment();
break;
/*case R.id.navigation_item_notif:
mContent = new NotifFragment();
break;*/
case R.id.navigation_item_iss:
mContent = new TrafficFragment();
break;
case R.id.navigation_item_chat:
mContent = new ChatFragment();
break;
case R.id.navigation_item_star:
mContent = new StarredFragment();
break;
case R.id.navigation_item_closest:
mContent = new ClosestFragment();
break;
case R.id.navigation_item_game:
mContent = new GameFragment();
break;
case R.id.navigation_item_comp:
mContent = new CompensationFragment();
break;
case R.id.navigation_item_extras:
mContent = new ExtraFragment();
break;
default:
mContent = new PlannerFragment();
close = getString(R.string.activity_label_planner);
break;
}
getSupportFragmentManager().beginTransaction()
.replace(R.id.content_frame, mContent).commit();
/*
// Log.e("CVE","Hum " + navigationView.hasFocus());
Log.e("CVE","pos " + menuItem.getItemId());
// This is one of the dirtiest hack I made recently. I am not proud of it. Shame
// But in an other hand, the Navigation Drawer should not lose focus on tablets
// Or it should keep it if I call requestFocus() without delay...
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
navigationView.clearFocus();
navigationView.requestFocus();
}
}, 500);*/
return true;
}
});
}
// Set the default screen at startup from Preferences
int pos = Integer.valueOf(settings.getString(
getString(R.string.key_activity), "1"));
if (getIntent().hasExtra("Departure") && getIntent().hasExtra("Arrival"))
pos = 1;
switch (pos) {
case 1:
mContent = new PlannerFragment();
break;
case 2:
mContent = new TrafficFragment();
break;
case 3:
mContent = new ChatFragment();
break;
case 4:
mContent = new StarredFragment();
break;
case 5:
mContent = new ClosestFragment();
break;
case 6:
mContent = new GameFragment();
break;
default:
mContent = new PlannerFragment();
close = getString(R.string.activity_label_planner);
break;
}
getSupportFragmentManager().beginTransaction()
.replace(R.id.content_frame, mContent).commit();
SystemBarTintManager tintManager = new SystemBarTintManager(this);
//tintManager.setStatusBarTintEnabled(true);
tintManager.setNavigationBarTintEnabled(true);
tintManager.setTintResource(R.color.primarycolor);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
drawerLayout.openDrawer(GravityCompat.START);
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
try {
getSupportFragmentManager().putFragment(outState, "mContent", mContent);
} catch (Exception e) {
e.printStackTrace();
}
}
public void onPlusClick(View v) {
String url = "https://plus.google.com/b/108315424589085456181/108315424589085456181/posts";
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
startActivity(i);
}
public void onMailClick(View v) {
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("plain/text");
intent.putExtra(Intent.EXTRA_EMAIL, new String[]{"christophe.versieux@gmail.com"});
intent.putExtra(Intent.EXTRA_SUBJECT, "BeTrains Android");
startActivity(Intent.createChooser(intent, "Mail"));
}
public void oniRailClick(View v) {
Intent marketLaunch = new Intent(Intent.ACTION_VIEW);
marketLaunch.setData(Uri
.parse("market://details?id=be.irail.liveboards"));
startActivity(marketLaunch);
}
public void onGuiardClick(View v) {
Intent marketLaunch = new Intent(Intent.ACTION_VIEW);
marketLaunch.setData(Uri.parse("http://sph1re.fr/"));
startActivity(marketLaunch);
}
public void onCookClick(View v) {
Intent marketLaunch = new Intent(Intent.ACTION_VIEW);
marketLaunch.setData(Uri.parse("http://cookicons.co/"));
startActivity(marketLaunch);
}
}