mirror of
https://github.com/f-droid/fdroidclient.git
synced 2026-02-16 01:53:16 -05:00
[app] Adjust settings UI to new DB
This commit is contained in:
committed by
Hans-Christoph Steiner
parent
0f7c768b28
commit
48d646361b
@@ -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() {
|
||||
|
||||
@@ -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
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -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, "
|
||||
|
||||
@@ -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');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user