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:
17
README.md
17
README.md
@@ -60,15 +60,21 @@ running.json)
|
||||
 failed build, incomplete build cycle (
|
||||
maxBuildTimeReached)
|
||||
|
||||
 unknown build
|
||||
 missing build
|
||||
|
||||
 non-favourite app
|
||||
|
||||
 favourite app
|
||||
|
||||
 disabled app
|
||||
 disabled app
|
||||
|
||||
 app needs update
|
||||
 archived app
|
||||
|
||||
 app has no packages
|
||||
|
||||
 app has no update check enabled
|
||||
|
||||
 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
|
||||
|
||||
|
@@ -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));
|
||||
|
||||
|
@@ -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());
|
||||
|
@@ -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)) {
|
||||
|
@@ -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();
|
||||
|
@@ -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;
|
||||
|
@@ -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);
|
||||
|
@@ -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());
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -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)
|
||||
|
@@ -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?
|
||||
}
|
@@ -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
|
||||
);
|
||||
|
||||
}
|
5
app/src/main/res/drawable/ic_archive_24.xml
Normal file
5
app/src/main/res/drawable/ic_archive_24.xml
Normal 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>
|
5
app/src/main/res/drawable/ic_disabled_24dp.xml
Normal file
5
app/src/main/res/drawable/ic_disabled_24dp.xml
Normal 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>
|
@@ -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>
|
5
app/src/main/res/drawable/ic_no_packages_24.xml
Normal file
5
app/src/main/res/drawable/ic_no_packages_24.xml
Normal 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>
|
5
app/src/main/res/drawable/ic_no_update_check_24.xml
Normal file
5
app/src/main/res/drawable/ic_no_update_check_24.xml
Normal 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>
|
@@ -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" />
|
||||
|
||||
|
@@ -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" />
|
||||
|
||||
|
@@ -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" />
|
||||
|
||||
|
@@ -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"
|
||||
|
@@ -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>
|
@@ -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>
|
@@ -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>
|
@@ -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>
|
||||
|
@@ -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>
|
||||
|
@@ -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 (> 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>
|
@@ -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 (> 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>
|
@@ -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>
|
@@ -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>
|
||||
|
@@ -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>
|
@@ -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>
|
@@ -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>
|
@@ -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 (> 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>
|
@@ -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 (> 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>
|
@@ -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>
|
||||
|
@@ -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>
|
@@ -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>
|
@@ -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>
|
@@ -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>
|
@@ -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>
|
@@ -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>
|
||||
|
@@ -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>
|
@@ -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>
|
||||
|
@@ -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>
|
||||
|
@@ -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>
|
@@ -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>
|
@@ -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>
|
@@ -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>
|
@@ -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>
|
||||
|
@@ -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>
|
@@ -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
11
artwork/archive_24dp.svg
Normal 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
11
artwork/disabled.svg
Normal 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 |
@@ -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
11
artwork/no_packages.svg
Normal 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 |
11
artwork/no_update_check.svg
Normal file
11
artwork/no_update_check.svg
Normal 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 |
Reference in New Issue
Block a user