From addb407e98acfb2b1da89626bb6d4204d4396e5e Mon Sep 17 00:00:00 2001 From: Gijs van Veen Date: Fri, 2 Sep 2022 17:28:48 +0200 Subject: [PATCH] Version 1.4.0 Fixes problems with deserializing unknown enum properties Adds support in Example for deleting vehicles while a session is active & adds option to display multiple vehicles / addresses --- README.md | 2 +- example/build.gradle.kts | 2 + .../example/activity/ConnectionsActivity.kt | 6 + .../sdk/example/adapter/ButtonListAdapter.kt | 59 ++++++ .../adapter/ConnectSessionViewModelAdapter.kt | 61 ++++++ .../GroupedConnectSessionViewModelAdapter.kt | 63 ++++++ .../com/jedlix/sdk/example/model/Button.kt | 5 +- .../sdk/example/viewModel/ChargerViewModel.kt | 37 ++++ .../viewModel/ChargingLocationViewModel.kt | 47 +++++ .../viewModel/ConnectSessionViewModel.kt | 29 +++ .../example/viewModel/ConnectionsViewModel.kt | 188 +++++++----------- .../sdk/example/viewModel/VehicleViewModel.kt | 37 ++++ .../main/res/layout/activity_connections.xml | 98 +++++---- .../src/main/res/layout/view_button_row.xml | 31 +++ .../view_connect_session_view_model_row.xml | 50 +++++ ...grouped_connect_session_view_model_row.xml | 50 +++++ gradle.properties | 2 +- sdk/src/main/java/com/jedlix/sdk/JedlixSDK.kt | 2 +- .../java/com/jedlix/sdk/model/ChargeState.kt | 5 +- .../main/java/com/jedlix/sdk/model/Charger.kt | 2 +- .../java/com/jedlix/sdk/model/ChargerState.kt | 1 + .../com/jedlix/sdk/model/ChargingLocation.kt | 4 +- .../main/java/com/jedlix/sdk/model/Tariff.kt | 8 +- .../com/jedlix/sdk/model/TariffInterval.kt | 21 +- .../main/java/com/jedlix/sdk/model/Vehicle.kt | 33 ++- .../jedlix/sdk/model/VehicleChargeState.kt | 1 + .../networking/endpoint/ChargerDescriptor.kt | 2 +- .../endpoint/ChargingLocationDescriptor.kt | 2 +- .../endpoint/ConnectSessionsDescriptor.kt | 4 +- .../networking/endpoint/EndpointBuilder.kt | 2 +- .../jedlix/sdk/serializer/EnumSerializer.kt | 36 ++++ 31 files changed, 705 insertions(+), 185 deletions(-) create mode 100644 example/src/main/java/com/jedlix/sdk/example/adapter/ButtonListAdapter.kt create mode 100644 example/src/main/java/com/jedlix/sdk/example/adapter/ConnectSessionViewModelAdapter.kt create mode 100644 example/src/main/java/com/jedlix/sdk/example/adapter/GroupedConnectSessionViewModelAdapter.kt rename sdk/src/main/java/com/jedlix/sdk/model/ChargingLocationTariff.kt => example/src/main/java/com/jedlix/sdk/example/model/Button.kt (86%) create mode 100644 example/src/main/java/com/jedlix/sdk/example/viewModel/ChargerViewModel.kt create mode 100644 example/src/main/java/com/jedlix/sdk/example/viewModel/ChargingLocationViewModel.kt create mode 100644 example/src/main/java/com/jedlix/sdk/example/viewModel/ConnectSessionViewModel.kt create mode 100644 example/src/main/java/com/jedlix/sdk/example/viewModel/VehicleViewModel.kt create mode 100644 example/src/main/res/layout/view_button_row.xml create mode 100644 example/src/main/res/layout/view_connect_session_view_model_row.xml create mode 100644 example/src/main/res/layout/view_grouped_connect_session_view_model_row.xml create mode 100644 sdk/src/main/java/com/jedlix/sdk/serializer/EnumSerializer.kt diff --git a/README.md b/README.md index 6ea94b8..4118f2e 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ Add the following to your `build.gradle`: ```groovy dependencies { - implementation("com.jedlix:sdk:1.2.0") + implementation("com.jedlix:sdk:1.4.0") } ``` diff --git a/example/build.gradle.kts b/example/build.gradle.kts index f3d7aea..b60fa5f 100644 --- a/example/build.gradle.kts +++ b/example/build.gradle.kts @@ -1,6 +1,7 @@ plugins { id("com.android.application") kotlin("android") + kotlin("kapt") id("com.github.triplet.play") version "3.7.0" } @@ -46,6 +47,7 @@ android { } dataBinding { + isEnabled = true addKtx = true } diff --git a/example/src/main/java/com/jedlix/sdk/example/activity/ConnectionsActivity.kt b/example/src/main/java/com/jedlix/sdk/example/activity/ConnectionsActivity.kt index bf7c850..1c9c317 100644 --- a/example/src/main/java/com/jedlix/sdk/example/activity/ConnectionsActivity.kt +++ b/example/src/main/java/com/jedlix/sdk/example/activity/ConnectionsActivity.kt @@ -23,6 +23,9 @@ import androidx.activity.viewModels import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.lifecycleScope import com.jedlix.sdk.connectSession.registerConnectSessionManager +import com.jedlix.sdk.example.adapter.ButtonListAdapter +import com.jedlix.sdk.example.adapter.ConnectSessionViewModelAdapter +import com.jedlix.sdk.example.adapter.GroupedConnectSessionViewModelAdapter import com.jedlix.sdk.example.databinding.ActivityConnectionsBinding import com.jedlix.sdk.example.viewModel.ConnectionsViewModel import kotlinx.coroutines.flow.collect @@ -47,6 +50,9 @@ class ConnectionsActivity : AppCompatActivity() { binding.viewModel = viewModel binding.lifecycleOwner = this + binding.vehicles.adapter = ConnectSessionViewModelAdapter(this) + binding.chargers.adapter = GroupedConnectSessionViewModelAdapter(this) + val connectSessionManager = registerConnectSessionManager { viewModel.reloadData() } diff --git a/example/src/main/java/com/jedlix/sdk/example/adapter/ButtonListAdapter.kt b/example/src/main/java/com/jedlix/sdk/example/adapter/ButtonListAdapter.kt new file mode 100644 index 0000000..49062fd --- /dev/null +++ b/example/src/main/java/com/jedlix/sdk/example/adapter/ButtonListAdapter.kt @@ -0,0 +1,59 @@ +/* + * Copyright 2022 Jedlix B.V. The Netherlands + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.jedlix.sdk.example.adapter + +import android.annotation.SuppressLint +import android.view.LayoutInflater +import android.view.ViewGroup +import androidx.databinding.BindingAdapter +import androidx.recyclerview.widget.RecyclerView +import com.jedlix.sdk.example.databinding.ViewButtonRowBinding +import com.jedlix.sdk.example.model.Button + +class ButtonListAdapter : RecyclerView.Adapter() { + + companion object { + @BindingAdapter("modelButtons") + @JvmStatic + fun bindModelButtons(recyclerView: RecyclerView, buttons: List