Button for plugin preferences

This commit is contained in:
TebbeUbben 2018-06-04 21:56:31 +02:00
parent 80e9d769e4
commit f7b19e37a1
6 changed files with 83 additions and 2 deletions

View file

@ -65,6 +65,8 @@ public class MainActivity extends AppCompatActivity {
private ActionBarDrawerToggle actionBarDrawerToggle; private ActionBarDrawerToggle actionBarDrawerToggle;
private MenuItem pluginPreferencesMenuItem;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
@ -93,6 +95,29 @@ public class MainActivity extends AppCompatActivity {
registerBus(); registerBus();
setupTabs(); setupTabs();
setupViews(false); setupViews(false);
final ViewPager viewPager = findViewById(R.id.pager);
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
checkPluginPreferences(viewPager);
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
}
private void checkPluginPreferences(ViewPager viewPager) {
if (pluginPreferencesMenuItem == null) return;
if (((TabPageAdapter) viewPager.getAdapter()).getPluginAt(viewPager.getCurrentItem()).getPreferencesId() != -1)
pluginPreferencesMenuItem.setEnabled(true);
else pluginPreferencesMenuItem.setEnabled(false);
} }
@Override @Override
@ -191,6 +216,7 @@ public class MainActivity extends AppCompatActivity {
mPager.setAdapter(pageAdapter); mPager.setAdapter(pageAdapter);
if (switchToLast) if (switchToLast)
mPager.setCurrentItem(pageAdapter.getCount() - 1, false); mPager.setCurrentItem(pageAdapter.getCount() - 1, false);
checkPluginPreferences(mPager);
} }
private void setupTabs() { private void setupTabs() {
@ -312,6 +338,8 @@ public class MainActivity extends AppCompatActivity {
@Override @Override
public boolean onCreateOptionsMenu(Menu menu) { public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu); getMenuInflater().inflate(R.menu.menu_main, menu);
pluginPreferencesMenuItem = menu.findItem(R.id.nav_plugin_preferences);
checkPluginPreferences(findViewById(R.id.pager));
return true; return true;
} }
@ -388,6 +416,15 @@ public class MainActivity extends AppCompatActivity {
System.runFinalization(); System.runFinalization();
System.exit(0); System.exit(0);
return true; return true;
case R.id.nav_plugin_preferences:
ViewPager viewPager = findViewById(R.id.pager);
final PluginBase plugin = ((TabPageAdapter) viewPager.getAdapter()).getPluginAt(viewPager.getCurrentItem());
PasswordProtection.QueryPassword(this, R.string.settings_password, "settings_password", () -> {
Intent i = new Intent(this, PreferencesActivity.class);
i.putExtra("id", plugin.getPreferencesId());
startActivity(i);
}, null);
return true;
} }
return actionBarDrawerToggle.onOptionsItemSelected(item); return actionBarDrawerToggle.onOptionsItemSelected(item);
} }

View file

@ -1,21 +1,28 @@
package info.nightscout.androidaps; package info.nightscout.androidaps;
import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import android.support.v4.app.Fragment; import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity; import android.support.v7.app.AppCompatActivity;
import android.view.Menu;
import android.view.MenuItem; import android.view.MenuItem;
import info.nightscout.androidaps.interfaces.PluginBase; import info.nightscout.androidaps.interfaces.PluginBase;
import info.nightscout.androidaps.tabs.TabPageAdapter;
import info.nightscout.utils.PasswordProtection;
public class SingleFragmentActivity extends AppCompatActivity { public class SingleFragmentActivity extends AppCompatActivity {
private PluginBase plugin;
@Override @Override
protected void onCreate(@Nullable Bundle savedInstanceState) { protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
setContentView(R.layout.activity_single_fragment); setContentView(R.layout.activity_single_fragment);
PluginBase plugin = MainApp.getPluginsList().get(getIntent().getIntExtra("plugin", -1)); this.plugin = MainApp.getPluginsList().get(getIntent().getIntExtra("plugin", -1));
setTitle(plugin.getName()); setTitle(plugin.getName());
getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true); getSupportActionBar().setDisplayShowHomeEnabled(true);
@ -28,7 +35,25 @@ public class SingleFragmentActivity extends AppCompatActivity {
@Override @Override
public boolean onOptionsItemSelected(MenuItem item) { public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) finish(); if (item.getItemId() == android.R.id.home) {
finish();
return true;
}
else if (item.getItemId() == R.id.nav_plugin_preferences) {
PasswordProtection.QueryPassword(this, R.string.settings_password, "settings_password", () -> {
Intent i = new Intent(this, PreferencesActivity.class);
i.putExtra("id", plugin.getPreferencesId());
startActivity(i);
}, null);
return true;
}
return false; return false;
} }
@Override
public boolean onCreateOptionsMenu(Menu menu) {
if (plugin.getPreferencesId() != -1)
getMenuInflater().inflate(R.menu.menu_single_fragment, menu);
return super.onCreateOptionsMenu(menu);
}
} }

View file

@ -39,6 +39,10 @@ public class TabPageAdapter extends FragmentStatePagerAdapter {
return Fragment.instantiate(context, visibleFragmentList.get(position).pluginDescription.getFragmentClass()); return Fragment.instantiate(context, visibleFragmentList.get(position).pluginDescription.getFragmentClass());
} }
public PluginBase getPluginAt(int position) {
return visibleFragmentList.get(position);
}
@Override @Override
public void finishUpdate(ViewGroup container) { public void finishUpdate(ViewGroup container) {
try{ try{

View file

@ -6,6 +6,10 @@
android:id="@+id/nav_preferences" android:id="@+id/nav_preferences"
app:showAsAction="never" app:showAsAction="never"
android:title="@string/nav_preferences" /> android:title="@string/nav_preferences" />
<item
android:id="@+id/nav_plugin_preferences"
app:showAsAction="never"
android:title="@string/nav_plugin_preferences" />
<item <item
android:id="@+id/nav_historybrowser" android:id="@+id/nav_historybrowser"
app:showAsAction="never" app:showAsAction="never"

View file

@ -0,0 +1,10 @@
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
tools:context=".MainActivity">
<item
android:id="@+id/nav_plugin_preferences"
app:showAsAction="ifRoom"
android:icon="@drawable/ic_settings"
android:title="@string/nav_plugin_preferences" />
</menu>

View file

@ -1090,4 +1090,5 @@
<string name="exit">Exit</string> <string name="exit">Exit</string>
<string name="open_navigation">Open navigation</string> <string name="open_navigation">Open navigation</string>
<string name="close_navigation">Close navigation</string> <string name="close_navigation">Close navigation</string>
<string name="nav_plugin_preferences">Plugin preferences</string>
</resources> </resources>