summaryrefslogtreecommitdiff
path: root/main/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'main/src/main/java')
-rw-r--r--main/src/main/java/de/blinkt/openvpn/fragments/FaqFragment.java75
-rw-r--r--main/src/main/java/de/blinkt/openvpn/fragments/FaqViewAdapter.java80
2 files changed, 134 insertions, 21 deletions
diff --git a/main/src/main/java/de/blinkt/openvpn/fragments/FaqFragment.java b/main/src/main/java/de/blinkt/openvpn/fragments/FaqFragment.java
index 907ae226..471d62c1 100644
--- a/main/src/main/java/de/blinkt/openvpn/fragments/FaqFragment.java
+++ b/main/src/main/java/de/blinkt/openvpn/fragments/FaqFragment.java
@@ -8,42 +8,75 @@ package de.blinkt.openvpn.fragments;
import android.app.Fragment;
import android.os.Build;
import android.os.Bundle;
-import android.text.Html;
-import android.text.method.LinkMovementMethod;
+import android.support.v7.widget.RecyclerView;
+import android.support.v7.widget.StaggeredGridLayoutManager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
-import android.widget.TextView;
+
import de.blinkt.openvpn.R;
public class FaqFragment extends Fragment {
+private static int[] faqitems[] =
+ {
+ {R.string.faq_howto_title, R.string.faq_howto},
+ {R.string.faq_vpndialog43_title, R.string.faq_vpndialog43},
+ {R.string.faq_system_dialogs_title, R.string.faq_system_dialogs},
+ {R.string.faq_duplicate_notification_title, R.string.faq_duplicate_notification},
+ {R.string.battery_consumption_title, R.string.baterry_consumption},
+ {R.string.tap_mode, R.string.faq_tap_mode},
+ {R.string.vpn_tethering_title, R.string.faq_tethering},
+ {R.string.faq_security_title, R.string.faq_security},
+ {R.string.broken_images, R.string.broken_images_faq},
+ {R.string.faq_shortcut, R.string.faq_howto_shortcut},
+ {R.string.tap_mode, R.string.tap_faq2},
+ {R.string.copying_log_entries, R.string.faq_copying},
+ {R.string.tap_mode, R.string.tap_faq3},
+ {R.string.faq_routing_title, R.string.faq_routing}
+ };
+ private RecyclerView mRecyclerView;
+
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v= inflater.inflate(R.layout.faq, container, false);
-
- insertHtmlEntry(v, R.id.broken_images_faq,R.string.broken_images_faq);
- insertHtmlEntry(v, R.id.faq_howto,R.string.faq_howto);
- insertHtmlEntry(v, R.id.baterry_consumption, R.string.baterry_consumption);
- insertHtmlEntry(v, R.id.faq_tethering, R.string.faq_tethering);
- insertHtmlEntry(v, R.id.faq_vpndialog43, R.string.faq_vpndialog43);
- insertHtmlEntry(v, R.id.faq_system_dialog_xposed, R.string.faq_system_dialog_xposed);
-
- /* I think the problem mentioned in there should not affect, 4.3+ */
- if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
- v.findViewById(R.id.broken_images_faq).setVisibility(View.GONE);
- v.findViewById(R.id.broken_images_faq_title).setVisibility(View.GONE);
- }
+
+ int dpwidth = (int) (container.getWidth()/getResources().getDisplayMetrics().density);
+ int columns = dpwidth/400;
+ columns = Math.max(1, columns);
+
+
+ mRecyclerView = (RecyclerView) v.findViewById(R.id.gridview);
+
+ // use this setting to improve performance if you know that changes
+ // in content do not change the layout size of the RecyclerView
+ mRecyclerView.setHasFixedSize(true);
+
+
+ mRecyclerView.setLayoutManager(new StaggeredGridLayoutManager(columns, StaggeredGridLayoutManager.VERTICAL));
+
+ mRecyclerView.setAdapter(new FaqViewAdapter(getActivity(), getFAQEntries()));
return v;
}
- private void insertHtmlEntry (View v, int viewId, int stringId) {
- TextView faqItem = (TextView) v.findViewById(viewId);
- faqItem.setText(Html.fromHtml(getActivity().getString(stringId)));
- faqItem.setMovementMethod(LinkMovementMethod.getInstance());
+ /* I think the problem mentioned in there should not affect, 4.3+ */
+ private int[][] getFAQEntries() {
+ if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
+ int[][] newFaqItems = new int[faqitems.length - 1][2];
+ int j=0;
+ for (int i = 0;i < faqitems.length;i++) {
+ if (faqitems[i][0] != R.string.broken_images) {
+ newFaqItems[j] = faqitems[i];
+ j++;
+ }
+ }
+ return newFaqItems;
- }
+ } else {
+ return faqitems;
+ }
+ }
}
diff --git a/main/src/main/java/de/blinkt/openvpn/fragments/FaqViewAdapter.java b/main/src/main/java/de/blinkt/openvpn/fragments/FaqViewAdapter.java
new file mode 100644
index 00000000..f667d798
--- /dev/null
+++ b/main/src/main/java/de/blinkt/openvpn/fragments/FaqViewAdapter.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright (c) 2012-2014 Arne Schwabe
+ * Distributed under the GNU GPL v2. For full terms see the file doc/LICENSE.txt
+ */
+
+package de.blinkt.openvpn.fragments;
+
+import android.content.Context;
+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;
+
+import static android.support.v7.widget.RecyclerView.ViewHolder;
+
+public class FaqViewAdapter extends RecyclerView.Adapter<FaqViewAdapter.FaqViewHolder> {
+ private final int[][] mFaqItems;
+ private final Spanned[] mHtmlEntries;
+
+ public FaqViewAdapter(Context context, int[][] faqItems) {
+ mFaqItems = faqItems;
+
+ mHtmlEntries = new Spanned[faqItems.length];
+ for (int i =0; i < faqItems.length; i++) {
+ mHtmlEntries[i] = Html.fromHtml(context.getString(faqItems[i][1]));
+
+ // Add hack R.string.faq_system_dialogs_title -> R.string.faq_system_dialog_xposed
+ if (faqItems[i][0] == R.string.faq_system_dialogs_title)
+ {
+ Spanned xposedtext = Html.fromHtml(context.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(mFaqItems[i][0]);
+ faqViewHolder.mBody.setText(mHtmlEntries[i]);
+ }
+
+ @Override
+ public int getItemCount() {
+ return mFaqItems.length;
+ }
+
+}