mirror of
https://gitlab.com/oeffi/oeffi.git
synced 2025-07-09 10:58:47 +00:00
OeffiMainActivity: migrate navigation drawer menu to MenuProvider
This commit is contained in:
parent
75594e2904
commit
385845c78e
1 changed files with 89 additions and 96 deletions
|
@ -34,9 +34,11 @@ import android.text.format.DateUtils;
|
||||||
import android.view.Gravity;
|
import android.view.Gravity;
|
||||||
import android.view.KeyEvent;
|
import android.view.KeyEvent;
|
||||||
import android.view.Menu;
|
import android.view.Menu;
|
||||||
|
import android.view.MenuInflater;
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
|
import androidx.core.view.MenuProvider;
|
||||||
import androidx.drawerlayout.widget.DrawerLayout;
|
import androidx.drawerlayout.widget.DrawerLayout;
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||||
import androidx.recyclerview.widget.RecyclerView;
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
@ -90,6 +92,7 @@ public abstract class OeffiMainActivity extends OeffiActivity {
|
||||||
|
|
||||||
private DrawerLayout navigationDrawerLayout;
|
private DrawerLayout navigationDrawerLayout;
|
||||||
private RecyclerView navigationDrawerListView;
|
private RecyclerView navigationDrawerListView;
|
||||||
|
private MenuProvider navigationDrawerMenuProvider;
|
||||||
private View navigationDrawerFooterView;
|
private View navigationDrawerFooterView;
|
||||||
private View navigationDrawerFooterHeartView;
|
private View navigationDrawerFooterHeartView;
|
||||||
|
|
||||||
|
@ -113,6 +116,89 @@ public abstract class OeffiMainActivity extends OeffiActivity {
|
||||||
versionCode = applicationVersionCode();
|
versionCode = applicationVersionCode();
|
||||||
lastVersionCode = prefs.getInt(Constants.PREFS_KEY_LAST_VERSION, 0);
|
lastVersionCode = prefs.getInt(Constants.PREFS_KEY_LAST_VERSION, 0);
|
||||||
|
|
||||||
|
navigationDrawerMenuProvider = new MenuProvider() {
|
||||||
|
@Override
|
||||||
|
public void onCreateMenu(final Menu menu, final MenuInflater inflater) {
|
||||||
|
inflater.inflate(R.menu.global_options, menu);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onPrepareMenu(final Menu menu) {
|
||||||
|
final MenuItem stationsItem = menu.findItem(R.id.global_options_stations);
|
||||||
|
stationsItem.setChecked(OeffiMainActivity.this instanceof StationsActivity);
|
||||||
|
final MenuItem directionsItem = menu.findItem(R.id.global_options_directions);
|
||||||
|
directionsItem.setChecked(OeffiMainActivity.this instanceof DirectionsActivity);
|
||||||
|
final MenuItem plansItem = menu.findItem(R.id.global_options_plans);
|
||||||
|
plansItem.setChecked(OeffiMainActivity.this instanceof PlansPickerActivity);
|
||||||
|
final MenuItem donateItem = menu.findItem(R.id.global_options_donate);
|
||||||
|
donateItem.setVisible(Variants.ENABLE_DONATE);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onMenuItemSelected(final MenuItem item) {
|
||||||
|
switch (item.getItemId()) {
|
||||||
|
case R.id.global_options_stations: {
|
||||||
|
if (OeffiMainActivity.this instanceof StationsActivity)
|
||||||
|
return true;
|
||||||
|
final Intent intent = new Intent(OeffiMainActivity.this, StationsActivity.class);
|
||||||
|
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||||
|
startActivity(intent);
|
||||||
|
finish();
|
||||||
|
overridePendingTransition(R.anim.enter_from_left, R.anim.exit_to_right);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
case R.id.global_options_directions: {
|
||||||
|
if (OeffiMainActivity.this instanceof DirectionsActivity)
|
||||||
|
return true;
|
||||||
|
final Intent intent = new Intent(OeffiMainActivity.this, DirectionsActivity.class);
|
||||||
|
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||||
|
startActivity(intent);
|
||||||
|
finish();
|
||||||
|
if (OeffiMainActivity.this instanceof StationsActivity)
|
||||||
|
overridePendingTransition(R.anim.enter_from_right, R.anim.exit_to_left);
|
||||||
|
else
|
||||||
|
overridePendingTransition(R.anim.enter_from_left, R.anim.exit_to_right);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
case R.id.global_options_plans: {
|
||||||
|
if (OeffiMainActivity.this instanceof PlansPickerActivity)
|
||||||
|
return true;
|
||||||
|
final Intent intent = new Intent(OeffiMainActivity.this, PlansPickerActivity.class);
|
||||||
|
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||||
|
startActivity(intent);
|
||||||
|
finish();
|
||||||
|
overridePendingTransition(R.anim.enter_from_right, R.anim.exit_to_left);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
case R.id.global_options_donate: {
|
||||||
|
if (Variants.ENABLE_DONATE)
|
||||||
|
PreferenceActivity.start(OeffiMainActivity.this, DonateFragment.class.getName());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
case R.id.global_options_report_bug: {
|
||||||
|
ErrorReporter.sendBugMail(OeffiMainActivity.this, application.packageInfo());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
case R.id.global_options_preferences: {
|
||||||
|
PreferenceActivity.start(OeffiMainActivity.this);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
case R.id.global_options_about: {
|
||||||
|
PreferenceActivity.start(OeffiMainActivity.this, AboutFragment.class.getName());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
if (prefsGetNetwork() == null) {
|
if (prefsGetNetwork() == null) {
|
||||||
NetworkPickerActivity.start(this);
|
NetworkPickerActivity.start(this);
|
||||||
|
|
||||||
|
@ -177,13 +263,13 @@ public abstract class OeffiMainActivity extends OeffiActivity {
|
||||||
|
|
||||||
final NavigationMenuAdapter menuAdapter = new NavigationMenuAdapter(this,
|
final NavigationMenuAdapter menuAdapter = new NavigationMenuAdapter(this,
|
||||||
item -> {
|
item -> {
|
||||||
onOptionsItemSelected(item);
|
navigationDrawerMenuProvider.onMenuItemSelected(item);
|
||||||
navigationDrawerLayout.closeDrawers();
|
navigationDrawerLayout.closeDrawers();
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
final Menu menu = menuAdapter.getMenu();
|
final Menu menu = menuAdapter.getMenu();
|
||||||
onCreateOptionsMenu(menu);
|
navigationDrawerMenuProvider.onCreateMenu(menu, getMenuInflater());
|
||||||
onPrepareOptionsMenu(menu);
|
navigationDrawerMenuProvider.onPrepareMenu(menu);
|
||||||
|
|
||||||
navigationDrawerListView.setLayoutManager(new LinearLayoutManager(this));
|
navigationDrawerListView.setLayoutManager(new LinearLayoutManager(this));
|
||||||
navigationDrawerListView
|
navigationDrawerListView
|
||||||
|
@ -236,99 +322,6 @@ public abstract class OeffiMainActivity extends OeffiActivity {
|
||||||
navigationDrawerLayout.closeDrawer(Gravity.LEFT);
|
navigationDrawerLayout.closeDrawer(Gravity.LEFT);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean onCreateOptionsMenu(final Menu menu) {
|
|
||||||
getMenuInflater().inflate(R.menu.global_options, menu);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean onPrepareOptionsMenu(final Menu menu) {
|
|
||||||
final MenuItem stationsItem = menu.findItem(R.id.global_options_stations);
|
|
||||||
stationsItem.setChecked(this instanceof StationsActivity);
|
|
||||||
|
|
||||||
final MenuItem directionsItem = menu.findItem(R.id.global_options_directions);
|
|
||||||
directionsItem.setChecked(this instanceof DirectionsActivity);
|
|
||||||
|
|
||||||
final MenuItem plansItem = menu.findItem(R.id.global_options_plans);
|
|
||||||
plansItem.setChecked(this instanceof PlansPickerActivity);
|
|
||||||
|
|
||||||
final MenuItem donateItem = menu.findItem(R.id.global_options_donate);
|
|
||||||
donateItem.setVisible(Variants.ENABLE_DONATE);
|
|
||||||
|
|
||||||
return super.onPrepareOptionsMenu(menu);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean onOptionsItemSelected(final MenuItem item) {
|
|
||||||
switch (item.getItemId()) {
|
|
||||||
case R.id.global_options_stations: {
|
|
||||||
if (this instanceof StationsActivity)
|
|
||||||
return true;
|
|
||||||
|
|
||||||
final Intent intent = new Intent(this, StationsActivity.class);
|
|
||||||
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
|
||||||
startActivity(intent);
|
|
||||||
finish();
|
|
||||||
overridePendingTransition(R.anim.enter_from_left, R.anim.exit_to_right);
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
case R.id.global_options_directions: {
|
|
||||||
if (this instanceof DirectionsActivity)
|
|
||||||
return true;
|
|
||||||
|
|
||||||
final Intent intent = new Intent(this, DirectionsActivity.class);
|
|
||||||
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
|
||||||
startActivity(intent);
|
|
||||||
finish();
|
|
||||||
if (this instanceof StationsActivity)
|
|
||||||
overridePendingTransition(R.anim.enter_from_right, R.anim.exit_to_left);
|
|
||||||
else
|
|
||||||
overridePendingTransition(R.anim.enter_from_left, R.anim.exit_to_right);
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
case R.id.global_options_plans: {
|
|
||||||
if (this instanceof PlansPickerActivity)
|
|
||||||
return true;
|
|
||||||
|
|
||||||
final Intent intent = new Intent(this, PlansPickerActivity.class);
|
|
||||||
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
|
||||||
startActivity(intent);
|
|
||||||
finish();
|
|
||||||
overridePendingTransition(R.anim.enter_from_right, R.anim.exit_to_left);
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
case R.id.global_options_donate: {
|
|
||||||
if (Variants.ENABLE_DONATE)
|
|
||||||
PreferenceActivity.start(this, DonateFragment.class.getName());
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
case R.id.global_options_report_bug: {
|
|
||||||
ErrorReporter.sendBugMail(this, application.packageInfo());
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
case R.id.global_options_preferences: {
|
|
||||||
PreferenceActivity.start(this);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
case R.id.global_options_about: {
|
|
||||||
PreferenceActivity.start(this, AboutFragment.class.getName());
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onKeyDown(final int keyCode, final KeyEvent event) {
|
public boolean onKeyDown(final int keyCode, final KeyEvent event) {
|
||||||
if (keyCode == KeyEvent.KEYCODE_MENU) {
|
if (keyCode == KeyEvent.KEYCODE_MENU) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue