feat: rebase app themes to material themes
This commit is contained in:
		
							parent
							
								
									5af693265f
								
							
						
					
					
						commit
						755588202f
					
				@ -28,7 +28,7 @@ android {
 | 
			
		||||
        versionName getVersionName()
 | 
			
		||||
 | 
			
		||||
        testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
 | 
			
		||||
        minSdkVersion 14
 | 
			
		||||
        minSdkVersion 22
 | 
			
		||||
        //noinspection ExpiredTargetSdkVersion
 | 
			
		||||
        targetSdkVersion 25
 | 
			
		||||
        /*
 | 
			
		||||
 | 
			
		||||
@ -1,13 +1,8 @@
 | 
			
		||||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<PreferenceScreen
 | 
			
		||||
        xmlns:android="http://schemas.android.com/apk/res/android">
 | 
			
		||||
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
 | 
			
		||||
 | 
			
		||||
    <PreferenceScreen android:title="@string/about_title">
 | 
			
		||||
        <intent
 | 
			
		||||
                android:action="android.intent.action.MAIN"
 | 
			
		||||
                android:targetPackage="@string/applicationId"
 | 
			
		||||
                android:targetClass="org.fdroid.fdroid.AboutActivity"/>
 | 
			
		||||
    </PreferenceScreen>
 | 
			
		||||
    <PreferenceScreen android:title="@string/about_title"
 | 
			
		||||
        android:key="pref_about" />
 | 
			
		||||
 | 
			
		||||
    <PreferenceCategory android:title="@string/preference_category__my_apps">
 | 
			
		||||
        <PreferenceScreen android:title="@string/preference_manage_installed_apps">
 | 
			
		||||
@ -47,7 +42,7 @@
 | 
			
		||||
                android:title="@string/over_data"
 | 
			
		||||
                android:defaultValue="@integer/defaultOverData"
 | 
			
		||||
                android:layout="@layout/preference_seekbar"/>
 | 
			
		||||
        <SwitchPreference
 | 
			
		||||
        <SwitchPreferenceCompat
 | 
			
		||||
                android:title="@string/update_auto_download"
 | 
			
		||||
                android:summary="@string/update_auto_download_summary"
 | 
			
		||||
                android:key="updateAutoDownload"/>
 | 
			
		||||
@ -56,7 +51,7 @@
 | 
			
		||||
                android:title="@string/update_interval"
 | 
			
		||||
                android:defaultValue="@integer/defaultUpdateInterval"
 | 
			
		||||
                android:layout="@layout/preference_seekbar"/>
 | 
			
		||||
        <SwitchPreference
 | 
			
		||||
        <SwitchPreferenceCompat
 | 
			
		||||
                android:title="@string/notify"
 | 
			
		||||
                android:defaultValue="true"
 | 
			
		||||
                android:key="updateNotify"/>
 | 
			
		||||
@ -77,26 +72,26 @@
 | 
			
		||||
 | 
			
		||||
    <PreferenceCategory android:title="@string/appcompatibility"
 | 
			
		||||
                                                      android:key="pref_category_appcompatibility">
 | 
			
		||||
        <SwitchPreference
 | 
			
		||||
        <SwitchPreferenceCompat
 | 
			
		||||
                android:title="@string/show_incompat_versions"
 | 
			
		||||
                android:defaultValue="false"
 | 
			
		||||
                android:key="incompatibleVersions"/>
 | 
			
		||||
        <SwitchPreference
 | 
			
		||||
        <SwitchPreferenceCompat
 | 
			
		||||
                android:title="@string/show_anti_feature_apps"
 | 
			
		||||
                android:defaultValue="false"
 | 
			
		||||
                android:key="showAntiFeatureApps"/>
 | 
			
		||||
        <SwitchPreference
 | 
			
		||||
        <SwitchPreferenceCompat
 | 
			
		||||
                android:title="@string/force_touch_apps"
 | 
			
		||||
                android:defaultValue="false"
 | 
			
		||||
                android:key="ignoreTouchscreen"/>
 | 
			
		||||
    </PreferenceCategory>
 | 
			
		||||
 | 
			
		||||
    <PreferenceCategory android:title="@string/proxy">
 | 
			
		||||
        <SwitchPreference
 | 
			
		||||
        <SwitchPreferenceCompat
 | 
			
		||||
                android:key="useTor"
 | 
			
		||||
                android:summary="@string/useTorSummary"
 | 
			
		||||
                android:title="@string/useTor"/>
 | 
			
		||||
        <SwitchPreference
 | 
			
		||||
        <SwitchPreferenceCompat
 | 
			
		||||
                android:defaultValue="false"
 | 
			
		||||
                android:key="enableProxy"
 | 
			
		||||
                android:title="@string/enable_proxy_title"
 | 
			
		||||
@ -116,12 +111,12 @@
 | 
			
		||||
    <PreferenceCategory
 | 
			
		||||
            android:key="pref_category_privacy"
 | 
			
		||||
            android:title="@string/privacy">
 | 
			
		||||
        <SwitchPreference
 | 
			
		||||
        <SwitchPreferenceCompat
 | 
			
		||||
                android:key="promptToSendCrashReports"
 | 
			
		||||
                android:title="@string/prompt_to_send_crash_reports"
 | 
			
		||||
                android:summary="@string/prompt_to_send_crash_reports_summary"
 | 
			
		||||
                android:defaultValue="true"/>
 | 
			
		||||
        <SwitchPreference
 | 
			
		||||
        <SwitchPreferenceCompat
 | 
			
		||||
                android:defaultValue="false"
 | 
			
		||||
                android:key="preventScreenshots"
 | 
			
		||||
                android:summary="@string/preventScreenshots_summary"
 | 
			
		||||
@ -137,7 +132,7 @@
 | 
			
		||||
                android:defaultValue="86400000"
 | 
			
		||||
                android:entries="@array/keepCacheNames"
 | 
			
		||||
                android:entryValues="@array/keepCacheValues"/>
 | 
			
		||||
        <SwitchPreference
 | 
			
		||||
        <SwitchPreferenceCompat
 | 
			
		||||
                android:title="@string/expert"
 | 
			
		||||
                android:defaultValue="false"
 | 
			
		||||
                android:key="expert"/>
 | 
			
		||||
 | 
			
		||||
@ -56,7 +56,6 @@
 | 
			
		||||
                android:name=".nearby.SwapWorkflowActivity"
 | 
			
		||||
                android:parentActivityName=".views.main.MainActivity"
 | 
			
		||||
                android:launchMode="singleTask"
 | 
			
		||||
                android:theme="@style/SwapTheme.Wizard"
 | 
			
		||||
                android:screenOrientation="portrait"
 | 
			
		||||
                android:configChanges="orientation|keyboardHidden">
 | 
			
		||||
            <meta-data
 | 
			
		||||
@ -159,8 +158,7 @@
 | 
			
		||||
                android:name=".panic.CalculatorActivity"
 | 
			
		||||
                android:enabled="false"
 | 
			
		||||
                android:icon="@mipmap/ic_calculator_launcher"
 | 
			
		||||
                android:label="@string/hiding_calculator"
 | 
			
		||||
                android:theme="@style/AppThemeLight">
 | 
			
		||||
                android:label="@string/hiding_calculator">
 | 
			
		||||
            <intent-filter>
 | 
			
		||||
                <action android:name="android.intent.action.MAIN"/>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -200,8 +200,6 @@ public class SelectAppsView extends SwapView implements LoaderManager.LoaderCall
 | 
			
		||||
                    }
 | 
			
		||||
                });
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            updateCheckedIndicatorView(view, listView.isItemChecked(listPosition));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void updateCheckedIndicatorView(int position, boolean checked) {
 | 
			
		||||
@ -210,24 +208,6 @@ public class SelectAppsView extends SwapView implements LoaderManager.LoaderCall
 | 
			
		||||
 | 
			
		||||
            if (position >= firstListItemPosition && position <= lastListItemPosition) {
 | 
			
		||||
                final int childIndex = position - firstListItemPosition;
 | 
			
		||||
                updateCheckedIndicatorView(listView.getChildAt(childIndex), checked);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void updateCheckedIndicatorView(View view, boolean checked) {
 | 
			
		||||
            ImageView imageView = (ImageView) view.findViewById(R.id.checked);
 | 
			
		||||
            if (imageView != null) {
 | 
			
		||||
                int resource;
 | 
			
		||||
                int colour;
 | 
			
		||||
                if (checked) {
 | 
			
		||||
                    resource = R.drawable.ic_check_circle;
 | 
			
		||||
                    colour = ContextCompat.getColor(getContext(), R.color.swap_bright_blue);
 | 
			
		||||
                } else {
 | 
			
		||||
                    resource = R.drawable.ic_add_circle_outline;
 | 
			
		||||
                    colour = 0xFFD0D0D4;
 | 
			
		||||
                }
 | 
			
		||||
                imageView.setImageDrawable(ContextCompat.getDrawable(getContext(), resource));
 | 
			
		||||
                imageView.setColorFilter(colour, PorterDuff.Mode.MULTIPLY);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -42,10 +42,10 @@ import androidx.appcompat.app.AlertDialog;
 | 
			
		||||
import androidx.appcompat.app.AppCompatActivity;
 | 
			
		||||
import androidx.appcompat.widget.SearchView;
 | 
			
		||||
import androidx.appcompat.widget.SwitchCompat;
 | 
			
		||||
import androidx.appcompat.widget.Toolbar;
 | 
			
		||||
import androidx.core.content.ContextCompat;
 | 
			
		||||
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
 | 
			
		||||
 | 
			
		||||
import com.google.android.material.appbar.MaterialToolbar;
 | 
			
		||||
import com.google.zxing.integration.android.IntentIntegrator;
 | 
			
		||||
import com.google.zxing.integration.android.IntentResult;
 | 
			
		||||
 | 
			
		||||
@ -106,7 +106,7 @@ public class SwapWorkflowActivity extends AppCompatActivity {
 | 
			
		||||
    private static final int REQUEST_WRITE_SETTINGS_PERMISSION = 5;
 | 
			
		||||
    private static final int STEP_INTRO = 1;  // TODO remove this special case, only use layoutResIds
 | 
			
		||||
 | 
			
		||||
    private Toolbar toolbar;
 | 
			
		||||
    private MaterialToolbar toolbar;
 | 
			
		||||
    private SwapView currentView;
 | 
			
		||||
    private boolean hasPreparedLocalRepo;
 | 
			
		||||
    private boolean newIntent;
 | 
			
		||||
@ -200,7 +200,11 @@ public class SwapWorkflowActivity extends AppCompatActivity {
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    protected void onCreate(Bundle savedInstanceState) {
 | 
			
		||||
        ((FDroidApp) getApplication()).setSecureWindow(this);
 | 
			
		||||
        FDroidApp fdroidApp = (FDroidApp) getApplication();
 | 
			
		||||
        fdroidApp.setSecureWindow(this);
 | 
			
		||||
 | 
			
		||||
        fdroidApp.applyPureBlackBackgroundInDarkTheme(this);
 | 
			
		||||
 | 
			
		||||
        super.onCreate(savedInstanceState);
 | 
			
		||||
 | 
			
		||||
        currentView = new SwapView(this); // dummy placeholder to avoid NullPointerExceptions;
 | 
			
		||||
@ -213,10 +217,8 @@ public class SwapWorkflowActivity extends AppCompatActivity {
 | 
			
		||||
 | 
			
		||||
        setContentView(R.layout.swap_activity);
 | 
			
		||||
 | 
			
		||||
        toolbar = (Toolbar) findViewById(R.id.toolbar);
 | 
			
		||||
        toolbar.setTitleTextAppearance(getApplicationContext(), R.style.SwapTheme_Wizard_Text_Toolbar);
 | 
			
		||||
        toolbar = findViewById(R.id.toolbar);
 | 
			
		||||
        setSupportActionBar(toolbar);
 | 
			
		||||
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
 | 
			
		||||
 | 
			
		||||
        container = (ViewGroup) findViewById(R.id.container);
 | 
			
		||||
 | 
			
		||||
@ -494,7 +496,6 @@ public class SwapWorkflowActivity extends AppCompatActivity {
 | 
			
		||||
        currentView.setLayoutResId(viewRes);
 | 
			
		||||
        currentSwapViewLayoutRes = viewRes;
 | 
			
		||||
 | 
			
		||||
        toolbar.setBackgroundColor(currentView.getToolbarColour());
 | 
			
		||||
        toolbar.setTitle(currentView.getToolbarTitle());
 | 
			
		||||
        toolbar.setNavigationOnClickListener(new View.OnClickListener() {
 | 
			
		||||
            @Override
 | 
			
		||||
 | 
			
		||||
@ -3,11 +3,14 @@ package org.fdroid.fdroid.panic;
 | 
			
		||||
import android.os.Bundle;
 | 
			
		||||
import androidx.annotation.Nullable;
 | 
			
		||||
import androidx.appcompat.app.AppCompatActivity;
 | 
			
		||||
import androidx.appcompat.widget.Toolbar;
 | 
			
		||||
import android.view.View;
 | 
			
		||||
import android.widget.Button;
 | 
			
		||||
import android.widget.TextView;
 | 
			
		||||
import android.widget.Toast;
 | 
			
		||||
 | 
			
		||||
import com.google.android.material.appbar.MaterialToolbar;
 | 
			
		||||
 | 
			
		||||
import org.fdroid.fdroid.FDroidApp;
 | 
			
		||||
import org.fdroid.fdroid.R;
 | 
			
		||||
 | 
			
		||||
import java.util.regex.Pattern;
 | 
			
		||||
@ -35,10 +38,13 @@ public class CalculatorActivity extends AppCompatActivity {
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    protected void onCreate(@Nullable Bundle savedInstanceState) {
 | 
			
		||||
        FDroidApp fdroidApp = (FDroidApp) getApplication();
 | 
			
		||||
        fdroidApp.applyPureBlackBackgroundInDarkTheme(this);
 | 
			
		||||
 | 
			
		||||
        super.onCreate(savedInstanceState);
 | 
			
		||||
        setContentView(R.layout.activity_calculator);
 | 
			
		||||
 | 
			
		||||
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
 | 
			
		||||
        MaterialToolbar toolbar = findViewById(R.id.toolbar);
 | 
			
		||||
        setSupportActionBar(toolbar);
 | 
			
		||||
 | 
			
		||||
        textView = (TextView) findViewById(R.id.textView);
 | 
			
		||||
 | 
			
		||||
@ -1,10 +1,12 @@
 | 
			
		||||
package org.fdroid.fdroid.panic;
 | 
			
		||||
 | 
			
		||||
import android.os.Bundle;
 | 
			
		||||
import androidx.appcompat.app.ActionBar;
 | 
			
		||||
import android.view.View;
 | 
			
		||||
 | 
			
		||||
import androidx.appcompat.app.AppCompatActivity;
 | 
			
		||||
import androidx.appcompat.widget.Toolbar;
 | 
			
		||||
import android.view.MenuItem;
 | 
			
		||||
 | 
			
		||||
import com.google.android.material.appbar.MaterialToolbar;
 | 
			
		||||
 | 
			
		||||
import org.fdroid.fdroid.FDroidApp;
 | 
			
		||||
import org.fdroid.fdroid.R;
 | 
			
		||||
 | 
			
		||||
@ -12,26 +14,19 @@ public class PanicPreferencesActivity extends AppCompatActivity {
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void onCreate(Bundle bundle) {
 | 
			
		||||
        ((FDroidApp) getApplication()).applyTheme(this);
 | 
			
		||||
        FDroidApp fdroidApp = (FDroidApp) getApplication();
 | 
			
		||||
        fdroidApp.applyPureBlackBackgroundInDarkTheme(this);
 | 
			
		||||
 | 
			
		||||
        super.onCreate(bundle);
 | 
			
		||||
        setContentView(R.layout.activity_panic_settings);
 | 
			
		||||
 | 
			
		||||
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
 | 
			
		||||
        setSupportActionBar(toolbar);
 | 
			
		||||
        ActionBar ab = getSupportActionBar();
 | 
			
		||||
        if (ab != null) {
 | 
			
		||||
            ab.setDisplayShowHomeEnabled(true);
 | 
			
		||||
            ab.setDisplayHomeAsUpEnabled(true);
 | 
			
		||||
        }
 | 
			
		||||
        MaterialToolbar toolbar = findViewById(R.id.toolbar);
 | 
			
		||||
        toolbar.setNavigationOnClickListener(new View.OnClickListener() {
 | 
			
		||||
            @Override
 | 
			
		||||
            public void onClick(View view) {
 | 
			
		||||
                // Handle navigation icon press
 | 
			
		||||
                onBackPressed();
 | 
			
		||||
            }
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public boolean onOptionsItemSelected(MenuItem item) {
 | 
			
		||||
        if (item.getItemId() == android.R.id.home) {
 | 
			
		||||
            onBackPressed();
 | 
			
		||||
            return true;
 | 
			
		||||
        }
 | 
			
		||||
        return super.onOptionsItemSelected(item);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -29,14 +29,14 @@ import android.widget.TextView;
 | 
			
		||||
 | 
			
		||||
import androidx.annotation.NonNull;
 | 
			
		||||
import androidx.appcompat.app.AppCompatActivity;
 | 
			
		||||
import androidx.appcompat.widget.Toolbar;
 | 
			
		||||
import androidx.core.content.ContextCompat;
 | 
			
		||||
import androidx.loader.app.LoaderManager;
 | 
			
		||||
import androidx.loader.content.CursorLoader;
 | 
			
		||||
import androidx.loader.content.Loader;
 | 
			
		||||
import androidx.recyclerview.widget.LinearLayoutManager;
 | 
			
		||||
import androidx.recyclerview.widget.RecyclerView;
 | 
			
		||||
 | 
			
		||||
import com.google.android.material.appbar.MaterialToolbar;
 | 
			
		||||
 | 
			
		||||
import org.fdroid.fdroid.FDroidApp;
 | 
			
		||||
import org.fdroid.fdroid.Preferences;
 | 
			
		||||
import org.fdroid.fdroid.R;
 | 
			
		||||
@ -54,13 +54,14 @@ public class SelectInstalledAppsActivity extends AppCompatActivity implements Lo
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    protected void onCreate(Bundle savedInstanceState) {
 | 
			
		||||
        FDroidApp fdroidApp = (FDroidApp) getApplication();
 | 
			
		||||
        fdroidApp.applyPureBlackBackgroundInDarkTheme(this);
 | 
			
		||||
 | 
			
		||||
        ((FDroidApp) getApplication()).applyTheme(this);
 | 
			
		||||
        super.onCreate(savedInstanceState);
 | 
			
		||||
 | 
			
		||||
        setContentView(R.layout.installed_apps_layout);
 | 
			
		||||
 | 
			
		||||
        Toolbar toolbar = findViewById(R.id.toolbar);
 | 
			
		||||
        MaterialToolbar toolbar = findViewById(R.id.toolbar);
 | 
			
		||||
        toolbar.setTitle(getString(R.string.panic_add_apps_to_uninstall));
 | 
			
		||||
        setSupportActionBar(toolbar);
 | 
			
		||||
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
 | 
			
		||||
 | 
			
		||||
@ -1,12 +0,0 @@
 | 
			
		||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
 | 
			
		||||
    xmlns:tools="http://schemas.android.com/tools"
 | 
			
		||||
    android:width="24dp"
 | 
			
		||||
    android:height="24dp"
 | 
			
		||||
    android:viewportWidth="24"
 | 
			
		||||
    android:viewportHeight="24"
 | 
			
		||||
    android:tint="?attr/colorControlNormal"
 | 
			
		||||
    tools:ignore="VectorRaster">
 | 
			
		||||
  <path
 | 
			
		||||
      android:fillColor="#FFFFFF"
 | 
			
		||||
      android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM9.29,16.29L5.7,12.7c-0.39,-0.39 -0.39,-1.02 0,-1.41 0.39,-0.39 1.02,-0.39 1.41,0L10,14.17l6.88,-6.88c0.39,-0.39 1.02,-0.39 1.41,0 0.39,0.39 0.39,1.02 0,1.41l-7.59,7.59c-0.38,0.39 -1.02,0.39 -1.41,0z"/>
 | 
			
		||||
</vector>
 | 
			
		||||
@ -1,79 +0,0 @@
 | 
			
		||||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<!--
 | 
			
		||||
     Copyright (C) 2010 The Android Open Source Project
 | 
			
		||||
     Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
     you may not use this file except in compliance with the License.
 | 
			
		||||
     You may obtain a copy of the License at
 | 
			
		||||
          http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
     Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
     distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
     See the License for the specific language governing permissions and
 | 
			
		||||
     limitations under the License.
 | 
			
		||||
-->
 | 
			
		||||
 | 
			
		||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 | 
			
		||||
    xmlns:app="http://schemas.android.com/apk/res-auto"
 | 
			
		||||
    xmlns:tools="http://schemas.android.com/tools"
 | 
			
		||||
    android:layout_width="match_parent"
 | 
			
		||||
    android:layout_height="wrap_content"
 | 
			
		||||
    android:minHeight="?attr/listPreferredItemHeight"
 | 
			
		||||
    android:paddingBottom="2dip"
 | 
			
		||||
    android:paddingTop="2dip">
 | 
			
		||||
 | 
			
		||||
    <ImageView
 | 
			
		||||
        android:id="@android:id/icon"
 | 
			
		||||
        android:layout_width="48dip"
 | 
			
		||||
        android:layout_height="48dip"
 | 
			
		||||
        android:layout_marginLeft="?attr/listPreferredItemPaddingLeft"
 | 
			
		||||
        android:layout_marginStart="?attr/listPreferredItemPaddingStart"
 | 
			
		||||
        android:layout_marginTop="6dip"
 | 
			
		||||
        android:layout_alignParentStart="true"
 | 
			
		||||
        android:layout_alignParentLeft="true"
 | 
			
		||||
        tools:src="@drawable/ic_launcher"
 | 
			
		||||
        tools:ignore="ContentDescription" />
 | 
			
		||||
 | 
			
		||||
    <!-- Suppress InconsistentLayout because the lower API levels use a checkbox rather than this -->
 | 
			
		||||
    <ImageView
 | 
			
		||||
        android:id="@+id/checked"
 | 
			
		||||
        android:layout_width="32dip"
 | 
			
		||||
        android:layout_height="32dip"
 | 
			
		||||
        android:layout_marginRight="?attr/listPreferredItemPaddingLeft"
 | 
			
		||||
        android:layout_marginEnd="?attr/listPreferredItemPaddingStart"
 | 
			
		||||
        android:layout_alignParentRight="true"
 | 
			
		||||
        android:layout_alignParentEnd="true"
 | 
			
		||||
        android:layout_centerVertical="true"
 | 
			
		||||
        tools:suppress="InconsistentLayout"
 | 
			
		||||
        app:srcCompat="@drawable/ic_add_circle_outline" />
 | 
			
		||||
 | 
			
		||||
    <TwoLineListItem
 | 
			
		||||
        android:layout_toRightOf="@android:id/icon"
 | 
			
		||||
        android:layout_toEndOf="@android:id/icon"
 | 
			
		||||
        android:layout_toLeftOf="@id/checked"
 | 
			
		||||
        android:layout_toStartOf="@id/checked"
 | 
			
		||||
        android:layout_width="wrap_content"
 | 
			
		||||
        android:layout_height="wrap_content"
 | 
			
		||||
        android:mode="twoLine" >
 | 
			
		||||
 | 
			
		||||
        <TextView
 | 
			
		||||
            android:id="@+id/application_label"
 | 
			
		||||
            android:layout_width="wrap_content"
 | 
			
		||||
            android:layout_height="wrap_content"
 | 
			
		||||
            android:layout_marginLeft="?attr/listPreferredItemPaddingLeft"
 | 
			
		||||
            android:layout_marginStart="?attr/listPreferredItemPaddingStart"
 | 
			
		||||
            android:layout_marginTop="6dip"
 | 
			
		||||
            android:textAppearance="?android:attr/textAppearanceMedium"
 | 
			
		||||
            tools:text="F-Droid" />
 | 
			
		||||
 | 
			
		||||
        <TextView
 | 
			
		||||
            android:id="@+id/package_name"
 | 
			
		||||
            android:layout_width="wrap_content"
 | 
			
		||||
            android:layout_height="wrap_content"
 | 
			
		||||
            android:layout_alignStart="@+id/application_label"
 | 
			
		||||
            android:layout_alignLeft="@+id/application_label"
 | 
			
		||||
            android:layout_below="@+id/application_label"
 | 
			
		||||
            android:textAppearance="?android:attr/textAppearanceSmall"
 | 
			
		||||
            tools:text="Application Manager" />
 | 
			
		||||
    </TwoLineListItem>
 | 
			
		||||
 | 
			
		||||
</RelativeLayout>
 | 
			
		||||
@ -1,71 +0,0 @@
 | 
			
		||||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<!--
 | 
			
		||||
     Copyright (C) 2010 The Android Open Source Project
 | 
			
		||||
     Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
     you may not use this file except in compliance with the License.
 | 
			
		||||
     You may obtain a copy of the License at
 | 
			
		||||
          http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
     Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
     distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
     See the License for the specific language governing permissions and
 | 
			
		||||
     limitations under the License.
 | 
			
		||||
-->
 | 
			
		||||
 | 
			
		||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 | 
			
		||||
    xmlns:app="http://schemas.android.com/apk/res-auto"
 | 
			
		||||
    xmlns:tools="http://schemas.android.com/tools"
 | 
			
		||||
    android:layout_width="match_parent"
 | 
			
		||||
    android:layout_height="wrap_content"
 | 
			
		||||
    android:minHeight="?attr/listPreferredItemHeight"
 | 
			
		||||
    android:paddingBottom="2dip"
 | 
			
		||||
    android:paddingTop="2dip">
 | 
			
		||||
 | 
			
		||||
    <ImageView
 | 
			
		||||
        android:id="@android:id/icon"
 | 
			
		||||
        android:layout_width="48dip"
 | 
			
		||||
        android:layout_height="48dip"
 | 
			
		||||
        android:layout_marginStart="?attr/listPreferredItemPaddingStart"
 | 
			
		||||
        android:layout_marginTop="6dip"
 | 
			
		||||
        android:layout_alignParentStart="true"
 | 
			
		||||
        tools:src="@drawable/ic_launcher"
 | 
			
		||||
        tools:ignore="ContentDescription" />
 | 
			
		||||
 | 
			
		||||
    <!-- Suppress InconsistentLayout because the lower API levels use a checkbox rather than this -->
 | 
			
		||||
    <ImageView
 | 
			
		||||
        android:id="@+id/checked"
 | 
			
		||||
        android:layout_width="32dip"
 | 
			
		||||
        android:layout_height="32dip"
 | 
			
		||||
        android:layout_marginEnd="?attr/listPreferredItemPaddingStart"
 | 
			
		||||
        android:layout_alignParentEnd="true"
 | 
			
		||||
        android:layout_centerVertical="true"
 | 
			
		||||
        tools:suppress="InconsistentLayout"
 | 
			
		||||
        app:srcCompat="@drawable/ic_add_circle_outline" />
 | 
			
		||||
 | 
			
		||||
    <TwoLineListItem
 | 
			
		||||
        android:layout_toEndOf="@android:id/icon"
 | 
			
		||||
        android:layout_toStartOf="@id/checked"
 | 
			
		||||
        android:layout_width="wrap_content"
 | 
			
		||||
        android:layout_height="wrap_content"
 | 
			
		||||
        android:mode="twoLine" >
 | 
			
		||||
 | 
			
		||||
        <TextView
 | 
			
		||||
            android:id="@+id/application_label"
 | 
			
		||||
            android:layout_width="wrap_content"
 | 
			
		||||
            android:layout_height="wrap_content"
 | 
			
		||||
            android:layout_marginStart="?attr/listPreferredItemPaddingStart"
 | 
			
		||||
            android:layout_marginTop="6dip"
 | 
			
		||||
            android:textAppearance="?android:attr/textAppearanceMedium"
 | 
			
		||||
            tools:text="F-Droid" />
 | 
			
		||||
 | 
			
		||||
        <TextView
 | 
			
		||||
            android:id="@+id/package_name"
 | 
			
		||||
            android:layout_width="wrap_content"
 | 
			
		||||
            android:layout_height="wrap_content"
 | 
			
		||||
            android:layout_alignStart="@+id/application_label"
 | 
			
		||||
            android:layout_below="@+id/application_label"
 | 
			
		||||
            android:textAppearance="?android:attr/textAppearanceSmall"
 | 
			
		||||
            tools:text="Application Manager" />
 | 
			
		||||
    </TwoLineListItem>
 | 
			
		||||
 | 
			
		||||
</RelativeLayout>
 | 
			
		||||
@ -1,291 +1,302 @@
 | 
			
		||||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
 | 
			
		||||
    xmlns:app="http://schemas.android.com/apk/res-auto"
 | 
			
		||||
    xmlns:tools="http://schemas.android.com/tools"
 | 
			
		||||
    android:layout_width="match_parent"
 | 
			
		||||
    android:layout_height="match_parent"
 | 
			
		||||
    tools:context=".panic.CalculatorActivity">
 | 
			
		||||
 | 
			
		||||
    <androidx.appcompat.widget.Toolbar
 | 
			
		||||
        android:id="@+id/toolbar"
 | 
			
		||||
<androidx.constraintlayout.widget.ConstraintLayout
 | 
			
		||||
        xmlns:android="http://schemas.android.com/apk/res/android"
 | 
			
		||||
        xmlns:app="http://schemas.android.com/apk/res-auto"
 | 
			
		||||
        xmlns:tools="http://schemas.android.com/tools"
 | 
			
		||||
        android:layout_width="match_parent"
 | 
			
		||||
        android:layout_height="wrap_content"
 | 
			
		||||
        android:background="?attr/colorPrimary"
 | 
			
		||||
        app:layout_constraintEnd_toEndOf="parent"
 | 
			
		||||
        app:layout_constraintStart_toStartOf="parent"
 | 
			
		||||
        app:layout_constraintTop_toTopOf="parent"
 | 
			
		||||
        app:theme="?attr/actionBarTheme" />
 | 
			
		||||
        android:layout_height="match_parent"
 | 
			
		||||
        tools:context=".panic.CalculatorActivity"
 | 
			
		||||
        android:fitsSystemWindows="true">
 | 
			
		||||
 | 
			
		||||
    <com.google.android.material.appbar.AppBarLayout
 | 
			
		||||
            android:id="@+id/topAppBarLayout"
 | 
			
		||||
            android:layout_width="match_parent"
 | 
			
		||||
            android:layout_height="wrap_content"
 | 
			
		||||
            android:fitsSystemWindows="true"
 | 
			
		||||
            app:liftOnScroll="true"
 | 
			
		||||
            app:layout_constraintEnd_toEndOf="parent"
 | 
			
		||||
            app:layout_constraintStart_toStartOf="parent"
 | 
			
		||||
            app:layout_constraintTop_toTopOf="parent">
 | 
			
		||||
 | 
			
		||||
        <com.google.android.material.appbar.MaterialToolbar
 | 
			
		||||
                android:id="@+id/toolbar"
 | 
			
		||||
                android:layout_width="match_parent"
 | 
			
		||||
                android:layout_height="?attr/actionBarSize"
 | 
			
		||||
                app:navigationIcon="@drawable/ic_back"
 | 
			
		||||
                style="@style/Widget.MaterialComponents.Toolbar.PrimarySurface" />
 | 
			
		||||
 | 
			
		||||
    </com.google.android.material.appbar.AppBarLayout>
 | 
			
		||||
 | 
			
		||||
    <TextView
 | 
			
		||||
        android:id="@+id/textView"
 | 
			
		||||
        android:layout_width="0dp"
 | 
			
		||||
        android:layout_height="0dp"
 | 
			
		||||
        android:layout_marginBottom="8dp"
 | 
			
		||||
        android:layout_marginEnd="8dp"
 | 
			
		||||
        android:layout_marginStart="8dp"
 | 
			
		||||
        android:layout_marginTop="8dp"
 | 
			
		||||
        android:gravity="bottom|end"
 | 
			
		||||
        android:padding="5dp"
 | 
			
		||||
        android:textAlignment="textEnd"
 | 
			
		||||
        android:textSize="22sp"
 | 
			
		||||
        android:typeface="monospace"
 | 
			
		||||
        app:layout_constraintBottom_toTopOf="@+id/ce"
 | 
			
		||||
        app:layout_constraintEnd_toEndOf="parent"
 | 
			
		||||
        app:layout_constraintStart_toStartOf="parent"
 | 
			
		||||
        app:layout_constraintTop_toBottomOf="@+id/toolbar"
 | 
			
		||||
        tools:text="1337+42" />
 | 
			
		||||
            android:id="@+id/textView"
 | 
			
		||||
            android:layout_width="0dp"
 | 
			
		||||
            android:layout_height="0dp"
 | 
			
		||||
            android:layout_marginBottom="8dp"
 | 
			
		||||
            android:layout_marginEnd="8dp"
 | 
			
		||||
            android:layout_marginStart="8dp"
 | 
			
		||||
            android:layout_marginTop="8dp"
 | 
			
		||||
            android:gravity="bottom|end"
 | 
			
		||||
            android:padding="5dp"
 | 
			
		||||
            android:textAlignment="textEnd"
 | 
			
		||||
            android:textSize="22sp"
 | 
			
		||||
            android:typeface="monospace"
 | 
			
		||||
            app:layout_constraintBottom_toTopOf="@+id/ce"
 | 
			
		||||
            app:layout_constraintEnd_toEndOf="parent"
 | 
			
		||||
            app:layout_constraintStart_toStartOf="parent"
 | 
			
		||||
            app:layout_constraintTop_toBottomOf="@+id/topAppBarLayout"
 | 
			
		||||
            tools:text="1337+42" />
 | 
			
		||||
 | 
			
		||||
    <Button
 | 
			
		||||
        android:id="@+id/times"
 | 
			
		||||
        android:layout_width="0dp"
 | 
			
		||||
        android:layout_height="wrap_content"
 | 
			
		||||
        android:layout_marginBottom="8dp"
 | 
			
		||||
        android:layout_marginLeft="8dp"
 | 
			
		||||
        android:layout_marginStart="8dp"
 | 
			
		||||
        android:onClick="op"
 | 
			
		||||
        android:text="×"
 | 
			
		||||
        app:layout_constraintBottom_toTopOf="@+id/seven"
 | 
			
		||||
        app:layout_constraintStart_toStartOf="parent"
 | 
			
		||||
        tools:ignore="HardcodedText" />
 | 
			
		||||
            android:id="@+id/times"
 | 
			
		||||
            android:layout_width="0dp"
 | 
			
		||||
            android:layout_height="wrap_content"
 | 
			
		||||
            android:layout_marginBottom="8dp"
 | 
			
		||||
            android:layout_marginLeft="8dp"
 | 
			
		||||
            android:layout_marginStart="8dp"
 | 
			
		||||
            android:onClick="op"
 | 
			
		||||
            android:text="×"
 | 
			
		||||
            app:layout_constraintBottom_toTopOf="@+id/seven"
 | 
			
		||||
            app:layout_constraintStart_toStartOf="parent"
 | 
			
		||||
            tools:ignore="HardcodedText" />
 | 
			
		||||
 | 
			
		||||
    <Button
 | 
			
		||||
        android:id="@+id/divided"
 | 
			
		||||
        android:layout_width="0dp"
 | 
			
		||||
        android:layout_height="wrap_content"
 | 
			
		||||
        android:layout_marginBottom="8dp"
 | 
			
		||||
        android:layout_marginLeft="8dp"
 | 
			
		||||
        android:layout_marginStart="8dp"
 | 
			
		||||
        android:onClick="op"
 | 
			
		||||
        android:text="÷"
 | 
			
		||||
        app:layout_constraintBottom_toTopOf="@+id/eight"
 | 
			
		||||
        app:layout_constraintStart_toEndOf="@+id/times"
 | 
			
		||||
        tools:ignore="HardcodedText" />
 | 
			
		||||
            android:id="@+id/divided"
 | 
			
		||||
            android:layout_width="0dp"
 | 
			
		||||
            android:layout_height="wrap_content"
 | 
			
		||||
            android:layout_marginBottom="8dp"
 | 
			
		||||
            android:layout_marginLeft="8dp"
 | 
			
		||||
            android:layout_marginStart="8dp"
 | 
			
		||||
            android:onClick="op"
 | 
			
		||||
            android:text="÷"
 | 
			
		||||
            app:layout_constraintBottom_toTopOf="@+id/eight"
 | 
			
		||||
            app:layout_constraintStart_toEndOf="@+id/times"
 | 
			
		||||
            tools:ignore="HardcodedText" />
 | 
			
		||||
 | 
			
		||||
    <Button
 | 
			
		||||
        android:id="@+id/c"
 | 
			
		||||
        android:layout_width="0dp"
 | 
			
		||||
        android:layout_height="wrap_content"
 | 
			
		||||
        android:layout_marginBottom="8dp"
 | 
			
		||||
        android:layout_marginLeft="8dp"
 | 
			
		||||
        android:layout_marginStart="8dp"
 | 
			
		||||
        android:onClick="c"
 | 
			
		||||
        android:text="C"
 | 
			
		||||
        app:layout_constraintBottom_toTopOf="@+id/nine"
 | 
			
		||||
        app:layout_constraintStart_toEndOf="@+id/divided"
 | 
			
		||||
        tools:ignore="HardcodedText" />
 | 
			
		||||
            android:id="@+id/c"
 | 
			
		||||
            android:layout_width="0dp"
 | 
			
		||||
            android:layout_height="wrap_content"
 | 
			
		||||
            android:layout_marginBottom="8dp"
 | 
			
		||||
            android:layout_marginLeft="8dp"
 | 
			
		||||
            android:layout_marginStart="8dp"
 | 
			
		||||
            android:onClick="c"
 | 
			
		||||
            android:text="C"
 | 
			
		||||
            app:layout_constraintBottom_toTopOf="@+id/nine"
 | 
			
		||||
            app:layout_constraintStart_toEndOf="@+id/divided"
 | 
			
		||||
            tools:ignore="HardcodedText" />
 | 
			
		||||
 | 
			
		||||
    <Button
 | 
			
		||||
        android:id="@+id/seven"
 | 
			
		||||
        android:layout_width="0dp"
 | 
			
		||||
        android:layout_height="wrap_content"
 | 
			
		||||
        android:layout_marginBottom="8dp"
 | 
			
		||||
        android:layout_marginLeft="8dp"
 | 
			
		||||
        android:layout_marginStart="8dp"
 | 
			
		||||
        android:onClick="number"
 | 
			
		||||
        android:text="7"
 | 
			
		||||
        app:layout_constraintBottom_toTopOf="@+id/four"
 | 
			
		||||
        app:layout_constraintStart_toStartOf="parent"
 | 
			
		||||
        tools:ignore="HardcodedText" />
 | 
			
		||||
            android:id="@+id/seven"
 | 
			
		||||
            android:layout_width="0dp"
 | 
			
		||||
            android:layout_height="wrap_content"
 | 
			
		||||
            android:layout_marginBottom="8dp"
 | 
			
		||||
            android:layout_marginLeft="8dp"
 | 
			
		||||
            android:layout_marginStart="8dp"
 | 
			
		||||
            android:onClick="number"
 | 
			
		||||
            android:text="7"
 | 
			
		||||
            app:layout_constraintBottom_toTopOf="@+id/four"
 | 
			
		||||
            app:layout_constraintStart_toStartOf="parent"
 | 
			
		||||
            tools:ignore="HardcodedText" />
 | 
			
		||||
 | 
			
		||||
    <Button
 | 
			
		||||
        android:id="@+id/eight"
 | 
			
		||||
        android:layout_width="0dp"
 | 
			
		||||
        android:layout_height="wrap_content"
 | 
			
		||||
        android:layout_marginBottom="8dp"
 | 
			
		||||
        android:layout_marginLeft="8dp"
 | 
			
		||||
        android:layout_marginStart="8dp"
 | 
			
		||||
        android:onClick="number"
 | 
			
		||||
        android:text="8"
 | 
			
		||||
        app:layout_constraintBottom_toTopOf="@+id/five"
 | 
			
		||||
        app:layout_constraintStart_toEndOf="@+id/seven"
 | 
			
		||||
        tools:ignore="HardcodedText" />
 | 
			
		||||
            android:id="@+id/eight"
 | 
			
		||||
            android:layout_width="0dp"
 | 
			
		||||
            android:layout_height="wrap_content"
 | 
			
		||||
            android:layout_marginBottom="8dp"
 | 
			
		||||
            android:layout_marginLeft="8dp"
 | 
			
		||||
            android:layout_marginStart="8dp"
 | 
			
		||||
            android:onClick="number"
 | 
			
		||||
            android:text="8"
 | 
			
		||||
            app:layout_constraintBottom_toTopOf="@+id/five"
 | 
			
		||||
            app:layout_constraintStart_toEndOf="@+id/seven"
 | 
			
		||||
            tools:ignore="HardcodedText" />
 | 
			
		||||
 | 
			
		||||
    <Button
 | 
			
		||||
        android:id="@+id/nine"
 | 
			
		||||
        android:layout_width="0dp"
 | 
			
		||||
        android:layout_height="wrap_content"
 | 
			
		||||
        android:layout_marginBottom="8dp"
 | 
			
		||||
        android:layout_marginLeft="8dp"
 | 
			
		||||
        android:layout_marginStart="8dp"
 | 
			
		||||
        android:onClick="number"
 | 
			
		||||
        android:text="9"
 | 
			
		||||
        app:layout_constraintBottom_toTopOf="@+id/six"
 | 
			
		||||
        app:layout_constraintStart_toEndOf="@+id/eight"
 | 
			
		||||
        tools:ignore="HardcodedText" />
 | 
			
		||||
            android:id="@+id/nine"
 | 
			
		||||
            android:layout_width="0dp"
 | 
			
		||||
            android:layout_height="wrap_content"
 | 
			
		||||
            android:layout_marginBottom="8dp"
 | 
			
		||||
            android:layout_marginLeft="8dp"
 | 
			
		||||
            android:layout_marginStart="8dp"
 | 
			
		||||
            android:onClick="number"
 | 
			
		||||
            android:text="9"
 | 
			
		||||
            app:layout_constraintBottom_toTopOf="@+id/six"
 | 
			
		||||
            app:layout_constraintStart_toEndOf="@+id/eight"
 | 
			
		||||
            tools:ignore="HardcodedText" />
 | 
			
		||||
 | 
			
		||||
    <Button
 | 
			
		||||
        android:id="@+id/ce"
 | 
			
		||||
        android:layout_width="0dp"
 | 
			
		||||
        android:layout_height="wrap_content"
 | 
			
		||||
        android:layout_marginBottom="8dp"
 | 
			
		||||
        android:layout_marginEnd="8dp"
 | 
			
		||||
        android:layout_marginStart="8dp"
 | 
			
		||||
        android:onClick="ce"
 | 
			
		||||
        android:text="CE"
 | 
			
		||||
        app:layout_constraintBottom_toTopOf="@+id/plus"
 | 
			
		||||
        app:layout_constraintEnd_toEndOf="parent"
 | 
			
		||||
        app:layout_constraintStart_toEndOf="@+id/nine"
 | 
			
		||||
        tools:ignore="HardcodedText" />
 | 
			
		||||
            android:id="@+id/ce"
 | 
			
		||||
            android:layout_width="0dp"
 | 
			
		||||
            android:layout_height="wrap_content"
 | 
			
		||||
            android:layout_marginBottom="8dp"
 | 
			
		||||
            android:layout_marginEnd="8dp"
 | 
			
		||||
            android:layout_marginStart="8dp"
 | 
			
		||||
            android:onClick="ce"
 | 
			
		||||
            android:text="CE"
 | 
			
		||||
            app:layout_constraintBottom_toTopOf="@+id/plus"
 | 
			
		||||
            app:layout_constraintEnd_toEndOf="parent"
 | 
			
		||||
            app:layout_constraintStart_toEndOf="@+id/nine"
 | 
			
		||||
            tools:ignore="HardcodedText" />
 | 
			
		||||
 | 
			
		||||
    <Button
 | 
			
		||||
        android:id="@+id/four"
 | 
			
		||||
        android:layout_width="0dp"
 | 
			
		||||
        android:layout_height="wrap_content"
 | 
			
		||||
        android:layout_marginBottom="8dp"
 | 
			
		||||
        android:layout_marginLeft="8dp"
 | 
			
		||||
        android:layout_marginStart="8dp"
 | 
			
		||||
        android:onClick="number"
 | 
			
		||||
        android:text="4"
 | 
			
		||||
        app:layout_constraintBottom_toTopOf="@+id/one"
 | 
			
		||||
        app:layout_constraintStart_toStartOf="parent"
 | 
			
		||||
        tools:ignore="HardcodedText" />
 | 
			
		||||
            android:id="@+id/four"
 | 
			
		||||
            android:layout_width="0dp"
 | 
			
		||||
            android:layout_height="wrap_content"
 | 
			
		||||
            android:layout_marginBottom="8dp"
 | 
			
		||||
            android:layout_marginLeft="8dp"
 | 
			
		||||
            android:layout_marginStart="8dp"
 | 
			
		||||
            android:onClick="number"
 | 
			
		||||
            android:text="4"
 | 
			
		||||
            app:layout_constraintBottom_toTopOf="@+id/one"
 | 
			
		||||
            app:layout_constraintStart_toStartOf="parent"
 | 
			
		||||
            tools:ignore="HardcodedText" />
 | 
			
		||||
 | 
			
		||||
    <Button
 | 
			
		||||
        android:id="@+id/five"
 | 
			
		||||
        android:layout_width="0dp"
 | 
			
		||||
        android:layout_height="wrap_content"
 | 
			
		||||
        android:layout_marginBottom="8dp"
 | 
			
		||||
        android:layout_marginLeft="8dp"
 | 
			
		||||
        android:layout_marginStart="8dp"
 | 
			
		||||
        android:onClick="number"
 | 
			
		||||
        android:text="5"
 | 
			
		||||
        app:layout_constraintBottom_toTopOf="@+id/two"
 | 
			
		||||
        app:layout_constraintStart_toEndOf="@+id/four"
 | 
			
		||||
        tools:ignore="HardcodedText" />
 | 
			
		||||
            android:id="@+id/five"
 | 
			
		||||
            android:layout_width="0dp"
 | 
			
		||||
            android:layout_height="wrap_content"
 | 
			
		||||
            android:layout_marginBottom="8dp"
 | 
			
		||||
            android:layout_marginLeft="8dp"
 | 
			
		||||
            android:layout_marginStart="8dp"
 | 
			
		||||
            android:onClick="number"
 | 
			
		||||
            android:text="5"
 | 
			
		||||
            app:layout_constraintBottom_toTopOf="@+id/two"
 | 
			
		||||
            app:layout_constraintStart_toEndOf="@+id/four"
 | 
			
		||||
            tools:ignore="HardcodedText" />
 | 
			
		||||
 | 
			
		||||
    <Button
 | 
			
		||||
        android:id="@+id/six"
 | 
			
		||||
        android:layout_width="0dp"
 | 
			
		||||
        android:layout_height="wrap_content"
 | 
			
		||||
        android:layout_marginBottom="8dp"
 | 
			
		||||
        android:layout_marginLeft="8dp"
 | 
			
		||||
        android:layout_marginStart="8dp"
 | 
			
		||||
        android:onClick="number"
 | 
			
		||||
        android:text="6"
 | 
			
		||||
        app:layout_constraintBottom_toTopOf="@+id/three"
 | 
			
		||||
        app:layout_constraintStart_toEndOf="@+id/five"
 | 
			
		||||
        tools:ignore="HardcodedText" />
 | 
			
		||||
            android:id="@+id/six"
 | 
			
		||||
            android:layout_width="0dp"
 | 
			
		||||
            android:layout_height="wrap_content"
 | 
			
		||||
            android:layout_marginBottom="8dp"
 | 
			
		||||
            android:layout_marginLeft="8dp"
 | 
			
		||||
            android:layout_marginStart="8dp"
 | 
			
		||||
            android:onClick="number"
 | 
			
		||||
            android:text="6"
 | 
			
		||||
            app:layout_constraintBottom_toTopOf="@+id/three"
 | 
			
		||||
            app:layout_constraintStart_toEndOf="@+id/five"
 | 
			
		||||
            tools:ignore="HardcodedText" />
 | 
			
		||||
 | 
			
		||||
    <Button
 | 
			
		||||
        android:id="@+id/plus"
 | 
			
		||||
        android:layout_width="0dp"
 | 
			
		||||
        android:layout_height="wrap_content"
 | 
			
		||||
        android:layout_marginBottom="8dp"
 | 
			
		||||
        android:layout_marginEnd="8dp"
 | 
			
		||||
        android:layout_marginStart="8dp"
 | 
			
		||||
        android:onClick="op"
 | 
			
		||||
        android:text="+"
 | 
			
		||||
        app:layout_constraintBottom_toTopOf="@+id/minus"
 | 
			
		||||
        app:layout_constraintEnd_toEndOf="parent"
 | 
			
		||||
        app:layout_constraintStart_toEndOf="@+id/six"
 | 
			
		||||
        tools:ignore="HardcodedText" />
 | 
			
		||||
            android:id="@+id/plus"
 | 
			
		||||
            android:layout_width="0dp"
 | 
			
		||||
            android:layout_height="wrap_content"
 | 
			
		||||
            android:layout_marginBottom="8dp"
 | 
			
		||||
            android:layout_marginEnd="8dp"
 | 
			
		||||
            android:layout_marginStart="8dp"
 | 
			
		||||
            android:onClick="op"
 | 
			
		||||
            android:text="+"
 | 
			
		||||
            app:layout_constraintBottom_toTopOf="@+id/minus"
 | 
			
		||||
            app:layout_constraintEnd_toEndOf="parent"
 | 
			
		||||
            app:layout_constraintStart_toEndOf="@+id/six"
 | 
			
		||||
            tools:ignore="HardcodedText" />
 | 
			
		||||
 | 
			
		||||
    <Button
 | 
			
		||||
        android:id="@+id/minus"
 | 
			
		||||
        android:layout_width="0dp"
 | 
			
		||||
        android:layout_height="wrap_content"
 | 
			
		||||
        android:layout_marginBottom="8dp"
 | 
			
		||||
        android:layout_marginEnd="8dp"
 | 
			
		||||
        android:layout_marginStart="8dp"
 | 
			
		||||
        android:onClick="op"
 | 
			
		||||
        android:text="-"
 | 
			
		||||
        app:layout_constraintBottom_toTopOf="@+id/equals"
 | 
			
		||||
        app:layout_constraintEnd_toEndOf="parent"
 | 
			
		||||
        app:layout_constraintStart_toEndOf="@+id/three"
 | 
			
		||||
        tools:ignore="HardcodedText" />
 | 
			
		||||
            android:id="@+id/minus"
 | 
			
		||||
            android:layout_width="0dp"
 | 
			
		||||
            android:layout_height="wrap_content"
 | 
			
		||||
            android:layout_marginBottom="8dp"
 | 
			
		||||
            android:layout_marginEnd="8dp"
 | 
			
		||||
            android:layout_marginStart="8dp"
 | 
			
		||||
            android:onClick="op"
 | 
			
		||||
            android:text="-"
 | 
			
		||||
            app:layout_constraintBottom_toTopOf="@+id/equals"
 | 
			
		||||
            app:layout_constraintEnd_toEndOf="parent"
 | 
			
		||||
            app:layout_constraintStart_toEndOf="@+id/three"
 | 
			
		||||
            tools:ignore="HardcodedText" />
 | 
			
		||||
 | 
			
		||||
    <Button
 | 
			
		||||
        android:id="@+id/one"
 | 
			
		||||
        android:layout_width="0dp"
 | 
			
		||||
        android:layout_height="wrap_content"
 | 
			
		||||
        android:layout_marginBottom="8dp"
 | 
			
		||||
        android:layout_marginLeft="8dp"
 | 
			
		||||
        android:layout_marginStart="8dp"
 | 
			
		||||
        android:onClick="number"
 | 
			
		||||
        android:text="1"
 | 
			
		||||
        app:layout_constraintBottom_toTopOf="@+id/zero"
 | 
			
		||||
        app:layout_constraintStart_toStartOf="parent"
 | 
			
		||||
        tools:ignore="HardcodedText" />
 | 
			
		||||
            android:id="@+id/one"
 | 
			
		||||
            android:layout_width="0dp"
 | 
			
		||||
            android:layout_height="wrap_content"
 | 
			
		||||
            android:layout_marginBottom="8dp"
 | 
			
		||||
            android:layout_marginLeft="8dp"
 | 
			
		||||
            android:layout_marginStart="8dp"
 | 
			
		||||
            android:onClick="number"
 | 
			
		||||
            android:text="1"
 | 
			
		||||
            app:layout_constraintBottom_toTopOf="@+id/zero"
 | 
			
		||||
            app:layout_constraintStart_toStartOf="parent"
 | 
			
		||||
            tools:ignore="HardcodedText" />
 | 
			
		||||
 | 
			
		||||
    <Button
 | 
			
		||||
        android:id="@+id/two"
 | 
			
		||||
        android:layout_width="0dp"
 | 
			
		||||
        android:layout_height="wrap_content"
 | 
			
		||||
        android:layout_marginBottom="8dp"
 | 
			
		||||
        android:layout_marginLeft="8dp"
 | 
			
		||||
        android:layout_marginStart="8dp"
 | 
			
		||||
        android:onClick="number"
 | 
			
		||||
        android:text="2"
 | 
			
		||||
        app:layout_constraintBottom_toTopOf="@+id/comma"
 | 
			
		||||
        app:layout_constraintStart_toEndOf="@+id/one"
 | 
			
		||||
        tools:ignore="HardcodedText" />
 | 
			
		||||
            android:id="@+id/two"
 | 
			
		||||
            android:layout_width="0dp"
 | 
			
		||||
            android:layout_height="wrap_content"
 | 
			
		||||
            android:layout_marginBottom="8dp"
 | 
			
		||||
            android:layout_marginLeft="8dp"
 | 
			
		||||
            android:layout_marginStart="8dp"
 | 
			
		||||
            android:onClick="number"
 | 
			
		||||
            android:text="2"
 | 
			
		||||
            app:layout_constraintBottom_toTopOf="@+id/comma"
 | 
			
		||||
            app:layout_constraintStart_toEndOf="@+id/one"
 | 
			
		||||
            tools:ignore="HardcodedText" />
 | 
			
		||||
 | 
			
		||||
    <Button
 | 
			
		||||
        android:id="@+id/three"
 | 
			
		||||
        android:layout_width="0dp"
 | 
			
		||||
        android:layout_height="wrap_content"
 | 
			
		||||
        android:layout_marginBottom="8dp"
 | 
			
		||||
        android:layout_marginLeft="8dp"
 | 
			
		||||
        android:layout_marginStart="8dp"
 | 
			
		||||
        android:onClick="number"
 | 
			
		||||
        android:text="3"
 | 
			
		||||
        app:layout_constraintBottom_toTopOf="@+id/percent"
 | 
			
		||||
        app:layout_constraintStart_toEndOf="@+id/two"
 | 
			
		||||
        tools:ignore="HardcodedText" />
 | 
			
		||||
            android:id="@+id/three"
 | 
			
		||||
            android:layout_width="0dp"
 | 
			
		||||
            android:layout_height="wrap_content"
 | 
			
		||||
            android:layout_marginBottom="8dp"
 | 
			
		||||
            android:layout_marginLeft="8dp"
 | 
			
		||||
            android:layout_marginStart="8dp"
 | 
			
		||||
            android:onClick="number"
 | 
			
		||||
            android:text="3"
 | 
			
		||||
            app:layout_constraintBottom_toTopOf="@+id/percent"
 | 
			
		||||
            app:layout_constraintStart_toEndOf="@+id/two"
 | 
			
		||||
            tools:ignore="HardcodedText" />
 | 
			
		||||
 | 
			
		||||
    <Button
 | 
			
		||||
        android:id="@+id/zero"
 | 
			
		||||
        android:layout_width="0dp"
 | 
			
		||||
        android:layout_height="wrap_content"
 | 
			
		||||
        android:layout_marginBottom="8dp"
 | 
			
		||||
        android:layout_marginLeft="8dp"
 | 
			
		||||
        android:layout_marginStart="8dp"
 | 
			
		||||
        android:onClick="number"
 | 
			
		||||
        android:text="0"
 | 
			
		||||
        app:layout_constraintBottom_toBottomOf="parent"
 | 
			
		||||
        app:layout_constraintStart_toStartOf="parent"
 | 
			
		||||
        tools:ignore="HardcodedText" />
 | 
			
		||||
            android:id="@+id/zero"
 | 
			
		||||
            android:layout_width="0dp"
 | 
			
		||||
            android:layout_height="wrap_content"
 | 
			
		||||
            android:layout_marginBottom="8dp"
 | 
			
		||||
            android:layout_marginLeft="8dp"
 | 
			
		||||
            android:layout_marginStart="8dp"
 | 
			
		||||
            android:onClick="number"
 | 
			
		||||
            android:text="0"
 | 
			
		||||
            app:layout_constraintBottom_toBottomOf="parent"
 | 
			
		||||
            app:layout_constraintStart_toStartOf="parent"
 | 
			
		||||
            tools:ignore="HardcodedText" />
 | 
			
		||||
 | 
			
		||||
    <Button
 | 
			
		||||
        android:id="@+id/comma"
 | 
			
		||||
        android:layout_width="0dp"
 | 
			
		||||
        android:layout_height="wrap_content"
 | 
			
		||||
        android:layout_marginBottom="8dp"
 | 
			
		||||
        android:layout_marginLeft="8dp"
 | 
			
		||||
        android:layout_marginStart="8dp"
 | 
			
		||||
        android:onClick="number"
 | 
			
		||||
        android:text="."
 | 
			
		||||
        app:layout_constraintBottom_toBottomOf="parent"
 | 
			
		||||
        app:layout_constraintStart_toEndOf="@+id/zero"
 | 
			
		||||
        tools:ignore="HardcodedText" />
 | 
			
		||||
            android:id="@+id/comma"
 | 
			
		||||
            android:layout_width="0dp"
 | 
			
		||||
            android:layout_height="wrap_content"
 | 
			
		||||
            android:layout_marginBottom="8dp"
 | 
			
		||||
            android:layout_marginLeft="8dp"
 | 
			
		||||
            android:layout_marginStart="8dp"
 | 
			
		||||
            android:onClick="number"
 | 
			
		||||
            android:text="."
 | 
			
		||||
            app:layout_constraintBottom_toBottomOf="parent"
 | 
			
		||||
            app:layout_constraintStart_toEndOf="@+id/zero"
 | 
			
		||||
            tools:ignore="HardcodedText" />
 | 
			
		||||
 | 
			
		||||
    <Button
 | 
			
		||||
        android:id="@+id/percent"
 | 
			
		||||
        android:layout_width="0dp"
 | 
			
		||||
        android:layout_height="wrap_content"
 | 
			
		||||
        android:layout_marginBottom="8dp"
 | 
			
		||||
        android:layout_marginLeft="8dp"
 | 
			
		||||
        android:layout_marginStart="8dp"
 | 
			
		||||
        android:onClick="op"
 | 
			
		||||
        android:text="%"
 | 
			
		||||
        app:layout_constraintBottom_toBottomOf="parent"
 | 
			
		||||
        app:layout_constraintStart_toEndOf="@+id/comma"
 | 
			
		||||
        tools:ignore="HardcodedText" />
 | 
			
		||||
            android:id="@+id/percent"
 | 
			
		||||
            android:layout_width="0dp"
 | 
			
		||||
            android:layout_height="wrap_content"
 | 
			
		||||
            android:layout_marginBottom="8dp"
 | 
			
		||||
            android:layout_marginLeft="8dp"
 | 
			
		||||
            android:layout_marginStart="8dp"
 | 
			
		||||
            android:onClick="op"
 | 
			
		||||
            android:text="%"
 | 
			
		||||
            app:layout_constraintBottom_toBottomOf="parent"
 | 
			
		||||
            app:layout_constraintStart_toEndOf="@+id/comma"
 | 
			
		||||
            tools:ignore="HardcodedText" />
 | 
			
		||||
 | 
			
		||||
    <Button
 | 
			
		||||
        android:id="@+id/equals"
 | 
			
		||||
        android:layout_width="0dp"
 | 
			
		||||
        android:layout_height="0dp"
 | 
			
		||||
        android:layout_marginBottom="8dp"
 | 
			
		||||
        android:layout_marginEnd="8dp"
 | 
			
		||||
        android:layout_marginStart="8dp"
 | 
			
		||||
        android:onClick="op"
 | 
			
		||||
        android:text="="
 | 
			
		||||
        app:layout_constraintBottom_toBottomOf="parent"
 | 
			
		||||
        app:layout_constraintEnd_toEndOf="parent"
 | 
			
		||||
        app:layout_constraintHorizontal_bias="0.0"
 | 
			
		||||
        app:layout_constraintStart_toEndOf="@+id/three"
 | 
			
		||||
        app:layout_constraintTop_toTopOf="@+id/three"
 | 
			
		||||
        tools:ignore="HardcodedText" />
 | 
			
		||||
            android:id="@+id/equals"
 | 
			
		||||
            android:layout_width="0dp"
 | 
			
		||||
            android:layout_height="0dp"
 | 
			
		||||
            android:layout_marginBottom="8dp"
 | 
			
		||||
            android:layout_marginEnd="8dp"
 | 
			
		||||
            android:layout_marginStart="8dp"
 | 
			
		||||
            android:onClick="op"
 | 
			
		||||
            android:text="="
 | 
			
		||||
            app:layout_constraintBottom_toBottomOf="parent"
 | 
			
		||||
            app:layout_constraintEnd_toEndOf="parent"
 | 
			
		||||
            app:layout_constraintHorizontal_bias="0.0"
 | 
			
		||||
            app:layout_constraintStart_toEndOf="@+id/three"
 | 
			
		||||
            app:layout_constraintTop_toTopOf="@+id/three"
 | 
			
		||||
            tools:ignore="HardcodedText" />
 | 
			
		||||
 | 
			
		||||
</androidx.constraintlayout.widget.ConstraintLayout>
 | 
			
		||||
 | 
			
		||||
@ -1,21 +1,32 @@
 | 
			
		||||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 | 
			
		||||
    xmlns:app="http://schemas.android.com/apk/res-auto"
 | 
			
		||||
    android:layout_width="match_parent"
 | 
			
		||||
    android:layout_height="match_parent"
 | 
			
		||||
    android:orientation="vertical">
 | 
			
		||||
 | 
			
		||||
    <androidx.appcompat.widget.Toolbar
 | 
			
		||||
        android:id="@+id/toolbar"
 | 
			
		||||
<LinearLayout
 | 
			
		||||
        xmlns:android="http://schemas.android.com/apk/res/android"
 | 
			
		||||
        xmlns:app="http://schemas.android.com/apk/res-auto"
 | 
			
		||||
        android:layout_width="match_parent"
 | 
			
		||||
        android:layout_height="wrap_content"
 | 
			
		||||
        android:background="?attr/colorPrimary"
 | 
			
		||||
        app:theme="?attr/actionBarTheme" />
 | 
			
		||||
        android:layout_height="match_parent"
 | 
			
		||||
        android:orientation="vertical"
 | 
			
		||||
        android:fitsSystemWindows="true">
 | 
			
		||||
 | 
			
		||||
    <fragment xmlns:android="http://schemas.android.com/apk/res/android"
 | 
			
		||||
        android:id="@+id/fragment_container"
 | 
			
		||||
        class="org.fdroid.fdroid.panic.PanicPreferencesFragment"
 | 
			
		||||
        android:layout_width="match_parent"
 | 
			
		||||
        android:layout_height="match_parent" />
 | 
			
		||||
    <com.google.android.material.appbar.AppBarLayout
 | 
			
		||||
            android:layout_width="match_parent"
 | 
			
		||||
            android:layout_height="wrap_content"
 | 
			
		||||
            android:fitsSystemWindows="true"
 | 
			
		||||
            app:liftOnScroll="true">
 | 
			
		||||
 | 
			
		||||
        <com.google.android.material.appbar.MaterialToolbar
 | 
			
		||||
                android:id="@+id/toolbar"
 | 
			
		||||
                android:layout_width="match_parent"
 | 
			
		||||
                android:layout_height="?attr/actionBarSize"
 | 
			
		||||
                app:title="@string/panic_settings"
 | 
			
		||||
                app:navigationIcon="@drawable/ic_back"
 | 
			
		||||
                style="@style/Widget.MaterialComponents.Toolbar.PrimarySurface" />
 | 
			
		||||
 | 
			
		||||
    </com.google.android.material.appbar.AppBarLayout>
 | 
			
		||||
 | 
			
		||||
    <androidx.fragment.app.FragmentContainerView
 | 
			
		||||
            android:id="@+id/fragment_container"
 | 
			
		||||
            class="org.fdroid.fdroid.panic.PanicPreferencesFragment"
 | 
			
		||||
            android:layout_width="match_parent"
 | 
			
		||||
            android:layout_height="match_parent" />
 | 
			
		||||
 | 
			
		||||
</LinearLayout>
 | 
			
		||||
 | 
			
		||||
@ -5,7 +5,8 @@
 | 
			
		||||
    xmlns:tools="http://schemas.android.com/tools"
 | 
			
		||||
    android:orientation="vertical"
 | 
			
		||||
    android:layout_width="match_parent"
 | 
			
		||||
    android:layout_height="match_parent">
 | 
			
		||||
    android:layout_height="match_parent"
 | 
			
		||||
    android:fitsSystemWindows="true">
 | 
			
		||||
 | 
			
		||||
    <androidx.swiperefreshlayout.widget.SwipeRefreshLayout
 | 
			
		||||
        android:layout_width="match_parent"
 | 
			
		||||
 | 
			
		||||
@ -28,7 +28,6 @@
 | 
			
		||||
        android:layout_marginStart="?attr/listPreferredItemPaddingStart"
 | 
			
		||||
        android:layout_marginTop="6dip"
 | 
			
		||||
        android:layout_alignParentStart="true"
 | 
			
		||||
        android:layout_alignParentLeft="true"
 | 
			
		||||
        tools:src="@drawable/ic_launcher"
 | 
			
		||||
        tools:ignore="ContentDescription" />
 | 
			
		||||
 | 
			
		||||
@ -43,9 +42,7 @@
 | 
			
		||||
        android:layout_centerVertical="true" />
 | 
			
		||||
 | 
			
		||||
    <TwoLineListItem
 | 
			
		||||
        android:layout_toRightOf="@android:id/icon"
 | 
			
		||||
        android:layout_toEndOf="@android:id/icon"
 | 
			
		||||
        android:layout_toLeftOf="@id/checkbox"
 | 
			
		||||
        android:layout_toStartOf="@id/checkbox"
 | 
			
		||||
        android:layout_width="wrap_content"
 | 
			
		||||
        android:layout_height="wrap_content"
 | 
			
		||||
@ -66,7 +63,6 @@
 | 
			
		||||
            android:layout_width="wrap_content"
 | 
			
		||||
            android:layout_height="wrap_content"
 | 
			
		||||
            android:layout_alignStart="@+id/application_label"
 | 
			
		||||
            android:layout_alignLeft="@+id/application_label"
 | 
			
		||||
            android:layout_below="@+id/application_label"
 | 
			
		||||
            android:textAppearance="?android:attr/textAppearanceSmall"
 | 
			
		||||
            tools:text="Application Manager" />
 | 
			
		||||
 | 
			
		||||
@ -1,24 +1,29 @@
 | 
			
		||||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<LinearLayout
 | 
			
		||||
        xmlns:android="http://schemas.android.com/apk/res/android"
 | 
			
		||||
        xmlns:tools="http://schemas.android.com/tools"
 | 
			
		||||
        android:layout_width="match_parent"
 | 
			
		||||
        android:layout_height="match_parent"
 | 
			
		||||
        android:orientation="vertical">
 | 
			
		||||
 | 
			
		||||
    <androidx.appcompat.widget.Toolbar
 | 
			
		||||
            android:id="@+id/toolbar"
 | 
			
		||||
            android:layout_height="wrap_content"
 | 
			
		||||
        xmlns:app="http://schemas.android.com/apk/res-auto"
 | 
			
		||||
        android:orientation="vertical"
 | 
			
		||||
        android:fitsSystemWindows="true">
 | 
			
		||||
    <com.google.android.material.appbar.AppBarLayout
 | 
			
		||||
            android:layout_width="match_parent"
 | 
			
		||||
            android:titleTextAppearance="@style/SwapTheme.Wizard.Text"
 | 
			
		||||
            titleTextAppearance="@style/SwapTheme.Wizard.Text"
 | 
			
		||||
            android:minHeight="?attr/actionBarSize"
 | 
			
		||||
            android:background="?attr/colorPrimary"
 | 
			
		||||
            tools:ignore="UnusedAttribute"/>
 | 
			
		||||
            android:layout_height="wrap_content"
 | 
			
		||||
            android:fitsSystemWindows="true"
 | 
			
		||||
            app:liftOnScroll="true">
 | 
			
		||||
 | 
			
		||||
        <com.google.android.material.appbar.MaterialToolbar
 | 
			
		||||
                android:id="@+id/toolbar"
 | 
			
		||||
                android:layout_width="match_parent"
 | 
			
		||||
                android:layout_height="?attr/actionBarSize"
 | 
			
		||||
                app:navigationIcon="@drawable/ic_back"
 | 
			
		||||
                style="@style/Widget.MaterialComponents.Toolbar.PrimarySurface" />
 | 
			
		||||
 | 
			
		||||
    </com.google.android.material.appbar.AppBarLayout>
 | 
			
		||||
 | 
			
		||||
    <FrameLayout
 | 
			
		||||
            android:id="@+id/container"
 | 
			
		||||
            android:layout_width="fill_parent"
 | 
			
		||||
            android:layout_height="fill_parent"/>
 | 
			
		||||
            android:layout_height="fill_parent" />
 | 
			
		||||
 | 
			
		||||
</LinearLayout>
 | 
			
		||||
@ -3,13 +3,9 @@
 | 
			
		||||
 | 
			
		||||
    <style name="SwapTheme.Wizard" parent="Theme.AppCompat.Light.NoActionBar">
 | 
			
		||||
        <item name="colorButtonNormal">@color/swap_bright_blue</item>
 | 
			
		||||
        <item name="actionButtonStyle">@style/SwapTheme.Wizard.ActionButton</item>
 | 
			
		||||
        <item name="actionBarStyle">@style/Widget.AppCompat.ActionBar.Solid</item>
 | 
			
		||||
    </style>
 | 
			
		||||
 | 
			
		||||
    <style name="SwapTheme.StartSwap" parent="AppThemeLight">
 | 
			
		||||
        <item name="background">@android:color/white</item>
 | 
			
		||||
    </style>
 | 
			
		||||
    <style name="SwapTheme.StartSwap" parent="Theme.App"/>
 | 
			
		||||
 | 
			
		||||
    <style name="SwapTheme.StartSwap.Text" parent="@style/SwapTheme.StartSwap">
 | 
			
		||||
    </style>
 | 
			
		||||
@ -17,10 +13,10 @@
 | 
			
		||||
    <style name="SwapTheme.BluetoothDeviceList" parent="@style/SwapTheme.Wizard">
 | 
			
		||||
    </style>
 | 
			
		||||
 | 
			
		||||
    <style name="SwapTheme.AppList" parent="AppThemeLight">
 | 
			
		||||
    <style name="SwapTheme.AppList" parent="Base.Theme.App">
 | 
			
		||||
    </style>
 | 
			
		||||
 | 
			
		||||
    <style name="SwapTheme.AppList.ListItem" parent="AppThemeLight">
 | 
			
		||||
    <style name="SwapTheme.AppList.ListItem" parent="Theme.App">
 | 
			
		||||
    </style>
 | 
			
		||||
 | 
			
		||||
    <style name="SwapTheme.AppList.SwapSuccessBase">
 | 
			
		||||
 | 
			
		||||
@ -61,7 +61,7 @@
 | 
			
		||||
            android:allowBackup="true"
 | 
			
		||||
            android:fullBackupContent="@xml/backup_rules"
 | 
			
		||||
            android:networkSecurityConfig="@xml/network_security_config"
 | 
			
		||||
            android:theme="@style/AppThemeLight"
 | 
			
		||||
            android:theme="@style/Theme.App"
 | 
			
		||||
            android:supportsRtl="true">
 | 
			
		||||
 | 
			
		||||
        <provider
 | 
			
		||||
@ -131,7 +131,6 @@
 | 
			
		||||
        <activity
 | 
			
		||||
                android:name=".privileged.views.InstallConfirmActivity"
 | 
			
		||||
                android:label="@string/menu_install"
 | 
			
		||||
                android:theme="@style/MinWithDialogBaseThemeLight"
 | 
			
		||||
                android:excludeFromRecents="true"
 | 
			
		||||
                android:parentActivityName=".views.main.MainActivity"
 | 
			
		||||
                android:configChanges="layoutDirection|locale">
 | 
			
		||||
@ -141,8 +140,7 @@
 | 
			
		||||
        </activity>
 | 
			
		||||
        <activity
 | 
			
		||||
                android:name=".privileged.views.UninstallDialogActivity"
 | 
			
		||||
                android:excludeFromRecents="true"
 | 
			
		||||
                android:theme="@style/AppThemeTransparent"/>
 | 
			
		||||
                android:excludeFromRecents="true" />
 | 
			
		||||
        <activity
 | 
			
		||||
                android:name=".views.ManageReposActivity"
 | 
			
		||||
                android:label="@string/menu_manage"
 | 
			
		||||
@ -180,7 +178,6 @@
 | 
			
		||||
        </activity>
 | 
			
		||||
        <activity
 | 
			
		||||
                android:name=".acra.CrashReportActivity"
 | 
			
		||||
                android:theme="@style/AppThemeDark"
 | 
			
		||||
                android:process=":error_report"
 | 
			
		||||
                android:launchMode="singleInstance"
 | 
			
		||||
                android:excludeFromRecents="true"
 | 
			
		||||
@ -546,7 +543,7 @@
 | 
			
		||||
                    android:value=".views.main.MainActivity"/>
 | 
			
		||||
        </activity>
 | 
			
		||||
 | 
			
		||||
        <activity android:name=".AboutActivity" android:theme="@style/Theme.AppCompat.Light.Dialog"/>
 | 
			
		||||
        <activity android:name=".AboutActivity" />
 | 
			
		||||
        <activity android:name=".installer.FileInstallerActivity" android:theme="@style/AppThemeTransparent"/>
 | 
			
		||||
 | 
			
		||||
    </application>
 | 
			
		||||
 | 
			
		||||
@ -10,9 +10,6 @@ public class AboutActivity extends AppCompatActivity {
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    protected void onCreate(@Nullable Bundle savedInstanceState) {
 | 
			
		||||
        FDroidApp fdroidApp = (FDroidApp) getApplication();
 | 
			
		||||
        fdroidApp.applyDialogTheme(this);
 | 
			
		||||
 | 
			
		||||
        super.onCreate(savedInstanceState);
 | 
			
		||||
 | 
			
		||||
        setContentView(R.layout.about);
 | 
			
		||||
 | 
			
		||||
@ -24,7 +24,6 @@
 | 
			
		||||
package org.fdroid.fdroid;
 | 
			
		||||
 | 
			
		||||
import android.annotation.TargetApi;
 | 
			
		||||
import androidx.appcompat.app.AppCompatActivity;
 | 
			
		||||
import android.app.ActivityManager;
 | 
			
		||||
import android.app.ActivityManager.RunningAppProcessInfo;
 | 
			
		||||
import android.app.Application;
 | 
			
		||||
@ -48,8 +47,11 @@ import android.view.WindowManager;
 | 
			
		||||
import android.widget.Toast;
 | 
			
		||||
import androidx.annotation.NonNull;
 | 
			
		||||
import androidx.annotation.Nullable;
 | 
			
		||||
import androidx.appcompat.app.AppCompatActivity;
 | 
			
		||||
import androidx.appcompat.app.AppCompatDelegate;
 | 
			
		||||
import androidx.collection.LongSparseArray;
 | 
			
		||||
import androidx.core.content.ContextCompat;
 | 
			
		||||
 | 
			
		||||
import com.nostra13.universalimageloader.cache.disc.DiskCache;
 | 
			
		||||
import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiskCache;
 | 
			
		||||
import com.nostra13.universalimageloader.cache.disc.impl.ext.LruDiskCache;
 | 
			
		||||
@ -152,30 +154,46 @@ public class FDroidApp extends Application implements androidx.work.Configuratio
 | 
			
		||||
 | 
			
		||||
    private static Theme curTheme = Theme.light;
 | 
			
		||||
 | 
			
		||||
    public void reloadTheme() {
 | 
			
		||||
        curTheme = Preferences.get().getTheme();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void applyTheme(AppCompatActivity activity) {
 | 
			
		||||
        activity.setTheme(getCurThemeResId());
 | 
			
		||||
        setSecureWindow(activity);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static int getCurThemeResId() {
 | 
			
		||||
        switch (curTheme) {
 | 
			
		||||
            case light:
 | 
			
		||||
                return R.style.AppThemeLight;
 | 
			
		||||
            case dark:
 | 
			
		||||
                return R.style.AppThemeDark;
 | 
			
		||||
            case night:
 | 
			
		||||
                return R.style.AppThemeNight;
 | 
			
		||||
            default:
 | 
			
		||||
                return R.style.AppThemeLight;
 | 
			
		||||
    /**
 | 
			
		||||
     * Apply pure black background in dark theme setting. Must be called in every activity's
 | 
			
		||||
     * {@link AppCompatActivity#onCreate()}, before super.onCreate().
 | 
			
		||||
     * @param activity The activity to apply the setting.
 | 
			
		||||
     */
 | 
			
		||||
    public void applyPureBlackBackgroundInDarkTheme(AppCompatActivity activity) {
 | 
			
		||||
        final boolean isPureBlack = Preferences.get().isPureBlack();
 | 
			
		||||
        if (isPureBlack) {
 | 
			
		||||
            activity.setTheme(R.style.Theme_App_Black);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void applyTheme() {
 | 
			
		||||
        curTheme = Preferences.get().getTheme();
 | 
			
		||||
        switch (curTheme) {
 | 
			
		||||
            case dark:
 | 
			
		||||
                AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
 | 
			
		||||
                break;
 | 
			
		||||
            case light:
 | 
			
		||||
                AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
 | 
			
		||||
                break;
 | 
			
		||||
            default:
 | 
			
		||||
                // `Set by Battery Saver` for Q above (inclusive), `Use system default` for Q below
 | 
			
		||||
                // https://medium.com/androiddevelopers/appcompat-v23-2-daynight-d10f90c83e94
 | 
			
		||||
                if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.P) {
 | 
			
		||||
                    AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_AUTO_BATTERY);
 | 
			
		||||
                } else {
 | 
			
		||||
                    AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM);
 | 
			
		||||
                }
 | 
			
		||||
                break;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    //    TODO: ResId no longer exists.
 | 
			
		||||
    public static int getCurThemeResId() {
 | 
			
		||||
        return R.style.Theme_App;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static boolean isAppThemeLight() {
 | 
			
		||||
        return curTheme == Theme.light;
 | 
			
		||||
        return AppCompatDelegate.getDefaultNightMode() == AppCompatDelegate.MODE_NIGHT_NO;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void applyDialogTheme(AppCompatActivity activity) {
 | 
			
		||||
@ -191,35 +209,13 @@ public class FDroidApp extends Application implements androidx.work.Configuratio
 | 
			
		||||
 | 
			
		||||
    private static int getCurDialogThemeResId() {
 | 
			
		||||
        switch (curTheme) {
 | 
			
		||||
            case light:
 | 
			
		||||
                return R.style.MinWithDialogBaseThemeLight;
 | 
			
		||||
            case dark:
 | 
			
		||||
                return R.style.MinWithDialogBaseThemeDark;
 | 
			
		||||
            case night:
 | 
			
		||||
            case dark: case night:
 | 
			
		||||
                return R.style.MinWithDialogBaseThemeDark;
 | 
			
		||||
            default:
 | 
			
		||||
                return R.style.MinWithDialogBaseThemeLight;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Force reload the {@link AppCompatActivity to make theme changes take effect.}
 | 
			
		||||
     * Same as {@link Languages#forceChangeLanguage(AppCompatActivity)}
 | 
			
		||||
     *
 | 
			
		||||
     * @param activity the {@code AppCompatActivity} to force reload
 | 
			
		||||
     */
 | 
			
		||||
    public static void forceChangeTheme(AppCompatActivity activity) {
 | 
			
		||||
        Intent intent = activity.getIntent();
 | 
			
		||||
        if (intent == null) { // when launched as LAUNCHER
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
        intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
 | 
			
		||||
        activity.finish();
 | 
			
		||||
        activity.overridePendingTransition(0, 0);
 | 
			
		||||
        activity.startActivity(intent);
 | 
			
		||||
        activity.overridePendingTransition(0, 0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static void enableBouncyCastle() {
 | 
			
		||||
        Security.addProvider(BOUNCYCASTLE_PROVIDER);
 | 
			
		||||
    }
 | 
			
		||||
@ -393,7 +389,8 @@ public class FDroidApp extends Application implements androidx.work.Configuratio
 | 
			
		||||
 | 
			
		||||
        PRNGFixes.apply();
 | 
			
		||||
 | 
			
		||||
        curTheme = preferences.getTheme();
 | 
			
		||||
        applyTheme();
 | 
			
		||||
 | 
			
		||||
        configureProxy(preferences);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -650,7 +647,7 @@ public class FDroidApp extends Application implements androidx.work.Configuratio
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Put proxy settings (or Tor settings) globally into effect based on whats configured in Preferences.
 | 
			
		||||
     * <p>
 | 
			
		||||
     *
 | 
			
		||||
     * Must be called on App startup and after every proxy configuration change.
 | 
			
		||||
     */
 | 
			
		||||
    public static void configureProxy(Preferences preferences) {
 | 
			
		||||
 | 
			
		||||
@ -39,8 +39,9 @@ public class NfcNotEnabledActivity extends AppCompatActivity {
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void onCreate(Bundle savedInstanceState) {
 | 
			
		||||
        FDroidApp fdroidApp = (FDroidApp) getApplication();
 | 
			
		||||
        fdroidApp.applyPureBlackBackgroundInDarkTheme(this);
 | 
			
		||||
 | 
			
		||||
        ((FDroidApp) getApplication()).applyTheme(this);
 | 
			
		||||
        super.onCreate(savedInstanceState);
 | 
			
		||||
 | 
			
		||||
        final Intent intent = new Intent();
 | 
			
		||||
 | 
			
		||||
@ -87,6 +87,7 @@ public final class Preferences implements SharedPreferences.OnSharedPreferenceCh
 | 
			
		||||
    public static final String PREF_AUTO_DOWNLOAD_INSTALL_UPDATES = "updateAutoDownload";
 | 
			
		||||
    public static final String PREF_UPDATE_NOTIFICATION_ENABLED = "updateNotify";
 | 
			
		||||
    public static final String PREF_THEME = "theme";
 | 
			
		||||
    public static final String PREF_USE_PURE_BLACK_DARK_THEME = "usePureBlackDarkTheme";
 | 
			
		||||
    public static final String PREF_SHOW_INCOMPAT_VERSIONS = "incompatibleVersions";
 | 
			
		||||
    public static final String PREF_SHOW_ANTI_FEATURE_APPS = "showAntiFeatureApps";
 | 
			
		||||
    public static final String PREF_FORCE_TOUCH_APPS = "ignoreTouchscreen";
 | 
			
		||||
@ -151,7 +152,8 @@ public final class Preferences implements SharedPreferences.OnSharedPreferenceCh
 | 
			
		||||
    public enum Theme {
 | 
			
		||||
        light,
 | 
			
		||||
        dark,
 | 
			
		||||
        night,
 | 
			
		||||
        followSystem,
 | 
			
		||||
        night, // Obsolete
 | 
			
		||||
        lightWithDarkActionBar, // Obsolete
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -395,6 +397,10 @@ public final class Preferences implements SharedPreferences.OnSharedPreferenceCh
 | 
			
		||||
        return Theme.valueOf(preferences.getString(Preferences.PREF_THEME, null));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public boolean isPureBlack() {
 | 
			
		||||
        return preferences.getBoolean(Preferences.PREF_USE_PURE_BLACK_DARK_THEME, false);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public boolean isLocalRepoHttpsEnabled() {
 | 
			
		||||
        return false; // disabled until it works well
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -174,9 +174,10 @@ public class InstallConfirmActivity extends AppCompatActivity implements OnCance
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    protected void onCreate(Bundle icicle) {
 | 
			
		||||
        super.onCreate(icicle);
 | 
			
		||||
        FDroidApp fdroidApp = (FDroidApp) getApplication();
 | 
			
		||||
        fdroidApp.applyPureBlackBackgroundInDarkTheme(this);
 | 
			
		||||
 | 
			
		||||
        ((FDroidApp) getApplication()).applyTheme(this);
 | 
			
		||||
        super.onCreate(icicle);
 | 
			
		||||
 | 
			
		||||
        intent = getIntent();
 | 
			
		||||
        Uri uri = intent.getData();
 | 
			
		||||
 | 
			
		||||
@ -45,13 +45,13 @@ import android.widget.Toast;
 | 
			
		||||
import androidx.annotation.Nullable;
 | 
			
		||||
import androidx.appcompat.app.AlertDialog;
 | 
			
		||||
import androidx.appcompat.app.AppCompatActivity;
 | 
			
		||||
import androidx.appcompat.widget.Toolbar;
 | 
			
		||||
import androidx.coordinatorlayout.widget.CoordinatorLayout;
 | 
			
		||||
import androidx.core.content.ContextCompat;
 | 
			
		||||
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
 | 
			
		||||
import androidx.recyclerview.widget.LinearLayoutManager;
 | 
			
		||||
import androidx.recyclerview.widget.RecyclerView;
 | 
			
		||||
 | 
			
		||||
import com.google.android.material.appbar.MaterialToolbar;
 | 
			
		||||
import com.nostra13.universalimageloader.core.DisplayImageOptions;
 | 
			
		||||
import com.nostra13.universalimageloader.core.ImageLoader;
 | 
			
		||||
 | 
			
		||||
@ -106,15 +106,15 @@ public class AppDetailsActivity extends AppCompatActivity
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    protected void onCreate(Bundle savedInstanceState) {
 | 
			
		||||
        fdroidApp = (FDroidApp) getApplication();
 | 
			
		||||
        fdroidApp.applyTheme(this);
 | 
			
		||||
        FDroidApp fdroidApp = (FDroidApp) getApplication();
 | 
			
		||||
        fdroidApp.applyPureBlackBackgroundInDarkTheme(this);
 | 
			
		||||
 | 
			
		||||
        super.onCreate(savedInstanceState);
 | 
			
		||||
        setContentView(R.layout.app_details2);
 | 
			
		||||
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
 | 
			
		||||
        toolbar.setTitle(""); // Nice and clean toolbar
 | 
			
		||||
        toolbar.setNavigationIcon(R.drawable.ic_back);
 | 
			
		||||
        MaterialToolbar toolbar = findViewById(R.id.toolbar);
 | 
			
		||||
        setSupportActionBar(toolbar);
 | 
			
		||||
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
 | 
			
		||||
        getSupportActionBar().setDisplayShowTitleEnabled(false); // clear title
 | 
			
		||||
        supportPostponeEnterTransition();
 | 
			
		||||
 | 
			
		||||
        String packageName = getPackageNameFromIntent(getIntent());
 | 
			
		||||
 | 
			
		||||
@ -29,10 +29,13 @@ import android.view.Menu;
 | 
			
		||||
import android.view.MenuItem;
 | 
			
		||||
import android.widget.TextView;
 | 
			
		||||
import androidx.appcompat.app.AppCompatActivity;
 | 
			
		||||
import androidx.appcompat.widget.Toolbar;
 | 
			
		||||
import androidx.core.app.ShareCompat;
 | 
			
		||||
import org.apache.commons.io.IOUtils;
 | 
			
		||||
import org.fdroid.fdroid.Preferences;
 | 
			
		||||
 | 
			
		||||
import com.google.android.material.appbar.MaterialToolbar;
 | 
			
		||||
 | 
			
		||||
import org.fdroid.fdroid.FDroidApp;
 | 
			
		||||
import org.fdroid.fdroid.R;
 | 
			
		||||
import org.fdroid.fdroid.data.Repo;
 | 
			
		||||
import org.fdroid.fdroid.data.RepoProvider;
 | 
			
		||||
@ -50,17 +53,19 @@ public class InstallHistoryActivity extends AppCompatActivity {
 | 
			
		||||
    public static final String EXTRA_SHOW_FDROID_METRICS = "showFDroidMetrics";
 | 
			
		||||
 | 
			
		||||
    private boolean showingInstallHistory;
 | 
			
		||||
    private Toolbar toolbar;
 | 
			
		||||
    private MaterialToolbar toolbar;
 | 
			
		||||
    private MenuItem showMenuItem;
 | 
			
		||||
    private TextView textView;
 | 
			
		||||
    private String appName;
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    protected void onCreate(Bundle savedInstanceState) {
 | 
			
		||||
        FDroidApp fdroidApp = (FDroidApp) getApplication();
 | 
			
		||||
        fdroidApp.applyPureBlackBackgroundInDarkTheme(this);
 | 
			
		||||
 | 
			
		||||
        super.onCreate(savedInstanceState);
 | 
			
		||||
        setContentView(R.layout.activity_install_history);
 | 
			
		||||
        toolbar = findViewById(R.id.toolbar);
 | 
			
		||||
        toolbar.setTitle(getString(R.string.install_history));
 | 
			
		||||
        setSupportActionBar(toolbar);
 | 
			
		||||
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -40,6 +40,7 @@ import android.text.TextUtils;
 | 
			
		||||
import android.text.TextWatcher;
 | 
			
		||||
import android.util.Log;
 | 
			
		||||
import android.view.Menu;
 | 
			
		||||
import android.view.MenuInflater;
 | 
			
		||||
import android.view.MenuItem;
 | 
			
		||||
import android.view.View;
 | 
			
		||||
import android.widget.AdapterView;
 | 
			
		||||
@ -60,6 +61,9 @@ import androidx.loader.app.LoaderManager;
 | 
			
		||||
import androidx.loader.content.CursorLoader;
 | 
			
		||||
import androidx.loader.content.Loader;
 | 
			
		||||
 | 
			
		||||
import com.google.android.material.appbar.MaterialToolbar;
 | 
			
		||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
 | 
			
		||||
 | 
			
		||||
import org.fdroid.fdroid.AddRepoIntentService;
 | 
			
		||||
import org.fdroid.fdroid.FDroidApp;
 | 
			
		||||
import org.fdroid.fdroid.IndexUpdater;
 | 
			
		||||
@ -96,8 +100,6 @@ public class ManageReposActivity extends AppCompatActivity
 | 
			
		||||
        IS_SWAP
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private Toolbar toolbar;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * True if activity started with an intent such as from QR code. False if
 | 
			
		||||
     * opened from, e.g. the main menu.
 | 
			
		||||
@ -106,15 +108,37 @@ public class ManageReposActivity extends AppCompatActivity
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    protected void onCreate(Bundle savedInstanceState) {
 | 
			
		||||
        FDroidApp fdroidApp = (FDroidApp) getApplication();
 | 
			
		||||
        fdroidApp.applyPureBlackBackgroundInDarkTheme(this);
 | 
			
		||||
 | 
			
		||||
        ((FDroidApp) getApplication()).applyTheme(this);
 | 
			
		||||
        super.onCreate(savedInstanceState);
 | 
			
		||||
 | 
			
		||||
        setContentView(R.layout.repo_list_activity);
 | 
			
		||||
 | 
			
		||||
        toolbar = (Toolbar) findViewById(R.id.toolbar);
 | 
			
		||||
        MaterialToolbar toolbar = findViewById(R.id.toolbar);
 | 
			
		||||
        setSupportActionBar(toolbar);
 | 
			
		||||
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
 | 
			
		||||
        toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
 | 
			
		||||
            @Override
 | 
			
		||||
            public boolean onMenuItemClick(MenuItem menuItem) {
 | 
			
		||||
                if (menuItem.getItemId() == R.id.action_add_repo) {
 | 
			
		||||
                    showAddRepo();
 | 
			
		||||
                    return true;
 | 
			
		||||
                }
 | 
			
		||||
                return false;
 | 
			
		||||
            }
 | 
			
		||||
        });
 | 
			
		||||
        toolbar.setNavigationOnClickListener(new View.OnClickListener() {
 | 
			
		||||
            @Override
 | 
			
		||||
            public void onClick(View v) {
 | 
			
		||||
                Intent upIntent = NavUtils.getParentActivityIntent(ManageReposActivity.this);
 | 
			
		||||
                if (NavUtils.shouldUpRecreateTask(ManageReposActivity.this, upIntent) || isTaskRoot()) {
 | 
			
		||||
                    TaskStackBuilder.create(ManageReposActivity.this).addNextIntentWithParentStack(upIntent)
 | 
			
		||||
                            .startActivities();
 | 
			
		||||
                } else {
 | 
			
		||||
                    NavUtils.navigateUpTo(ManageReposActivity.this, upIntent);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        final ListView repoList = (ListView) findViewById(R.id.list);
 | 
			
		||||
        repoAdapter = new RepoAdapter(this);
 | 
			
		||||
@ -129,6 +153,13 @@ public class ManageReposActivity extends AppCompatActivity
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public boolean onCreateOptionsMenu(Menu menu) {
 | 
			
		||||
        MenuInflater menuInflater = getMenuInflater();
 | 
			
		||||
        menuInflater.inflate(R.menu.manage_repos, menu);
 | 
			
		||||
        return true;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    protected void onResume() {
 | 
			
		||||
        super.onResume();
 | 
			
		||||
@ -154,32 +185,6 @@ public class ManageReposActivity extends AppCompatActivity
 | 
			
		||||
        super.finish();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public boolean onCreateOptionsMenu(Menu menu) {
 | 
			
		||||
        toolbar.inflateMenu(R.menu.manage_repos);
 | 
			
		||||
        return super.onCreateOptionsMenu(menu);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public boolean onOptionsItemSelected(MenuItem item) {
 | 
			
		||||
        switch (item.getItemId()) {
 | 
			
		||||
            case R.id.action_add_repo:
 | 
			
		||||
                showAddRepo();
 | 
			
		||||
                return true;
 | 
			
		||||
            case android.R.id.home:
 | 
			
		||||
                Intent upIntent = NavUtils.getParentActivityIntent(this);
 | 
			
		||||
                if (NavUtils.shouldUpRecreateTask(this, upIntent) || isTaskRoot()) {
 | 
			
		||||
                    TaskStackBuilder.create(this)
 | 
			
		||||
                            .addNextIntentWithParentStack(upIntent)
 | 
			
		||||
                            .startActivities();
 | 
			
		||||
                } else {
 | 
			
		||||
                    NavUtils.navigateUpTo(this, upIntent);
 | 
			
		||||
                }
 | 
			
		||||
                return true;
 | 
			
		||||
        }
 | 
			
		||||
        return super.onOptionsItemSelected(item);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public String getPrimaryClipAsText() {
 | 
			
		||||
        CharSequence text = null;
 | 
			
		||||
        ClipboardManager clipboardManager = ContextCompat.getSystemService(this, ClipboardManager.class);
 | 
			
		||||
@ -208,7 +213,7 @@ public class ManageReposActivity extends AppCompatActivity
 | 
			
		||||
        String text = getPrimaryClipAsText();
 | 
			
		||||
        String fingerprint = null;
 | 
			
		||||
        String username = null;
 | 
			
		||||
        String password = null;
 | 
			
		||||
        StringBuilder password = null;
 | 
			
		||||
        if (!TextUtils.isEmpty(text)) {
 | 
			
		||||
            try {
 | 
			
		||||
                new URL(text);
 | 
			
		||||
@ -224,9 +229,9 @@ public class ManageReposActivity extends AppCompatActivity
 | 
			
		||||
                    String[] userInfoTokens = userInfo.split(":");
 | 
			
		||||
                    if (userInfoTokens.length >= 2) {
 | 
			
		||||
                        username = userInfoTokens[0];
 | 
			
		||||
                        password = userInfoTokens[1];
 | 
			
		||||
                        password = new StringBuilder(userInfoTokens[1]);
 | 
			
		||||
                        for (int i = 2; i < userInfoTokens.length; i++) {
 | 
			
		||||
                            password += ":" + userInfoTokens[i];
 | 
			
		||||
                            password.append(":").append(userInfoTokens[i]);
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
@ -240,7 +245,7 @@ public class ManageReposActivity extends AppCompatActivity
 | 
			
		||||
        if (TextUtils.isEmpty(text)) {
 | 
			
		||||
            text = DEFAULT_NEW_REPO_TEXT;
 | 
			
		||||
        }
 | 
			
		||||
        showAddRepo(text, fingerprint, username, password);
 | 
			
		||||
        showAddRepo(text, fingerprint, username, password != null ? password.toString() : null);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void showAddRepo(String newAddress, String newFingerprint, String username, String password) {
 | 
			
		||||
@ -289,22 +294,21 @@ public class ManageReposActivity extends AppCompatActivity
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            final View view = getLayoutInflater().inflate(R.layout.addrepo, null);
 | 
			
		||||
            addRepoDialog = new AlertDialog.Builder(context).setView(view).create();
 | 
			
		||||
            MaterialAlertDialogBuilder addRepoDialogBuilder = new MaterialAlertDialogBuilder(context);
 | 
			
		||||
            addRepoDialogBuilder.setView(view);
 | 
			
		||||
            final EditText uriEditText = (EditText) view.findViewById(R.id.edit_uri);
 | 
			
		||||
            final EditText fingerprintEditText = (EditText) view.findViewById(R.id.edit_fingerprint);
 | 
			
		||||
 | 
			
		||||
            addRepoDialog.setTitle(R.string.repo_add_title);
 | 
			
		||||
            addRepoDialog.setButton(DialogInterface.BUTTON_NEGATIVE,
 | 
			
		||||
                    getString(R.string.cancel),
 | 
			
		||||
                    new DialogInterface.OnClickListener() {
 | 
			
		||||
                        @Override
 | 
			
		||||
                        public void onClick(DialogInterface dialog, int which) {
 | 
			
		||||
                            dialog.dismiss();
 | 
			
		||||
                            if (finishAfterAddingRepo) {
 | 
			
		||||
                                ManageReposActivity.this.finish();
 | 
			
		||||
                            }
 | 
			
		||||
                        }
 | 
			
		||||
                    });
 | 
			
		||||
            addRepoDialogBuilder.setTitle(R.string.repo_add_title);
 | 
			
		||||
            addRepoDialogBuilder.setNegativeButton(getString(R.string.cancel), new DialogInterface.OnClickListener() {
 | 
			
		||||
                @Override
 | 
			
		||||
                public void onClick(DialogInterface dialog, int which) {
 | 
			
		||||
                    dialog.dismiss();
 | 
			
		||||
                    if (finishAfterAddingRepo) {
 | 
			
		||||
                        finish();
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            });
 | 
			
		||||
 | 
			
		||||
            // HACK:
 | 
			
		||||
            // After adding a new repo, need to show feedback to the user.
 | 
			
		||||
@ -319,15 +323,14 @@ public class ManageReposActivity extends AppCompatActivity
 | 
			
		||||
            // hang around so we can show further info on it.
 | 
			
		||||
            //
 | 
			
		||||
            // Thus, the hack described at http://stackoverflow.com/a/15619098 is implemented.
 | 
			
		||||
            addRepoDialog.setButton(DialogInterface.BUTTON_POSITIVE,
 | 
			
		||||
                    getString(R.string.repo_add_add),
 | 
			
		||||
            addRepoDialogBuilder.setPositiveButton(getString(R.string.repo_add_add),
 | 
			
		||||
                    new DialogInterface.OnClickListener() {
 | 
			
		||||
                        @Override
 | 
			
		||||
                        public void onClick(DialogInterface dialog, int which) {
 | 
			
		||||
                        }
 | 
			
		||||
                    });
 | 
			
		||||
 | 
			
		||||
            addRepoDialog.show();
 | 
			
		||||
            addRepoDialog = addRepoDialogBuilder.show();
 | 
			
		||||
 | 
			
		||||
            // This must be *after* addRepoDialog.show() otherwise getButtion() returns null:
 | 
			
		||||
            // https://code.google.com/p/android/issues/detail?id=6360
 | 
			
		||||
 | 
			
		||||
@ -33,8 +33,11 @@ import android.content.pm.PackageManager;
 | 
			
		||||
import android.os.Build;
 | 
			
		||||
import android.os.Bundle;
 | 
			
		||||
import android.text.TextUtils;
 | 
			
		||||
import android.view.View;
 | 
			
		||||
import android.view.WindowManager;
 | 
			
		||||
import android.widget.Toast;
 | 
			
		||||
import android.widget.TextView;
 | 
			
		||||
 | 
			
		||||
import androidx.appcompat.app.AppCompatActivity;
 | 
			
		||||
import androidx.preference.CheckBoxPreference;
 | 
			
		||||
import androidx.preference.EditTextPreference;
 | 
			
		||||
@ -44,10 +47,13 @@ import androidx.preference.PreferenceCategory;
 | 
			
		||||
import androidx.preference.PreferenceFragmentCompat;
 | 
			
		||||
import androidx.preference.PreferenceGroup;
 | 
			
		||||
import androidx.preference.SeekBarPreference;
 | 
			
		||||
import androidx.preference.SwitchPreference;
 | 
			
		||||
import androidx.preference.SwitchPreferenceCompat;
 | 
			
		||||
import androidx.recyclerview.widget.LinearSmoothScroller;
 | 
			
		||||
import androidx.recyclerview.widget.RecyclerView;
 | 
			
		||||
import info.guardianproject.netcipher.proxy.OrbotHelper;
 | 
			
		||||
 | 
			
		||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
 | 
			
		||||
 | 
			
		||||
import org.fdroid.fdroid.FDroidApp;
 | 
			
		||||
import org.fdroid.fdroid.Languages;
 | 
			
		||||
import org.fdroid.fdroid.Preferences;
 | 
			
		||||
@ -72,6 +78,7 @@ public class PreferencesFragment extends PreferenceFragmentCompat
 | 
			
		||||
            Preferences.PREF_SHOW_ANTI_FEATURE_APPS,
 | 
			
		||||
            Preferences.PREF_SHOW_INCOMPAT_VERSIONS,
 | 
			
		||||
            Preferences.PREF_THEME,
 | 
			
		||||
            Preferences.PREF_USE_PURE_BLACK_DARK_THEME,
 | 
			
		||||
            Preferences.PREF_FORCE_TOUCH_APPS,
 | 
			
		||||
            Preferences.PREF_LOCAL_REPO_NAME,
 | 
			
		||||
            Preferences.PREF_LANGUAGE,
 | 
			
		||||
@ -99,8 +106,8 @@ public class PreferencesFragment extends PreferenceFragmentCompat
 | 
			
		||||
    private LiveSeekBarPreference overWifiSeekBar;
 | 
			
		||||
    private LiveSeekBarPreference overDataSeekBar;
 | 
			
		||||
    private LiveSeekBarPreference updateIntervalSeekBar;
 | 
			
		||||
    private SwitchPreference enableProxyCheckPref;
 | 
			
		||||
    private SwitchPreference useTorCheckPref;
 | 
			
		||||
    private SwitchPreferenceCompat enableProxyCheckPref;
 | 
			
		||||
    private SwitchPreferenceCompat useTorCheckPref;
 | 
			
		||||
    private Preference updateAutoDownloadPref;
 | 
			
		||||
    private CheckBoxPreference keepInstallHistoryPref;
 | 
			
		||||
    private CheckBoxPreference sendToFDroidMetricsPref;
 | 
			
		||||
@ -121,6 +128,12 @@ public class PreferencesFragment extends PreferenceFragmentCompat
 | 
			
		||||
        addPreferencesFromResource(R.xml.preferences);
 | 
			
		||||
        otherPrefGroup = (PreferenceGroup) findPreference("pref_category_other");
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        Preference aboutPreference = findPreference("pref_about");
 | 
			
		||||
        if (aboutPreference != null) {
 | 
			
		||||
            aboutPreference.setOnPreferenceClickListener(aboutPrefClickedListener);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        keepInstallHistoryPref = (CheckBoxPreference) findPreference(Preferences.PREF_KEEP_INSTALL_HISTORY);
 | 
			
		||||
        sendToFDroidMetricsPref = findPreference(Preferences.PREF_SEND_TO_FDROID_METRICS);
 | 
			
		||||
        sendToFDroidMetricsPref.setEnabled(keepInstallHistoryPref.isChecked());
 | 
			
		||||
@ -132,9 +145,9 @@ public class PreferencesFragment extends PreferenceFragmentCompat
 | 
			
		||||
            installHistoryPref.setTitle(R.string.install_history);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        useTorCheckPref = (SwitchPreference) findPreference(Preferences.PREF_USE_TOR);
 | 
			
		||||
        useTorCheckPref = (SwitchPreferenceCompat) findPreference(Preferences.PREF_USE_TOR);
 | 
			
		||||
        useTorCheckPref.setOnPreferenceChangeListener(useTorChangedListener);
 | 
			
		||||
        enableProxyCheckPref = (SwitchPreference) findPreference(Preferences.PREF_ENABLE_PROXY);
 | 
			
		||||
        enableProxyCheckPref = (SwitchPreferenceCompat) findPreference(Preferences.PREF_ENABLE_PROXY);
 | 
			
		||||
        enableProxyCheckPref.setOnPreferenceChangeListener(proxyEnabledChangedListener);
 | 
			
		||||
        updateAutoDownloadPref = findPreference(Preferences.PREF_AUTO_DOWNLOAD_INSTALL_UPDATES);
 | 
			
		||||
 | 
			
		||||
@ -269,9 +282,17 @@ public class PreferencesFragment extends PreferenceFragmentCompat
 | 
			
		||||
                if (changing) {
 | 
			
		||||
                    AppCompatActivity activity = (AppCompatActivity) getActivity();
 | 
			
		||||
                    FDroidApp fdroidApp = (FDroidApp) activity.getApplication();
 | 
			
		||||
                    fdroidApp.reloadTheme();
 | 
			
		||||
                    fdroidApp.applyTheme(activity);
 | 
			
		||||
                    FDroidApp.forceChangeTheme(activity);
 | 
			
		||||
                    fdroidApp.applyTheme();
 | 
			
		||||
                }
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            case Preferences.PREF_USE_PURE_BLACK_DARK_THEME:
 | 
			
		||||
                if (changing) {
 | 
			
		||||
                    AppCompatActivity activity = (AppCompatActivity) getActivity();
 | 
			
		||||
                    // Theme will be applied upon activity creation
 | 
			
		||||
                    if (activity != null) {
 | 
			
		||||
                        activity.recreate();
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
@ -349,7 +370,7 @@ public class PreferencesFragment extends PreferenceFragmentCompat
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            case Preferences.PREF_ENABLE_PROXY:
 | 
			
		||||
                SwitchPreference checkPref = (SwitchPreference) findPreference(key);
 | 
			
		||||
                SwitchPreferenceCompat checkPref = (SwitchPreferenceCompat) findPreference(key);
 | 
			
		||||
                checkPref.setSummary(R.string.enable_proxy_summary);
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
@ -400,6 +421,31 @@ public class PreferencesFragment extends PreferenceFragmentCompat
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * About dialog click listener
 | 
			
		||||
     * <p>
 | 
			
		||||
     * TODO: this might need to be changed when updated to the new preference pattern
 | 
			
		||||
     */
 | 
			
		||||
 | 
			
		||||
    private final Preference.OnPreferenceClickListener aboutPrefClickedListener =
 | 
			
		||||
            new Preference.OnPreferenceClickListener() {
 | 
			
		||||
                @Override
 | 
			
		||||
                public boolean onPreferenceClick(Preference preference) {
 | 
			
		||||
                    final View view = getLayoutInflater().inflate(R.layout.about, null);
 | 
			
		||||
                    final Context context = requireContext();
 | 
			
		||||
 | 
			
		||||
                    String versionName = Utils.getVersionName(context);
 | 
			
		||||
                    if (versionName != null) {
 | 
			
		||||
                        ((TextView) view.findViewById(R.id.version)).setText(versionName);
 | 
			
		||||
                    }
 | 
			
		||||
                    new MaterialAlertDialogBuilder(context)
 | 
			
		||||
                            .setView(view)
 | 
			
		||||
                            .setPositiveButton(R.string.ok, null)
 | 
			
		||||
                            .show();
 | 
			
		||||
                    return true;
 | 
			
		||||
                }
 | 
			
		||||
            };
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Initializes SystemInstaller preference, which can only be enabled when F-Droid is installed as a system-app
 | 
			
		||||
     */
 | 
			
		||||
 | 
			
		||||
@ -29,13 +29,14 @@ import android.widget.Toast;
 | 
			
		||||
import androidx.annotation.NonNull;
 | 
			
		||||
import androidx.appcompat.app.AlertDialog;
 | 
			
		||||
import androidx.appcompat.app.AppCompatActivity;
 | 
			
		||||
import androidx.appcompat.widget.Toolbar;
 | 
			
		||||
import androidx.core.app.NavUtils;
 | 
			
		||||
import androidx.core.content.ContextCompat;
 | 
			
		||||
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
 | 
			
		||||
import androidx.recyclerview.widget.LinearLayoutManager;
 | 
			
		||||
import androidx.recyclerview.widget.RecyclerView;
 | 
			
		||||
 | 
			
		||||
import com.google.android.material.appbar.MaterialToolbar;
 | 
			
		||||
 | 
			
		||||
import org.fdroid.fdroid.FDroidApp;
 | 
			
		||||
import org.fdroid.fdroid.NfcHelper;
 | 
			
		||||
import org.fdroid.fdroid.NfcNotEnabledActivity;
 | 
			
		||||
@ -103,13 +104,14 @@ public class RepoDetailsActivity extends AppCompatActivity {
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    protected void onCreate(Bundle savedInstanceState) {
 | 
			
		||||
        FDroidApp fdroidApp = (FDroidApp) getApplication();
 | 
			
		||||
        fdroidApp.applyPureBlackBackgroundInDarkTheme(this);
 | 
			
		||||
 | 
			
		||||
        ((FDroidApp) getApplication()).applyTheme(this);
 | 
			
		||||
        super.onCreate(savedInstanceState);
 | 
			
		||||
 | 
			
		||||
        setContentView(R.layout.activity_repo_details);
 | 
			
		||||
 | 
			
		||||
        Toolbar toolbar = findViewById(R.id.toolbar);
 | 
			
		||||
        MaterialToolbar toolbar = findViewById(R.id.toolbar);
 | 
			
		||||
        setSupportActionBar(toolbar);
 | 
			
		||||
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -49,7 +49,7 @@ public class ScreenShotsActivity extends AppCompatActivity {
 | 
			
		||||
    @Override
 | 
			
		||||
    protected void onCreate(Bundle savedInstanceState) {
 | 
			
		||||
        FDroidApp fdroidApp = (FDroidApp) getApplication();
 | 
			
		||||
        fdroidApp.applyTheme(this);
 | 
			
		||||
        fdroidApp.applyPureBlackBackgroundInDarkTheme(this);
 | 
			
		||||
 | 
			
		||||
        super.onCreate(savedInstanceState);
 | 
			
		||||
        setContentView(R.layout.activity_screenshots);
 | 
			
		||||
 | 
			
		||||
@ -87,7 +87,9 @@ public class AppListActivity extends AppCompatActivity implements LoaderManager.
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    protected void onCreate(@Nullable Bundle savedInstanceState) {
 | 
			
		||||
        ((FDroidApp) getApplication()).applyTheme(this);
 | 
			
		||||
        FDroidApp fdroidApp = (FDroidApp) getApplication();
 | 
			
		||||
        fdroidApp.applyPureBlackBackgroundInDarkTheme(this);
 | 
			
		||||
 | 
			
		||||
        super.onCreate(savedInstanceState);
 | 
			
		||||
 | 
			
		||||
        setContentView(R.layout.activity_app_list);
 | 
			
		||||
 | 
			
		||||
@ -21,19 +21,22 @@ package org.fdroid.fdroid.views.installed;
 | 
			
		||||
 | 
			
		||||
import android.database.Cursor;
 | 
			
		||||
import android.os.Bundle;
 | 
			
		||||
import androidx.annotation.NonNull;
 | 
			
		||||
import androidx.loader.app.LoaderManager;
 | 
			
		||||
import androidx.core.app.ShareCompat;
 | 
			
		||||
import androidx.loader.content.CursorLoader;
 | 
			
		||||
import androidx.loader.content.Loader;
 | 
			
		||||
import androidx.appcompat.app.AppCompatActivity;
 | 
			
		||||
import androidx.recyclerview.widget.LinearLayoutManager;
 | 
			
		||||
import androidx.recyclerview.widget.RecyclerView;
 | 
			
		||||
import androidx.appcompat.widget.Toolbar;
 | 
			
		||||
import android.view.Menu;
 | 
			
		||||
import android.view.MenuItem;
 | 
			
		||||
import android.view.View;
 | 
			
		||||
import android.widget.TextView;
 | 
			
		||||
 | 
			
		||||
import androidx.annotation.NonNull;
 | 
			
		||||
import androidx.appcompat.app.AppCompatActivity;
 | 
			
		||||
import androidx.core.app.ShareCompat;
 | 
			
		||||
import androidx.loader.app.LoaderManager;
 | 
			
		||||
import androidx.loader.content.CursorLoader;
 | 
			
		||||
import androidx.loader.content.Loader;
 | 
			
		||||
import androidx.recyclerview.widget.LinearLayoutManager;
 | 
			
		||||
import androidx.recyclerview.widget.RecyclerView;
 | 
			
		||||
 | 
			
		||||
import com.google.android.material.appbar.MaterialToolbar;
 | 
			
		||||
 | 
			
		||||
import org.fdroid.fdroid.FDroidApp;
 | 
			
		||||
import org.fdroid.fdroid.R;
 | 
			
		||||
import org.fdroid.fdroid.data.App;
 | 
			
		||||
@ -48,14 +51,14 @@ public class InstalledAppsActivity extends AppCompatActivity implements LoaderMa
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    protected void onCreate(Bundle savedInstanceState) {
 | 
			
		||||
        FDroidApp fdroidApp = (FDroidApp) getApplication();
 | 
			
		||||
        fdroidApp.applyPureBlackBackgroundInDarkTheme(this);
 | 
			
		||||
 | 
			
		||||
        ((FDroidApp) getApplication()).applyTheme(this);
 | 
			
		||||
        super.onCreate(savedInstanceState);
 | 
			
		||||
 | 
			
		||||
        setContentView(R.layout.installed_apps_layout);
 | 
			
		||||
 | 
			
		||||
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
 | 
			
		||||
        toolbar.setTitle(getString(R.string.installed_apps__activity_title));
 | 
			
		||||
        MaterialToolbar toolbar = findViewById(R.id.toolbar);
 | 
			
		||||
        setSupportActionBar(toolbar);
 | 
			
		||||
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -40,6 +40,7 @@ import android.widget.Toast;
 | 
			
		||||
import androidx.annotation.NonNull;
 | 
			
		||||
import androidx.annotation.Nullable;
 | 
			
		||||
import androidx.appcompat.app.AppCompatActivity;
 | 
			
		||||
import androidx.appcompat.app.AppCompatDelegate;
 | 
			
		||||
import androidx.core.content.ContextCompat;
 | 
			
		||||
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
 | 
			
		||||
import androidx.recyclerview.widget.LinearLayoutManager;
 | 
			
		||||
@ -109,7 +110,9 @@ public class MainActivity extends AppCompatActivity implements BottomNavigationB
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    protected void onCreate(@Nullable Bundle savedInstanceState) {
 | 
			
		||||
        ((FDroidApp) getApplication()).applyTheme(this);
 | 
			
		||||
        FDroidApp fdroidApp = (FDroidApp) getApplication();
 | 
			
		||||
        fdroidApp.applyPureBlackBackgroundInDarkTheme(this);
 | 
			
		||||
 | 
			
		||||
        super.onCreate(savedInstanceState);
 | 
			
		||||
 | 
			
		||||
        setContentView(R.layout.activity_main);
 | 
			
		||||
@ -457,12 +460,10 @@ public class MainActivity extends AppCompatActivity implements BottomNavigationB
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private int getBottomNavigationBackgroundColorResId() {
 | 
			
		||||
        switch (FDroidApp.getCurThemeResId()) {
 | 
			
		||||
            case R.style.AppThemeNight:
 | 
			
		||||
                return R.color.fdroid_night;
 | 
			
		||||
            default:
 | 
			
		||||
                return R.color.fdroid_blue;
 | 
			
		||||
        if (AppCompatDelegate.getDefaultNightMode() == AppCompatDelegate.MODE_NIGHT_YES) {
 | 
			
		||||
            return R.color.fdroid_night;
 | 
			
		||||
        }
 | 
			
		||||
        return R.color.fdroid_blue;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private static class NonScrollingHorizontalLayoutManager extends LinearLayoutManager {
 | 
			
		||||
 | 
			
		||||
@ -1,10 +0,0 @@
 | 
			
		||||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
 | 
			
		||||
    android:color="#fff">
 | 
			
		||||
    <item>
 | 
			
		||||
        <shape android:shape="rectangle">
 | 
			
		||||
            <corners android:radius="24dp" />
 | 
			
		||||
            <solid android:color="@color/fdroid_blue" />
 | 
			
		||||
        </shape>
 | 
			
		||||
    </item>
 | 
			
		||||
</ripple>
 | 
			
		||||
@ -1,11 +0,0 @@
 | 
			
		||||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
 | 
			
		||||
    android:color="@color/fdroid_blue">
 | 
			
		||||
    <item>
 | 
			
		||||
        <shape android:shape="rectangle">
 | 
			
		||||
            <corners android:radius="24dp" />
 | 
			
		||||
            <solid android:color="#fff" />
 | 
			
		||||
            <stroke android:color="@color/fdroid_blue" android:width="2dp" />
 | 
			
		||||
        </shape>
 | 
			
		||||
    </item>
 | 
			
		||||
</ripple>
 | 
			
		||||
@ -1,27 +0,0 @@
 | 
			
		||||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
 | 
			
		||||
    <item android:state_pressed="true">
 | 
			
		||||
        <shape android:shape="rectangle">
 | 
			
		||||
            <corners android:radius="24dp" />
 | 
			
		||||
            <solid android:color="@color/fdroid_blue_dark" />
 | 
			
		||||
        </shape>
 | 
			
		||||
    </item>
 | 
			
		||||
    <item android:state_checked="true">
 | 
			
		||||
        <shape android:shape="rectangle">
 | 
			
		||||
            <corners android:radius="24dp" />
 | 
			
		||||
            <solid android:color="@color/fdroid_blue_dark" />
 | 
			
		||||
        </shape>
 | 
			
		||||
    </item>
 | 
			
		||||
    <item android:state_enabled="false">
 | 
			
		||||
        <shape android:shape="rectangle">
 | 
			
		||||
            <corners android:radius="24dp" />
 | 
			
		||||
            <solid android:color="@color/fdroid_blue_dark" />
 | 
			
		||||
        </shape>
 | 
			
		||||
    </item>
 | 
			
		||||
    <item>
 | 
			
		||||
        <shape android:shape="rectangle">
 | 
			
		||||
            <corners android:radius="24dp" />
 | 
			
		||||
            <solid android:color="@color/fdroid_blue" />
 | 
			
		||||
        </shape>
 | 
			
		||||
    </item>
 | 
			
		||||
</selector>
 | 
			
		||||
@ -1,28 +0,0 @@
 | 
			
		||||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
 | 
			
		||||
    <item android:state_pressed="true">
 | 
			
		||||
        <shape android:shape="rectangle">
 | 
			
		||||
            <corners android:radius="24dp" />
 | 
			
		||||
            <solid android:color="@color/fdroid_blue" />
 | 
			
		||||
        </shape>
 | 
			
		||||
    </item>
 | 
			
		||||
    <item android:state_checked="true">
 | 
			
		||||
        <shape android:shape="rectangle">
 | 
			
		||||
            <corners android:radius="24dp" />
 | 
			
		||||
            <solid android:color="@color/fdroid_blue" />
 | 
			
		||||
        </shape>
 | 
			
		||||
    </item>
 | 
			
		||||
    <item android:state_enabled="false">
 | 
			
		||||
        <shape android:shape="rectangle">
 | 
			
		||||
            <corners android:radius="24dp" />
 | 
			
		||||
            <solid android:color="@color/fdroid_blue" />
 | 
			
		||||
        </shape>
 | 
			
		||||
    </item>
 | 
			
		||||
    <item>
 | 
			
		||||
        <shape android:shape="rectangle">
 | 
			
		||||
            <corners android:radius="24dp" />
 | 
			
		||||
            <solid android:color="@android:color/white" />
 | 
			
		||||
            <stroke android:color="@color/fdroid_blue" android:width="2dp" />
 | 
			
		||||
        </shape>
 | 
			
		||||
    </item>
 | 
			
		||||
</selector>
 | 
			
		||||
@ -1,5 +0,0 @@
 | 
			
		||||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
 | 
			
		||||
    android:shape="rectangle">
 | 
			
		||||
    <solid android:color="#262627" />
 | 
			
		||||
</shape>
 | 
			
		||||
							
								
								
									
										10
									
								
								app/src/main/res/drawable/ic_close.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								app/src/main/res/drawable/ic_close.xml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,10 @@
 | 
			
		||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
 | 
			
		||||
    android:width="24dp"
 | 
			
		||||
    android:height="24dp"
 | 
			
		||||
    android:viewportWidth="24"
 | 
			
		||||
    android:viewportHeight="24"
 | 
			
		||||
    android:tint="?attr/colorControlNormal">
 | 
			
		||||
  <path
 | 
			
		||||
      android:fillColor="#ffffffff"
 | 
			
		||||
      android:pathData="M18.3,5.71c-0.39,-0.39 -1.02,-0.39 -1.41,0L12,10.59 7.11,5.7c-0.39,-0.39 -1.02,-0.39 -1.41,0 -0.39,0.39 -0.39,1.02 0,1.41L10.59,12 5.7,16.89c-0.39,0.39 -0.39,1.02 0,1.41 0.39,0.39 1.02,0.39 1.41,0L12,13.41l4.89,4.89c0.39,0.39 1.02,0.39 1.41,0 0.39,-0.39 0.39,-1.02 0,-1.41L13.41,12l4.89,-4.89c0.38,-0.38 0.38,-1.02 0,-1.4z"/>
 | 
			
		||||
</vector>
 | 
			
		||||
@ -1,10 +0,0 @@
 | 
			
		||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
 | 
			
		||||
    android:width="24dp"
 | 
			
		||||
    android:height="24dp"
 | 
			
		||||
    android:viewportWidth="24"
 | 
			
		||||
    android:viewportHeight="24"
 | 
			
		||||
    android:tint="?attr/colorControlNormal">
 | 
			
		||||
  <path
 | 
			
		||||
      android:fillColor="#FFFFFF"
 | 
			
		||||
      android:pathData="M12,8c1.1,0 2,-0.9 2,-2s-0.9,-2 -2,-2 -2,0.9 -2,2 0.9,2 2,2zM12,10c-1.1,0 -2,0.9 -2,2s0.9,2 2,2 2,-0.9 2,-2 -0.9,-2 -2,-2zM12,16c-1.1,0 -2,0.9 -2,2s0.9,2 2,2 2,-0.9 2,-2 -0.9,-2 -2,-2z"/>
 | 
			
		||||
</vector>
 | 
			
		||||
@ -4,7 +4,7 @@
 | 
			
		||||
    android:tint="?attr/colorControlNormal"
 | 
			
		||||
    android:viewportWidth="24"
 | 
			
		||||
    android:viewportHeight="24">
 | 
			
		||||
    <path
 | 
			
		||||
        android:fillColor="#FFFFFF"
 | 
			
		||||
        android:pathData="M15.5,14h-0.79l-0.28,-0.27C15.41,12.59 16,11.11 16,9.5 16,5.91 13.09,3 9.5,3S3,5.91 3,9.5 5.91,16 9.5,16c1.61,0 3.09,-0.59 4.23,-1.57l0.27,0.28v0.79l5,4.99L20.49,19l-4.99,-5zM9.5,14C7.01,14 5,11.99 5,9.5S7.01,5 9.5,5 14,7.01 14,9.5 11.99,14 9.5,14z" />
 | 
			
		||||
  <path
 | 
			
		||||
      android:fillColor="#FFFFFF"
 | 
			
		||||
      android:pathData="M15.5,14h-0.79l-0.28,-0.27c1.2,-1.4 1.82,-3.31 1.48,-5.34 -0.47,-2.78 -2.79,-5 -5.59,-5.34 -4.23,-0.52 -7.79,3.04 -7.27,7.27 0.34,2.8 2.56,5.12 5.34,5.59 2.03,0.34 3.94,-0.28 5.34,-1.48l0.27,0.28v0.79l4.25,4.25c0.41,0.41 1.08,0.41 1.49,0 0.41,-0.41 0.41,-1.08 0,-1.49L15.5,14zM9.5,14C7.01,14 5,11.99 5,9.5S7.01,5 9.5,5 14,7.01 14,9.5 11.99,14 9.5,14z" />
 | 
			
		||||
</vector>
 | 
			
		||||
 | 
			
		||||
@ -1,10 +0,0 @@
 | 
			
		||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
 | 
			
		||||
    android:width="24dp"
 | 
			
		||||
    android:height="24dp"
 | 
			
		||||
    android:tint="?attr/colorControlNormal"
 | 
			
		||||
    android:viewportWidth="24.0"
 | 
			
		||||
    android:viewportHeight="24.0">
 | 
			
		||||
    <path
 | 
			
		||||
        android:fillColor="#FF000000"
 | 
			
		||||
        android:pathData="M1,21h22L12,2 1,21zM13,18h-2v-2h2v2zM13,14h-2v-4h2v4z" />
 | 
			
		||||
</vector>
 | 
			
		||||
@ -1,10 +0,0 @@
 | 
			
		||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
 | 
			
		||||
    android:width="24dp"
 | 
			
		||||
    android:height="24dp"
 | 
			
		||||
    android:tint="?attr/colorControlNormal"
 | 
			
		||||
    android:viewportWidth="24.0"
 | 
			
		||||
    android:viewportHeight="24.0">
 | 
			
		||||
    <path
 | 
			
		||||
        android:fillColor="#FFFFFFFF"
 | 
			
		||||
        android:pathData="M1,21h22L12,2 1,21zM13,18h-2v-2h2v2zM13,14h-2v-4h2v4z" />
 | 
			
		||||
</vector>
 | 
			
		||||
							
								
								
									
										62
									
								
								app/src/main/res/layout-v21/app_details2.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								app/src/main/res/layout-v21/app_details2.xml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,62 @@
 | 
			
		||||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<androidx.coordinatorlayout.widget.CoordinatorLayout
 | 
			
		||||
        xmlns:android="http://schemas.android.com/apk/res/android"
 | 
			
		||||
        xmlns:app="http://schemas.android.com/apk/res-auto"
 | 
			
		||||
        xmlns:tools="http://schemas.android.com/tools"
 | 
			
		||||
        android:layout_width="match_parent"
 | 
			
		||||
        android:layout_height="match_parent"
 | 
			
		||||
        tools:context="org.fdroid.fdroid.views.AppDetailsActivity"
 | 
			
		||||
        android:background="?attr/appDetailsBackground"
 | 
			
		||||
        android:fitsSystemWindows="true"
 | 
			
		||||
        android:id="@+id/rootCoordinator">
 | 
			
		||||
 | 
			
		||||
    <com.google.android.material.appbar.AppBarLayout
 | 
			
		||||
            android:id="@+id/app_bar"
 | 
			
		||||
            android:layout_width="match_parent"
 | 
			
		||||
            android:layout_height="@dimen/app_bar_height"
 | 
			
		||||
            android:fitsSystemWindows="true"
 | 
			
		||||
            app:layout_behavior="org.fdroid.fdroid.views.FixAppBarLayoutBehavior">
 | 
			
		||||
 | 
			
		||||
        <com.google.android.material.appbar.CollapsingToolbarLayout
 | 
			
		||||
                android:layout_width="match_parent"
 | 
			
		||||
                android:layout_height="match_parent"
 | 
			
		||||
                android:fitsSystemWindows="true"
 | 
			
		||||
                app:layout_scrollFlags="scroll|exitUntilCollapsed|snap"
 | 
			
		||||
                app:contentScrim="?attr/colorPrimarySurface"
 | 
			
		||||
                app:statusBarScrim="?attr/colorPrimarySurface"
 | 
			
		||||
                app:expandedTitleTextAppearance="@style/TextAppearance.App.CollapsingToolbar.Expanded"
 | 
			
		||||
                app:collapsedTitleTextAppearance="@style/TextAppearance.App.CollapsingToolbar.Collapsed"
 | 
			
		||||
                app:expandedTitleMarginTop="24dp">
 | 
			
		||||
 | 
			
		||||
            <org.fdroid.fdroid.views.apps.FeatureImage
 | 
			
		||||
                    android:id="@+id/feature_graphic"
 | 
			
		||||
                    android:layout_width="match_parent"
 | 
			
		||||
                    android:layout_height="match_parent"
 | 
			
		||||
                    android:scaleType="centerCrop"
 | 
			
		||||
                    android:fitsSystemWindows="true"
 | 
			
		||||
                    app:layout_collapseMode="parallax" />
 | 
			
		||||
 | 
			
		||||
            <com.google.android.material.appbar.MaterialToolbar
 | 
			
		||||
                    android:id="@+id/toolbar"
 | 
			
		||||
                    android:layout_width="match_parent"
 | 
			
		||||
                    android:layout_height="?attr/actionBarSize"
 | 
			
		||||
                    app:navigationIcon="@drawable/ic_back"
 | 
			
		||||
                    android:background="@android:color/transparent"
 | 
			
		||||
                    app:layout_collapseMode="pin"
 | 
			
		||||
                    style="@style/Widget.MaterialComponents.Toolbar.PrimarySurface"
 | 
			
		||||
                    android:elevation="0dp" />
 | 
			
		||||
 | 
			
		||||
        </com.google.android.material.appbar.CollapsingToolbarLayout>
 | 
			
		||||
 | 
			
		||||
    </com.google.android.material.appbar.AppBarLayout>
 | 
			
		||||
 | 
			
		||||
    <androidx.recyclerview.widget.RecyclerView
 | 
			
		||||
            android:id="@+id/rvDetails"
 | 
			
		||||
            android:layout_width="match_parent"
 | 
			
		||||
            android:layout_height="match_parent"
 | 
			
		||||
            app:layout_behavior="@string/appbar_scrolling_view_behavior"
 | 
			
		||||
            app:layoutManager="LinearLayoutManager"
 | 
			
		||||
            tools:context="org.fdroid.fdroid.views.AppDetailsActivity"
 | 
			
		||||
            tools:showIn="@layout/app_details2" />
 | 
			
		||||
 | 
			
		||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
 | 
			
		||||
							
								
								
									
										266
									
								
								app/src/main/res/layout-v21/app_details2_header.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										266
									
								
								app/src/main/res/layout-v21/app_details2_header.xml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,266 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
 | 
			
		||||
    xmlns:app="http://schemas.android.com/apk/res-auto"
 | 
			
		||||
    xmlns:tools="http://schemas.android.com/tools"
 | 
			
		||||
    android:layout_width="match_parent"
 | 
			
		||||
    android:layout_height="wrap_content"
 | 
			
		||||
    android:layout_margin="@dimen/details_activity_padding"
 | 
			
		||||
    app:cardBackgroundColor="?attr/appDetailsCardBackground"
 | 
			
		||||
    app:cardCornerRadius="3dp"
 | 
			
		||||
    app:cardElevation="3dp"
 | 
			
		||||
    android:animateLayoutChanges="true">
 | 
			
		||||
 | 
			
		||||
    <LinearLayout
 | 
			
		||||
        android:layout_width="match_parent"
 | 
			
		||||
        android:layout_height="wrap_content"
 | 
			
		||||
        android:orientation="vertical"
 | 
			
		||||
        android:paddingTop="8dp"
 | 
			
		||||
        android:paddingBottom="8dp">
 | 
			
		||||
 | 
			
		||||
        <RelativeLayout
 | 
			
		||||
            android:layout_width="match_parent"
 | 
			
		||||
            android:layout_height="wrap_content"
 | 
			
		||||
            android:layout_marginStart="8dp"
 | 
			
		||||
            android:layout_marginLeft="8dp"
 | 
			
		||||
            android:layout_marginEnd="8dp"
 | 
			
		||||
            android:layout_marginRight="8dp">
 | 
			
		||||
 | 
			
		||||
            <!-- Icon, Name, Author (optional), Updated date -->
 | 
			
		||||
            <RelativeLayout
 | 
			
		||||
                android:id="@+id/icon_and_name"
 | 
			
		||||
                android:layout_width="match_parent"
 | 
			
		||||
                android:layout_height="wrap_content"
 | 
			
		||||
                android:paddingBottom="12dp">
 | 
			
		||||
 | 
			
		||||
                <ImageView
 | 
			
		||||
                    android:id="@+id/icon"
 | 
			
		||||
                    android:layout_width="72dp"
 | 
			
		||||
                    android:layout_height="72dp"
 | 
			
		||||
                    android:layout_alignParentStart="true"
 | 
			
		||||
                    
 | 
			
		||||
                    android:layout_alignParentTop="true"
 | 
			
		||||
                    android:layout_marginEnd="8dp"
 | 
			
		||||
                    
 | 
			
		||||
                    android:scaleType="fitCenter"
 | 
			
		||||
                    android:src="@drawable/ic_repo_app_default"
 | 
			
		||||
                    android:transitionName="@string/transition_app_item_icon" />
 | 
			
		||||
 | 
			
		||||
                <!-- Name, Author (optional), Updated date -->
 | 
			
		||||
                <LinearLayout
 | 
			
		||||
                    android:layout_width="0dp"
 | 
			
		||||
                    android:layout_height="wrap_content"
 | 
			
		||||
                    android:layout_alignParentTop="true"
 | 
			
		||||
                    android:layout_alignParentEnd="true"
 | 
			
		||||
                    
 | 
			
		||||
                    android:layout_marginTop="8dp"
 | 
			
		||||
                    android:layout_toEndOf="@id/icon"
 | 
			
		||||
                    
 | 
			
		||||
                    android:orientation="vertical">
 | 
			
		||||
 | 
			
		||||
                    <TextView
 | 
			
		||||
                        android:id="@+id/title"
 | 
			
		||||
                        android:layout_width="match_parent"
 | 
			
		||||
                        android:layout_height="wrap_content"
 | 
			
		||||
                        android:textAppearance="@style/DetailsAppTitleStyle"
 | 
			
		||||
                        tools:text="Really Long App Title Which Wraps Around Onto the Second Line" />
 | 
			
		||||
 | 
			
		||||
                    <TextView
 | 
			
		||||
                        android:id="@+id/author"
 | 
			
		||||
                        android:layout_width="match_parent"
 | 
			
		||||
                        android:layout_height="wrap_content"
 | 
			
		||||
                        android:textAppearance="@style/TextAppearance.AppCompat.Body1"
 | 
			
		||||
                        tools:text="Author" />
 | 
			
		||||
 | 
			
		||||
                    <TextView
 | 
			
		||||
                        android:id="@+id/text_last_update"
 | 
			
		||||
                        android:layout_width="match_parent"
 | 
			
		||||
                        android:layout_height="wrap_content"
 | 
			
		||||
                        android:textAppearance="@style/DetailsLastUpdatedStyle"
 | 
			
		||||
                        android:textColor="@android:color/darker_gray"
 | 
			
		||||
                        tools:text="Update released 12 days ago" />
 | 
			
		||||
                </LinearLayout>
 | 
			
		||||
            </RelativeLayout>
 | 
			
		||||
 | 
			
		||||
            <!-- Progress info -->
 | 
			
		||||
            <RelativeLayout
 | 
			
		||||
                android:id="@+id/progress_layout"
 | 
			
		||||
                android:layout_width="match_parent"
 | 
			
		||||
                android:layout_height="wrap_content"
 | 
			
		||||
                android:layout_below="@id/icon_and_name"
 | 
			
		||||
                tools:visibility="gone">
 | 
			
		||||
 | 
			
		||||
                <ImageView
 | 
			
		||||
                    android:id="@+id/progress_cancel"
 | 
			
		||||
                    android:layout_width="wrap_content"
 | 
			
		||||
                    android:layout_height="wrap_content"
 | 
			
		||||
                    android:layout_alignParentEnd="true"
 | 
			
		||||
                    
 | 
			
		||||
                    android:layout_centerVertical="true"
 | 
			
		||||
                    android:contentDescription="@string/app__tts__cancel_download"
 | 
			
		||||
                    android:src="@android:drawable/ic_menu_close_clear_cancel" />
 | 
			
		||||
 | 
			
		||||
                <TextView
 | 
			
		||||
                    android:id="@+id/progress_label"
 | 
			
		||||
                    android:layout_width="wrap_content"
 | 
			
		||||
                    android:layout_height="wrap_content"
 | 
			
		||||
                    android:layout_alignParentStart="true"
 | 
			
		||||
                    
 | 
			
		||||
                    android:contentDescription="@string/downloading"
 | 
			
		||||
                    android:focusable="true"
 | 
			
		||||
                    android:text="@string/downloading"
 | 
			
		||||
                    android:textAppearance="@style/TextAppearance.AppCompat.Small" />
 | 
			
		||||
 | 
			
		||||
                <TextView
 | 
			
		||||
                    android:id="@+id/progress_percent"
 | 
			
		||||
                    android:layout_width="wrap_content"
 | 
			
		||||
                    android:layout_height="wrap_content"
 | 
			
		||||
                    android:layout_toStartOf="@id/progress_cancel"
 | 
			
		||||
                    
 | 
			
		||||
                    android:textAppearance="@style/TextAppearance.AppCompat.Small"
 | 
			
		||||
                    tools:text="500%" />
 | 
			
		||||
 | 
			
		||||
                <ProgressBar
 | 
			
		||||
                    android:id="@+id/progress_bar"
 | 
			
		||||
                    style="@style/Widget.AppCompat.ProgressBar.Horizontal"
 | 
			
		||||
                    android:layout_width="0dp"
 | 
			
		||||
                    android:layout_height="wrap_content"
 | 
			
		||||
                    android:layout_below="@id/progress_label"
 | 
			
		||||
                    android:layout_alignParentStart="true"
 | 
			
		||||
                    
 | 
			
		||||
                    android:layout_toStartOf="@id/progress_cancel"
 | 
			
		||||
                     />
 | 
			
		||||
            </RelativeLayout>
 | 
			
		||||
 | 
			
		||||
            <!-- Install, Uninstall, Update, Open buttons -->
 | 
			
		||||
            <LinearLayout
 | 
			
		||||
                android:id="@+id/button_layout"
 | 
			
		||||
                android:layout_width="match_parent"
 | 
			
		||||
                android:layout_height="wrap_content"
 | 
			
		||||
                android:layout_below="@id/icon_and_name"
 | 
			
		||||
                android:clipToPadding="false"
 | 
			
		||||
                android:gravity="end"
 | 
			
		||||
                android:paddingBottom="4dp"
 | 
			
		||||
                android:visibility="visible">
 | 
			
		||||
 | 
			
		||||
                <com.google.android.material.button.MaterialButton
 | 
			
		||||
                    android:id="@+id/secondaryButtonView"
 | 
			
		||||
                    style="@style/DetailsSecondaryButtonStyle"
 | 
			
		||||
                    android:layout_width="wrap_content"
 | 
			
		||||
                    android:layout_height="wrap_content"
 | 
			
		||||
                    android:layout_weight="0"
 | 
			
		||||
                    android:ellipsize="marquee"
 | 
			
		||||
                    tools:text="Uninstall" />
 | 
			
		||||
 | 
			
		||||
                <com.google.android.material.button.MaterialButton
 | 
			
		||||
                    android:id="@+id/primaryButtonView"
 | 
			
		||||
                    style="@style/DetailsPrimaryButtonStyle"
 | 
			
		||||
                    android:layout_width="wrap_content"
 | 
			
		||||
                    android:layout_height="wrap_content"
 | 
			
		||||
                    android:layout_marginStart="8dp"
 | 
			
		||||
                    
 | 
			
		||||
                    android:layout_weight="0"
 | 
			
		||||
                    android:ellipsize="marquee"
 | 
			
		||||
                    tools:text="Open" />
 | 
			
		||||
            </LinearLayout>
 | 
			
		||||
        </RelativeLayout>
 | 
			
		||||
 | 
			
		||||
        <TextView
 | 
			
		||||
            android:id="@+id/summary"
 | 
			
		||||
            android:layout_width="match_parent"
 | 
			
		||||
            android:layout_height="wrap_content"
 | 
			
		||||
            android:layout_marginTop="8dp"
 | 
			
		||||
            android:paddingStart="8dp"
 | 
			
		||||
            android:paddingLeft="8dp"
 | 
			
		||||
            android:paddingEnd="8dp"
 | 
			
		||||
            android:paddingRight="8dp"
 | 
			
		||||
            android:padding="8dp"
 | 
			
		||||
            android:scrollbars="none"
 | 
			
		||||
            android:textAppearance="@style/TextAppearance.AppCompat.Body1"
 | 
			
		||||
            android:textIsSelectable="true"
 | 
			
		||||
            android:textStyle="bold"
 | 
			
		||||
            android:background="?attr/detailPanel"
 | 
			
		||||
            tools:text="App summary, one line - outlining what this app does" />
 | 
			
		||||
 | 
			
		||||
        <TextView
 | 
			
		||||
            android:id="@+id/latest"
 | 
			
		||||
            android:layout_width="match_parent"
 | 
			
		||||
            android:layout_height="wrap_content"
 | 
			
		||||
            android:background="?attr/detailPanel"
 | 
			
		||||
            android:paddingStart="8dp"
 | 
			
		||||
            android:paddingLeft="8dp"
 | 
			
		||||
            android:paddingTop="16dp"
 | 
			
		||||
            android:paddingEnd="8dp"
 | 
			
		||||
            android:paddingRight="8dp"
 | 
			
		||||
            android:paddingBottom="16dp"
 | 
			
		||||
            android:textAppearance="@style/TextAppearance.AppCompat.Body1"
 | 
			
		||||
            tools:text="NEW IN VERSION 1.0.2233\n\nA lot has happened since the last build:\n\n\t• Improved UI\n\t• Bug fixes" />
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        <TextView
 | 
			
		||||
            android:id="@+id/description"
 | 
			
		||||
            android:layout_width="match_parent"
 | 
			
		||||
            android:layout_height="wrap_content"
 | 
			
		||||
            android:layout_marginStart="8dp"
 | 
			
		||||
            android:layout_marginLeft="8dp"
 | 
			
		||||
            android:layout_marginTop="8dp"
 | 
			
		||||
            android:layout_marginEnd="8dp"
 | 
			
		||||
            android:layout_marginRight="8dp"
 | 
			
		||||
            android:scrollbars="none"
 | 
			
		||||
            android:textAppearance="@style/TextAppearance.AppCompat.Body1"
 | 
			
		||||
            android:textIsSelectable="true"
 | 
			
		||||
            tools:text="This is the app description of this awezome app. It can be several lines long, but will be truncated at just a few if it is. A 'read more' button will appear so that you can expand the view and view the full text, if you wish. Yes, it will be blue and beautiful." />
 | 
			
		||||
 | 
			
		||||
        <LinearLayout
 | 
			
		||||
            android:id="@+id/anti_features_section"
 | 
			
		||||
            android:layout_width="match_parent"
 | 
			
		||||
            android:layout_height="wrap_content"
 | 
			
		||||
            android:layout_marginTop="16dp"
 | 
			
		||||
            android:orientation="vertical">
 | 
			
		||||
 | 
			
		||||
            <TextView
 | 
			
		||||
                android:id="@+id/anti_features_warning"
 | 
			
		||||
                style="@style/DetailsAntiFeaturesWarningStyle"
 | 
			
		||||
                android:layout_width="match_parent"
 | 
			
		||||
                android:layout_height="wrap_content"
 | 
			
		||||
                android:drawableStart="@drawable/ic_warning"
 | 
			
		||||
                
 | 
			
		||||
                android:drawablePadding="10dp"
 | 
			
		||||
                android:paddingLeft="8dp"
 | 
			
		||||
                android:paddingRight="8dp"
 | 
			
		||||
                android:gravity="center_vertical"
 | 
			
		||||
                android:text="@string/antifeatureswarning"
 | 
			
		||||
                android:textAppearance="@style/TextAppearance.AppCompat.Body1" />
 | 
			
		||||
 | 
			
		||||
            <TextView
 | 
			
		||||
                android:id="@+id/label_anti_features"
 | 
			
		||||
                android:layout_width="match_parent"
 | 
			
		||||
                android:layout_height="wrap_content"
 | 
			
		||||
                android:layout_marginBottom="8dp"
 | 
			
		||||
                android:paddingLeft="8dp"
 | 
			
		||||
                android:paddingRight="8dp"
 | 
			
		||||
                android:scrollbars="none"
 | 
			
		||||
                android:text="@string/antifeatures"
 | 
			
		||||
                android:textAllCaps="true"
 | 
			
		||||
                android:textAppearance="@style/TextAppearance.AppCompat.Body1"
 | 
			
		||||
                android:textStyle="bold" />
 | 
			
		||||
 | 
			
		||||
            <!-- listing of all anti-features -->
 | 
			
		||||
            <org.fdroid.fdroid.views.appdetails.AntiFeaturesListingView
 | 
			
		||||
                android:id="@+id/anti_features_full_listing"
 | 
			
		||||
                android:layout_marginBottom="8dp"
 | 
			
		||||
                android:layout_width="match_parent"
 | 
			
		||||
                android:layout_height="wrap_content"/>
 | 
			
		||||
 | 
			
		||||
        </LinearLayout>
 | 
			
		||||
 | 
			
		||||
        <TextView
 | 
			
		||||
            android:id="@+id/description_more"
 | 
			
		||||
            style="@style/DetailsMoreButtonStyle"
 | 
			
		||||
            android:layout_width="wrap_content"
 | 
			
		||||
            android:layout_height="wrap_content"
 | 
			
		||||
            android:layout_gravity="center_horizontal"
 | 
			
		||||
            android:layout_marginTop="4dp"
 | 
			
		||||
            android:text="@string/more" />
 | 
			
		||||
 | 
			
		||||
    </LinearLayout>
 | 
			
		||||
</androidx.cardview.widget.CardView>
 | 
			
		||||
@ -1,7 +1,8 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
 | 
			
		||||
    android:layout_width="match_parent"
 | 
			
		||||
    android:layout_height="match_parent">
 | 
			
		||||
    android:layout_height="match_parent"
 | 
			
		||||
    android:fitsSystemWindows="true">
 | 
			
		||||
 | 
			
		||||
    <LinearLayout
 | 
			
		||||
        android:layout_width="match_parent"
 | 
			
		||||
@ -50,25 +51,6 @@
 | 
			
		||||
            android:text="@string/license_gplv3_later"
 | 
			
		||||
            style="@style/BodyText" />
 | 
			
		||||
 | 
			
		||||
        <LinearLayout
 | 
			
		||||
            android:layout_width="match_parent"
 | 
			
		||||
            android:layout_height="wrap_content"
 | 
			
		||||
            android:orientation="vertical"
 | 
			
		||||
            android:gravity="center"
 | 
			
		||||
            android:layout_marginTop="12dp"
 | 
			
		||||
            android:paddingBottom="16dp"
 | 
			
		||||
            android:clipToPadding="false">
 | 
			
		||||
 | 
			
		||||
            <Button
 | 
			
		||||
                android:layout_width="wrap_content"
 | 
			
		||||
                android:minWidth="100dp"
 | 
			
		||||
                android:layout_height="wrap_content"
 | 
			
		||||
                style="@style/DetailsPrimaryButtonStyle"
 | 
			
		||||
                android:id="@+id/ok_button"
 | 
			
		||||
                android:text="@string/ok" />
 | 
			
		||||
 | 
			
		||||
        </LinearLayout>
 | 
			
		||||
 | 
			
		||||
    </LinearLayout>
 | 
			
		||||
 | 
			
		||||
</ScrollView>
 | 
			
		||||
 | 
			
		||||
@ -5,7 +5,8 @@
 | 
			
		||||
    android:id="@+id/app_list_root"
 | 
			
		||||
    android:orientation="vertical"
 | 
			
		||||
    android:layout_width="match_parent"
 | 
			
		||||
    android:layout_height="match_parent">
 | 
			
		||||
    android:layout_height="match_parent"
 | 
			
		||||
    android:fitsSystemWindows="true">
 | 
			
		||||
 | 
			
		||||
    <androidx.cardview.widget.CardView
 | 
			
		||||
        android:id="@+id/search_card"
 | 
			
		||||
 | 
			
		||||
@ -4,25 +4,26 @@
 | 
			
		||||
        xmlns:tools="http://schemas.android.com/tools"
 | 
			
		||||
        android:layout_width="match_parent"
 | 
			
		||||
        android:layout_height="match_parent"
 | 
			
		||||
        tools:context=".views.InstallHistoryActivity">
 | 
			
		||||
        xmlns:app="http://schemas.android.com/apk/res-auto"
 | 
			
		||||
        tools:context=".views.InstallHistoryActivity"
 | 
			
		||||
        android:fitsSystemWindows="true">
 | 
			
		||||
 | 
			
		||||
    <com.google.android.material.appbar.AppBarLayout
 | 
			
		||||
            android:id="@+id/app_bar"
 | 
			
		||||
            android:layout_width="match_parent"
 | 
			
		||||
            android:layout_height="wrap_content"
 | 
			
		||||
            android:theme="@style/AppThemeLight.AppBarOverlay">
 | 
			
		||||
 | 
			
		||||
        <androidx.appcompat.widget.Toolbar
 | 
			
		||||
            android:fitsSystemWindows="true"
 | 
			
		||||
            app:liftOnScroll="true">
 | 
			
		||||
        <com.google.android.material.appbar.MaterialToolbar
 | 
			
		||||
                android:id="@+id/toolbar"
 | 
			
		||||
                android:layout_width="match_parent"
 | 
			
		||||
                android:layout_height="?attr/actionBarSize"/>
 | 
			
		||||
 | 
			
		||||
                android:layout_height="?attr/actionBarSize"
 | 
			
		||||
                app:title="@string/install_history"
 | 
			
		||||
                app:navigationIcon="@drawable/ic_back"
 | 
			
		||||
                style="@style/Widget.MaterialComponents.Toolbar.PrimarySurface" />
 | 
			
		||||
    </com.google.android.material.appbar.AppBarLayout>
 | 
			
		||||
 | 
			
		||||
    <androidx.core.widget.NestedScrollView
 | 
			
		||||
            xmlns:android="http://schemas.android.com/apk/res/android"
 | 
			
		||||
            xmlns:app="http://schemas.android.com/apk/res-auto"
 | 
			
		||||
            xmlns:tools="http://schemas.android.com/tools"
 | 
			
		||||
            android:layout_width="match_parent"
 | 
			
		||||
            android:layout_height="match_parent"
 | 
			
		||||
            app:layout_behavior="@string/appbar_scrolling_view_behavior"
 | 
			
		||||
@ -33,7 +34,7 @@
 | 
			
		||||
                android:id="@+id/text"
 | 
			
		||||
                android:layout_width="wrap_content"
 | 
			
		||||
                android:layout_height="wrap_content"
 | 
			
		||||
                android:layout_margin="16dp"/>
 | 
			
		||||
                android:layout_margin="16dp" />
 | 
			
		||||
 | 
			
		||||
    </androidx.core.widget.NestedScrollView>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -3,7 +3,8 @@
 | 
			
		||||
    xmlns:tools="http://schemas.android.com/tools"
 | 
			
		||||
    android:orientation="vertical"
 | 
			
		||||
    android:layout_width="match_parent"
 | 
			
		||||
    android:layout_height="match_parent">
 | 
			
		||||
    android:layout_height="match_parent"
 | 
			
		||||
    android:fitsSystemWindows="true">
 | 
			
		||||
 | 
			
		||||
    <com.ashokvarma.bottomnavigation.BottomNavigationBar
 | 
			
		||||
        android:id="@+id/bottom_navigation"
 | 
			
		||||
 | 
			
		||||
@ -1,88 +1,98 @@
 | 
			
		||||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 | 
			
		||||
    xmlns:app="http://schemas.android.com/apk/res-auto"
 | 
			
		||||
    xmlns:tools="http://schemas.android.com/tools"
 | 
			
		||||
    android:layout_width="match_parent"
 | 
			
		||||
    android:layout_height="match_parent"
 | 
			
		||||
    android:orientation="vertical">
 | 
			
		||||
 | 
			
		||||
    <androidx.appcompat.widget.Toolbar
 | 
			
		||||
        android:id="@+id/toolbar"
 | 
			
		||||
<LinearLayout
 | 
			
		||||
        xmlns:android="http://schemas.android.com/apk/res/android"
 | 
			
		||||
        xmlns:tools="http://schemas.android.com/tools"
 | 
			
		||||
        android:layout_width="match_parent"
 | 
			
		||||
        android:layout_height="wrap_content"
 | 
			
		||||
        android:background="?attr/colorPrimary"
 | 
			
		||||
        android:title="@string/repo_details"
 | 
			
		||||
        app:theme="?attr/actionBarTheme" />
 | 
			
		||||
        android:layout_height="match_parent"
 | 
			
		||||
        xmlns:app="http://schemas.android.com/apk/res-auto"
 | 
			
		||||
        android:orientation="vertical"
 | 
			
		||||
        android:fitsSystemWindows="true">
 | 
			
		||||
 | 
			
		||||
    <ScrollView
 | 
			
		||||
        android:layout_width="match_parent"
 | 
			
		||||
        android:layout_height="match_parent">
 | 
			
		||||
 | 
			
		||||
        <LinearLayout
 | 
			
		||||
            android:id="@+id/repo_view"
 | 
			
		||||
    <com.google.android.material.appbar.AppBarLayout
 | 
			
		||||
            android:layout_width="match_parent"
 | 
			
		||||
            android:layout_height="wrap_content"
 | 
			
		||||
            android:orientation="vertical"
 | 
			
		||||
            android:paddingEnd="?attr/listPreferredItemPaddingRight"
 | 
			
		||||
            android:paddingLeft="?attr/listPreferredItemPaddingLeft"
 | 
			
		||||
            android:paddingRight="?attr/listPreferredItemPaddingRight"
 | 
			
		||||
            android:paddingStart="?attr/listPreferredItemPaddingLeft">
 | 
			
		||||
            android:fitsSystemWindows="true"
 | 
			
		||||
            app:liftOnScroll="true">
 | 
			
		||||
 | 
			
		||||
        <com.google.android.material.appbar.MaterialToolbar
 | 
			
		||||
                android:id="@+id/toolbar"
 | 
			
		||||
                android:layout_width="match_parent"
 | 
			
		||||
                android:layout_height="?attr/actionBarSize"
 | 
			
		||||
                app:title="@string/repo_details"
 | 
			
		||||
                app:navigationIcon="@drawable/ic_back"
 | 
			
		||||
                style="@style/Widget.MaterialComponents.Toolbar.PrimarySurface" />
 | 
			
		||||
 | 
			
		||||
    </com.google.android.material.appbar.AppBarLayout>
 | 
			
		||||
 | 
			
		||||
    <ScrollView
 | 
			
		||||
            android:layout_width="match_parent"
 | 
			
		||||
            android:layout_height="match_parent">
 | 
			
		||||
 | 
			
		||||
        <LinearLayout
 | 
			
		||||
                android:id="@+id/repo_view"
 | 
			
		||||
                android:layout_width="match_parent"
 | 
			
		||||
                android:layout_height="wrap_content"
 | 
			
		||||
                android:orientation="vertical"
 | 
			
		||||
                android:paddingEnd="?attr/listPreferredItemPaddingRight"
 | 
			
		||||
                android:paddingLeft="?attr/listPreferredItemPaddingLeft"
 | 
			
		||||
                android:paddingRight="?attr/listPreferredItemPaddingRight"
 | 
			
		||||
                android:paddingStart="?attr/listPreferredItemPaddingLeft">
 | 
			
		||||
 | 
			
		||||
            <!-- URL of this repo -->
 | 
			
		||||
            <TextView
 | 
			
		||||
                style="@style/CaptionText"
 | 
			
		||||
                android:text="@string/repo_url" />
 | 
			
		||||
                    style="@style/CaptionText"
 | 
			
		||||
                    android:text="@string/repo_url" />
 | 
			
		||||
 | 
			
		||||
            <TextView
 | 
			
		||||
                android:id="@+id/input_repo_url"
 | 
			
		||||
                style="@style/BodyText" />
 | 
			
		||||
                    android:id="@+id/input_repo_url"
 | 
			
		||||
                    style="@style/BodyText" />
 | 
			
		||||
 | 
			
		||||
            <!-- Name of this repo -->
 | 
			
		||||
            <TextView
 | 
			
		||||
                android:id="@+id/label_repo_name"
 | 
			
		||||
                style="@style/CaptionText"
 | 
			
		||||
                android:text="@string/repo_name" />
 | 
			
		||||
                    android:id="@+id/label_repo_name"
 | 
			
		||||
                    style="@style/CaptionText"
 | 
			
		||||
                    android:text="@string/repo_name" />
 | 
			
		||||
 | 
			
		||||
            <TextView
 | 
			
		||||
                android:id="@+id/text_repo_name"
 | 
			
		||||
                style="@style/BodyText" />
 | 
			
		||||
                    android:id="@+id/text_repo_name"
 | 
			
		||||
                    style="@style/BodyText" />
 | 
			
		||||
 | 
			
		||||
            <!-- Description - as pulled from the index file during last update... -->
 | 
			
		||||
            <TextView
 | 
			
		||||
                android:id="@+id/label_description"
 | 
			
		||||
                style="@style/CaptionText"
 | 
			
		||||
                android:text="@string/repo_description" />
 | 
			
		||||
                    android:id="@+id/label_description"
 | 
			
		||||
                    style="@style/CaptionText"
 | 
			
		||||
                    android:text="@string/repo_description" />
 | 
			
		||||
 | 
			
		||||
            <TextView
 | 
			
		||||
                android:id="@+id/text_description"
 | 
			
		||||
                style="@style/BodyText" />
 | 
			
		||||
                    android:id="@+id/text_description"
 | 
			
		||||
                    style="@style/BodyText" />
 | 
			
		||||
 | 
			
		||||
            <!-- Number of apps belonging to this repo -->
 | 
			
		||||
            <TextView
 | 
			
		||||
                android:id="@+id/label_num_apps"
 | 
			
		||||
                style="@style/CaptionText"
 | 
			
		||||
                android:text="@string/repo_num_apps" />
 | 
			
		||||
                    android:id="@+id/label_num_apps"
 | 
			
		||||
                    style="@style/CaptionText"
 | 
			
		||||
                    android:text="@string/repo_num_apps" />
 | 
			
		||||
 | 
			
		||||
            <TextView
 | 
			
		||||
                android:id="@+id/text_num_apps"
 | 
			
		||||
                style="@style/BodyText" />
 | 
			
		||||
                    android:id="@+id/text_num_apps"
 | 
			
		||||
                    style="@style/BodyText" />
 | 
			
		||||
 | 
			
		||||
            <!-- The last time this repo was updated -->
 | 
			
		||||
            <TextView
 | 
			
		||||
                android:id="@+id/label_last_update"
 | 
			
		||||
                style="@style/CaptionText"
 | 
			
		||||
                android:text="@string/repo_last_update" />
 | 
			
		||||
                    android:id="@+id/label_last_update"
 | 
			
		||||
                    style="@style/CaptionText"
 | 
			
		||||
                    android:text="@string/repo_last_update" />
 | 
			
		||||
 | 
			
		||||
            <TextView
 | 
			
		||||
                android:id="@+id/text_last_update"
 | 
			
		||||
                style="@style/BodyText" />
 | 
			
		||||
                    android:id="@+id/text_last_update"
 | 
			
		||||
                    style="@style/BodyText" />
 | 
			
		||||
 | 
			
		||||
            <!-- mirrors included in the index -->
 | 
			
		||||
            <TextView
 | 
			
		||||
                android:id="@+id/label_official_mirrors"
 | 
			
		||||
                style="@style/CaptionText"
 | 
			
		||||
                android:text="@string/repo_official_mirrors"
 | 
			
		||||
                android:visibility="gone" />
 | 
			
		||||
                    android:id="@+id/label_official_mirrors"
 | 
			
		||||
                    style="@style/CaptionText"
 | 
			
		||||
                    android:text="@string/repo_official_mirrors"
 | 
			
		||||
                    android:visibility="gone" />
 | 
			
		||||
 | 
			
		||||
            <androidx.recyclerview.widget.RecyclerView
 | 
			
		||||
                    android:id="@+id/official_mirror_list"
 | 
			
		||||
@ -92,10 +102,10 @@
 | 
			
		||||
 | 
			
		||||
            <!-- mirrors added by the user -->
 | 
			
		||||
            <TextView
 | 
			
		||||
                android:id="@+id/label_user_mirrors"
 | 
			
		||||
                style="@style/CaptionText"
 | 
			
		||||
                android:text="@string/repo_user_mirrors"
 | 
			
		||||
                android:visibility="gone" />
 | 
			
		||||
                    android:id="@+id/label_user_mirrors"
 | 
			
		||||
                    style="@style/CaptionText"
 | 
			
		||||
                    android:text="@string/repo_user_mirrors"
 | 
			
		||||
                    android:visibility="gone" />
 | 
			
		||||
 | 
			
		||||
            <androidx.recyclerview.widget.RecyclerView
 | 
			
		||||
                    android:id="@+id/user_mirror_list"
 | 
			
		||||
@ -105,47 +115,47 @@
 | 
			
		||||
 | 
			
		||||
            <!-- The credentials used to access this repo (optional) -->
 | 
			
		||||
            <TextView
 | 
			
		||||
                android:id="@+id/label_username"
 | 
			
		||||
                style="@style/CaptionText"
 | 
			
		||||
                android:text="@string/login_name" />
 | 
			
		||||
                    android:id="@+id/label_username"
 | 
			
		||||
                    style="@style/CaptionText"
 | 
			
		||||
                    android:text="@string/login_name" />
 | 
			
		||||
 | 
			
		||||
            <TextView
 | 
			
		||||
                android:id="@+id/text_username"
 | 
			
		||||
                style="@style/BodyText" />
 | 
			
		||||
                    android:id="@+id/text_username"
 | 
			
		||||
                    style="@style/BodyText" />
 | 
			
		||||
 | 
			
		||||
            <Button
 | 
			
		||||
                android:id="@+id/button_edit_credentials"
 | 
			
		||||
                android:layout_width="wrap_content"
 | 
			
		||||
                android:layout_height="wrap_content"
 | 
			
		||||
                android:onClick="showChangePasswordDialog"
 | 
			
		||||
                android:text="@string/repo_edit_credentials" />
 | 
			
		||||
                    android:id="@+id/button_edit_credentials"
 | 
			
		||||
                    android:layout_width="wrap_content"
 | 
			
		||||
                    android:layout_height="wrap_content"
 | 
			
		||||
                    android:onClick="showChangePasswordDialog"
 | 
			
		||||
                    android:text="@string/repo_edit_credentials" />
 | 
			
		||||
 | 
			
		||||
            <!-- Signature (or "unsigned" if none) -->
 | 
			
		||||
            <TextView
 | 
			
		||||
                android:id="@+id/label_repo_fingerprint"
 | 
			
		||||
                style="@style/CaptionText"
 | 
			
		||||
                android:text="@string/repo_fingerprint" />
 | 
			
		||||
                    android:id="@+id/label_repo_fingerprint"
 | 
			
		||||
                    style="@style/CaptionText"
 | 
			
		||||
                    android:text="@string/repo_fingerprint" />
 | 
			
		||||
 | 
			
		||||
            <TextView
 | 
			
		||||
                android:id="@+id/text_repo_fingerprint"
 | 
			
		||||
                style="@style/BodyText"
 | 
			
		||||
                android:typeface="monospace" />
 | 
			
		||||
                    android:id="@+id/text_repo_fingerprint"
 | 
			
		||||
                    style="@style/BodyText"
 | 
			
		||||
                    android:typeface="monospace" />
 | 
			
		||||
 | 
			
		||||
            <TextView
 | 
			
		||||
                android:id="@+id/text_repo_fingerprint_description"
 | 
			
		||||
                style="@style/BodyText" />
 | 
			
		||||
                    android:id="@+id/text_repo_fingerprint_description"
 | 
			
		||||
                    style="@style/BodyText" />
 | 
			
		||||
 | 
			
		||||
            <TextView
 | 
			
		||||
                android:id="@+id/text_not_yet_updated"
 | 
			
		||||
                style="@style/BodyText"
 | 
			
		||||
                android:text="@string/repo_not_yet_updated" />
 | 
			
		||||
                    android:id="@+id/text_not_yet_updated"
 | 
			
		||||
                    style="@style/BodyText"
 | 
			
		||||
                    android:text="@string/repo_not_yet_updated" />
 | 
			
		||||
 | 
			
		||||
            <ImageView
 | 
			
		||||
                android:id="@+id/qr_code"
 | 
			
		||||
                android:layout_width="match_parent"
 | 
			
		||||
                android:layout_height="wrap_content"
 | 
			
		||||
                android:paddingTop="16dp"
 | 
			
		||||
                app:srcCompat="@drawable/swap_qr_example" />
 | 
			
		||||
                    android:id="@+id/qr_code"
 | 
			
		||||
                    android:layout_width="match_parent"
 | 
			
		||||
                    android:layout_height="wrap_content"
 | 
			
		||||
                    android:paddingTop="16dp"
 | 
			
		||||
                    app:srcCompat="@drawable/swap_qr_example" />
 | 
			
		||||
 | 
			
		||||
        </LinearLayout>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -5,6 +5,7 @@
 | 
			
		||||
    android:id="@+id/screenshot_view_pager"
 | 
			
		||||
    android:layout_width="match_parent"
 | 
			
		||||
    android:layout_height="match_parent"
 | 
			
		||||
    tools:context="org.fdroid.fdroid.views.ScreenShotsActivity" />
 | 
			
		||||
    tools:context="org.fdroid.fdroid.views.ScreenShotsActivity"
 | 
			
		||||
    android:fitsSystemWindows="true"/>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -7,4 +7,5 @@
 | 
			
		||||
    android:layout_height="match_parent"
 | 
			
		||||
    android:contentDescription="@null"
 | 
			
		||||
    android:padding="@dimen/layout_horizontal_margin"
 | 
			
		||||
    tools:src="@drawable/screenshot_placeholder" />
 | 
			
		||||
    tools:src="@drawable/screenshot_placeholder"
 | 
			
		||||
    android:fitsSystemWindows="true"/>
 | 
			
		||||
 | 
			
		||||
@ -1,42 +1,52 @@
 | 
			
		||||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
 | 
			
		||||
 | 
			
		||||
<com.google.android.material.card.MaterialCardView xmlns:android="http://schemas.android.com/apk/res/android"
 | 
			
		||||
    xmlns:app="http://schemas.android.com/apk/res-auto"
 | 
			
		||||
    xmlns:tools="http://schemas.android.com/tools"
 | 
			
		||||
    android:layout_width="100dp"
 | 
			
		||||
    android:layout_height="130dp"
 | 
			
		||||
    android:background="?attr/categoryPreviewAppCardBackground"
 | 
			
		||||
    android:padding="8dp">
 | 
			
		||||
    android:id="@+id/card"
 | 
			
		||||
    android:layout_width="120dp"
 | 
			
		||||
    android:layout_height="144dp"
 | 
			
		||||
    android:layout_margin="4dp">
 | 
			
		||||
 | 
			
		||||
    <!-- Ignore ContentDescription because it is kind of meaningless to have TTS read out "App icon"
 | 
			
		||||
         when it will inevitably read out the name of the app straight after. -->
 | 
			
		||||
    <ImageView
 | 
			
		||||
        android:id="@+id/icon"
 | 
			
		||||
        android:layout_width="48dip"
 | 
			
		||||
        android:layout_height="48dip"
 | 
			
		||||
        tools:src="@drawable/ic_launcher"
 | 
			
		||||
        android:scaleType="fitCenter"
 | 
			
		||||
        android:transitionName="@string/transition_app_item_icon"
 | 
			
		||||
        android:layout_marginEnd="16dp"
 | 
			
		||||
        android:layout_marginRight="16dp"
 | 
			
		||||
        android:layout_marginStart="16dp"
 | 
			
		||||
        android:layout_marginLeft="16dp"
 | 
			
		||||
        android:layout_marginTop="8dp"
 | 
			
		||||
        android:layout_marginBottom="8dp"
 | 
			
		||||
        app:layout_constraintRight_toRightOf="parent"
 | 
			
		||||
        app:layout_constraintLeft_toLeftOf="parent"
 | 
			
		||||
        app:layout_constraintTop_toTopOf="parent"
 | 
			
		||||
        tools:ignore="ContentDescription" />
 | 
			
		||||
 | 
			
		||||
    <TextView
 | 
			
		||||
        tools:text="F-Droid An application summary which takes up too much space and must ellipsize"
 | 
			
		||||
        android:layout_width="wrap_content"
 | 
			
		||||
    <LinearLayout
 | 
			
		||||
        android:layout_width="match_parent"
 | 
			
		||||
        android:layout_height="wrap_content"
 | 
			
		||||
        android:id="@+id/summary"
 | 
			
		||||
        android:maxLines="3"
 | 
			
		||||
        android:ellipsize="end"
 | 
			
		||||
        app:layout_constraintTop_toBottomOf="@+id/icon"
 | 
			
		||||
        app:layout_constraintRight_toRightOf="parent"
 | 
			
		||||
        app:layout_constraintLeft_toLeftOf="parent"
 | 
			
		||||
        android:layout_marginTop="8dp" />
 | 
			
		||||
        android:orientation="vertical">
 | 
			
		||||
 | 
			
		||||
</androidx.constraintlayout.widget.ConstraintLayout>
 | 
			
		||||
        <!-- Ignore ContentDescription because it is kind of meaningless to have TTS read out "App icon"
 | 
			
		||||
             when it will inevitably read out the name of the app straight after. -->
 | 
			
		||||
 | 
			
		||||
        <androidx.constraintlayout.widget.ConstraintLayout
 | 
			
		||||
            android:id="@+id/linearLayout"
 | 
			
		||||
            android:layout_width="match_parent"
 | 
			
		||||
            android:layout_height="wrap_content"
 | 
			
		||||
            android:orientation="vertical"
 | 
			
		||||
            android:padding="16dp">
 | 
			
		||||
 | 
			
		||||
            <ImageView
 | 
			
		||||
                android:id="@+id/icon"
 | 
			
		||||
                android:layout_width="match_parent"
 | 
			
		||||
                android:layout_height="48dip"
 | 
			
		||||
                android:layout_marginTop="8dp"
 | 
			
		||||
                android:scaleType="fitCenter"
 | 
			
		||||
                android:transitionName="@string/transition_app_item_icon"
 | 
			
		||||
                app:layout_constraintLeft_toLeftOf="parent"
 | 
			
		||||
                app:layout_constraintRight_toRightOf="parent"
 | 
			
		||||
                app:layout_constraintTop_toTopOf="parent"
 | 
			
		||||
                tools:ignore="ContentDescription"
 | 
			
		||||
                tools:src="@drawable/ic_launcher" />
 | 
			
		||||
 | 
			
		||||
            <TextView
 | 
			
		||||
                android:id="@+id/summary"
 | 
			
		||||
                android:layout_width="wrap_content"
 | 
			
		||||
                android:layout_height="wrap_content"
 | 
			
		||||
                android:layout_alignParentBottom="true"
 | 
			
		||||
                android:ellipsize="end"
 | 
			
		||||
                android:maxLines="3"
 | 
			
		||||
                app:layout_constraintLeft_toLeftOf="parent"
 | 
			
		||||
                app:layout_constraintRight_toRightOf="parent"
 | 
			
		||||
                app:layout_constraintTop_toBottomOf="@+id/icon"
 | 
			
		||||
                tools:text="F-Droid An application summary which takes up too much space and must ellipsize" />
 | 
			
		||||
        </androidx.constraintlayout.widget.ConstraintLayout>
 | 
			
		||||
    </LinearLayout>
 | 
			
		||||
</com.google.android.material.card.MaterialCardView>
 | 
			
		||||
 | 
			
		||||
@ -1,55 +1,61 @@
 | 
			
		||||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
 | 
			
		||||
    xmlns:app="http://schemas.android.com/apk/res-auto"
 | 
			
		||||
    xmlns:tools="http://schemas.android.com/tools"
 | 
			
		||||
    android:layout_width="match_parent"
 | 
			
		||||
    android:layout_height="match_parent"
 | 
			
		||||
    tools:context="org.fdroid.fdroid.views.AppDetailsActivity"
 | 
			
		||||
    android:background="?attr/appDetailsBackground"
 | 
			
		||||
    android:id="@+id/rootCoordinator">
 | 
			
		||||
<androidx.coordinatorlayout.widget.CoordinatorLayout
 | 
			
		||||
        xmlns:android="http://schemas.android.com/apk/res/android"
 | 
			
		||||
        xmlns:app="http://schemas.android.com/apk/res-auto"
 | 
			
		||||
        xmlns:tools="http://schemas.android.com/tools"
 | 
			
		||||
        android:layout_width="match_parent"
 | 
			
		||||
        android:layout_height="match_parent"
 | 
			
		||||
        tools:context="org.fdroid.fdroid.views.AppDetailsActivity"
 | 
			
		||||
        android:background="?attr/appDetailsBackground"
 | 
			
		||||
        android:fitsSystemWindows="true"
 | 
			
		||||
        android:id="@+id/rootCoordinator">
 | 
			
		||||
 | 
			
		||||
    <com.google.android.material.appbar.AppBarLayout
 | 
			
		||||
        android:id="@+id/app_bar"
 | 
			
		||||
        android:layout_width="match_parent"
 | 
			
		||||
        android:layout_height="@dimen/app_bar_height"
 | 
			
		||||
        android:fitsSystemWindows="true"
 | 
			
		||||
        android:theme="@style/AppThemeLight.AppBarOverlay"
 | 
			
		||||
        app:layout_behavior="org.fdroid.fdroid.views.FixAppBarLayoutBehavior">
 | 
			
		||||
            android:id="@+id/app_bar"
 | 
			
		||||
            android:layout_width="match_parent"
 | 
			
		||||
            android:layout_height="@dimen/app_bar_height"
 | 
			
		||||
            android:fitsSystemWindows="true"
 | 
			
		||||
            app:layout_behavior="org.fdroid.fdroid.views.FixAppBarLayoutBehavior">
 | 
			
		||||
 | 
			
		||||
        <com.google.android.material.appbar.CollapsingToolbarLayout
 | 
			
		||||
            android:layout_width="match_parent"
 | 
			
		||||
            android:layout_height="match_parent"
 | 
			
		||||
            android:fitsSystemWindows="true"
 | 
			
		||||
            app:contentScrim="?attr/colorPrimary"
 | 
			
		||||
            app:layout_scrollFlags="scroll|exitUntilCollapsed"
 | 
			
		||||
            app:expandedTitleMarginTop="24dp">
 | 
			
		||||
 | 
			
		||||
            <org.fdroid.fdroid.views.apps.FeatureImage
 | 
			
		||||
                android:id="@+id/feature_graphic"
 | 
			
		||||
                android:layout_width="match_parent"
 | 
			
		||||
                android:layout_height="match_parent"
 | 
			
		||||
                android:scaleType="centerCrop"
 | 
			
		||||
                android:fitsSystemWindows="true"
 | 
			
		||||
                app:layout_collapseMode="parallax" />
 | 
			
		||||
                app:layout_scrollFlags="scroll|exitUntilCollapsed|snap"
 | 
			
		||||
                app:contentScrim="?attr/colorPrimary"
 | 
			
		||||
                app:statusBarScrim="?attr/colorPrimaryVariant"
 | 
			
		||||
                app:expandedTitleTextAppearance="@style/TextAppearance.App.CollapsingToolbar.Expanded"
 | 
			
		||||
                app:collapsedTitleTextAppearance="@style/TextAppearance.App.CollapsingToolbar.Collapsed"
 | 
			
		||||
                app:expandedTitleMarginTop="24dp">
 | 
			
		||||
 | 
			
		||||
            <androidx.appcompat.widget.Toolbar
 | 
			
		||||
                android:id="@+id/toolbar"
 | 
			
		||||
                android:layout_width="match_parent"
 | 
			
		||||
                android:layout_height="?attr/actionBarSize"
 | 
			
		||||
                app:layout_collapseMode="pin"
 | 
			
		||||
                app:popupTheme="@style/AppThemeLight.PopupOverlay" />
 | 
			
		||||
            <org.fdroid.fdroid.views.apps.FeatureImage
 | 
			
		||||
                    android:id="@+id/feature_graphic"
 | 
			
		||||
                    android:layout_width="match_parent"
 | 
			
		||||
                    android:layout_height="match_parent"
 | 
			
		||||
                    android:scaleType="centerCrop"
 | 
			
		||||
                    android:fitsSystemWindows="true"
 | 
			
		||||
                    app:layout_collapseMode="parallax" />
 | 
			
		||||
 | 
			
		||||
            <com.google.android.material.appbar.MaterialToolbar
 | 
			
		||||
                    android:id="@+id/toolbar"
 | 
			
		||||
                    android:layout_width="match_parent"
 | 
			
		||||
                    android:layout_height="?attr/actionBarSize"
 | 
			
		||||
                    app:navigationIcon="@drawable/ic_back"
 | 
			
		||||
                    android:background="@android:color/transparent"
 | 
			
		||||
                    app:layout_collapseMode="pin"
 | 
			
		||||
                    style="@style/Widget.MaterialComponents.Toolbar.PrimarySurface" />
 | 
			
		||||
 | 
			
		||||
        </com.google.android.material.appbar.CollapsingToolbarLayout>
 | 
			
		||||
 | 
			
		||||
    </com.google.android.material.appbar.AppBarLayout>
 | 
			
		||||
 | 
			
		||||
    <androidx.recyclerview.widget.RecyclerView
 | 
			
		||||
        android:id="@+id/rvDetails"
 | 
			
		||||
        android:layout_width="match_parent"
 | 
			
		||||
        android:layout_height="match_parent"
 | 
			
		||||
        app:layout_behavior="@string/appbar_scrolling_view_behavior"
 | 
			
		||||
        app:layoutManager="LinearLayoutManager"
 | 
			
		||||
        tools:context="org.fdroid.fdroid.views.AppDetailsActivity"
 | 
			
		||||
        tools:showIn="@layout/app_details2" />
 | 
			
		||||
            android:id="@+id/rvDetails"
 | 
			
		||||
            android:layout_width="match_parent"
 | 
			
		||||
            android:layout_height="match_parent"
 | 
			
		||||
            app:layout_behavior="@string/appbar_scrolling_view_behavior"
 | 
			
		||||
            app:layoutManager="LinearLayoutManager"
 | 
			
		||||
            tools:context="org.fdroid.fdroid.views.AppDetailsActivity"
 | 
			
		||||
            tools:showIn="@layout/app_details2" />
 | 
			
		||||
 | 
			
		||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
 | 
			
		||||
 | 
			
		||||
@ -108,7 +108,7 @@
 | 
			
		||||
                    android:contentDescription="@string/downloading"
 | 
			
		||||
                    android:focusable="true"
 | 
			
		||||
                    android:text="@string/downloading"
 | 
			
		||||
                    android:textAppearance="@style/TextAppearance.AppCompat.Small" />
 | 
			
		||||
                    android:textAppearance="@style/TextAppearance.MaterialComponents.Caption" />
 | 
			
		||||
 | 
			
		||||
                <TextView
 | 
			
		||||
                    android:id="@+id/progress_percent"
 | 
			
		||||
@ -116,7 +116,7 @@
 | 
			
		||||
                    android:layout_height="wrap_content"
 | 
			
		||||
                    android:layout_toStartOf="@id/progress_cancel"
 | 
			
		||||
                    android:layout_toLeftOf="@id/progress_cancel"
 | 
			
		||||
                    android:textAppearance="@style/TextAppearance.AppCompat.Small"
 | 
			
		||||
                    android:textAppearance="@style/TextAppearance.MaterialComponents.Caption"
 | 
			
		||||
                    tools:text="500%" />
 | 
			
		||||
 | 
			
		||||
                <ProgressBar
 | 
			
		||||
@ -142,7 +142,7 @@
 | 
			
		||||
                android:paddingBottom="4dp"
 | 
			
		||||
                android:visibility="visible">
 | 
			
		||||
 | 
			
		||||
                <androidx.appcompat.widget.AppCompatButton
 | 
			
		||||
                <com.google.android.material.button.MaterialButton
 | 
			
		||||
                    android:id="@+id/secondaryButtonView"
 | 
			
		||||
                    style="@style/DetailsSecondaryButtonStyle"
 | 
			
		||||
                    android:layout_width="wrap_content"
 | 
			
		||||
@ -151,7 +151,7 @@
 | 
			
		||||
                    android:ellipsize="marquee"
 | 
			
		||||
                    tools:text="Uninstall" />
 | 
			
		||||
 | 
			
		||||
                <androidx.appcompat.widget.AppCompatButton
 | 
			
		||||
                <com.google.android.material.button.MaterialButton
 | 
			
		||||
                    android:id="@+id/primaryButtonView"
 | 
			
		||||
                    style="@style/DetailsPrimaryButtonStyle"
 | 
			
		||||
                    android:layout_width="wrap_content"
 | 
			
		||||
 | 
			
		||||
@ -30,17 +30,8 @@
 | 
			
		||||
        android:layout_height="0dp"
 | 
			
		||||
        app:layout_constraintTop_toTopOf="parent"
 | 
			
		||||
        app:layout_constraintEnd_toEndOf="parent"
 | 
			
		||||
        android:background="?attr/selectableItemBackground"
 | 
			
		||||
        android:paddingLeft="18dp"
 | 
			
		||||
        android:paddingStart="18dp"
 | 
			
		||||
        android:paddingRight="18dp"
 | 
			
		||||
        android:paddingEnd="18dp"
 | 
			
		||||
        android:paddingTop="24dp"
 | 
			
		||||
        android:paddingBottom="12dp"
 | 
			
		||||
        android:textSize="14sp"
 | 
			
		||||
        style="@style/Widget.MaterialComponents.Button.TextButton"
 | 
			
		||||
        android:textAllCaps="true"
 | 
			
		||||
        android:textColor="@color/fdroid_blue"
 | 
			
		||||
 | 
			
		||||
        tools:layout_editor_absoluteX="268dp" />
 | 
			
		||||
 | 
			
		||||
    <FrameLayout
 | 
			
		||||
 | 
			
		||||
@ -1,42 +1,54 @@
 | 
			
		||||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
 | 
			
		||||
    xmlns:app="http://schemas.android.com/apk/res-auto"
 | 
			
		||||
    xmlns:tools="http://schemas.android.com/tools"
 | 
			
		||||
    android:layout_width="match_parent"
 | 
			
		||||
    android:layout_height="match_parent">
 | 
			
		||||
<androidx.constraintlayout.widget.ConstraintLayout
 | 
			
		||||
        xmlns:android="http://schemas.android.com/apk/res/android"
 | 
			
		||||
        xmlns:app="http://schemas.android.com/apk/res-auto"
 | 
			
		||||
        xmlns:tools="http://schemas.android.com/tools"
 | 
			
		||||
        android:layout_width="match_parent"
 | 
			
		||||
        android:layout_height="match_parent"
 | 
			
		||||
        android:fitsSystemWindows="true">
 | 
			
		||||
 | 
			
		||||
    <androidx.appcompat.widget.Toolbar
 | 
			
		||||
        android:id="@+id/toolbar"
 | 
			
		||||
        android:layout_width="0dp"
 | 
			
		||||
        android:layout_height="wrap_content"
 | 
			
		||||
        android:background="?attr/colorPrimary"
 | 
			
		||||
        app:layout_constraintEnd_toEndOf="parent"
 | 
			
		||||
        app:layout_constraintStart_toStartOf="parent"
 | 
			
		||||
        app:layout_constraintTop_toTopOf="parent"
 | 
			
		||||
        app:theme="?attr/actionBarTheme" />
 | 
			
		||||
    <com.google.android.material.appbar.AppBarLayout
 | 
			
		||||
            android:id="@+id/topAppBarLayout"
 | 
			
		||||
            android:layout_width="match_parent"
 | 
			
		||||
            android:layout_height="wrap_content"
 | 
			
		||||
            android:fitsSystemWindows="true"
 | 
			
		||||
            app:liftOnScroll="true"
 | 
			
		||||
            app:layout_constraintEnd_toEndOf="parent"
 | 
			
		||||
            app:layout_constraintStart_toStartOf="parent"
 | 
			
		||||
            app:layout_constraintTop_toTopOf="parent">
 | 
			
		||||
 | 
			
		||||
        <com.google.android.material.appbar.MaterialToolbar
 | 
			
		||||
                android:id="@+id/toolbar"
 | 
			
		||||
                android:layout_width="match_parent"
 | 
			
		||||
                android:layout_height="?attr/actionBarSize"
 | 
			
		||||
                app:title="@string/installed_apps__activity_title"
 | 
			
		||||
                app:navigationIcon="@drawable/ic_back"
 | 
			
		||||
                style="@style/Widget.MaterialComponents.Toolbar.PrimarySurface" />
 | 
			
		||||
 | 
			
		||||
    </com.google.android.material.appbar.AppBarLayout>
 | 
			
		||||
 | 
			
		||||
    <TextView
 | 
			
		||||
        android:id="@+id/empty_state"
 | 
			
		||||
        style="@style/AppListEmptyText"
 | 
			
		||||
        android:layout_width="0dp"
 | 
			
		||||
        android:layout_height="0dp"
 | 
			
		||||
        android:text="@string/empty_installed_app_list"
 | 
			
		||||
        android:visibility="gone"
 | 
			
		||||
        app:layout_constraintBottom_toBottomOf="parent"
 | 
			
		||||
        app:layout_constraintEnd_toEndOf="parent"
 | 
			
		||||
        app:layout_constraintStart_toStartOf="parent"
 | 
			
		||||
        app:layout_constraintTop_toBottomOf="@+id/toolbar" />
 | 
			
		||||
            android:id="@+id/empty_state"
 | 
			
		||||
            style="@style/AppListEmptyText"
 | 
			
		||||
            android:layout_width="0dp"
 | 
			
		||||
            android:layout_height="0dp"
 | 
			
		||||
            android:text="@string/empty_installed_app_list"
 | 
			
		||||
            android:visibility="gone"
 | 
			
		||||
            app:layout_constraintBottom_toBottomOf="parent"
 | 
			
		||||
            app:layout_constraintEnd_toEndOf="parent"
 | 
			
		||||
            app:layout_constraintStart_toStartOf="parent"
 | 
			
		||||
            app:layout_constraintTop_toBottomOf="@+id/topAppBarLayout" />
 | 
			
		||||
 | 
			
		||||
    <androidx.recyclerview.widget.RecyclerView
 | 
			
		||||
        android:id="@+id/app_list"
 | 
			
		||||
        android:layout_width="0dp"
 | 
			
		||||
        android:layout_height="0dp"
 | 
			
		||||
        android:scrollbars="vertical"
 | 
			
		||||
        app:layout_constraintBottom_toBottomOf="parent"
 | 
			
		||||
        app:layout_constraintEnd_toEndOf="parent"
 | 
			
		||||
        app:layout_constraintStart_toStartOf="parent"
 | 
			
		||||
        app:layout_constraintTop_toBottomOf="@+id/toolbar"
 | 
			
		||||
        tools:listitem="@layout/installed_app_list_item" />
 | 
			
		||||
            android:id="@+id/app_list"
 | 
			
		||||
            android:layout_width="0dp"
 | 
			
		||||
            android:layout_height="0dp"
 | 
			
		||||
            android:scrollbars="vertical"
 | 
			
		||||
            app:layout_constraintBottom_toBottomOf="parent"
 | 
			
		||||
            app:layout_constraintEnd_toEndOf="parent"
 | 
			
		||||
            app:layout_constraintStart_toStartOf="parent"
 | 
			
		||||
            app:layout_constraintTop_toBottomOf="@+id/topAppBarLayout"
 | 
			
		||||
            tools:listitem="@layout/installed_app_list_item" />
 | 
			
		||||
 | 
			
		||||
    <!--
 | 
			
		||||
    Commented out until the long press functionality is implemented.
 | 
			
		||||
 | 
			
		||||
@ -1,7 +1,6 @@
 | 
			
		||||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<androidx.coordinatorlayout.widget.CoordinatorLayout
 | 
			
		||||
    xmlns:android="http://schemas.android.com/apk/res/android"
 | 
			
		||||
    xmlns:app="http://schemas.android.com/apk/res-auto"
 | 
			
		||||
    xmlns:tools="http://schemas.android.com/tools"
 | 
			
		||||
    android:orientation="vertical"
 | 
			
		||||
    android:layout_width="match_parent"
 | 
			
		||||
 | 
			
		||||
@ -5,7 +5,8 @@
 | 
			
		||||
    xmlns:tools="http://schemas.android.com/tools"
 | 
			
		||||
    android:orientation="vertical"
 | 
			
		||||
    android:layout_width="match_parent"
 | 
			
		||||
    android:layout_height="match_parent">
 | 
			
		||||
    android:layout_height="match_parent"
 | 
			
		||||
    android:fitsSystemWindows="true">
 | 
			
		||||
 | 
			
		||||
    <androidx.swiperefreshlayout.widget.SwipeRefreshLayout
 | 
			
		||||
        android:layout_width="match_parent"
 | 
			
		||||
 | 
			
		||||
@ -1,24 +1,34 @@
 | 
			
		||||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 | 
			
		||||
    xmlns:app="http://schemas.android.com/apk/res-auto"
 | 
			
		||||
    xmlns:tools="http://schemas.android.com/tools"
 | 
			
		||||
    android:layout_width="match_parent"
 | 
			
		||||
    android:layout_height="match_parent"
 | 
			
		||||
    android:orientation="vertical">
 | 
			
		||||
 | 
			
		||||
    <androidx.appcompat.widget.Toolbar
 | 
			
		||||
        android:id="@+id/toolbar"
 | 
			
		||||
        android:layout_width="match_parent"
 | 
			
		||||
        android:layout_height="wrap_content"
 | 
			
		||||
        android:background="?attr/colorPrimary"
 | 
			
		||||
        android:title="@string/menu_manage"
 | 
			
		||||
        app:theme="?attr/actionBarTheme" />
 | 
			
		||||
 | 
			
		||||
    <ListView
 | 
			
		||||
        android:id="@+id/list"
 | 
			
		||||
<LinearLayout
 | 
			
		||||
        xmlns:android="http://schemas.android.com/apk/res/android"
 | 
			
		||||
        xmlns:tools="http://schemas.android.com/tools"
 | 
			
		||||
        android:layout_width="match_parent"
 | 
			
		||||
        android:layout_height="match_parent"
 | 
			
		||||
        android:scrollbars="vertical"
 | 
			
		||||
        tools:listitem="@layout/repo_item" />
 | 
			
		||||
        xmlns:app="http://schemas.android.com/apk/res-auto"
 | 
			
		||||
        android:orientation="vertical"
 | 
			
		||||
        android:fitsSystemWindows="true">
 | 
			
		||||
 | 
			
		||||
    <com.google.android.material.appbar.AppBarLayout
 | 
			
		||||
            android:layout_width="match_parent"
 | 
			
		||||
            android:layout_height="wrap_content"
 | 
			
		||||
            android:fitsSystemWindows="true"
 | 
			
		||||
            app:liftOnScroll="true">
 | 
			
		||||
 | 
			
		||||
        <com.google.android.material.appbar.MaterialToolbar
 | 
			
		||||
                android:id="@+id/toolbar"
 | 
			
		||||
                android:layout_width="match_parent"
 | 
			
		||||
                android:layout_height="?attr/actionBarSize"
 | 
			
		||||
                app:title="@string/menu_manage"
 | 
			
		||||
                app:navigationIcon="@drawable/ic_back"
 | 
			
		||||
                style="@style/Widget.MaterialComponents.Toolbar.PrimarySurface" />
 | 
			
		||||
 | 
			
		||||
    </com.google.android.material.appbar.AppBarLayout>
 | 
			
		||||
 | 
			
		||||
    <ListView
 | 
			
		||||
            android:id="@+id/list"
 | 
			
		||||
            android:layout_width="match_parent"
 | 
			
		||||
            android:layout_height="match_parent"
 | 
			
		||||
            android:scrollbars="vertical"
 | 
			
		||||
            tools:listitem="@layout/repo_item" />
 | 
			
		||||
 | 
			
		||||
</LinearLayout>
 | 
			
		||||
@ -1,6 +1,7 @@
 | 
			
		||||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<menu xmlns:android="http://schemas.android.com/apk/res/android"
 | 
			
		||||
    xmlns:app="http://schemas.android.com/apk/res-auto">
 | 
			
		||||
    xmlns:app="http://schemas.android.com/apk/res-auto"
 | 
			
		||||
    android:fitsSystemWindows="true">
 | 
			
		||||
 | 
			
		||||
    <item
 | 
			
		||||
        android:id="@+id/action_share"
 | 
			
		||||
 | 
			
		||||
@ -1,7 +0,0 @@
 | 
			
		||||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<transitionSet>
 | 
			
		||||
    <changeImageTransform />
 | 
			
		||||
    <changeBounds />
 | 
			
		||||
    <changeTransform />
 | 
			
		||||
    <changeClipBounds />
 | 
			
		||||
</transitionSet>
 | 
			
		||||
@ -280,7 +280,6 @@
 | 
			
		||||
    <string name="keep_forever">Vir ewig</string>
 | 
			
		||||
    <string name="theme_light">Lig</string>
 | 
			
		||||
    <string name="theme_dark">Donker</string>
 | 
			
		||||
    <string name="theme_night">Nag</string>
 | 
			
		||||
    <string name="crash_dialog_title">F-Droid het ineengestort</string>
 | 
			
		||||
    <string name="crash_dialog_text">\'N Onverwagse fout het voorgekom wat die program laat stop het.
 | 
			
		||||
        Wil jy \'n e-pos met die besonderhede stuur om die probleem te help oplos?
 | 
			
		||||
 | 
			
		||||
@ -260,7 +260,6 @@
 | 
			
		||||
    <string name="keep_forever">إلى الأبد</string>
 | 
			
		||||
    <string name="theme_light">فاتحة</string>
 | 
			
		||||
    <string name="theme_dark">داكنة</string>
 | 
			
		||||
    <string name="theme_night">ليلية</string>
 | 
			
		||||
    <string name="crash_dialog_title">لقد تعطل اف-درويد</string>
 | 
			
		||||
    <string name="crash_dialog_text">حدث خطأ غير متوقع أجبَر التطبيق على التوقف. هل ترغب في إرسال بريد إلكتروني بالتفاصيل للمساعدة في حل المشكلة ؟</string>
 | 
			
		||||
    <string name="crash_dialog_comment_prompt">يمكنك إضافة معلومات وتعليقات إضافية هنا:</string>
 | 
			
		||||
 | 
			
		||||
@ -227,7 +227,6 @@
 | 
			
		||||
    <string name="more">Más</string>
 | 
			
		||||
    <string name="less">Menos</string>
 | 
			
		||||
    <string name="permissions">Permisos</string>
 | 
			
		||||
    <string name="theme_night">Nueche</string>
 | 
			
		||||
    <string name="menu_settings">Axustes</string>
 | 
			
		||||
    <string name="login_title">Ríquese l\'autenticación</string>
 | 
			
		||||
    <string name="login_name">Nome d\'usuariu</string>
 | 
			
		||||
 | 
			
		||||
@ -268,7 +268,6 @@
 | 
			
		||||
    <string name="keep_forever">Заўсёды</string>
 | 
			
		||||
    <string name="theme_light">Светлая</string>
 | 
			
		||||
    <string name="theme_dark">Цёмная</string>
 | 
			
		||||
    <string name="theme_night">Начная</string>
 | 
			
		||||
    <string name="crash_dialog_title">F-Droid даў хібу</string>
 | 
			
		||||
    <string name="crash_dialog_text">Узнікла нечаканая памылка, што прывяла да аварыйнага спынення праграмы. Хочаце адправіць электронны ліст з падрабязнасцямі, каб дапамагчы выправіць гэтую праблему\?</string>
 | 
			
		||||
    <string name="crash_dialog_comment_prompt">Можаце ўвясці дадатковую інфармацыю і каментары сюды:</string>
 | 
			
		||||
 | 
			
		||||
@ -218,7 +218,6 @@
 | 
			
		||||
    <string name="swap_confirm_connect">Желаете ли да получите приложения от %1$s?</string>
 | 
			
		||||
    <string name="swap_qr_isnt_for_swap">Сканираният QR код не е код за размяна.</string>
 | 
			
		||||
    <string name="status_processing_xml_percent">Обработване на %2$s / %3$s (%4$d%%) от %1$s</string>
 | 
			
		||||
    <string name="theme_night">Нощна</string>
 | 
			
		||||
    <string name="repo_added">Хранилището %1$s е записано.</string>
 | 
			
		||||
    <string name="repo_searching_address">Търсене на хранилище в\n%1$s</string>
 | 
			
		||||
    <string name="unsigned">Неподписано</string>
 | 
			
		||||
 | 
			
		||||
@ -6,7 +6,6 @@
 | 
			
		||||
    <string name="yes">হ্যাঁ</string>
 | 
			
		||||
    <string name="no">না</string>
 | 
			
		||||
    <string name="back">ফিরে</string>
 | 
			
		||||
    <string name="theme_night">রাত</string>
 | 
			
		||||
    <string name="theme_dark">অন্ধকার</string>
 | 
			
		||||
    <string name="theme_light">হালকা</string>
 | 
			
		||||
    <string name="status_inserting_apps">অ্যাপের বিবরণ সংরক্ষণ করা হচ্ছে</string>
 | 
			
		||||
 | 
			
		||||
@ -86,7 +86,6 @@
 | 
			
		||||
    <string name="category_Time">সময়</string>
 | 
			
		||||
    <string name="category_Security">নিরাপত্তা</string>
 | 
			
		||||
    <string name="category_Navigation">দিক নির্ণয়</string>
 | 
			
		||||
    <string name="theme_night">রাত</string>
 | 
			
		||||
    <string name="theme_dark">অন্ধকার</string>
 | 
			
		||||
    <string name="theme_light">হালকা</string>
 | 
			
		||||
    <string name="swap_send_fdroid">এফ-ড্রয়েড পাঠান</string>
 | 
			
		||||
 | 
			
		||||
@ -357,7 +357,6 @@
 | 
			
		||||
    <string name="status_inserting_apps">མཉེས་ཆས་ཞིབ་ཕྲ་ཉར་ཚགས་བྱེད་བཞིན་པ།</string>
 | 
			
		||||
    <string name="theme_light">དཀར་མདངས།</string>
 | 
			
		||||
    <string name="theme_dark">ནག་པོ།</string>
 | 
			
		||||
    <string name="theme_night">མཚན་མོ།</string>
 | 
			
		||||
    <string name="tts_category_name">སྡེ་ཚན་%1$s</string>
 | 
			
		||||
    <string name="app_details__incompatible_mismatched_signature">སྒྲིག་བཅུག་བྱེད་པའི་ཐོན་རིམ་འདི་མིང་རྟགས་མཐུན་མ་སོང་།</string>
 | 
			
		||||
    <string name="app_details__no_versions__show_incompat_versions">འདིར་ཐོན་རིམ་མི་མཐུན་པ་རྣམས་སྟོན་དགོས་ན། \"%1$s\" སྒྲིག་བཀོད་འདི་སྒོ་ཕྱེད།</string>
 | 
			
		||||
 | 
			
		||||
@ -180,7 +180,6 @@
 | 
			
		||||
    <string name="interval_2w">Cerca actualitzacions cada dues setmanes</string>
 | 
			
		||||
    <string name="theme_light">Clar</string>
 | 
			
		||||
    <string name="theme_dark">Fosc</string>
 | 
			
		||||
    <string name="theme_night">Nit</string>
 | 
			
		||||
    <string name="newPerms">Nous</string>
 | 
			
		||||
    <string name="allPerms">Tots</string>
 | 
			
		||||
    <string name="perm_costs_money">Això us pot costar diners</string>
 | 
			
		||||
 | 
			
		||||
@ -227,7 +227,6 @@
 | 
			
		||||
    <string name="interval_2w">Zjišťovat aktualizace  každé 2 týdny</string>
 | 
			
		||||
    <string name="theme_light">Světlý</string>
 | 
			
		||||
    <string name="theme_dark">Tmavý</string>
 | 
			
		||||
    <string name="theme_night">Noc</string>
 | 
			
		||||
    <string name="system_install_denied_permissions">Privilegovaná oprávnění nebyla tomuto rozšíření udělena! Nahlašte
 | 
			
		||||
        prosím jako chybu!
 | 
			
		||||
    </string>
 | 
			
		||||
 | 
			
		||||
@ -346,7 +346,6 @@
 | 
			
		||||
    <string name="keep_forever">Am byth</string>
 | 
			
		||||
    <string name="theme_light">Golau</string>
 | 
			
		||||
    <string name="theme_dark">Tywyll</string>
 | 
			
		||||
    <string name="theme_night">Nos</string>
 | 
			
		||||
    <string name="crash_dialog_title">Mae F-Droid wedi chwalu</string>
 | 
			
		||||
    <string name="crash_dialog_text">Bu gwall annisgwyl a orfododd yr ap i stopio. Hoffet anfon neges e-bost gyda\'r manylion er mwyn trwsio\'r broblem\?</string>
 | 
			
		||||
    <string name="crash_dialog_comment_prompt">Gellir ychwanegu gwybodaeth ychwanegol a sylwadau yma:</string>
 | 
			
		||||
 | 
			
		||||
@ -234,7 +234,6 @@
 | 
			
		||||
    <string name="interval_2w">Søg efter opdateringer hver anden uge</string>
 | 
			
		||||
    <string name="theme_light">Lys</string>
 | 
			
		||||
    <string name="theme_dark">Mørk</string>
 | 
			
		||||
    <string name="theme_night">Nat</string>
 | 
			
		||||
    <string name="menu_email">E-mail forfatter</string>
 | 
			
		||||
    <string name="antinonfreeassetslist">Denne app indeholder ikke-frit indhold</string>
 | 
			
		||||
    <string name="empty_search_available_app_list">Ingen matchende apps tilgængelige.</string>
 | 
			
		||||
 | 
			
		||||
@ -238,7 +238,6 @@
 | 
			
		||||
    <string name="download_error">Herunterladen fehlgeschlagen!</string>
 | 
			
		||||
    <string name="perms_description_app">Bereitgestellt von %1$s.</string>
 | 
			
		||||
    <string name="downloading">Herunterladen …</string>
 | 
			
		||||
    <string name="theme_night">Nacht</string>
 | 
			
		||||
    <string name="login_title">Legitimierung erforderlich</string>
 | 
			
		||||
    <string name="login_name">Benutzername</string>
 | 
			
		||||
    <string name="login_password">Passwort</string>
 | 
			
		||||
 | 
			
		||||
@ -236,7 +236,6 @@
 | 
			
		||||
    <string name="interval_2w">Να γίνεται έλεγχος για ενημερώσεις κάθε 2 εβδομάδες</string>
 | 
			
		||||
    <string name="theme_light">Φωτεινό</string>
 | 
			
		||||
    <string name="theme_dark">Σκοτεινό</string>
 | 
			
		||||
    <string name="theme_night">Νυχτερινό</string>
 | 
			
		||||
    <string name="swap_nfc_title">Αγγίξτε για ανταλλαγή</string>
 | 
			
		||||
    <string name="swap_nfc_description">Αν ο φίλος σας έχει το F-Droid και ενεργοποιημένο το NFC αγγίξτε μεταξύ τους τις
 | 
			
		||||
        συσκευές σας.
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,5 @@
 | 
			
		||||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<resources>
 | 
			
		||||
    <string name="theme_night">Night</string>
 | 
			
		||||
    <string name="theme_dark">Dark</string>
 | 
			
		||||
    <string name="theme_light">Light</string>
 | 
			
		||||
    <string name="status_inserting_apps">Saving app details</string>
 | 
			
		||||
 | 
			
		||||
@ -248,7 +248,6 @@
 | 
			
		||||
    <string name="interval_2w">Kontroli pri ĝisdatigoj ĉiu-2-semajne</string>
 | 
			
		||||
    <string name="theme_light">Hela</string>
 | 
			
		||||
    <string name="theme_dark">Malhela</string>
 | 
			
		||||
    <string name="theme_night">Nokta</string>
 | 
			
		||||
    <string name="crash_dialog_title">F-Droid kolapsis</string>
 | 
			
		||||
    <string name="crash_dialog_text">Senatenda eraro okazis kaj devigis aplikaĵon halti. Ĉu vi volas retmesaĝi detalojn
 | 
			
		||||
        por helpi ripari la eraron?
 | 
			
		||||
 | 
			
		||||
@ -420,7 +420,6 @@
 | 
			
		||||
    <string name="keep_forever">Siempre</string>
 | 
			
		||||
    <string name="theme_light">Claro</string>
 | 
			
		||||
    <string name="theme_dark">Oscuro</string>
 | 
			
		||||
    <string name="theme_night">Noche</string>
 | 
			
		||||
    <string name="crash_dialog_comment_prompt">Podés añadir información extra y comentarios acá:</string>
 | 
			
		||||
    <plurals name="notification_summary_more">
 | 
			
		||||
        <item quantity="one">+%1$d más…</item>
 | 
			
		||||
 | 
			
		||||
@ -86,7 +86,6 @@
 | 
			
		||||
    <string name="updates">Actualizaciones</string>
 | 
			
		||||
    <string name="app_name">F-Droid</string>
 | 
			
		||||
    <string name="notify">Mostrar actualizaciones disponibles</string>
 | 
			
		||||
    <string name="theme_night">Noche</string>
 | 
			
		||||
    <string name="theme_dark">Oscuro</string>
 | 
			
		||||
    <string name="theme_light">Claro</string>
 | 
			
		||||
    <string name="status_inserting_apps">Guardado Detalles de la Aplicacion</string>
 | 
			
		||||
 | 
			
		||||
@ -230,7 +230,6 @@
 | 
			
		||||
    <string name="repo_details">Repositorio</string>
 | 
			
		||||
    <string name="repo_url">Dirección</string>
 | 
			
		||||
    <string name="download_error">¡Descarga fallida!</string>
 | 
			
		||||
    <string name="theme_night">Noche</string>
 | 
			
		||||
    <string name="system_install_denied_permissions">¡No se han concedido permisos de sistema a la extensión! ¡Por
 | 
			
		||||
        favor, informa sobre este fallo!
 | 
			
		||||
    </string>
 | 
			
		||||
 | 
			
		||||
@ -263,7 +263,6 @@
 | 
			
		||||
    <string name="keep_forever">Igavesti</string>
 | 
			
		||||
    <string name="theme_light">Hele</string>
 | 
			
		||||
    <string name="theme_dark">Tume</string>
 | 
			
		||||
    <string name="theme_night">Öö</string>
 | 
			
		||||
    <string name="crash_dialog_title">F-Droidi tabas krahh</string>
 | 
			
		||||
    <string name="crash_dialog_comment_prompt">Sa saad lisada täiendavat informatsiooni ja kommentaare siia:</string>
 | 
			
		||||
    <string name="swap_join_same_wifi_desc">WiFi kaudu vahetamiseks peate olema samas võrgus. Kui sul puudub ligipääs
 | 
			
		||||
 | 
			
		||||
@ -246,7 +246,6 @@
 | 
			
		||||
        \ndeskargatzen\n%1$s(e)tik
 | 
			
		||||
    </string>
 | 
			
		||||
    <string name="permissions">Baimenak</string>
 | 
			
		||||
    <string name="theme_night">Gaua</string>
 | 
			
		||||
    <string name="menu_settings">Ezarpenak</string>
 | 
			
		||||
    <string name="update_auto_download">Deskargatu eguneraketak automatikoki</string>
 | 
			
		||||
    <string name="update_auto_download_summary">Eguneraketak automatikoki deskargatzen dira eta berauek instalatzeko jakinarazten zaizu</string>
 | 
			
		||||
 | 
			
		||||
@ -203,7 +203,6 @@
 | 
			
		||||
    <string name="interval_2w">بررسی هر ۲ هفته برای بهروز رسانیها</string>
 | 
			
		||||
    <string name="theme_light">روشن</string>
 | 
			
		||||
    <string name="theme_dark">تاریک</string>
 | 
			
		||||
    <string name="theme_night">شب</string>
 | 
			
		||||
    <string name="malformed_repo_uri">نادیده گرفتن نشانی اینترنتی مخزن ناهنجار: %s</string>
 | 
			
		||||
    <string name="all_other_repos_fine">تمام مخزنهای دیگر خطایی ایجاد نکردند.</string>
 | 
			
		||||
    <string name="repo_not_yet_updated">این مخزن هنوز استفاده نشده است. برای دیدن برنامه هایی که فراهم میکند باید فعّالش کنید.</string>
 | 
			
		||||
 | 
			
		||||
@ -139,7 +139,6 @@
 | 
			
		||||
    <string name="interval_1h">Tarkista päivitykset tunnin välein</string>
 | 
			
		||||
    <string name="theme_light">Vaalea</string>
 | 
			
		||||
    <string name="theme_dark">Tumma</string>
 | 
			
		||||
    <string name="theme_night">Musta</string>
 | 
			
		||||
    <string name="uninstall_confirm">Haluatko poistaa tämän sovelluksen?</string>
 | 
			
		||||
    <string name="allPerms">Kaikki</string>
 | 
			
		||||
    <string name="newPerms">Uusi</string>
 | 
			
		||||
 | 
			
		||||
@ -238,7 +238,6 @@
 | 
			
		||||
    <string name="more">Plus</string>
 | 
			
		||||
    <string name="less">Moins</string>
 | 
			
		||||
    <string name="permissions">Autorisations</string>
 | 
			
		||||
    <string name="theme_night">Nuit</string>
 | 
			
		||||
    <string name="menu_settings">Paramètres</string>
 | 
			
		||||
    <string name="login_title">Identification requise</string>
 | 
			
		||||
    <string name="login_name">Nom d\'utilisateur</string>
 | 
			
		||||
 | 
			
		||||
@ -173,7 +173,6 @@
 | 
			
		||||
    <string name="interval_2w">Procurar actualizacións cada dúas semanas</string>
 | 
			
		||||
    <string name="theme_light">Claro</string>
 | 
			
		||||
    <string name="theme_dark">Escuro</string>
 | 
			
		||||
    <string name="theme_night">Noite</string>
 | 
			
		||||
    <string name="unstable_updates_summary">Suxire actualizacións para versións inestábeis</string>
 | 
			
		||||
    <string name="antiupstreamnonfreelist">O código fonte non é completamente libre</string>
 | 
			
		||||
    <string name="proxy_host">Servidor proxy</string>
 | 
			
		||||
 | 
			
		||||
@ -234,7 +234,6 @@
 | 
			
		||||
    <string name="permissions">הרשאות</string>
 | 
			
		||||
    <string name="repo_details">מאגר</string>
 | 
			
		||||
    <string name="repo_url">כתובת</string>
 | 
			
		||||
    <string name="theme_night">לילה</string>
 | 
			
		||||
    <string name="system_install_denied_permissions">ההרשאות המיוחדות לא הוענקו להרחבה! נא לדווח על באג!</string>
 | 
			
		||||
    <string name="login_title">נדרש אימות</string>
 | 
			
		||||
    <string name="login_name">שם משתמש</string>
 | 
			
		||||
 | 
			
		||||
@ -46,7 +46,6 @@
 | 
			
		||||
    <string name="overwrite">ऊपर लिखना</string>
 | 
			
		||||
    <string name="theme_light">रोशनी</string>
 | 
			
		||||
    <string name="theme_dark">अंधेरा</string>
 | 
			
		||||
    <string name="theme_night">रात्रि</string>
 | 
			
		||||
    <string name="crash_dialog_title">F-Droid क्रैश हो गया है</string>
 | 
			
		||||
    <string name="crash_dialog_text">एक अप्रत्याशित त्रुटि के कारन एप्लीकेशन बंद हो गयी है| क्या ईमेल भेज कर इस समाधान को सुलझाने में मदद करना चाहते हैं\?</string>
 | 
			
		||||
    <string name="crash_dialog_comment_prompt">आप अन्य जानकारी और टिप्पणियाँ यहाँ लिख सकते हैं:</string>
 | 
			
		||||
 | 
			
		||||
@ -269,7 +269,6 @@
 | 
			
		||||
    <string name="keep_forever">Zauvijek</string>
 | 
			
		||||
    <string name="theme_light">Svijetla</string>
 | 
			
		||||
    <string name="theme_dark">Tamna</string>
 | 
			
		||||
    <string name="theme_night">Noćna</string>
 | 
			
		||||
    <string name="crash_dialog_title">F-Droid se srušio</string>
 | 
			
		||||
    <string name="crash_dialog_text">Dogodila se neočekivana greška, aplikacija je prisilno zaustavljena. Želite li poslati detalje kvara putem e-pošte da bismo ga popravili\?</string>
 | 
			
		||||
    <string name="crash_dialog_comment_prompt">Možete dodati dodatne informacije i komentare ovdje:</string>
 | 
			
		||||
 | 
			
		||||
@ -178,7 +178,6 @@
 | 
			
		||||
    <string name="interval_2w">Frissítések keresése kéthetente</string>
 | 
			
		||||
    <string name="theme_light">Világos</string>
 | 
			
		||||
    <string name="theme_dark">Sötét</string>
 | 
			
		||||
    <string name="theme_night">Éjszakai</string>
 | 
			
		||||
    <string name="crash_dialog_title">Az F-Droid összeomlott</string>
 | 
			
		||||
    <string name="crash_dialog_text">Egy váratlan hiba következtében az alkalmazásnak le kellett állnia. Szeretné
 | 
			
		||||
        elküldeni e-mailben a részleteket, hogy segítsen a probléma javításában?
 | 
			
		||||
 | 
			
		||||
@ -91,7 +91,6 @@
 | 
			
		||||
    <string name="keep_forever">Ընդմիշտ</string>
 | 
			
		||||
    <string name="theme_light">Բաց</string>
 | 
			
		||||
    <string name="theme_dark">Մուգ</string>
 | 
			
		||||
    <string name="theme_night">Գիշեր</string>
 | 
			
		||||
    <string name="notification_title_single_update_available">Թարմացում է հասանելի</string>
 | 
			
		||||
    <string name="notification_title_single_ready_to_install">Պատրաստ է տեղադրման</string>
 | 
			
		||||
    <string name="notification_title_single_ready_to_install_update">Թարմացումը պատրաստ է տեղադրման</string>
 | 
			
		||||
 | 
			
		||||
@ -247,7 +247,6 @@
 | 
			
		||||
    <string name="interval_2w">Periksa pembaruan setiap 2 minggu sekali</string>
 | 
			
		||||
    <string name="theme_light">Terang</string>
 | 
			
		||||
    <string name="theme_dark">Gelap</string>
 | 
			
		||||
    <string name="theme_night">Malam</string>
 | 
			
		||||
    <string name="crash_dialog_title">F-Droid telah gagal</string>
 | 
			
		||||
    <string name="crash_dialog_text">Terjadi kesalahan yang tidak terduga yang memaksa aplikasi berhenti. Maukah mengirimkan detail melalui email untuk membantu memperbaiki masalah ini\?</string>
 | 
			
		||||
    <string name="crash_dialog_comment_prompt">Anda bisa menambahkan informasi ekstra dan komentar di sini:</string>
 | 
			
		||||
 | 
			
		||||
@ -208,7 +208,6 @@
 | 
			
		||||
    <string name="keep_forever">Að eilífu</string>
 | 
			
		||||
    <string name="theme_light">Ljóst</string>
 | 
			
		||||
    <string name="theme_dark">Dökkt</string>
 | 
			
		||||
    <string name="theme_night">Næturhamur</string>
 | 
			
		||||
    <string name="crash_dialog_title">F-Droid hrundi</string>
 | 
			
		||||
    <string name="crash_dialog_comment_prompt">Þú getur bætt hér við aukaupplýsingum og athugasemdum:</string>
 | 
			
		||||
    <string name="unstable_updates_summary">Stinga upp á uppfærslum í óstöðugar útgáfur</string>
 | 
			
		||||
 | 
			
		||||
@ -195,7 +195,6 @@
 | 
			
		||||
    </string>
 | 
			
		||||
    <string name="theme_light">Chiaro</string>
 | 
			
		||||
    <string name="theme_dark">Scuro</string>
 | 
			
		||||
    <string name="theme_night">Notte</string>
 | 
			
		||||
    <string name="permissions">Autorizzazioni</string>
 | 
			
		||||
    <string name="unstable_updates_summary">Suggerisci aggiornamenti a versioni non stabili</string>
 | 
			
		||||
    <string name="login_title">Autenticazione richiesta</string>
 | 
			
		||||
 | 
			
		||||
@ -229,7 +229,6 @@
 | 
			
		||||
\n%2$s
 | 
			
		||||
\n%1$sから</string>
 | 
			
		||||
    <string name="permissions">権限</string>
 | 
			
		||||
    <string name="theme_night">ナイト</string>
 | 
			
		||||
    <string name="menu_settings">設定</string>
 | 
			
		||||
    <string name="login_title">認証が必要です</string>
 | 
			
		||||
    <string name="login_name">ユーザー名</string>
 | 
			
		||||
 | 
			
		||||
@ -147,7 +147,6 @@
 | 
			
		||||
    <string name="proxy_host">Asenneftaɣ Apṛuksi</string>
 | 
			
		||||
    <string name="proxy_port">Tabburt n upṛuksi</string>
 | 
			
		||||
    <string name="status_inserting_apps">Rnu tazmilt i usnas</string>
 | 
			
		||||
    <string name="theme_night">Iḍ</string>
 | 
			
		||||
    <string name="app_name">F-Droid</string>
 | 
			
		||||
    <string name="menu_uninstall">Kkes</string>
 | 
			
		||||
    <string name="preference_manage_installed_apps">Asefrak n isnasen ibedden</string>
 | 
			
		||||
 | 
			
		||||
@ -5,7 +5,6 @@
 | 
			
		||||
    <string name="notification_action_install">ಸ್ಥಾಪಿಸಿ</string>
 | 
			
		||||
    <string name="notification_title_summary_install_error">ಸ್ಥಾಪನೆ ವಿಫಲವಾಗಿದೆ</string>
 | 
			
		||||
    <string name="notification_title_summary_installing">ಸ್ಥಾಪಿಸಲಾಗುತ್ತಿದೆ</string>
 | 
			
		||||
    <string name="theme_night">ರಾತ್ರಿ</string>
 | 
			
		||||
    <string name="keep_year">1 ವರ್ಷ</string>
 | 
			
		||||
    <string name="keep_month">1 ತಿಂಗಳು</string>
 | 
			
		||||
    <string name="keep_hour">1 ಗಂಟೆ</string>
 | 
			
		||||
 | 
			
		||||
@ -237,7 +237,6 @@
 | 
			
		||||
    <string name="interval_2w">2주마다 업데이트를 확인</string>
 | 
			
		||||
    <string name="theme_light">밝음</string>
 | 
			
		||||
    <string name="theme_dark">어두움</string>
 | 
			
		||||
    <string name="theme_night">야간</string>
 | 
			
		||||
    <string name="update_auto_download">업데이트를 자동으로 얻기</string>
 | 
			
		||||
    <string name="update_auto_download_summary">업데이트를 자동으로 다운로드하고 업데이트의 설치를 알려줍니다</string>
 | 
			
		||||
    <string name="repo_provider">저장소: %s</string>
 | 
			
		||||
 | 
			
		||||
@ -340,7 +340,6 @@
 | 
			
		||||
    <string name="status_processing_xml_percent">Apdorojama %2$s / %3$s (%4$d%%) iš %1$s</string>
 | 
			
		||||
    <string name="theme_dark">Tamsus</string>
 | 
			
		||||
    <string name="theme_light">Šviesus</string>
 | 
			
		||||
    <string name="theme_night">Naktinis</string>
 | 
			
		||||
    <string name="enable_proxy_summary">Naudoti HTTP Proxy visiems ryšiams</string>
 | 
			
		||||
    <string name="malformed_repo_uri">Nepaisoma netaisyklingo saugyklos URI: %s</string>
 | 
			
		||||
    <string name="repo_add_mirror">Pridėti tinklavietę</string>
 | 
			
		||||
 | 
			
		||||
@ -157,7 +157,6 @@
 | 
			
		||||
    <string name="menu_add_repo">Ново складиште</string>
 | 
			
		||||
    <string name="menu_manage">Складишта</string>
 | 
			
		||||
    <string name="back">Назад</string>
 | 
			
		||||
    <string name="theme_night">Ноќна</string>
 | 
			
		||||
    <string name="theme_dark">Темна</string>
 | 
			
		||||
    <string name="theme_light">Светла</string>
 | 
			
		||||
    <string name="crash_dialog_comment_prompt">Можете да додадете дополнителни информации и коментари овде:</string>
 | 
			
		||||
 | 
			
		||||
Some files were not shown because too many files have changed in this diff Show More
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user