import android.os.Build;
import android.os.Bundle;
import android.support.v4.app.Fragment;
+import android.text.SpannableStringBuilder;
+import android.text.Spanned;
+import android.text.style.ForegroundColorSpan;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View tabLayout;
- // Load the about tab layout. Tab numbers start at 0.
- if (tabNumber == 0) {
+ // Load the tabs. Tab numbers start at 0.
+ if (tabNumber == 0) { // Load the about tab.
// Setting false at the end of inflater.inflate does not attach the inflated layout as a child of container.
// The fragment will take care of attaching the root automatically.
tabLayout = inflater.inflate(R.layout.about_tab_version, container, false);
- // Version.
- TextView versionNumberText = (TextView) tabLayout.findViewById(R.id.about_version_number_text);
+ // Get handles for the `TextViews`.
+ TextView versionNumberTextView = (TextView) tabLayout.findViewById(R.id.about_version_number);
+ TextView versionBrandTextView = (TextView) tabLayout.findViewById(R.id.about_version_brand);
+ TextView versionManufacturerTextView = (TextView) tabLayout.findViewById(R.id.about_version_manufacturer);
+ TextView versionModelTextView = (TextView) tabLayout.findViewById(R.id.about_version_model);
+ TextView versionDeviceTextView = (TextView) tabLayout.findViewById(R.id.about_version_device);
+ TextView versionBootloaderTextView = (TextView) tabLayout.findViewById(R.id.about_version_bootloader);
+ TextView versionRadioTextView = (TextView) tabLayout.findViewById(R.id.about_version_radio);
+ TextView versionAndroidTextView = (TextView) tabLayout.findViewById(R.id.about_version_android);
+ TextView versionBuildTextView = (TextView) tabLayout.findViewById(R.id.about_version_build);
+ TextView versionSecurityPatchTextView = (TextView) tabLayout.findViewById(R.id.about_version_securitypatch);
+ TextView versionWebKitTextView = (TextView) tabLayout.findViewById(R.id.about_version_webkit);
+ TextView versionChromeText = (TextView) tabLayout.findViewById(R.id.about_version_chrome);
+
+ // Setup the labels.
String version = getString(R.string.version) + " " + BuildConfig.VERSION_NAME + " (" + getString(R.string.version_code) + " " + Integer.toString(BuildConfig.VERSION_CODE) + ")";
- versionNumberText.setText(version);
-
- // Brand.
- TextView versionBrandText = (TextView) tabLayout.findViewById(R.id.about_version_brand_text);
- versionBrandText.setText(Build.BRAND);
-
- // Manufacturer.
- TextView versionManufacturerText = (TextView) tabLayout.findViewById(R.id.about_version_manufacturer_text);
- versionManufacturerText.setText(Build.MANUFACTURER);
-
- // Model.
- TextView versionModelText = (TextView) tabLayout.findViewById(R.id.about_version_model_text);
- versionModelText.setText(Build.MODEL);
-
- // Device.
- TextView versionDeviceText = (TextView) tabLayout.findViewById(R.id.about_version_device_text);
- versionDeviceText.setText(Build.DEVICE);
-
- // Bootloader.
- TextView versionBootloaderText = (TextView) tabLayout.findViewById(R.id.about_version_bootloader_text);
- versionBootloaderText.setText(Build.BOOTLOADER);
-
- // Radio.
- TextView versionRadioText = (TextView) tabLayout.findViewById(R.id.about_version_radio_text);
- // Hide versionRadioTextView if there is no radio.
- if (Build.getRadioVersion().equals("")) {
- TextView versionRadioTitle = (TextView) tabLayout.findViewById(R.id.about_version_radio_title);
- versionRadioTitle.setVisibility(View.GONE);
- versionRadioText.setVisibility(View.GONE);
- } else { // Else, set the text.
- versionRadioText.setText(Build.getRadioVersion());
- }
+ String brandLabel = getString(R.string.brand) + " ";
+ String manufacturerLabel = getString(R.string.manufacturer) + " ";
+ String modelLabel = getString(R.string.model) + " ";
+ String deviceLabel = getString(R.string.device) + " ";
+ String bootloaderLabel = getString(R.string.bootloader) + " ";
+ String androidLabel = getString(R.string.android) + " ";
+ String buildLabel = getString(R.string.build) + " ";
+ String webKitLabel = getString(R.string.webkit) + " ";
+ String chromeLabel = getString(R.string.chrome) + " ";
+
+ // `webViewLayout` is only used to get the default user agent from `about_tab_webview`. It is not used to render content on the screen.
+ View webViewLayout = inflater.inflate(R.layout.about_tab_webview, container, false);
+ WebView tabLayoutWebView = (WebView) webViewLayout.findViewById(R.id.about_tab_webview);
+ String userAgentString = tabLayoutWebView.getSettings().getUserAgentString();
- // Android.
- TextView versionAndroidText = (TextView) tabLayout.findViewById(R.id.about_version_android_text);
+ // Get the device's information and store it in strings.
+ String brand = Build.BRAND;
+ String manufacturer = Build.MANUFACTURER;
+ String model = Build.MODEL;
+ String device = Build.DEVICE;
+ String bootloader = Build.BOOTLOADER;
+ String radio = Build.getRadioVersion();
String android = Build.VERSION.RELEASE + " (" + getString(R.string.api) + " " + Integer.toString(Build.VERSION.SDK_INT) + ")";
- versionAndroidText.setText(android);
-
- // Build.
- TextView versionBuildText = (TextView) tabLayout.findViewById(R.id.about_version_build_text);
- versionBuildText.setText(Build.DISPLAY);
+ String build = Build.DISPLAY;
+ // Select the substring that begins after "Safari/" and goes to the end of the string.
+ String webKit = userAgentString.substring(userAgentString.indexOf("Safari/") + 7);
+ // Select the substring that begins after "Chrome/" and goes until the next " ".
+ String chrome = userAgentString.substring(userAgentString.indexOf("Chrome/") + 7, userAgentString.indexOf(" ", userAgentString.indexOf("Chrome/")));
+
+ // Create a `SpannableStringBuilder` for each `TextView` that needs multiple colors of text.
+ SpannableStringBuilder brandStringBuilder = new SpannableStringBuilder(brandLabel + brand);
+ SpannableStringBuilder manufacturerStringBuilder = new SpannableStringBuilder(manufacturerLabel + manufacturer);
+ SpannableStringBuilder modelStringBuilder = new SpannableStringBuilder(modelLabel + model);
+ SpannableStringBuilder deviceStringBuilder = new SpannableStringBuilder(deviceLabel + device);
+ SpannableStringBuilder bootloaderStringBuilder = new SpannableStringBuilder(bootloaderLabel + bootloader);
+ SpannableStringBuilder androidStringBuilder = new SpannableStringBuilder(androidLabel + android);
+ SpannableStringBuilder buildStringBuilder = new SpannableStringBuilder(buildLabel + build);
+ SpannableStringBuilder webKitStringBuilder = new SpannableStringBuilder(webKitLabel + webKit);
+ SpannableStringBuilder chromeStringBuilder = new SpannableStringBuilder(chromeLabel + chrome);
+
+ // Create a blue `ForegroundColorSpan`. We have to use the deprecated `getColor` until API >= 23.
+ ForegroundColorSpan blueColorSpan = new ForegroundColorSpan(getResources().getColor(R.color.blue));
+
+ // Setup the spans to display the device information in blue. `SPAN_INCLUSIVE_INCLUSIVE` allows the span to grow in either direction.
+ brandStringBuilder.setSpan(blueColorSpan, brandLabel.length(), brandStringBuilder.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE);
+ manufacturerStringBuilder.setSpan(blueColorSpan, manufacturerLabel.length(), manufacturerStringBuilder.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE);
+ modelStringBuilder.setSpan(blueColorSpan, modelLabel.length(), modelStringBuilder.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE);
+ deviceStringBuilder.setSpan(blueColorSpan, deviceLabel.length(), deviceStringBuilder.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE);
+ bootloaderStringBuilder.setSpan(blueColorSpan, bootloaderLabel.length(), bootloaderStringBuilder.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE);
+ androidStringBuilder.setSpan(blueColorSpan, androidLabel.length(), androidStringBuilder.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE);
+ buildStringBuilder.setSpan(blueColorSpan, buildLabel.length(), buildStringBuilder.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE);
+ webKitStringBuilder.setSpan(blueColorSpan, webKitLabel.length(), webKitStringBuilder.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE);
+ chromeStringBuilder.setSpan(blueColorSpan, chromeLabel.length(), chromeStringBuilder.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE);
+
+ // Display the strings.
+ versionNumberTextView.setText(version);
+ versionBrandTextView.setText(buildStringBuilder);
+ versionManufacturerTextView.setText(manufacturerStringBuilder);
+ versionModelTextView.setText(modelStringBuilder);
+ versionDeviceTextView.setText(deviceStringBuilder);
+ versionBootloaderTextView.setText(bootloaderStringBuilder);
+ versionAndroidTextView.setText(androidStringBuilder);
+ versionBuildTextView.setText(buildStringBuilder);
+ versionWebKitTextView.setText(webKitStringBuilder);
+ versionChromeText.setText(chromeStringBuilder);
- // Security Patch.
- TextView versionSecurityPatchText = (TextView) tabLayout.findViewById(R.id.about_version_securitypatch_text);
// Build.VERSION.SECURITY_PATCH is only available for SDK_INT >= 23.
if (Build.VERSION.SDK_INT >= 23) {
- versionSecurityPatchText.setText(Build.VERSION.SECURITY_PATCH);
- } else { // Hide versionSecurityPatchTextView.
- TextView versionSecurityPatchTitle = (TextView) tabLayout.findViewById(R.id.about_version_securitypatch_title);
- versionSecurityPatchTitle.setVisibility(View.GONE);
- versionSecurityPatchText.setVisibility(View.GONE);
+ String securityPatchLabel = getString(R.string.security_patch) + " ";
+ String securityPatch = Build.VERSION.SECURITY_PATCH;
+ SpannableStringBuilder securityPatchStringBuilder = new SpannableStringBuilder(securityPatchLabel + securityPatch);
+ securityPatchStringBuilder.setSpan(blueColorSpan, securityPatchLabel.length(), securityPatchStringBuilder.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE);
+ versionSecurityPatchTextView.setText(securityPatchStringBuilder);
+ } else { // Hide `versionSecurityPatchTextView`.
+ versionSecurityPatchTextView.setVisibility(View.GONE);
}
- // webViewLayout is only used to get the default user agent from about_tab_webview. It is not used to render content on the screen.
- View webViewLayout = inflater.inflate(R.layout.about_tab_webview, container, false);
- WebView tabLayoutWebView = (WebView) webViewLayout.findViewById(R.id.about_tab_webview);
- String userAgentString = tabLayoutWebView.getSettings().getUserAgentString();
-
- // WebKit.
- TextView versionWebKitText = (TextView) tabLayout.findViewById(R.id.about_version_webkit_text);
- // Select the substring that begins after "Safari/" and goes to the end of the string.
- String webkitVersion = userAgentString.substring(userAgentString.indexOf("Safari/") + 7);
- versionWebKitText.setText(webkitVersion);
-
- // Chrome.
- TextView versionChromeText = (TextView) tabLayout.findViewById(R.id.about_version_chrome_text);
- // Select the substring that begins after "Chrome/" and goes until the next " ".
- String chromeVersion = userAgentString.substring(userAgentString.indexOf("Chrome/") + 7, userAgentString.indexOf(" ", userAgentString.indexOf("Chrome/")));
- versionChromeText.setText(chromeVersion);
+ // Only populate `versionRadioTextView` if there is a radio in the device.
+ if (!radio.equals("")) {
+ String radioLabel = getString(R.string.radio) + " ";
+ SpannableStringBuilder radioStringBuilder = new SpannableStringBuilder(radioLabel + radio);
+ radioStringBuilder.setSpan(blueColorSpan, radioLabel.length(), radioStringBuilder.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE);
+ versionRadioTextView.setText(radioStringBuilder);
+ } else { // Hide `versionRadioTextView`.
+ versionRadioTextView.setVisibility(View.GONE);
+ }
} else { // load a WebView for all the other tabs. Tab numbers start at 0.
// Setting false at the end of inflater.inflate does not attach the inflated layout as a child of container.
// The fragment will take care of attaching the root automatically.
String startDateLabel = getString(R.string.start_date) + " ";
String endDateLabel = getString(R.string.end_date) + " ";
- // Create a `SpannableStringBuilder` for each item.
+ // Create a `SpannableStringBuilder` for each `TextView` that needs multiple colors of text.
SpannableStringBuilder urlStringBuilder = new SpannableStringBuilder(urlLabel + urlWithError);
SpannableStringBuilder issuedToCNameStringBuilder = new SpannableStringBuilder(cNameLabel + issuedToCName);
SpannableStringBuilder issuedToONameStringBuilder = new SpannableStringBuilder(oNameLabel + issuedToOName);
// Create a blue `ForegroundColorSpan`. We have to use the deprecated `getColor` until API >= 23.
ForegroundColorSpan blueColorSpan = new ForegroundColorSpan(getResources().getColor(R.color.blue));
- // Setup the spans to display the certificate information in blue.
- // `SPAN_INCLUSIVE_INCLUSIVE` allows the span to grow in either direction.
+ // Setup the spans to display the certificate information in blue. `SPAN_INCLUSIVE_INCLUSIVE` allows the span to grow in either direction.
urlStringBuilder.setSpan(blueColorSpan, urlLabel.length(), urlStringBuilder.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE);
issuedToCNameStringBuilder.setSpan(blueColorSpan, cNameLabel.length(), issuedToCNameStringBuilder.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE);
issuedToONameStringBuilder.setSpan(blueColorSpan, oNameLabel.length(), issuedToONameStringBuilder.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE);
Date startDate = sslCertificate.getValidNotBeforeDate();
Date endDate = sslCertificate.getValidNotAfterDate();
- // Create a `SpannableStringBuilder` for each item.
+ // Create a `SpannableStringBuilder` for each `TextView` that needs multiple colors of text.
SpannableStringBuilder issuedToCNameStringBuilder = new SpannableStringBuilder(cNameLabel + issuedToCNameString);
SpannableStringBuilder issuedToONameStringBuilder = new SpannableStringBuilder(oNameLabel + issuedToONameString);
SpannableStringBuilder issuedToUNameStringBuilder = new SpannableStringBuilder(uNameLabel + issuedToUNameString);
// Create a blue `ForegroundColorSpan`. We have to use the deprecated `getColor` until API >= 23.
ForegroundColorSpan blueColorSpan = new ForegroundColorSpan(getResources().getColor(R.color.blue));
- // Setup the spans to display the certificate information in blue.
- // `SPAN_INCLUSIVE_INCLUSIVE` allows the span to grow in either direction.
+ // Setup the spans to display the certificate information in blue. `SPAN_INCLUSIVE_INCLUSIVE` allows the span to grow in either direction.
issuedToCNameStringBuilder.setSpan(blueColorSpan, cNameLabel.length(), issuedToCNameStringBuilder.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE);
issuedToONameStringBuilder.setSpan(blueColorSpan, oNameLabel.length(), issuedToONameStringBuilder.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE);
issuedToUNameStringBuilder.setSpan(blueColorSpan, uNameLabel.length(), issuedToUNameStringBuilder.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE);
You should have received a copy of the GNU General Public License
along with Privacy Browser. If not, see <http://www.gnu.org/licenses/>. -->
-<!-- The ScrollView allows the LinearLayout to scroll if it exceeds the height of the page. -->
+<!-- The `ScrollView` allows the `LinearLayout` to scroll if it exceeds the height of the page. -->
<ScrollView
- android:id="@+id/about_version_scrollview"
xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
android:layout_height="wrap_content"
android:layout_width="match_parent" >
<LinearLayout
- android:id="@+id/about_version_linearlayout"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:orientation="vertical"
android:padding="16dp" >
- <!-- The RelativeLayout contains the header. -->
+ <!-- The `RelativeLayout` contains the header. -->
<RelativeLayout
- android:id="@+id/about_version_relativelayout"
android:layout_width="match_parent"
- android:layout_height="wrap_content"
- xmlns:tools="http://schemas.android.com/tools" >
+ android:layout_height="wrap_content" >
- <!--tools:ignore="ContentDescription" suppresses the lint warning about supplying a content description for the ImageView,
- which isn't needed in this case because the ImageView is only decorative. -->
+ <!--`tools:ignore="ContentDescription"` suppresses the lint warning about supplying a content description for the `ImageView`,
+ which isn't needed in this case because the `ImageView` is only decorative. -->
<ImageView
android:id="@+id/about_version_icon"
android:layout_width="wrap_content"
android:paddingTop="10dp"
tools:ignore="ContentDescription" />
- <!-- We need to include android:layout_toRightOf until API>=17. -->
<TextView
android:id="@+id/about_version_privacy_browser_textview"
android:layout_width="wrap_content"
android:textStyle="bold"
android:textSize="22sp"
android:textColor="@color/black"
- android:layout_toEndOf="@id/about_version_icon"
- android:layout_toRightOf="@id/about_version_icon" />
+ android:layout_toEndOf="@id/about_version_icon" />
- <!-- We need to include android:layout_toRightOf until API>=17. -->
<TextView
- android:id="@+id/about_version_number_text"
+ android:id="@+id/about_version_number"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/blue"
android:layout_below="@id/about_version_privacy_browser_textview"
- android:layout_toEndOf="@id/about_version_icon"
- android:layout_toRightOf="@id/about_version_icon" />
+ android:layout_toEndOf="@id/about_version_icon" />
</RelativeLayout>
- <!-- The purpose of this LinearLayout is to provide padding on the start of the TextViews to make them line up with about_version_icon.
- We have to use android:paddingLeft in addition to android:paddingStart until API>=17.
- Although we don't need them, we have to include android:paddingEnd and android:paddingRight to make lint happy. -->
+ <!-- The purpose of this `LinearLayout` is to provide padding on the start of the `TextViews` to make them line up with `about_version_icon`.
+ Although we don't need it, we have to include `android:paddingEnd` to make lint happy. -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingTop="16dp"
android:paddingStart="4dp"
- android:paddingEnd="0dp"
- android:paddingLeft="4dp"
- android:paddingRight="4dp" >
+ android:paddingEnd="0dp" >
<!-- Hardware. -->
<TextView
- android:id="@+id/about_version_hardware"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hardware"
android:textSize="18sp"
android:textColor="@color/dark_blue" />
- <!-- Brand. -->
- <LinearLayout
+ <TextView
+ android:id="@+id/about_version_brand"
android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:orientation="horizontal" >
+ android:layout_height="wrap_content" />
- <TextView
- android:id="@+id/about_version_brand_title"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/brand" />
-
- <TextView
- android:id="@+id/about_version_brand_text"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:textColor="@color/blue" />
- </LinearLayout>
-
- <!-- Manufacturer. -->
- <LinearLayout
+ <TextView
+ android:id="@+id/about_version_manufacturer"
android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:orientation="horizontal" >
-
- <TextView
- android:id="@+id/about_version_manufacturer_title"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/manufacturer" />
-
- <TextView
- android:id="@+id/about_version_manufacturer_text"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:textColor="@color/blue" />
- </LinearLayout>
+ android:layout_height="wrap_content" />
- <!-- Model. -->
- <LinearLayout
+ <TextView
+ android:id="@+id/about_version_model"
android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:orientation="horizontal" >
-
- <TextView
- android:id="@+id/about_version_model_title"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/model" />
+ android:layout_height="wrap_content" />
- <TextView
- android:id="@+id/about_version_model_text"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:textColor="@color/blue" />
- </LinearLayout>
-
- <!-- Device. -->
- <LinearLayout
+ <TextView
+ android:id="@+id/about_version_device"
android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:orientation="horizontal" >
+ android:layout_height="wrap_content"/>
- <TextView
- android:id="@+id/about_version_device_title"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/device" />
-
- <TextView
- android:id="@+id/about_version_device_text"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:textColor="@color/blue" />
- </LinearLayout>
-
- <!-- Bootloader. -->
- <LinearLayout
+ <TextView
+ android:id="@+id/about_version_bootloader"
android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:orientation="horizontal" >
-
- <TextView
- android:id="@+id/about_version_bootloader_title"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/bootloader" />
-
- <TextView
- android:id="@+id/about_version_bootloader_text"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:textColor="@color/blue" />
- </LinearLayout>
+ android:layout_height="wrap_content" />
- <!-- Radio. -->
- <LinearLayout
+ <TextView
+ android:id="@+id/about_version_radio"
android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:orientation="horizontal" >
-
- <TextView
- android:id="@+id/about_version_radio_title"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/radio" />
-
- <TextView
- android:id="@+id/about_version_radio_text"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:textColor="@color/blue" />
- </LinearLayout>
+ android:layout_height="wrap_content"/>
<!-- Software. -->
<TextView
- android:id="@+id/about_version_software"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/software"
android:textColor="@color/dark_blue"
android:paddingTop="12dp" />
- <!-- Android. -->
- <LinearLayout
+ <TextView
+ android:id="@+id/about_version_android"
android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:orientation="horizontal" >
-
- <TextView
- android:id="@+id/about_version_android_title"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/android" />
-
- <TextView
- android:id="@+id/about_version_android_text"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:textColor="@color/blue" />
- </LinearLayout>
+ android:layout_height="wrap_content"/>
- <!-- Build. -->
- <LinearLayout
+ <TextView
+ android:id="@+id/about_version_build"
android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:orientation="horizontal" >
-
- <TextView
- android:id="@+id/about_version_build_title"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/build" />
+ android:layout_height="wrap_content"/>
- <TextView
- android:id="@+id/about_version_build_text"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:textColor="@color/blue" />
- </LinearLayout>
-
- <!-- Security Patch. -->
- <LinearLayout
+ <TextView
+ android:id="@+id/about_version_securitypatch"
android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:orientation="horizontal" >
-
- <TextView
- android:id="@+id/about_version_securitypatch_title"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/security_patch" />
-
- <TextView
- android:id="@+id/about_version_securitypatch_text"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:textColor="@color/blue" />
- </LinearLayout>
+ android:layout_height="wrap_content" />
- <!-- WebKit. -->
- <LinearLayout
+ <TextView
+ android:id="@+id/about_version_webkit"
android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:orientation="horizontal" >
-
- <TextView
- android:id="@+id/about_version_webkit_title"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/webkit" />
+ android:layout_height="wrap_content"/>
- <TextView
- android:id="@+id/about_version_webkit_text"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:textColor="@color/blue" />
- </LinearLayout>
-
- <!-- Chrome. -->
- <LinearLayout
+ <TextView
+ android:id="@+id/about_version_chrome"
android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:orientation="horizontal" >
-
- <TextView
- android:id="@+id/about_version_chrome_title"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/chrome" />
-
- <TextView
- android:id="@+id/about_version_chrome_text"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:textColor="@color/blue" />
- </LinearLayout>
+ android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>
</ScrollView>
\ No newline at end of file
<string name="version">Version</string>
<string name="version_code">Versions-Code</string>
<string name="hardware">Hardware</string>
- <!-- Blank spaces at the end of strings are stripped out, so you have to replace them with the Unicode literal \u00A0. -->
- <string name="brand">Marke:\u00A0</string>
- <string name="manufacturer">Hersteller:\u00A0</string>
- <string name="model">Modell:\u00A0</string>
- <string name="device">Gerät:\u00A0</string>
- <string name="bootloader">Bootloader:\u00A0</string>
- <string name="radio">Radio:\u00A0</string>
+ <string name="brand">Marke:</string>
+ <string name="manufacturer">Hersteller:</string>
+ <string name="model">Modell:</string>
+ <string name="device">Gerät:</string>
+ <string name="bootloader">Bootloader:</string>
+ <string name="radio">Radio:</string>
<string name="software">Software</string>
- <string name="android">Android:\u00A0</string>
+ <string name="android">Android:</string>
<string name="api">API</string>
- <string name="build">Build:\u00A0</string>
- <string name="security_patch">Sicherheits-Patch:\u00A0</string>
- <string name="webkit">WebKit:\u00A0</string>
- <string name="chrome">Chrome:\u00A0</string>
+ <string name="build">Build:</string>
+ <string name="security_patch">Sicherheits-Patch:</string>
+ <string name="webkit">WebKit:</string>
+ <string name="chrome">Chrome:</string>
<string name="permissions">Berechtigungen</string>
<string name="privacy_policy">Datenschutzrichtlinie</string>
<string name="changelog">Changelog</string>
<!-- View SSL Certificate. -->
<string name="view_ssl_certificate">View SSL Certificate</string>
<string name="unencrypted_website">Unencrypted Website</string>
- <string name="no_ssl_certificate">Communicated with this website is not encrypted by an SSL certificate.</string>
+ <string name="no_ssl_certificate">Communication with this website is not encrypted by an SSL certificate.</string>
<string name="ssl_certificate">SSL Certificate</string>
<string name="close">Close</string>
<string name="issued_to">Issued To</string>
<item>Edge 13 on Windows 10</item>
<item>Custom</item>
</string-array>
- <string-array name="user_agent_entry_values" translatable="false"> <!-- None of the items in this string-array should be translated. -->
+ <string-array name="user_agent_entry_values" translatable="false"> <!-- None of the items in this `string-array` should be translated. -->
<item>Default user agent</item> <!-- This item must not be translated into other languages because it is referenced in code. It is never displayed on the screen. -->
<item>PrivacyBrowser/1.0</item>
<item>Mozilla/5.0 (Android 6.0.1; Mobile; rv:46.0) Gecko/46.0 Firefox/46.0</item>
<item>Yahoo</item>
<item>Custom</item>
</string-array>
- <string-array name="javascript_disabled_search_entry_values" translatable="false"> <!-- None of the items in this string-array should be translated. -->
+ <string-array name="javascript_disabled_search_entry_values" translatable="false"> <!-- None of the items in this `string-array` should be translated. -->
<item>https://duckduckgo.com/html/?q=</item>
<item>https://www.google.com/search?q=</item>
<item>https://www.bing.com/search?q=</item>
<item>Yahoo</item>
<item>Custom</item>
</string-array>
- <string-array name="javascript_enabled_search_entry_values" translatable="false"> <!-- None of the items in this string-array should be translated. -->
+ <string-array name="javascript_enabled_search_entry_values" translatable="false"> <!-- None of the items in this `string-array` should be translated. -->
<item>https://duckduckgo.com/?q=</item>
<item>https://www.google.com/search?q=</item>
<item>https://www.bing.com/search?q=</item>
<item>175%</item>
<item>200%</item>
</string-array>
- <string-array name="default_font_size_entry_values" translatable="false"> <!-- None of the items in this string-array should be translated. -->
+ <string-array name="default_font_size_entry_values" translatable="false"> <!-- None of the items in this `string-array` should be translated. -->
<item>50</item>
<item>75</item>
<item>100</item>
<string name="version">Version</string>
<string name="version_code">version code</string>
<string name="hardware">Hardware</string>
- <!-- Blank spaces at the end of strings are stripped out, so you have to replace them with the Unicode literal \u00A0. -->
- <string name="brand">Brand:\u00A0</string>
- <string name="manufacturer">Manufacturer:\u00A0</string>
- <string name="model">Model:\u00A0</string>
- <string name="device">Device:\u00A0</string>
- <string name="bootloader">Bootloader:\u00A0</string>
- <string name="radio">Radio:\u00A0</string>
+ <string name="brand">Brand:</string>
+ <string name="manufacturer">Manufacturer:</string>
+ <string name="model">Model:</string>
+ <string name="device">Device:</string>
+ <string name="bootloader">Bootloader:</string>
+ <string name="radio">Radio:</string>
<string name="software">Software</string>
- <string name="android">Android:\u00A0</string>
+ <string name="android">Android:</string>
<string name="api">API</string>
- <string name="build">Build:\u00A0</string>
- <string name="security_patch">Security Patch:\u00A0</string>
- <string name="webkit">WebKit:\u00A0</string>
- <string name="chrome">Chrome:\u00A0</string>
+ <string name="build">Build:</string>
+ <string name="security_patch">Security Patch:</string>
+ <string name="webkit">WebKit:</string>
+ <string name="chrome">Chrome:</string>
<string name="permissions">Permissions</string>
<string name="privacy_policy">Privacy Policy</string>
<string name="changelog">Changelog</string>