/*
* Copyright (C) 2016 Google Inc.
*
* 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.
*/
package com.googlecode.android_scripting;
import android.app.AlertDialog;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.DialogInterface;
import android.widget.Toast;
public class Log {
private Log() {
// Utility class.
}
private static String getTag() {
StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace();
String fullClassName = stackTraceElements[4].getClassName();
String className = fullClassName.substring(fullClassName.lastIndexOf(".") + 1);
int lineNumber = stackTraceElements[4].getLineNumber();
return "sl4a." + className + ":" + lineNumber;
}
private static void toast(Context context, String message) {
Toast.makeText(context, message, Toast.LENGTH_SHORT).show();
}
public static void notify(Context context, String title, String contentTitle, String message) {
android.util.Log.v(getTag(), String.format("%s %s", contentTitle, message));
String packageName = context.getPackageName();
int iconId = context.getResources().getIdentifier("stat_sys_warning", "drawable", packageName);
NotificationManager notificationManager =
(NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
Notification.Builder builder = new Notification.Builder(context);
builder.setSmallIcon(iconId > 0 ? iconId : -1)
.setTicker(title)
.setWhen(0)
.setContentTitle(contentTitle)
.setContentText(message)
.setContentIntent(PendingIntent.getService(context, 0, null, 0));
Notification note = builder.build();
note.contentView.getLayoutId();
notificationManager.notify(NotificationIdFactory.create(), note);
}
public static void showDialog(final Context context, final String title, final String message) {
android.util.Log.v(getTag(), String.format("%s %s", title, message));
MainThread.run(context, new Runnable() {
@Override
public void run() {
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle(title);
builder.setMessage(message);
DialogInterface.OnClickListener buttonListener = new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
};
builder.setPositiveButton("Ok", buttonListener);
builder.show();
}
});
}
public static void v(String message) {
android.util.Log.v(getTag(), message);
}
public static void v(String message, Throwable e) {
android.util.Log.v(getTag(), message, e);
}
public static void v(Context context, String message) {
toast(context, message);
android.util.Log.v(getTag(), message);
}
public static void v(Context context, String message, Throwable e) {
toast(context, message);
android.util.Log.v(getTag(), message, e);
}
public static void e(Throwable e) {
android.util.Log.e(getTag(), "Error", e);
}
public static void e(String message) {
android.util.Log.e(getTag(), message);
}
public static void e(String message, Throwable e) {
android.util.Log.e(getTag(), message, e);
}
public static void e(Context context, String message) {
toast(context, message);
android.util.Log.e(getTag(), message);
}
public static void e(Context context, String message, Throwable e) {
toast(context, message);
android.util.Log.e(getTag(), message, e);
}
public static void w(Throwable e) {
android.util.Log.w(getTag(), "Warning", e);
}
public static void w(String message) {
android.util.Log.w(getTag(), message);
}
public static void w(String message, Throwable e) {
android.util.Log.w(getTag(), message, e);
}
public static void w(Context context, String message) {
toast(context, message);
android.util.Log.w(getTag(), message);
}
public static void w(Context context, String message, Throwable e) {
toast(context, message);
android.util.Log.w(getTag(), message, e);
}
public static void d(String message) {
android.util.Log.d(getTag(), message);
}
public static void d(String message, Throwable e) {
android.util.Log.d(getTag(), message, e);
}
public static void d(Context context, String message) {
toast(context, message);
android.util.Log.d(getTag(), message);
}
public static void d(Context context, String message, Throwable e) {
toast(context, message);
android.util.Log.d(getTag(), message, e);
}
public static void i(String message) {
android.util.Log.i(getTag(), message);
}
public static void i(String message, Throwable e) {
android.util.Log.i(getTag(), message, e);
}
public static void i(Context context, String message) {
toast(context, message);
android.util.Log.i(getTag(), message);
}
public static void i(Context context, String message, Throwable e) {
toast(context, message);
android.util.Log.i(getTag(), message, e);
}
}