package com.fourlastor.dante;

import android.graphics.Bitmap;
import android.graphics.Typeface;
import android.os.AsyncTask;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import android.text.Spanned;
import android.text.style.StrikethroughSpan;
import android.widget.TextView;

import com.fourlastor.dante.html.BlockStyleListener;
import com.fourlastor.dante.html.FlavoredHtml;
import com.fourlastor.dante.html.ImgLoader;
import com.squareup.picasso.Picasso;

import java.io.IOException;

public class MainActivity extends AppCompatActivity {

    private TextView html;
    private FlavoredHtml flavoredHtml;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        html = ((TextView) findViewById(R.id.html));

        flavoredHtml = new FlavoredHtml.Builder(this)
                .newLine("p", "h1", "h2", "h3", "h4", "h5", "h6", "li")
                .textAppearance(R.style.headline, "h1")
                .textAppearance(R.style.title, "h2")
                .textAppearance(R.style.subhead, "h3")
                .textAppearance(R.style.body, "p", "li")
                .style(Typeface.BOLD, "b", "strong")
                .style(Typeface.ITALIC, "i", "em")
                .bullet(15, "li")
                .img(new ImgLoader.BitmapLoader(getResources()) {
                    @Override
                    protected Bitmap loadBitmap(String src) {
                        try {
                            return Picasso.with(MainActivity.this)
                                    .load(src)
                                    .get();
                        } catch (IOException e) {
                            throw new RuntimeException("Whoops!");
                        }
                    }
                })
                .blockStyle(new BlockStyleListener("s") {
                    @Override
                    protected Object getStyleSpan() {
                        return new StrikethroughSpan();
                    }
                })
                .build();
    }

    @Override
    protected void onStart() {
        super.onStart();

        final String rawHtml = "<h1>HTML Ipsum Presents</h1>\n" +
                "\n" +
                "<p><strong>Pellentesque habitant morbi tristique</strong> senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. <em>Aenean ultricies mi vitae est.</em> Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, <code>commodo vitae</code>, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus lacus enim ac dui. <a href=\"#\">Donec non enim</a> in turpis pulvinar facilisis. Ut felis.</p>\n" +
                "\n" +
                "<h2>Header Level 2</h2>\n" +
                "\n" +
                "<ol>\n" +
                "   <li>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</li>\n" +
                "   <li><s>Aliquam tincidunt mauris eu risus.</s></li>\n" +
                "</ol>\n" +
                "\n" +
                "<blockquote><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus magna. Cras in mi at felis aliquet congue. Ut a est eget ligula molestie gravida. Curabitur massa. Donec eleifend, libero at sagittis mollis, tellus est malesuada tellus, at luctus turpis elit sit amet quam. Vivamus pretium ornare est.</p></blockquote>\n" +
                "\n" +
                "<p><img src='https://github.com/fourlastor/dante/raw/master/images/screencast.gif' /></p>" +
                "\n" +
                "<h3>Header Level 3</h3>\n" +
                "\n" +
                "<ul>\n" +
                "   <li>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</li>\n" +
                "   <li>Aliquam tincidunt mauris eu risus.</li>\n" +
                "</ul>";

        // This is an example. Use something that you can control better than AsyncTask for your production code.
        new AsyncTask<Void, Void, Spanned>() {

            @Override
            protected Spanned doInBackground(Void... params) {
                return flavoredHtml.parse(rawHtml);
            }

            @Override
            protected void onPostExecute(Spanned spanned) {
                html.setText(spanned);
            }
        }.execute();
    }
}