package org.softeg.slartus.forpdaplus.controls.quickpost.items;
import android.content.Context;
import android.net.Uri;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import org.softeg.slartus.forpdaplus.App;
import org.softeg.slartus.forpdaplus.emotic.Smiles;
import org.softeg.slartus.forpdaplus.prefs.Preferences;
import java.util.Hashtable;
import java.util.Set;
public class EmoticsQuickView extends BaseQuickView {
private WebView webView;
@Override
public void onDestroy(){
if (webView != null) {
webView.setWebViewClient(null);
webView.removeAllViews();
webView.destroy();
webView = null;
}
}
@Override
public void onResume() {
if (webView != null) {
webView.onResume();
}
}
@Override
public void onPause() {
if (webView != null) {
webView.onPause();
}
}
public EmoticsQuickView(Context context) {
super(context);
}
@Override
View createView() {
if (getContext() == null)
return new View(getContext());
LayoutInflater inflater = LayoutInflater.from(getContext());
webView = new WebView(inflater.getContext());
webView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
webView.setBackgroundColor(App.getInstance().getThemeStyleWebViewBackground());
loadWebView();
return webView;
}
private void loadWebView() {
StringBuilder sb = new StringBuilder();
sb.append("<html><body bgcolor=\"").append(App.getInstance().getCurrentBackgroundColorHtml()).append("\">");
Hashtable<String, String> smiles = Smiles.getSmilesDict();
Set<String> favorites = Preferences.Topic.Post.getEmoticFavorites();
int favoritesCount = 0;
for (String key : favorites) {
if (TextUtils.isEmpty(key)) continue;
favoritesCount++;
sb.append("<a style=\"text-decoration: none;\" href=\"")
.append(key)
.append("\"><img style=\"padding:5px;\" src=\"file:///android_asset/forum/style_emoticons/default/")
.append(smiles.get(key.trim()))
.append("\" /></a> ");
}
if (favoritesCount > 0)
sb.append("<hr/>");
for (String key : smiles.keySet()) {
sb.append("<a style=\"text-decoration: none;\" href=\"")
.append(key)
.append("\"><img style=\"padding:5px;\" src=\"file:///android_asset/forum/style_emoticons/default/")
.append(smiles.get(key.trim()))
.append("\" /></a> ");
}
sb.append("</body></html>");
webView.setWebViewClient(new MyWebViewClient());
webView.loadDataWithBaseURL("http://4pda.ru/forum/", sb.toString(), "text/html", "UTF-8", null);
}
public class MyWebViewClient extends WebViewClient {
public boolean shouldOverrideUrlLoading(android.webkit.WebView view, java.lang.String url) {
Uri uri = Uri.parse(url);
if (uri.getPathSegments() == null || uri.getPathSegments().size() != 2)
return true;
String emoticText = uri.getPathSegments().get(1);
if (getEditor().getText() != null) {
String text = getEditor().getText().toString();
if (getEditor().getSelectionEnd() > 0
&& !" ".equals(text.substring(getEditor().getSelectionEnd() - 1, getEditor().getSelectionEnd())) )
emoticText = " " + emoticText;
getEditor().getText().insert(getEditor().getSelectionEnd(), emoticText);
} else
getEditor().setText(emoticText);
Preferences.Topic.Post.addEmoticToFavorites(emoticText.trim());
return true;
}
}
}