Skip to content

Commit 0ba161f

Browse files
authored
Add Widget Settings, Move Widget, Split out Login (#53)
- Split Login to Package - Move Widget to Package - Update WidgetStyle - Add WidgetConfiguration Activity - Update WidgetProvider for Configuration
1 parent e65e961 commit 0ba161f

28 files changed

+519
-35
lines changed

README.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,10 @@ For more planned features you can check out the internal [TODO.md](TODO.md).
124124

125125
This section briefly covers running and building in [Android Studio](#Android-Studio) and the [Command Line](#Command-Line).
126126

127+
> [!NOTE]
128+
> Building requires an `app/google-services.json` file.
129+
> See [Google Services](#Google-Services) for more info...
130+
127131
## Android Studio
128132

129133
1. Download and Install Android Studio.
@@ -218,6 +222,30 @@ _Note: you may have to uninstall before installing due to different certificate
218222

219223
For more details, see the [ADB Documentation](https://developer.android.com/tools/adb#move).
220224

225+
## Google Services
226+
227+
This app uses Firebase Google Services. Building requires a valid `google-services.json` file in the `app` directory.
228+
You must add `com.djangofiles.djangofiles.dev` to a Firebase campaign here: https://firebase.google.com/
229+
230+
To enable/disable Firebase DebugView use the following commands:
231+
232+
```shell
233+
# set
234+
adb shell setprop debug.firebase.analytics.app com.djangofiles.djangofiles.dev
235+
236+
# unset
237+
adb shell setprop debug.firebase.analytics.app .none.
238+
239+
# check
240+
adb shell getprop debug.firebase.analytics.app
241+
```
242+
243+
Only 1 app can be in debug mode at a time and this must be set every restart.
244+
245+
> [!NOTE]
246+
> Note: To disable/enable Analytics or Crashlytics set the `manifestPlaceholders`
247+
> in the [build.gradle.kts](app/build.gradle.kts) file to the respective values.
248+
221249
# Support
222250

223251
For general help or to request a feature, see:

app/build.gradle.kts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ android {
2525
versionName = "0.0.1"
2626

2727
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
28+
manifestPlaceholders["firebaseAnalyticsDeactivated"] = false
29+
manifestPlaceholders["firebaseCrashlyticsEnabled"] = true
2830
}
2931

3032
buildTypes {
@@ -35,13 +37,13 @@ android {
3537
getDefaultProguardFile("proguard-android-optimize.txt"),
3638
"proguard-rules.pro"
3739
)
38-
manifestPlaceholders["firebaseAnalyticsDeactivated"] = false
3940
}
4041

4142
debug {
4243
applicationIdSuffix = ".dev"
4344
versionNameSuffix = "-dev"
44-
manifestPlaceholders["firebaseAnalyticsDeactivated"] = false
45+
manifestPlaceholders["firebaseAnalyticsDeactivated"] = true
46+
manifestPlaceholders["firebaseCrashlyticsEnabled"] = false
4547

4648
// Debugging Only
4749
val localProperties = Properties().apply {

app/src/main/AndroidManifest.xml

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,19 @@
7070
<meta-data
7171
android:name="firebase_analytics_collection_deactivated"
7272
android:value="${firebaseAnalyticsDeactivated}" />
73+
<meta-data
74+
android:name="firebase_crashlytics_collection_enabled"
75+
android:value="${firebaseCrashlyticsEnabled}" />
7376

74-
<receiver android:name="WidgetProvider"
77+
<activity android:name=".widget.WidgetConfiguration"
78+
android:theme="@style/Theme.WidgetConfig.Transparent"
79+
android:exported="true">
80+
<intent-filter>
81+
<action android:name="android.appwidget.action.APPWIDGET_CONFIGURE"/>
82+
</intent-filter>
83+
</activity>
84+
85+
<receiver android:name=".widget.WidgetProvider"
7586
android:exported="false">
7687
<intent-filter>
7788
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />

app/src/main/java/com/djangofiles/djangofiles/DailyWorker.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import com.djangofiles.djangofiles.db.Server
1111
import com.djangofiles.djangofiles.db.ServerDao
1212
import com.djangofiles.djangofiles.db.ServerDatabase
1313
import com.djangofiles.djangofiles.ui.files.getAlbums
14+
import com.djangofiles.djangofiles.widget.WidgetProvider
1415

1516
class DailyWorker(appContext: Context, workerParams: WorkerParameters) :
1617
CoroutineWorker(appContext, workerParams) {
@@ -51,7 +52,7 @@ class DailyWorker(appContext: Context, workerParams: WorkerParameters) :
5152
Log.d("DailyWorker", "componentName: $componentName")
5253
val intent = Intent(AppWidgetManager.ACTION_APPWIDGET_UPDATE).setClassName(
5354
applicationContext.packageName,
54-
"com.djangofiles.djangofiles.WidgetProvider"
55+
"com.djangofiles.djangofiles.widget.WidgetProvider"
5556
).apply {
5657
val ids =
5758
AppWidgetManager.getInstance(applicationContext).getAppWidgetIds(componentName)

app/src/main/java/com/djangofiles/djangofiles/MainActivity.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ import com.djangofiles.djangofiles.db.Server
4747
import com.djangofiles.djangofiles.db.ServerDao
4848
import com.djangofiles.djangofiles.db.ServerDatabase
4949
import com.djangofiles.djangofiles.ui.home.HomeViewModel
50+
import com.djangofiles.djangofiles.widget.WidgetProvider
5051
import kotlinx.coroutines.Dispatchers
5152
import kotlinx.coroutines.launch
5253
import kotlinx.coroutines.withContext
@@ -234,9 +235,9 @@ class MainActivity : AppCompatActivity() {
234235
} else {
235236
val handled = NavigationUI.onNavDestinationSelected(menuItem, navController)
236237
Log.d("Drawer", "ELSE - handled: $handled")
237-
if (handled) {
238-
binding.drawerLayout.closeDrawers()
239-
}
238+
//if (handled) {
239+
binding.drawerLayout.closeDrawers()
240+
//}
240241
handled
241242
}
242243
}

app/src/main/java/com/djangofiles/djangofiles/ui/settings/AuthorizeFragment.kt renamed to app/src/main/java/com/djangofiles/djangofiles/ui/login/AuthorizeFragment.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.djangofiles.djangofiles.ui.settings
1+
package com.djangofiles.djangofiles.ui.login
22

33
import android.content.Context
44
import android.content.Context.MODE_PRIVATE

app/src/main/java/com/djangofiles/djangofiles/ui/settings/LoginFragment.kt renamed to app/src/main/java/com/djangofiles/djangofiles/ui/login/LoginFragment.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.djangofiles.djangofiles.ui.settings
1+
package com.djangofiles.djangofiles.ui.login
22

33
import android.content.Intent
44
import android.os.Bundle
@@ -25,8 +25,8 @@ class LoginFragment : Fragment() {
2525
private var _binding: FragmentLoginBinding? = null
2626
private val binding get() = _binding!!
2727

28-
//private val viewModel: SettingsViewModel by viewModels()
29-
private val viewModel: SettingsViewModel by activityViewModels()
28+
//private val viewModel: LoginViewModel by viewModels()
29+
private val viewModel: LoginViewModel by activityViewModels()
3030

3131
override fun onCreate(savedInstanceState: Bundle?) {
3232
super.onCreate(savedInstanceState)

app/src/main/java/com/djangofiles/djangofiles/ui/settings/LoginTwoFragment.kt renamed to app/src/main/java/com/djangofiles/djangofiles/ui/login/LoginTwoFragment.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.djangofiles.djangofiles.ui.settings
1+
package com.djangofiles.djangofiles.ui.login
22

33
import android.content.Context.MODE_PRIVATE
44
import android.content.Intent
@@ -36,8 +36,8 @@ class LoginTwoFragment : Fragment() {
3636
private var _binding: FragmentLoginTwoBinding? = null
3737
private val binding get() = _binding!!
3838

39-
//private val viewModel: SettingsViewModel by viewModels()
40-
private val viewModel: SettingsViewModel by activityViewModels()
39+
//private val viewModel: LoginViewModel by viewModels()
40+
private val viewModel: LoginViewModel by activityViewModels()
4141

4242
override fun onCreate(savedInstanceState: Bundle?) {
4343
super.onCreate(savedInstanceState)

app/src/main/java/com/djangofiles/djangofiles/ui/settings/SettingsViewModel.kt renamed to app/src/main/java/com/djangofiles/djangofiles/ui/login/LoginViewModel.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
package com.djangofiles.djangofiles.ui.settings
1+
package com.djangofiles.djangofiles.ui.login
22

33
import androidx.lifecycle.MutableLiveData
44
import androidx.lifecycle.ViewModel
55
import com.djangofiles.djangofiles.ServerApi
66

77
//import androidx.databinding.Bindable
88

9-
class SettingsViewModel : ViewModel() {
9+
class LoginViewModel : ViewModel() {
1010
val hostname = MutableLiveData<String>()
1111
val siteName = MutableLiveData<String>()
1212
val authMethods = MutableLiveData<List<ServerApi.Methods>>()

app/src/main/java/com/djangofiles/djangofiles/ui/settings/SettingsFragment.kt

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,23 @@ class SettingsFragment : PreferenceFragmentCompat() {
154154
}
155155
buildServerList()
156156

157+
// Widget Settings
158+
findPreference<Preference>("open_widget_settings")?.setOnPreferenceClickListener {
159+
Log.d("open_widget_settings", "setOnPreferenceClickListener")
160+
findNavController().navigate(R.id.nav_item_settings_action_widget)
161+
//findNavController().navigate(
162+
// R.id.nav_item_settings_action_widget,
163+
// null,
164+
// NavOptions.Builder()
165+
// .setEnterAnim(R.anim.slide_in_left)
166+
// .setExitAnim(R.anim.slide_out_left)
167+
// .setPopEnterAnim(R.anim.slide_in_right)
168+
// .setPopExitAnim(R.anim.slide_out_right)
169+
// .build()
170+
//)
171+
false
172+
}
173+
157174
// Toggle Analytics
158175
val toggleAnalytics = findPreference<SwitchPreferenceCompat>("analytics_enabled")
159176
toggleAnalytics?.setOnPreferenceChangeListener { _, newValue ->
@@ -308,11 +325,11 @@ class SettingsFragment : PreferenceFragmentCompat() {
308325
"Feedback Sent. Thank You!"
309326
} else {
310327
sendButton.isEnabled = true
311-
//val params = Bundle().apply {
312-
// putString("message", response.message())
313-
// putString("code", response.code().toString())
314-
//}
315-
//Firebase.analytics.logEvent("feedback_failed", params)
328+
val params = Bundle().apply {
329+
putString("message", response.message())
330+
putString("code", response.code().toString())
331+
}
332+
Firebase.analytics.logEvent("send_feedback_failed", params)
316333
"Error: ${response.code()}"
317334
}
318335
Log.d("showFeedbackDialog", "msg: $msg")

0 commit comments

Comments
 (0)