1
0
mirror of https://codeberg.org/pstorch/F-Droid_Build_Status.git synced 2025-10-05 23:52:42 +02:00

Support all update.json infos with filter

This commit is contained in:
Peter Storch
2023-02-19 21:22:50 +01:00
parent 32187fcd86
commit 5fadb9b7ab
58 changed files with 549 additions and 364 deletions

View File

@@ -60,15 +60,21 @@ running.json)
![failed build](artwork/error_outline-24px.svg) failed build, incomplete build cycle (
maxBuildTimeReached)
![unknown build](artwork/help_outline-24px.svg) unknown build
![missing build](artwork/help_outline-24px.svg) missing build
![non-favourite app](artwork/star_border-24px.svg) non-favourite app
![favourite app](artwork/star-24px.svg) favourite app
![disabled app](artwork/disabled_by_default_24dp.svg) disabled app
![disabled app](artwork/disabled.svg) disabled app
![app needs update](artwork/upgrade_24dp.svg) app needs update
![archived app](artwork/archive_24dp.svg) archived app
![no packages app](artwork/no_packages.svg) app has no packages
![no update check](artwork/no_update_check.svg) app has no update check enabled
![app needs update](artwork/upgrade_24dp.svg) app needs update / update cycle
## Translations
@@ -97,7 +103,6 @@ via [Element.io](https://app.element.io/#/room/#fdroid-build-status:matrix.org)
## Related Projects
- Recent changes of the build process in F-Droid
wiki: https://f-droid.org/wiki/index.php?title=Special:RecentChanges&hidebots=0&days=30&limit=500
- fdroid-build-checker: https://github.com/johnjohndoe/fdroid-build-checker
- F-Droid Monitor: https://monitor.f-droid.org/builds
- fdroid-build-checker: https://github.com/johnjohndoe/fdroid-build-checker

View File

@@ -14,7 +14,6 @@ import java.util.Map;
import java.util.Objects;
import de.storchp.fdroidbuildstatus.databinding.ActivityAboutBinding;
import de.storchp.fdroidbuildstatus.model.BuildLoadType;
import de.storchp.fdroidbuildstatus.model.BuildRun;
import de.storchp.fdroidbuildstatus.model.BuildRunType;
import de.storchp.fdroidbuildstatus.utils.FormatUtils;
@@ -37,7 +36,7 @@ public class AppInfoFragment extends DialogFragment {
binding.aboutVersionText.setText(String.format("%s (%s)", BuildConfig.VERSION_NAME, BuildConfig.VERSION_CODE));
binding.aboutInfo.setMovementMethod(LinkMovementMethod.getInstance());
var buildRuns = ((BaseApplication) fragmentActivity.getApplication()).getDbAdapter().loadBuildRuns(BuildLoadType.MERGED.getBuildRunTypes());
var buildRuns = ((BaseApplication) fragmentActivity.getApplication()).getDbAdapter().loadBuildRuns();
binding.aboutLastUpdateBuildText.setText(getLastUpdate(buildRuns, BuildRunType.BUILD));
binding.aboutLastUpdateRunningText.setText(getLastUpdate(buildRuns, BuildRunType.RUNNING));

View File

@@ -24,7 +24,6 @@ import de.storchp.fdroidbuildstatus.adapter.gitlab.Metadata;
import de.storchp.fdroidbuildstatus.databinding.ActivityDetailBinding;
import de.storchp.fdroidbuildstatus.model.App;
import de.storchp.fdroidbuildstatus.model.AppBuild;
import de.storchp.fdroidbuildstatus.model.BuildLoadType;
import de.storchp.fdroidbuildstatus.model.MetadataLinkType;
import de.storchp.fdroidbuildstatus.utils.DrawableUtils;
import de.storchp.fdroidbuildstatus.utils.FormatUtils;
@@ -88,9 +87,7 @@ public class DetailActivity extends AppCompatActivity {
var intent = getIntent();
if (intent != null) {
var id = intent.getStringExtra(EXTRA_BUILD_ITEM_ID);
var versionCode = intent.getStringExtra(MainActivity.EXTRA_BUILD_ITEM_VERSION_CODE);
var buildRunType = intent.getStringExtra(MainActivity.EXTRA_BUILD_ITEM_RUN_TYPE);
app = baseApplication.getDbAdapter().loadAppBuilds(id, BuildLoadType.MERGED.getBuildRunTypes());
app = baseApplication.getDbAdapter().loadAppBuilds(id);
if (app == null) {
app = baseApplication.getDbAdapter().loadApp(id);
@@ -102,11 +99,17 @@ public class DetailActivity extends AppCompatActivity {
binding.appName.setText(app.getName());
binding.appId.setText(app.getId());
DrawableUtils.setIconWithTint(this, binding.disabledIcon, R.drawable.ic_disabled_by_default_black_24dp, binding.appName.getCurrentTextColor());
DrawableUtils.setIconWithTint(this, binding.disabledIcon, R.drawable.ic_disabled_24dp, binding.appName.getCurrentTextColor());
DrawableUtils.setIconWithTint(this, binding.archivedIcon, R.drawable.ic_archive_24, binding.appName.getCurrentTextColor());
DrawableUtils.setIconWithTint(this, binding.noPackagesIcon, R.drawable.ic_no_packages_24, binding.appName.getCurrentTextColor());
DrawableUtils.setIconWithTint(this, binding.noUpdateCheckIcon, R.drawable.ic_no_update_check_24, binding.appName.getCurrentTextColor());
DrawableUtils.setIconWithTint(this, binding.needsUpdateIcon, R.drawable.ic_upgrade_black_24dp, binding.appName.getCurrentTextColor());
DrawableUtils.setIconWithTint(this, binding.favouriteIcon, app.getFavouriteIcon(), binding.appName.getCurrentTextColor());
binding.disabledIcon.setVisibility(app.getDisabled() ? View.VISIBLE : View.GONE);
binding.archivedIcon.setVisibility(app.getArchived() ? View.VISIBLE : View.GONE);
binding.noPackagesIcon.setVisibility(app.getNoPackages() ? View.VISIBLE : View.GONE);
binding.noUpdateCheckIcon.setVisibility(app.getNoUpdateCheck() ? View.VISIBLE : View.GONE);
binding.needsUpdateIcon.setVisibility(app.getNeedsUpdate() ? View.VISIBLE : View.GONE);
detailAppBuildListAdapter = new DetailAppBuildListAdapter(this, app.getAppBuildsByVersionCodeAndStatus());

View File

@@ -8,7 +8,6 @@ import android.app.AlertDialog;
import android.app.SearchManager;
import android.content.Context;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.InsetDrawable;
import android.os.Bundle;
import android.os.Parcelable;
@@ -43,6 +42,7 @@ import de.storchp.fdroidbuildstatus.model.App;
import de.storchp.fdroidbuildstatus.model.BuildLoadType;
import de.storchp.fdroidbuildstatus.model.BuildRun;
import de.storchp.fdroidbuildstatus.model.BuildRunType;
import de.storchp.fdroidbuildstatus.model.StatusFilter;
import de.storchp.fdroidbuildstatus.monitor.MonitorJobService;
import de.storchp.fdroidbuildstatus.utils.Constants;
import de.storchp.fdroidbuildstatus.utils.DrawableUtils;
@@ -131,7 +131,7 @@ public class MainActivity extends AppCompatActivity {
binding.chipCycle.setOnClickListener(this::showBuildCycleMenu);
binding.chipStatus.setOnClickListener(this::showBuildStatusMenu);
binding.chipFavourite.setCheckedIcon(DrawableUtils.getTintedDrawable(this, R.drawable.ic_star_24px, binding.chipStatus.getCurrentTextColor()));
binding.chipFavourite.setCheckedIcon(DrawableUtils.getTintedDrawable(this, R.drawable.ic_favourite_24px, binding.chipStatus.getCurrentTextColor()));
}
private void showBuildCycleMenu(View v) {
@@ -167,21 +167,23 @@ public class MainActivity extends AppCompatActivity {
popup.setOnMenuItemClickListener(menuItem -> {
if (menuItem.getItemId() == R.id.build_status_successful) {
PreferenceUtils.setShowSuccessfulBuilds(this, true);
PreferenceUtils.setShowFailedBuilds(this, false);
PreferenceUtils.setShowMissingBuilds(this, false);
PreferenceUtils.setStatusFilter(this, StatusFilter.SUCCESSFUL_BUILD);
} else if (menuItem.getItemId() == R.id.build_status_failed) {
PreferenceUtils.setShowSuccessfulBuilds(this, false);
PreferenceUtils.setShowFailedBuilds(this, true);
PreferenceUtils.setShowMissingBuilds(this, false);
PreferenceUtils.setStatusFilter(this, StatusFilter.FAILED_BUILD);
} else if (menuItem.getItemId() == R.id.build_status_missing) {
PreferenceUtils.setShowMissingBuilds(this, true);
PreferenceUtils.setShowSuccessfulBuilds(this, false);
PreferenceUtils.setShowFailedBuilds(this, false);
PreferenceUtils.setStatusFilter(this, StatusFilter.MISSING_BUILD);
} else if (menuItem.getItemId() == R.id.status_disabled) {
PreferenceUtils.setStatusFilter(this, StatusFilter.DISABLED);
} else if (menuItem.getItemId() == R.id.status_archived) {
PreferenceUtils.setStatusFilter(this, StatusFilter.ARCHIVED);
} else if (menuItem.getItemId() == R.id.status_needs_update) {
PreferenceUtils.setStatusFilter(this, StatusFilter.NEEDS_UPDATE);
} else if (menuItem.getItemId() == R.id.status_no_packages) {
PreferenceUtils.setStatusFilter(this, StatusFilter.NO_PACKAGES);
} else if (menuItem.getItemId() == R.id.status_no_update_check) {
PreferenceUtils.setStatusFilter(this, StatusFilter.NO_UPDATE_CHECK);
} else {
PreferenceUtils.setShowSuccessfulBuilds(this, true);
PreferenceUtils.setShowFailedBuilds(this, true);
PreferenceUtils.setShowMissingBuilds(this, true);
PreferenceUtils.setStatusFilter(this, StatusFilter.NONE);
}
setChipStatus();
refreshList();
@@ -280,26 +282,18 @@ public class MainActivity extends AppCompatActivity {
}
private void setChipStatus() {
var statusText = "";
if (PreferenceUtils.isShowSuccessfulBuilds(this) && !PreferenceUtils.isShowFailedBuilds(this)) {
statusText = getString(R.string.bottom_bar_success);
setChipColorWithIcon(binding.chipStatus, DrawableUtils.getTintedDrawable(this, R.drawable.ic_check_24px, getChipForegroundColor(true)), R.color.colorPrimary, true);
} else if (PreferenceUtils.isShowFailedBuilds(this) && !PreferenceUtils.isShowSuccessfulBuilds(this)) {
statusText = getString(R.string.bottom_bar_failed);
setChipColorWithIcon(binding.chipStatus, DrawableUtils.getTintedDrawable(this, R.drawable.ic_error_outline_24px, getChipForegroundColor(true)), R.color.colorPrimary, true);
} else if (PreferenceUtils.isShowMissingBuilds(this) && !PreferenceUtils.isShowMissingBuilds(this)) {
statusText = getString(R.string.bottom_bar_missing);
setChipColorWithIcon(binding.chipStatus, DrawableUtils.getTintedDrawable(this, R.drawable.ic_questionmark_outline_24px, getChipForegroundColor(true)), R.color.colorPrimary, true);
} else {
statusText = getString(R.string.build_status);
setChipColorWithIcon(binding.chipStatus, null, R.color.fullTransparent, false);
}
binding.chipStatus.setText(statusText);
var statusFilter = PreferenceUtils.getStatusFilter(this);
setChipColorWithIcon(binding.chipStatus, statusFilter.getIconRes(), statusFilter.isActive());
binding.chipStatus.setText(statusFilter.getTextRes());
}
private void setChipColorWithIcon(final Chip binding, final Drawable drawable, final int colorPrimary, final boolean active) {
binding.setChipIcon(drawable);
binding.setChipBackgroundColorResource(colorPrimary);
private void setChipColorWithIcon(Chip binding, int iconRes, boolean active) {
if (iconRes != 0) {
binding.setChipIcon(DrawableUtils.getTintedDrawable(this, iconRes, getChipForegroundColor(active)));
} else {
binding.setChipIcon(null);
}
binding.setChipBackgroundColorResource(active ? R.color.colorPrimary : R.color.fullTransparent);
binding.setTextColor(getChipForegroundColor(active));
binding.setCloseIconTintResource(getChipForegroundColorRes(active));
binding.setChipStrokeColorResource(active ? R.color.colorPrimary : R.color.colorForeground);
@@ -311,15 +305,15 @@ public class MainActivity extends AppCompatActivity {
switch (buildLoadType) {
case RUNNING:
cycleText = getString(R.string.bottom_bar_running);
setChipColorWithIcon(binding.chipCycle, DrawableUtils.getTintedDrawable(this, R.drawable.ic_directions_run_24px, getChipForegroundColor(true)), R.color.colorPrimary, true);
setChipColorWithIcon(binding.chipCycle, R.drawable.ic_directions_run_24px, true);
break;
case FINISHED:
cycleText = getString(R.string.bottom_bar_finished);
setChipColorWithIcon(binding.chipCycle, DrawableUtils.getTintedDrawable(this, R.drawable.ic_history_24px, getChipForegroundColor(true)), R.color.colorPrimary, true);
setChipColorWithIcon(binding.chipCycle, R.drawable.ic_history_24px, true);
break;
default:
cycleText = getString(R.string.build_cycle);
setChipColorWithIcon(binding.chipCycle, null, R.color.fullTransparent, false);
setChipColorWithIcon(binding.chipCycle, 0, false);
}
binding.chipCycle.setText(cycleText);
}
@@ -389,7 +383,7 @@ public class MainActivity extends AppCompatActivity {
}
private void loadData(BuildLoadType buildLoadType, boolean forceUpdate) {
var buildRuns = baseApplication.getDbAdapter().loadBuildRuns(buildLoadType.getBuildRunTypes());
var buildRuns = baseApplication.getDbAdapter().loadBuildRuns();
reloadList(buildLoadType, buildRuns);
if (!forceUpdate && (System.currentTimeMillis() - baseApplication.getLastUpdate()) < Constants.TIME.ONE_HOUR) {
@@ -443,9 +437,9 @@ public class MainActivity extends AppCompatActivity {
}
private void reloadList(BuildLoadType buildLoadType, Map<BuildRunType, BuildRun> cachedBuildRuns) {
setBuildStatusText(cachedBuildRuns != null ? cachedBuildRuns : baseApplication.getDbAdapter().loadBuildRuns(buildLoadType.getBuildRunTypes()));
setBuildStatusText(cachedBuildRuns != null ? cachedBuildRuns : baseApplication.getDbAdapter().loadBuildRuns());
adapter = new MainAppListAdapter(MainActivity.this, baseApplication.getDbAdapter(), buildLoadType.getBuildRunTypes());
adapter = new MainAppListAdapter(MainActivity.this, baseApplication.getDbAdapter(), buildLoadType.getBuildRunType());
binding.buildList.setAdapter(adapter);
if (!TextUtils.isEmpty(lastSearch)) {

View File

@@ -15,7 +15,6 @@ import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Locale;
import java.util.Set;
import de.storchp.fdroidbuildstatus.adapter.db.DbAdapter;
import de.storchp.fdroidbuildstatus.databinding.ItemMainAppBinding;
@@ -35,13 +34,11 @@ public class MainAppListAdapter extends BaseAdapter implements Filterable {
private List<App> appList;
private ArrayFilter filter;
public MainAppListAdapter(MainActivity context, DbAdapter dbAdapter, Set<BuildRunType> buildRunTypes) {
public MainAppListAdapter(MainActivity context, DbAdapter dbAdapter, BuildRunType buildRunType) {
super();
this.allAppList = dbAdapter.loadAppBuilds(buildRunTypes,
this.allAppList = dbAdapter.loadAppBuilds(buildRunType,
PreferenceUtils.isShowFavouritesWithoutBuildStatus(context),
PreferenceUtils.isShowSuccessfulBuilds(context),
PreferenceUtils.isShowFailedBuilds(context),
true); // TODO: set filter
PreferenceUtils.getStatusFilter(context));
this.appList = new ArrayList<>(allAppList);
this.context = context;
this.dbAdapter = dbAdapter;
@@ -85,10 +82,17 @@ public class MainAppListAdapter extends BaseAdapter implements Filterable {
var item = appList.get(position);
binding.appName.setText(item.getName());
binding.appId.setText(item.getId());
DrawableUtils.setIconWithTint(context, binding.disabledIcon, R.drawable.ic_disabled_by_default_black_24dp, binding.appName.getCurrentTextColor());
DrawableUtils.setIconWithTint(context, binding.disabledIcon, R.drawable.ic_disabled_24dp, binding.appName.getCurrentTextColor());
DrawableUtils.setIconWithTint(context, binding.archivedIcon, R.drawable.ic_archive_24, binding.appName.getCurrentTextColor());
DrawableUtils.setIconWithTint(context, binding.noPackagesIcon, R.drawable.ic_no_packages_24, binding.appName.getCurrentTextColor());
DrawableUtils.setIconWithTint(context, binding.noUpdateCheckIcon, R.drawable.ic_no_update_check_24, binding.appName.getCurrentTextColor());
DrawableUtils.setIconWithTint(context, binding.needsUpdateIcon, R.drawable.ic_upgrade_black_24dp, binding.appName.getCurrentTextColor());
DrawableUtils.setIconWithTint(context, binding.favouriteIcon, item.getFavouriteIcon(), binding.appName.getCurrentTextColor());
binding.disabledIcon.setVisibility(item.getDisabled() ? View.VISIBLE : View.GONE);
binding.archivedIcon.setVisibility(item.getArchived() ? View.VISIBLE : View.GONE);
binding.noPackagesIcon.setVisibility(item.getNoPackages() ? View.VISIBLE : View.GONE);
binding.noUpdateCheckIcon.setVisibility(item.getNoUpdateCheck() ? View.VISIBLE : View.GONE);
binding.needsUpdateIcon.setVisibility(item.getNeedsUpdate() ? View.VISIBLE : View.GONE);
binding.appBuilds.removeAllViews();

View File

@@ -13,9 +13,9 @@ import android.database.sqlite.SQLiteDatabase;
import android.util.Log;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Date;
@@ -36,6 +36,7 @@ import de.storchp.fdroidbuildstatus.model.AppNotification;
import de.storchp.fdroidbuildstatus.model.BuildRun;
import de.storchp.fdroidbuildstatus.model.BuildRunType;
import de.storchp.fdroidbuildstatus.model.BuildStatus;
import de.storchp.fdroidbuildstatus.model.StatusFilter;
public class DbAdapter {
@@ -169,7 +170,7 @@ public class DbAdapter {
valuesBuildRun.put(DbConstants.BUILD_RUNS.BUILD_RUN_TYPE, buildRunType.name());
valuesBuildRun.put(DbConstants.BUILD_RUNS.START, buildRun.getStartTimestamp());
valuesBuildRun.put(DbConstants.BUILD_RUNS.END, buildRun.getEndTimestamp());
valuesBuildRun.put(DbConstants.BUILD_RUNS.LAST_MODIFIED, buildRun.getLastModified().getTime());
valuesBuildRun.put(DbConstants.BUILD_RUNS.LAST_MODIFIED, buildRun.getLastModified() != null ? buildRun.getLastModified().getTime() : null);
valuesBuildRun.put(DbConstants.BUILD_RUNS.LAST_UPDATED, System.currentTimeMillis());
valuesBuildRun.put(DbConstants.BUILD_RUNS.MAX_BUILD_TIME_REACHED, buildRun.getMaxBuildTimeReached() ? 1 : 0);
valuesBuildRun.put(DbConstants.BUILD_RUNS.SUBCOMMAND, buildRun.getSubcommand());
@@ -192,26 +193,25 @@ public class DbAdapter {
}
@NonNull
public Map<BuildRunType, BuildRun> loadBuildRuns(Set<BuildRunType> buildRunTypes) {
public Map<BuildRunType, BuildRun> loadBuildRuns() {
var buildRuns = new HashMap<BuildRunType, BuildRun>();
if (buildRunTypes.isEmpty()) {
return buildRuns;
}
try (Cursor cursorBuildRuns = db.rawQuery("SELECT * FROM " + DATABASE_TABLE_BUILD_RUNS + " WHERE " + DbConstants.BUILD_RUNS.BUILD_RUN_TYPE + " IN (" + makePlaceholders(buildRunTypes.size()) + ")", toArray(buildRunTypes))) {
try (Cursor cursorBuildRuns = db.rawQuery("SELECT * FROM " + DATABASE_TABLE_BUILD_RUNS, new String[]{})) {
while (cursorBuildRuns.moveToNext()) {
var buildRun = createBuildRunFromCursor(cursorBuildRuns);
buildRuns.put(buildRun.getBuildRunType(), buildRun);
try (Cursor cursorBuildCount = db.rawQuery("SELECT " + DbConstants.BUILDS.STATUS + ", count(*) AS " + DbConstants.COUNTER + " FROM " + DATABASE_TABLE_BUILDS + " WHERE " + DbConstants.BUILDS.BUILD_RUN_TYPE + " = ? GROUP BY " + DbConstants.BUILDS.STATUS, new String[]{buildRun.getBuildRunType().name()})) {
while (cursorBuildCount.moveToNext()) {
int count = cursorBuildCount.getInt(cursorBuildCount.getColumnIndexOrThrow(DbConstants.COUNTER));
switch (BuildStatus.valueOf(cursorBuildCount.getString(cursorBuildCount.getColumnIndexOrThrow(DbConstants.BUILDS.STATUS)))) {
case SUCCESS:
buildRun.setSuccessCount(count);
break;
case FAILED:
buildRun.setFailedCount(count);
break;
if (buildRun != null) {
buildRuns.put(buildRun.getBuildRunType(), buildRun);
try (Cursor cursorBuildCount = db.rawQuery("SELECT " + DbConstants.BUILDS.STATUS + ", count(*) AS " + DbConstants.COUNTER + " FROM " + DATABASE_TABLE_BUILDS + " WHERE " + DbConstants.BUILDS.BUILD_RUN_TYPE + " = ? GROUP BY " + DbConstants.BUILDS.STATUS, new String[]{buildRun.getBuildRunType().name()})) {
while (cursorBuildCount.moveToNext()) {
int count = cursorBuildCount.getInt(cursorBuildCount.getColumnIndexOrThrow(DbConstants.COUNTER));
switch (BuildStatus.valueOf(cursorBuildCount.getString(cursorBuildCount.getColumnIndexOrThrow(DbConstants.BUILDS.STATUS)))) {
case SUCCESS:
buildRun.setSuccessCount(count);
break;
case FAILED:
buildRun.setFailedCount(count);
break;
}
}
}
}
@@ -220,78 +220,98 @@ public class DbAdapter {
return buildRuns;
}
public List<de.storchp.fdroidbuildstatus.model.App> loadAppBuilds(Set<BuildRunType> buildRunTypes, boolean includeFavorites, boolean includeSuccessful, boolean includeFailed, boolean includeMissing) {
public List<de.storchp.fdroidbuildstatus.model.App> loadAppBuilds(BuildRunType buildRunType, boolean includeFavorites, StatusFilter statusFilter) {
Map<String, de.storchp.fdroidbuildstatus.model.App> favourites = includeFavorites ? getFavourites() : Collections.emptyMap();
var apps = new ArrayList<de.storchp.fdroidbuildstatus.model.App>();
if (!buildRunTypes.isEmpty()) {
try (Cursor cursor = db.rawQuery("SELECT b." + DbConstants.BUILDS.BUILD_RUN_TYPE
+ ", b." + DbConstants.BUILDS.ID
+ ", b." + DbConstants.BUILDS.STATUS
+ ", v." + DbConstants.VERSIONS.VERSION_NAME
+ ", b." + DbConstants.BUILDS.VERSION_CODE
+ ", a." + DbConstants.APPS.SOURCE_CODE
+ ", a." + DbConstants.APPS.NAME
+ ", a." + DbConstants.APPS.FAVOURITE
+ ", r." + DbConstants.BUILD_RUNS.DATA_COMMIT_ID
+ ", a." + DbConstants.APPS.DISABLED
+ ", a." + DbConstants.APPS.NEEDS_UPDATE
+ ", a." + DbConstants.APPS.ARCHIVED
+ ", a." + DbConstants.APPS.NO_PACKAGES
+ ", a." + DbConstants.APPS.NO_UPDATE_CHECK
+ " FROM " + DATABASE_TABLE_BUILDS + " b "
+ " LEFT JOIN " + DATABASE_TABLE_VERSIONS + " v ON b." + DbConstants.BUILDS.ID + " = v." + DbConstants.VERSIONS.ID + " AND b." + DbConstants.BUILDS.VERSION_CODE + " = v." + DbConstants.VERSIONS.VERSION_CODE
+ " LEFT JOIN " + DATABASE_TABLE_APPS + " a ON b." + DbConstants.BUILDS.ID + " = a." + DbConstants.APPS.ID
+ " LEFT JOIN " + DATABASE_TABLE_BUILD_RUNS + " r ON r." + DbConstants.BUILD_RUNS.BUILD_RUN_TYPE + " = b." + DbConstants.BUILD_RUNS.BUILD_RUN_TYPE
+ " WHERE b." + DbConstants.BUILDS.BUILD_RUN_TYPE + " IN (" + makePlaceholders(buildRunTypes.size()) + ")"
+ " ORDER BY b." + DbConstants.BUILDS.ID, toArray(buildRunTypes))) {
de.storchp.fdroidbuildstatus.model.App app = null;
while (cursor.moveToNext()) {
var id = cursor.getString(cursor.getColumnIndexOrThrow(DbConstants.BUILDS.ID));
if (app == null || !app.getId().equals(id)) {
app = new de.storchp.fdroidbuildstatus.model.App(
id,
cursor.getString(cursor.getColumnIndexOrThrow(DbConstants.APPS.NAME)),
cursor.getInt(cursor.getColumnIndexOrThrow(DbConstants.APPS.FAVOURITE)) == 1,
cursor.getString(cursor.getColumnIndexOrThrow(DbConstants.APPS.SOURCE_CODE)),
cursor.getInt(cursor.getColumnIndexOrThrow(DbConstants.APPS.DISABLED)) == 1,
cursor.getInt(cursor.getColumnIndexOrThrow(DbConstants.APPS.NEEDS_UPDATE)) == 1,
cursor.getInt(cursor.getColumnIndexOrThrow(DbConstants.APPS.ARCHIVED)) == 1,
cursor.getInt(cursor.getColumnIndexOrThrow(DbConstants.APPS.NO_PACKAGES)) == 1,
cursor.getInt(cursor.getColumnIndexOrThrow(DbConstants.APPS.NO_UPDATE_CHECK)) == 1
);
}
var appBuild = createAppBuildFromCursor(cursor);
if ((includeSuccessful && appBuild.getStatus() == BuildStatus.SUCCESS)
|| (includeFailed && appBuild.getStatus() == BuildStatus.FAILED)
|| includeMissing && appBuild.getStatus() == BuildStatus.MISSING) {
app.getAppBuilds().add(appBuild);
if (!includeFavorites || app.getFavourite()) {
if (!apps.contains(app)) {
apps.add(app);
favourites.remove(id);
}
}
}
var appFilter = "";
if (statusFilter == StatusFilter.DISABLED) {
appFilter = " AND a." + DbConstants.APPS.DISABLED + " = 1";
} else if (statusFilter == StatusFilter.ARCHIVED) {
appFilter = " AND a." + DbConstants.APPS.ARCHIVED + " = 1";
} else if (statusFilter == StatusFilter.NEEDS_UPDATE) {
appFilter = " AND a." + DbConstants.APPS.NEEDS_UPDATE + " = 1";
} else if (statusFilter == StatusFilter.NO_PACKAGES) {
appFilter = " AND a." + DbConstants.APPS.NO_PACKAGES + " = 1";
} else if (statusFilter == StatusFilter.NO_UPDATE_CHECK) {
appFilter = " AND a." + DbConstants.APPS.NO_UPDATE_CHECK + " = 1";
}
var buildRunTypeFilter = "";
if (buildRunType != null) {
buildRunTypeFilter = " AND b." + DbConstants.BUILDS.BUILD_RUN_TYPE + " = '" + buildRunType.name() + "'";
}
try (Cursor cursor = db.rawQuery("SELECT b." + DbConstants.BUILDS.BUILD_RUN_TYPE
+ ", a." + DbConstants.APPS.ID
+ ", b." + DbConstants.BUILDS.STATUS
+ ", v." + DbConstants.VERSIONS.VERSION_NAME
+ ", b." + DbConstants.BUILDS.VERSION_CODE
+ ", a." + DbConstants.APPS.SOURCE_CODE
+ ", a." + DbConstants.APPS.NAME
+ ", a." + DbConstants.APPS.FAVOURITE
+ ", r." + DbConstants.BUILD_RUNS.DATA_COMMIT_ID
+ ", a." + DbConstants.APPS.DISABLED
+ ", a." + DbConstants.APPS.NEEDS_UPDATE
+ ", a." + DbConstants.APPS.ARCHIVED
+ ", a." + DbConstants.APPS.NO_PACKAGES
+ ", a." + DbConstants.APPS.NO_UPDATE_CHECK
+ " FROM " + DATABASE_TABLE_APPS + " a "
+ " LEFT JOIN " + DATABASE_TABLE_BUILDS + " b ON b." + DbConstants.BUILDS.ID + " = a." + DbConstants.APPS.ID
+ " LEFT JOIN " + DATABASE_TABLE_VERSIONS + " v ON b." + DbConstants.BUILDS.ID + " = v." + DbConstants.VERSIONS.ID + " AND b." + DbConstants.BUILDS.VERSION_CODE + " = v." + DbConstants.VERSIONS.VERSION_CODE
+ " LEFT JOIN " + DATABASE_TABLE_BUILD_RUNS + " r ON r." + DbConstants.BUILD_RUNS.BUILD_RUN_TYPE + " = b." + DbConstants.BUILD_RUNS.BUILD_RUN_TYPE
+ " WHERE 1 = 1 "
+ buildRunTypeFilter
+ appFilter
+ " ORDER BY b." + DbConstants.BUILDS.ID, new String[]{})) {
de.storchp.fdroidbuildstatus.model.App app = null;
while (cursor.moveToNext()) {
var id = cursor.getString(cursor.getColumnIndexOrThrow(DbConstants.APPS.ID));
if (app == null || !app.getId().equals(id)) {
app = new de.storchp.fdroidbuildstatus.model.App(
id,
cursor.getString(cursor.getColumnIndexOrThrow(DbConstants.APPS.NAME)),
cursor.getInt(cursor.getColumnIndexOrThrow(DbConstants.APPS.FAVOURITE)) == 1,
cursor.getString(cursor.getColumnIndexOrThrow(DbConstants.APPS.SOURCE_CODE)),
cursor.getInt(cursor.getColumnIndexOrThrow(DbConstants.APPS.DISABLED)) == 1,
cursor.getInt(cursor.getColumnIndexOrThrow(DbConstants.APPS.NEEDS_UPDATE)) == 1,
cursor.getInt(cursor.getColumnIndexOrThrow(DbConstants.APPS.ARCHIVED)) == 1,
cursor.getInt(cursor.getColumnIndexOrThrow(DbConstants.APPS.NO_PACKAGES)) == 1,
cursor.getInt(cursor.getColumnIndexOrThrow(DbConstants.APPS.NO_UPDATE_CHECK)) == 1
);
}
var appBuild = createAppBuildFromCursor(cursor);
if (appBuild != null && (!statusFilter.isBuildFilter()
|| (statusFilter == StatusFilter.SUCCESSFUL_BUILD && appBuild.getStatus() == BuildStatus.SUCCESS)
|| (statusFilter == StatusFilter.FAILED_BUILD && appBuild.getStatus() == BuildStatus.FAILED)
|| (statusFilter == StatusFilter.MISSING_BUILD && appBuild.getStatus() == BuildStatus.MISSING))) {
app.getAppBuilds().add(appBuild);
}
if (apps.contains(app)) {
continue;
}
if ((!includeFavorites || app.getFavourite())
&& (!statusFilter.isBuildFilter() || !app.getAppBuilds().isEmpty())
|| statusFilter.isAppFilter()) {
apps.add(app);
favourites.remove(app.getId());
}
}
}
// include rest of the favorites if no other filter is set
if (includeSuccessful && includeFailed && buildRunTypes.size() > 1) {
if (statusFilter == StatusFilter.NONE && buildRunType != null) {
apps.addAll(favourites.values());
}
return apps;
}
public de.storchp.fdroidbuildstatus.model.App loadAppBuilds(String id, Set<BuildRunType> buildRunTypes) {
public de.storchp.fdroidbuildstatus.model.App loadAppBuilds(String id) {
if (id == null) {
return null;
}
de.storchp.fdroidbuildstatus.model.App app = null;
var selectionArgs = new ArrayList<String>();
selectionArgs.add(id);
selectionArgs.addAll(Arrays.asList(toArray(buildRunTypes)));
try (Cursor cursor = db.rawQuery("SELECT b." + DbConstants.BUILDS.BUILD_RUN_TYPE
+ ", b." + DbConstants.BUILDS.ID
@@ -307,11 +327,11 @@ public class DbAdapter {
+ ", a." + DbConstants.APPS.ARCHIVED
+ ", a." + DbConstants.APPS.NO_PACKAGES
+ ", a." + DbConstants.APPS.NO_UPDATE_CHECK
+ " FROM " + DATABASE_TABLE_BUILDS + " b "
+ " FROM " + DATABASE_TABLE_APPS + " a "
+ " LEFT JOIN " + DATABASE_TABLE_BUILDS + " b ON b." + DbConstants.BUILDS.ID + " = a." + DbConstants.APPS.ID
+ " LEFT JOIN " + DATABASE_TABLE_VERSIONS + " v ON b." + DbConstants.BUILDS.ID + " = v." + DbConstants.VERSIONS.ID + " AND b." + DbConstants.BUILDS.VERSION_CODE + " = v." + DbConstants.VERSIONS.VERSION_CODE
+ " LEFT JOIN " + DATABASE_TABLE_APPS + " a ON b." + DbConstants.BUILDS.ID + " = a." + DbConstants.APPS.ID
+ " LEFT JOIN " + DATABASE_TABLE_BUILD_RUNS + " r ON r." + DbConstants.BUILD_RUNS.BUILD_RUN_TYPE + " = b." + DbConstants.BUILD_RUNS.BUILD_RUN_TYPE
+ " WHERE b." + DbConstants.BUILDS.ID + " = ? AND b." + DbConstants.BUILDS.BUILD_RUN_TYPE + " IN (" + makePlaceholders(buildRunTypes.size()) + ")"
+ " WHERE b." + DbConstants.BUILDS.ID + " = ?"
, selectionArgs.toArray(new String[0]))) {
while (cursor.moveToNext()) {
if (app == null) {
@@ -327,7 +347,10 @@ public class DbAdapter {
cursor.getInt(cursor.getColumnIndexOrThrow(DbConstants.APPS.NO_UPDATE_CHECK)) == 1);
}
app.getAppBuilds().add(createAppBuildFromCursor(cursor));
var appBuild = createAppBuildFromCursor(cursor);
if (appBuild != null) {
app.getAppBuilds().add(appBuild);
}
}
}
return app;
@@ -348,8 +371,11 @@ public class DbAdapter {
}
}
@NonNull
private AppBuild createAppBuildFromCursor(Cursor cursor) {
var buildRunType = getBuildRunTypeFromCursor(cursor);
if (buildRunType == null) {
return null;
}
return new AppBuild(
cursor.getString(cursor.getColumnIndexOrThrow(DbConstants.BUILDS.VERSION_CODE)),
cursor.getString(cursor.getColumnIndexOrThrow(DbConstants.VERSIONS.VERSION_NAME)),
@@ -358,10 +384,13 @@ public class DbAdapter {
cursor.getString(cursor.getColumnIndexOrThrow(DbConstants.BUILD_RUNS.DATA_COMMIT_ID)));
}
@NonNull
private BuildRun createBuildRunFromCursor(Cursor cursor) {
var buildRunType = getBuildRunTypeFromCursor(cursor);
if (buildRunType == null) {
return null;
}
var buildRun = new BuildRun();
buildRun.setBuildRunType(BuildRunType.valueOf(cursor.getString(cursor.getColumnIndexOrThrow(DbConstants.BUILD_RUNS.BUILD_RUN_TYPE))));
buildRun.setBuildRunType(buildRunType);
buildRun.setStartTimestamp(cursor.getLong(cursor.getColumnIndexOrThrow(DbConstants.BUILD_RUNS.START)));
buildRun.setEndTimestamp(cursor.getLong(cursor.getColumnIndexOrThrow(DbConstants.BUILD_RUNS.END)));
buildRun.setLastModified(new Date(cursor.getLong(cursor.getColumnIndexOrThrow(DbConstants.BUILD_RUNS.LAST_MODIFIED))));
@@ -371,94 +400,24 @@ public class DbAdapter {
return buildRun;
}
@Nullable
private BuildRunType getBuildRunTypeFromCursor(final Cursor cursor) {
try {
return BuildRunType.valueOf(cursor.getString(cursor.getColumnIndexOrThrow(DbConstants.BUILD_RUNS.BUILD_RUN_TYPE)));
} catch (Exception ignored) {
}
return null;
}
public void saveUpdate(UpdateResult updateResult, boolean running) {
Log.i(TAG, "Save new update " + updateResult.getLastModified());
db.beginTransaction();
var valuesDis = new ContentValues();
valuesDis.put(DbConstants.APPS.DISABLED, false);
if (!running) {
db.update(DATABASE_TABLE_APPS, valuesDis, null, null);
}
valuesDis.put(DbConstants.APPS.DISABLED, true);
for (var disabledId : updateResult.getDisabled()) {
int updated = db.update(DATABASE_TABLE_APPS, valuesDis, DbConstants.APPS.ID + " = ?", new String[]{disabledId});
if (updated == 0) {
var values = new ContentValues();
values.put(DbConstants.APPS.ID, disabledId);
values.put(DbConstants.APPS.DISABLED, true);
db.insert(DATABASE_TABLE_APPS, null, values);
}
}
var valuesUpd = new ContentValues();
valuesUpd.put(DbConstants.APPS.NEEDS_UPDATE, false);
if (!running) {
db.update(DATABASE_TABLE_APPS, valuesUpd, null, null);
}
valuesUpd.put(DbConstants.APPS.NEEDS_UPDATE, true);
for (var needsUpdateId : updateResult.getNeedsUpdate()) {
int updated = db.update(DATABASE_TABLE_APPS, valuesUpd, DbConstants.APPS.ID + " = ?", new String[]{needsUpdateId});
if (updated == 0) {
var values = new ContentValues();
values.put(DbConstants.APPS.ID, needsUpdateId);
values.put(DbConstants.APPS.NEEDS_UPDATE, true);
db.insert(DATABASE_TABLE_APPS, null, values);
}
}
var valuesArch = new ContentValues();
valuesArch.put(DbConstants.APPS.ARCHIVED, false);
if (!running) {
db.update(DATABASE_TABLE_APPS, valuesArch, null, null);
}
valuesArch.put(DbConstants.APPS.ARCHIVED, true);
for (var archivedId : updateResult.getArchivePolicy0()) {
int updated = db.update(DATABASE_TABLE_APPS, valuesUpd, DbConstants.APPS.ID + " = ?", new String[]{archivedId});
if (updated == 0) {
var values = new ContentValues();
values.put(DbConstants.APPS.ID, archivedId);
values.put(DbConstants.APPS.ARCHIVED, true);
db.insert(DATABASE_TABLE_APPS, null, values);
}
}
var valuesNoPack = new ContentValues();
valuesNoPack.put(DbConstants.APPS.NO_PACKAGES, false);
if (!running) {
db.update(DATABASE_TABLE_APPS, valuesNoPack, null, null);
}
valuesNoPack.put(DbConstants.APPS.NO_PACKAGES, true);
for (var archivedId : updateResult.getNoPackages()) {
int updated = db.update(DATABASE_TABLE_APPS, valuesUpd, DbConstants.APPS.ID + " = ?", new String[]{archivedId});
if (updated == 0) {
var values = new ContentValues();
values.put(DbConstants.APPS.ID, archivedId);
values.put(DbConstants.APPS.NO_PACKAGES, true);
db.insert(DATABASE_TABLE_APPS, null, values);
}
}
var valuesNoUpd = new ContentValues();
valuesNoUpd.put(DbConstants.APPS.NO_UPDATE_CHECK, false);
if (!running) {
db.update(DATABASE_TABLE_APPS, valuesNoUpd, null, null);
}
valuesNoUpd.put(DbConstants.APPS.NO_PACKAGES, true);
for (var archivedId : updateResult.getNoUpdateCheck()) {
int updated = db.update(DATABASE_TABLE_APPS, valuesUpd, DbConstants.APPS.ID + " = ?", new String[]{archivedId});
if (updated == 0) {
var values = new ContentValues();
values.put(DbConstants.APPS.ID, archivedId);
values.put(DbConstants.APPS.NO_UPDATE_CHECK, true);
db.insert(DATABASE_TABLE_APPS, null, values);
}
}
updateAppFeature(DbConstants.APPS.DISABLED, running, updateResult.getDisabled());
updateAppFeature(DbConstants.APPS.NEEDS_UPDATE, running, updateResult.getNeedsUpdate());
updateAppFeature(DbConstants.APPS.ARCHIVED, running, updateResult.getArchivePolicy0());
updateAppFeature(DbConstants.APPS.NO_PACKAGES, running, updateResult.getNoPackages());
updateAppFeature(DbConstants.APPS.NO_UPDATE_CHECK, running, updateResult.getNoUpdateCheck());
saveBuildRun(updateResult, running ? BuildRunType.RUNNING : BuildRunType.UPDATE);
@@ -466,6 +425,25 @@ public class DbAdapter {
db.endTransaction();
}
private void updateAppFeature(final String column, final boolean running, final Set<String> appIds) {
var updateValues = new ContentValues();
updateValues.put(column, false);
if (!running) {
db.update(DATABASE_TABLE_APPS, updateValues, null, null);
}
updateValues.put(column, true);
for (var id : appIds) {
int updated = db.update(DATABASE_TABLE_APPS, updateValues, DbConstants.APPS.ID + " = ?", new String[]{id});
if (updated == 0) {
var insertValues = new ContentValues();
insertValues.put(DbConstants.APPS.ID, id);
insertValues.put(column, true);
db.insert(DATABASE_TABLE_APPS, null, insertValues);
}
}
}
public de.storchp.fdroidbuildstatus.model.App loadApp(String id) {
if (id == null) {
return null;

View File

@@ -15,7 +15,6 @@ import android.util.Log;
import androidx.core.content.ContextCompat;
import java.util.Collections;
import java.util.Map;
import java.util.Objects;
@@ -97,7 +96,7 @@ public class MonitorJobService extends JobService {
}
private void processBuildRun(BuildResult buildRun, DbAdapter dbAdapter, BuildRunType buildRunType) {
var oldBuildRun = dbAdapter.loadBuildRuns(Collections.singleton(buildRunType)).get(buildRunType);
var oldBuildRun = dbAdapter.loadBuildRuns().get(buildRunType);
Log.d(TAG, "oldBuild Last-Modified: " + (oldBuildRun != null ? oldBuildRun.getLastModified() : "") + ", newBuildRun Last-Modified: " + buildRun.getLastModified());
if (oldBuildRun == null || !oldBuildRun.getLastModified().equals(buildRun.getLastModified())) {
dbAdapter.saveBuildRun(buildRun, buildRunType);

View File

@@ -10,6 +10,7 @@ import de.storchp.fdroidbuildstatus.model.BuildLoadType;
import de.storchp.fdroidbuildstatus.model.BuildRunType;
import de.storchp.fdroidbuildstatus.model.BuildlogType;
import de.storchp.fdroidbuildstatus.model.MetadataLinkType;
import de.storchp.fdroidbuildstatus.model.StatusFilter;
public class PreferenceUtils {
@@ -39,30 +40,6 @@ public class PreferenceUtils {
putBoolean(context, R.string.PREF_SHOW_UNKNWON_FAVOURITE_BUILDS, show);
}
public static boolean isShowSuccessfulBuilds(Context context) {
return getSharedPreferences(context).getBoolean(context.getString(R.string.PREF_SHOW_SUCCESSFUL_BUILDS), true);
}
public static void setShowSuccessfulBuilds(Context context, boolean show) {
putBoolean(context, R.string.PREF_SHOW_SUCCESSFUL_BUILDS, show);
}
public static boolean isShowFailedBuilds(Context context) {
return getSharedPreferences(context).getBoolean(context.getString(R.string.PREF_SHOW_FAILED_BUILDS), true);
}
public static void setShowFailedBuilds(Context context, boolean show) {
putBoolean(context, R.string.PREF_SHOW_FAILED_BUILDS, show);
}
public static boolean isShowMissingBuilds(Context context) {
return getSharedPreferences(context).getBoolean(context.getString(R.string.PREF_SHOW_MISSING_BUILDS), true);
}
public static void setShowMissingBuilds(Context context, boolean show) {
putBoolean(context, R.string.PREF_SHOW_MISSING_BUILDS, show);
}
public static BuildLoadType getBuildLoadType(Context context) {
try {
return BuildLoadType.valueOf(getSharedPreferences(context).getString(context.getString(R.string.PREF_LOAD_BUILD_RUN_TYPE), BuildLoadType.MERGED.toString()));
@@ -156,4 +133,17 @@ public class PreferenceUtils {
public static int getMaxLogLines(Context context) {
return Integer.parseInt(getSharedPreferences(context).getString(context.getString(R.string.PREF_MAX_LOG_LINES), "1000"));
}
public static StatusFilter getStatusFilter(Context context) {
try {
return StatusFilter.valueOf(getSharedPreferences(context).getString(context.getString(R.string.PREF_BUILD_RUN_TYPE), StatusFilter.NONE.toString()));
} catch (Exception ignored) {
return StatusFilter.NONE;
}
}
public static void setStatusFilter(Context context, StatusFilter statusFilter) {
putString(context, R.string.PREF_BUILD_RUN_TYPE, statusFilter.name());
}
}

View File

@@ -28,7 +28,7 @@ data class App @JvmOverloads constructor(
} else name
val favouriteIcon: Int
get() = if (favourite) R.drawable.ic_star_24px else R.drawable.ic_star_border_24px
get() = if (favourite) R.drawable.ic_favourite_24px else R.drawable.ic_no_favourite_24px
val fdroidUri: String
get() = getFdroidUri(id)

View File

@@ -1,27 +1,8 @@
package de.storchp.fdroidbuildstatus.model
enum class BuildLoadType(vararg buildRunTypes: BuildRunType) {
RUNNING(BuildRunType.RUNNING) {
override fun toggle(): BuildLoadType {
return FINISHED
}
},
FINISHED(BuildRunType.BUILD, BuildRunType.UPDATE) {
override fun toggle(): BuildLoadType {
return MERGED
}
},
MERGED(BuildRunType.BUILD, BuildRunType.RUNNING, BuildRunType.UPDATE) {
override fun toggle(): BuildLoadType {
return RUNNING
}
};
enum class BuildLoadType(val buildRunType: BuildRunType?) {
RUNNING(BuildRunType.RUNNING),
FINISHED(BuildRunType.BUILD),
MERGED(null);
val buildRunTypes: Set<BuildRunType>
init {
this.buildRunTypes = java.util.Set.of(*buildRunTypes)
}
abstract fun toggle(): BuildLoadType?
}

View File

@@ -0,0 +1,55 @@
package de.storchp.fdroidbuildstatus.model
import de.storchp.fdroidbuildstatus.R
enum class StatusFilter(
val isActive: Boolean,
val isBuildFilter: Boolean,
val isAppFilter: Boolean,
val iconRes: Int,
val textRes: Int
) {
NONE(false, false, false, 0, R.string.status_filter),
MISSING_BUILD(
true,
true,
false,
R.drawable.ic_questionmark_outline_24px,
R.string.bottom_bar_missing
),
FAILED_BUILD(true, true, false, R.drawable.ic_error_outline_24px, R.string.bottom_bar_failed),
SUCCESSFUL_BUILD(true, true, false, R.drawable.ic_check_24px, R.string.bottom_bar_success),
DISABLED(
true,
false,
true,
R.drawable.ic_disabled_24dp,
R.string.bottom_bar_disabled
),
ARCHIVED(true, false, true, R.drawable.ic_archive_24, R.string.bottom_bar_archived),
NEEDS_UPDATE(
true,
false,
true,
R.drawable.ic_upgrade_black_24dp,
R.string.bottom_bar_needs_update
),
NO_PACKAGES(true, false, true, R.drawable.ic_no_packages_24, R.string.bottom_bar_no_packages),
NO_UPDATE_CHECK(
true,
false,
true,
R.drawable.ic_no_update_check_24,
R.string.bottom_bar_no_update_check
);
}

View File

@@ -0,0 +1,5 @@
<vector android:height="24dp" android:tint="#000000"
android:viewportHeight="24" android:viewportWidth="24"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M20.54,5.23l-1.39,-1.68C18.88,3.21 18.47,3 18,3L6,3c-0.47,0 -0.88,0.21 -1.16,0.55L3.46,5.23C3.17,5.57 3,6.02 3,6.5L3,19c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2L21,6.5c0,-0.48 -0.17,-0.93 -0.46,-1.27zM6.24,5h11.52l0.81,0.97L5.44,5.97l0.8,-0.97zM5,19L5,8h14v11L5,19zM13.45,10h-2.9v3L8,13l4,4 4,-4h-2.55z"/>
</vector>

View File

@@ -0,0 +1,5 @@
<vector android:height="24dp" android:tint="#000000"
android:viewportHeight="24" android:viewportWidth="24"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M19,19H5V5h14V19zM3,3v18h18V3H3zM17,15.59L15.59,17L12,13.41L8.41,17L7,15.59L10.59,12L7,8.41L8.41,7L12,10.59L15.59,7L17,8.41L13.41,12L17,15.59z"/>
</vector>

View File

@@ -1,9 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M3,3v18h18V3H3zM17,15.59L15.59,17L12,13.41L8.41,17L7,15.59L10.59,12L7,8.41L8.41,7L12,10.59L15.59,7L17,8.41L13.41,12L17,15.59z"
android:fillColor="#000000"/>
</vector>

View File

@@ -0,0 +1,5 @@
<vector android:height="24dp" android:tint="#000000"
android:viewportHeight="24" android:viewportWidth="24"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M21.26,21.21L3.79,3.74 2.38,5.15l2.74,2.74 -0.12,0.12L5,19c0,1.1 0.9,2 2,2h10c0.35,0 0.68,-0.1 0.97,-0.26l1.88,1.88 1.41,-1.41zM7,19L7,9.77L16.23,19L7,19zM10.84,5L17,5v9.11l2,2L19,5c0,-1.1 -0.9,-2 -2,-2h-6.99L7.95,5.06l1.41,1.41L10.84,5z"/>
</vector>

View File

@@ -0,0 +1,5 @@
<vector android:height="24dp" android:tint="#000000"
android:viewportHeight="24" android:viewportWidth="24"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M8.67,5.84L7.22,4.39C8.6,3.51 10.24,3 12,3c2.74,0 5.19,1.23 6.84,3.16L21,4v6h-6l2.41,-2.41C16.12,6.02 14.18,5 12,5C10.8,5 9.66,5.31 8.67,5.84zM13,7h-2v1.17l2,2V7zM19.78,22.61l-3,-3C15.39,20.48 13.76,21 12,21c-4.97,0 -9,-4.03 -9,-9c0,-1.76 0.51,-3.4 1.39,-4.78L1.39,4.22l1.41,-1.41l18.38,18.38L19.78,22.61zM15.32,18.15L5.84,8.67C5.31,9.66 5,10.8 5,12c0,3.86 3.14,7 7,7C13.2,19 14.34,18.69 15.32,18.15zM20.94,13h-2.02c-0.12,0.83 -0.39,1.61 -0.77,2.32l1.47,1.47C20.32,15.67 20.79,14.38 20.94,13z"/>
</vector>

View File

@@ -37,7 +37,7 @@
android:layout_width="24dp"
android:layout_height="24dp"
android:id="@+id/favouriteIcon"
android:src="@drawable/ic_star_border_24px"
android:src="@drawable/ic_no_favourite_24px"
android:layout_marginTop="4dp"
android:layout_alignParentEnd="true"
android:layout_below="@+id/progressBar"
@@ -48,7 +48,7 @@
android:layout_height="24dp"
android:layout_marginTop="4dp"
android:id="@+id/disabledIcon"
android:src="@drawable/ic_disabled_by_default_black_24dp"
android:src="@drawable/ic_disabled_24dp"
android:visibility="gone"
android:layout_toStartOf="@id/favouriteIcon"
android:layout_below="@+id/progressBar"
@@ -65,6 +65,39 @@
android:layout_toStartOf="@id/disabledIcon"
android:contentDescription="@string/needs_update_icon" />
<ImageView
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginTop="4dp"
android:id="@+id/archivedIcon"
android:src="@drawable/ic_archive_24"
android:visibility="gone"
android:layout_below="@+id/progressBar"
android:layout_toStartOf="@id/needsUpdateIcon"
android:contentDescription="@string/archived_icon" />
<ImageView
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginTop="4dp"
android:id="@+id/noPackagesIcon"
android:src="@drawable/ic_no_packages_24"
android:visibility="gone"
android:layout_below="@+id/progressBar"
android:layout_toStartOf="@id/archivedIcon"
android:contentDescription="@string/no_packages_icon" />
<ImageView
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginTop="4dp"
android:id="@+id/noUpdateCheckIcon"
android:src="@drawable/ic_no_update_check_24"
android:visibility="gone"
android:layout_below="@+id/progressBar"
android:layout_toStartOf="@id/noPackagesIcon"
android:contentDescription="@string/no_update_check_icon" />
<TextView
android:id="@+id/app_name"
android:layout_width="wrap_content"
@@ -72,7 +105,7 @@
android:textStyle="bold"
android:textIsSelectable="true"
android:layout_alignParentStart="true"
android:layout_toStartOf="@+id/needsUpdateIcon"
android:layout_toStartOf="@+id/noUpdateCheckIcon"
android:layout_below="@+id/progressBar"
android:textAppearance="?android:attr/textAppearanceMedium" />

View File

@@ -25,7 +25,7 @@
android:layout_width="24dp"
android:layout_height="24dp"
android:id="@+id/favouriteIcon"
android:src="@drawable/ic_star_border_24px"
android:src="@drawable/ic_no_favourite_24px"
android:layout_marginTop="4dp"
android:layout_alignParentEnd="true"
android:layout_below="@+id/progressBar"
@@ -36,7 +36,7 @@
android:layout_height="24dp"
android:layout_marginTop="4dp"
android:id="@+id/disabledIcon"
android:src="@drawable/ic_disabled_by_default_black_24dp"
android:src="@drawable/ic_disabled_24dp"
android:visibility="gone"
android:layout_toStartOf="@id/favouriteIcon"
android:layout_below="@+id/progressBar"
@@ -53,6 +53,39 @@
android:layout_toStartOf="@id/disabledIcon"
android:contentDescription="@string/needs_update_icon" />
<ImageView
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginTop="4dp"
android:id="@+id/archivedIcon"
android:src="@drawable/ic_archive_24"
android:visibility="gone"
android:layout_below="@+id/progressBar"
android:layout_toStartOf="@id/needsUpdateIcon"
android:contentDescription="@string/archived_icon" />
<ImageView
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginTop="4dp"
android:id="@+id/noPackagesIcon"
android:src="@drawable/ic_no_packages_24"
android:visibility="gone"
android:layout_below="@+id/progressBar"
android:layout_toStartOf="@id/archivedIcon"
android:contentDescription="@string/no_packages_icon" />
<ImageView
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginTop="4dp"
android:id="@+id/noUpdateCheckIcon"
android:src="@drawable/ic_no_update_check_24"
android:visibility="gone"
android:layout_below="@+id/progressBar"
android:layout_toStartOf="@id/noPackagesIcon"
android:contentDescription="@string/no_update_check_icon" />
<TextView
android:id="@+id/app_name"
android:layout_width="wrap_content"
@@ -60,7 +93,7 @@
android:textStyle="bold"
android:textIsSelectable="true"
android:layout_alignParentStart="true"
android:layout_toStartOf="@+id/needsUpdateIcon"
android:layout_toStartOf="@+id/noUpdateCheckIcon"
android:layout_below="@+id/progressBar"
android:textAppearance="?android:attr/textAppearanceMedium" />

View File

@@ -80,7 +80,7 @@
app:chipStrokeColor="@color/colorForeground"
app:chipStrokeWidth="1dp"
app:chipBackgroundColor="@drawable/bg_chip_state_list"
app:checkedIcon="@drawable/ic_star_24px"
app:checkedIcon="@drawable/ic_favourite_24px"
android:checkable="true"
android:text="@string/bottom_bar_favorite" />

View File

@@ -13,7 +13,7 @@
android:layout_width="24dp"
android:layout_height="24dp"
android:id="@+id/favouriteIcon"
android:src="@drawable/ic_star_border_24px"
android:src="@drawable/ic_no_favourite_24px"
android:layout_alignParentEnd="true"
android:contentDescription="@string/favourite_icon" />
@@ -21,7 +21,7 @@
android:layout_width="24dp"
android:layout_height="24dp"
android:id="@+id/disabledIcon"
android:src="@drawable/ic_disabled_by_default_black_24dp"
android:src="@drawable/ic_disabled_24dp"
android:visibility="gone"
android:layout_toStartOf="@id/favouriteIcon"
android:contentDescription="@string/disabled_icon" />
@@ -35,14 +35,41 @@
android:layout_toStartOf="@id/disabledIcon"
android:contentDescription="@string/needs_update_icon" />
<ImageView
android:layout_width="24dp"
android:layout_height="24dp"
android:id="@+id/archivedIcon"
android:src="@drawable/ic_archive_24"
android:visibility="gone"
android:layout_toStartOf="@id/needsUpdateIcon"
android:contentDescription="@string/archived_icon" />
<ImageView
android:layout_width="24dp"
android:layout_height="24dp"
android:id="@+id/noPackagesIcon"
android:src="@drawable/ic_no_packages_24"
android:visibility="gone"
android:layout_toStartOf="@id/archivedIcon"
android:contentDescription="@string/no_packages_icon" />
<ImageView
android:layout_width="24dp"
android:layout_height="24dp"
android:id="@+id/noUpdateCheckIcon"
android:src="@drawable/ic_no_update_check_24"
android:visibility="gone"
android:layout_toStartOf="@id/noPackagesIcon"
android:contentDescription="@string/no_update_check_icon" />
<TextView
android:id="@+id/app_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textStyle="bold"
android:layout_alignParentStart="true"
android:layout_toStartOf="@+id/needsUpdateIcon"
android:textAppearance="?android:attr/textAppearanceMedium"/>
android:layout_toStartOf="@+id/noUpdateCheckIcon"
android:textAppearance="?android:attr/textAppearanceMedium" />
<TextView
android:id="@+id/app_id"
@@ -51,8 +78,7 @@
android:textAppearance="?android:attr/textAppearanceMedium"
android:layout_below="@id/app_name"
android:layout_alignParentStart="true"
android:layout_toStartOf="@+id/favouriteIcon"
/>
android:layout_toStartOf="@+id/favouriteIcon" />
<LinearLayout
android:layout_width="wrap_content"

View File

@@ -4,21 +4,37 @@
<item
android:id="@+id/build_status_all"
android:title="@string/build_status_all"
android:icon="@drawable/ic_empty_24"
/>
android:icon="@drawable/ic_empty_24" />
<item
android:id="@+id/build_status_successful"
android:title="@string/bottom_bar_success"
android:icon="@drawable/ic_check_24px"
/>
android:icon="@drawable/ic_check_24px" />
<item
android:id="@+id/build_status_failed"
android:title="@string/bottom_bar_failed"
android:icon="@drawable/ic_error_outline_24px"
/>
android:icon="@drawable/ic_error_outline_24px" />
<item
android:id="@+id/build_status_missing"
android:title="@string/bottom_bar_missing"
android:icon="@drawable/ic_questionmark_outline_24px"
/>
android:icon="@drawable/ic_questionmark_outline_24px" />
<item
android:id="@+id/status_disabled"
android:title="@string/bottom_bar_disabled"
android:icon="@drawable/ic_disabled_24dp" />
<item
android:id="@+id/status_archived"
android:title="@string/bottom_bar_archived"
android:icon="@drawable/ic_archive_24" />
<item
android:id="@+id/status_needs_update"
android:title="@string/bottom_bar_needs_update"
android:icon="@drawable/ic_upgrade_black_24dp" />
<item
android:id="@+id/status_no_packages"
android:title="@string/bottom_bar_no_packages"
android:icon="@drawable/ic_no_packages_24" />
<item
android:id="@+id/status_no_update_check"
android:title="@string/bottom_bar_no_update_check"
android:icon="@drawable/ic_no_update_check_24" />
</menu>

View File

@@ -2,7 +2,7 @@
<resources>
<string name="action_about">O</string>
<string name="about_version">Verze:</string>
<string name="about_info">Tato aplikace čte stav sestavení <b><a href="https://f-droid.org">F-Droid</a></b> z cyklů <b><a href="https://f-droid.org/repo/status/build.json">Finished</a></b> a/nebo <b><a href="https://f-droid.org/repo/status/running.json">Running</a></b>. <br/> Je licencována pod <b><a href="http://choosealicense.com/licenses/mit/">MIT-License</a></b>.<br/> Vývoj aplikací a problémy na Codebergu: <b><a href="https://codeberg.org/pstorch/F-Droid_Build_Status">pstorch/F-Droid_Build_Status</a></b>. </string>
<string name="about_info">Tato aplikace čte stav sestavení <b><a href="https://f-droid.org">F-Droid</a></b> z cyklů <b><a href="https://f-droid.org/repo/status/build.json">Finished</a></b> a/nebo <b><a href="https://f-droid.org/repo/status/running.json">Running</a></b>. <br /> Je licencována pod <b><a href="http://choosealicense.com/licenses/mit/">MIT-License</a></b>.<br /> Vývoj aplikací a problémy na Codebergu: <b><a href="https://codeberg.org/pstorch/F-Droid_Build_Status">pstorch/F-Droid_Build_Status</a></b>. </string>
<string name="about_last_update_build_label">Poslední aktualizace build.json:</string>
<string name="about_last_update_running_label">Poslední aktualizace running.json:</string>
<string name="action_settings">Nastavení</string>
@@ -109,5 +109,5 @@
<string name="build_cycle_all">všech cyklů</string>
<string name="build_status_all">všechny státy</string>
<string name="build_cycle">stavební cyklus</string>
<string name="build_status">stav sestavení</string>
<string name="status_filter">stav sestavení</string>
</resources>

View File

@@ -49,7 +49,7 @@
<string name="notify_favourites_summary_off">Giv besked om alle opdateringer af byggestatus</string>
<string name="add_not_found_app_as_favourite">App med id \"%s\" ikke fundet. Er du sikker på, at du ønsker at tilføje den som favorit\?</string>
<string name="about_version">Version:</string>
<string name="about_info">Denne app læser <b> <a href="https://f-droid.org">F-Droid</a></b> build-status fra <b><a href="https://f-droid.org/repo/status/build.json">Finished</a></b> og / eller <b> <a href="https: //f-droid.org/repo/status/running.json">Kører</a></b> build-cyklusser. <br/> Den er licenseret under <b><a href="http://choosealicense.com/licenses/mit/">MIT-License</a> </b>. <br/> Appudvikling og problemer på Codeberg: <b><a href="https://codeberg.org/pstorch/F-Droid_Build_Status">pstorch/F-Droid_Build_Status</a></b>. </string>
<string name="about_info">Denne app læser <b> <a href="https://f-droid.org">F-Droid</a></b> build-status fra <b><a href="https://f-droid.org/repo/status/build.json">Finished</a></b> og / eller <b> <a href="https: //f-droid.org/repo/status/running.json">Kører</a></b> build-cyklusser. <br /> Den er licenseret under <b><a href="http://choosealicense.com/licenses/mit/">MIT-License</a> </b>. <br /> Appudvikling og problemer på Codeberg: <b><a href="https://codeberg.org/pstorch/F-Droid_Build_Status">pstorch/F-Droid_Build_Status</a></b>. </string>
<string name="about_last_update_build_label">Sidste opdatering build.json:</string>
<string name="about_last_update_running_label">Sidste opdatering running.json:</string>
<string name="load_update_failed">Det lykkedes ikke at indlæse update.json: %s</string>
@@ -107,7 +107,7 @@
<string name="build_status_head_finished_command">afsluttet %s</string>
<string name="clear_filter">klart filter</string>
<string name="build_status_all">alle stater</string>
<string name="build_status">bygge status</string>
<string name="status_filter">bygge status</string>
<string name="build_cycle">bygge cyklus</string>
<string name="build_cycle_all">alle cykler</string>
</resources>

View File

@@ -13,7 +13,7 @@
<string name="channel_description">F-Droid Buildstatus Benachrichtigungskanal</string>
<string name="action_about">Über</string>
<string name="about_version">Version:</string>
<string name="about_info">Diese App liest den <b><a href="https://f-droid.org">F-Droid</a></b> Buildstatus von dem <b><a href="https://f-droid.org/repo/status/build.json">abgeschlossenen</a></b> und/oder <b><a href="https://f-droid.org/repo/status/running.json">laufenden</a></b> Buildzyklus.<br/> Sie ist lizenziert unter <b><a href="http://choosealicense.com/licenses/mit/">MIT-Lizenz</a></b>.<br/> App Entwicklung und Issues auf Codeberg: <b><a href="https://codeberg.org/pstorch/F-Droid_Build_Status">pstorch/F-Droid_Build_Status</a></b>. </string>
<string name="about_info">Diese App liest den <b><a href="https://f-droid.org">F-Droid</a></b> Buildstatus von dem <b><a href="https://f-droid.org/repo/status/build.json">abgeschlossenen</a></b> und/oder <b><a href="https://f-droid.org/repo/status/running.json">laufenden</a></b> Buildzyklus.<br /> Sie ist lizenziert unter <b><a href="http://choosealicense.com/licenses/mit/">MIT-Lizenz</a></b>.<br /> App Entwicklung und Issues auf Codeberg: <b><a href="https://codeberg.org/pstorch/F-Droid_Build_Status">pstorch/F-Droid_Build_Status</a></b>. </string>
<string name="about_last_update_build_label">Letzte Aktualisierung build.json:</string>
<string name="about_last_update_running_label">Letzte Aktualisierung running.json:</string>
<string name="app_info_title">Über</string>
@@ -108,7 +108,7 @@
<string name="clear_filter">Filter entfernen</string>
<string name="build_cycle_all">Alle Zyklen</string>
<string name="build_cycle">Buildzyklus</string>
<string name="build_status">Buildstatus</string>
<string name="status_filter">Buildstatus</string>
<string name="build_status_all">Alle Status</string>
<string name="notification_permission_needed">Die Berechtigung zur Anzeige von Benachrichtigungen ist erforderlich, um die Hintergrundprüfung zu aktivieren.</string>
<string name="load_website_build_status_failed">Laden des Webseiten-Buildstatus fehlgeschlagen: %s</string>

View File

@@ -73,7 +73,7 @@
<string name="build_log_not_found">No se encontró el registro de compilación</string>
<string name="build_status_head_running_command">ejecutando %s</string>
<string name="build_cycle">ciclo de compilación</string>
<string name="build_status">estado de la compilación</string>
<string name="status_filter">estado de la compilación</string>
<string name="clear_filter">limpiar filtro</string>
<string name="build_cycle_all">todos los ciclos</string>
<string name="build_status_all">todos los estados</string>
@@ -109,7 +109,7 @@
<string name="bottom_bar_success">éxito</string>
<string name="bottom_bar_failed">fallo</string>
<string name="build_status_head_finished_command">%s completado</string>
<string name="about_info">Esta aplicación lee el estado de compilación de <b><a href="https://f-droid.org">F-Droid</a></b> desde <b><a href="https://f-droid.org/repo/status/build.json">Terminado</a></b> y/o <b><a href="https://f-droid.org/repo/status/running.json">Ejecutando</a></b> ciclos de compilación.<br/> Tiene licencia bajo <b><a href="http://choosealicense.com/licenses/mit/">MIT-License</a></b>.<br/> Desarrollo de aplicaciones y problemas en Codeberg: <b><a href="https://codeberg.org/pstorch/F-Droid_Build_Status">pstorch/F-Droid_Build_Status</a></b>. </string>
<string name="about_info">Esta aplicación lee el estado de compilación de <b><a href="https://f-droid.org">F-Droid</a></b> desde <b><a href="https://f-droid.org/repo/status/build.json">Terminado</a></b> y/o <b><a href="https://f-droid.org/repo/status/running.json">Ejecutando</a></b> ciclos de compilación.<br /> Tiene licencia bajo <b><a href="http://choosealicense.com/licenses/mit/">MIT-License</a></b>.<br /> Desarrollo de aplicaciones y problemas en Codeberg: <b><a href="https://codeberg.org/pstorch/F-Droid_Build_Status">pstorch/F-Droid_Build_Status</a></b>. </string>
<string name="notification_permission_needed">Se necesita un permiso de notificación para activar la comprobación de antecedentes.</string>
<string name="website_build_status_running">actualmente en curso</string>
<string name="website_build_status_loading">cargando…</string>

View File

@@ -63,7 +63,7 @@
<string name="not_now">Praegu mitte</string>
<string name="load_index_question">Otsingutulemuste ja rakenduste nimede kuvamise parandamiseks saate alla laadida F-Droid repo indeksi (&gt; 5MB). Seda saab teha hiljem menüü kaudu.</string>
<string name="about_version">Versioon:</string>
<string name="about_info">See rakendus loeb <b><a href="https://f-droid.org">F-Droid</a></b> ehitamise staatuse <b><a href="https://f-droid.org/repo/status/build.json">Finished</a></b> ja/või <b><a href="https://f-droid. org/repo/status/running.json">Running</a></b> ehitustsüklit.<br/> See on litsentsitud <b><a href="http://choosealicense.com/licenses/mit/">MIT-Litsents</a></b> alusel.<br/> Rakenduse arendamine ja probleemid Codebergil: <b><a href="https://codeberg.org/pstorch/F-Droid_Build_Status">pstorch/F-Droid_Build_Status</a></b>. </string>
<string name="about_info">See rakendus loeb <b><a href="https://f-droid.org">F-Droid</a></b> ehitamise staatuse <b><a href="https://f-droid.org/repo/status/build.json">Finished</a></b> ja/või <b><a href="https://f-droid. org/repo/status/running.json">Running</a></b> ehitustsüklit.<br /> See on litsentsitud <b><a href="http://choosealicense.com/licenses/mit/">MIT-Litsents</a></b> alusel.<br /> Rakenduse arendamine ja probleemid Codebergil: <b><a href="https://codeberg.org/pstorch/F-Droid_Build_Status">pstorch/F-Droid_Build_Status</a></b>. </string>
<string name="about_last_update_build_label">Viimane uuendus build.json:</string>
<string name="about_last_update_running_label">Viimane uuendus running.json:</string>
<string name="build_status_failed">Ebaõnnestus:</string>
@@ -109,5 +109,5 @@
<string name="build_cycle_all">kõik tsüklid</string>
<string name="build_status_all">kõik riigid</string>
<string name="build_cycle">ehitamise tsükkel</string>
<string name="build_status">ehitamise staatus</string>
<string name="status_filter">ehitamise staatus</string>
</resources>

View File

@@ -32,7 +32,7 @@
<string name="title_activity_settings">Ezarpenak</string>
<string name="app_info_title">Buruz</string>
<string name="about_version">Bertsioa:</string>
<string name="about_info">Aplikazio Hau irakurtzen <b><a href="http://f-droid.org">F-Droid</a></b> eraikitzeko egoera batetik <b><a href="http://f-droid.org/repo/status/build.json">Amaitu</a></b> eta/edo <b><a href="http://f-droid.org/repo/status/running.json">Exekutatzen</a></b> eraikitzeko zikloak.<br/> Da lizentziapean <b><a href="http://choosealicense.com/licenses/mit/">MIT-Lizentzia</a></b>.<br/> App garapena eta Gai Codeberg: <b><a href="http://codeberg.org/pstorch/F-Droid_Build_Status">pstorch/F-Droid_Build_Status</a></b>. </string>
<string name="about_info">Aplikazio Hau irakurtzen <b><a href="http://f-droid.org">F-Droid</a></b> eraikitzeko egoera batetik <b><a href="http://f-droid.org/repo/status/build.json">Amaitu</a></b> eta/edo <b><a href="http://f-droid.org/repo/status/running.json">Exekutatzen</a></b> eraikitzeko zikloak.<br /> Da lizentziapean <b><a href="http://choosealicense.com/licenses/mit/">MIT-Lizentzia</a></b>.<br /> App garapena eta Gai Codeberg: <b><a href="http://codeberg.org/pstorch/F-Droid_Build_Status">pstorch/F-Droid_Build_Status</a></b>. </string>
<string name="about_last_update_build_label">Azken eguneratzea build.json:</string>
<string name="about_last_update_running_label">Azken eguneratzea running.json:</string>
<string name="load_index_question">Bilaketaren emaitzak hobetzeko eta aplikazioa pantaila-izenak, deskargatu ahal izango duzu, F-Droid repo indizea (&gt; 5 MB). Hori egin daiteke, geroago menu bidez.</string>
@@ -108,6 +108,6 @@
<string name="clear_filter">garbitu iragazkia</string>
<string name="build_cycle_all">ziklo guztiak</string>
<string name="build_cycle">eraikitze-zikloa</string>
<string name="build_status">eraikitze-egoera</string>
<string name="status_filter">eraikitze-egoera</string>
<string name="build_status_all">herrialde guztiak</string>
</resources>

View File

@@ -53,7 +53,7 @@
<string name="build_run_type_merged">Yhdistä molemmat (build ja running.json)</string>
<string name="load_update_failed">update.json in lataaminen epäonnistui: %s</string>
<string name="about_version">Versio:</string>
<string name="about_info">Tämä sovellus lukee <b><a href="https://f-droid.org">F-Droid</a></b> build-statuksen <b><a href="https://f-droid.org/repo/status/build.json">Finished</a></b> ja/tai <b><a href="https://f-droid.org/repo/status/running.json">Running</a></b> build cycles.<br/> Se on lisensoitu <b><a href="http://choosealicense.com/licenses/mit/">MIT-License</a></b>:n alaisuudessa.<br/> Sovelluksen kehitys ja ongelmat Codebergissä: <b><a href="https://codeberg.org/pstorch/F-Droid_Build_Status">pstorch/F-Droid_Build_Status</a></b>. </string>
<string name="about_info">Tämä sovellus lukee <b><a href="https://f-droid.org">F-Droid</a></b> build-statuksen <b><a href="https://f-droid.org/repo/status/build.json">Finished</a></b> ja/tai <b><a href="https://f-droid.org/repo/status/running.json">Running</a></b> build cycles.<br /> Se on lisensoitu <b><a href="http://choosealicense.com/licenses/mit/">MIT-License</a></b>:n alaisuudessa.<br /> Sovelluksen kehitys ja ongelmat Codebergissä: <b><a href="https://codeberg.org/pstorch/F-Droid_Build_Status">pstorch/F-Droid_Build_Status</a></b>. </string>
<string name="about_last_update_build_label">Viimeisin päivitys build.json:</string>
<string name="about_last_update_running_label">Viimeisin päivitys running.json:</string>
<string name="load_index_success">Ladattu %d sovellusta arkiston indeksistä.</string>
@@ -108,6 +108,6 @@
<string name="clear_filter">kirkas suodatin</string>
<string name="build_status_all">kaikki valtiot</string>
<string name="build_cycle">rakentamisen sykli</string>
<string name="build_status">rakennuksen tila</string>
<string name="status_filter">rakennuksen tila</string>
<string name="build_cycle_all">kaikki syklit</string>
</resources>

View File

@@ -49,7 +49,7 @@
<string name="notify_favourites_summary_on">Notifier uniquement les mises à jour de l\'état de constructions des apps favorites</string>
<string name="update_background_check_category_title">Vérification en arrière-plan</string>
<string name="about_version">Version:</string>
<string name="about_info">Cette App lit l\'état de construction de <b><a href="https://f-droid.org">F-Droid</a></b> à partir du <b><a href="https://f-droid.org/repo/status/build.json">Finished</a></b> et/ou <b><a href="https://f-droid.org/repo/status/running.json">Running</a></b> cycles de construction.<br/> Elle est sous licence <b><a href="http://choosealicense.com/licenses/mit/">MIT-License</a></b>.<br/> Développement d\'applications et problèmes sur Codeberg : <b><a href="https://codeberg.org/pstorch/F-Droid_Build_Status">pstorch/F-Droid_Build_Status</a></b>. </string>
<string name="about_info">Cette App lit l\'état de construction de <b><a href="https://f-droid.org">F-Droid</a></b> à partir du <b><a href="https://f-droid.org/repo/status/build.json">Finished</a></b> et/ou <b><a href="https://f-droid.org/repo/status/running.json">Running</a></b> cycles de construction.<br /> Elle est sous licence <b><a href="http://choosealicense.com/licenses/mit/">MIT-License</a></b>.<br /> Développement d\'applications et problèmes sur Codeberg : <b><a href="https://codeberg.org/pstorch/F-Droid_Build_Status">pstorch/F-Droid_Build_Status</a></b>. </string>
<string name="about_last_update_build_label">Dernière mise à jour de build.json :</string>
<string name="about_last_update_running_label">Dernière mise à jour de running.json :</string>
<string name="load_update_failed">Impossible de charger update.json : %s</string>
@@ -109,7 +109,7 @@
<string name="clear_filter">Effacer le filtre</string>
<string name="build_cycle_all">Tous les cycles</string>
<string name="build_cycle">Cycle de construction</string>
<string name="build_status">État de construction</string>
<string name="status_filter">État de construction</string>
<string name="notification_permission_needed">L\'autorisation de notification est nécessaire pour activer la vérification des antécédents.</string>
<string name="website_build_status_loading">Chargement…</string>
<string name="action_website_build_status">État de construction du site</string>

View File

@@ -101,13 +101,13 @@
<string name="channel_description">F-Droid a thógáil cainéal fógartha stádais</string>
<string name="loading_metadata_versions_failed">Níorbh fhéidir leaganacha meiteashonraí a luchtú ó Gitlab: %s</string>
<string name="build_status_head_running">ag rith</string>
<string name="about_info">Léann an App an <b><a href="https://f-droid.org">F-Droid</a></b> tóg stádas ón <b><a href="https://f-droid.org/repo/status/build.json">Críochnaithe</a></b> agus/nó <b><a href="https://f-droid.org/repo/status/running.json">Ag rith</a></b> tóg timthriallta.<br/> Tá sé ceadúnaithe fao <b><a href="http://choosealicense.com/licenses/mit/">MIT-Ceadúnas</a></b>.<br/> Forbairt agus Saincheisteanna an aip ar Codeberg: <b><a href="https://codeberg.org/pstorch/F-Droid_Build_Status">pstorch/F-Droid_Build_Status</a></b>. </string>
<string name="about_info">Léann an App an <b><a href="https://f-droid.org">F-Droid</a></b> tóg stádas ón <b><a href="https://f-droid.org/repo/status/build.json">Críochnaithe</a></b> agus/nó <b><a href="https://f-droid.org/repo/status/running.json">Ag rith</a></b> tóg timthriallta.<br /> Tá sé ceadúnaithe fao <b><a href="http://choosealicense.com/licenses/mit/">MIT-Ceadúnas</a></b>.<br /> Forbairt agus Saincheisteanna an aip ar Codeberg: <b><a href="https://codeberg.org/pstorch/F-Droid_Build_Status">pstorch/F-Droid_Build_Status</a></b>. </string>
<string name="build_log_not_found">Tóg logchomhad gan aimsiú</string>
<string name="build_status_head_running_command">rith %s</string>
<string name="build_status_head_finished_command">críochnaithe %s</string>
<string name="clear_filter">glan an scagaire</string>
<string name="build_status_all">gach stát</string>
<string name="build_cycle_all">gach timthriall</string>
<string name="build_status">tóg stádas</string>
<string name="status_filter">tóg stádas</string>
<string name="build_cycle">timthriall</string>
</resources>

View File

@@ -102,7 +102,7 @@
<string name="website_build_status_running">Executando actualmente</string>
<string name="load_website_build_status_failed">Estado de compilación fallido da carga do sitio web: %s</string>
<string name="website_build_status_loading">cargando…</string>
<string name="about_info">Esta aplicación le o <b><a href="https://f-droid.org">estado de compilación </a></b>de F-Droid da <b><a href="https://f-droid.org/repo/status/build.json">Rematada</a></b>e/ou<b><a href="https://f-droid.org/repo/status/running.json">ciclos de compilación</a></b>en execución.<br/>Está licenciada baixo<b><a href="http://choosealicense.com/licenses/mit/">MIT-License</a></b>.<br/>Desenvolvemento da aplicación e erros en Codeberg: <b><a href="https://codeberg.org/pstorch/F-Droid_Build_Status">pstorch/F-Droid_Build_Status</a></b>. </string>
<string name="about_info">Esta aplicación le o <b><a href="https://f-droid.org">estado de compilación </a></b>de F-Droid da <b><a href="https://f-droid.org/repo/status/build.json">Rematada</a></b>e/ou<b><a href="https://f-droid.org/repo/status/running.json">ciclos de compilación</a></b>en execución.<br />Está licenciada baixo<b><a href="http://choosealicense.com/licenses/mit/">MIT-License</a></b>.<br />Desenvolvemento da aplicación e erros en Codeberg: <b><a href="https://codeberg.org/pstorch/F-Droid_Build_Status">pstorch/F-Droid_Build_Status</a></b>. </string>
<string name="build_check_type">Tipo de ciclo de compilación para comprobar en segundo plano</string>
<string name="notify_favourites_summary_off">Notificar tódolos estados de actualización de compilacións</string>
<string name="published_versions">Versións publicadas:</string>
@@ -115,7 +115,7 @@
<string name="ic_disabled_by_default_black_24dp_label">Aplicación deshabilitada</string>
<string name="buildlog_type_log">Descargar como ficheiro .log</string>
<string name="bottom_bar_running">Executándose</string>
<string name="build_status">Estado de compilación</string>
<string name="status_filter">Estado de compilación</string>
<string name="notification_permission_needed">Para activar a comprobación en segundo plano é preciso o permiso de notificación.</string>
<string name="update_background_check_category_title">Comprobación en segundo plano</string>
</resources>

View File

@@ -60,7 +60,7 @@
<string name="load_index_success">Betöltött %d alkalmazás az adattár indexéből.</string>
<string name="channel_name">Általános</string>
<string name="about_version">Változat:</string>
<string name="about_info">Ez az alkalmazás a <b><a href="https://f-droid.org">F-Droid</a></b> build státuszt a <b><a href="https://f-droid.org/repo/status/build.json">Finished</a></b> és/vagy <b><a href="https://f-droid.org/repo/status/running.json">Running</a></b> építési ciklusokból.<br/> A <b><a href="http://choosealicense.com/licenses/mit/">MIT-License</a></b> licenc alatt áll.<br/> Az alkalmazás fejlesztése és a problémák a Codeberg-en: <b><a href="https://codeberg.org/pstorch/F-Droid_Build_Status">pstorch/F-Droid_Build_Status</a></b>. </string>
<string name="about_info">Ez az alkalmazás a <b><a href="https://f-droid.org">F-Droid</a></b> build státuszt a <b><a href="https://f-droid.org/repo/status/build.json">Finished</a></b> és/vagy <b><a href="https://f-droid.org/repo/status/running.json">Running</a></b> építési ciklusokból.<br /> A <b><a href="http://choosealicense.com/licenses/mit/">MIT-License</a></b> licenc alatt áll.<br /> Az alkalmazás fejlesztése és a problémák a Codeberg-en: <b><a href="https://codeberg.org/pstorch/F-Droid_Build_Status">pstorch/F-Droid_Build_Status</a></b>. </string>
<string name="about_last_update_build_label">Utolsó frissítés build.json:</string>
<string name="about_last_update_running_label">Utolsó frissítés running.json:</string>
<string name="build_status_start">Kezdje:</string>
@@ -109,5 +109,5 @@
<string name="build_cycle_all">minden ciklus</string>
<string name="build_status_all">minden állam</string>
<string name="build_cycle">építési ciklus</string>
<string name="build_status">építési státusz</string>
<string name="status_filter">építési státusz</string>
</resources>

View File

@@ -101,7 +101,7 @@
<string name="not_now">Tidak sekarang</string>
<string name="load_index_question">Untuk meningkatkan hasil pencarian dan nama tampilan aplikasi, Anda dapat mengunduh indeks repo F-Droid (&gt; 5MB). Ini bisa dilakukan nanti melalui menu.</string>
<string name="load_index_success">Memuat %d aplikasi dari indeks repositori.</string>
<string name="about_info">Aplikasi ini membaca <b><a href="https://f-droid.org">F-Droid</a></b> membangun status dari <b><a href="https://f-droid.org/repo/status/build.json">Selesai</a></b> dan/atau <b><a href="https://f-droid.org/repo/status/running.json">Berlari</a></b> membangun siklus.<br/> Ini dilisensikan di bawah <b><a href="http://choosealicense.com/licenses/mit/">MIT-Lisensi</a></b>.<br/> Pengembangan aplikasi dan Masalah Codeberg: <b><a href="https://codeberg.org/pstorch/F-Droid_Build_Status">pstorch/F-Droid_Build_Status</a></b>. </string>
<string name="about_info">Aplikasi ini membaca <b><a href="https://f-droid.org">F-Droid</a></b> membangun status dari <b><a href="https://f-droid.org/repo/status/build.json">Selesai</a></b> dan/atau <b><a href="https://f-droid.org/repo/status/running.json">Berlari</a></b> membangun siklus.<br /> Ini dilisensikan di bawah <b><a href="http://choosealicense.com/licenses/mit/">MIT-Lisensi</a></b>.<br /> Pengembangan aplikasi dan Masalah Codeberg: <b><a href="https://codeberg.org/pstorch/F-Droid_Build_Status">pstorch/F-Droid_Build_Status</a></b>. </string>
<string name="build_log_not_found">Build log tidak ditemukan</string>
<string name="build_status_head_running_command">berjalan %s</string>
<string name="build_status_head_finished_command">selesai %s</string>
@@ -109,5 +109,5 @@
<string name="build_cycle_all">semua siklus</string>
<string name="build_status_all">semua negara bagian</string>
<string name="build_cycle">membangun siklus</string>
<string name="build_status">membangun status</string>
<string name="status_filter">membangun status</string>
</resources>

View File

@@ -53,7 +53,7 @@
<string name="action_settings">Impostazioni</string>
<string name="channel_description">Canale di notifica dello stato di compilazione di F-Droid</string>
<string name="about_version">Versione:</string>
<string name="about_info">Questa applicazione legge lo stato di compilazione di <b><a href="https://f-droid.org">F-Droid</a></b> dai cicli di costruzione <b><a href="https://f-droid.org/repo/status/build.json">Terminati</a></b> e/o <b><a href="https://f-droid.org/repo/status/running.json">In Corso</a></b>.<br/> È concesso in <b><a href="http://choosealicense.com/licenses/mit/">Licenza MIT</a></b>.<br/> Sviluppo dell\'applicazione e problemi su Codeberg: <b><a href="https://codeberg.org/pstorch/F-Droid_Build_Status">pstorch/F-Droid_Build_Status</a></b>. </string>
<string name="about_info">Questa applicazione legge lo stato di compilazione di <b><a href="https://f-droid.org">F-Droid</a></b> dai cicli di costruzione <b><a href="https://f-droid.org/repo/status/build.json">Terminati</a></b> e/o <b><a href="https://f-droid.org/repo/status/running.json">In Corso</a></b>.<br /> È concesso in <b><a href="http://choosealicense.com/licenses/mit/">Licenza MIT</a></b>.<br /> Sviluppo dell\'applicazione e problemi su Codeberg: <b><a href="https://codeberg.org/pstorch/F-Droid_Build_Status">pstorch/F-Droid_Build_Status</a></b>. </string>
<string name="about_last_update_build_label">Ultimo aggiornamento build.json:</string>
<string name="about_last_update_running_label">Ultimo aggiornamento running.json:</string>
<string name="load_index_question">Per migliorare i risultati della ricerca e i nomi delle app, puoi scaricare l\'indice del repo di F-Droid (&gt; 5MB). Questo può essere fatto in seguito tramite il menu.</string>
@@ -108,6 +108,6 @@
<string name="clear_filter">filtro trasparente</string>
<string name="build_cycle_all">tutti i cicli</string>
<string name="build_cycle">ciclo costruttivo</string>
<string name="build_status">stato di costruzione</string>
<string name="status_filter">stato di costruzione</string>
<string name="build_status_all">tutti gli stati</string>
</resources>

View File

@@ -9,7 +9,7 @@
<string name="action_metadata">Metaduomenys</string>
<string name="build_run_type_running">Vykdomos kompiliacijos (running.json)</string>
<string name="build_status_successful">Sėkmingai:</string>
<string name="about_info">Ši programa skaito <b><a href="https://f-droid.org">F-Droid</a></b> kurti būseną iš <b><a href="https://f-droid.org/repo/status/build.json">Baigtas</a></b> ir/arba <b><a href="https://f-droid.org/repo/status/running.json">Bėgimas</a></b> kūrimo ciklai.<br/> Jis licencijuotas pagal <b><a href="http://choosealicense.com/licenses/mit/">MIT-Licencija</a></b>.<br/> Programėlių kūrimas ir klausimai Codeberg: <b><a href="https://codeberg.org/pstorch/F-Droid_Build_Status">pstorch/F-Droid_Build_Status</a></b>. </string>
<string name="about_info">Ši programa skaito <b><a href="https://f-droid.org">F-Droid</a></b> kurti būseną iš <b><a href="https://f-droid.org/repo/status/build.json">Baigtas</a></b> ir/arba <b><a href="https://f-droid.org/repo/status/running.json">Bėgimas</a></b> kūrimo ciklai.<br /> Jis licencijuotas pagal <b><a href="http://choosealicense.com/licenses/mit/">MIT-Licencija</a></b>.<br /> Programėlių kūrimas ir klausimai Codeberg: <b><a href="https://codeberg.org/pstorch/F-Droid_Build_Status">pstorch/F-Droid_Build_Status</a></b>. </string>
<string name="action_open">Atidaryti programėlės detales</string>
<string name="action_settings">Nustatymai</string>
<string name="status_icon">Būsenos piktograma</string>
@@ -100,7 +100,7 @@
<string name="build_status_head_running_command">veikia %s</string>
<string name="bottom_bar_favorite">mėgstamas</string>
<string name="build_cycle_all">visi ciklai</string>
<string name="build_status">pastato būklė</string>
<string name="status_filter">pastato būklė</string>
<string name="build_cycle">kūrimo ciklas</string>
<string name="loading_metadata_versions_failed">Nepavyko įkelti metaduomenų versijų iš \"Gitlab\": %s</string>
<string name="loading_published_versions_failed">Nepavyko įkelti paskelbtų versijų iš F-Droid: %s</string>

View File

@@ -59,7 +59,7 @@
<string name="load_index_success">Ielādētas %d lietotnes no repozitorija indeksa.</string>
<string name="action_load_index">Lejupielādēt repo indeksu</string>
<string name="about_version">Versija:</string>
<string name="about_info">Šī lietotne lasa <b><a href="https://f-droid.org">F-Droid</a></b> būvēšanas statuss no <b><a href="https://f-droid.org/repo/status/build.json">Pabeigts</a></b> un / vai <b><a href="https://f-droid.org/repo/status/running.json">Darbojas</a></b> būvēšanas cikli. <br/> Tas ir licencēts ar <b><a href="http://choosealicense.com/licenses/mit/">MIT-License</a></b>. <br/> Lietotņu izstrāde un Codeberg problēmas: <b><a href="https://codeberg.org/pstorch/F-Droid_Build_Status">pstorch/F-Droid_Build_Status</a></b>. </string>
<string name="about_info">Šī lietotne lasa <b><a href="https://f-droid.org">F-Droid</a></b> būvēšanas statuss no <b><a href="https://f-droid.org/repo/status/build.json">Pabeigts</a></b> un / vai <b><a href="https://f-droid.org/repo/status/running.json">Darbojas</a></b> būvēšanas cikli. <br /> Tas ir licencēts ar <b><a href="http://choosealicense.com/licenses/mit/">MIT-License</a></b>. <br /> Lietotņu izstrāde un Codeberg problēmas: <b><a href="https://codeberg.org/pstorch/F-Droid_Build_Status">pstorch/F-Droid_Build_Status</a></b>. </string>
<string name="about_last_update_build_label">Pēdējā atjauninājuma build.json:</string>
<string name="about_last_update_running_label">Pēdējais atjauninājums running.json:</string>
<string name="download">Lejupielādēt</string>
@@ -108,6 +108,6 @@
<string name="clear_filter">dzidrs filtrs</string>
<string name="build_status_all">visas valstis</string>
<string name="build_cycle">izveides cikls</string>
<string name="build_status">būves statuss</string>
<string name="status_filter">būves statuss</string>
<string name="build_cycle_all">visi cikli</string>
</resources>

View File

@@ -35,7 +35,7 @@
<string name="new_build_notification_favs">Nye F-Droid bygge %d av favoritt-apper</string>
<string name="channel_description">F-Droid bygge status varslingskanal</string>
<string name="about_version">Versjon:</string>
<string name="about_info">Dette programmet leser <b><a href="http://f-droid.org">F-Droid</a></b> bygg-status fra <b><a href="http://f-droid.org/repo/status/build.json">Ferdig</a></b> og/eller <b><a href="http://f-droid.org/repo/status/running.json">Kjører</a></b> bygge sykluser.<br/> Det er lisensiert under <b><a href="http://choosealicense.com/licenses/mit/">MIT-Lisens</a></b>.<br/> App utvikling og Problemer på Codeberg: <b><a href="http://codeberg.org/pstorch/F-Droid_Build_Status">pstorch/F-Droid_Build_Status</a></b>. </string>
<string name="about_info">Dette programmet leser <b><a href="http://f-droid.org">F-Droid</a></b> bygg-status fra <b><a href="http://f-droid.org/repo/status/build.json">Ferdig</a></b> og/eller <b><a href="http://f-droid.org/repo/status/running.json">Kjører</a></b> bygge sykluser.<br /> Det er lisensiert under <b><a href="http://choosealicense.com/licenses/mit/">MIT-Lisens</a></b>.<br /> App utvikling og Problemer på Codeberg: <b><a href="http://codeberg.org/pstorch/F-Droid_Build_Status">pstorch/F-Droid_Build_Status</a></b>. </string>
<string name="about_last_update_build_label">Siste oppdatering build.json:</string>
<string name="about_last_update_running_label">Siste oppdatering running.json:</string>
<string name="add_not_found_app_as_favourite">App-id \"%s\" ikke funnet. Er du sikker på at du vil legge det til som favoritt\?</string>
@@ -108,6 +108,6 @@
<string name="clear_filter">fjern filter</string>
<string name="build_cycle_all">alle sykluser</string>
<string name="build_status_all">alle stater</string>
<string name="build_status">bygg status</string>
<string name="status_filter">bygg status</string>
<string name="build_cycle">bygg syklus</string>
</resources>

View File

@@ -44,7 +44,7 @@
<string name="update_failed">Het bijwerken van de bouwstatus is mislukt: %1s</string>
<string name="channel_description">F-Droid build status kennisgeving kanaal</string>
<string name="about_version">Versie:</string>
<string name="about_info">Deze app leest de <b><a href="https://f-droid.org">F-Droid</a></b> bouwstatus van de <b><a href="https://f-droid.org/repo/status/build.json">Voltooid</a></b> en / of <b><a href="https://f-droid.org/repo/status/running.json">Draaiende</a></b> build-cycli. <br/> Het is gelicentieerd onder <b><a href="http://choosealicense.com/licenses/mit/">MIT-License</a></b>. <br/> App-ontwikkeling en problemen op Codeberg: <b><a href="https://codeberg.org/pstorch/F-Droid_Build_Status">pstorch/F-Droid_Build_Status</a></b>. </string>
<string name="about_info">Deze app leest de <b><a href="https://f-droid.org">F-Droid</a></b> bouwstatus van de <b><a href="https://f-droid.org/repo/status/build.json">Voltooid</a></b> en / of <b><a href="https://f-droid.org/repo/status/running.json">Draaiende</a></b> build-cycli. <br /> Het is gelicentieerd onder <b><a href="http://choosealicense.com/licenses/mit/">MIT-License</a></b>. <br /> App-ontwikkeling en problemen op Codeberg: <b><a href="https://codeberg.org/pstorch/F-Droid_Build_Status">pstorch/F-Droid_Build_Status</a></b>. </string>
<string name="about_last_update_build_label">Laatste update build.json:</string>
<string name="about_last_update_running_label">Laatste update running.json:</string>
<string name="update_interval_1_hour">1 uur</string>
@@ -109,5 +109,5 @@
<string name="build_cycle_all">alle cyclussen</string>
<string name="build_status_all">alle staten</string>
<string name="build_cycle">bouwcyclus</string>
<string name="build_status">bouwstatus</string>
<string name="status_filter">bouwstatus</string>
</resources>

View File

@@ -46,7 +46,7 @@
<string name="loading_build_log_failed">Ładowanie dziennika budowy nie powiodło się: %s</string>
<string name="loading_published_versions_failed">Nie można załadować opublikowanych wersji z F-Droid: %s</string>
<string name="about_version">Wersja:</string>
<string name="about_info">Ta aplikacja odczytuje status kompilacji <b><a href="https://f-droid.org">F-Droid</a></b> z <b><a href="https://f-droid.org/repo/status/build.json">Finished</a></b> i/lub <b><a href="https://f-droid.org/repo/status/running.json">Running</a></b> cykli budowania.<br/> Jest on licencjonowany na mocy <b><a href="http://choosealicense.com/licenses/mit/">MIT-License</a></b>.<br/> Rozwój aplikacji i problemy na Codeberg: <b><a href="https://codeberg.org/pstorch/F-Droid_Build_Status">pstorch/F-Droid_Build_Status</a></b>. </string>
<string name="about_info">Ta aplikacja odczytuje status kompilacji <b><a href="https://f-droid.org">F-Droid</a></b> z <b><a href="https://f-droid.org/repo/status/build.json">Finished</a></b> i/lub <b><a href="https://f-droid.org/repo/status/running.json">Running</a></b> cykli budowania.<br /> Jest on licencjonowany na mocy <b><a href="http://choosealicense.com/licenses/mit/">MIT-License</a></b>.<br /> Rozwój aplikacji i problemy na Codeberg: <b><a href="https://codeberg.org/pstorch/F-Droid_Build_Status">pstorch/F-Droid_Build_Status</a></b>. </string>
<string name="about_last_update_build_label">Ostatnia aktualizacja build.json:</string>
<string name="about_last_update_running_label">Ostatnia aktualizacja running.json:</string>
<string name="build_status_head_finished">zakończono</string>
@@ -108,6 +108,6 @@
<string name="clear_filter">czysty filtr</string>
<string name="build_status_all">wszystkie stany</string>
<string name="build_cycle_all">wszystkie cykle</string>
<string name="build_status">status budowy</string>
<string name="status_filter">status budowy</string>
<string name="build_cycle">cykl budowy</string>
</resources>

View File

@@ -23,7 +23,7 @@
<string name="update_check_title">Verificați periodic starea construcției</string>
<string name="build_status_last_modified">Modificată:</string>
<string name="about_version">Versiunea:</string>
<string name="about_info">Această aplicație citește starea de construcție <b><a href="https://f-droid.org">F-Droid</a></b> din <b><a href="https://f-droid.org/repo/status/build.json">Finished</a></b> și/sau <b><a href="https://f-droid.org/repo/status/running.json">Running</a></b> cicluri de construcție.<br/> Este licențiată sub <b><a href="http://choosealicense.com/licenses/mit/">MIT-License</a></b>.<br/> Dezvoltarea aplicației și Probleme pe Codeberg: <b><a href="https://codeberg.org/pstorch/F-Droid_Build_Status">pstorch/F-Droid_Build_Status</a></b>. </string>
<string name="about_info">Această aplicație citește starea de construcție <b><a href="https://f-droid.org">F-Droid</a></b> din <b><a href="https://f-droid.org/repo/status/build.json">Finished</a></b> și/sau <b><a href="https://f-droid.org/repo/status/running.json">Running</a></b> cicluri de construcție.<br /> Este licențiată sub <b><a href="http://choosealicense.com/licenses/mit/">MIT-License</a></b>.<br /> Dezvoltarea aplicației și Probleme pe Codeberg: <b><a href="https://codeberg.org/pstorch/F-Droid_Build_Status">pstorch/F-Droid_Build_Status</a></b>. </string>
<string name="about_last_update_build_label">Ultima actualizare build.json:</string>
<string name="about_last_update_running_label">Ultima actualizare running.json:</string>
<string name="channel_name">Generalități</string>
@@ -109,5 +109,5 @@
<string name="build_cycle_all">toate ciclurile</string>
<string name="build_status_all">toate statele</string>
<string name="build_cycle">ciclu de construire</string>
<string name="build_status">stare de construcție</string>
<string name="status_filter">stare de construcție</string>
</resources>

View File

@@ -13,7 +13,7 @@
<string name="channel_description">F-Droid статус сборки в уведомлениях</string>
<string name="action_about">Об F-Droid Build Status</string>
<string name="about_version">Версия:</string>
<string name="about_info">Это приложение читает статус сборки из <b><a href="https://f-droid.org/repo/status/build.json">Законченных</a></b> и/или <b><a href="https://f-droid.org/repo/status/running.json">Запущенных</a></b> сборочных целей <b><a href="https://f-droid.org">F-Droid</a></b>.<br/> Распространяется под лицензией <b><a href="http://choosealicense.com/licenses/mit/">MIT</a></b>.<br/> Разработка и обсуждение приложения на Codeberg: <b><a href="https://codeberg.org/pstorch/F-Droid_Build_Status">pstorch/F-Droid_Build_Status</a></b>. </string>
<string name="about_info">Это приложение читает статус сборки из <b><a href="https://f-droid.org/repo/status/build.json">Законченных</a></b> и/или <b><a href="https://f-droid.org/repo/status/running.json">Запущенных</a></b> сборочных целей <b><a href="https://f-droid.org">F-Droid</a></b>.<br /> Распространяется под лицензией <b><a href="http://choosealicense.com/licenses/mit/">MIT</a></b>.<br /> Разработка и обсуждение приложения на Codeberg: <b><a href="https://codeberg.org/pstorch/F-Droid_Build_Status">pstorch/F-Droid_Build_Status</a></b>. </string>
<string name="about_last_update_build_label">Последнее обновление build.json:</string>
<string name="about_last_update_running_label">Последнее обновление running.json:</string>
<string name="app_info_title">Об F-Droid Build Status</string>
@@ -108,7 +108,7 @@
<string name="build_status_head_finished_command">закончил %s</string>
<string name="clear_filter">очистить фильтр</string>
<string name="build_cycle">цикл сборки</string>
<string name="build_status">статус сборки</string>
<string name="status_filter">статус сборки</string>
<string name="build_status_all">все страны</string>
<string name="build_cycle_all">все циклы</string>
<string name="website_build_status_loading">загрузка…</string>

View File

@@ -62,7 +62,7 @@
<string name="update_failed">Aktualizácia stavu zostavenia zlyhala: %1s</string>
<string name="search_hint">Hľadanie aplikácií</string>
<string name="about_version">Verzia:</string>
<string name="about_info">Táto aplikácia číta stav zostavenia <b><a href="https://f-droid.org">F-Droid</a></b> z <b><a href="https://f-droid.org/repo/status/build.json">Finished</a></b> a/alebo <b><a href="https://f-droid.org/repo/status/running.json">Running</a></b> cyklov zostavenia.<br/> Je licencovaná pod <b><a href="http://choosealicense.com/licenses/mit/">Licenciou MIT</a></b>.<br/> Vývoj aplikácie a problémy na Codebergu: <b><a href="https://codeberg.org/pstorch/F-Droid_Build_Status">pstorch/F-Droid_Build_Status</a></b>. </string>
<string name="about_info">Táto aplikácia číta stav zostavenia <b><a href="https://f-droid.org">F-Droid</a></b> z <b><a href="https://f-droid.org/repo/status/build.json">Finished</a></b> a/alebo <b><a href="https://f-droid.org/repo/status/running.json">Running</a></b> cyklov zostavenia.<br /> Je licencovaná pod <b><a href="http://choosealicense.com/licenses/mit/">Licenciou MIT</a></b>.<br /> Vývoj aplikácie a problémy na Codebergu: <b><a href="https://codeberg.org/pstorch/F-Droid_Build_Status">pstorch/F-Droid_Build_Status</a></b>. </string>
<string name="about_last_update_build_label">Posledná aktualizácia build.json:</string>
<string name="about_last_update_running_label">Posledná aktualizácia running.json:</string>
<string name="metadata_version_none">Najvyššia verzia metadát: nenájdená</string>
@@ -109,5 +109,5 @@
<string name="build_cycle_all">všetky cykly</string>
<string name="build_status_all">všetky štáty</string>
<string name="build_cycle">cyklus výstavby</string>
<string name="build_status">stav stavby</string>
<string name="status_filter">stav stavby</string>
</resources>

View File

@@ -54,7 +54,7 @@
<string name="load_index_failed">Nalaganje indeksa repozitorija ni uspelo: %s</string>
<string name="action_load_index">Prenos repo indeks</string>
<string name="about_version">Različica:</string>
<string name="about_info">Ta aplikacija prebere <b><a href="https://f-droid.org">F-Droid</a></b> stanje zgradbe iz <b><a href="https://f-droid.org/repo/status/build.json">Finished</a></b> in/ali <b><a href="https://f-droid.org/repo/status/running.json">Running</a></b> ciklov gradnje.<br/> Licencirana je pod <b><a href="http://choosealicense.com/licenses/mit/">Licenco MIT</a></b>.<br/> Razvoj aplikacije in vprašanja na Codeberg: <b><a href="https://codeberg.org/pstorch/F-Droid_Build_Status">pstorch/F-Droid_Build_Status</a></b>. </string>
<string name="about_info">Ta aplikacija prebere <b><a href="https://f-droid.org">F-Droid</a></b> stanje zgradbe iz <b><a href="https://f-droid.org/repo/status/build.json">Finished</a></b> in/ali <b><a href="https://f-droid.org/repo/status/running.json">Running</a></b> ciklov gradnje.<br /> Licencirana je pod <b><a href="http://choosealicense.com/licenses/mit/">Licenco MIT</a></b>.<br /> Razvoj aplikacije in vprašanja na Codeberg: <b><a href="https://codeberg.org/pstorch/F-Droid_Build_Status">pstorch/F-Droid_Build_Status</a></b>. </string>
<string name="about_last_update_build_label">Zadnja posodobljena build.json:</string>
<string name="about_last_update_running_label">Zadnja posodobitev running.json:</string>
<string name="action_source">Izvorna koda</string>
@@ -108,7 +108,7 @@
<string name="clear_filter">čisti filter</string>
<string name="build_status_all">vse države</string>
<string name="build_cycle_all">vsi cikli</string>
<string name="build_status">status gradnje</string>
<string name="status_filter">status gradnje</string>
<string name="build_cycle">cikel gradnje</string>
<string name="website_build_status_start_label">Začni časovno značko:</string>
<string name="website_build_status_end_label">Končaj časovno značko:</string>

View File

@@ -46,7 +46,7 @@
<string name="build_log">Bygglogg:</string>
<string name="needs_update_icon">Appen behöver uppdateras</string>
<string name="about_version">Version:</string>
<string name="about_info">Den här appen läser <b><a href="https://f-droid.org">F-Droid</a></b> byggstatusen från <b><a href="https://f-droid.org/repo/status/build.json">Finished</a></b> och/eller <b><a href="https://f-droid.org/repo/status/running.json">Running</a></b> byggcykler.<br/> Den är licensierad under <b><a href="http://choosealicense.com/licenses/mit/">MIT-License</a></b>.<br/> App-utveckling och frågor på Codeberg: <b><a href="https://codeberg.org/pstorch/F-Droid_Build_Status">pstorch/F-Droid_Build_Status</a></b>. </string>
<string name="about_info">Den här appen läser <b><a href="https://f-droid.org">F-Droid</a></b> byggstatusen från <b><a href="https://f-droid.org/repo/status/build.json">Finished</a></b> och/eller <b><a href="https://f-droid.org/repo/status/running.json">Running</a></b> byggcykler.<br /> Den är licensierad under <b><a href="http://choosealicense.com/licenses/mit/">MIT-License</a></b>.<br /> App-utveckling och frågor på Codeberg: <b><a href="https://codeberg.org/pstorch/F-Droid_Build_Status">pstorch/F-Droid_Build_Status</a></b>. </string>
<string name="about_last_update_build_label">Senast uppdaterade build.json:</string>
<string name="about_last_update_running_label">Senast uppdaterade running.json:</string>
<string name="update_interval_1_hour">1 timme</string>
@@ -109,7 +109,7 @@
<string name="build_cycle_all">alla cykler</string>
<string name="build_status_all">alla stater</string>
<string name="build_cycle">byggcykel</string>
<string name="build_status">byggstatus</string>
<string name="status_filter">byggstatus</string>
<string name="website_build_status_info">Aktuell status för webbplatsdistributionen.</string>
<string name="website_build_status_start_label">Starttidsstämpel:</string>
<string name="website_build_status_end_label">Sluttidsstämpel:</string>

View File

@@ -101,7 +101,7 @@
<string name="disabled_icon">Додаток вимкнено</string>
<string name="needs_update_icon">Додаток потребує оновлення</string>
<string name="build_log">Будівельний журнал:</string>
<string name="about_info">Ця програма зчитує статус складання <b><a href="https://f-droid.org">F-Droid</a></b> із <b><a href="https://f-droid.org/repo/status/build.json">Завершено</a></b> та/або<b><a href="https://f-droid.org/repo/status/running.json">Виконується</a></b> цикли збирання.<br/> Ліцензовано згідно з <b><a href="http://choosealicense.com/licenses/mit/">MIT-Ліцензія</a></b>.<br/> Розробка програм і проблеми на Codeberg: <b><a href="https://codeberg.org/pstorch/F-Droid_Build_Status">pstorch/F-Droid_Build_Status</a></b>. </string>
<string name="about_info">Ця програма зчитує статус складання <b><a href="https://f-droid.org">F-Droid</a></b> із <b><a href="https://f-droid.org/repo/status/build.json">Завершено</a></b> та/або<b><a href="https://f-droid.org/repo/status/running.json">Виконується</a></b> цикли збирання.<br /> Ліцензовано згідно з <b><a href="http://choosealicense.com/licenses/mit/">MIT-Ліцензія</a></b>.<br /> Розробка програм і проблеми на Codeberg: <b><a href="https://codeberg.org/pstorch/F-Droid_Build_Status">pstorch/F-Droid_Build_Status</a></b>. </string>
<string name="build_log_not_found">Журнал збірки не знайдено</string>
<string name="build_status_head_running_command">запущено %s</string>
<string name="build_status_head_finished_command">готових %s</string>
@@ -109,5 +109,5 @@
<string name="build_cycle_all">всі цикли</string>
<string name="build_status_all">всі штати</string>
<string name="build_cycle">цикл побудови</string>
<string name="build_status">статус збірки</string>
<string name="status_filter">статус збірки</string>
</resources>

View File

@@ -53,7 +53,7 @@
<string name="notify_favourites_title">Chỉ thông báo về các mục yêu thích</string>
<string name="notify_favourites_summary_on">Chỉ thông báo về cập nhật trạng thái xây dựng của các ứng dụng yêu thích</string>
<string name="about_version">Phiên bản:</string>
<string name="about_info">Ứng dụng này đọc trạng thái xây dựng của <b><a href="https://f-droid.org">F-Droid</a></b> từ các chu kỳ <b><a href="https://f-droid.org/repo/status/build.json">Đã hoàn thành</a></b> và/hoặc <b><a href="https://f-droid.org/repo/status/running.json">Đang chạy</a></b>.<br/> Nó được cấp phép dưới giấy phép <b><a href="http://choosealicense.com/licenses/mit/">MIT-License</a></b>.<br/> Sự phát triển ứng dụng và Vấn đề trên Codeberg: <b><a href="https://codeberg.org/pstorch/F-Droid_Build_Status">pstorch/F-Droid_Build_Status</a></b>. </string>
<string name="about_info">Ứng dụng này đọc trạng thái xây dựng của <b><a href="https://f-droid.org">F-Droid</a></b> từ các chu kỳ <b><a href="https://f-droid.org/repo/status/build.json">Đã hoàn thành</a></b> và/hoặc <b><a href="https://f-droid.org/repo/status/running.json">Đang chạy</a></b>.<br /> Nó được cấp phép dưới giấy phép <b><a href="http://choosealicense.com/licenses/mit/">MIT-License</a></b>.<br /> Sự phát triển ứng dụng và Vấn đề trên Codeberg: <b><a href="https://codeberg.org/pstorch/F-Droid_Build_Status">pstorch/F-Droid_Build_Status</a></b>. </string>
<string name="about_last_update_build_label">Lần cập nhật cuối build.json:</string>
<string name="about_last_update_running_label">Lần cập nhật cuối running.json:</string>
<string name="action_load_index">Tải về mục lục kho</string>
@@ -109,5 +109,5 @@
<string name="build_cycle_all">tất cả các chu kỳ</string>
<string name="build_status_all">tất cả các quốc gia</string>
<string name="build_cycle">xây dựng chu kỳ</string>
<string name="build_status">xây dựng trạng thái</string>
<string name="status_filter">xây dựng trạng thái</string>
</resources>

View File

@@ -66,7 +66,7 @@
<string name="loading_metadata_versions_failed">无法从 Gitlab 加载元数据版本:%s</string>
<string name="loading_published_versions_failed">无法从 F-Droid 加载已发布的版本:%s</string>
<string name="about_version">版本:</string>
<string name="about_info">本应用从 <b><a href="https://f-droid.org">F-Droid</a></b> <b><a href="https://f-droid.org/repo/status/build.json">完成</a></b>和/或<b><a href="https://f-droid.org/repo/status/running.json">正在运行</a></b> 构建周期中读取构建状态。<br/>它遵循 <b><a href="http://choosealicense.com/licenses/mit/">MIT 许可证</a></b><br/>应用开发和问题报告托管于 Codeberg<b><a href="https://codeberg.org/pstorch/F-Droid_Build_Status">pstorch/F-Droid_Build_Status</a></b></string>
<string name="about_info">本应用从 <b><a href="https://f-droid.org">F-Droid</a></b> <b><a href="https://f-droid.org/repo/status/build.json">完成</a></b>和/或<b><a href="https://f-droid.org/repo/status/running.json">正在运行</a></b> 构建周期中读取构建状态。<br />它遵循 <b><a href="http://choosealicense.com/licenses/mit/">MIT 许可证</a></b><br />应用开发和问题报告托管于 Codeberg<b><a href="https://codeberg.org/pstorch/F-Droid_Build_Status">pstorch/F-Droid_Build_Status</a></b></string>
<string name="about_last_update_build_label">最后更新 build.json</string>
<string name="about_last_update_running_label">最后更新 running.json</string>
<string name="ic_disabled_by_default_black_24dp_label">已禁用应用</string>
@@ -108,6 +108,6 @@
<string name="build_log_not_found">未找到构建日志</string>
<string name="build_status_all">所有州</string>
<string name="build_cycle_all">所有周期</string>
<string name="build_status">建造状态</string>
<string name="status_filter">建造状态</string>
<string name="build_cycle">建设周期</string>
</resources>

View File

@@ -76,13 +76,16 @@
<item>ic_questionmark_outline_24px</item>
<item>ic_directions_run_24px</item>
<item>ic_history_24px</item>
<item>ic_star_24px</item>
<item>ic_star_border_24px</item>
<item>ic_no_favourite_24px</item>
<item>ic_favourite_24px</item>
<item>ic_share_black_24dp</item>
<item>ic_source_24px</item>
<item>ic_code_24px</item>
<item>ic_disabled_by_default_black_24dp</item>
<item>ic_disabled_24dp</item>
<item>ic_upgrade_black_24dp</item>
<item>ic_archive_24</item>
<item>ic_no_packages_24</item>
<item>ic_no_update_check_24</item>
</string-array>
<string-array name="icon_labels">
@@ -98,6 +101,9 @@
<item>@string/ic_code_24px_label</item>
<item>@string/ic_disabled_by_default_black_24dp_label</item>
<item>@string/ic_upgrade_black_24dp_label</item>
<item>@string/ic_archive_24_label</item>
<item>@string/ic_no_packages_24_label</item>
<item>@string/ic_no_update_check_24_label</item>
</string-array>
</resources>

View File

@@ -6,11 +6,9 @@
<string name="PREF_UPDATE_CHECK" translatable="false">PREF_UPDATE_CHECK</string>
<string name="PREF_NOTIFY_FAVOURITES_ONLY" translatable="false">PREF_NOTIFY_FAVOURITES_ONLY</string>
<string name="PREF_SHOW_UNKNWON_FAVOURITE_BUILDS" translatable="false">PREF_SHOW_UNKNWON_FAVOURITE_BUILDS</string>
<string name="PREF_SHOW_SUCCESSFUL_BUILDS" translatable="false">PREF_SHOW_SUCCESSFUL_BUILDS</string>
<string name="PREF_SHOW_FAILED_BUILDS" translatable="false">PREF_SHOW_FAILED_BUILDS</string>
<string name="PREF_SHOW_MISSING_BUILDS" translatable="false">PREF_SHOW_MISSING_BUILDS</string>
<string name="PREF_LOAD_BUILD_RUN_TYPE" translatable="false">PREF_LOAD_BUILD_RUN_TYPE</string>
<string name="PREF_BUILD_RUN_TYPE" translatable="false">PREF_BUILD_RUN_TYPE</string>
<string name="PREF_STATUS_FILTER" translatable="false">PREF_STATUS_FILTER</string>
<string name="PREF_LAST_UPDATE_LOADED" translatable="false">PREF_LAST_UPDATE_LOADED</string>
<string name="PREF_REPO_INDEX_LOADED" translatable="false">PREF_REPO_INDEX_LOADED</string>
<string name="PREF_MAX_LOG_LINES" translatable="false">PREF_MAX_LOG_LINES</string>

View File

@@ -82,7 +82,7 @@
<string name="ic_check_24px_label">Successful build</string>
<string name="ic_error_outline_24px_label">Failed build, incomplete build cycle</string>
<string name="ic_questionmark_outline_24px_label">Unknown build</string>
<string name="ic_questionmark_outline_24px_label">Missing build</string>
<string name="ic_directions_run_24px_label">Currently running build cycle</string>
<string name="ic_history_24px_label">Last finished build cycle</string>
<string name="ic_star_24px_label">Favorite app</string>
@@ -91,7 +91,10 @@
<string name="ic_source_24px_label">Open build metadata</string>
<string name="ic_code_24px_label">Open source repo</string>
<string name="ic_disabled_by_default_black_24dp_label">Disabled app</string>
<string name="ic_upgrade_black_24dp_label">App needs update</string>
<string name="ic_upgrade_black_24dp_label">App needs update / update cycle</string>
<string name="ic_archive_24_label">Archived app</string>
<string name="ic_no_packages_24_label">App has no apks</string>
<string name="ic_no_update_check_24_label">Update check is disabled for this app</string>
<string name="legend_title">Legend</string>
<string name="action_legend">Legend</string>
<string name="metadata_link_type">Metadata link</string>
@@ -117,7 +120,7 @@
<string name="build_status_head_running_command">running %s</string>
<string name="build_status_head_finished_command">finished %s</string>
<string name="build_cycle">build cycle</string>
<string name="build_status">build status</string>
<string name="status_filter">status</string>
<string name="clear_filter">clear filter</string>
<string name="build_cycle_all">all cycles</string>
<string name="build_status_all">all states</string>
@@ -133,5 +136,13 @@
<string name="action_download_buildlog">Download buildlog</string>
<string name="buildlog_title">Buildlog: %s</string>
<string name="bottom_bar_missing">missing</string>
<string name="bottom_bar_archived">archived</string>
<string name="bottom_bar_needs_update">needs update</string>
<string name="bottom_bar_no_packages">no packages</string>
<string name="bottom_bar_no_update_check">no update check</string>
<string name="bottom_bar_disabled">disabled</string>
<string name="archived_icon">App is archived</string>
<string name="no_packages_icon">App has no apks</string>
<string name="no_update_check_icon">App has update check set to none</string>
</resources>

View File

@@ -32,7 +32,7 @@ class AppTest {
"name",
true);
assertThat(app.getFavouriteIcon()).isEqualTo(R.drawable.ic_star_24px);
assertThat(app.getFavouriteIcon()).isEqualTo(R.drawable.ic_favourite_24px);
}
@Test
@@ -41,7 +41,7 @@ class AppTest {
"name",
false);
assertThat(app.getFavouriteIcon()).isEqualTo(R.drawable.ic_star_border_24px);
assertThat(app.getFavouriteIcon()).isEqualTo(R.drawable.ic_no_favourite_24px);
}
@Test

11
artwork/archive_24dp.svg Normal file
View File

@@ -0,0 +1,11 @@
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 24 24"
height="24"
width="24"
id="vector">
<path
id="path"
d="M 20.54 5.23 L 19.15 3.55 C 18.88 3.21 18.47 3 18 3 L 6 3 C 5.53 3 5.12 3.21 4.84 3.55 L 3.46 5.23 C 3.17 5.57 3 6.02 3 6.5 L 3 19 C 3 20.1 3.9 21 5 21 L 19 21 C 20.1 21 21 20.1 21 19 L 21 6.5 C 21 6.02 20.83 5.57 20.54 5.23 Z M 6.24 5 L 17.76 5 L 18.57 5.97 L 5.44 5.97 L 6.24 5 Z M 5 19 L 5 8 L 19 8 L 19 19 L 5 19 Z M 13.45 10 L 10.55 10 L 10.55 13 L 8 13 L 12 17 L 16 13 L 13.45 13 Z"
fill="#000000"/>
</svg>

After

Width:  |  Height:  |  Size: 581 B

11
artwork/disabled.svg Normal file
View File

@@ -0,0 +1,11 @@
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 24 24"
height="24"
width="24"
id="vector">
<path
id="path"
d="M 19 19 L 5 19 L 5 5 L 19 5 L 19 19 Z M 3 3 L 3 21 L 21 21 L 21 3 L 3 3 Z M 17 15.59 L 15.59 17 L 12 13.41 L 8.41 17 L 7 15.59 L 10.59 12 L 7 8.41 L 8.41 7 L 12 10.59 L 15.59 7 L 17 8.41 L 13.41 12 L 17 15.59 Z"
fill="#000000"/>
</svg>

After

Width:  |  Height:  |  Size: 400 B

View File

@@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" enable-background="new 0 0 24 24" height="24px" viewBox="0 0 24 24" width="24px" fill="#000000"><rect fill="none" height="24" width="24"/><path d="M3,3v18h18V3H3z M17,15.59L15.59,17L12,13.41L8.41,17L7,15.59L10.59,12L7,8.41L8.41,7L12,10.59L15.59,7L17,8.41L13.41,12 L17,15.59z"/></svg>

Before

Width:  |  Height:  |  Size: 323 B

11
artwork/no_packages.svg Normal file
View File

@@ -0,0 +1,11 @@
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 24 24"
height="24"
width="24"
id="vector">
<path
id="path"
d="M 21.26 21.21 L 3.79 3.74 L 2.38 5.15 L 5.12 7.89 L 5 8.01 L 5 19 C 5 20.1 5.9 21 7 21 L 17 21 C 17.35 21 17.68 20.9 17.97 20.74 L 19.85 22.62 L 21.26 21.21 Z M 7 19 L 7 9.77 L 16.23 19 L 7 19 Z M 10.84 5 L 17 5 L 17 14.11 L 19 16.11 L 19 5 C 19 3.9 18.1 3 17 3 L 10.01 3 L 7.95 5.06 L 9.36 6.47 L 10.84 5 Z"
fill="#000000"/>
</svg>

After

Width:  |  Height:  |  Size: 501 B

View File

@@ -0,0 +1,11 @@
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 24 24"
height="24"
width="24"
id="vector">
<path
id="path"
d="M 8.67 5.84 L 7.22 4.39 C 8.6 3.51 10.24 3 12 3 C 14.74 3 17.19 4.23 18.84 6.16 L 21 4 L 21 10 L 15 10 L 17.41 7.59 C 16.12 6.02 14.18 5 12 5 C 10.8 5 9.66 5.31 8.67 5.84 Z M 13 7 L 11 7 L 11 8.17 L 13 10.17 L 13 7 Z M 19.78 22.61 L 16.78 19.61 C 15.39 20.48 13.76 21 12 21 C 7.03 21 3 16.97 3 12 C 3 10.24 3.51 8.6 4.39 7.22 L 1.39 4.22 L 2.8 2.81 L 21.18 21.19 L 19.78 22.61 Z M 15.32 18.15 L 5.84 8.67 C 5.31 9.66 5 10.8 5 12 C 5 15.86 8.14 19 12 19 C 13.2 19 14.34 18.69 15.32 18.15 Z M 20.94 13 L 18.92 13 C 18.8 13.83 18.53 14.61 18.15 15.32 L 19.62 16.79 C 20.32 15.67 20.79 14.38 20.94 13 Z"
fill="#000000"/>
</svg>

After

Width:  |  Height:  |  Size: 788 B