[tor-commits] [orbot/master] fixes for layout and notification data

n8fr8 at torproject.org n8fr8 at torproject.org
Mon Jul 14 17:40:21 UTC 2014


commit f2f076c29c379c3288aacf403189fb945b0463b7
Author: Nathan Freitas <nathan at freitas.net>
Date:   Thu Jul 10 12:34:31 2014 -0400

    fixes for layout and notification data
    be sure to only get the IP of the last hop (that is the exit)
---
 res/layout/layout_notification_expanded.xml        |   63 ++++++-----
 src/org/torproject/android/service/TorService.java |  117 ++++++++------------
 2 files changed, 79 insertions(+), 101 deletions(-)

diff --git a/res/layout/layout_notification_expanded.xml b/res/layout/layout_notification_expanded.xml
index c038cc8..b61d6fe 100644
--- a/res/layout/layout_notification_expanded.xml
+++ b/res/layout/layout_notification_expanded.xml
@@ -18,9 +18,7 @@
     xmlns:internal="http://schemas.android.com/apk/prv/res/android"
     android:id="@+id/status_bar_latest_event_content"
     android:layout_width="match_parent"
-    android:layout_height="128dp"
-    internal:layout_minHeight="128dp"
-    internal:layout_maxHeight="128dp"
+    android:layout_height="wrap_content"    
     >
     <ImageView android:id="@+id/icon"
         android:layout_width="@dimen/notification_large_icon_width"
@@ -54,7 +52,9 @@
                 android:ellipsize="marquee"
                 android:fadingEdge="horizontal"
                 android:layout_weight="1"
-                />
+                android:textStyle="bold"
+ 				android:textAppearance="@style/NotificationTitle"
+                 />
             <ViewStub android:id="@+id/time"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
@@ -70,32 +70,12 @@
                 android:layout="@layout/notification_template_part_chronometer"
                 />
         </LinearLayout>
-        <TextView android:id="@+id/text2"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:layout_marginTop="-2dp"
-            android:layout_marginBottom="-2dp"
-            android:layout_marginStart="8dp"
-            android:singleLine="true"
-            android:fadingEdge="horizontal"
-            android:ellipsize="marquee"
-            android:visibility="gone"
-            />
-        <ProgressBar
-            android:id="@android:id/progress"
-            android:layout_width="match_parent"
-            android:layout_height="12dp"
-            android:layout_marginStart="8dp"
-            android:visibility="gone"
-            style="?android:attr/progressBarStyleHorizontal"
-            />
         <LinearLayout
             android:id="@+id/line3"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:orientation="horizontal"
-            android:gravity="center_vertical"
-            android:layout_marginStart="8dp"
+            android:orientation="horizontal"       
+            android:layout_marginStart="8dp"                
             >
             <TextView android:id="@+id/text"
                 android:layout_width="0dp"
@@ -105,6 +85,7 @@
                 android:singleLine="true"
                 android:ellipsize="marquee"
                 android:fadingEdge="horizontal"
+				android:textAppearance="@style/NotificationText"                
                 />
             <TextView android:id="@+id/info"
                 android:layout_width="wrap_content"
@@ -114,6 +95,7 @@
                 android:singleLine="true"
                 android:gravity="center"
                 android:paddingStart="8dp"
+				android:textAppearance="@style/NotificationText"
                 />
             <ImageView android:id="@+id/right_icon"
                 android:layout_width="16dp"
@@ -124,13 +106,30 @@
                 android:scaleType="centerInside"
                 android:visibility="gone"
                 />
-            <Button
+            <!-- 
+            <ImageButton
 		    android:id="@+id/_tor_notificationBT"
-		    android:layout_width="wrap_content"
-		    android:layout_height="wrap_content"
-		    android:layout_alignParentRight="true"
-		    android:layout_below="@+id/tv"
-		    android:text="test2" />
+		    android:layout_width="24dp"
+		    android:layout_height="24dp"		   
+		    android:src="@drawable/nav_refresh" />
+		     -->
         </LinearLayout>
+        
+        <TextView android:id="@+id/text2"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="-2dp"
+            android:layout_marginBottom="-2dp"
+            android:layout_marginStart="8dp"            
+            android:fadingEdge="horizontal"        
+            />
+        <ProgressBar
+            android:id="@android:id/progress"
+            android:layout_width="match_parent"
+            android:layout_height="12dp"
+            android:layout_marginStart="8dp"
+            android:visibility="gone"
+            style="?android:attr/progressBarStyleHorizontal"
+            />
     </LinearLayout>
 </FrameLayout>
diff --git a/src/org/torproject/android/service/TorService.java b/src/org/torproject/android/service/TorService.java
index 9ed28b9..baaa0a2 100644
--- a/src/org/torproject/android/service/TorService.java
+++ b/src/org/torproject/android/service/TorService.java
@@ -23,15 +23,14 @@ import java.util.Arrays;
 import java.util.Iterator;
 import java.util.List;
 import java.util.StringTokenizer;
-import java.util.Timer;
-import java.util.TimerTask;
+import java.util.concurrent.TimeoutException;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
-import java.util.concurrent.TimeoutException;
 
 import net.freehaven.tor.control.ConfigEntry;
 import net.freehaven.tor.control.EventHandler;
 import net.freehaven.tor.control.TorControlConnection;
+import net.freehaven.tor.control.TorControlError;
 
 import org.sufficientlysecure.rootcommands.Shell;
 import org.sufficientlysecure.rootcommands.command.SimpleCommand;
@@ -58,16 +57,13 @@ import android.net.ConnectivityManager;
 import android.net.NetworkInfo;
 import android.os.AsyncTask;
 import android.os.Environment;
-import android.os.Handler;
 import android.os.IBinder;
 import android.os.RemoteCallbackList;
 import android.os.RemoteException;
 import android.support.v4.app.NotificationCompat;
 import android.support.v4.app.NotificationCompat.Builder;
-import android.support.v4.content.LocalBroadcastManager;
 import android.util.Log;
 import android.widget.RemoteViews;
-import android.widget.Toast;
 
 public class TorService extends Service implements TorServiceConstants, TorConstants, EventHandler
 {
@@ -219,7 +215,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
 	}
 		
  	@SuppressLint("NewApi")
-	private void showToolbarNotification (String notifyMsg, int notifyId, int icon, boolean isOngoing)
+	private void showToolbarNotification (String notifyMsg, int notifyType, int icon)
  	{	    
  		
  		//Reusable code.
@@ -230,10 +226,14 @@ public class TorService extends Service implements TorServiceConstants, TorConst
  		RemoteViews expandedView = new RemoteViews(this.getPackageName(), 
  		        R.layout.layout_notification_expanded);
  		
- 		expandedView.setTextViewText(R.id.text, notifyMsg);
- 		expandedView.setTextViewText(R.id.title, getString(R.string.app_name)+ ' ' + exitIP); 		
- 		//expandedView.setTextViewText(R.id.exitIP, exitIP);
- 		//expandedView.setOnClickPendingIntent(R.id._tor_notificationBT, pendIntent);
+ 		if (notifyType == NOTIFY_ID)
+ 			expandedView.setTextViewText(R.id.text, notifyMsg);
+ 		else
+ 			expandedView.setTextViewText(R.id.text2, notifyMsg);
+ 		
+ 		expandedView.setTextViewText(R.id.title, getString(R.string.app_name)); 		
+ 		expandedView.setTextViewText(R.id.info, "Tor IP: " + exitIP);
+ 	//	expandedView.setOnClickPendingIntent(R.id._tor_notificationBT, pendIntent);
  		expandedView.setImageViewResource(R.id.icon, icon);
  		
 		if (mNotifyBuilder == null)
@@ -245,7 +245,6 @@ public class TorService extends Service implements TorServiceConstants, TorConst
 			{
 				mNotifyBuilder = new NotificationCompat.Builder(this)
 					.setContentTitle(getString(R.string.app_name))
-					.setContentText( getString(R.string.status_activated))
 					.setSmallIcon(R.drawable.ic_stat_tor);
 
 				mNotifyBuilder.setContentIntent(pendIntent);
@@ -256,31 +255,24 @@ public class TorService extends Service implements TorServiceConstants, TorConst
 		mNotifyBuilder.setContentText(notifyMsg);
 		mNotifyBuilder.setSmallIcon(icon);
 		
-		
-		if (notifyId == ERROR_NOTIFY_ID)
+		if (notifyType != NOTIFY_ID)
 		{
 			mNotifyBuilder.setTicker(notifyMsg);
 			mNotifyBuilder.setLights(Color.RED, 1000, 1000);
 			mNotifyBuilder.setSmallIcon(R.drawable.ic_stat_notifyerr);
 		}
-		else
-		{
-			mNotifyBuilder.setTicker(null); //make sure to clear ticker
-		}
+		
+		mNotifyBuilder.setOngoing(prefPersistNotifications);
 		
 		mNotification = mNotifyBuilder.build();
 		mNotification.bigContentView = expandedView;
 		
-		if (isOngoing)
+		if (mNotification == null && prefPersistNotifications)		
 		{
-			startForeground(notifyId, mNotification);
-		
+			startForeground(NOTIFY_ID, mNotification);		
 		}
-		else
-		{
-			mNotificationManager.notify(notifyId, mNotification);
-		}	
- 		
+				
+		mNotificationManager.notify(NOTIFY_ID, mNotification);
  	}
     
 
@@ -435,13 +427,13 @@ public class TorService extends Service implements TorServiceConstants, TorConst
 						
 					} catch (FileNotFoundException e) {
 						logException("unable to read onion hostname file",e);
-						showToolbarNotification(getString(R.string.unable_to_read_hidden_service_name), HS_NOTIFY_ID, R.drawable.ic_stat_notifyerr, false);
+						showToolbarNotification(getString(R.string.unable_to_read_hidden_service_name), HS_NOTIFY_ID, R.drawable.ic_stat_notifyerr);
 						return null;
 					}
 		    	}
 		    	else
 		    	{
-					showToolbarNotification(getString(R.string.unable_to_read_hidden_service_name), HS_NOTIFY_ID, R.drawable.ic_stat_notifyerr, false);
+					showToolbarNotification(getString(R.string.unable_to_read_hidden_service_name), HS_NOTIFY_ID, R.drawable.ic_stat_notifyerr);
 					return null;
 		    		
 		    	}
@@ -451,7 +443,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
         	{
         		String onionHostname = result.toString();
         		
-	        	showToolbarNotification(getString(R.string.hidden_service_on) + ' ' + onionHostname, HS_NOTIFY_ID, R.drawable.ic_stat_tor, false);
+	        	showToolbarNotification(getString(R.string.hidden_service_on) + ' ' + onionHostname, HS_NOTIFY_ID, R.drawable.ic_stat_tor);
 				Editor pEdit = prefs.edit();
 				pEdit.putString("pref_hs_hostname",onionHostname);
 				pEdit.commit();
@@ -719,13 +711,13 @@ public class TorService extends Service implements TorServiceConstants, TorConst
 		
 		if(proxyAll)
 		{
-			showToolbarNotification(getString(R.string.setting_up_full_transparent_proxying_), TRANSPROXY_NOTIFY_ID, R.drawable.ic_stat_tor, false);
+			showToolbarNotification(getString(R.string.setting_up_full_transparent_proxying_), TRANSPROXY_NOTIFY_ID, R.drawable.ic_stat_tor);
 
 			code = mTransProxy.setTransparentProxyingAll(this);
 		}
 		else
 		{
-			showToolbarNotification(getString(R.string.setting_up_app_based_transparent_proxying_), TRANSPROXY_NOTIFY_ID, R.drawable.ic_stat_tor, false);
+			showToolbarNotification(getString(R.string.setting_up_app_based_transparent_proxying_), TRANSPROXY_NOTIFY_ID, R.drawable.ic_stat_tor);
 
 			code = mTransProxy.setTransparentProxyingByApp(this,AppManager.getApps(this, TorServiceUtils.getSharedPrefs(getApplicationContext())));
 		}
@@ -735,11 +727,11 @@ public class TorService extends Service implements TorServiceConstants, TorConst
 		
 		if (code == 0)
 		{
-			showToolbarNotification(getString(R.string.transparent_proxying_enabled), TRANSPROXY_NOTIFY_ID, R.drawable.ic_stat_tor, false);
+			showToolbarNotification(getString(R.string.transparent_proxying_enabled), TRANSPROXY_NOTIFY_ID, R.drawable.ic_stat_tor);
 
 			if (enableTether)
 			{
-				showToolbarNotification(getString(R.string.transproxy_enabled_for_tethering_), TRANSPROXY_NOTIFY_ID, R.drawable.ic_stat_tor, false);
+				showToolbarNotification(getString(R.string.transproxy_enabled_for_tethering_), TRANSPROXY_NOTIFY_ID, R.drawable.ic_stat_tor);
 
 				mTransProxy.enableTetheringRules(this);
 				  
@@ -747,7 +739,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
 		}
 		else
 		{
-			showToolbarNotification(getString(R.string.warning_error_starting_transparent_proxying_), TRANSPROXY_NOTIFY_ID, R.drawable.ic_stat_tor, false);
+			showToolbarNotification(getString(R.string.warning_error_starting_transparent_proxying_), TRANSPROXY_NOTIFY_ID, R.drawable.ic_stat_tor);
 
 		}
 	
@@ -1168,7 +1160,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
 	   		    	 stopTor();
 	   		    	logException("Unable to start Tor: " + e.toString(),e);	
 	   		    	 currentStatus = STATUS_OFF;
-	   		    	 showToolbarNotification(getString(R.string.unable_to_start_tor) + ": " + e.getMessage(), ERROR_NOTIFY_ID, R.drawable.ic_stat_notifyerr, false);
+	   		    	 showToolbarNotification(getString(R.string.unable_to_start_tor) + ": " + e.getMessage(), ERROR_NOTIFY_ID, R.drawable.ic_stat_notifyerr);
 	   		     }
         	}
         	else
@@ -1191,7 +1183,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
           {
         	  currentStatus = STATUS_ON;
 
-        	  showToolbarNotification(getString(R.string.status_activated), NOTIFY_ID, R.drawable.ic_stat_tor, prefPersistNotifications);
+        	  showToolbarNotification(getString(R.string.status_activated), NOTIFY_ID, R.drawable.ic_stat_tor);
           }
         
       	
@@ -1261,7 +1253,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
 				iconId = R.drawable.ic_stat_tor_xfer;
 			
 			if (mConnectivity && prefPersistNotifications)
-	        	  showToolbarNotification(sb.toString(), NOTIFY_ID, iconId, prefPersistNotifications);
+	        	  showToolbarNotification(sb.toString(), NOTIFY_ID, iconId);
 
 			mTotalTrafficWritten += written;
 			mTotalTrafficRead += read;
@@ -1321,8 +1313,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
    	
 	public void circuitStatus(String status, String circID, String path) {
 		
-		if (status.equals("BUILT") || status.equals("CLOSED"))
-		{
+		
 			StringBuilder sb = new StringBuilder();
 			sb.append("Circuit (");
 			sb.append((circID));
@@ -1332,41 +1323,25 @@ public class TorService extends Service implements TorServiceConstants, TorConst
 			
 			StringTokenizer st = new StringTokenizer(path,",");
 			String node = null;
+			String nodeName = null;
 			
 			while (st.hasMoreTokens())
 			{
 				node = st.nextToken();
-				final String nodeName = parseNodeName(node);
+				nodeName = parseNodeName(node);
 				sb.append(nodeName);
 				
-				if(status.equals("BUILT") && currentStatus==STATUS_ON){
-					new getExternalIP().execute(nodeName);
-				}
-					
 				if (st.hasMoreTokens())
 					sb.append (" > ");
 			}
 			
 			logNotice(sb.toString());
-		}
-		
-		/**
-		if (currentStatus != STATUS_ON)
-		{
-			try {
-				String state;
 		
-				state = conn.getInfo("dormant");
-			
-				if (state != null && Integer.parseInt(state) == 0)
-					currentStatus = STATUS_ON;
-				else
-					currentStatus = STATUS_CONNECTING;
-				
-			} catch (IOException e) {
-				logException("Error getting state from Tor control port",e);
+			//get IP from last nodename
+			if(status.equals("BUILT") && currentStatus==STATUS_ON){
+				new getExternalIP().execute(nodeName);
 			}
-		}*/
+				
 	
 	}
 	
@@ -1386,7 +1361,8 @@ public class TorService extends Service implements TorServiceConstants, TorConst
 
 		    	}
 				return nodeDetails;
-				
+			} catch (TorControlError e) {
+				Log.d(TorService.TAG,"Error getting node details for: " + params[0]);			
 			} catch (Exception e) {
 				Log.e(TorService.TAG,"Error getting node details",e);
 			}
@@ -1402,6 +1378,9 @@ public class TorService extends Service implements TorServiceConstants, TorConst
 				Pattern pattern = Pattern.compile(IPADDRESS_PATTERN);
 				Matcher matcher = null;
 				if(result!=null){
+					
+					sendCallbackLogMessage("Node Info: " + result);	
+
 					matcher = pattern.matcher(result);
 					if (matcher.find()) {
 						exitIP = matcher.group();
@@ -1837,13 +1816,13 @@ public class TorService extends Service implements TorServiceConstants, TorConst
 						if (!mConnectivity)
 						{
 							logNotice(context.getString(R.string.no_network_connectivity_putting_tor_to_sleep_));
-							showToolbarNotification(getString(R.string.no_internet_connection_tor),NOTIFY_ID,R.drawable.ic_stat_tor_off,prefPersistNotifications);
+							showToolbarNotification(getString(R.string.no_internet_connection_tor),NOTIFY_ID,R.drawable.ic_stat_tor_off);
 							
 						}
 						else
 						{
 							logNotice(context.getString(R.string.network_connectivity_is_good_waking_tor_up_));
-							showToolbarNotification(getString(R.string.status_activated),NOTIFY_ID,R.drawable.ic_stat_tor,prefPersistNotifications);
+							showToolbarNotification(getString(R.string.status_activated),NOTIFY_ID,R.drawable.ic_stat_tor);
 
 							if (mHasRoot && mEnableTransparentProxy)
 								enableTransparentProxy(mTransProxyAll, mTransProxyTethering);
@@ -1940,7 +1919,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
 	        }
 	        catch (Exception e)
 	        {
-	       	  showToolbarNotification (getString(R.string.error_installing_binares),ERROR_NOTIFY_ID,R.drawable.ic_stat_notifyerr, false);
+	       	  showToolbarNotification (getString(R.string.error_installing_binares),ERROR_NOTIFY_ID,R.drawable.ic_stat_notifyerr);
 
 	        	return false;
 	        }
@@ -1963,7 +1942,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
 			{
 				String msgBridge = getString(R.string.bridge_requires_ip) +
 						getString(R.string.send_email_for_bridges);
-				showToolbarNotification(msgBridge, ERROR_NOTIFY_ID, R.drawable.ic_stat_tor, false);
+				showToolbarNotification(msgBridge, ERROR_NOTIFY_ID, R.drawable.ic_stat_tor);
 				logMessage(msgBridge);
 			
 				return false;
@@ -1977,7 +1956,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
 				bridgeDelim = ",";
 			}
 			
-			showToolbarNotification(getString(R.string.notification_using_bridges) + ": " + bridgeList, TRANSPROXY_NOTIFY_ID, R.drawable.ic_stat_tor, false);
+			showToolbarNotification(getString(R.string.notification_using_bridges) + ": " + bridgeList, TRANSPROXY_NOTIFY_ID, R.drawable.ic_stat_tor);
   
 			StringTokenizer st = new StringTokenizer(bridgeList,bridgeDelim);
 			while (st.hasMoreTokens())
@@ -2036,7 +2015,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
         }
         catch (Exception e)
         {
-     	  showToolbarNotification (getString(R.string.your_reachableaddresses_settings_caused_an_exception_),ERROR_NOTIFY_ID,R.drawable.ic_stat_notifyerr, false);
+     	  showToolbarNotification (getString(R.string.your_reachableaddresses_settings_caused_an_exception_),ERROR_NOTIFY_ID,R.drawable.ic_stat_notifyerr);
 
            return false;
         }
@@ -2065,7 +2044,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
         }
         catch (Exception e)
         {
-       	  showToolbarNotification (getString(R.string.your_relay_settings_caused_an_exception_),ERROR_NOTIFY_ID,R.drawable.ic_stat_notifyerr, false);
+       	  showToolbarNotification (getString(R.string.your_relay_settings_caused_an_exception_),ERROR_NOTIFY_ID,R.drawable.ic_stat_notifyerr);
 
           
             return false;





More information about the tor-commits mailing list