From 32b080261845c7508581f9c452d48ffd2401c450 Mon Sep 17 00:00:00 2001 From: Arne Schwabe Date: Fri, 2 Aug 2019 12:50:57 +0200 Subject: Add skeleton build variant --- .../blinkt/openvpn/fragments/FaqViewAdapter.java | 132 +++++++++++++++++++++ 1 file changed, 132 insertions(+) create mode 100644 main/src/ui/java/de/blinkt/openvpn/fragments/FaqViewAdapter.java (limited to 'main/src/ui/java/de/blinkt/openvpn/fragments/FaqViewAdapter.java') diff --git a/main/src/ui/java/de/blinkt/openvpn/fragments/FaqViewAdapter.java b/main/src/ui/java/de/blinkt/openvpn/fragments/FaqViewAdapter.java new file mode 100644 index 00000000..0be9f4a2 --- /dev/null +++ b/main/src/ui/java/de/blinkt/openvpn/fragments/FaqViewAdapter.java @@ -0,0 +1,132 @@ +/* + * Copyright (c) 2012-2016 Arne Schwabe + * Distributed under the GNU GPL v2 with additional terms. For full terms see the file doc/LICENSE.txt + */ + +package de.blinkt.openvpn.fragments; + +import android.content.Context; +import android.os.AsyncTask; +import android.support.v7.widget.CardView; +import android.support.v7.widget.RecyclerView; +import android.text.Html; +import android.text.Spanned; +import android.text.TextUtils; +import android.text.method.LinkMovementMethod; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import de.blinkt.openvpn.R; + +public class FaqViewAdapter extends RecyclerView.Adapter { + private final FaqFragment.FAQEntry[] mFaqItems; + private final Spanned[] mHtmlEntries; + private final Spanned[] mHtmlEntriesTitle; + private final Context mContext; + private boolean loaded =false; + + public FaqViewAdapter(Context context, FaqFragment.FAQEntry[] faqItems) { + mFaqItems = faqItems; + mContext = context; + + mHtmlEntries = new Spanned[faqItems.length]; + mHtmlEntriesTitle = new Spanned[faqItems.length]; + + new FetchStrings().execute(faqItems); + + } + + private class FetchStrings extends AsyncTask { + + @Override + protected void onPostExecute(Void aVoid) { + loaded=true; + notifyDataSetChanged(); + } + + @Override + protected Void doInBackground(FaqFragment.FAQEntry... params) { + fetchStrings(params); + return null; + } + } + + private void fetchStrings(FaqFragment.FAQEntry[] faqItems) { + for (int i =0; i < faqItems.length; i++) { + String versionText = mFaqItems[i].getVersionsString(mContext); + String title; + String textColor=""; + + if (mFaqItems[i].title==-1) + title =""; + else + title = mContext.getString(faqItems[i].title); + + + if (!mFaqItems[i].runningVersion()) + textColor= ""; + + if (versionText != null) { + + mHtmlEntriesTitle[i] = (Spanned) TextUtils.concat(Html.fromHtml(textColor + title), + Html.fromHtml(textColor + "
" + versionText + "")); + } else { + mHtmlEntriesTitle[i] = Html.fromHtml(title); + } + + String content = mContext.getString(faqItems[i].description); + mHtmlEntries[i] = Html.fromHtml(textColor + content); + + // Add hack R.string.faq_system_dialogs_title -> R.string.faq_system_dialog_xposed + if (faqItems[i].title == R.string.faq_system_dialogs_title) + { + Spanned xPosedtext = Html.fromHtml(textColor + mContext.getString(R.string.faq_system_dialog_xposed)); + mHtmlEntries[i] = (Spanned) TextUtils.concat(mHtmlEntries[i], xPosedtext); + } + } + } + + public static class FaqViewHolder extends RecyclerView.ViewHolder { + + private final CardView mView; + private final TextView mBody; + private final TextView mHead; + + public FaqViewHolder(View itemView) { + super(itemView); + + mView = (CardView) itemView; + mBody = (TextView)mView.findViewById(R.id.faq_body); + mHead = (TextView)mView.findViewById(R.id.faq_head); + mBody.setMovementMethod(LinkMovementMethod.getInstance()); + } + } + + @Override + public FaqViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { + View view = LayoutInflater.from(viewGroup.getContext()) + .inflate(R.layout.faqcard, viewGroup, false); + return new FaqViewHolder(view); + } + + @Override + public void onBindViewHolder(FaqViewHolder faqViewHolder, int i) { + + faqViewHolder.mHead.setText(mHtmlEntriesTitle[i]); + faqViewHolder.mBody.setText(mHtmlEntries[i]); + + + } + + @Override + public int getItemCount() { + if(loaded) + return mFaqItems.length; + else + return 0; + } + + +} -- cgit v1.2.3