package com.nolanlawson.logcat.util; import android.content.Context; import android.util.Log; import com.nolanlawson.logcat.R; import com.nolanlawson.logcat.data.ColorScheme; import com.nolanlawson.logcat.helper.PreferenceHelper; public class LogLineAdapterUtil { public static final int LOG_WTF = 100; // arbitrary int to signify 'wtf' log level private static final int NUM_COLORS = 17; public static int getBackgroundColorForLogLevel(Context context, int logLevel) { int result = android.R.color.black; switch (logLevel) { case Log.DEBUG: result = R.color.background_debug; break; case Log.ERROR: result = R.color.background_error; break; case Log.INFO: result = R.color.background_info; break; case Log.VERBOSE: result = R.color.background_verbose; break; case Log.WARN: result = R.color.background_warn; break; case LOG_WTF: result = R.color.background_wtf; break; } return context.getResources().getColor(result); } public static int getForegroundColorForLogLevel(Context context, int logLevel) { int result = android.R.color.primary_text_dark; switch (logLevel) { case Log.DEBUG: result = R.color.foreground_debug; break; case Log.ERROR: result = R.color.foreground_error; break; case Log.INFO: result = R.color.foreground_info; break; case Log.VERBOSE: result = R.color.foreground_verbose; break; case Log.WARN: result = R.color.foreground_warn; break; case LOG_WTF: result = R.color.foreground_wtf; break; } return context.getResources().getColor(result); } public static synchronized int getOrCreateTagColor(Context context, String tag) { int hashCode = (tag == null) ? 0 : tag.hashCode(); int smear = Math.abs(hashCode) % NUM_COLORS; return getColorAt(smear, context); } private static int getColorAt(int i, Context context) { ColorScheme colorScheme = PreferenceHelper.getColorScheme(context); int[] colorArray = colorScheme.getTagColors(context); return colorArray[i]; } public static boolean logLevelIsAcceptableGivenLogLevelLimit(int logLevel, int logLevelLimit) { int minVal = 0; switch (logLevel) { case Log.VERBOSE: minVal = 0; break; case Log.DEBUG: minVal = 1; break; case Log.INFO: minVal = 2; break; case Log.WARN: minVal = 3; break; case Log.ERROR: minVal = 4; break; case LOG_WTF: minVal = 5; break; default: // e.g. the starting line that says "output of log such-and-such" return true; } return minVal >= logLevelLimit; } }