Android Open Source - holoreader Changelog Dialog






From Project

Back to project page holoreader.

License

The source code is released under:

GNU General Public License

If you think the Android project holoreader listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package de.hdodenhof.holoreader.misc;
//from   w ww .j  a  v  a2 s . co  m
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;

import android.annotation.SuppressLint;
import android.content.Context;
import android.content.res.XmlResourceParser;
import android.support.v4.app.FragmentActivity;
import android.text.format.DateFormat;
import android.webkit.WebView;

import de.hdodenhof.holoreader.R;
import de.hdodenhof.holoreader.fragments.DynamicDialogFragment;

public class ChangelogDialog {

    @SuppressWarnings("unused")
    private static final String TAG = ArticleViewPager.class.getSimpleName();

    private static final String STYLE = "h1 { margin-left: 0px; font-size: 12pt; margin-bottom: 0px; }" + "li { margin-left: 0px; font-size: 10pt; }"
            + "ul { padding-left: 30px; }" + ".date { font-size: 9pt; color: #606060;  display: block; }";

    private final Context mContext;

    public ChangelogDialog(Context context) {
        mContext = context;
    }

    @SuppressLint("SimpleDateFormat")
    private String parseDate(String dateString) {
        final SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
        try {
            final Date parsedDate = dateFormat.parse(dateString);
            return DateFormat.getDateFormat(mContext).format(parsedDate);
        } catch (ParseException e) {
            return dateString;
        }
    }

    private void parseReleaseTag(StringBuilder changelogBuilder, XmlPullParser resourceParser) throws XmlPullParserException, IOException {
        changelogBuilder.append("<h1>Version ").append(resourceParser.getAttributeValue(null, "version")).append("</h1>");

        if (resourceParser.getAttributeValue(null, "date") != null) {
            changelogBuilder.append("<span class='date'>").append(parseDate(resourceParser.getAttributeValue(null, "date"))).append("</span>");
        }

        changelogBuilder.append("<ul>");

        int eventType = resourceParser.getEventType();
        while ((eventType != XmlPullParser.END_TAG) || (resourceParser.getName().equals("change"))) {
            if ((eventType == XmlPullParser.START_TAG) && (resourceParser.getName().equals("change"))) {
                eventType = resourceParser.next();
                changelogBuilder.append("<li>" + resourceParser.getText() + "</li>");
            }
            eventType = resourceParser.next();
        }

        changelogBuilder.append("</ul>");
    }

    private String getHTMLChangelog(int resourceId) {
        final StringBuilder changelogBuilder = new StringBuilder();

        changelogBuilder.append("<html>");
        changelogBuilder.append("<head>").append("<style type=\"text/css\">").append(STYLE).append("</style>").append("</head>");
        changelogBuilder.append("<body>");

        final XmlResourceParser xml = mContext.getResources().getXml(resourceId);
        try {
            int eventType = xml.getEventType();
            while (eventType != XmlPullParser.END_DOCUMENT) {
                if ((eventType == XmlPullParser.START_TAG) && (xml.getName().equals("release"))) {
                    parseReleaseTag(changelogBuilder, xml);
                }
                eventType = xml.next();
            }
        } catch (XmlPullParserException e) {
        } catch (IOException e) {
        } finally {
            xml.close();
        }

        changelogBuilder.append("</body>");
        changelogBuilder.append("</html>");

        return changelogBuilder.toString();
    }

    public void show() {
        String title = mContext.getString(R.string.ChangelogTitle);
        String htmlChangelog = getHTMLChangelog(R.xml.changelog);

        if (htmlChangelog.length() == 0) {
            return;
        }

        WebView webView = new WebView(mContext);
        webView.loadDataWithBaseURL(null, htmlChangelog, "text/html", "utf-8", null);

        DynamicDialogFragment dialogFragment = DynamicDialogFragment.Factory.getInstance(mContext);
        dialogFragment.setTitle(title);
        dialogFragment.setView(webView);
        dialogFragment.show(((FragmentActivity) mContext).getSupportFragmentManager(), "changelog");
    }
}




Java Source Code List

de.hdodenhof.holoreader.Config.java
de.hdodenhof.holoreader.activities.DisplayArticleActivity.java
de.hdodenhof.holoreader.activities.DisplayFeedActivity.java
de.hdodenhof.holoreader.activities.EditFeedsActivity.java
de.hdodenhof.holoreader.activities.HoloReaderActivity.java
de.hdodenhof.holoreader.activities.HomeActivity.java
de.hdodenhof.holoreader.fragments.ArticleFragment.java
de.hdodenhof.holoreader.fragments.ArticleListFragment.java
de.hdodenhof.holoreader.fragments.CustomListFragment.java
de.hdodenhof.holoreader.fragments.DynamicDialogFragment.java
de.hdodenhof.holoreader.fragments.EditFeedsFragment.java
de.hdodenhof.holoreader.fragments.FeedListFragment.java
de.hdodenhof.holoreader.gcm.GCMIntentService.java
de.hdodenhof.holoreader.gcm.GCMReceiver.java
de.hdodenhof.holoreader.gcm.GCMServerUtilities.java
de.hdodenhof.holoreader.gcm.VOFeed.java
de.hdodenhof.holoreader.listadapters.EditFeedAdapter.java
de.hdodenhof.holoreader.listadapters.RSSAdapter.java
de.hdodenhof.holoreader.listadapters.RSSArticleAdapter.java
de.hdodenhof.holoreader.listadapters.RSSFeedAdapter.java
de.hdodenhof.holoreader.misc.ArticleViewPager.java
de.hdodenhof.holoreader.misc.ChangelogDialog.java
de.hdodenhof.holoreader.misc.CheckableLinearLayout.java
de.hdodenhof.holoreader.misc.CustomScrollView.java
de.hdodenhof.holoreader.misc.DiskLruImageCache.java
de.hdodenhof.holoreader.misc.FragmentCallback.java
de.hdodenhof.holoreader.misc.Helpers.java
de.hdodenhof.holoreader.misc.MarkReadRunnable.java
de.hdodenhof.holoreader.misc.OnArticleChangedListener.java
de.hdodenhof.holoreader.provider.RSSContentProvider.java
de.hdodenhof.holoreader.provider.SQLiteHelper.java
de.hdodenhof.holoreader.services.RefreshFeedListener.java
de.hdodenhof.holoreader.services.RefreshFeedService.java
de.hdodenhof.holoreader.tasks.AddFeedTask.java