Merge branch 'material-components' into 'master'

feat: rebase app themes to material themes

Closes #2145

See merge request fdroid/fdroidclient!963
This commit is contained in:
Hans-Christoph Steiner 2021-04-12 16:36:18 +00:00
commit 9d5af90c61
143 changed files with 1624 additions and 1445 deletions

View File

@ -28,7 +28,7 @@ android {
versionName getVersionName()
testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
minSdkVersion 14
minSdkVersion 22
//noinspection ExpiredTargetSdkVersion
targetSdkVersion 25
/*

View File

@ -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"/>

View File

@ -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"/>

View File

@ -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);
}
}
}

View File

@ -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

View File

@ -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);

View File

@ -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 boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
public void onClick(View view) {
// Handle navigation icon press
onBackPressed();
return true;
}
return super.onOptionsItemSelected(item);
});
}
}

View File

@ -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);

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -1,20 +1,31 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
<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">
tools:context=".panic.CalculatorActivity"
android:fitsSystemWindows="true">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/topAppBarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:fitsSystemWindows="true"
app:liftOnScroll="true"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:theme="?attr/actionBarTheme" />
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"
@ -32,7 +43,7 @@
app:layout_constraintBottom_toTopOf="@+id/ce"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/toolbar"
app:layout_constraintTop_toBottomOf="@+id/topAppBarLayout"
tools:text="1337+42" />
<Button

View File

@ -1,18 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
<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">
android:orientation="vertical"
android:fitsSystemWindows="true">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
<com.google.android.material.appbar.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
app:theme="?attr/actionBarTheme" />
android:fitsSystemWindows="true"
app:liftOnScroll="true">
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
<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"

View File

@ -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"

View File

@ -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" />

View File

@ -1,20 +1,25 @@
<?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"

View File

@ -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">

View File

@ -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>

View File

@ -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);

View File

@ -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() {
/**
* 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();
}
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;
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
break;
case light:
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
break;
default:
return R.style.AppThemeLight;
// `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) {

View File

@ -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();

View File

@ -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
}

View File

@ -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();

View File

@ -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());

View File

@ -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);

View File

@ -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,19 +294,18 @@ 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() {
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) {
ManageReposActivity.this.finish();
finish();
}
}
});
@ -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

View File

@ -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
*/

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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:
if (AppCompatDelegate.getDefaultNightMode() == AppCompatDelegate.MODE_NIGHT_YES) {
return R.color.fdroid_night;
default:
return R.color.fdroid_blue;
}
return R.color.fdroid_blue;
}
private static class NonScrollingHorizontalLayoutManager extends LinearLayoutManager {

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View 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>

View File

@ -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>

View File

@ -6,5 +6,5 @@
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" />
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>

View File

@ -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>

View File

@ -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>

View 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>

View 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>

View File

@ -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>

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -1,18 +1,28 @@
<?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"
<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">
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:fitsSystemWindows="true">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
<com.google.android.material.appbar.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:title="@string/repo_details"
app:theme="?attr/actionBarTheme" />
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"

View File

@ -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"/>

View File

@ -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"/>

View File

@ -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">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<!-- 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="48dip"
android:layout_width="match_parent"
android:layout_height="48dip"
tools:src="@drawable/ic_launcher"
android:layout_marginTop="8dp"
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_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="ContentDescription" />
tools:ignore="ContentDescription"
tools:src="@drawable/ic_launcher" />
<TextView
tools:text="F-Droid An application summary which takes up too much space and must ellipsize"
android:id="@+id/summary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/summary"
android:maxLines="3"
android:layout_alignParentBottom="true"
android:ellipsize="end"
app:layout_constraintTop_toBottomOf="@+id/icon"
app:layout_constraintRight_toRightOf="parent"
android:maxLines="3"
app:layout_constraintLeft_toLeftOf="parent"
android:layout_marginTop="8dp" />
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>

View File

@ -1,11 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
<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
@ -13,15 +15,17 @@
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">
<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/colorPrimary"
app:layout_scrollFlags="scroll|exitUntilCollapsed"
app:statusBarScrim="?attr/colorPrimaryVariant"
app:expandedTitleTextAppearance="@style/TextAppearance.App.CollapsingToolbar.Expanded"
app:collapsedTitleTextAppearance="@style/TextAppearance.App.CollapsingToolbar.Collapsed"
app:expandedTitleMarginTop="24dp">
<org.fdroid.fdroid.views.apps.FeatureImage
@ -32,12 +36,14 @@
android:fitsSystemWindows="true"
app:layout_collapseMode="parallax" />
<androidx.appcompat.widget.Toolbar
<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"
app:popupTheme="@style/AppThemeLight.PopupOverlay" />
style="@style/Widget.MaterialComponents.Toolbar.PrimarySurface" />
</com.google.android.material.appbar.CollapsingToolbarLayout>

View File

@ -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"

View File

@ -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

View File

@ -1,19 +1,31 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
<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:layout_height="match_parent"
android:fitsSystemWindows="true">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="0dp"
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/topAppBarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:fitsSystemWindows="true"
app:liftOnScroll="true"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:theme="?attr/actionBarTheme" />
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"
@ -25,7 +37,7 @@
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/toolbar" />
app:layout_constraintTop_toBottomOf="@+id/topAppBarLayout" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/app_list"
@ -35,7 +47,7 @@
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/toolbar"
app:layout_constraintTop_toBottomOf="@+id/topAppBarLayout"
tools:listitem="@layout/installed_app_list_item" />
<!--

View File

@ -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"

View File

@ -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"

View File

@ -1,18 +1,28 @@
<?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"
<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">
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:fitsSystemWindows="true">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
<com.google.android.material.appbar.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:title="@string/menu_manage"
app:theme="?attr/actionBarTheme" />
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"

View File

@ -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"

View File

@ -1,7 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<transitionSet>
<changeImageTransform />
<changeBounds />
<changeTransform />
<changeClipBounds />
</transitionSet>

View File

@ -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?

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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 αγγίξτε μεταξύ τους τις
συσκευές σας.

View File

@ -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>

View File

@ -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?

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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?

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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