[app] Adjust settings UI to new DB

This commit is contained in:
Torsten Grote
2022-04-29 16:45:48 -03:00
committed by Hans-Christoph Steiner
parent 0f7c768b28
commit 48d646361b
5 changed files with 36 additions and 48 deletions

View File

@@ -8,7 +8,9 @@ import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import org.fdroid.database.FDroidDatabase;
import org.fdroid.fdroid.Preferences;
import org.fdroid.fdroid.Utils;
import org.fdroid.fdroid.data.Apk;
import org.fdroid.fdroid.data.DBHelper;
import org.fdroid.fdroid.data.InstalledApp;
@@ -95,8 +97,9 @@ public class PanicResponderActivity extends AppCompatActivity {
lbm.registerReceiver(receiver, Installer.getUninstallIntentFilter(lastToUninstall));
for (String packageName : wipeList) {
InstalledApp installedApp = InstalledAppProvider.Helper.findByPackageName(context, packageName);
InstallerService.uninstall(context, new Apk(installedApp));
Apk apk = new Apk();
apk.packageName = packageName;
InstallerService.uninstall(context, apk);
}
// wait for apps to uninstall before triggering final responses
@@ -139,30 +142,7 @@ public class PanicResponderActivity extends AppCompatActivity {
}
static void resetRepos(Context context) {
HashSet<String> enabledAddresses = new HashSet<>();
HashSet<String> disabledAddresses = new HashSet<>();
String[] defaultReposItems = DBHelper.loadInitialRepos(context).toArray(new String[0]);
for (int i = 1; i < defaultReposItems.length; i += DBHelper.REPO_XML_ITEM_COUNT) {
if ("1".equals(defaultReposItems[i + 3])) {
enabledAddresses.add(defaultReposItems[i]);
} else {
disabledAddresses.add(defaultReposItems[i]);
}
}
List<Repo> repos = RepoProvider.Helper.all(context);
for (Repo repo : repos) {
ContentValues values = new ContentValues(1);
if (enabledAddresses.contains(repo.address)) {
values.put(Schema.RepoTable.Cols.IN_USE, true);
RepoProvider.Helper.update(context, repo, values);
} else if (disabledAddresses.contains(repo.address)) {
values.put(Schema.RepoTable.Cols.IN_USE, false);
RepoProvider.Helper.update(context, repo, values);
} else {
RepoProvider.Helper.remove(context, repo.getId());
}
}
DBHelper.resetRepos(context);
}
private void exitAndClear() {

View File

@@ -58,7 +58,6 @@ import org.fdroid.fdroid.Preferences.ChangeListener;
import org.fdroid.fdroid.Preferences.Theme;
import org.fdroid.fdroid.compat.PRNGFixes;
import org.fdroid.fdroid.data.App;
import org.fdroid.fdroid.data.AppProvider;
import org.fdroid.fdroid.data.DBHelper;
import org.fdroid.fdroid.data.Repo;
import org.fdroid.fdroid.installer.ApkFileProvider;
@@ -251,19 +250,23 @@ public class FDroidApp extends Application implements androidx.work.Configuratio
currentLocale = newConfig.getLocales().toString();
}
if (!TextUtils.equals(lastLocale, currentLocale)) {
FDroidDatabase db = DBHelper.getDb(this.getApplicationContext());
Single.fromCallable(() -> {
long now = System.currentTimeMillis();
LocaleListCompat locales =
ConfigurationCompat.getLocales(Resources.getSystem().getConfiguration());
db.afterLocalesChanged(locales);
Log.d(TAG, "Updating DB locales took: " + (System.currentTimeMillis() - now) + "ms");
return true;
}).subscribeOn(Schedulers.io()).subscribe();
onLanguageChanged(getApplicationContext());
}
atStartTime.edit().putString(lastLocaleKey, currentLocale).apply();
}
public static void onLanguageChanged(Context context) {
FDroidDatabase db = DBHelper.getDb(context);
Single.fromCallable(() -> {
long now = System.currentTimeMillis();
LocaleListCompat locales =
ConfigurationCompat.getLocales(Resources.getSystem().getConfiguration());
db.afterLocalesChanged(locales);
Log.d(TAG, "Updating DB locales took: " + (System.currentTimeMillis() - now) + "ms");
return true;
}).subscribeOn(Schedulers.io()).subscribe();
}
@Override
public void onTrimMemory(int level) {
super.onTrimMemory(level);
@@ -363,7 +366,7 @@ public class FDroidApp extends Application implements androidx.work.Configuratio
preferences.registerAppsRequiringAntiFeaturesChangeListener(new Preferences.ChangeListener() {
@Override
public void onPreferenceChange() {
getContentResolver().notifyChange(AppProvider.getContentUri(), null);
// TODO check if anything else needs updating/reloading
}
});

View File

@@ -31,6 +31,7 @@ import android.database.sqlite.SQLiteOpenHelper;
import android.text.TextUtils;
import android.util.Log;
import androidx.annotation.AnyThread;
import androidx.annotation.VisibleForTesting;
import androidx.annotation.WorkerThread;
@@ -99,6 +100,15 @@ public class DBHelper extends SQLiteOpenHelper {
}
}
@AnyThread
public static void resetRepos(Context context) {
FDroidDatabase db = getDb(context);
Utils.runOffUiThread(() -> db.runInTransaction(() -> {
db.getRepositoryDao().clearAll();
prePopulateDb(context, db);
}));
}
private static final String CREATE_TABLE_PACKAGE = "CREATE TABLE " + PackageTable.NAME
+ " ( "
+ PackageTable.Cols.PACKAGE_NAME + " text not null, "

View File

@@ -32,11 +32,10 @@ import android.widget.TextView;
import com.google.android.material.appbar.MaterialToolbar;
import org.apache.commons.io.IOUtils;
import org.fdroid.database.Repository;
import org.fdroid.fdroid.FDroidApp;
import org.fdroid.fdroid.Preferences;
import org.fdroid.fdroid.R;
import org.fdroid.fdroid.data.Repo;
import org.fdroid.fdroid.data.RepoProvider;
import org.fdroid.fdroid.installer.InstallHistoryService;
import org.fdroid.fdroid.work.FDroidMetricsWorker;
@@ -140,10 +139,10 @@ public class InstallHistoryActivity extends AppCompatActivity {
if (showingInstallHistory) {
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("Repos:\n");
for (Repo repo : RepoProvider.Helper.all(this)) {
if (repo.inuse) {
for (Repository repo: FDroidApp.repos) {
if (repo.getEnabled()) {
stringBuilder.append("* ");
stringBuilder.append(repo.address);
stringBuilder.append(repo.getAddress());
stringBuilder.append('\n');
}
}

View File

@@ -49,7 +49,6 @@ import org.fdroid.fdroid.Preferences;
import org.fdroid.fdroid.R;
import org.fdroid.fdroid.UpdateService;
import org.fdroid.fdroid.Utils;
import org.fdroid.fdroid.data.RepoProvider;
import org.fdroid.fdroid.installer.InstallHistoryService;
import org.fdroid.fdroid.installer.PrivilegedInstaller;
import org.fdroid.fdroid.work.CleanCacheWorker;
@@ -325,12 +324,9 @@ public class PreferencesFragment extends PreferenceFragmentCompat
case Preferences.PREF_LANGUAGE:
entrySummary(key);
if (changing) {
AppCompatActivity activity = (AppCompatActivity) getActivity();
AppCompatActivity activity = (AppCompatActivity) requireActivity();
Languages.setLanguage(activity);
RepoProvider.Helper.clearEtags(getActivity());
UpdateService.updateNow(getActivity());
FDroidApp.onLanguageChanged(activity.getApplicationContext());
Languages.forceChangeLanguage(activity);
}
break;