diff --git a/app/src/main/java/io/github/sspanak/tt9/db/DictionaryLoader.java b/app/src/main/java/io/github/sspanak/tt9/db/DictionaryLoader.java index 5aea2bea..0815a608 100644 --- a/app/src/main/java/io/github/sspanak/tt9/db/DictionaryLoader.java +++ b/app/src/main/java/io/github/sspanak/tt9/db/DictionaryLoader.java @@ -51,7 +51,7 @@ public class DictionaryLoader { } - public DictionaryLoader(Context context) { + private DictionaryLoader(Context context) { assets = context.getAssets(); sqlite = SQLiteOpener.getInstance(context); } diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/PreferencesActivity.java b/app/src/main/java/io/github/sspanak/tt9/preferences/PreferencesActivity.java index 0ed80e61..64c2ccf1 100644 --- a/app/src/main/java/io/github/sspanak/tt9/preferences/PreferencesActivity.java +++ b/app/src/main/java/io/github/sspanak/tt9/preferences/PreferencesActivity.java @@ -1,8 +1,10 @@ package io.github.sspanak.tt9.preferences; +import android.content.Intent; import android.os.Bundle; import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import androidx.appcompat.app.ActionBar; import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatDelegate; @@ -18,6 +20,7 @@ import io.github.sspanak.tt9.db.DictionaryLoader; import io.github.sspanak.tt9.db.LegacyDb; import io.github.sspanak.tt9.db.WordStoreAsync; import io.github.sspanak.tt9.ime.helpers.InputModeValidator; +import io.github.sspanak.tt9.ime.helpers.SystemSettings; import io.github.sspanak.tt9.preferences.helpers.Hotkeys; import io.github.sspanak.tt9.preferences.screens.AppearanceScreen; import io.github.sspanak.tt9.preferences.screens.DebugScreen; @@ -64,6 +67,24 @@ public class PreferencesActivity extends AppCompatActivity implements Preference return true; } + @Override + protected void onResume() { + super.onResume(); + + if (!SystemSettings.isTT9Enabled(this)) { + return; + } + + Intent intent = getIntent(); + String screenName = intent != null ? intent.getStringExtra("screen") : null; + screenName = screenName != null ? screenName : ""; + + Fragment screen = getScreen(screenName.replace("Screen", "")); + + if (screen.getClass().getSimpleName().equals(screenName)) { + displayScreen(screen, false); + } + } /** * getScreenName @@ -81,7 +102,11 @@ public class PreferencesActivity extends AppCompatActivity implements Preference * Finds a screen fragment by name. If there is no fragment with such name, the main screen * fragment will be returned. */ - private Fragment getScreen(String name) { + private Fragment getScreen(@Nullable String name) { + if (name == null) { + return new MainSettingsScreen(this); + } + switch (name) { case "Appearance": return new AppearanceScreen(this); diff --git a/app/src/main/java/io/github/sspanak/tt9/ui/DictionaryLoadingBar.java b/app/src/main/java/io/github/sspanak/tt9/ui/DictionaryLoadingBar.java index 09c392e6..1170a66c 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ui/DictionaryLoadingBar.java +++ b/app/src/main/java/io/github/sspanak/tt9/ui/DictionaryLoadingBar.java @@ -2,7 +2,9 @@ package io.github.sspanak.tt9.ui; import android.app.NotificationChannel; import android.app.NotificationManager; +import android.app.PendingIntent; import android.content.Context; +import android.content.Intent; import android.content.res.Resources; import android.os.Build; import android.os.Bundle; @@ -19,6 +21,8 @@ import io.github.sspanak.tt9.languages.InvalidLanguageCharactersException; import io.github.sspanak.tt9.languages.InvalidLanguageException; import io.github.sspanak.tt9.languages.Language; import io.github.sspanak.tt9.languages.LanguageCollection; +import io.github.sspanak.tt9.preferences.PreferencesActivity; +import io.github.sspanak.tt9.preferences.screens.DictionariesScreen; public class DictionaryLoadingBar { @@ -53,23 +57,36 @@ public class DictionaryLoadingBar { resources = context.getResources(); manager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); + notificationBuilder = getNotificationBuilderCompat(context); + notificationBuilder + .setContentIntent(createNavigationIntent(context)) + .setSmallIcon(android.R.drawable.stat_notify_sync) + .setCategory(NotificationCompat.CATEGORY_PROGRESS) + .setOnlyAlertOnce(true); + } + + + private PendingIntent createNavigationIntent(Context context) { + Intent intent = new Intent(context, PreferencesActivity.class); + intent.putExtra("screen", DictionariesScreen.class.getSimpleName()); + intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); + return PendingIntent.getActivity(context, 0, intent,PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE); + } + + + private NotificationCompat.Builder getNotificationBuilderCompat(Context context) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { manager.createNotificationChannel(new NotificationChannel( NOTIFICATION_CHANNEL_ID, "Dictionary Status", NotificationManager.IMPORTANCE_LOW )); - notificationBuilder = new NotificationCompat.Builder(context, NOTIFICATION_CHANNEL_ID); + return new NotificationCompat.Builder(context, NOTIFICATION_CHANNEL_ID); } else { //noinspection deprecation - notificationBuilder = new NotificationCompat.Builder(context); + return new NotificationCompat.Builder(context); } - - notificationBuilder - .setSmallIcon(android.R.drawable.stat_notify_sync) - .setCategory(NotificationCompat.CATEGORY_PROGRESS) - .setOnlyAlertOnce(true); }