Merge branch 'new-ui--empty-state-text' into 'master'

Feedback about empty lists

Closes #879

See merge request !463
This commit is contained in:
Hans-Christoph Steiner 2017-04-07 12:47:59 +00:00
commit 60241f3ae4
71 changed files with 346 additions and 179 deletions

View File

@ -10,8 +10,6 @@ import java.net.InetSocketAddress;
import java.net.Proxy;
import java.net.SocketAddress;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -47,7 +45,6 @@ public final class Preferences implements SharedPreferences.OnSharedPreferenceCh
public static final String PREF_UPD_WIFI_ONLY = "updateOnWifiOnly";
public static final String PREF_AUTO_DOWNLOAD_INSTALL_UPDATES = "updateAutoDownload";
public static final String PREF_UPD_NOTIFY = "updateNotify";
public static final String PREF_UPD_HISTORY = "updateHistoryDays";
public static final String PREF_ROOTED = "rooted";
public static final String PREF_HIDE_ANTI_FEATURE_APPS = "hideAntiFeatureApps";
public static final String PREF_INCOMP_VER = "incompatibleVersions";
@ -72,7 +69,6 @@ public final class Preferences implements SharedPreferences.OnSharedPreferenceCh
private static final boolean DEFAULT_ROOTED = true;
private static final boolean DEFAULT_HIDE_ANTI_FEATURE_APPS = false;
private static final int DEFAULT_UPD_HISTORY = 14;
private static final boolean DEFAULT_PRIVILEGED_INSTALLER = true;
//private static final boolean DEFAULT_LOCAL_REPO_BONJOUR = true;
private static final long DEFAULT_KEEP_CACHE_TIME = TimeUnit.DAYS.toMillis(1);
@ -103,7 +99,6 @@ public final class Preferences implements SharedPreferences.OnSharedPreferenceCh
private final List<ChangeListener> filterAppsRequiringRootListeners = new ArrayList<>();
private final List<ChangeListener> filterAppsRequiringAntiFeaturesListeners = new ArrayList<>();
private final List<ChangeListener> updateHistoryListeners = new ArrayList<>();
private final List<ChangeListener> localRepoNameListeners = new ArrayList<>();
private final List<ChangeListener> localRepoHttpsListeners = new ArrayList<>();
private final List<ChangeListener> unstableUpdatesListeners = new ArrayList<>();
@ -294,23 +289,6 @@ public final class Preferences implements SharedPreferences.OnSharedPreferenceCh
}
}
/**
* Calculate the cutoff date we'll use for What's New and Recently
* Updated...
*/
public Date calcMaxHistory() {
final String daysString = preferences.getString(PREF_UPD_HISTORY, Integer.toString(DEFAULT_UPD_HISTORY));
int maxHistoryDays;
try {
maxHistoryDays = Integer.parseInt(daysString);
} catch (NumberFormatException e) {
maxHistoryDays = DEFAULT_UPD_HISTORY;
}
Calendar recent = Calendar.getInstance();
recent.add(Calendar.DAY_OF_YEAR, -maxHistoryDays);
return recent.getTime();
}
/**
* This is cached as it is called several times inside app list adapters.
* Providing it here means the shared preferences file only needs to be
@ -379,11 +357,6 @@ public final class Preferences implements SharedPreferences.OnSharedPreferenceCh
listener.onPreferenceChange();
}
break;
case PREF_UPD_HISTORY:
for (ChangeListener listener : updateHistoryListeners) {
listener.onPreferenceChange();
}
break;
case PREF_LOCAL_REPO_NAME:
for (ChangeListener listener : localRepoNameListeners) {
listener.onPreferenceChange();
@ -402,14 +375,6 @@ public final class Preferences implements SharedPreferences.OnSharedPreferenceCh
}
}
public void registerUpdateHistoryListener(ChangeListener listener) {
updateHistoryListeners.add(listener);
}
public void unregisterUpdateHistoryListener(ChangeListener listener) {
updateHistoryListeners.remove(listener);
}
public void registerLocalRepoNameListeners(ChangeListener listener) {
localRepoNameListeners.add(listener);
}

View File

@ -90,6 +90,8 @@ public class UpdateService extends IntentService {
private NotificationCompat.Builder notificationBuilder;
private AppUpdateStatusManager appUpdateStatusManager;
private static boolean updating;
public UpdateService() {
super("UpdateService");
}
@ -136,6 +138,14 @@ public class UpdateService extends IntentService {
}
/**
* Whether or not a repo update is currently in progress. Used to show feedback throughout
* the app to users, so they know something is happening.
*/
public static boolean isUpdating() {
return updating;
}
@Override
public void onCreate() {
super.onCreate();
@ -365,6 +375,7 @@ public class UpdateService extends IntentService {
return;
}
updating = true;
notificationManager.notify(NOTIFY_ID_UPDATING, notificationBuilder.build());
LocalBroadcastManager.getInstance(this).registerReceiver(updateStatusReceiver,
new IntentFilter(LOCAL_ACTION_STATUS));
@ -452,6 +463,8 @@ public class UpdateService extends IntentService {
} catch (Exception e) {
Log.e(TAG, "Exception during update processing", e);
sendStatus(this, STATUS_ERROR_GLOBAL, e.getMessage());
} finally {
updating = false;
}
long time = System.currentTimeMillis() - startTime;

View File

@ -66,12 +66,14 @@ import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.Formatter;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.concurrent.TimeUnit;
public final class Utils {
@ -508,6 +510,14 @@ public final class Utils {
return sb;
}
/**
* Calculate the number of days since the given date.
*/
public static int daysSince(@NonNull Date date) {
long msDiff = Calendar.getInstance().getTimeInMillis() - date.getTime();
return (int) TimeUnit.MILLISECONDS.toDays(msDiff);
}
// Need this to add the unimplemented support for ordered and unordered
// lists to Html.fromHtml().
public static class HtmlTagHandler implements Html.TagHandler {

View File

@ -631,12 +631,6 @@ public class AppProvider extends FDroidProvider {
return new AppQuerySelection(selection, args);
}
private AppQuerySelection queryRecentlyUpdated() {
final String selection = getTableName() + "." + Cols.LAST_UPDATED + " > ? ";
final String[] args = {Utils.formatDate(Preferences.get().calcMaxHistory(), "")};
return new AppQuerySelection(selection, args);
}
private AppQuerySelection queryCategory(String category) {
if (TextUtils.isEmpty(category)) {
return new AppQuerySelection();
@ -741,7 +735,12 @@ public class AppProvider extends FDroidProvider {
String lastUpdated = table + "." + Cols.LAST_UPDATED + " DESC";
sortOrder = lastUpdated + ", " + isNew;
selection = selection.add(queryRecentlyUpdated());
// There seems no reason to limit the number of apps on the front page, but it helps
// if it loads quickly, as it is the default view shown every time F-Droid is opened.
// 200 is an arbitrary number which hopefully gives the user enough to scroll through
// if they are bored.
limit = 200;
includeSwap = false;
break;

View File

@ -16,6 +16,7 @@ import org.fdroid.fdroid.data.Schema.RepoTable;
import org.fdroid.fdroid.data.Schema.RepoTable.Cols;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class RepoProvider extends FDroidProvider {
@ -251,6 +252,40 @@ public class RepoProvider extends FDroidProvider {
}
return count;
}
@Nullable
public static Date lastUpdate(Context context) {
ContentResolver resolver = context.getContentResolver();
final String[] projection = {Cols.LAST_UPDATED};
final String selection = Cols.IN_USE + " = 1";
Cursor cursor = resolver.query(getContentUri(), projection, selection, null, Cols.LAST_UPDATED + " DESC");
Date lastUpdate = null;
if (cursor != null) {
if (cursor.getCount() > 0) {
cursor.moveToFirst();
lastUpdate = Utils.parseDate(cursor.getString(0), null);
}
cursor.close();
}
return lastUpdate;
}
public static int countEnabledRepos(Context context) {
ContentResolver resolver = context.getContentResolver();
final String[] projection = {Cols._ID};
final String selection = Cols.IN_USE + " = 1";
Cursor cursor = resolver.query(getContentUri(), projection, selection, null, null);
int count = 0;
if (cursor != null) {
count = cursor.getCount();
cursor.close();
}
return count;
}
}
private static final String PROVIDER_NAME = "RepoProvider";

View File

@ -48,10 +48,8 @@ import org.fdroid.fdroid.privileged.views.AppSecurityPermissions;
import java.text.NumberFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import java.util.Locale;
import java.util.concurrent.TimeUnit;
public class AppDetailsRecyclerViewAdapter
extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
@ -405,9 +403,8 @@ public class AppDetailsRecyclerViewAdapter
authorView.setVisibility(View.GONE);
}
if (app.lastUpdated != null) {
long msDiff = Calendar.getInstance().getTimeInMillis() - app.lastUpdated.getTime();
int daysDiff = (int) TimeUnit.MILLISECONDS.toDays(msDiff);
lastUpdateView.setText(lastUpdateView.getContext().getResources().getQuantityString(R.plurals.details_last_update_days, daysDiff, daysDiff));
int daysSince = Utils.daysSince(app.lastUpdated);
lastUpdateView.setText(lastUpdateView.getContext().getResources().getQuantityString(R.plurals.details_last_update_days, daysSince, daysSince));
lastUpdateView.setVisibility(View.VISIBLE);
} else {
lastUpdateView.setVisibility(View.GONE);

View File

@ -0,0 +1,81 @@
package org.fdroid.fdroid.views;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.support.v4.content.LocalBroadcastManager;
import android.util.AttributeSet;
import android.view.Gravity;
import android.view.View;
import org.fdroid.fdroid.R;
import org.fdroid.fdroid.UpdateService;
/**
* Widget which reflects whether or not a repo update is currently in progress or not. If so, shows
* some sort of feedback to the user.
*/
public class BannerUpdatingRepos extends android.support.v7.widget.AppCompatTextView {
public BannerUpdatingRepos(Context context) {
this(context, null);
}
public BannerUpdatingRepos(Context context, AttributeSet attrs) {
this(context, attrs, android.R.attr.textViewStyle);
}
public BannerUpdatingRepos(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
int padding = (int) getResources().getDimension(R.dimen.banner__padding);
setPadding(padding, padding, padding, padding);
setBackgroundColor(0xFF4A4A4A);
setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
setText(R.string.update_notification_title);
setTextColor(0xFFFFFFFF);
}
@Override
protected void onAttachedToWindow() {
super.onAttachedToWindow();
monitorRepoUpdates();
}
@Override
protected void onDetachedFromWindow() {
super.onDetachedFromWindow();
stopMonitoringRepoUpdates();
}
private void monitorRepoUpdates() {
if (isInEditMode()) {
return;
}
LocalBroadcastManager.getInstance(getContext()).registerReceiver(onRepoFeedback, new IntentFilter(UpdateService.LOCAL_ACTION_STATUS));
setBannerIsVisible(UpdateService.isUpdating());
}
private void setBannerIsVisible(boolean isUpdating) {
if (isUpdating) {
setVisibility(View.VISIBLE);
} else {
setVisibility(View.GONE);
}
}
private void stopMonitoringRepoUpdates() {
LocalBroadcastManager.getInstance(getContext()).unregisterReceiver(onRepoFeedback);
}
private final BroadcastReceiver onRepoFeedback = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// Anything other than a STATUS_INFO broadcast signifies that it was complete (and out
// banner should be removed).
boolean isInfo = intent.getIntExtra(UpdateService.EXTRA_STATUS_CODE, 0) == UpdateService.STATUS_INFO;
setBannerIsVisible(isInfo);
}
};
}

View File

@ -38,6 +38,12 @@ import org.fdroid.fdroid.views.apps.FeatureImage;
* + {@link R.id#featured_image} ({@link ImageView}, optional)
*/
public class AppCardController extends RecyclerView.ViewHolder implements ImageLoadingListener, View.OnClickListener {
/**
* After this many days, don't consider showing the "New" tag next to an app.
*/
private static final int DAYS_TO_CONSIDER_NEW = 14;
@NonNull
private final ImageView icon;
@ -104,7 +110,7 @@ public class AppCardController extends RecyclerView.ViewHolder implements ImageL
summary.setText(Utils.formatAppNameAndSummary(app.name, app.summary));
if (newTag != null) {
if (app.added != null && app.lastUpdated != null && app.added.equals(app.lastUpdated)) {
if (isConsideredNew(app)) {
newTag.setVisibility(View.VISIBLE);
} else {
newTag.setVisibility(View.GONE);
@ -130,6 +136,15 @@ public class AppCardController extends RecyclerView.ViewHolder implements ImageL
}
}
private boolean isConsideredNew(@NonNull App app) {
//noinspection SimplifiableIfStatement
if (app.added == null || app.lastUpdated == null || !app.added.equals(app.lastUpdated)) {
return false;
}
return Utils.daysSince(app.added) <= DAYS_TO_CONSIDER_NEW;
}
/**
* When the user clicks/touches an app card, we launch the {@link AppDetails2} activity in response.
*/

View File

@ -32,7 +32,6 @@ public class PreferencesFragment extends PreferenceFragment
Preferences.PREF_UPD_INTERVAL,
Preferences.PREF_UPD_WIFI_ONLY,
Preferences.PREF_UPD_NOTIFY,
Preferences.PREF_UPD_HISTORY,
Preferences.PREF_ROOTED,
Preferences.PREF_HIDE_ANTI_FEATURE_APPS,
Preferences.PREF_INCOMP_VER,
@ -105,10 +104,6 @@ public class PreferencesFragment extends PreferenceFragment
checkSummary(key, R.string.notify_on);
break;
case Preferences.PREF_UPD_HISTORY:
textSummary(key, R.string.update_history_summ);
break;
case Preferences.PREF_THEME:
entrySummary(key);
// TODO: Ask MainActivity to restart itself.

View File

@ -12,6 +12,7 @@ import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.TextView;
import org.fdroid.fdroid.R;
import org.fdroid.fdroid.data.CategoryProvider;
@ -30,6 +31,8 @@ class CategoriesViewBinder implements LoaderManager.LoaderCallbacks<Cursor> {
private final CategoryAdapter categoryAdapter;
private final AppCompatActivity activity;
private final TextView emptyState;
private final RecyclerView categoriesList;
CategoriesViewBinder(final AppCompatActivity activity, FrameLayout parent) {
this.activity = activity;
@ -38,7 +41,9 @@ class CategoriesViewBinder implements LoaderManager.LoaderCallbacks<Cursor> {
categoryAdapter = new CategoryAdapter(activity, activity.getSupportLoaderManager());
RecyclerView categoriesList = (RecyclerView) categoriesView.findViewById(R.id.category_list);
emptyState = (TextView) categoriesView.findViewById(R.id.empty_state);
categoriesList = (RecyclerView) categoriesView.findViewById(R.id.category_list);
categoriesList.setHasFixedSize(true);
categoriesList.setLayoutManager(new LinearLayoutManager(activity));
categoriesList.setAdapter(categoryAdapter);
@ -77,6 +82,14 @@ class CategoriesViewBinder implements LoaderManager.LoaderCallbacks<Cursor> {
}
categoryAdapter.setCategoriesCursor(cursor);
if (categoryAdapter.getItemCount() == 0) {
emptyState.setVisibility(View.VISIBLE);
categoriesList.setVisibility(View.GONE);
} else {
emptyState.setVisibility(View.GONE);
categoriesList.setVisibility(View.VISIBLE);
}
}
@Override

View File

@ -13,14 +13,19 @@ import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.TextView;
import org.fdroid.fdroid.R;
import org.fdroid.fdroid.UpdateService;
import org.fdroid.fdroid.Utils;
import org.fdroid.fdroid.data.AppProvider;
import org.fdroid.fdroid.data.RepoProvider;
import org.fdroid.fdroid.data.Schema;
import org.fdroid.fdroid.views.apps.AppListActivity;
import org.fdroid.fdroid.views.whatsnew.WhatsNewAdapter;
import java.util.Date;
/**
* Loads a list of newly added or recently updated apps and displays them to the user.
*/
@ -30,6 +35,8 @@ class WhatsNewViewBinder implements LoaderManager.LoaderCallbacks<Cursor> {
private final WhatsNewAdapter whatsNewAdapter;
private final AppCompatActivity activity;
private final TextView emptyState;
private final RecyclerView appList;
WhatsNewViewBinder(final AppCompatActivity activity, FrameLayout parent) {
this.activity = activity;
@ -41,7 +48,9 @@ class WhatsNewViewBinder implements LoaderManager.LoaderCallbacks<Cursor> {
GridLayoutManager layoutManager = new GridLayoutManager(activity, 2);
layoutManager.setSpanSizeLookup(new WhatsNewAdapter.SpanSizeLookup());
RecyclerView appList = (RecyclerView) whatsNewView.findViewById(R.id.app_list);
emptyState = (TextView) whatsNewView.findViewById(R.id.empty_state);
appList = (RecyclerView) whatsNewView.findViewById(R.id.app_list);
appList.setHasFixedSize(true);
appList.setLayoutManager(layoutManager);
appList.setAdapter(whatsNewAdapter);
@ -89,6 +98,36 @@ class WhatsNewViewBinder implements LoaderManager.LoaderCallbacks<Cursor> {
}
whatsNewAdapter.setAppsCursor(cursor);
if (whatsNewAdapter.getItemCount() == 0) {
emptyState.setVisibility(View.VISIBLE);
appList.setVisibility(View.GONE);
explainEmptyStateToUser();
} else {
emptyState.setVisibility(View.GONE);
appList.setVisibility(View.VISIBLE);
}
}
private void explainEmptyStateToUser() {
StringBuilder emptyStateText = new StringBuilder();
emptyStateText.append(activity.getString(R.string.latest__empty_state__no_recent_apps));
emptyStateText.append("\n\n");
int repoCount = RepoProvider.Helper.countEnabledRepos(activity);
if (repoCount == 0) {
emptyStateText.append(activity.getString(R.string.latest__empty_state__no_enabled_repos));
} else {
Date lastUpdate = RepoProvider.Helper.lastUpdate(activity);
if (lastUpdate == null) {
emptyStateText.append(activity.getString(R.string.latest__empty_state__never_updated));
} else {
int daysSince = Utils.daysSince(lastUpdate);
emptyStateText.append(activity.getResources().getQuantityString(R.plurals.details_last_update_days, daysSince, daysSince));
}
}
emptyState.setText(emptyStateText.toString());
}
@Override

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
<android.support.constraint.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"
@ -7,16 +7,46 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
<org.fdroid.fdroid.views.BannerUpdatingRepos
android:id="@+id/banner_updating_repos"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
tools:layout_editor_absoluteX="8dp" />
<TextView
android:id="@+id/empty_state"
android:layout_width="0dp"
android:layout_height="0dp"
style="@style/AppListEmptyText"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:visibility="gone"
android:text="@string/categories__empty_state__no_categories" />
<android.support.v7.widget.RecyclerView
android:id="@+id/category_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_width="0dp"
android:layout_height="0dp"
tools:listitem="@layout/category_item"
app:layout_constraintTop_toBottomOf="@+id/banner_updating_repos"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:scrollbars="vertical" />
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:scrollbars="vertical"
tools:layout_editor_absoluteX="0dp" />
<include layout="@layout/fab_search" />
<include layout="@layout/fab_search"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:layout_marginBottom="@dimen/fab_margin"
android:layout_marginEnd="@dimen/fab_margin"
android:layout_marginRight="@dimen/fab_margin" />
</android.support.design.widget.CoordinatorLayout>
</android.support.constraint.ConstraintLayout>

View File

@ -12,16 +12,32 @@
android:layout_height="match_parent"
android:id="@+id/swipe_to_refresh">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<org.fdroid.fdroid.views.BannerUpdatingRepos
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/empty_state"
android:layout_width="match_parent"
android:layout_height="match_parent"
style="@style/AppListEmptyText"
android:visibility="gone"
tools:text="@string/latest__empty_state__no_recent_apps"/>
<android.support.v7.widget.RecyclerView
android:id="@+id/app_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:listitem="@layout/app_card_normal"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:scrollbars="vertical" />
</LinearLayout>
</android.support.v4.widget.SwipeRefreshLayout>
<include layout="@layout/fab_search" />

View File

@ -24,8 +24,6 @@
<string name="update_auto_install_summary">Laai en installeer opdaterings in die agtergrond</string>
<string name="notify">Opdaterings kennisgewings</string>
<string name="notify_on">Wys \'n kennisgewing wanneer opdaterings beskikbaar is</string>
<string name="update_history">Dateer geskiedenis op</string>
<string name="update_history_summ">Hoeveelheid dae wat programme as nuut of onlangs geag word: %s</string>
<string name="system_installer">Bevoorregte uitbreiding</string>
<string name="system_installer_on">Gebruik F-Droid bevoorregte uitbreiding om pakkettete te installeer, verander of verwyder</string>
<string name="uninstall_system">Opdateer/Verwyder bevoorregte uitbreiding</string>

View File

@ -79,8 +79,6 @@
<string name="update_auto_download_summary">تحميل ملفات التحديث في الخلفية</string>
<string name="notify">تحديث التنبيهات</string>
<string name="notify_on">إظهار تنبيه عندما تتوفر التحديثات</string>
<string name="update_history">تحديث المحفوظات</string>
<string name="update_history_summ">أيام للنظر في تطبيقات جديدة أو الأخيرة: %s</string>
<string name="system_installer">ملحقات متميزة</string>
<string name="system_installer_on">استخدام اف-درويد مميز الملحقات لتثبيت وتحديث وإزالة الحزم</string>
<string name="uninstall_system">تحديث / إلغاء مميز الملحقات</string>

View File

@ -15,8 +15,6 @@
<string name="automatic_scan_wifi_on">Auto-anovar namái en redes non midíes como Wi-Fi</string>
<string name="notify">Avisos d\'anovamientos</string>
<string name="notify_on">Amuesa un avisu cuando tán disponibles anovamientos</string>
<string name="update_history">Anovar historia</string>
<string name="update_history_summ">Díes pa considerar a les aplicaciones nueves o recientes: %s</string>
<string name="system_installer">Estensión con privilexos</string>
<string name="system_installer_on">Usa la estensión F-droid con privilexos pa instalar, anovar y desaniciar paquetes</string>
<string name="local_repo_name">Nome del to repositoriu llocal</string>

View File

@ -26,8 +26,6 @@
<string name="update_auto_install_summary">Спампоўваць і ўсталёўваць абнаўленні ў фоне</string>
<string name="notify">Абвесткі пра абнаўленні</string>
<string name="notify_on">Паказваць абвесткі калі ёсць абнаўленні</string>
<string name="update_history">Гісторыя абнаўленняў</string>
<string name="update_history_summ">Сколькі дзён лічыць праграму новай ці нядаўна абноўленай: %s</string>
<string name="system_installer">Прывілеяваны дадатак</string>
<string name="system_installer_on">Выкарыстоўваць прывілеяваны дадатак для ўсталёўкі, абнаўлення ці выдалення пакетаў</string>
<string name="uninstall_system">Абнавіць/Выдаліць прывілеяваны дадатак</string>

View File

@ -15,8 +15,6 @@
<string name="automatic_scan_wifi_on">Актуализирането на списъка с приложения ще става само през Wi-Fi</string>
<string name="notify">Известяване</string>
<string name="notify_on">Известява при наличие на актуализация</string>
<string name="update_history">История на актуализациите</string>
<string name="update_history_summ">Счита за нови или скорошни приложенията от преди (дни): %s</string>
<string name="system_installer">Инсталиране чрез системни разрешения</string>
<string name="system_installer_on">Ползване на системни права за инсталиране, актуализиране и премахване на приложения</string>
<string name="local_repo_name">Име на локалното хранилище</string>

View File

@ -14,8 +14,6 @@
<string name="automatic_scan_wifi_on">Actualitzeu la llista d\'aplicacions en xarxes sense limitació de tràfic com les Wi-Fi</string>
<string name="notify">Notificacions d\'actualitzacions</string>
<string name="notify_on">Ensenya una notificació quan hi hagi actualitzacions disponibles</string>
<string name="update_history">Actualitzacions</string>
<string name="update_history_summ">Les aplicacions es consideren noves o recents durant: %s dies</string>
<string name="system_installer">Extensió Privilegiada</string>
<string name="system_installer_on">Instal·la, actualitza i suprimeix paquets fent servir l\'extensió privilegiada de l\'F-Droid</string>
<string name="local_repo_name">Nom del vostre dipòsit local</string>

View File

@ -13,8 +13,6 @@
<string name="automatic_scan_wifi_on">Automaticky aktualizovat jen na nezpoplatněných sítích, jako např. Wi-Fi</string>
<string name="notify">Upozornění na aktualizace</string>
<string name="notify_on">Upozornit, pokud jsou dostupné aktualizace</string>
<string name="update_history">Historie aktualizací</string>
<string name="update_history_summ">Počet dnů, po které je aplikace vedena jako nová nebo nedávná: %s</string>
<string name="system_installer">Privilegovaná rozšíření</string>
<string name="system_installer_on">Použít privilegovaná rozšíření F-Droid k instalování, aktualizaci a odebírání balíčků</string>
<string name="local_repo_name">Název místního repozitáře</string>

View File

@ -19,8 +19,6 @@
<string name="automatic_scan_wifi_on">Opdater kun automatisk på ubegrænsede netværk som WI-FI</string>
<string name="notify">Opdateringsnotifikationer</string>
<string name="notify_on">Vis en notifikation når opdateringer er tilgængelige</string>
<string name="update_history">Opdateringshistorik</string>
<string name="update_history_summ">Dage hvor programmer opfattes som nye eller nylige: %s</string>
<string name="system_installer">Privilegeret Udvidelse</string>
<string name="system_installer_on">Brug F-Droid Privilegeret Udvidelse til at installere, opdatere og fjerne pakker</string>
<string name="uninstall_system">Opdater/Afinstaller Privilegeret Udvidelse</string>

View File

@ -15,8 +15,6 @@
<string name="automatic_scan_wifi_on">Anwendungsliste nur über gebührenfreie Netze wie WLAN automatisch aktualisieren</string>
<string name="notify">Aktualisierungsbenachrichtigung</string>
<string name="notify_on">Benachrichtigen, wenn Aktualisierungen verfügbar sind</string>
<string name="update_history">Aktualisierungsverlauf</string>
<string name="update_history_summ">Anzahl in Tagen, an denen neue oder kürzlich geänderte Anwendungen angezeigt werden: %s</string>
<string name="system_installer">Privilegierte Erweiterung</string>
<string name="system_installer_on">Privilegierte F-Droid-Erweiterung verwenden, um Pakete zu installieren, zu aktualisieren und zu entfernen</string>
<string name="local_repo_name">Name Ihrer lokalen Paketquelle</string>

View File

@ -15,8 +15,6 @@
<string name="automatic_scan_wifi_on">Αυτόματη ενημέρωση μόνο σε δίκτυα Wi-Fi</string>
<string name="notify">Ειδοποιήσεις ενημερώσεων</string>
<string name="notify_on">Εμφάνιση ειδοποίησης όταν υπάρχουν διαθέσιμες ενημερώσεις</string>
<string name="update_history">Ιστορικό ενημερώσεων</string>
<string name="update_history_summ">Ημέρες που θα θεωρούνται οι εφαρμογές νέες ή πρόσφατες: %s</string>
<string name="app_details">Λεπτομέρειες Εφαρμογής</string>
<string name="no_such_app">Δεν βρέθηκε τέτοια εφαρμογή.</string>
<string name="about_title">Σχετικά με το F-Droid</string>

View File

@ -7,7 +7,6 @@
<string name="automatic_scan_wifi">Nur per vifio</string>
<string name="notify">Sciigoj pri ĝisdatigoj</string>
<string name="notify_on">Sciigi kiam ĝisdatigoj estas disponeblaj</string>
<string name="update_history">Ĝisdatiga historio</string>
<string name="app_details">Aplikaĵaj detaloj</string>
<string name="no_such_app">Neniu aplikaĵo trovita.</string>
<string name="about_title">Pri F-Droid</string>
@ -113,7 +112,6 @@
<string name="unstable_updates_summary">Proponi ĝisdatigojn al nestabilaj versioj</string>
<string name="update_interval_zero">Neniam aŭtomate ĝisdatigi listojn de aplikaĵoj</string>
<string name="automatic_scan_wifi_on">Ĝisdatigi listojn aŭtomate nur per netarifaj retoj kiel vifio</string>
<string name="update_history_summ">Trakti aplikaĵojn kiel novajn aŭ ĵus-ĝisdatigajn por: %s tagoj</string>
<string name="system_installer">Privilegia aldonaĵo</string>
<string name="system_installer_on">Uzi privilegian F-Droid-aldonaĵon por instali, ĝisdatigi kaj forigi pakaĵojn</string>
<string name="uninstall_system">Ĝisdatigi/malinstali privilegian aldonaĵon</string>

View File

@ -15,8 +15,6 @@
<string name="automatic_scan_wifi_on">Actualizar automáticamente sólo con Wi-Fi y otras redes de tarifa plana</string>
<string name="notify">Notificaciones de actualizaciones</string>
<string name="notify_on">Muestra una notificación cuando hay actualizaciones</string>
<string name="update_history">Historial de actualizaciones</string>
<string name="update_history_summ">Días para considerar las aplicaciones nuevas o recientes: %s</string>
<string name="system_installer">Extensión con permisos de sistema</string>
<string name="system_installer_on">Utilizar la extensión de F-Droid con permisos de sistema al instalar, actualizar, y eliminar paquetes</string>
<string name="local_repo_name">Nombre de tu repo local</string>

View File

@ -22,8 +22,6 @@
<string name="update_auto_download_summary">Laadi värskenduse failid taustal alla</string>
<string name="notify">Värskenduste teated</string>
<string name="notify_on">Kuva teade, kui värskendused on saadaval</string>
<string name="update_history">Värskenduste ajalugu</string>
<string name="update_history_summ">Päevade arv, mille jooksul kuvatakse rakendust uuena: %s</string>
<string name="system_installer">Priviligeeritud laiendus</string>
<string name="system_installer_on">"Kasuta pakettide paigaldamiseks, värskendamiseks ja eemaldamiseks F-Droidi priviligeeritud laiendust"</string>
<string name="uninstall_system">Värskenda/eemalda priviligeeritud laiendus</string>

View File

@ -10,7 +10,6 @@
<string name="automatic_scan_wifi_on">Eguneratu aplikazioen zerrendak automatikoki Wi-Fi bezalako mugatu gabeko sareen bidez soilik</string>
<string name="notify">Eguneraketen jakinarazpenak</string>
<string name="notify_on">Bistarazi jakinarazpena eguneraketak eskuragarri daudenean</string>
<string name="update_history">Eguneratu historia</string>
<string name="app_details">Aplikazioaren xehetasunak</string>
<string name="no_such_app">Ez da aplikazio hori aurkitu.</string>
<string name="about_title">F-Droid-i buruz</string>
@ -78,7 +77,6 @@
<string name="theme_light">Argia</string>
<string name="other">Bestelakoak</string>
<string name="update_interval">Eguneraketa automatikoaren tartea</string>
<string name="update_history_summ">Aplikazioak berritzat edo oraintsukotzat hartzeko egunak: %s</string>
<string name="system_installer">Pribilegiodun Luzapena</string>
<string name="system_installer_on">Erabili Pribilegiodun F-Droid Luzapena paketeak instalatu, eguneratu eta kentzeko</string>
<string name="uninstall_system">Eguneratu/Desinstalatu Pribilegiodun Luzapena</string>

View File

@ -11,7 +11,6 @@
<string name="automatic_scan_wifi">فقط روی وای‌فای</string>
<string name="automatic_scan_wifi_on">به‌روز رسانی خودکار فهرست کاره‌ها روی وای‌فای</string>
<string name="notify_on">نمایش یک آگهی هنگام موجود بودن به‌روز رسانی‌ها</string>
<string name="update_history">به‌روزرسانی تاریخچه</string>
<string name="no_such_app">چنین کاره‌ای پیدا نشد.</string>
<string name="about_title">دربارهٔ F-Droid</string>
<string name="about_mail">رایانامه</string>
@ -77,7 +76,6 @@
<string name="unstable_updates">به‌روز رسانی‌های ناپایدار</string>
<string name="unstable_updates_summary">پیشنهاد به‌روز رسانی به نگارش‌های ناپایدار</string>
<string name="notify">آگهی‌های به‌روز رسانی</string>
<string name="update_history_summ">روزهایی که کاره جدید یا اخیر محسوب شود: %s</string>
<string name="system_installer">افزونهٔ ممتاز</string>
<string name="system_installer_on">استفاده از افزونهٔ ممتاز اف‌دروید برای نصب، به‌روز رسانی و حذف بسته‌ها</string>
<string name="uninstall_system">به‌روز رسانی/حذف افزونهٔ ممتاز</string>

View File

@ -15,8 +15,6 @@
<string name="automatic_scan_wifi_on">Päivitä automaattisesti vain rajoittamattomissa verkoissa, kuten Wi-Fi</string>
<string name="notify">Päivitysimoitukset</string>
<string name="notify_on">Näytä iIlmoitus, kun päivityksiä on saatavilla</string>
<string name="update_history">Päivityshistoria</string>
<string name="update_history_summ">Päivien määrä, jolloin sovellus näytetään uutena: %s</string>
<string name="system_installer">Etuoikeutettu laajennus</string>
<string name="system_installer_on">Käytä F-Droid Privileged Extensionia asentamiseen, päivittämiseen ja pakettien poistamiseen</string>
<string name="local_repo_name">Paikallisen sovelluslähteesi nimi</string>

View File

@ -15,8 +15,6 @@
<string name="automatic_scan_wifi_on">Mise à jour automatique de la liste d\'applis uniquement via Wi-Fi</string>
<string name="notify">Notifications de mise à jour</string>
<string name="notify_on">Afficher une notification quand des mises à jour sont disponibles</string>
<string name="update_history">Historique des mises à jour</string>
<string name="update_history_summ">Nombre de jours durant lesquels les applis sont considérées nouvelles ou récentes : %s</string>
<string name="system_installer">Permissions étendues</string>
<string name="system_installer_on">Utiliser F-Droid Privileged Extension pour installer, mettre à jour et supprimer des paquets</string>
<string name="local_repo_name">Nom de votre dépôt local</string>

View File

@ -9,7 +9,6 @@
<string name="other">Outro</string>
<string name="automatic_scan_wifi">Só mediante wifi</string>
<string name="notify">Notificar actualizacións</string>
<string name="update_history">Histórico de actualizacións</string>
<string name="app_details">Detalles da ap</string>
<string name="no_such_app">Non se atopou ese aplicativo.</string>
<string name="about_title">Sobre F-Droid</string>
@ -223,7 +222,6 @@
<string name="theme_night">Nocturno</string>
<string name="unstable_updates_summary">Suxire actualizacións para versións inestables</string>
<string name="update_interval_zero">Non actualizar automáticamente o listado de aplicativos</string>
<string name="update_history_summ">Días para considerar aplicativos novos ou recentes: %s</string>
<string name="system_installer">Privileged Extension</string>
<string name="uninstall_system_summary">Abre a pantalla de detalles da Privileged Extension para actualizala/desinstalala</string>
<string name="repo_exists_enable">Este repositorio xa está instalado, confirma que desexas reactivalo.</string>

View File

@ -14,8 +14,6 @@
<string name="automatic_scan_wifi_on">עדכון רשימות יישומונים אוטומטית רק על גבי Wi-Fi</string>
<string name="notify">התראות עדכון</string>
<string name="notify_on">הצג התראה כאשר עדכונים זמינים</string>
<string name="update_history">היסטוריית עדכון</string>
<string name="update_history_summ">ימים כדי להחשיב אפליקציות כחדשות או אחרונות: %s</string>
<string name="system_installer">הרחבה מועדפת</string>
<string name="system_installer_on">השתמש בהרחבת F-Droid מועדפת כדי להתקין, לעדכן, ולהסיר חבילות</string>
<string name="uninstall_system">בטל התקנת או עדכן הרחבה מועדפת</string>

View File

@ -14,8 +14,6 @@
<string name="automatic_scan_wifi_on">एप्लिकेशन सूचि स्वतः नवीनतम बनाये केवल Wi-Fi पे</string>
<string name="notify">नवीनतम सूचनाएं</string>
<string name="notify_on">सूचित कर्रे जब नवीनतम उपलब्ध हो</string>
<string name="update_history">अद्यतन इतिहास</string>
<string name="update_history_summ">दिन जब तक एप्लिकेशन को नया या हाल का माने : %s</string>
<string name="local_repo_name">स्थानीय कोष का नाम</string>
<string name="local_repo_name_summary">विज्ञापित शीर्षक स्थानीय कोष का : %s</string>
<string name="local_repo_https">गुप्त संपर्क इस्तेमाल करे</string>

View File

@ -22,8 +22,6 @@
<string name="update_auto_download_summary">Preuzmi datoteke ažuriranja u pozadini</string>
<string name="notify">Obavijesti ažuriranja</string>
<string name="notify_on">Pokaži obavijest kad su dostupna ažuriranja</string>
<string name="update_history">Povijest ažuriranja</string>
<string name="update_history_summ">Dana koliko se aplikacije smatraju novima: %s</string>
<string name="system_installer">Povlašteno proširenje</string>
<string name="system_installer_on">Koristite F-Droidovo povlašteno proširenje kako bi instalirali, ažurirali i uklonili pakete</string>
<string name="uninstall_system">Ažuriraj/ukloni povlašteno proširenje</string>

View File

@ -13,8 +13,6 @@
<string name="automatic_scan_wifi_on">Automatikus alkalmazáslista-frissítés csak korlátlan kapcsolatokon, pl. Wi-Fi-n keresztül</string>
<string name="notify">Frissítési értesítések</string>
<string name="notify_on">Értesít ha frissítés érhető el</string>
<string name="update_history">Frissítési előzmények</string>
<string name="update_history_summ">Hány napig tekintse az appot frissnek vagy újnak: %s</string>
<string name="app_details">App részletei</string>
<string name="no_such_app">Nem található ilyen app.</string>
<string name="about_title">Az F-Droid</string>

View File

@ -8,7 +8,6 @@
<string name="keep_install_history">Պահել տեղադրման պատմությունը</string>
<string name="other">Այլ</string>
<string name="update_history">Թարմացման պատմություն</string>
<string name="login_name">Օգտանուն</string>
<string name="login_password">Գաղտնաբառ</string>
<string name="repo_edit_credentials">Փոխել գաղտնաբառը</string>

View File

@ -18,8 +18,6 @@
<string name="automatic_scan_wifi_on">Hanya perbarui secara otomatis pada jaringan tak terbatas seperti Wi-Fi</string>
<string name="notify">Pemberitahuan pembaruan</string>
<string name="notify_on">Beri tahu jika pembaruan aplikasi tersedia</string>
<string name="update_history">Riwayat pembaruan</string>
<string name="update_history_summ">Jumlah hari sebuah aplikasi dianggap baru atau mutakhir: %s</string>
<string name="system_installer_on">Gunakan F-Droid Privileged Extension untuk memasang, memperbarui, dan mencopot paket</string>
<string name="uninstall_system">Perbarui/Copot Privileged Extension</string>
<string name="uninstall_system_summary">Buka layar detail Privileged Extension untuk memperbarui/mencopotnya</string>

View File

@ -19,8 +19,6 @@
<string name="update_auto_install_summary">Sækja uppfærslur og uppfæra forrit í bakgrunni</string>
<string name="notify">Tilkynningar um uppfærslur</string>
<string name="notify_on">Birta tilkynningu þegar uppfærslur eru tiltækar</string>
<string name="update_history">Uppfæra feril</string>
<string name="update_history_summ">Fjöldi daga sem forrit teljast nýleg: %s</string>
<string name="system_installer">Forgangsviðbót</string>
<string name="local_repo_name">Heiti staðværa hugbúnaðarsafnsins þíns</string>
<string name="local_repo_https">Nota einkatengingu</string>

View File

@ -15,8 +15,6 @@
<string name="automatic_scan_wifi_on">Aggiorna automaticamente gli elenchi applicazioni solo via Wi-Fi</string>
<string name="notify">Notifiche aggiornamenti</string>
<string name="notify_on">Mostra una notifica quando sono disponibili aggiornamenti</string>
<string name="update_history">Aggiorna la cronologia</string>
<string name="update_history_summ">Numero di giorni per considerare le applicazioni nuove o recenti: %s</string>
<string name="system_installer">Estensione priviliegiata</string>
<string name="system_installer_on">Usa l\'estensione privilegiata di F-Droid per installare, aggiornare e rimuovere i pacchetti</string>
<string name="local_repo_name">Nome del tuo repo locale</string>

View File

@ -15,8 +15,6 @@
<string name="automatic_scan_wifi_on">Wi-Fiなどの従量課金されないネットワークでのみ自動更新を行います</string>
<string name="notify">更新通知</string>
<string name="notify_on">更新があれば通知を表示します</string>
<string name="update_history">更新履歴</string>
<string name="update_history_summ">アプリケーションが新しいものだと判断する日数:%s日</string>
<string name="system_installer">特権拡張</string>
<string name="system_installer_on">F-Droid 特権拡張を使用してパッケージのインストール、更新、および削除をします。</string>
<string name="local_repo_name">ローカルリポジトリの名前</string>

View File

@ -15,8 +15,6 @@
<string name="automatic_scan_wifi_on">Wi-Fi에 연결되어 있을 때만 자동으로 앱 목록 업데이트</string>
<string name="notify">업데이트 알림</string>
<string name="notify_on">새로운 업데이트가 가능할 때 알림</string>
<string name="update_history">이력 업데이트</string>
<string name="update_history_summ">최신 앱이라고 간주할 날짜: %s</string>
<string name="system_installer">권한 확장</string>
<string name="system_installer_on">패키지의 설치, 업데이트, 제거를 위해 특별 권한 확장 사용</string>
<string name="local_repo_name">로컬 저장소의 이름</string>

View File

@ -9,7 +9,6 @@
<string name="automatic_scan_wifi">Tik prisijungus prie belaidžio (WiFi)</string>
<string name="notify">Informuoti</string>
<string name="notify_on">Pranešti, kai atsiras atnaujinimų</string>
<string name="update_history">Naujumo nustatymai</string>
<string name="local_repo_name">Šio įrenginio saugyklos pavadinimas</string>
<string name="about_title">Apie F-Droid</string>
<string name="about_site">Svetainė:</string>

View File

@ -12,7 +12,6 @@
<string name="automatic_scan_wifi_on">Atjaunināt automātiski tikai WiFi tīklā</string>
<string name="notify">Ziņot</string>
<string name="notify_on">Ziņot, kad atjauninājumi pieejami</string>
<string name="update_history">Atjauninājumu vēsture</string>
<string name="system_installer">Instalēt izmantojot sistēmas piekļuvi</string>
<string name="system_installer_on">Izmantot sistēmas piekļuvi instalējot, atjauninot, dzēšot pakotnes</string>
<string name="local_repo_name">Lokālā Repozitorija nosaukums</string>

View File

@ -20,8 +20,6 @@
<string name="update_auto_download_summary">အေနာက္ပိုင္းတြင္ အသစ္မြမ္းမံမႈမ်ားကိုေဒါင္းလုတ္ဆြဲမည္</string>
<string name="notify">အသစ္မြမ္းမံမႈ အသိေပးခ်က္မ်ား</string>
<string name="notify_on">အသစ္မြမ္းမံမႈရရွိပါက အခ်က္ေပးျခင္းကိုျပပါ</string>
<string name="update_history">အသစ္မြမ္းမံမႈမွတ္တမ္း</string>
<string name="update_history_summ">app မ်ားသည္ အသစ္လား မၾကာေသးခင္ကလား ဆိုတာကိုစဥ္းစားရန္ ရက္ - %s</string>
<string name="system_installer">Privileged Extension</string>
<string name="system_installer_on">F-Droid ၏ Privileged Extension ကိုသံုးျပီး သြင္းျခင္း၊ အသစ္မြမ္းမံျခင္းႏွင့္ Package မ်ားျဖဳတ္ျခင္းမ်ားျပဳလုပ္မည္</string>
<string name="local_repo_name">သင္၏ Local Repo အမည္</string>

View File

@ -15,8 +15,6 @@
<string name="automatic_scan_wifi_on">Bare oppdater automatisk når tilknyttet Wi-Fi</string>
<string name="notify">Varsle</string>
<string name="notify_on">Varsle når nye oppdateringer er tilgjengelige</string>
<string name="update_history">Oppdater historikk</string>
<string name="update_history_summ">Dager nytt innhold skal anses som ferskt: %s</string>
<string name="system_installer">Priviligert tillegg</string>
<string name="system_installer_on">Bruk priviligert tillegg til å installere, oppdatere, og fjerne programmer</string>
<string name="local_repo_name">Navn på lokal pakkebrønn</string>

View File

@ -15,8 +15,6 @@
<string name="automatic_scan_wifi_on">Update alleen automatisch op verbinding zonder datalimiet zoals wifi</string>
<string name="notify">Updatemeldingen</string>
<string name="notify_on">Toon een melding wanneer er updates beschikbaar zijn</string>
<string name="update_history">Updategeschiedenis</string>
<string name="update_history_summ">Dagen om apps als nieuw/recent weer te geven: %s</string>
<string name="system_installer">Extensie voor systeemrechten</string>
<string name="system_installer_on">Gebruik de extensie voor systeemrechten om pakketten te installeren, updaten en verwijderen</string>
<string name="local_repo_name">Naam van collectie gedeelde apps</string>

View File

@ -8,8 +8,6 @@
<string name="updates">Aktualizacje</string>
<string name="other">Inne</string>
<string name="notify">Powiadomienia o aktualizacjach</string>
<string name="update_history">Historia aktualizacji</string>
<string name="update_history_summ">Liczba dni, aby uznać aplikację za nową lub niedawną: %s</string>
<string name="system_installer">Uprzywilejowany dodatek</string>
<string name="system_installer_on">Używaj dodatku uprzywilejowanego FDroida by instalować, aktualizować i usuwać paczki</string>
<string name="local_repo_name">Nazwa lokalnego repozytorium</string>

View File

@ -15,8 +15,6 @@
<string name="automatic_scan_wifi_on">Atualizar automaticamente apenas em redes com acesso ilimitado, como Wi-Fi</string>
<string name="notify">Notificações de atualização</string>
<string name="notify_on">Mostrar uma notificação quando atualizações estiverem disponíveis</string>
<string name="update_history">Atualizar histórico</string>
<string name="update_history_summ">Dias para considerar os aplicativos novos ou recentes: %s</string>
<string name="system_installer">Extensão privilegiada</string>
<string name="system_installer_on">Usar extensão privilegiada do F-Droid para instalar, atualizar e remover pacotes</string>
<string name="local_repo_name">Nome do seu repositório local</string>

View File

@ -19,8 +19,6 @@
<string name="automatic_scan_wifi_on">Atualizar lista de aplicações se estiver ligado a redes Wi-Fi</string>
<string name="notify">Notificação de atualizações</string>
<string name="notify_on">Mostrar uma notificação se existirem atualizações disponíveis</string>
<string name="update_history">Histórico de atualizações</string>
<string name="update_history_summ">Dias para considerar aplicações como novas ou recentes: %s</string>
<string name="system_installer">Extensão privilegiada</string>
<string name="system_installer_on">Utilizar a extensão privilegiada do F-Droid para instalar, atualizar e remover pacotes</string>
<string name="uninstall_system">Atualizar/desinstalar extensão privilegiada</string>

View File

@ -48,7 +48,6 @@
<string name="update_interval">Interval actualizari automate</string>
<string name="automatic_scan_wifi">Doar prin Wi-Fi</string>
<string name="unstable_updates">Actualizari instabile</string>
<string name="update_history">Istoric actualizari</string>
<string name="login_name">Nume utilizator</string>
<string name="login_password">Parola</string>
<string name="no_such_app">Nu exista aceasta aplicatie.</string>
@ -64,7 +63,6 @@
<string name="automatic_scan_wifi_on">Actualizeaza automat doar prin retele necontorizate precum Wi-Fi</string>
<string name="local_repo_name">Numele depozitului local</string>
<string name="local_repo_name_summary">Titlu depozitului local folosit la anuntare: %s</string>
<string name="update_history_summ">Numarul de zile de afisat aplicatii noi sau recente: %s</string>
<string name="notify_on">Arata o notificare atunci cand exista actualizari ale aplicatiilor</string>
<string name="uninstall_system">Actualizeaza/Dezinstaleaza extensia privilegiata</string>
<string name="local_repo_https_on">Foloseste o conexiune criptata HTTPS:// pentru depozitul local</string>

View File

@ -15,8 +15,6 @@
<string name="automatic_scan_wifi_on">Обновлять автоматически только по нелимитированным соединениям (таким как Wi-Fi)</string>
<string name="notify">Уведомления об обновлениях</string>
<string name="notify_on">Отображать уведомление когда есть обновления</string>
<string name="update_history">История обновлений</string>
<string name="update_history_summ">Показывать новые приложения и обновления за последние %s дней</string>
<string name="system_installer">Привилегированное расширение</string>
<string name="system_installer_on">Использовать привилегированное расширение F-Droid для установки, обновления и удаления пакетов</string>
<string name="local_repo_name">Название локального репозитория</string>

View File

@ -15,8 +15,6 @@
<string name="automatic_scan_wifi_on">Agiorna automaticamente sa lista de sas aplicatziones petzi si b\'est su wifi</string>
<string name="notify">Notìficas de agiornamentu</string>
<string name="notify_on">Averte cando bi sunt agiornamentos disponìbiles</string>
<string name="update_history">Istòria de sos agiornamentos</string>
<string name="update_history_summ">Nùmeru de dies pro che cunsiderare sas aplicatzione noas o reghentes: %s</string>
<string name="system_installer">Estensione cun permissos de sistema</string>
<string name="system_installer_on">Imprea sos permissos de sistema pro installare, agiornare, e remòvere pachetos</string>
<string name="local_repo_name">Nùmene de su Depòsitu Locale tuo</string>

View File

@ -15,8 +15,6 @@
<string name="automatic_scan_wifi_on">Automaticky aktualizovať len na nespoplatnených sieťach, ako napr. Wi-Fi</string>
<string name="notify">Oznamovanie aktualizácií</string>
<string name="notify_on">Upozorniť na dostupnosť aktualizácií</string>
<string name="update_history">História aktualizácií</string>
<string name="update_history_summ">Počet dní, kedy sú aplikácie brané ako nové alebo nedávne: %s</string>
<string name="system_installer">Ukladať balíky do vyr. pamäte</string>
<string name="system_installer_on">Používať Oprávnené Rozšírenie F-Droidu na inštaláciu, aktualizácie a odstránenie balíkov</string>
<string name="local_repo_name">Meno miestneho repozitára</string>

View File

@ -17,8 +17,6 @@
<string name="update_auto_install_summary">Tutunura nekuvakirira ma apps ekunatsa kuseri kwezvauri kuita iyezvino</string>
<string name="notify">Zviziviso zvekunatsa</string>
<string name="notify_on">Ratidza chiziviso kana zvekunatsa zvavapo</string>
<string name="update_history">Natsa makare</string>
<string name="update_history_summ">Mazuva ekufunga nezve ma apps matsva kana amanje: %s</string>
<string name="system_installer">Tambanudzo dzine chihesvuro</string>
<string name="system_installer_on">Shandisa tambanudzo inechihesvuro yeF-Droid kuti uvakirire, unatse nekubvisa mapakeji</string>
<string name="uninstall_system">Natsa/Bvisa chivakirirwa patambanudzo ane chihesvuro</string>

View File

@ -10,7 +10,6 @@
<string name="update_interval">Intervali i përditësimeve automatike</string>
<string name="automatic_scan_wifi">Vetëm me Wi-Fi</string>
<string name="update_history">Kronologjia e përditësimeve</string>
<string name="about_title">Rreth F-Droid</string>
<string name="about_version">Versioni:</string>
<string name="about_source">Burimi:</string>

View File

@ -15,8 +15,6 @@
<string name="automatic_scan_wifi_on">Самостално освежавање само на бесплатним мрежама као што је бежична</string>
<string name="notify">Обавештења о надоградњама</string>
<string name="notify_on">Приказ обавештења о доступним надоградњама</string>
<string name="update_history">Историјат надоградњи</string>
<string name="update_history_summ">Колико дана се програми сматрају новим или недавним: %s</string>
<string name="system_installer">Повлашћено проширење</string>
<string name="system_installer_on">Користи повлашћено проширење за уградњу, надоградњу и уклањање пакета</string>
<string name="local_repo_name">Назив месне ризнице</string>

View File

@ -15,8 +15,6 @@
<string name="automatic_scan_wifi_on">Endast uppdatera automatiskt på obegränsad nätverk som Wi-Fi</string>
<string name="notify">Avisering vid uppdatering</string>
<string name="notify_on">Visa avisering när uppdateringar finns tillgängliga</string>
<string name="update_history">Uppdateringshistorik</string>
<string name="update_history_summ">Antalet dagar som appar ska betraktas som nya eller färska: %s</string>
<string name="system_installer">Privilgierad utökning</string>
<string name="system_installer_on">Använd F-Droid\'s priviligerade utökning för att installera, uppdatera och ta bort paket</string>
<string name="local_repo_name">Namn på ditt lokala förråd</string>

View File

@ -13,7 +13,6 @@
<string name="update_interval">อัพเดตข้อมูลอัตโนมัติทุกๆ</string>
<string name="automatic_scan_wifi">เฉพาะตอนมีสัญญาณ WiFi</string>
<string name="update_auto_download">ดาวน์โหลดอัพเดตโดยอัตโนมัติ</string>
<string name="update_history">ประวัติการอัพเดต</string>
<string name="local_repo_name">ชื่อที่ตั้งให้แหล่งโปรแกรมจากเครื่องคุณ</string>
<string name="login_name">ชื่อผู้ใช้</string>
<string name="login_password">รหัสผ่าน</string>
@ -239,7 +238,6 @@
<string name="update_auto_download_summary">ทำการดาวน์โหลดอัพเดตโปรแกรมแบบเบื้องหลัง</string>
<string name="notify">การแจ้งเตือนอัพเดต</string>
<string name="notify_on">แสดงการแจ้งเตือนเมื่อมีอัพเดตให้ดาวน์โหลด</string>
<string name="update_history_summ">ถือว่าโปรแกรมที่เพิ่งมีใน %s วัน เป็นโปรแกรมใหม่</string>
<string name="local_repo_name_summary">ฃื่อของแหล่งโปรแกรมในเครื่องที่แสดงสู่ภายนอก: %s</string>
<string name="local_repo_https">ใช้การเชื่อมต่อที่เป็นส่วนตัว</string>
<string name="local_repo_https_on">ใช้การเชื่อมต่อ HTTPS:// ที่เข้ารหัส กับแหล่งโปรแกรมจากในเครื่อง</string>

View File

@ -15,8 +15,6 @@
<string name="automatic_scan_wifi_on">Yalnızca Wi-Fi gibi ölçümsüz ağlarda otomatik güncelle</string>
<string name="notify">Güncelleme bildirimleri</string>
<string name="notify_on">Güncellemeler varsa bir bildirim göster</string>
<string name="update_history">Güncelleme tarihçesi</string>
<string name="update_history_summ">Uygulamaların yeni sayılacağı gün sayısı: %s</string>
<string name="system_installer">Ayrıcalıklı Uzantı</string>
<string name="system_installer_on">Paket kurmak, güncellemek ve kaldırmak için F-Droid Ayrıcalıklı Uzantıyı kullan</string>
<string name="local_repo_name">Yerel Deponuzun Adı</string>

View File

@ -9,7 +9,6 @@
<string name="other">باشقا</string>
<string name="automatic_scan_wifi">wifi دىلا</string>
<string name="notify">ئۇقتۇرۇش</string>
<string name="update_history">يېڭىلاش تارىخى</string>
<string name="app_details">ئەپ تەپسىلاتلىرى</string>
<string name="no_such_app">بۇنداق ئەپ تېپىلمىدى</string>
<string name="about_title">F-Droid ھەققىدە</string>

View File

@ -48,8 +48,6 @@
<string name="automatic_scan_wifi">Тільки через Wi-Fi</string>
<string name="automatic_scan_wifi_on">Автоматично оновлювати списки програм тільки через не лімітовані мережі, такі як Wi-Fi</string>
<string name="notify_on">Показувати сповіщення коли є доступні оновлення</string>
<string name="update_history">Історія оновлень</string>
<string name="update_history_summ">Скільки днів вважати програму новою чи нещодавньою: %s</string>
<string name="system_installer">Привілейоване розширення</string>
<string name="system_installer_on">Використовувати привілейоване розширення F-Droid для встановлення, оновлення та видалення пакетів</string>
<string name="uninstall_system">Оновити/Видалити привілейоване розширення F-Droid</string>

View File

@ -20,7 +20,6 @@
<string name="automatic_scan_wifi_on">اپلی کیشن کی فہرست صرف وائی فائی پر خود بخود اپڈیٹ کریں</string>
<string name="notify">تازہ کاریوں کی اطلاعات</string>
<string name="notify_on">اگر تازہ کاری دستیاب ہیں تو اطلاع دیں</string>
<string name="update_history">تازہ کاری کرنے کی ہسٹری</string>
<string name="system_installer">پریولجڈ ایکس ٹینشن</string>
<string name="local_repo_name">اپنے مقامی ریپو کا نام</string>
<string name="login_name">اسم صارف</string>
@ -28,6 +27,5 @@
<string name="repo_edit_credentials">پاس ورڈ تبدیل کریں</string>
<string name="update_auto_download">خودکار اپڈیٹس ڈاؤنلوڈ کریں</string>
<string name="update_auto_download_summary">اپڈیٹ والی فائلوں کو پسِ منظر ڈاؤنلوڈ کریں</string>
<string name="update_history_summ">کتنے دن اطلاقیوں کو نیا یا حالیہ تصور کیا جائے: %s</string>
<string name="system_installer_on">F-Droid Privileged Extension کے ذریعے پیکج کو انسٹال، اپڈیٹ اور حذف کریں</string>
</resources>

View File

@ -15,8 +15,6 @@
<string name="automatic_scan_wifi_on">Chỉ tự động cập nhật danh sách ứng dụng khi dùng Wi-Fi</string>
<string name="notify">Thông báo cập nhật</string>
<string name="notify_on">Hiện thông báo khi có bản cập nhật</string>
<string name="update_history">Lịch sử cập nhật</string>
<string name="update_history_summ">Ứng dụng sẽ được xem là mới nếu được thêm hoặc cập nhật trong vòng %s ngày</string>
<string name="system_installer">Phần mở rộng được cấp quyền</string>
<string name="system_installer_on">Dùng phần mở rộng được cấp quyền của F-Droid để cài đặt, cập nhật và gỡ bỏ ứng dụng</string>
<string name="local_repo_name">Tên kho ứng dụng nội bộ</string>

View File

@ -15,8 +15,6 @@
<string name="automatic_scan_wifi_on">仅当 Wi-Fi 等非计量网络可用时自动更新</string>
<string name="notify">通知更新</string>
<string name="notify_on">当更新可用时显示通知</string>
<string name="update_history">更新历史</string>
<string name="update_history_summ">进入新应用及最近更新目录的时间限制:%s 天以内</string>
<string name="system_installer">特权扩展</string>
<string name="app_details">应用程序详情</string>
<string name="no_such_app">未找到此类应用程序。</string>

View File

@ -12,7 +12,6 @@
<string name="automatic_scan_wifi_on">只透過 Wi-Fi 自動更新應用程式目錄</string>
<string name="notify">更新通知</string>
<string name="notify_on">應用程式發佈更新時通知我</string>
<string name="update_history">更新記錄</string>
<string name="system_installer">系統權限套件</string>
<string name="system_installer_on">使用系統權限套件安裝、更新及移除軟件包</string>
<string name="local_repo_name">您的本地倉庫名稱</string>
@ -324,7 +323,6 @@
<string name="writing_index_jar">正在寫入已簽署的目錄檔案 (index.jar)…</string>
<string name="rooted_on">不要以灰字顯示需要 root 權限的應用程式</string>
<string name="repo_delete_to_overwrite">在加入含有不同鑰匙的軟件倉庫前,您先要刪除此倉庫。</string>
<string name="update_history_summ">在 %s 天內添置於目錄的程式方可算為「最新」</string>
<string name="repo_exists_add_fingerprint">由於此倉庫已經設置好,此動作將會加入新的鑰匙數據。</string>
<string name="menu_email">電郵作者</string>
<string name="unsigned_description">這表示應用程式清單

View File

@ -19,7 +19,6 @@
<string name="automatic_scan_wifi_on">只在未計量的網路例如 Wi-Fi 上自動更新</string>
<string name="notify">更新通知</string>
<string name="notify_on">當有軟體可以更新時秀出一個通知</string>
<string name="update_history_summ">將 %s 天前冒出來的軟體視為新軟體</string>
<string name="local_repo_name">您的本地端應用軟體倉庫的名稱</string>
<string name="local_repo_name_summary">您本地端應用軟體倉庫對外宣傳的名稱:%s</string>
<string name="local_repo_https_on">使用 HTTPS:// 加密連線來存取當地的應用軟體倉庫</string>
@ -188,7 +187,6 @@
恭喜您!所有應用程式都是最新的 (或者是您的應用軟體倉庫已過期)。</string>
<string name="uninstall_error_unknown">不明的錯誤導致解除安裝失敗</string>
<string name="update_history">更新記錄</string>
<string name="add_key">加入金鑰</string>
<string name="repo_exists_add_fingerprint">此儲存庫已經設定,此動作將會加入新的金鑰資訊。</string>
<string name="repo_delete_to_overwrite">在加入含有不同金鑰的應用軟體倉庫前,您需要先刪除此儲存庫。</string>

View File

@ -30,4 +30,6 @@
<dimen name="category_preview__app_list__padding__horizontal">4dp</dimen>
<dimen name="category_preview__app_list__padding__horizontal__first">72dp</dimen>
<dimen name="category_preview__app_list__padding__vertical">18dp</dimen>
<dimen name="banner__padding">4dp</dimen>
</resources>

View File

@ -28,8 +28,6 @@
<string name="update_auto_install_summary">Download and install update apps in the background</string>
<string name="notify">Update notifications</string>
<string name="notify_on">Show a notification when updates are available</string>
<string name="update_history">Update history</string>
<string name="update_history_summ">Days to consider apps new or recent: %s</string>
<string name="system_installer">Privileged Extension</string>
<string name="system_installer_on">Use F-Droid Privileged Extension to install, update, and remove packages</string>
<string name="uninstall_system">Update/Uninstall Privileged Extension</string>
@ -159,6 +157,12 @@
<string name="main_menu__categories">Categories</string>
<string name="main_menu__swap_nearby">Nearby</string>
<string name="latest__empty_state__no_recent_apps">No recent apps found</string>
<string name="latest__empty_state__never_updated">Once your list of apps has been updated, the latest apps should show here</string>
<string name="latest__empty_state__no_enabled_repos">Once you enable a repository and let it update, the latest apps should show here</string>
<string name="categories__empty_state__no_categories">No categories to display</string>
<string name="preference_category__my_apps">My Apps</string>
<string name="preference_manage_installed_apps">Manage Installed Apps</string>

View File

@ -93,6 +93,13 @@
</style>
<style name="BodyText" parent="BodyTextBase" />
<style name="AppListEmptyText">
<item name="android:id">@android:id/empty</item>
<item name="android:gravity">center</item>
<item name="android:padding">20dp</item>
<item name="android:textSize">20sp</item>
</style>
<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>

View File

@ -40,12 +40,6 @@
<CheckBoxPreference android:title="@string/notify"
android:defaultValue="true"
android:key="updateNotify" />
<EditTextPreference
android:defaultValue="14"
android:key="updateHistoryDays"
android:maxLength="2"
android:numeric="integer"
android:title="@string/update_history" />
</PreferenceCategory>
<PreferenceCategory android:title="@string/display">
<com.geecko.QuickLyric.view.AppCompatListPreference android:title="@string/pref_language"

View File

@ -36,6 +36,7 @@ import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config;
import java.util.Date;
import java.util.List;
import static org.junit.Assert.assertEquals;
@ -48,6 +49,58 @@ public class RepoProviderTest extends FDroidProviderTest {
private static final String[] COLS = RepoTable.Cols.ALL;
@Test
public void countEnabledRepos() {
// By default, f-droid is enabled.
assertEquals(1, RepoProvider.Helper.countEnabledRepos(context));
Repo gpRepo = RepoProvider.Helper.findByAddress(context, "https://guardianproject.info/fdroid/repo");
gpRepo = setEnabled(gpRepo, true);
assertEquals(2, RepoProvider.Helper.countEnabledRepos(context));
Repo fdroidRepo = RepoProvider.Helper.findByAddress(context, "https://f-droid.org/repo");
setEnabled(fdroidRepo, false);
setEnabled(gpRepo, false);
assertEquals(0, RepoProvider.Helper.countEnabledRepos(context));
}
private Repo setEnabled(Repo repo, boolean enabled) {
ContentValues enable = new ContentValues(1);
enable.put(RepoTable.Cols.IN_USE, enabled);
RepoProvider.Helper.update(context, repo, enable);
return RepoProvider.Helper.findByAddress(context, repo.address);
}
@Test
public void lastUpdated() {
assertNull(RepoProvider.Helper.lastUpdate(context));
Repo gpRepo = RepoProvider.Helper.findByAddress(context, "https://guardianproject.info/fdroid/repo");
// Set date to 2017-04-05 11:56:38
setLastUpdate(gpRepo, new Date(1491357408643L));
// GP is not yet enabled, so it is not counted.
assertNull(RepoProvider.Helper.lastUpdate(context));
// Set date to 2017-04-04 11:56:38
Repo fdroidRepo = RepoProvider.Helper.findByAddress(context, "https://f-droid.org/repo");
setLastUpdate(fdroidRepo, new Date(1491357408643L - (1000 * 60 * 60 * 24)));
assertEquals("2017-04-04", Utils.formatDate(RepoProvider.Helper.lastUpdate(context), null));
setEnabled(gpRepo, true);
assertEquals("2017-04-05", Utils.formatDate(RepoProvider.Helper.lastUpdate(context), null));
}
private Repo setLastUpdate(Repo repo, Date date) {
ContentValues values = new ContentValues(1);
values.put(RepoTable.Cols.LAST_UPDATED, Utils.formatDate(date, null));
RepoProvider.Helper.update(context, repo, values);
return RepoProvider.Helper.findByAddress(context, repo.address);
}
@Test
public void findByUrl() {