diff options
| -rw-r--r-- | src/de/blinkt/openvpn/LogWindow.java | 49 | ||||
| -rw-r--r-- | src/de/blinkt/openvpn/core/OpenVpnManagementThread.java | 39 | ||||
| -rw-r--r-- | src/de/blinkt/openvpn/core/VpnStatus.java | 10 | 
3 files changed, 85 insertions, 13 deletions
| diff --git a/src/de/blinkt/openvpn/LogWindow.java b/src/de/blinkt/openvpn/LogWindow.java index f19e53d4..ba6e79a1 100644 --- a/src/de/blinkt/openvpn/LogWindow.java +++ b/src/de/blinkt/openvpn/LogWindow.java @@ -4,12 +4,16 @@ import android.app.AlertDialog;  import android.app.ListActivity;  import android.content.*;  import android.database.DataSetObserver; +import android.graphics.drawable.Drawable;  import android.os.Bundle;  import android.os.Handler;  import android.os.Handler.Callback;  import android.os.IBinder;  import android.os.Message; +import android.text.SpannableString; +import android.text.Spanned;  import android.text.format.DateFormat; +import android.text.style.ImageSpan;  import android.view.*;  import android.widget.*;  import android.widget.AdapterView.OnItemLongClickListener; @@ -72,7 +76,6 @@ public class LogWindow extends ListActivity implements StateListener  {  		public LogWindowListAdapter() {  			initLogBuffer(); -  			if (mHandler == null) {  				mHandler = new Handler(this);  			} @@ -145,6 +148,7 @@ public class LogWindow extends ListActivity implements StateListener  {  			LogItem le = myEntries.get(position);  			String msg = le.getString(LogWindow.this); +            String time ="";  			if (mTimeFormat != 0) {  				Date d = new Date(le.getLogtime());  				java.text.DateFormat timeformat; @@ -152,14 +156,49 @@ public class LogWindow extends ListActivity implements StateListener  {  					timeformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss",Locale.getDefault());  				else  					timeformat = DateFormat.getTimeFormat(LogWindow.this); -				String time = timeformat.format(d); -				msg =  time + " " + msg; +				 time = timeformat.format(d); +  			} -			v.setText(msg); +            msg =  time + " " + msg; + +            int spanStart = time.length(); + +            SpannableString t = new SpannableString(msg); + +            //t.setSpan(getSpanImage(le,(int)v.getTextSize()),spanStart,spanStart+1, Spanned.SPAN_INCLUSIVE_INCLUSIVE); +			v.setText(t);  			return v;  		} -		@Override +        private ImageSpan getSpanImage(LogItem li, int imageSize) { +            int imageRes = android.R.drawable.ic_menu_call; + +            switch (li.getLogLevel()) { +                case ERROR: +                    imageRes = android.R.drawable.ic_notification_clear_all; +                    break; +                case INFO: +                    imageRes = android.R.drawable.ic_menu_compass; +                    break; +                case VERBOSE: +                    imageRes = android.R.drawable.ic_menu_info_details; +                    break; +                case WARNING: +                    imageRes = android.R.drawable.ic_menu_camera; +                    break; +            } + +            Drawable d = getResources().getDrawable(imageRes); + + +            //d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight()); +            d.setBounds(0, 0, imageSize, imageSize); +            ImageSpan span = new ImageSpan(d, ImageSpan.ALIGN_BOTTOM); + +            return span; +        } + +        @Override  		public int getItemViewType(int position) {  			return 0;  		} diff --git a/src/de/blinkt/openvpn/core/OpenVpnManagementThread.java b/src/de/blinkt/openvpn/core/OpenVpnManagementThread.java index ffa192b5..23c6cff6 100644 --- a/src/de/blinkt/openvpn/core/OpenVpnManagementThread.java +++ b/src/de/blinkt/openvpn/core/OpenVpnManagementThread.java @@ -224,11 +224,7 @@ public class OpenVpnManagementThread implements Runnable, OpenVPNManagement {  			} else if (cmd.equals("PROXY")) {
  				processProxyCMD(argument);
  			} else if (cmd.equals("LOG")) {
 -				String[] args = argument.split(",",3);
 -				// 0 unix time stamp
 -				// 1 log level N,I,E etc.
 -				// 2 log message
 -				VpnStatus.logWarning( args[2]);
 +                 processLogMessage(argument);
  			} else if (cmd.equals("RSA_SIGN")) {
  				processSignCommand(argument);
  			} else {
 @@ -243,7 +239,38 @@ public class OpenVpnManagementThread implements Runnable, OpenVPNManagement {  			VpnStatus.logWarning("MGMT: Got unrecognized line from management:" + command);
  		}
  	}
 -	private void handleHold() {
 +
 +    private void processLogMessage(String argument) {
 +        String[] args = argument.split(",",3);
 +        // 0 unix time stamp
 +        // 1 log level N,I,E etc.
 +                /*
 +                  (b) zero or more message flags in a single string:
 +          I -- informational
 +          F -- fatal error
 +          N -- non-fatal error
 +          W -- warning
 +          D -- debug, and
 +                 */
 +        // 2 log message
 +
 +        VpnStatus.LogLevel level;
 +        if (args[1].equals("I")) {
 +            level = VpnStatus.LogLevel.INFO;
 +        } else if (args[1].equals("W")) {
 +            level = VpnStatus.LogLevel.WARNING;
 +        } else if (args[1].equals("D")) {
 +            level = VpnStatus.LogLevel.VERBOSE;
 +        } else if (args[1].equals("F")) {
 +            level = VpnStatus.LogLevel.ERROR;
 +        } else {
 +            level = VpnStatus.LogLevel.INFO;
 +        }
 +
 +        VpnStatus.logMessage(level,"P:", args[2]);
 +    }
 +
 +    private void handleHold() {
  		if(mReleaseHold) {
  			releaseHoldCmd();
  		} else { 
 diff --git a/src/de/blinkt/openvpn/core/VpnStatus.java b/src/de/blinkt/openvpn/core/VpnStatus.java index a83714a4..c8e5a8b1 100644 --- a/src/de/blinkt/openvpn/core/VpnStatus.java +++ b/src/de/blinkt/openvpn/core/VpnStatus.java @@ -193,9 +193,15 @@ public class VpnStatus {                  else                      throw e;              } +  		} -		 -		// The lint is wrong here  + +        public LogLevel getLogLevel() +        { +            return mLevel; +        } + +        // The lint is wrong here  		@SuppressLint("StringFormatMatches")  		private String getMobileInfoString(Context c) {  			c.getPackageManager(); | 
