Merge branch 'app-selection'
This commit is contained in:
		
						commit
						c0dd584651
					
				|  | @ -1,19 +1,74 @@ | |||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <RelativeLayout android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:duplicateParentState="false"> | ||||
| <RelativeLayout | ||||
|         android:layout_width="fill_parent" | ||||
|         android:layout_height="fill_parent" | ||||
|         xmlns:android="http://schemas.android.com/apk/res/android" | ||||
|         android:orientation="vertical" | ||||
|         android:duplicateParentState="true"> | ||||
| 
 | ||||
| <!--  | ||||
| <TextView android:text="Select apps to use with Tor:" | ||||
| 				android:layout_width="fill_parent"  | ||||
| 				android:layout_height="wrap_content" | ||||
| 				android:textSize="16sp"		 | ||||
| 				android:padding="3px"  | ||||
| 				 android:layout_above="@+id/applistview" | ||||
| 				/> | ||||
| 	 --> | ||||
|     <!--  | ||||
|       <TextView android:text="Select apps to use with Tor:" | ||||
|               android:layout_width="fill_parent"  | ||||
|               android:layout_height="wrap_content" | ||||
|               android:textSize="16sp"		 | ||||
|               android:padding="3px"  | ||||
|               android:layout_above="@+id/applistview" | ||||
|           /> | ||||
|   --> | ||||
| 
 | ||||
| <Button android:layout_width="fill_parent" | ||||
|         android:layout_height="wrap_content" android:id="@+id/btnsave" | ||||
|         android:text="@string/button_close" android:layout_alignParentBottom="true" /> | ||||
|     <ListView | ||||
|         android:id="@+id/applistview" | ||||
|         android:layout_width="match_parent" | ||||
|         android:layout_height="match_parent" | ||||
|         android:layout_above="@+id/layout_button_filters" | ||||
|         android:layout_alignParentTop="true" > | ||||
| 
 | ||||
|     </ListView> | ||||
| 
 | ||||
|     <Button | ||||
|         android:id="@+id/btnsave" | ||||
|         android:layout_width="match_parent" | ||||
|         android:layout_height="wrap_content" | ||||
|         android:layout_alignParentBottom="true" | ||||
|         android:layout_alignParentStart="true" | ||||
|         android:layout_alignParentLeft="true" | ||||
|         android:text="@string/button_close" /> | ||||
| 
 | ||||
|     <RelativeLayout | ||||
|         android:id="@+id/layout_button_filters" | ||||
|         android:layout_width="match_parent" | ||||
|         android:layout_height="wrap_content" | ||||
|         android:layout_above="@+id/btnsave" | ||||
|         android:orientation="horizontal" > | ||||
| 
 | ||||
|         <Button | ||||
|             android:id="@+id/button_proxy_all" | ||||
|             android:layout_width="wrap_content" | ||||
|             android:layout_height="wrap_content" | ||||
|             android:layout_alignParentLeft="true" | ||||
|             android:layout_alignParentStart="true" | ||||
|             android:layout_toLeftOf="@+id/button_proxy_none" | ||||
|             android:layout_toStartOf="@+id/button_proxy_none" | ||||
|             android:text="@string/button_proxy_all" /> | ||||
| 
 | ||||
|         <Button | ||||
|             android:id="@+id/button_invert_selection" | ||||
|             android:layout_width="wrap_content" | ||||
|             android:layout_height="wrap_content" | ||||
|             android:layout_alignParentRight="true" | ||||
|             android:layout_alignParentEnd="true" | ||||
|             android:layout_alignParentTop="true" | ||||
|             android:text="@string/button_invert_selection" /> | ||||
| 
 | ||||
|         <Button | ||||
|             android:id="@+id/button_proxy_none" | ||||
|             android:layout_width="wrap_content" | ||||
|             android:layout_height="wrap_content" | ||||
|             android:layout_alignParentTop="true" | ||||
|             android:layout_toLeftOf="@+id/button_invert_selection" | ||||
|             android:layout_toStartOf="@+id/button_invert_selection" | ||||
|             android:text="@string/button_proxy_none" /> | ||||
| 
 | ||||
|     </RelativeLayout> | ||||
| 
 | ||||
| 	<ListView android:layout_above="@id/btnsave"  android:layout_alignParentTop="true" android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/applistview"></ListView> | ||||
| </RelativeLayout> | ||||
|  |  | |||
|  | @ -134,6 +134,10 @@ | |||
|   <string name="pref_entrance_node_summary">Fingerprints, nicks, countries and addresses for the first hop</string> | ||||
|   <string name="pref_entrance_node_dialog">Enter Entrance Nodes</string> | ||||
|    | ||||
|   <string name="button_proxy_all">Proxy All</string> | ||||
|   <string name="button_proxy_none">Proxy None</string> | ||||
|   <string name="button_invert_selection">Invert Selection</string> | ||||
| 
 | ||||
|   <string name="pref_proxy_title">Outbound Network Proxy (Optional)</string> | ||||
|    | ||||
|   <string name="pref_proxy_type_title">Outbound Proxy Type</string> | ||||
|  |  | |||
|  | @ -11,11 +11,14 @@ import java.util.Iterator; | |||
| import java.util.List; | ||||
| import java.util.StringTokenizer; | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| import org.torproject.android.R; | ||||
| import org.torproject.android.TorConstants; | ||||
| import org.torproject.android.service.TorService; | ||||
| import org.torproject.android.service.TorServiceUtils; | ||||
| 
 | ||||
| //import android.R; | ||||
| import android.app.Activity; | ||||
| import android.content.Context; | ||||
| import android.content.SharedPreferences; | ||||
|  | @ -26,7 +29,11 @@ import android.content.pm.PackageManager; | |||
| import android.os.Build; | ||||
| import android.os.Bundle; | ||||
| import android.view.LayoutInflater; | ||||
| import android.view.MenuItem.OnMenuItemClickListener; | ||||
| import android.view.View; | ||||
| import android.view.Menu; | ||||
| import android.view.MenuItem; | ||||
| import android.view.MenuInflater; | ||||
| import android.view.View.OnClickListener; | ||||
| import android.view.ViewGroup; | ||||
| import android.widget.ArrayAdapter; | ||||
|  | @ -41,273 +48,323 @@ import android.widget.TextView; | |||
| 
 | ||||
| public class AppManager extends Activity implements OnCheckedChangeListener, OnClickListener, TorConstants { | ||||
| 
 | ||||
| 	private ListView listApps; | ||||
|     private ListView listApps; | ||||
|      | ||||
| 	protected void onCreate(Bundle savedInstanceState) { | ||||
| 		super.onCreate(savedInstanceState); | ||||
|     protected void onCreate(Bundle savedInstanceState) { | ||||
|         super.onCreate(savedInstanceState); | ||||
|      | ||||
| 		this.setContentView(R.layout.layout_apps); | ||||
|         this.setContentView(R.layout.layout_apps); | ||||
|          | ||||
|         Button buttonSelectAll, buttonSelectNone, buttonInvert; | ||||
| 
 | ||||
|         buttonSelectAll =   (Button) findViewById(R.id.button_proxy_all); | ||||
|         buttonSelectNone =  (Button) findViewById(R.id.button_proxy_none); | ||||
|         buttonInvert =      (Button) findViewById(R.id.button_invert_selection); | ||||
| 
 | ||||
|         buttonSelectAll.setOnClickListener(new Button.OnClickListener() { | ||||
|             @Override | ||||
|             public void onClick(View v) { | ||||
|                 autoCheckApplications(v); | ||||
|             } | ||||
|         }); | ||||
|         buttonSelectNone.setOnClickListener(new Button.OnClickListener() { | ||||
|             @Override | ||||
|             public void onClick(View v) { | ||||
|                 autoCheckApplications(v); | ||||
|             } | ||||
|         }); | ||||
|         buttonInvert.setOnClickListener(new Button.OnClickListener() { | ||||
|             @Override | ||||
|             public void onClick(View v) { | ||||
|                 autoCheckApplications(v); | ||||
|             } | ||||
|         }); | ||||
|     } | ||||
|      | ||||
|      | ||||
| 	} | ||||
|     @Override | ||||
|     protected void onResume() { | ||||
|         super.onResume(); | ||||
|         listApps = (ListView)findViewById(R.id.applistview); | ||||
| 
 | ||||
|         Button btnSave = (Button)findViewById(R.id.btnsave); | ||||
|         btnSave.setOnClickListener(new OnClickListener() | ||||
|         { | ||||
| 
 | ||||
| 	@Override | ||||
| 	protected void onResume() { | ||||
| 		super.onResume(); | ||||
| 		listApps = (ListView)findViewById(R.id.applistview); | ||||
|             public void onClick(View v) { | ||||
|                 finish(); | ||||
|             } | ||||
|         }); | ||||
|          | ||||
| 		Button btnSave = (Button)findViewById(R.id.btnsave); | ||||
| 		btnSave.setOnClickListener(new OnClickListener() | ||||
| 		{ | ||||
|         mPrefs = TorServiceUtils.getSharedPrefs(getApplicationContext()); | ||||
|         loadApps(mPrefs); | ||||
|     } | ||||
| 
 | ||||
| 			public void onClick(View v) { | ||||
| 				finish(); | ||||
| 			} | ||||
| 		}); | ||||
|     SharedPreferences mPrefs = null; | ||||
|     ArrayList<TorifiedApp> mApps = null; | ||||
|      | ||||
| 		mPrefs = TorServiceUtils.getSharedPrefs(getApplicationContext()); | ||||
| 		loadApps(mPrefs); | ||||
| 	} | ||||
|     private void loadApps (SharedPreferences prefs) | ||||
|     { | ||||
|          | ||||
| 	SharedPreferences mPrefs = null; | ||||
| 	ArrayList<TorifiedApp> mApps = null; | ||||
| 	 | ||||
| 	private void loadApps (SharedPreferences prefs) | ||||
| 	{ | ||||
| 		 | ||||
| 		mApps = getApps(getApplicationContext(), prefs); | ||||
|         mApps = getApps(getApplicationContext(), prefs); | ||||
|          | ||||
|         /* | ||||
|         Arrays.sort(apps, new Comparator<TorifiedApp>() { | ||||
| 			public int compare(TorifiedApp o1, TorifiedApp o2) { | ||||
| 				if (o1.isTorified() == o2.isTorified()) return o1.getName().compareTo(o2.getName()); | ||||
| 				if (o1.isTorified()) return -1; | ||||
| 				return 1; | ||||
| 			} | ||||
|             public int compare(TorifiedApp o1, TorifiedApp o2) { | ||||
|                 if (o1.isTorified() == o2.isTorified()) return o1.getName().compareTo(o2.getName()); | ||||
|                 if (o1.isTorified()) return -1; | ||||
|                 return 1; | ||||
|             } | ||||
|         });*/ | ||||
|          | ||||
|         final LayoutInflater inflater = getLayoutInflater(); | ||||
|          | ||||
|         ListAdapter adapter = new ArrayAdapter<TorifiedApp>(this,R.layout.layout_apps_item,R.id.itemtext,mApps) { | ||||
|         	public View getView(int position, View convertView, ViewGroup parent) { | ||||
|        			ListEntry entry; | ||||
|         		if (convertView == null) { | ||||
|         			// Inflate a new view | ||||
|         			convertView = inflater.inflate(R.layout.layout_apps_item, parent, false); | ||||
|        				entry = new ListEntry(); | ||||
|        				entry.icon = (ImageView) convertView.findViewById(R.id.itemicon); | ||||
|        				entry.box = (CheckBox) convertView.findViewById(R.id.itemcheck); | ||||
|        				entry.text = (TextView) convertView.findViewById(R.id.itemtext); | ||||
|             public View getView(int position, View convertView, ViewGroup parent) { | ||||
|                 ListEntry entry; | ||||
|                 if (convertView == null) { | ||||
|                     // Inflate a new view | ||||
|                     convertView = inflater.inflate(R.layout.layout_apps_item, parent, false); | ||||
|                     entry = new ListEntry(); | ||||
|                     entry.icon = (ImageView) convertView.findViewById(R.id.itemicon); | ||||
|                     entry.box = (CheckBox) convertView.findViewById(R.id.itemcheck); | ||||
|                     entry.text = (TextView) convertView.findViewById(R.id.itemtext); | ||||
|                      | ||||
|        				entry.text.setOnClickListener(AppManager.this); | ||||
|        				entry.text.setOnClickListener(AppManager.this); | ||||
|                     entry.text.setOnClickListener(AppManager.this); | ||||
|                     entry.text.setOnClickListener(AppManager.this); | ||||
|                      | ||||
|        				convertView.setTag(entry); | ||||
|                     convertView.setTag(entry); | ||||
|                  | ||||
|        				entry.box.setOnCheckedChangeListener(AppManager.this); | ||||
|         		} else { | ||||
|         			// Convert an existing view | ||||
|         			entry = (ListEntry) convertView.getTag(); | ||||
|         		} | ||||
|                     entry.box.setOnCheckedChangeListener(AppManager.this); | ||||
|                 } else { | ||||
|                     // Convert an existing view | ||||
|                     entry = (ListEntry) convertView.getTag(); | ||||
|                 } | ||||
|                  | ||||
|                  | ||||
|         		final TorifiedApp app = mApps.get(position); | ||||
|                 final TorifiedApp app = mApps.get(position); | ||||
|                  | ||||
|         		if (app.getIcon() != null) | ||||
|         			entry.icon.setImageDrawable(app.getIcon()); | ||||
|         		else | ||||
|         			entry.icon.setVisibility(View.GONE); | ||||
|                 if (app.getIcon() != null) | ||||
|                     entry.icon.setImageDrawable(app.getIcon()); | ||||
|                 else | ||||
|                     entry.icon.setVisibility(View.GONE); | ||||
|                  | ||||
|         		entry.text.setText(app.getName()); | ||||
|                 entry.text.setText(app.getName()); | ||||
|                  | ||||
|         		final CheckBox box = entry.box; | ||||
|         		box.setTag(app); | ||||
|         		box.setChecked(app.isTorified()); | ||||
|                 final CheckBox box = entry.box; | ||||
|                 box.setTag(app); | ||||
|                 box.setChecked(app.isTorified()); | ||||
|                  | ||||
|         		entry.text.setTag(box); | ||||
|         		entry.icon.setTag(box); | ||||
|                 entry.text.setTag(box); | ||||
|                 entry.icon.setTag(box); | ||||
|                  | ||||
|        			return convertView; | ||||
|         	} | ||||
|                 return convertView; | ||||
|             } | ||||
|         }; | ||||
|          | ||||
|         listApps.setAdapter(adapter); | ||||
|          | ||||
| 	} | ||||
|     } | ||||
|      | ||||
| 	private static class ListEntry { | ||||
| 		private CheckBox box; | ||||
| 		private TextView text; | ||||
| 		private ImageView icon; | ||||
| 	} | ||||
|     private static class ListEntry { | ||||
|         private CheckBox box; | ||||
|         private TextView text; | ||||
|         private ImageView icon; | ||||
|     } | ||||
|      | ||||
| 	/* (non-Javadoc) | ||||
| 	 * @see android.app.Activity#onStop() | ||||
| 	 */ | ||||
| 	@Override | ||||
| 	protected void onStop() { | ||||
| 		super.onStop(); | ||||
|     /* (non-Javadoc) | ||||
|      * @see android.app.Activity#onStop() | ||||
|      */ | ||||
|     @Override | ||||
|     protected void onStop() { | ||||
|         super.onStop(); | ||||
|          | ||||
| 	} | ||||
|     } | ||||
| 
 | ||||
|      | ||||
| 	public static ArrayList<TorifiedApp> getApps (Context context, SharedPreferences prefs) | ||||
| 	{ | ||||
|     public static ArrayList<TorifiedApp> getApps (Context context, SharedPreferences prefs) | ||||
|     { | ||||
| 
 | ||||
| 		String tordAppString = prefs.getString(PREFS_KEY_TORIFIED, ""); | ||||
| 		String[] tordApps; | ||||
|         String tordAppString = prefs.getString(PREFS_KEY_TORIFIED, ""); | ||||
|         String[] tordApps; | ||||
|          | ||||
| 		StringTokenizer st = new StringTokenizer(tordAppString,"|"); | ||||
| 		tordApps = new String[st.countTokens()]; | ||||
| 		int tordIdx = 0; | ||||
| 		while (st.hasMoreTokens()) | ||||
| 		{ | ||||
| 			tordApps[tordIdx++] = st.nextToken(); | ||||
| 		} | ||||
|         StringTokenizer st = new StringTokenizer(tordAppString,"|"); | ||||
|         tordApps = new String[st.countTokens()]; | ||||
|         int tordIdx = 0; | ||||
|         while (st.hasMoreTokens()) | ||||
|         { | ||||
|             tordApps[tordIdx++] = st.nextToken(); | ||||
|         } | ||||
|          | ||||
| 		Arrays.sort(tordApps); | ||||
|         Arrays.sort(tordApps); | ||||
| 
 | ||||
| 		//else load the apps up | ||||
| 		PackageManager pMgr = context.getPackageManager(); | ||||
|         //else load the apps up | ||||
|         PackageManager pMgr = context.getPackageManager(); | ||||
|          | ||||
| 		List<ApplicationInfo> lAppInfo = pMgr.getInstalledApplications(0); | ||||
|         List<ApplicationInfo> lAppInfo = pMgr.getInstalledApplications(0); | ||||
|          | ||||
| 		Iterator<ApplicationInfo> itAppInfo = lAppInfo.iterator(); | ||||
|         Iterator<ApplicationInfo> itAppInfo = lAppInfo.iterator(); | ||||
|          | ||||
| 		ArrayList<TorifiedApp> apps = new ArrayList<TorifiedApp>(); | ||||
|         ArrayList<TorifiedApp> apps = new ArrayList<TorifiedApp>(); | ||||
|          | ||||
| 		ApplicationInfo aInfo = null; | ||||
|         ApplicationInfo aInfo = null; | ||||
|          | ||||
| 		int appIdx = 0; | ||||
| 		TorifiedApp app = null; | ||||
|         int appIdx = 0; | ||||
|         TorifiedApp app = null; | ||||
|          | ||||
| 		while (itAppInfo.hasNext()) | ||||
| 		{ | ||||
| 			aInfo = itAppInfo.next(); | ||||
|         while (itAppInfo.hasNext()) | ||||
|         { | ||||
|             aInfo = itAppInfo.next(); | ||||
|              | ||||
| 			app = new TorifiedApp(); | ||||
|             app = new TorifiedApp(); | ||||
|              | ||||
| 			try { | ||||
| 				PackageInfo pInfo = pMgr.getPackageInfo(aInfo.packageName, PackageManager.GET_PERMISSIONS); | ||||
|             try { | ||||
|                 PackageInfo pInfo = pMgr.getPackageInfo(aInfo.packageName, PackageManager.GET_PERMISSIONS); | ||||
|                  | ||||
| 				if (pInfo != null && pInfo.requestedPermissions != null) | ||||
| 				{ | ||||
| 					for (String permInfo:pInfo.requestedPermissions) | ||||
| 					{ | ||||
| 						if (permInfo.equals("android.permission.INTERNET")) | ||||
| 						{ | ||||
| 							app.setUsesInternet(true); | ||||
|                 if (pInfo != null && pInfo.requestedPermissions != null) | ||||
|                 { | ||||
|                     for (String permInfo:pInfo.requestedPermissions) | ||||
|                     { | ||||
|                         if (permInfo.equals("android.permission.INTERNET")) | ||||
|                         { | ||||
|                             app.setUsesInternet(true); | ||||
|                              | ||||
| 						} | ||||
| 					} | ||||
|                         } | ||||
|                     } | ||||
|                      | ||||
| 				} | ||||
|                 } | ||||
|                  | ||||
|                  | ||||
| 			} catch (Exception e) { | ||||
| 				// TODO Auto-generated catch block | ||||
| 				e.printStackTrace(); | ||||
| 			} | ||||
|             } catch (Exception e) { | ||||
|                 // TODO Auto-generated catch block | ||||
|                 e.printStackTrace(); | ||||
|             } | ||||
|              | ||||
| 			if ((aInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 1) | ||||
| 		    { | ||||
| 		         //System app | ||||
| 				app.setUsesInternet(true); | ||||
| 		   } | ||||
|             if ((aInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 1) | ||||
|             { | ||||
|                  //System app | ||||
|                 app.setUsesInternet(true); | ||||
|            } | ||||
|              | ||||
|              | ||||
| 			if (!app.usesInternet()) | ||||
| 				continue; | ||||
| 			else | ||||
| 			{ | ||||
| 				apps.add(app); | ||||
| 			} | ||||
|             if (!app.usesInternet()) | ||||
|                 continue; | ||||
|             else | ||||
|             { | ||||
|                 apps.add(app); | ||||
|             } | ||||
|              | ||||
|              | ||||
| 			app.setEnabled(aInfo.enabled); | ||||
| 			app.setUid(aInfo.uid); | ||||
| 			app.setUsername(pMgr.getNameForUid(app.getUid())); | ||||
| 			app.setProcname(aInfo.processName); | ||||
|             app.setEnabled(aInfo.enabled); | ||||
|             app.setUid(aInfo.uid); | ||||
|             app.setUsername(pMgr.getNameForUid(app.getUid())); | ||||
|             app.setProcname(aInfo.processName); | ||||
|              | ||||
| 			try | ||||
| 			{ | ||||
| 				app.setName(pMgr.getApplicationLabel(aInfo).toString()); | ||||
| 			} | ||||
| 			catch (Exception e) | ||||
| 			{ | ||||
| 				app.setName(aInfo.packageName); | ||||
| 			} | ||||
|             try | ||||
|             { | ||||
|                 app.setName(pMgr.getApplicationLabel(aInfo).toString()); | ||||
|             } | ||||
|             catch (Exception e) | ||||
|             { | ||||
|                 app.setName(aInfo.packageName); | ||||
|             } | ||||
|              | ||||
|              | ||||
| 			//app.setIcon(pMgr.getApplicationIcon(aInfo)); | ||||
|             //app.setIcon(pMgr.getApplicationIcon(aInfo)); | ||||
|              | ||||
| 			// check if this application is allowed | ||||
| 			if (Arrays.binarySearch(tordApps, app.getUsername()) >= 0) { | ||||
| 				app.setTorified(true); | ||||
| 			} | ||||
| 			else | ||||
| 			{ | ||||
| 				app.setTorified(false); | ||||
| 			} | ||||
|             // check if this application is allowed | ||||
|             if (Arrays.binarySearch(tordApps, app.getUsername()) >= 0) { | ||||
|                 app.setTorified(true); | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 app.setTorified(false); | ||||
|             } | ||||
|              | ||||
| 			appIdx++; | ||||
| 		} | ||||
|             appIdx++; | ||||
|         } | ||||
|      | ||||
| 		Collections.sort(apps); | ||||
|         Collections.sort(apps); | ||||
|          | ||||
| 		return apps; | ||||
| 	} | ||||
|         return apps; | ||||
|     } | ||||
|      | ||||
| 
 | ||||
| 	public void saveAppSettings (Context context) | ||||
| 	{ | ||||
|     public void saveAppSettings (Context context) | ||||
|     { | ||||
| 
 | ||||
| 		StringBuilder tordApps = new StringBuilder(); | ||||
|         StringBuilder tordApps = new StringBuilder(); | ||||
| 
 | ||||
| 		for (TorifiedApp tApp:mApps) | ||||
| 		{ | ||||
| 			if (tApp.isTorified()) | ||||
| 			{ | ||||
| 				tordApps.append(tApp.getUsername()); | ||||
| 				tordApps.append("|"); | ||||
| 			} | ||||
| 		} | ||||
|         for (TorifiedApp tApp:mApps) | ||||
|         { | ||||
|             if (tApp.isTorified()) | ||||
|             { | ||||
|                 tordApps.append(tApp.getUsername()); | ||||
|                 tordApps.append("|"); | ||||
|             } | ||||
|         } | ||||
|          | ||||
| 		Editor edit = mPrefs.edit(); | ||||
| 		edit.putString(PREFS_KEY_TORIFIED, tordApps.toString()); | ||||
| 		edit.commit(); | ||||
|         Editor edit = mPrefs.edit(); | ||||
|         edit.putString(PREFS_KEY_TORIFIED, tordApps.toString()); | ||||
|         edit.commit(); | ||||
|          | ||||
| 	} | ||||
|     } | ||||
|      | ||||
| 
 | ||||
| 	/** | ||||
| 	 * Called an application is check/unchecked | ||||
| 	 */ | ||||
| 	public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { | ||||
| 		final TorifiedApp app = (TorifiedApp) buttonView.getTag(); | ||||
| 		if (app != null) { | ||||
| 			app.setTorified(isChecked); | ||||
| 		} | ||||
|     /** | ||||
|      * Called an application is check/unchecked | ||||
|      */ | ||||
|     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { | ||||
|         final TorifiedApp app = (TorifiedApp) buttonView.getTag(); | ||||
|         if (app != null) { | ||||
|             app.setTorified(isChecked); | ||||
|         } | ||||
|          | ||||
| 		saveAppSettings(this); | ||||
|         saveAppSettings(this); | ||||
| 
 | ||||
| 	} | ||||
|     } | ||||
| 
 | ||||
|     public void autoCheckApplications(View button){ | ||||
|         ListView listView; | ||||
|         ListAdapter adapter; | ||||
|         TorifiedApp app; | ||||
|         float buttonId; | ||||
|         boolean[] isSelected; | ||||
|         int posI, selectedI, lvSz; | ||||
| 
 | ||||
|         buttonId = button.getId(); | ||||
|         listView = (ListView) findViewById(R.id.applistview); | ||||
|         lvSz = listView.getCount(); | ||||
|         isSelected = new boolean[lvSz]; | ||||
| 
 | ||||
|         selectedI = -1; | ||||
|          | ||||
|         for (posI = 0; posI < lvSz; ++posI){ | ||||
|             app = (TorifiedApp) listView.getItemAtPosition(posI); | ||||
|             if (buttonId == R.id.button_proxy_all){ | ||||
|                 app.setTorified(true); | ||||
|             }else if (buttonId == R.id.button_proxy_none){ | ||||
|                 app.setTorified(false); | ||||
|             }else { | ||||
|                 app.setTorified(!app.isTorified()); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
| 	public void onClick(View v) { | ||||
|     public void onClick(View v) { | ||||
|          | ||||
| 		CheckBox cbox = (CheckBox)v.getTag(); | ||||
|         CheckBox cbox = (CheckBox)v.getTag(); | ||||
|          | ||||
| 		final TorifiedApp app = (TorifiedApp)cbox.getTag(); | ||||
| 		if (app != null) { | ||||
| 			app.setTorified(!app.isTorified()); | ||||
| 			cbox.setChecked(app.isTorified()); | ||||
| 		} | ||||
|         final TorifiedApp app = (TorifiedApp)cbox.getTag(); | ||||
|         if (app != null) { | ||||
|             app.setTorified(!app.isTorified()); | ||||
|             cbox.setChecked(app.isTorified()); | ||||
|         } | ||||
|          | ||||
| 		saveAppSettings(this); | ||||
|         saveAppSettings(this); | ||||
|          | ||||
| 	} | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue