Changeset View
Changeset View
Standalone View
Standalone View
src/it/reyboz/bustorino/ActivityPrincipal.java
package it.reyboz.bustorino; | package it.reyboz.bustorino; | ||||
import android.Manifest; | |||||
import android.content.Intent; | import android.content.Intent; | ||||
import android.content.SharedPreferences; | import android.content.SharedPreferences; | ||||
import android.content.pm.PackageManager; | |||||
import android.content.res.Configuration; | import android.content.res.Configuration; | ||||
import android.net.Uri; | import android.net.Uri; | ||||
import android.os.Bundle; | import android.os.Bundle; | ||||
import android.util.Log; | import android.util.Log; | ||||
import android.view.Menu; | import android.view.Menu; | ||||
import android.view.MenuItem; | import android.view.MenuItem; | ||||
import android.view.View; | |||||
import android.widget.Toast; | import android.widget.Toast; | ||||
import androidx.annotation.NonNull; | import androidx.annotation.NonNull; | ||||
import androidx.annotation.Nullable; | import androidx.annotation.Nullable; | ||||
import androidx.appcompat.app.ActionBarDrawerToggle; | import androidx.appcompat.app.ActionBarDrawerToggle; | ||||
import androidx.appcompat.widget.Toolbar; | import androidx.appcompat.widget.Toolbar; | ||||
import androidx.core.view.GravityCompat; | import androidx.core.view.GravityCompat; | ||||
import androidx.drawerlayout.widget.DrawerLayout; | import androidx.drawerlayout.widget.DrawerLayout; | ||||
import androidx.fragment.app.Fragment; | import androidx.fragment.app.Fragment; | ||||
import androidx.fragment.app.FragmentManager; | import androidx.fragment.app.FragmentManager; | ||||
import androidx.fragment.app.FragmentTransaction; | import androidx.fragment.app.FragmentTransaction; | ||||
import androidx.work.BackoffPolicy; | import androidx.work.BackoffPolicy; | ||||
import androidx.work.Constraints; | import androidx.work.Constraints; | ||||
import androidx.work.ExistingPeriodicWorkPolicy; | import androidx.work.ExistingPeriodicWorkPolicy; | ||||
import androidx.work.NetworkType; | import androidx.work.NetworkType; | ||||
import androidx.work.PeriodicWorkRequest; | import androidx.work.PeriodicWorkRequest; | ||||
import androidx.work.WorkInfo; | import androidx.work.WorkInfo; | ||||
import androidx.work.WorkManager; | import androidx.work.WorkManager; | ||||
import com.google.android.material.navigation.NavigationView; | import com.google.android.material.navigation.NavigationView; | ||||
import com.google.android.material.snackbar.Snackbar; | import com.google.android.material.snackbar.Snackbar; | ||||
import java.util.Arrays; | |||||
import java.util.concurrent.TimeUnit; | import java.util.concurrent.TimeUnit; | ||||
import it.reyboz.bustorino.backend.Stop; | import it.reyboz.bustorino.backend.Stop; | ||||
import it.reyboz.bustorino.data.DBUpdateWorker; | import it.reyboz.bustorino.data.DBUpdateWorker; | ||||
import it.reyboz.bustorino.data.DatabaseUpdate; | import it.reyboz.bustorino.data.DatabaseUpdate; | ||||
import it.reyboz.bustorino.fragments.FavoritesFragment; | import it.reyboz.bustorino.fragments.FavoritesFragment; | ||||
import it.reyboz.bustorino.fragments.FragmentKind; | import it.reyboz.bustorino.fragments.FragmentKind; | ||||
import it.reyboz.bustorino.fragments.FragmentListenerMain; | import it.reyboz.bustorino.fragments.FragmentListenerMain; | ||||
Show All 36 Lines | protected void onCreate(@Nullable Bundle savedInstanceState) { | ||||
drawerToggle = setupDrawerToggle(mToolbar); | drawerToggle = setupDrawerToggle(mToolbar); | ||||
// Setup toggle to display hamburger icon with nice animation | // Setup toggle to display hamburger icon with nice animation | ||||
drawerToggle.setDrawerIndicatorEnabled(true); | drawerToggle.setDrawerIndicatorEnabled(true); | ||||
drawerToggle.syncState(); | drawerToggle.syncState(); | ||||
mDrawer.addDrawerListener(drawerToggle); | mDrawer.addDrawerListener(drawerToggle); | ||||
mDrawer.addDrawerListener(new DrawerLayout.DrawerListener() { | |||||
@Override | |||||
public void onDrawerSlide(@NonNull View drawerView, float slideOffset) { | |||||
} | |||||
@Override | |||||
public void onDrawerOpened(@NonNull View drawerView) { | |||||
hideKeyboard(); | |||||
} | |||||
@Override | |||||
public void onDrawerClosed(@NonNull View drawerView) { | |||||
} | |||||
@Override | |||||
public void onDrawerStateChanged(int newState) { | |||||
} | |||||
}); | |||||
mNavView = findViewById(R.id.nvView); | mNavView = findViewById(R.id.nvView); | ||||
setupDrawerContent(mNavView); | setupDrawerContent(mNavView); | ||||
/// LEGACY CODE | /// LEGACY CODE | ||||
//---------------------------- START INTENT CHECK QUEUE ------------------------------------ | //---------------------------- START INTENT CHECK QUEUE ------------------------------------ | ||||
// Intercept calls from URL intent | // Intercept calls from URL intent | ||||
boolean tryedFromIntent = false; | boolean tryedFromIntent = false; | ||||
String busStopID = null; | String busStopID = null; | ||||
Uri data = getIntent().getData(); | Uri data = getIntent().getData(); | ||||
Show All 32 Lines | protected void onCreate(@Nullable Bundle savedInstanceState) { | ||||
} | } | ||||
} else { | } else { | ||||
// If you are here an intent has worked successfully | // If you are here an intent has worked successfully | ||||
//setBusStopSearchByIDEditText(busStopID); | //setBusStopSearchByIDEditText(busStopID); | ||||
requestArrivalsForStopID(busStopID); | requestArrivalsForStopID(busStopID); | ||||
} | } | ||||
//Try (hopefully) database update | //Try (hopefully) database update | ||||
PeriodicWorkRequest wr = new PeriodicWorkRequest.Builder(DBUpdateWorker.class, 1, TimeUnit.DAYS) | PeriodicWorkRequest wr = new PeriodicWorkRequest.Builder(DBUpdateWorker.class, 1, TimeUnit.DAYS) | ||||
.setBackoffCriteria(BackoffPolicy.LINEAR, 30, TimeUnit.MINUTES) | .setBackoffCriteria(BackoffPolicy.LINEAR, 30, TimeUnit.MINUTES) | ||||
.setConstraints(new Constraints.Builder().setRequiredNetworkType(NetworkType.CONNECTED) | .setConstraints(new Constraints.Builder().setRequiredNetworkType(NetworkType.CONNECTED) | ||||
.build()) | .build()) | ||||
.build(); | .build(); | ||||
final WorkManager workManager = WorkManager.getInstance(this); | final WorkManager workManager = WorkManager.getInstance(this); | ||||
final int version = theShPr.getInt(DatabaseUpdate.DB_VERSION_KEY, -10); | final int version = theShPr.getInt(DatabaseUpdate.DB_VERSION_KEY, -10); | ||||
Show All 36 Lines | public class ActivityPrincipal extends GeneralActivity implements FragmentListenerMain { | ||||
} | } | ||||
private ActionBarDrawerToggle setupDrawerToggle(Toolbar toolbar) { | private ActionBarDrawerToggle setupDrawerToggle(Toolbar toolbar) { | ||||
// NOTE: Make sure you pass in a valid toolbar reference. ActionBarDrawToggle() does not require it | // NOTE: Make sure you pass in a valid toolbar reference. ActionBarDrawToggle() does not require it | ||||
// and will not render the hamburger icon without it. | // and will not render the hamburger icon without it. | ||||
return new ActionBarDrawerToggle(this, mDrawer, toolbar, R.string.drawer_open, R.string.drawer_close); | return new ActionBarDrawerToggle(this, mDrawer, toolbar, R.string.drawer_open, R.string.drawer_close); | ||||
} | } | ||||
/** | |||||
* Setup drawer actions | |||||
* @param navigationView the navigation view on which to set the callbacks | |||||
*/ | |||||
private void setupDrawerContent(NavigationView navigationView) { | private void setupDrawerContent(NavigationView navigationView) { | ||||
navigationView.setNavigationItemSelectedListener( | navigationView.setNavigationItemSelectedListener( | ||||
menuItem -> { | menuItem -> { | ||||
if (menuItem.getItemId() == R.id.drawer_action_settings) { | if (menuItem.getItemId() == R.id.drawer_action_settings) { | ||||
Log.d("MAINBusTO", "Pressed button preferences"); | Log.d("MAINBusTO", "Pressed button preferences"); | ||||
closeDrawerIfOpen(); | closeDrawerIfOpen(); | ||||
startActivity(new Intent(ActivityPrincipal.this, ActivitySettings.class)); | startActivity(new Intent(ActivityPrincipal.this, ActivitySettings.class)); | ||||
return true; | return true; | ||||
} else if(menuItem.getItemId() == R.id.nav_favorites_item){ | } else if(menuItem.getItemId() == R.id.nav_favorites_item){ | ||||
closeDrawerIfOpen(); | closeDrawerIfOpen(); | ||||
//get Fragment | //get Fragment | ||||
FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); | FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); | ||||
FavoritesFragment fragment = FavoritesFragment.newInstance(); | FavoritesFragment fragment = FavoritesFragment.newInstance(); | ||||
ft.replace(R.id.mainActContentFrame,fragment, TAG_FAVORITES); | ft.replace(R.id.mainActContentFrame,fragment, TAG_FAVORITES); | ||||
ft.addToBackStack(null); | ft.addToBackStack(null); | ||||
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); | ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); | ||||
ft.commit(); | ft.commit(); | ||||
return true; | return true; | ||||
} else if(menuItem.getItemId() == R.id.nav_arrivals){ | } else if(menuItem.getItemId() == R.id.nav_arrivals){ | ||||
closeDrawerIfOpen(); | closeDrawerIfOpen(); | ||||
showMainFragment(); | showMainFragment(); | ||||
return true; | return true; | ||||
} else if(menuItem.getItemId() == R.id.nav_map_item){ | } else if(menuItem.getItemId() == R.id.nav_map_item){ | ||||
closeDrawerIfOpen(); | closeDrawerIfOpen(); | ||||
final String permission = Manifest.permission.WRITE_EXTERNAL_STORAGE; | |||||
int result = askForPermissionIfNeeded(permission, STORAGE_PERMISSION_REQ); | |||||
switch (result) { | |||||
case PERMISSION_OK: | |||||
createAndShowMapFragment(null); | createAndShowMapFragment(null); | ||||
break; | |||||
case PERMISSION_ASKING: | |||||
permissionDoneRunnables.put(permission, | |||||
() -> createAndShowMapFragment(null)); | |||||
break; | |||||
case PERMISSION_NEG_CANNOT_ASK: | |||||
String storage_perm = getString(R.string.storage_permission); | |||||
String text = getString(R.string.too_many_permission_asks, storage_perm); | |||||
Toast.makeText(getApplicationContext(),text, Toast.LENGTH_LONG).show(); | |||||
} | |||||
return true; | return true; | ||||
} | } | ||||
//selectDrawerItem(menuItem); | //selectDrawerItem(menuItem); | ||||
Log.d(DEBUG_TAG, "pressed item "+menuItem.toString()); | Log.d(DEBUG_TAG, "pressed item "+menuItem.toString()); | ||||
return true; | return true; | ||||
}); | }); | ||||
Show All 27 Lines | public class ActivityPrincipal extends GeneralActivity implements FragmentListenerMain { | ||||
@Override | @Override | ||||
public boolean onCreateOptionsMenu(Menu menu) { | public boolean onCreateOptionsMenu(Menu menu) { | ||||
getMenuInflater().inflate(R.menu.extra_menu_items, menu); | getMenuInflater().inflate(R.menu.extra_menu_items, menu); | ||||
return super.onCreateOptionsMenu(menu); | return super.onCreateOptionsMenu(menu); | ||||
} | } | ||||
@Override | @Override | ||||
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { | |||||
super.onRequestPermissionsResult(requestCode, permissions, grantResults); | |||||
if (requestCode==STORAGE_PERMISSION_REQ){ | |||||
final String storagePerm = Manifest.permission.WRITE_EXTERNAL_STORAGE; | |||||
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { | |||||
Log.d(DEBUG_TAG, "Permissions check: " + Arrays.toString(permissions)); | |||||
if (permissionDoneRunnables.containsKey(storagePerm)) { | |||||
Runnable toRun = permissionDoneRunnables.get(storagePerm); | |||||
if (toRun != null) | |||||
toRun.run(); | |||||
permissionDoneRunnables.remove(storagePerm); | |||||
} | |||||
} else { | |||||
//permission denied | |||||
showToastMessage(R.string.permission_storage_maps_msg, false); | |||||
} | |||||
} | |||||
} | |||||
@Override | |||||
public boolean onOptionsItemSelected(@NonNull MenuItem item) { | public boolean onOptionsItemSelected(@NonNull MenuItem item) { | ||||
int[] cases = {R.id.nav_arrivals, R.id.nav_favorites_item}; | int[] cases = {R.id.nav_arrivals, R.id.nav_favorites_item}; | ||||
Log.d(DEBUG_TAG, "Item pressed"); | Log.d(DEBUG_TAG, "Item pressed"); | ||||
if (item.getItemId() == android.R.id.home) { | if (item.getItemId() == android.R.id.home) { | ||||
mDrawer.openDrawer(GravityCompat.START); | mDrawer.openDrawer(GravityCompat.START); | ||||
▲ Show 20 Lines • Show All 114 Lines • ▼ Show 20 Lines | public class ActivityPrincipal extends GeneralActivity implements FragmentListenerMain { | ||||
}*/ | }*/ | ||||
@Override | @Override | ||||
public void readyGUIfor(FragmentKind fragmentType) { | public void readyGUIfor(FragmentKind fragmentType) { | ||||
MainScreenFragment probableFragment = getMainFragmentIfVisible(); | MainScreenFragment probableFragment = getMainFragmentIfVisible(); | ||||
if (probableFragment!=null){ | if (probableFragment!=null){ | ||||
probableFragment.readyGUIfor(fragmentType); | probableFragment.readyGUIfor(fragmentType); | ||||
} | } | ||||
int titleResId; | |||||
switch (fragmentType){ | switch (fragmentType){ | ||||
case MAP: | case MAP: | ||||
mNavView.setCheckedItem(R.id.nav_map_item); | mNavView.setCheckedItem(R.id.nav_map_item); | ||||
titleResId = R.string.map; | |||||
break; | break; | ||||
case FAVORITES: | case FAVORITES: | ||||
mNavView.setCheckedItem(R.id.nav_favorites_item); | mNavView.setCheckedItem(R.id.nav_favorites_item); | ||||
titleResId = R.string.nav_favorites_text; | |||||
break; | break; | ||||
case ARRIVALS: | case ARRIVALS: | ||||
case NEARBY_STOPS: | titleResId = R.string.nav_arrivals_text; | ||||
mNavView.setCheckedItem(R.id.nav_arrivals); | |||||
break; | |||||
case STOPS: | case STOPS: | ||||
titleResId = R.string.stop_search_view_title; | |||||
mNavView.setCheckedItem(R.id.nav_arrivals); | |||||
break; | |||||
case MAIN_SCREEN_FRAGMENT: | case MAIN_SCREEN_FRAGMENT: | ||||
case NEARBY_STOPS: | |||||
case NEARBY_ARRIVALS: | case NEARBY_ARRIVALS: | ||||
titleResId=R.string.app_name_full; | |||||
mNavView.setCheckedItem(R.id.nav_arrivals); | mNavView.setCheckedItem(R.id.nav_arrivals); | ||||
break; | break; | ||||
default: | |||||
titleResId = 0; | |||||
} | } | ||||
if(getSupportActionBar()!=null && titleResId!=0) | |||||
getSupportActionBar().setTitle(titleResId); | |||||
} | } | ||||
@Override | @Override | ||||
public void requestArrivalsForStopID(String ID) { | public void requestArrivalsForStopID(String ID) { | ||||
//register if the request came from the main fragment or not | //register if the request came from the main fragment or not | ||||
MainScreenFragment probableFragment = getMainFragmentIfVisible(); | MainScreenFragment probableFragment = getMainFragmentIfVisible(); | ||||
showingMainFragmentFromOther = (probableFragment==null); | showingMainFragmentFromOther = (probableFragment==null); | ||||
▲ Show 20 Lines • Show All 68 Lines • Show Last 20 Lines |
Public contents are in Creative Commons Attribution-ShareAlike 4.0 (CC-BY-SA) or GNU Free Documentation License (at your option) unless otherwise noted. · Contact / Register