diff options
-rw-r--r-- | res/layout/vpn_list_item.xml | 5 | ||||
-rw-r--r-- | res/layout/vpn_preference_layout.xml | 94 | ||||
-rw-r--r-- | src/de/blinkt/openvpn/LaunchVPN.java | 12 | ||||
-rw-r--r-- | src/de/blinkt/openvpn/OpenVPN.java | 1 | ||||
-rw-r--r-- | src/de/blinkt/openvpn/OpenVpnManagementThread.java | 2 | ||||
-rw-r--r-- | src/de/blinkt/openvpn/Settings_Basic.java | 8 | ||||
-rw-r--r-- | src/de/blinkt/openvpn/VPNConfigPreference.java | 72 | ||||
-rw-r--r-- | src/de/blinkt/openvpn/VPNProfileList.java | 77 | ||||
-rw-r--r-- | src/de/blinkt/openvpn/VpnProfile.java | 6 |
9 files changed, 60 insertions, 217 deletions
diff --git a/res/layout/vpn_list_item.xml b/res/layout/vpn_list_item.xml index dc6254e5..75da3cf5 100644 --- a/res/layout/vpn_list_item.xml +++ b/res/layout/vpn_list_item.xml @@ -19,11 +19,10 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_vertical" - android:focusable="false" android:minHeight="?android:attr/listPreferredItemHeight" > <LinearLayout - android:id="@+id/vpnconfig_pref" + android:id="@+id/vpn_list_item_left" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="1" @@ -52,6 +51,7 @@ android:layout_width="2dip" android:layout_height="match_parent" android:layout_marginBottom="5dip" + android:focusable="false" android:layout_marginTop="5dip" android:background="@android:drawable/divider_horizontal_dark" /> @@ -60,7 +60,6 @@ android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_gravity="center" - android:focusable="true" android:background="?android:attr/selectableItemBackground" android:contentDescription="@string/configure_the_vpn" android:paddingLeft="15dip" diff --git a/res/layout/vpn_preference_layout.xml b/res/layout/vpn_preference_layout.xml deleted file mode 100644 index fbb18115..00000000 --- a/res/layout/vpn_preference_layout.xml +++ /dev/null @@ -1,94 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - Copyright (C) 2011 The Android Open Source Project - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---> - -<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:gravity="center_vertical" - android:minHeight="?android:attr/listPreferredItemHeight" > - - <LinearLayout - android:id="@+id/vpnconfig_pref" - android:layout_width="wrap_content" - android:layout_height="match_parent" - android:layout_weight="1" - android:background="?android:attr/selectableItemBackground" - android:clickable="true" - android:focusable="true" - android:gravity="center_vertical" > - - <LinearLayout - android:id="@android:id/widget_frame" - android:layout_width="wrap_content" - android:layout_height="match_parent" - android:gravity="center_vertical" - android:orientation="vertical" /> - - <RelativeLayout - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginBottom="6dip" - android:layout_marginRight="6dip" - android:layout_marginTop="6dip" - android:layout_weight="1" > - - <TextView - android:id="@+android:id/title" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:ellipsize="marquee" - android:fadingEdge="horizontal" - android:singleLine="true" - android:textAppearance="?android:attr/textAppearanceMedium" /> - - <TextView - android:id="@android:id/summary" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_alignLeft="@android:id/title" - android:layout_below="@android:id/title" - android:focusable="false" - android:maxLines="4" - android:paddingBottom="3dip" - android:textAppearance="?android:attr/textAppearanceSmall" - android:textColor="?android:attr/textColorSecondary" - android:textSize="13sp" - android:visibility="gone" /> - </RelativeLayout> - </LinearLayout> - - <View - android:layout_width="2dip" - android:layout_height="match_parent" - android:layout_marginBottom="5dip" - android:layout_marginTop="5dip" - android:background="@android:drawable/divider_horizontal_dark" /> - - <ImageView - android:id="@+id/quickedit_settings" - android:layout_width="wrap_content" - android:layout_height="fill_parent" - android:layout_gravity="center" - android:background="?android:attr/selectableItemBackground" - android:clickable="true" - android:contentDescription="@string/configure_the_vpn" - android:focusable="true" - android:paddingLeft="15dip" - android:paddingRight="?android:attr/scrollbarSize" - android:src="@drawable/ic_sysbar_quicksettings" /> - -</LinearLayout>
\ No newline at end of file diff --git a/src/de/blinkt/openvpn/LaunchVPN.java b/src/de/blinkt/openvpn/LaunchVPN.java index e0832f21..d74834ca 100644 --- a/src/de/blinkt/openvpn/LaunchVPN.java +++ b/src/de/blinkt/openvpn/LaunchVPN.java @@ -24,6 +24,7 @@ import android.app.AlertDialog; import android.app.ListActivity; import android.content.ActivityNotFoundException; import android.content.DialogInterface; +import android.content.DialogInterface.OnClickListener; import android.content.Intent; import android.net.VpnService; import android.os.Bundle; @@ -263,13 +264,18 @@ public class LaunchVPN extends ListActivity implements OnItemClickListener { AlertDialog.Builder d = new AlertDialog.Builder(this); d.setTitle(R.string.config_error_found); d.setMessage(vpnok); - d.setPositiveButton(android.R.string.ok, null); + d.setPositiveButton(android.R.string.ok, new OnClickListener() { + + @Override + public void onClick(DialogInterface dialog, int which) { + finish(); + + } + }); d.show(); } void launchVPN () { - - int vpnok = mSelectedProfile.checkProfile(); if(vpnok!= R.string.no_error_found) { showConfigErrorDialog(vpnok); diff --git a/src/de/blinkt/openvpn/OpenVPN.java b/src/de/blinkt/openvpn/OpenVPN.java index 86bd3665..daa29717 100644 --- a/src/de/blinkt/openvpn/OpenVPN.java +++ b/src/de/blinkt/openvpn/OpenVPN.java @@ -3,7 +3,6 @@ package de.blinkt.openvpn; import java.util.LinkedList; import java.util.Vector; -import android.os.ParcelFileDescriptor; import android.util.Log; public class OpenVPN { diff --git a/src/de/blinkt/openvpn/OpenVpnManagementThread.java b/src/de/blinkt/openvpn/OpenVpnManagementThread.java index 19f8d7e5..f05f58dc 100644 --- a/src/de/blinkt/openvpn/OpenVpnManagementThread.java +++ b/src/de/blinkt/openvpn/OpenVpnManagementThread.java @@ -3,11 +3,9 @@ package de.blinkt.openvpn; import java.io.FileDescriptor;
import java.io.IOException;
import java.io.InputStream;
-import java.net.DatagramSocket;
import java.util.Vector;
import android.net.LocalSocket;
-import android.os.ParcelFileDescriptor;
import android.util.Log;
public class OpenVpnManagementThread implements Runnable {
diff --git a/src/de/blinkt/openvpn/Settings_Basic.java b/src/de/blinkt/openvpn/Settings_Basic.java index 7eb224a8..ad58a778 100644 --- a/src/de/blinkt/openvpn/Settings_Basic.java +++ b/src/de/blinkt/openvpn/Settings_Basic.java @@ -281,8 +281,12 @@ public class Settings_Basic extends Fragment implements View.OnClickListener, On showCertDialog(); } } - - + + @Override + public void onSaveInstanceState(Bundle outState) { + super.onSaveInstanceState(outState); + outState.putString(getActivity().getPackageName() + "profileUUID", mProfile.getUUID().toString()); + } @Override public void onNothingSelected(AdapterView<?> parent) { diff --git a/src/de/blinkt/openvpn/VPNConfigPreference.java b/src/de/blinkt/openvpn/VPNConfigPreference.java deleted file mode 100644 index d1a3346e..00000000 --- a/src/de/blinkt/openvpn/VPNConfigPreference.java +++ /dev/null @@ -1,72 +0,0 @@ -package de.blinkt.openvpn; - -import android.preference.Preference; -import android.view.View; -import android.view.View.OnClickListener; -import android.widget.ImageView; - -public class VPNConfigPreference extends Preference implements OnClickListener { - class startClickListener implements OnClickListener{ - private VPNConfigPreference mvp; - - public startClickListener(VPNConfigPreference vp) { - mvp = vp; - } - - @Override - public void onClick(View v) { - mOnQuickSettingsListener.onStartVPNClick(mvp); - } - - } - - private VpnPreferencesClickListener mOnQuickSettingsListener; - private ImageView mQuickPrefButton; - - - public VPNConfigPreference(VPNProfileList vpnProfileList) { - super(vpnProfileList.getActivity()); - setLayoutResource(R.layout.vpn_preference_layout); - - } - - private View mProfilesPref; - - @Override - protected void onBindView(View view) { - super.onBindView(view); - mProfilesPref = view.findViewById(R.id.vpnconfig_pref); - mProfilesPref.setOnClickListener(new startClickListener(this)); - mProfilesPref.setClickable(true); - - mQuickPrefButton = (ImageView) view.findViewById(R.id.quickedit_settings); - mQuickPrefButton.setOnClickListener(this); - - } - - - public interface VpnPreferencesClickListener { - /** - * Called when a Preference has been clicked. - * - * @param preference The Preference that was clicked. - * @return True if the click was handled. - */ - boolean onQuickSettingsClick(Preference preference); - - void onStartVPNClick(VPNConfigPreference vpnConfigPreference); - } - - - - public void setOnQuickSettingsClickListener(VpnPreferencesClickListener onQuickSettingsListener) { - mOnQuickSettingsListener = onQuickSettingsListener; - } - - @Override - public void onClick(View v) { - mOnQuickSettingsListener.onQuickSettingsClick(this); - } - - -} diff --git a/src/de/blinkt/openvpn/VPNProfileList.java b/src/de/blinkt/openvpn/VPNProfileList.java index 56cc7ae1..a578251c 100644 --- a/src/de/blinkt/openvpn/VPNProfileList.java +++ b/src/de/blinkt/openvpn/VPNProfileList.java @@ -12,9 +12,8 @@ import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; -import android.widget.AdapterView; -import android.widget.AdapterView.OnItemClickListener; -import android.widget.AdapterView.OnItemLongClickListener; +import android.view.View.OnClickListener; +import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.EditText; import android.widget.ListView; @@ -26,9 +25,42 @@ public class VPNProfileList extends ListFragment { public VPNArrayAdapter(Context context, int resource, int textViewResourceId) { super(context, resource, textViewResourceId); - + } + + @Override + public View getView(final int position, View convertView, ViewGroup parent) { + View v = super.getView(position, convertView, parent); + + View titleview = v.findViewById(R.id.vpn_list_item_left); + titleview.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View v) { + VpnProfile profile =(VpnProfile) getListAdapter().getItem(position); + startVPN(profile); + } + }); + + View settingsview = v.findViewById(R.id.quickedit_settings); + settingsview.setOnClickListener(new OnClickListener() { + + @Override + public void onClick(View v) { + if (mActionMode != null) { + return; + } + + // Start the CAB using the ActionMode.Callback defined above + mActionMode = getActivity().startActionMode(mActionModeCallback); + mEditProfile =(VpnProfile) getListAdapter().getItem(position); + + } + }); + + + return v; } + } @@ -56,46 +88,15 @@ public class VPNProfileList extends ListFragment { @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); - ListView lv = getListView(); - lv.setOnItemLongClickListener(new OnItemLongClickListener() { - - // Called when the user long-clicks on someView - - @Override - public boolean onItemLongClick(AdapterView<?> parent, View view, - int position, long id) { - if (mActionMode != null) { - return false; - } - - // Start the CAB using the ActionMode.Callback defined above - mActionMode = getActivity().startActionMode(mActionModeCallback); - mEditProfile =(VpnProfile) getListAdapter().getItem(position); - - //getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE); - //getListView().setSelection(position); - return true; - } - }); - lv.setOnItemClickListener(new OnItemClickListener() { - - @Override - public void onItemClick(AdapterView<?> parent, View view, - int position, long id) { - VpnProfile profile =(VpnProfile) getListAdapter().getItem(position); - startVPN(profile); - } - }); - - -// mArrayadapter = new ArrayAdapter<VpnProfile>(getActivity(),R.layout.vpn_list_item,R.id.vpn_item_title); - mArrayadapter = new ArrayAdapter<VpnProfile>(getActivity(),android.R.layout.simple_list_item_activated_1); + mArrayadapter = new VPNArrayAdapter(getActivity(),R.layout.vpn_list_item,R.id.vpn_item_title); mArrayadapter.addAll(getPM().getProfiles()); setListAdapter(mArrayadapter); } + + @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { menu.add(0, MENU_ADD_PROFILE, 0, R.string.menu_add_profile) diff --git a/src/de/blinkt/openvpn/VpnProfile.java b/src/de/blinkt/openvpn/VpnProfile.java index 18fe59d5..31f32f85 100644 --- a/src/de/blinkt/openvpn/VpnProfile.java +++ b/src/de/blinkt/openvpn/VpnProfile.java @@ -180,11 +180,13 @@ public class VpnProfile implements Serializable{ cfg += " unix\n"; cfg += "management-hold\n\n"; - cfg+="# tmp does not exist on Android\n"; + /* only needed if client is compiled with P2MP Server support as early version + * accidently were + cfg+="# /tmp does not exist on Android\n"; cfg+="tmp-dir "; cfg+=cacheDir.getAbsolutePath(); cfg+="\n\n"; - + */ boolean useTLSClient = (mAuthenticationType != TYPE_STATICKEYS); if(useTLSClient && mUsePull) |