package com.uservoice.uservoicesdk.ui;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.net.Uri;
import android.support.v4.app.FragmentActivity;
import android.util.TypedValue;
import android.view.View;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings.PluginState;
import android.webkit.WebView;
import android.widget.ImageView;
import android.widget.TextView;
import com.uservoice.uservoicesdk.R;
import com.uservoice.uservoicesdk.Session;
import com.uservoice.uservoicesdk.activity.TopicActivity;
import com.uservoice.uservoicesdk.dialog.ArticleDialogFragment;
import com.uservoice.uservoicesdk.dialog.SuggestionDialogFragment;
import com.uservoice.uservoicesdk.model.Article;
import com.uservoice.uservoicesdk.model.BaseModel;
import com.uservoice.uservoicesdk.model.Suggestion;
import com.uservoice.uservoicesdk.model.Topic;
import java.util.Locale;
public class Utils {
@SuppressLint("SetJavaScriptEnabled")
public static void displayArticle(WebView webView, Article article, Context context) {
String styles = "iframe, img { width: 100%; }";
if (isDarkTheme(context)) {
webView.setBackgroundColor(Color.BLACK);
styles += "body { background-color: #000000; color: #F6F6F6; } a { color: #0099FF; }";
}
String html = String.format("<html><head><meta charset=\"utf-8\"><link rel=\"stylesheet\" type=\"text/css\" href=\"http://cdn.uservoice.com/stylesheets/vendor/typeset.css\"/><style>%s</style></head><body class=\"typeset\" style=\"font-family: sans-serif; margin: 1em\"><h3>%s</h3>%s</body></html>", styles, article.getTitle(), article.getHtml());
webView.setWebChromeClient(new WebChromeClient());
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setPluginState(PluginState.ON);
webView.loadUrl(String.format("data:text/html;charset=utf-8,%s", Uri.encode(html)));
}
public static boolean isDarkTheme(Context context) {
TypedValue tv = new TypedValue();
float[] hsv = new float[3];
context.getTheme().resolveAttribute(android.R.attr.textColorPrimary, tv, true);
Color.colorToHSV(context.getResources().getColor(tv.resourceId), hsv);
return hsv[2] > 0.5f;
}
@SuppressLint("DefaultLocale")
public static String getQuantityString(View view, int id, int count) {
return String.format("%,d %s", count, view.getContext().getResources().getQuantityString(id, count));
}
public static void displayInstantAnswer(View view, BaseModel model) {
TextView title = (TextView) view.findViewById(R.id.uv_title);
TextView detail = (TextView) view.findViewById(R.id.uv_detail);
View suggestionDetails = view.findViewById(R.id.uv_suggestion_details);
ImageView image = (ImageView) view.findViewById(R.id.uv_icon);
if (model instanceof Article) {
Article article = (Article) model;
image.setImageResource(R.drawable.uv_article);
title.setText(article.getTitle());
if (article.getTopicName() != null) {
detail.setVisibility(View.VISIBLE);
detail.setText(article.getTopicName());
} else {
detail.setVisibility(View.GONE);
}
suggestionDetails.setVisibility(View.GONE);
} else if (model instanceof Suggestion) {
Suggestion suggestion = (Suggestion) model;
image.setImageResource(R.drawable.uv_idea);
title.setText(suggestion.getTitle());
detail.setVisibility(View.VISIBLE);
detail.setText(suggestion.getForumName());
if (suggestion.getStatus() != null) {
View statusColor = suggestionDetails.findViewById(R.id.uv_suggestion_status_color);
TextView status = (TextView) suggestionDetails.findViewById(R.id.uv_suggestion_status);
int color = Color.parseColor(suggestion.getStatusColor());
suggestionDetails.setVisibility(View.VISIBLE);
status.setText(suggestion.getStatus().toUpperCase(Locale.getDefault()));
status.setTextColor(color);
statusColor.setBackgroundColor(color);
} else {
suggestionDetails.setVisibility(View.GONE);
}
}
}
public static void showModel(FragmentActivity context, BaseModel model) {
if (model instanceof Article) {
ArticleDialogFragment fragment = new ArticleDialogFragment((Article) model);
fragment.show(context.getSupportFragmentManager(), "ArticleDialogFragment");
} else if (model instanceof Suggestion) {
SuggestionDialogFragment fragment = new SuggestionDialogFragment((Suggestion) model);
fragment.show(context.getSupportFragmentManager(), "SuggestionDialogFragment");
} else if (model instanceof Topic) {
Session.getInstance().setTopic((Topic) model);
context.startActivity(new Intent(context, TopicActivity.class));
}
}
}