From efcb5710c03bec40b63e5015818518cc080e8cb1 Mon Sep 17 00:00:00 2001 From: Alinson Xavier Date: Mon, 3 Jul 2017 20:34:15 -0400 Subject: [PATCH] Convert more classes to Kotlin --- .../org/isoron/uhabits/BaseAndroidTest.java | 2 +- .../{HabitLogger.java => HabitLogger.kt} | 46 ++---- .../org/isoron/uhabits/HabitsApplication.java | 130 ---------------- .../org/isoron/uhabits/HabitsApplication.kt | 104 +++++++++++++ ...sBackupAgent.java => HabitsBackupAgent.kt} | 19 +-- .../isoron/uhabits/HabitsDatabaseOpener.java | 65 -------- .../isoron/uhabits/HabitsDatabaseOpener.kt | 54 +++++++ .../java/org/isoron/uhabits/HabitsModule.java | 98 ------------ .../java/org/isoron/uhabits/HabitsModule.kt | 93 ++++++++++++ .../preferences/SharedPreferencesStorage.java | 139 ------------------ .../preferences/SharedPreferencesStorage.kt | 93 ++++++++++++ .../receivers/ConnectivityReceiver.java | 52 ------- .../uhabits/receivers/ConnectivityReceiver.kt | 38 +++++ .../isoron/uhabits/utils/DatabaseUtils.java | 2 +- 14 files changed, 406 insertions(+), 529 deletions(-) rename uhabits-android/src/main/java/org/isoron/uhabits/{HabitLogger.java => HabitLogger.kt} (51%) delete mode 100644 uhabits-android/src/main/java/org/isoron/uhabits/HabitsApplication.java create mode 100644 uhabits-android/src/main/java/org/isoron/uhabits/HabitsApplication.kt rename uhabits-android/src/main/java/org/isoron/uhabits/{HabitsBackupAgent.java => HabitsBackupAgent.kt} (63%) delete mode 100644 uhabits-android/src/main/java/org/isoron/uhabits/HabitsDatabaseOpener.java create mode 100644 uhabits-android/src/main/java/org/isoron/uhabits/HabitsDatabaseOpener.kt delete mode 100644 uhabits-android/src/main/java/org/isoron/uhabits/HabitsModule.java create mode 100644 uhabits-android/src/main/java/org/isoron/uhabits/HabitsModule.kt delete mode 100644 uhabits-android/src/main/java/org/isoron/uhabits/preferences/SharedPreferencesStorage.java create mode 100644 uhabits-android/src/main/java/org/isoron/uhabits/preferences/SharedPreferencesStorage.kt delete mode 100644 uhabits-android/src/main/java/org/isoron/uhabits/receivers/ConnectivityReceiver.java create mode 100644 uhabits-android/src/main/java/org/isoron/uhabits/receivers/ConnectivityReceiver.kt diff --git a/uhabits-android/src/androidTest/java/org/isoron/uhabits/BaseAndroidTest.java b/uhabits-android/src/androidTest/java/org/isoron/uhabits/BaseAndroidTest.java index de390ff7c..c33c17125 100644 --- a/uhabits-android/src/androidTest/java/org/isoron/uhabits/BaseAndroidTest.java +++ b/uhabits-android/src/androidTest/java/org/isoron/uhabits/BaseAndroidTest.java @@ -97,7 +97,7 @@ public class BaseAndroidTest extends TestCase .appContextModule(new AppContextModule(targetContext.getApplicationContext())) .build(); - HabitsApplication.setComponent(appComponent); + HabitsApplication.Companion.setComponent(appComponent); prefs = appComponent.getPreferences(); habitList = appComponent.getHabitList(); taskRunner = appComponent.getTaskRunner(); diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/HabitLogger.java b/uhabits-android/src/main/java/org/isoron/uhabits/HabitLogger.kt similarity index 51% rename from uhabits-android/src/main/java/org/isoron/uhabits/HabitLogger.java rename to uhabits-android/src/main/java/org/isoron/uhabits/HabitLogger.kt index 81e6574cf..a248e54c1 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/HabitLogger.java +++ b/uhabits-android/src/main/java/org/isoron/uhabits/HabitLogger.kt @@ -17,39 +17,25 @@ * with this program. If not, see . */ -package org.isoron.uhabits; +package org.isoron.uhabits -import android.support.annotation.*; -import android.util.*; - -import org.isoron.uhabits.core.*; -import org.isoron.uhabits.core.models.*; -import org.isoron.uhabits.core.utils.*; - -import java.text.*; -import java.util.*; - -import javax.inject.*; +import android.util.* +import org.isoron.uhabits.core.* +import org.isoron.uhabits.core.models.* +import org.isoron.uhabits.core.utils.* +import java.util.* +import javax.inject.* @AppScope -public class HabitLogger -{ - @Inject - public HabitLogger() - { - - } - - public void logReminderScheduled(@NonNull Habit habit, - @NonNull Long reminderTime) - { - int min = Math.min(3, habit.getName().length()); - String name = habit.getName().substring(0, min); - - DateFormat df = DateFormats.getBackupDateFormat(); - String time = df.format(new Date(reminderTime)); - +class HabitLogger +@Inject constructor() { + + fun logReminderScheduled(habit: Habit, reminderTime: Long) { + val min = Math.min(3, habit.name.length) + val name = habit.name.substring(0, min) + val df = DateFormats.getBackupDateFormat() + val time = df.format(Date(reminderTime)) Log.i("ReminderHelper", - String.format("Setting alarm (%s): %s", time, name)); + String.format("Setting alarm (%s): %s", time, name)) } } diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/HabitsApplication.java b/uhabits-android/src/main/java/org/isoron/uhabits/HabitsApplication.java deleted file mode 100644 index 8374d84d5..000000000 --- a/uhabits-android/src/main/java/org/isoron/uhabits/HabitsApplication.java +++ /dev/null @@ -1,130 +0,0 @@ -/* - * Copyright (C) 2016 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.uhabits; - -import android.app.*; -import android.content.*; - -import org.isoron.androidbase.*; -import org.isoron.uhabits.core.database.*; -import org.isoron.uhabits.core.preferences.*; -import org.isoron.uhabits.core.reminders.*; -import org.isoron.uhabits.core.tasks.*; -import org.isoron.uhabits.core.ui.*; -import org.isoron.uhabits.utils.*; -import org.isoron.uhabits.widgets.*; - -import java.io.*; - -/** - * The Android application for Loop Habit Tracker. - */ -public class HabitsApplication extends Application -{ - private Context context; - - private static HabitsApplicationComponent component; - - private WidgetUpdater widgetUpdater; - - private ReminderScheduler reminderScheduler; - - private NotificationTray notificationTray; - - public HabitsApplicationComponent getComponent() - { - return component; - } - - public static void setComponent(HabitsApplicationComponent component) - { - HabitsApplication.component = component; - } - - public static boolean isTestMode() - { - try - { - Class.forName("org.isoron.uhabits.BaseAndroidTest"); - return true; - } - catch (final ClassNotFoundException e) - { - return false; - } - } - - @Override - public void onCreate() - { - super.onCreate(); - context = this; - - component = DaggerHabitsApplicationComponent - .builder() - .appContextModule(new AppContextModule(context)) - .build(); - - if (isTestMode()) - { - File db = DatabaseUtils.getDatabaseFile(context); - if (db.exists()) db.delete(); - } - - try - { - DatabaseUtils.initializeDatabase(context); - } - catch (UnsupportedDatabaseVersionException e) - { - File db = DatabaseUtils.getDatabaseFile(context); - db.renameTo(new File(db.getAbsolutePath() + ".invalid")); - DatabaseUtils.initializeDatabase(context); - } - - widgetUpdater = component.getWidgetUpdater(); - widgetUpdater.startListening(); - - reminderScheduler = component.getReminderScheduler(); - reminderScheduler.startListening(); - - notificationTray = component.getNotificationTray(); - notificationTray.startListening(); - - Preferences prefs = component.getPreferences(); - prefs.setLastAppVersion(BuildConfig.VERSION_CODE); - - TaskRunner taskRunner = component.getTaskRunner(); - taskRunner.execute(() -> { - reminderScheduler.scheduleAll(); - widgetUpdater.updateWidgets(); - }); - } - - @Override - public void onTerminate() - { - context = null; - reminderScheduler.stopListening(); - widgetUpdater.stopListening(); - notificationTray.stopListening(); - super.onTerminate(); - } -} diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/HabitsApplication.kt b/uhabits-android/src/main/java/org/isoron/uhabits/HabitsApplication.kt new file mode 100644 index 000000000..df162766c --- /dev/null +++ b/uhabits-android/src/main/java/org/isoron/uhabits/HabitsApplication.kt @@ -0,0 +1,104 @@ +/* + * Copyright (C) 2016 Álinson Santos Xavier + * + * This file is part of Loop Habit Tracker. + * + * Loop Habit Tracker is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. + * + * Loop Habit Tracker is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + +package org.isoron.uhabits + +import android.app.* +import android.content.* +import org.isoron.androidbase.* +import org.isoron.uhabits.core.database.* +import org.isoron.uhabits.core.reminders.* +import org.isoron.uhabits.core.ui.* +import org.isoron.uhabits.utils.* +import org.isoron.uhabits.widgets.* +import java.io.* + +/** + * The Android application for Loop Habit Tracker. + */ +class HabitsApplication : Application() { + + private lateinit var context: Context + private lateinit var widgetUpdater: WidgetUpdater + private lateinit var reminderScheduler: ReminderScheduler + private lateinit var notificationTray: NotificationTray + + override fun onCreate() { + super.onCreate() + context = this + HabitsApplication.component = DaggerHabitsApplicationComponent + .builder() + .appContextModule(AppContextModule(context)) + .build() + + if (isTestMode()) { + val db = DatabaseUtils.getDatabaseFile(context) + if (db.exists()) db.delete() + } + + try { + DatabaseUtils.initializeDatabase(context) + } catch (e: UnsupportedDatabaseVersionException) { + val db = DatabaseUtils.getDatabaseFile(context) + db.renameTo(File(db.absolutePath + ".invalid")) + DatabaseUtils.initializeDatabase(context) + } + + widgetUpdater = component.widgetUpdater + widgetUpdater.startListening() + + reminderScheduler = component.reminderScheduler + reminderScheduler.startListening() + + notificationTray = component.notificationTray + notificationTray.startListening() + + val prefs = component.preferences + prefs.setLastAppVersion(BuildConfig.VERSION_CODE) + + val taskRunner = component.taskRunner + taskRunner.execute { + reminderScheduler.scheduleAll() + widgetUpdater.updateWidgets() + } + } + + override fun onTerminate() { + reminderScheduler.stopListening() + widgetUpdater.stopListening() + notificationTray.stopListening() + super.onTerminate() + } + + val component: HabitsApplicationComponent + get() = HabitsApplication.component + + companion object { + lateinit var component: HabitsApplicationComponent + + fun isTestMode(): Boolean { + try { + Class.forName("org.isoron.uhabits.BaseAndroidTest") + return true + } catch (e: ClassNotFoundException) { + return false + } + } + } +} diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/HabitsBackupAgent.java b/uhabits-android/src/main/java/org/isoron/uhabits/HabitsBackupAgent.kt similarity index 63% rename from uhabits-android/src/main/java/org/isoron/uhabits/HabitsBackupAgent.java rename to uhabits-android/src/main/java/org/isoron/uhabits/HabitsBackupAgent.kt index f337949ea..4acc16b94 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/HabitsBackupAgent.java +++ b/uhabits-android/src/main/java/org/isoron/uhabits/HabitsBackupAgent.kt @@ -17,23 +17,16 @@ * with this program. If not, see . */ -package org.isoron.uhabits; +package org.isoron.uhabits -import android.app.backup.BackupAgentHelper; -import android.app.backup.FileBackupHelper; -import android.app.backup.SharedPreferencesBackupHelper; +import android.app.backup.* /** * An Android BackupAgentHelper customized for this application. */ -public class HabitsBackupAgent extends BackupAgentHelper -{ - @Override - public void onCreate() - { - addHelper("preferences", - new SharedPreferencesBackupHelper(this, "preferences")); - addHelper("database", - new FileBackupHelper(this, "../databases/uhabits.db")); +class HabitsBackupAgent : BackupAgentHelper() { + override fun onCreate() { + addHelper("preferences", SharedPreferencesBackupHelper(this, "preferences")) + addHelper("database", FileBackupHelper(this, "../databases/uhabits.db")) } } diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/HabitsDatabaseOpener.java b/uhabits-android/src/main/java/org/isoron/uhabits/HabitsDatabaseOpener.java deleted file mode 100644 index 9b7643783..000000000 --- a/uhabits-android/src/main/java/org/isoron/uhabits/HabitsDatabaseOpener.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright (C) 2017 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - * - * - */ - -package org.isoron.uhabits; - -import android.content.*; -import android.database.sqlite.*; - -import org.isoron.uhabits.core.database.*; -import org.isoron.uhabits.database.*; - - -public class HabitsDatabaseOpener extends SQLiteOpenHelper -{ - private final int version; - - private MigrationHelper helper; - - public HabitsDatabaseOpener(Context context, - String databaseFilename, - int version) - { - super(context, databaseFilename, null, version); - this.version = version; - } - - @Override - public void onCreate(SQLiteDatabase db) - { - db.setVersion(8); - onUpgrade(db, -1, version); - } - - @Override - public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) - { - if(db.getVersion() < 8) throw new UnsupportedDatabaseVersionException(); - helper = new MigrationHelper(new AndroidDatabase(db)); - helper.migrateTo(newVersion); - } - - @Override - public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) - { - throw new UnsupportedDatabaseVersionException(); - } -} diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/HabitsDatabaseOpener.kt b/uhabits-android/src/main/java/org/isoron/uhabits/HabitsDatabaseOpener.kt new file mode 100644 index 000000000..ba3c5565d --- /dev/null +++ b/uhabits-android/src/main/java/org/isoron/uhabits/HabitsDatabaseOpener.kt @@ -0,0 +1,54 @@ +/* + * Copyright (C) 2017 Álinson Santos Xavier + * + * This file is part of Loop Habit Tracker. + * + * Loop Habit Tracker is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. + * + * Loop Habit Tracker is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + * + * + */ + +package org.isoron.uhabits + +import android.content.* +import android.database.sqlite.* + +import org.isoron.uhabits.core.database.* +import org.isoron.uhabits.database.* + +class HabitsDatabaseOpener( + context: Context, + databaseFilename: String, + private val version: Int +) : SQLiteOpenHelper(context, databaseFilename, null, version) { + + override fun onCreate(db: SQLiteDatabase) { + db.version = 8 + onUpgrade(db, -1, version) + } + + override fun onUpgrade(db: SQLiteDatabase, + oldVersion: Int, + newVersion: Int) { + if (db.version < 8) throw UnsupportedDatabaseVersionException() + val helper = MigrationHelper(AndroidDatabase(db)) + helper.migrateTo(newVersion) + } + + override fun onDowngrade(db: SQLiteDatabase, + oldVersion: Int, + newVersion: Int) { + throw UnsupportedDatabaseVersionException() + } +} diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/HabitsModule.java b/uhabits-android/src/main/java/org/isoron/uhabits/HabitsModule.java deleted file mode 100644 index ea8758be9..000000000 --- a/uhabits-android/src/main/java/org/isoron/uhabits/HabitsModule.java +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Copyright (C) 2017 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.uhabits; - -import org.isoron.uhabits.core.*; -import org.isoron.uhabits.core.commands.*; -import org.isoron.uhabits.core.database.*; -import org.isoron.uhabits.core.models.*; -import org.isoron.uhabits.core.models.sqlite.*; -import org.isoron.uhabits.core.preferences.*; -import org.isoron.uhabits.core.reminders.*; -import org.isoron.uhabits.core.tasks.*; -import org.isoron.uhabits.core.ui.*; -import org.isoron.uhabits.database.*; -import org.isoron.uhabits.intents.*; -import org.isoron.uhabits.notifications.*; -import org.isoron.uhabits.preferences.*; -import org.isoron.uhabits.utils.*; - -import dagger.*; - -@Module -public class HabitsModule -{ - @Provides - @AppScope - public static Preferences getPreferences(SharedPreferencesStorage storage) - { - return new Preferences(storage); - } - - @Provides - @AppScope - public static ReminderScheduler getReminderScheduler(IntentScheduler sys, - CommandRunner commandRunner, - HabitList habitList) - { - return new ReminderScheduler(commandRunner, habitList, sys); - } - - @Provides - @AppScope - public static NotificationTray getTray(TaskRunner taskRunner, - CommandRunner commandRunner, - Preferences preferences, - AndroidNotificationTray screen) - { - return new NotificationTray(taskRunner, commandRunner, preferences, - screen); - } - - @Provides - @AppScope - public static WidgetPreferences getWidgetPreferences( - SharedPreferencesStorage storage) - { - return new WidgetPreferences(storage); - } - - @Provides - public ModelFactory getModelFactory() - { - return new SQLModelFactory( - new AndroidDatabase(DatabaseUtils.openDatabase())); - } - - @Provides - @AppScope - public HabitList getHabitList(SQLiteHabitList list) - { - return list; - } - - @Provides - @AppScope - public DatabaseOpener getDatabaseOpener(AndroidDatabaseOpener opener) - { - return opener; - } -} - diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/HabitsModule.kt b/uhabits-android/src/main/java/org/isoron/uhabits/HabitsModule.kt new file mode 100644 index 000000000..adbb32a11 --- /dev/null +++ b/uhabits-android/src/main/java/org/isoron/uhabits/HabitsModule.kt @@ -0,0 +1,93 @@ +/* + * Copyright (C) 2017 Álinson Santos Xavier + * + * This file is part of Loop Habit Tracker. + * + * Loop Habit Tracker is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. + * + * Loop Habit Tracker is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + +package org.isoron.uhabits + +import dagger.* +import org.isoron.uhabits.core.* +import org.isoron.uhabits.core.commands.* +import org.isoron.uhabits.core.database.* +import org.isoron.uhabits.core.models.* +import org.isoron.uhabits.core.models.sqlite.* +import org.isoron.uhabits.core.preferences.* +import org.isoron.uhabits.core.reminders.* +import org.isoron.uhabits.core.tasks.* +import org.isoron.uhabits.core.ui.* +import org.isoron.uhabits.database.* +import org.isoron.uhabits.intents.* +import org.isoron.uhabits.notifications.* +import org.isoron.uhabits.preferences.* +import org.isoron.uhabits.utils.* + +@Module +class HabitsModule { + @Provides + @AppScope + fun getPreferences(storage: SharedPreferencesStorage): Preferences { + return Preferences(storage) + } + + @Provides + @AppScope + fun getReminderScheduler( + sys: IntentScheduler, + commandRunner: CommandRunner, + habitList: HabitList + ): ReminderScheduler { + return ReminderScheduler(commandRunner, habitList, sys) + } + + @Provides + @AppScope + fun getTray( + taskRunner: TaskRunner, + commandRunner: CommandRunner, + preferences: Preferences, + screen: AndroidNotificationTray + ): NotificationTray { + return NotificationTray(taskRunner, commandRunner, preferences, screen) + } + + @Provides + @AppScope + fun getWidgetPreferences( + storage: SharedPreferencesStorage + ): WidgetPreferences { + return WidgetPreferences(storage) + } + + @Provides + @AppScope + fun getModelFactory(): ModelFactory { + return SQLModelFactory(AndroidDatabase(DatabaseUtils.openDatabase())) + } + + @Provides + @AppScope + fun getHabitList(list: SQLiteHabitList): HabitList { + return list + } + + @Provides + @AppScope + fun getDatabaseOpener(opener: AndroidDatabaseOpener): DatabaseOpener { + return opener + } +} + diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/preferences/SharedPreferencesStorage.java b/uhabits-android/src/main/java/org/isoron/uhabits/preferences/SharedPreferencesStorage.java deleted file mode 100644 index 7464a6992..000000000 --- a/uhabits-android/src/main/java/org/isoron/uhabits/preferences/SharedPreferencesStorage.java +++ /dev/null @@ -1,139 +0,0 @@ -/* - * Copyright (C) 2016 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.uhabits.preferences; - -import android.content.*; -import android.preference.*; -import android.support.annotation.*; - -import org.isoron.androidbase.*; -import org.isoron.uhabits.R; -import org.isoron.uhabits.core.*; -import org.isoron.uhabits.core.preferences.*; - -import javax.inject.*; - -@AppScope -public class SharedPreferencesStorage - implements SharedPreferences.OnSharedPreferenceChangeListener, - Preferences.Storage -{ - @NonNull - private SharedPreferences sharedPrefs; - - @Nullable - private Preferences preferences; - - @Inject - public SharedPreferencesStorage(@AppContext Context context) - { - sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context); - sharedPrefs.registerOnSharedPreferenceChangeListener(this); - PreferenceManager.setDefaultValues(context, R.xml.preferences, false); - } - - public void clear() - { - sharedPrefs.edit().clear().apply(); - } - - @Override - public boolean getBoolean(String key, boolean defValue) - { - return sharedPrefs.getBoolean(key, defValue); - } - - @Override - public int getInt(String key, int defValue) - { - return sharedPrefs.getInt(key, defValue); - } - - @Override - public long getLong(String key, int defValue) - { - return sharedPrefs.getLong(key, defValue); - } - - @Override - public String getString(String key, String defValue) - { - return sharedPrefs.getString(key, defValue); - } - - @Override - public void onAttached(Preferences preferences) - { - this.preferences = preferences; - } - - @Override - public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, - String key) - { - if(preferences == null) return; - sharedPreferences.unregisterOnSharedPreferenceChangeListener(this); - switch (key) - { - case "pref_checkmark_reverse_order": - preferences.setCheckmarkSequenceReversed(getBoolean(key, false)); - break; - - case "pref_sticky_notifications": - preferences.setNotificationsSticky(getBoolean(key, false)); - break; - - case "pref_feature_sync": - preferences.setSyncEnabled(getBoolean(key, false)); - break; - } - sharedPreferences.registerOnSharedPreferenceChangeListener(this); - } - - @Override - public void putBoolean(String key, boolean value) - { - sharedPrefs.edit().putBoolean(key, value).apply(); - } - - @Override - public void putInt(String key, int value) - { - sharedPrefs.edit().putInt(key, value).apply(); - } - - @Override - public void putLong(String key, long value) - { - sharedPrefs.edit().putLong(key, value).apply(); - } - - @Override - public void putString(String key, String value) - { - sharedPrefs.edit().putString(key, value).apply(); - } - - @Override - public void remove(String key) - { - sharedPrefs.edit().remove(key).apply(); - } -} diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/preferences/SharedPreferencesStorage.kt b/uhabits-android/src/main/java/org/isoron/uhabits/preferences/SharedPreferencesStorage.kt new file mode 100644 index 000000000..a971ea32d --- /dev/null +++ b/uhabits-android/src/main/java/org/isoron/uhabits/preferences/SharedPreferencesStorage.kt @@ -0,0 +1,93 @@ +/* + * Copyright (C) 2016 Álinson Santos Xavier + * + * This file is part of Loop Habit Tracker. + * + * Loop Habit Tracker is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. + * + * Loop Habit Tracker is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + +package org.isoron.uhabits.preferences + +import android.content.* +import android.preference.* +import org.isoron.androidbase.* +import org.isoron.uhabits.R +import org.isoron.uhabits.core.* +import org.isoron.uhabits.core.preferences.* +import javax.inject.* + +@AppScope +class SharedPreferencesStorage +@Inject constructor( + @AppContext context: Context +) : SharedPreferences.OnSharedPreferenceChangeListener, Preferences.Storage { + + private val sharedPrefs: SharedPreferences = + PreferenceManager.getDefaultSharedPreferences(context) + + private var preferences: Preferences? = null + + init { + sharedPrefs.registerOnSharedPreferenceChangeListener(this) + PreferenceManager.setDefaultValues(context, R.xml.preferences, false) + } + + override fun clear() = sharedPrefs.edit().clear().apply() + + override fun getBoolean(key: String, defValue: Boolean) = + sharedPrefs.getBoolean(key, defValue) + + override fun getInt(key: String, defValue: Int) = + sharedPrefs.getInt(key, defValue) + + override fun getLong(key: String, defValue: Int) = + sharedPrefs.getLong(key, defValue.toLong()) + + override fun getString(key: String, defValue: String): String = + sharedPrefs.getString(key, defValue) + + override fun onAttached(preferences: Preferences) { + this.preferences = preferences + } + + override fun putBoolean(key: String, value: Boolean) = + sharedPrefs.edit().putBoolean(key, value).apply() + + override fun putInt(key: String, value: Int) = + sharedPrefs.edit().putInt(key, value).apply() + + override fun putLong(key: String, value: Long) = + sharedPrefs.edit().putLong(key, value).apply() + + override fun putString(key: String, value: String) = + sharedPrefs.edit().putString(key, value).apply() + + override fun remove(key: String) = + sharedPrefs.edit().remove(key).apply() + + override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences, + key: String) { + val preferences = this.preferences ?: return + sharedPreferences.unregisterOnSharedPreferenceChangeListener(this) + when (key) { + "pref_checkmark_reverse_order" -> + preferences.isCheckmarkSequenceReversed = getBoolean(key, false) + "pref_sticky_notifications" -> + preferences.setNotificationsSticky(getBoolean(key, false)) + "pref_feature_sync" -> + preferences.isSyncEnabled = getBoolean(key, false) + } + sharedPreferences.registerOnSharedPreferenceChangeListener(this) + } +} diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/receivers/ConnectivityReceiver.java b/uhabits-android/src/main/java/org/isoron/uhabits/receivers/ConnectivityReceiver.java deleted file mode 100644 index 7b6468e06..000000000 --- a/uhabits-android/src/main/java/org/isoron/uhabits/receivers/ConnectivityReceiver.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright (C) 2016 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.uhabits.receivers; - -import android.content.*; -import android.net.*; -import android.support.annotation.*; - -import org.isoron.uhabits.*; -import org.isoron.uhabits.sync.*; - -import static android.content.Context.*; - -public class ConnectivityReceiver extends BroadcastReceiver -{ - @Override - public void onReceive(@Nullable Context context, @Nullable Intent intent) - { - if (context == null) return; - if (intent == null) return; - - HabitsApplicationComponent component = - ((HabitsApplication) context.getApplicationContext()).getComponent(); - - NetworkInfo networkInfo = - ((ConnectivityManager) context.getSystemService( - CONNECTIVITY_SERVICE)).getActiveNetworkInfo(); - - boolean isConnected = - (networkInfo != null && networkInfo.isConnectedOrConnecting()); - - SyncManager syncManager = component.getSyncManager(); - syncManager.onNetworkStatusChanged(isConnected); - } -} diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/receivers/ConnectivityReceiver.kt b/uhabits-android/src/main/java/org/isoron/uhabits/receivers/ConnectivityReceiver.kt new file mode 100644 index 000000000..0f861ae57 --- /dev/null +++ b/uhabits-android/src/main/java/org/isoron/uhabits/receivers/ConnectivityReceiver.kt @@ -0,0 +1,38 @@ +/* + * Copyright (C) 2016 Álinson Santos Xavier + * + * This file is part of Loop Habit Tracker. + * + * Loop Habit Tracker is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. + * + * Loop Habit Tracker is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + +package org.isoron.uhabits.receivers + +import android.content.* +import android.content.Context.* +import android.net.* +import org.isoron.uhabits.* + +class ConnectivityReceiver : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + if (context == null || intent == null) return + val app = context.applicationContext as HabitsApplication + val networkInfo = (context.getSystemService(CONNECTIVITY_SERVICE) + as ConnectivityManager).activeNetworkInfo + val isConnected = (networkInfo != null) && + networkInfo.isConnectedOrConnecting + val syncManager = app.component.syncManager + syncManager.onNetworkStatusChanged(isConnected) + } +} diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/utils/DatabaseUtils.java b/uhabits-android/src/main/java/org/isoron/uhabits/utils/DatabaseUtils.java index 6ec69dde0..8f99eb42d 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/utils/DatabaseUtils.java +++ b/uhabits-android/src/main/java/org/isoron/uhabits/utils/DatabaseUtils.java @@ -76,7 +76,7 @@ public abstract class DatabaseUtils public static String getDatabaseFilename() { String databaseFilename = Config.DATABASE_FILENAME; - if (HabitsApplication.isTestMode()) databaseFilename = "test.db"; + if (HabitsApplication.Companion.isTestMode()) databaseFilename = "test.db"; return databaseFilename; }