Skip to content
Snippets Groups Projects
Commit 2b22e4ad authored by cyberta's avatar cyberta
Browse files

enable/disable save battery switch in navigation drawer depending on tethering state

parent d4156137
Branches
No related tags found
No related merge requests found
......@@ -45,6 +45,8 @@ import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import java.util.Observable;
import java.util.Observer;
import java.util.Set;
import de.blinkt.openvpn.core.VpnStatus;
......@@ -63,6 +65,7 @@ import se.leap.bitmaskclient.fragments.AlwaysOnDialog;
import se.leap.bitmaskclient.fragments.ExcludeAppsFragment;
import se.leap.bitmaskclient.fragments.LogFragment;
import se.leap.bitmaskclient.fragments.TetheringDialog;
import se.leap.bitmaskclient.tethering.TetheringObservable;
import se.leap.bitmaskclient.utils.PreferenceHelper;
import se.leap.bitmaskclient.views.IconSwitchEntry;
import se.leap.bitmaskclient.views.IconTextEntry;
......@@ -92,7 +95,7 @@ import static se.leap.bitmaskclient.utils.PreferenceHelper.usePluggableTransport
* See the <a href="https://developer.android.com/design/patterns/navigation-drawer.html#Interaction">
* design guidelines</a> for a complete explanation of the behaviors implemented here.
*/
public class NavigationDrawerFragment extends Fragment implements SharedPreferences.OnSharedPreferenceChangeListener {
public class NavigationDrawerFragment extends Fragment implements SharedPreferences.OnSharedPreferenceChangeListener, Observer {
/**
* Per the design guidelines, you should show the drawer on launch until the user manually
......@@ -149,9 +152,16 @@ public class NavigationDrawerFragment extends Fragment implements SharedPreferen
Bundle savedInstanceState) {
drawerView = inflater.inflate(R.layout.f_drawer_main, container, false);
restoreFromSavedInstance(savedInstanceState);
TetheringObservable.getInstance().addObserver(this);
return drawerView;
}
@Override
public void onDestroyView() {
super.onDestroyView();
TetheringObservable.getInstance().deleteObserver(this);
}
public boolean isDrawerOpen() {
return drawerLayout != null && drawerLayout.isDrawerOpen(fragmentContainerView);
}
......@@ -313,6 +323,13 @@ public class NavigationDrawerFragment extends Fragment implements SharedPreferen
saveBattery(getContext(), false);
}
}));
boolean enableEntry = !TetheringObservable.getInstance().getTetheringState().isVpnTetheringRunning();
enableSaveBatteryEntry(enableEntry);
}
private void enableSaveBatteryEntry(boolean enabled) {
saveBattery.setEnabled(enabled);
saveBattery.showSubtitle(!enabled);
}
private void initAlwaysOnVpnEntry() {
......@@ -630,4 +647,12 @@ public class NavigationDrawerFragment extends Fragment implements SharedPreferen
initUseBridgesEntry();
}
}
@Override
public void update(Observable o, Object arg) {
if (o instanceof TetheringObservable) {
TetheringObservable observable = (TetheringObservable) o;
enableSaveBatteryEntry(!observable.getTetheringState().isVpnTetheringRunning());
}
}
}
......@@ -88,6 +88,10 @@ public class IconSwitchEntry extends LinearLayout {
textView.setText(id);
}
public void showSubtitle(boolean show) {
subtitleView.setVisibility(show ? VISIBLE : GONE);
}
public void setIcon(@DrawableRes int id) {
iconView.setImageResource(id);
}
......
......@@ -65,6 +65,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:text="@string/save_battery"
app:subtitle="@string/subtitle_save_battery"
app:icon="@drawable/ic_battery_36"
/>
......
......@@ -102,6 +102,7 @@
<string name="vpn_certificate_is_invalid">VPN certificate is invalid. Try to download a new one.</string>
<string name="vpn_certificate_user_message">The VPN certificate is invalid. Please log in to download a new one.</string>
<string name="save_battery">Save battery</string>
<string name="subtitle_save_battery">Disabled while VPN Hotspot on</string>
<string name="save_battery_message">Background data connections will hibernate when your phone is inactive.</string>
<string name="always_on_vpn">Always-on VPN</string>
<string name="subtitle_always_on_vpn">Open Android System Settings</string>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment