diff --git a/Habitica/build.gradle b/Habitica/build.gradle index d846d6971..d5035923b 100644 --- a/Habitica/build.gradle +++ b/Habitica/build.gradle @@ -5,12 +5,12 @@ plugins { id 'com.google.gms.google-services' id 'com.google.firebase.crashlytics' - id 'realm-android' id 'androidx.navigation.safeargs' id 'com.google.firebase.firebase-perf' } apply plugin: 'kotlin-android' +apply plugin: "realm-android" repositories { mavenLocal() diff --git a/build.gradle b/build.gradle index 2dfd25719..7e5ecde9f 100644 --- a/build.gradle +++ b/build.gradle @@ -31,14 +31,14 @@ buildscript { mavenCentral() } dependencies { - classpath 'com.android.tools.build:gradle:7.2.1' + classpath 'com.android.tools.build:gradle:7.1.3' classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' classpath 'com.google.gms:google-services:4.3.13' classpath 'com.google.firebase:firebase-crashlytics-gradle:2.9.1' - classpath "io.realm:realm-gradle-plugin:10.10.1" + classpath "io.realm:realm-gradle-plugin:10.11.0" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "io.gitlab.arturbosch.detekt:detekt-gradle-plugin:1.19.0" - classpath "androidx.navigation:navigation-safe-args-gradle-plugin:2.5.0-rc02" + classpath "androidx.navigation:navigation-safe-args-gradle-plugin:2.5.0" classpath 'com.google.firebase:perf-plugin:1.4.1' classpath "com.google.dagger:hilt-android-gradle-plugin:$daggerhilt_version" } diff --git a/common/src/main/java/com/habitrpg/common/habitica/helpers/RecyclerViewEmptySupport.kt b/common/src/main/java/com/habitrpg/common/habitica/helpers/RecyclerViewEmptySupport.kt index e88db2736..871a7145e 100644 --- a/common/src/main/java/com/habitrpg/common/habitica/helpers/RecyclerViewEmptySupport.kt +++ b/common/src/main/java/com/habitrpg/common/habitica/helpers/RecyclerViewEmptySupport.kt @@ -39,6 +39,8 @@ class FailedViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { } } +class HolderViewHolder(itemView: View): RecyclerView.ViewHolder(itemView) + class EmptyViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { private val binding = EmptyItemBinding.bind(itemView) @@ -66,6 +68,7 @@ class EmptyViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { class RecyclerViewStateAdapter(val showLoadingAsEmpty: Boolean = false) : RecyclerView.Adapter() { var onRefresh: (() -> Unit)? = null + var emptyViewBuilder: (() -> View)? = null var emptyItem: EmptyItem? = null set(value) { field = value @@ -90,7 +93,11 @@ class RecyclerViewStateAdapter(val showLoadingAsEmpty: Boolean = false) : Recycl object : RecyclerView.ViewHolder(view) {} } 1 -> FailedViewHolder(parent.inflate(R.layout.failed_item)) - else -> EmptyViewHolder(parent.inflate(R.layout.empty_item)) + else ->if (emptyViewBuilder != null) { + HolderViewHolder(emptyViewBuilder?.invoke() ?: View(parent.context)) + } else { + EmptyViewHolder(parent.inflate(R.layout.empty_item)) + } } } diff --git a/version.properties b/version.properties index 872b2b01f..2c9269b28 100644 --- a/version.properties +++ b/version.properties @@ -1,2 +1,2 @@ NAME=4.0 -CODE=4160 \ No newline at end of file +CODE=4180 \ No newline at end of file diff --git a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/activities/MainActivity.kt b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/activities/MainActivity.kt index db0a4b284..746aa6de7 100644 --- a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/activities/MainActivity.kt +++ b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/activities/MainActivity.kt @@ -145,7 +145,6 @@ class MainActivity : BaseActivity() { } private fun openTaskFormActivity() { - throw RuntimeException("WEAR TEST") openTaskForm.launch(Intent(this, TaskFormActivity::class.java)) } diff --git a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/activities/TaskListActivity.kt b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/activities/TaskListActivity.kt index 62ce9de45..20fce3a98 100644 --- a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/activities/TaskListActivity.kt +++ b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/activities/TaskListActivity.kt @@ -9,7 +9,7 @@ import androidx.activity.viewModels import androidx.wear.widget.WearableLinearLayoutManager import com.habitrpg.android.habitica.R import com.habitrpg.android.habitica.databinding.ActivityTasklistBinding -import com.habitrpg.common.habitica.helpers.EmptyItem +import com.habitrpg.android.habitica.databinding.EmptyTaskListBinding import com.habitrpg.common.habitica.models.responses.TaskDirection import com.habitrpg.common.habitica.models.responses.TaskScoringResult import com.habitrpg.common.habitica.models.tasks.TaskType @@ -32,6 +32,7 @@ class TaskListActivity : BaseActivity R.string.habit @@ -52,7 +55,8 @@ class TaskListActivity : BaseActivity() { +open class TaskListAdapter : RecyclerView.Adapter(), BaseAdapter { var title: String = "" var onTaskScore: ((Task) -> Unit)? = null var onTaskTapped:((Task) -> Unit)? = null @@ -18,6 +18,11 @@ open class TaskListAdapter : RecyclerView.Adapter() { field = value notifyDataSetChanged() } + + override fun hasData(): Boolean { + return data.isNotEmpty() + } + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { val inflater = parent.context.layoutInflater return HeaderSectionViewHolder(RowSectionHeaderBinding.inflate(inflater, parent, false).root) diff --git a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/views/HabiticaRecyclerView.kt b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/views/HabiticaRecyclerView.kt index 2e05254c1..a810daa5f 100644 --- a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/views/HabiticaRecyclerView.kt +++ b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/views/HabiticaRecyclerView.kt @@ -2,10 +2,12 @@ package com.habitrpg.wearos.habitica.ui.views import android.content.Context import android.util.AttributeSet +import android.view.View import androidx.wear.widget.WearableRecyclerView import com.habitrpg.common.habitica.helpers.EmptyItem import com.habitrpg.common.habitica.helpers.RecyclerViewState import com.habitrpg.common.habitica.helpers.RecyclerViewStateAdapter +import com.habitrpg.wearos.habitica.ui.adapters.BaseAdapter class HabiticaRecyclerView @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null @@ -13,7 +15,7 @@ class HabiticaRecyclerView @JvmOverloads constructor( override fun onAttachedToWindow() { super.onAttachedToWindow() post { - setPaddingRelative(0, (height * 0.1).toInt(), 0, (height * 0.25).toInt()) + setPadding(0, (height * 0.1).toInt(), 0, (height * 0.25).toInt()) scrollToPosition(0) } } @@ -46,6 +48,12 @@ class HabiticaRecyclerView @JvmOverloads constructor( emptyAdapter.emptyItem = value } + var emptyViewBuilder: (() -> View)? + get() = emptyAdapter.emptyViewBuilder + set(value) { + emptyAdapter.emptyViewBuilder = value + } + private var actualAdapter: Adapter<*>? = null private val emptyAdapter = RecyclerViewStateAdapter(true) @@ -65,7 +73,11 @@ class HabiticaRecyclerView @JvmOverloads constructor( internal fun updateState(isInitial: Boolean = false) { state = if (actualAdapter != null && !isInitial) { - val emptyViewVisible = actualAdapter?.itemCount == 0 + val emptyViewVisible = if (actualAdapter is BaseAdapter) { + (actualAdapter as? BaseAdapter)?.hasData() != true + } else { + actualAdapter?.itemCount == 0 + } if (emptyViewVisible) { RecyclerViewState.EMPTY } else { diff --git a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/views/HabiticaScrollView.kt b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/views/HabiticaScrollView.kt index 56268e902..822578f7a 100644 --- a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/views/HabiticaScrollView.kt +++ b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/views/HabiticaScrollView.kt @@ -5,6 +5,7 @@ import android.content.res.Resources import android.util.AttributeSet import androidx.core.view.children import androidx.core.widget.NestedScrollView +import com.habitrpg.common.habitica.extensions.dpToPx class HabiticaScrollView @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null @@ -13,19 +14,19 @@ class HabiticaScrollView @JvmOverloads constructor( override fun onLayout(changed: Boolean, l: Int, t: Int, r: Int, b: Int) { super.onLayout(changed, l, t, r, b) if (changed) { - if (context.resources.configuration.isScreenRound) { - val verticalPadding = - (0.146467f * Resources.getSystem().displayMetrics.widthPixels).toInt() - val horizontalPadding = - (0.1f * Resources.getSystem().displayMetrics.widthPixels).toInt() - children.firstOrNull() - ?.setPadding( - horizontalPadding, - verticalPadding, - horizontalPadding, - verticalPadding*2 - ) + val verticalPadding = if (context.resources.configuration.isScreenRound) { + (0.146467f * Resources.getSystem().displayMetrics.widthPixels).toInt() + } else { + 0 } + val horizontalPadding = 10.dpToPx(context) + children.firstOrNull() + ?.setPadding( + horizontalPadding, + verticalPadding, + horizontalPadding, + verticalPadding*2 + ) } } } \ No newline at end of file diff --git a/wearos/src/main/res/drawable-hdpi/cancel.png b/wearos/src/main/res/drawable-hdpi/cancel.png new file mode 100644 index 000000000..ff2d3452b Binary files /dev/null and b/wearos/src/main/res/drawable-hdpi/cancel.png differ diff --git a/wearos/src/main/res/drawable-hdpi/edit.png b/wearos/src/main/res/drawable-hdpi/edit.png new file mode 100644 index 000000000..98328401f Binary files /dev/null and b/wearos/src/main/res/drawable-hdpi/edit.png differ diff --git a/wearos/src/main/res/drawable-hdpi/google_icon.png b/wearos/src/main/res/drawable-hdpi/google_icon.png new file mode 100644 index 000000000..cc514fbda Binary files /dev/null and b/wearos/src/main/res/drawable-hdpi/google_icon.png differ diff --git a/wearos/src/main/res/drawable-hdpi/handoff.png b/wearos/src/main/res/drawable-hdpi/handoff.png new file mode 100644 index 000000000..d183eeb9f Binary files /dev/null and b/wearos/src/main/res/drawable-hdpi/handoff.png differ diff --git a/wearos/src/main/res/drawable-hdpi/ic_keyboard.png b/wearos/src/main/res/drawable-hdpi/ic_keyboard.png new file mode 100644 index 000000000..fdb41122a Binary files /dev/null and b/wearos/src/main/res/drawable-hdpi/ic_keyboard.png differ diff --git a/wearos/src/main/res/drawable-hdpi/logout.png b/wearos/src/main/res/drawable-hdpi/logout.png new file mode 100644 index 000000000..1dd0560ab Binary files /dev/null and b/wearos/src/main/res/drawable-hdpi/logout.png differ diff --git a/wearos/src/main/res/drawable-hdpi/save.png b/wearos/src/main/res/drawable-hdpi/save.png new file mode 100644 index 000000000..70bf3b46f Binary files /dev/null and b/wearos/src/main/res/drawable-hdpi/save.png differ diff --git a/wearos/src/main/res/drawable-mdpi/cancel.png b/wearos/src/main/res/drawable-mdpi/cancel.png new file mode 100644 index 000000000..2f9e6e4fb Binary files /dev/null and b/wearos/src/main/res/drawable-mdpi/cancel.png differ diff --git a/wearos/src/main/res/drawable-mdpi/edit.png b/wearos/src/main/res/drawable-mdpi/edit.png new file mode 100644 index 000000000..99bd70e56 Binary files /dev/null and b/wearos/src/main/res/drawable-mdpi/edit.png differ diff --git a/wearos/src/main/res/drawable-mdpi/google_icon.png b/wearos/src/main/res/drawable-mdpi/google_icon.png new file mode 100644 index 000000000..09592e3cc Binary files /dev/null and b/wearos/src/main/res/drawable-mdpi/google_icon.png differ diff --git a/wearos/src/main/res/drawable-mdpi/handoff.png b/wearos/src/main/res/drawable-mdpi/handoff.png new file mode 100644 index 000000000..616d6c726 Binary files /dev/null and b/wearos/src/main/res/drawable-mdpi/handoff.png differ diff --git a/wearos/src/main/res/drawable-mdpi/ic_keyboard.png b/wearos/src/main/res/drawable-mdpi/ic_keyboard.png new file mode 100644 index 000000000..9f22bc99e Binary files /dev/null and b/wearos/src/main/res/drawable-mdpi/ic_keyboard.png differ diff --git a/wearos/src/main/res/drawable-mdpi/logout.png b/wearos/src/main/res/drawable-mdpi/logout.png new file mode 100644 index 000000000..b0df4282b Binary files /dev/null and b/wearos/src/main/res/drawable-mdpi/logout.png differ diff --git a/wearos/src/main/res/drawable-mdpi/save.png b/wearos/src/main/res/drawable-mdpi/save.png new file mode 100644 index 000000000..be82c2f41 Binary files /dev/null and b/wearos/src/main/res/drawable-mdpi/save.png differ diff --git a/wearos/src/main/res/drawable-xhdpi/cancel.png b/wearos/src/main/res/drawable-xhdpi/cancel.png new file mode 100644 index 000000000..8d4d9a818 Binary files /dev/null and b/wearos/src/main/res/drawable-xhdpi/cancel.png differ diff --git a/wearos/src/main/res/drawable-xhdpi/google_icon.png b/wearos/src/main/res/drawable-xhdpi/google_icon.png new file mode 100644 index 000000000..a4fcab4bd Binary files /dev/null and b/wearos/src/main/res/drawable-xhdpi/google_icon.png differ diff --git a/wearos/src/main/res/drawable-xhdpi/handoff.png b/wearos/src/main/res/drawable-xhdpi/handoff.png new file mode 100644 index 000000000..0a0df3118 Binary files /dev/null and b/wearos/src/main/res/drawable-xhdpi/handoff.png differ diff --git a/wearos/src/main/res/drawable-xhdpi/ic_keyboard.png b/wearos/src/main/res/drawable-xhdpi/ic_keyboard.png new file mode 100644 index 000000000..40b2f54b1 Binary files /dev/null and b/wearos/src/main/res/drawable-xhdpi/ic_keyboard.png differ diff --git a/wearos/src/main/res/drawable-xhdpi/logout.png b/wearos/src/main/res/drawable-xhdpi/logout.png new file mode 100644 index 000000000..5bb2a3c3b Binary files /dev/null and b/wearos/src/main/res/drawable-xhdpi/logout.png differ diff --git a/wearos/src/main/res/drawable-xhdpi/save.png b/wearos/src/main/res/drawable-xhdpi/save.png new file mode 100644 index 000000000..c76a1d6ca Binary files /dev/null and b/wearos/src/main/res/drawable-xhdpi/save.png differ diff --git a/wearos/src/main/res/drawable-xxhdpi/cancel.png b/wearos/src/main/res/drawable-xxhdpi/cancel.png new file mode 100644 index 000000000..0f5a88540 Binary files /dev/null and b/wearos/src/main/res/drawable-xxhdpi/cancel.png differ diff --git a/wearos/src/main/res/drawable-xxhdpi/edit.png b/wearos/src/main/res/drawable-xxhdpi/edit.png new file mode 100644 index 000000000..ac6c76cd1 Binary files /dev/null and b/wearos/src/main/res/drawable-xxhdpi/edit.png differ diff --git a/wearos/src/main/res/drawable-xxhdpi/google_icon.png b/wearos/src/main/res/drawable-xxhdpi/google_icon.png new file mode 100644 index 000000000..2e9646388 Binary files /dev/null and b/wearos/src/main/res/drawable-xxhdpi/google_icon.png differ diff --git a/wearos/src/main/res/drawable-xxhdpi/handoff.png b/wearos/src/main/res/drawable-xxhdpi/handoff.png new file mode 100644 index 000000000..6852bf95e Binary files /dev/null and b/wearos/src/main/res/drawable-xxhdpi/handoff.png differ diff --git a/wearos/src/main/res/drawable-xxhdpi/ic_keyboard.png b/wearos/src/main/res/drawable-xxhdpi/ic_keyboard.png new file mode 100644 index 000000000..701381583 Binary files /dev/null and b/wearos/src/main/res/drawable-xxhdpi/ic_keyboard.png differ diff --git a/wearos/src/main/res/drawable-xxhdpi/logout.png b/wearos/src/main/res/drawable-xxhdpi/logout.png new file mode 100644 index 000000000..0f21b5810 Binary files /dev/null and b/wearos/src/main/res/drawable-xxhdpi/logout.png differ diff --git a/wearos/src/main/res/drawable-xxhdpi/save.png b/wearos/src/main/res/drawable-xxhdpi/save.png new file mode 100644 index 000000000..bf70572ed Binary files /dev/null and b/wearos/src/main/res/drawable-xxhdpi/save.png differ diff --git a/wearos/src/main/res/drawable/cancel.xml b/wearos/src/main/res/drawable/cancel.xml deleted file mode 100644 index ce53ea724..000000000 --- a/wearos/src/main/res/drawable/cancel.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/wearos/src/main/res/drawable/daily_square.xml b/wearos/src/main/res/drawable/daily_square.xml index 954ecadf9..dfb2abba8 100644 --- a/wearos/src/main/res/drawable/daily_square.xml +++ b/wearos/src/main/res/drawable/daily_square.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/wearos/src/main/res/drawable/edit.xml b/wearos/src/main/res/drawable/edit.xml deleted file mode 100644 index faddfce42..000000000 --- a/wearos/src/main/res/drawable/edit.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - diff --git a/wearos/src/main/res/drawable/google_icon.xml b/wearos/src/main/res/drawable/google_icon.xml deleted file mode 100644 index 25d3aa10c..000000000 --- a/wearos/src/main/res/drawable/google_icon.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - diff --git a/wearos/src/main/res/drawable/ic_keyboard.xml b/wearos/src/main/res/drawable/ic_keyboard.xml deleted file mode 100644 index 402bc4e09..000000000 --- a/wearos/src/main/res/drawable/ic_keyboard.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/wearos/src/main/res/drawable/logout.xml b/wearos/src/main/res/drawable/logout.xml deleted file mode 100644 index 1d6f5b75b..000000000 --- a/wearos/src/main/res/drawable/logout.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/wearos/src/main/res/drawable/save.xml b/wearos/src/main/res/drawable/save.xml deleted file mode 100644 index 5b1064846..000000000 --- a/wearos/src/main/res/drawable/save.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - diff --git a/wearos/src/main/res/layout/activity_rya.xml b/wearos/src/main/res/layout/activity_rya.xml index 9a996bbaa..ed3ca84d5 100644 --- a/wearos/src/main/res/layout/activity_rya.xml +++ b/wearos/src/main/res/layout/activity_rya.xml @@ -40,8 +40,7 @@ android:layout_height="wrap_content" android:text="@string/check_on_phone" android:drawableStart="@drawable/handoff" - style="@style/ChipButton.Icon" - android:gravity="center"/> + style="@style/ChipButton.Icon"/> + android:layout_marginBottom="7dp"/>