diff options
Diffstat (limited to 'main/src/main/java/de/blinkt/openvpn/fragments/FaqFragment.java')
-rw-r--r-- | main/src/main/java/de/blinkt/openvpn/fragments/FaqFragment.java | 195 |
1 files changed, 157 insertions, 38 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 5086530b..30be7b2a 100644 --- a/main/src/main/java/de/blinkt/openvpn/fragments/FaqFragment.java +++ b/main/src/main/java/de/blinkt/openvpn/fragments/FaqFragment.java @@ -6,6 +6,7 @@ package de.blinkt.openvpn.fragments; import android.app.Fragment; +import android.content.Context; import android.os.Build; import android.os.Bundle; import android.support.v7.widget.RecyclerView; @@ -15,43 +16,162 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import java.util.Vector; + 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.faq_androids_clients_title, R.string.faq_android_clients}, - {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} - }; +public class FaqFragment extends Fragment { + static class FAQEntry { + + public FAQEntry(int startVersion, int endVersion, int description) { + this (startVersion, endVersion, -1, description); + } + + public FAQEntry(int startVersion, int endVersion, int title, int description) { + this.startVersion = startVersion; + this.endVersion = endVersion; + this.description = description; + this.title = title; + } + + final int startVersion; + final int endVersion; + final int description; + final int title; + + public boolean runningVersion() { + if (Build.VERSION.SDK_INT >= startVersion) { + if (Build.VERSION.SDK_INT <= endVersion) + return true; + + if (endVersion == -1) + return true; + + String release = Build.VERSION.RELEASE; + boolean isAtLeast442 = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT && + !release.startsWith("4.4.3") && !release.startsWith("4.4.3") + && !release.startsWith("4.4.4") && !release.startsWith("4.4.5") && !release.startsWith("4.4.6"); + + boolean isAtLeast443 = isAtLeast442 && !release.startsWith("4.4.2"); + if (endVersion == -441 && !isAtLeast442) + return true; + + if (endVersion == -442 && !isAtLeast443) + return true; + + + } + return false; + } + + public String getVersionsString(Context c) { + if (startVersion == Build.VERSION_CODES.ICE_CREAM_SANDWICH) { + if (endVersion == -1) + return null; + else + return c.getString(R.string.version_upto, getAndroidVersionString(c, endVersion)); + } + + if (endVersion==-1) + return getAndroidVersionString(c, startVersion) + " and later"; + + + String startver = getAndroidVersionString(c, startVersion); + + if (endVersion == startVersion) + return startver; + + return String.format("%s - %s", startver, getAndroidVersionString(c, endVersion)); + } + + + private String getAndroidVersionString(Context c, int versionCode) { + switch (versionCode) { + case Build.VERSION_CODES.ICE_CREAM_SANDWICH: + return "4.0 (Ice Cream Sandwich)"; + case -441: + return "4.4.1 (KitKat)"; + case -442: + return "4.4.2 (KitKat)"; + case Build.VERSION_CODES.JELLY_BEAN_MR2: + return "4.3 (Jelly Bean MR2)"; + case Build.VERSION_CODES.KITKAT: + return "4.4 (KitKat)"; + case Build.VERSION_CODES.LOLLIPOP: + return "5.0 (Lollipop)"; + default: + return "API " + versionCode; + } + } + + + } + + private static FAQEntry[] faqitemsVersionSpecific = { + + new FAQEntry(Build.VERSION_CODES.ICE_CREAM_SANDWICH, -1, R.string.faq_howto_title, R.string.faq_howto), + + new FAQEntry(Build.VERSION_CODES.ICE_CREAM_SANDWICH, -1, R.string.faq_duplicate_notification_title, R.string.faq_duplicate_notification), + + new FAQEntry(Build.VERSION_CODES.ICE_CREAM_SANDWICH, -1, R.string.faq_androids_clients_title, R.string.faq_android_clients), + + + new FAQEntry(Build.VERSION_CODES.LOLLIPOP, -1, R.string.ab_lollipop_reinstall_title, R.string.ab_lollipop_reinstall), + + + new FAQEntry(Build.VERSION_CODES.ICE_CREAM_SANDWICH, Build.VERSION_CODES.JELLY_BEAN_MR2, R.string.vpn_tethering_title, R.string.faq_tethering), + new FAQEntry(Build.VERSION_CODES.ICE_CREAM_SANDWICH, Build.VERSION_CODES.JELLY_BEAN_MR2, R.string.broken_images, R.string.broken_images_faq), + + new FAQEntry(Build.VERSION_CODES.ICE_CREAM_SANDWICH, -1, R.string.battery_consumption_title, R.string.baterry_consumption), + + + new FAQEntry(Build.VERSION_CODES.ICE_CREAM_SANDWICH, Build.VERSION_CODES.KITKAT , R.string.faq_system_dialogs_title, R.string.faq_system_dialogs), + new FAQEntry(Build.VERSION_CODES.ICE_CREAM_SANDWICH, -1, R.string.tap_mode, R.string.faq_tap_mode), + + new FAQEntry(Build.VERSION_CODES.JELLY_BEAN_MR2, Build.VERSION_CODES.JELLY_BEAN_MR2, R.string.ab_secondary_users), + new FAQEntry(Build.VERSION_CODES.JELLY_BEAN_MR2, -1, R.string.faq_vpndialog43_title, R.string.faq_vpndialog43), + + new FAQEntry(Build.VERSION_CODES.ICE_CREAM_SANDWICH, -1, R.string.faq_security_title, R.string.faq_security), + + new FAQEntry(Build.VERSION_CODES.ICE_CREAM_SANDWICH, -1, R.string.faq_shortcut, R.string.faq_howto_shortcut), + new FAQEntry(Build.VERSION_CODES.ICE_CREAM_SANDWICH, -1, R.string.tap_mode, R.string.tap_faq2), + + new FAQEntry(Build.VERSION_CODES.KITKAT, -1, R.string.vpn_tethering_title, R.string.ab_tethering_44), + new FAQEntry(Build.VERSION_CODES.KITKAT, -441, R.string.ab_kitkat_mss), + new FAQEntry(Build.VERSION_CODES.ICE_CREAM_SANDWICH, -1, R.string.copying_log_entries, R.string.faq_copying), + + new FAQEntry(Build.VERSION_CODES.KITKAT, -442, R.string.ab_persist_tun), + new FAQEntry(Build.VERSION_CODES.KITKAT, -1, R.string.faq_routing_title, R.string.faq_routing), + new FAQEntry(Build.VERSION_CODES.KITKAT, Build.VERSION_CODES.KITKAT, R.string.ab_kitkat_reconnect), + new FAQEntry(Build.VERSION_CODES.KITKAT, Build.VERSION_CODES.KITKAT, R.string.ab_vpn_reachability_44), + + + new FAQEntry(Build.VERSION_CODES.ICE_CREAM_SANDWICH, -1, R.string.ab_only_cidr_title, R.string.ab_only_cidr), + new FAQEntry(Build.VERSION_CODES.ICE_CREAM_SANDWICH, -1, R.string.ab_proxy_title, R.string.ab_proxy), + + new FAQEntry(Build.VERSION_CODES.LOLLIPOP, -1, R.string.ab_not_route_to_vpn), + new FAQEntry(Build.VERSION_CODES.ICE_CREAM_SANDWICH, -1, R.string.tap_mode, R.string.tap_faq3), + + }; + + + private RecyclerView mRecyclerView; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { - View v= inflater.inflate(R.layout.faq, container, false); + Bundle savedInstanceState) { + View v = inflater.inflate(R.layout.faq, container, false); DisplayMetrics displaymetrics = new DisplayMetrics(); getActivity().getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); - int dpWidth = (int) (displaymetrics.widthPixels /getResources().getDisplayMetrics().density); + int dpWidth = (int) (displaymetrics.widthPixels / getResources().getDisplayMetrics().density); //better way but does not work on 5.0 //int dpWidth = (int) (container.getWidth()/getResources().getDisplayMetrics().density); - int columns = dpWidth/360; + int columns = dpWidth / 360; columns = Math.max(1, columns); @@ -66,25 +186,24 @@ private static int[] faqitems[] = mRecyclerView.setAdapter(new FaqViewAdapter(getActivity(), getFAQEntries())); - return v; + return v; } - /* 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; + private FAQEntry[] getFAQEntries() { + Vector<FAQEntry> faqItems = new Vector<>(); - } else { - return faqitems; + for (FAQEntry fe : faqitemsVersionSpecific) + { + if (fe.runningVersion()) + faqItems.add(fe); } + for (FAQEntry fe : faqitemsVersionSpecific) + { + if (!fe.runningVersion()) + faqItems.add(fe); + } + + return faqItems.toArray(new FAQEntry[faqItems.size()]); } } |