diff options
| -rw-r--r-- | main/src/main/java/de/blinkt/openvpn/VpnProfile.java | 8 | ||||
| -rw-r--r-- | main/src/main/java/de/blinkt/openvpn/fragments/ConnectionsAdapter.java | 2 | ||||
| -rw-r--r-- | main/src/main/java/de/blinkt/openvpn/fragments/Settings_Allowed_Apps.java | 35 | ||||
| -rw-r--r-- | main/src/main/res/drawable/bg_switchbar.xml | 9 | ||||
| -rw-r--r-- | main/src/main/res/layout/allowed_vpn_apps.xml | 46 | ||||
| -rw-r--r-- | main/src/main/res/layout/connections.xml | 4 | ||||
| -rw-r--r-- | main/src/main/res/menu/connections.xml | 2 | ||||
| -rw-r--r-- | main/src/main/res/values-v21/styles.xml | 1 | ||||
| -rw-r--r-- | main/src/main/res/values/colours.xml | 10 | ||||
| -rw-r--r-- | main/src/main/res/values/dimens.xml | 1 | ||||
| -rwxr-xr-x | main/src/main/res/values/strings.xml | 5 | ||||
| -rw-r--r-- | main/src/main/res/values/styles.xml | 7 | 
12 files changed, 82 insertions, 48 deletions
| diff --git a/main/src/main/java/de/blinkt/openvpn/VpnProfile.java b/main/src/main/java/de/blinkt/openvpn/VpnProfile.java index f5e55504..b2246b8c 100644 --- a/main/src/main/java/de/blinkt/openvpn/VpnProfile.java +++ b/main/src/main/java/de/blinkt/openvpn/VpnProfile.java @@ -802,6 +802,14 @@ public class VpnProfile implements Serializable {          if (!mUseDefaultRoute && (getCustomRoutes(mCustomRoutes) == null || getCustomRoutes(mExcludedRoutes) ==null))              return R.string.custom_route_format_error; +        boolean noRemoteEnabled = true; +        for (Connection c : mConnections) +            if (c.mEnabled) +                noRemoteEnabled = false; + +        if(noRemoteEnabled) +            return R.string.remote_no_server_selected; +          // Everything okay          return R.string.no_error_found; diff --git a/main/src/main/java/de/blinkt/openvpn/fragments/ConnectionsAdapter.java b/main/src/main/java/de/blinkt/openvpn/fragments/ConnectionsAdapter.java index 9fd7c04f..6d11c7d7 100644 --- a/main/src/main/java/de/blinkt/openvpn/fragments/ConnectionsAdapter.java +++ b/main/src/main/java/de/blinkt/openvpn/fragments/ConnectionsAdapter.java @@ -184,7 +184,7 @@ public class ConnectionsAdapter extends RecyclerView.Adapter<ConnectionsAdapter.              mConnections2[i-1]=mConnections[i];          }          mConnections = mConnections2; -        displayWarningifNoneEnabled(); +      }      @Override diff --git a/main/src/main/java/de/blinkt/openvpn/fragments/Settings_Allowed_Apps.java b/main/src/main/java/de/blinkt/openvpn/fragments/Settings_Allowed_Apps.java index 3da48f2b..451da07f 100644 --- a/main/src/main/java/de/blinkt/openvpn/fragments/Settings_Allowed_Apps.java +++ b/main/src/main/java/de/blinkt/openvpn/fragments/Settings_Allowed_Apps.java @@ -8,28 +8,21 @@ package de.blinkt.openvpn.fragments;  import android.app.Fragment;  import android.content.Context;  import android.content.pm.ApplicationInfo; -import android.content.pm.PackageInfo;  import android.content.pm.PackageManager;  import android.os.Bundle;  import android.text.TextUtils; -import android.util.Log;  import android.view.LayoutInflater;  import android.view.View;  import android.view.ViewGroup; -import android.widget.ArrayAdapter;  import android.widget.BaseAdapter;  import android.widget.CheckBox;  import android.widget.CompoundButton; -import android.widget.Filter;  import android.widget.ImageView;  import android.widget.ListView; -import android.widget.RadioGroup;  import android.widget.Switch;  import android.widget.TextView; -import android.widget.ToggleButton;  import java.util.Collections; -import java.util.Comparator;  import java.util.List;  import de.blinkt.openvpn.R; @@ -42,6 +35,7 @@ import de.blinkt.openvpn.core.ProfileManager;  public class Settings_Allowed_Apps extends Fragment {      private ListView mListView;      private VpnProfile mProfile; +    private TextView mDefaultAllowTextView;      static class AppViewHolder {          public ApplicationInfo mInfo; @@ -155,23 +149,19 @@ public class Settings_Allowed_Apps extends Fragment {      @Override      public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {          View v = inflater.inflate(R.layout.allowed_vpn_apps, container, false); -        RadioGroup group = (RadioGroup) v.findViewById(R.id.allowed_vpn_radiogroup); -        group.check(mProfile.mAllowedAppsVpnAreDisallowed ? R.id.radio_vpn_disallow : R.id.radio_vpn_allow); +        Switch vpnOnDefaultSwitch = (Switch) v.findViewById(R.id.default_allow); +        vpnOnDefaultSwitch.setChecked(mProfile.mAllowedAppsVpnAreDisallowed); -        group.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { +        vpnOnDefaultSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {              @Override -            public void onCheckedChanged(RadioGroup group, int checkedId) { -                switch(checkedId){ -                    case R.id.radio_vpn_allow: -                        mProfile.mAllowedAppsVpnAreDisallowed=false; -                        break; -                    case R.id.radio_vpn_disallow: -                        mProfile.mAllowedAppsVpnAreDisallowed=true; -                        break; -                } +            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { +                changeDisallowText(isChecked);              }          }); +        mDefaultAllowTextView = (TextView) v.findViewById(R.id.default_allow_text); + +        changeDisallowText(mProfile.mAllowedAppsVpnAreDisallowed);          mListView = (ListView) v.findViewById(android.R.id.list); @@ -179,4 +169,11 @@ public class Settings_Allowed_Apps extends Fragment {          return v;      } + +    private void changeDisallowText(boolean selectedAreDisallowed) { +        if(selectedAreDisallowed) +            mDefaultAllowTextView.setText(R.string.vpn_disallow_radio); +        else +            mDefaultAllowTextView.setText(R.string.vpn_allow_radio); +    }  } diff --git a/main/src/main/res/drawable/bg_switchbar.xml b/main/src/main/res/drawable/bg_switchbar.xml new file mode 100644 index 00000000..1f6d3c92 --- /dev/null +++ b/main/src/main/res/drawable/bg_switchbar.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +  ~ Copyright (c) 2012-2014 Arne Schwabe +  ~ Distributed under the GNU GPL v2. For full terms see the file doc/LICENSE.txt +  --> + +<shape xmlns:android="http://schemas.android.com/apk/res/android"> +    <solid android:color="@color/switchbar" /> +</shape>
\ No newline at end of file diff --git a/main/src/main/res/layout/allowed_vpn_apps.xml b/main/src/main/res/layout/allowed_vpn_apps.xml index e5228f8a..c4369885 100644 --- a/main/src/main/res/layout/allowed_vpn_apps.xml +++ b/main/src/main/res/layout/allowed_vpn_apps.xml @@ -4,31 +4,39 @@    -->  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" +    xmlns:tools="http://schemas.android.com/tools" +    android:background="@color/rot"      android:orientation="vertical"      android:layout_width="match_parent"      android:layout_height="match_parent"> -   <RadioGroup -        android:id="@+id/allowed_vpn_radiogroup" +    <Button +        android:background="@color/primary"          android:layout_width="match_parent" -        android:elevation="2dp" -        android:background="@drawable/white_rect" -        android:layout_height="wrap_content"> +        android:layout_height="wrap_content" /> -        <RadioButton -            android:layout_margin="@dimen/stdpadding" -            android:id="@+id/radio_vpn_disallow" -            android:layout_width="match_parent" -            android:layout_height="wrap_content" -            android:text="@string/vpn_disallow_radio" /> - -        <RadioButton -            android:layout_margin="@dimen/stdpadding" -            android:id="@+id/radio_vpn_allow" -            android:layout_width="match_parent" -            android:layout_height="wrap_content" -            android:text="@string/vpn_allow_radio" /> -    </RadioGroup> +    <RelativeLayout +        android:layout_width="match_parent" +        android:layout_height="wrap_content" +        android:minHeight="?android:attr/actionBarSize" +        android:background="@color/switchbar" +        android:paddingStart="@dimen/switchbar_pad" +        android:paddingEnd="@dimen/switchbar_pad" +        tools:ignore="NewApi"> +        <TextView +            android:id="@+id/default_allow_text" +            style="@android:style/TextAppearance.Medium.Inverse" +            tools:text="@string/vpn_disallow_radio" +            android:layout_width="wrap_content" +            android:layout_centerVertical="true" +            android:layout_height="wrap_content" /> +        <Switch +            android:id="@+id/default_allow" +            android:layout_alignParentEnd="true" +            android:layout_centerVertical="true" +            android:layout_width="wrap_content" +            android:layout_height="wrap_content" /> +        </RelativeLayout>      <ListView          android:id="@android:id/list" diff --git a/main/src/main/res/layout/connections.xml b/main/src/main/res/layout/connections.xml index 011d3472..12de24bc 100644 --- a/main/src/main/res/layout/connections.xml +++ b/main/src/main/res/layout/connections.xml @@ -14,7 +14,7 @@      <CheckBox -        android:text="Use connection entries in random order on connect" +        android:text="@string/remote_random"          android:id="@+id/remote_random"          android:padding="@dimen/stdpadding"          android:layout_width="wrap_content" @@ -41,7 +41,7 @@          android:elevation="2dp"          android:gravity="center_vertical"          android:padding="@dimen/stdpadding" -        android:text="You need to enable at least one server." +        android:text="@string/remote_no_server_selected"          android:visibility="visible"          tools:visibility="visible" /> diff --git a/main/src/main/res/menu/connections.xml b/main/src/main/res/menu/connections.xml index 7446746f..f7da6d54 100644 --- a/main/src/main/res/menu/connections.xml +++ b/main/src/main/res/menu/connections.xml @@ -7,7 +7,7 @@  <menu xmlns:android="http://schemas.android.com/apk/res/android">      <item          android:icon="@drawable/ic_menu_add" -        android:title="Add new remote" +        android:title="@string/add_remote"          android:id="@+id/add_new_remote"          android:titleCondensed="@string/add"          android:showAsAction="ifRoom|withText" diff --git a/main/src/main/res/values-v21/styles.xml b/main/src/main/res/values-v21/styles.xml index 12926e79..754dbc9a 100644 --- a/main/src/main/res/values-v21/styles.xml +++ b/main/src/main/res/values-v21/styles.xml @@ -11,5 +11,6 @@          <item name="android:colorPrimary">@color/primary</item>          <item name="android:colorPrimaryDark">@color/primary_dark</item>          <item name="android:colorAccent">@color/accent</item> +        <item name="android:preferenceStyle">@style/BlinktPreferencePanel</item>      </style>  </resources> diff --git a/main/src/main/res/values/colours.xml b/main/src/main/res/values/colours.xml index 7028885a..7e67dacd 100644 --- a/main/src/main/res/values/colours.xml +++ b/main/src/main/res/values/colours.xml @@ -7,7 +7,11 @@  <resources>      <!-- Indigo -->      <!-- OpenVPN colours #203155, #C66D0D --> -    <color name="primary">#3F51B5</color> -    <color name="primary_dark">#303F9F</color> -    <color name="accent">#FFA726</color> +    <color name="primary">#3F51B5</color>      <!--500--> +    <color name="primary_dark">#303F9F</color> <!--700--> +    <color name="accent">#FFA726</color>       <!-- Orange 400 --> +    <color name="switchbar">#5C6BC0</color>    <!-- 400--> +    <color name="gelb">#ffff00</color> +    <color name="rot">#ff0000</color> +  </resources>
\ No newline at end of file diff --git a/main/src/main/res/values/dimens.xml b/main/src/main/res/values/dimens.xml index d46cfa98..1abe1957 100644 --- a/main/src/main/res/values/dimens.xml +++ b/main/src/main/res/values/dimens.xml @@ -14,6 +14,7 @@      <dimen name="elevation_high">4dp</dimen>      <dimen name="add_button_margin">16dp</dimen>      <dimen name="round_button_diameter">56dp</dimen> +    <dimen name="switchbar_pad">16dp</dimen>  </resources>
\ No newline at end of file diff --git a/main/src/main/res/values/strings.xml b/main/src/main/res/values/strings.xml index 648779fe..371466e3 100755 --- a/main/src/main/res/values/strings.xml +++ b/main/src/main/res/values/strings.xml @@ -329,8 +329,6 @@      <string name="client_behaviour">Client behaviour</string>      <string name="clear_external_apps">Clear allowed external apps</string>      <string name="loading">Loading…</string> -    <string name="vpn_allow_mode_is_allow">Allow only these applications to use the VPN. Other apps will use the normal connection.</string> -    <string name="vpn_allow_mode_is_disallow">Do not allow these applications to use the VPN. Other apps will use the VPN connection.</string>      <string name="allowed_vpn_apps_info">Allowed VPN apps: %1$s</string>      <string name="disallowed_vpn_apps_info">Disallowed VPN apps: %1$s</string>      <string name="app_no_longer_exists">Package %s is no longer installed, removing it from app allow/disallow list</string> @@ -339,5 +337,8 @@      <string name="query_delete_remote">Remove remote server entry?</string>      <string name="keep">Keep</string>      <string name="delete">Delete</string> +    <string name="add_remote">Add new remote</string> +    <string name="remote_random">Use connection entries in random order on connect</string> +    <string name="remote_no_server_selected">You need to define and enable at least one remote server.</string>  </resources> diff --git a/main/src/main/res/values/styles.xml b/main/src/main/res/values/styles.xml index 0c295df2..cb503aed 100644 --- a/main/src/main/res/values/styles.xml +++ b/main/src/main/res/values/styles.xml @@ -6,10 +6,15 @@  <resources>      <style name="appstyle" parent="android:Theme.DeviceDefault.Light"> - +        <item name="android:preferenceStyle">@style/BlinktPreferencePanel</item>      </style> +    <!-- No margins or background by default. Not different for x-large screens --> +    <style name="BlinktPreferencePanel"> +        <item name="android:background">@color/gelb</item> +    </style> +      <style name="item">          <item name="android:layout_width">match_parent</item>          <item name="android:layout_height">wrap_content</item> | 
