package io.github.droidkaigi.confsched.util;
import android.app.Activity;
import android.app.ActivityManager;
import android.content.Context;
import android.net.Uri;
import android.os.Build;
import android.support.annotation.NonNull;
import android.support.customtabs.CustomTabsIntent;
import android.support.v4.content.ContextCompat;
import android.text.Spannable;
import android.text.SpannableStringBuilder;
import android.text.method.LinkMovementMethod;
import android.text.style.ClickableSpan;
import android.util.Log;
import android.util.TypedValue;
import android.view.View;
import android.widget.TextView;
import io.github.droidkaigi.confsched.BuildConfig;
import io.github.droidkaigi.confsched.R;
public class AppUtil {
private static final String TAG = AppUtil.class.getSimpleName();
private static final String TWITTER_URL = "https://twitter.com/";
private static final String GITHUB_URL = "https://github.com/";
private static final String FACEBOOK_URL = "https://www.facebook.com/";
private static final String STRING_RES_TYPE = "string";
public static String getTwitterUrl(@NonNull String name) {
return TWITTER_URL + name;
}
public static String getGitHubUrl(@NonNull String name) {
return GITHUB_URL + name;
}
public static String getFacebookUrl(@NonNull String name) {
return FACEBOOK_URL + name;
}
public static String getString(@NonNull Context context, @NonNull String resName) {
try {
int resourceId = context.getResources().getIdentifier(
resName, STRING_RES_TYPE, context.getPackageName());
if (resourceId > 0) {
return context.getString(resourceId);
} else {
Log.d(TAG, "String resource id: " + resName + " is not found.");
return "";
}
} catch (Exception e) {
Log.e(TAG, "String resource id: " + resName + " is not found.", e);
return "";
}
}
public static String getVersionName(Context context) {
return context.getString(R.string.about_version_prefix, BuildConfig.VERSION_NAME);
}
public static void linkify(Activity activity, TextView textView, String linkText, String url) {
String text = textView.getText().toString();
SpannableStringBuilder builder = new SpannableStringBuilder();
builder.append(text);
builder.setSpan(
new ClickableSpan() {
@Override
public void onClick(View view) {
showWebPage(activity, url);
}
},
text.indexOf(linkText),
text.indexOf(linkText) + linkText.length(),
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE
);
textView.setText(builder);
textView.setMovementMethod(LinkMovementMethod.getInstance());
}
public static void showWebPage(Activity activity, @NonNull String url) {
CustomTabsIntent intent = new CustomTabsIntent.Builder()
.setShowTitle(true)
.setToolbarColor(ContextCompat.getColor(activity, R.color.theme500))
.build();
intent.launchUrl(activity, Uri.parse(url));
}
public static void setTaskDescription(Activity activity, String label, int color) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
activity.setTaskDescription(new ActivityManager.TaskDescription(label, null, color));
}
}
public static int getThemeColorPrimary(Context context) {
TypedValue value = new TypedValue();
context.getTheme().resolveAttribute(R.attr.colorPrimary, value, true);
return value.data;
}
}