From 398408569bbb1a9e4e85fb5b285a1626ba187ebd Mon Sep 17 00:00:00 2001 From: Michal Polanski Date: Mon, 21 Oct 2024 22:18:32 +0200 Subject: [PATCH 1/8] Fix buttons titles on channels list --- ...kotlin-stdlib-2.0.0-commonMain-2bbUHA.klib | Bin 0 -> 140310 bytes ...otlin-stdlib-2.0.21-commonMain-WPEnbA.klib | Bin 0 -> 144473 bytes app/build.gradle.kts | 2 + .../data/model/chart/ChannelChartSets.kt | 2 +- .../android/data/model/general/ChannelBase.kt | 2 +- .../local/entity/ChannelBaseExtensions.kt | 2 +- .../data/source/local/entity/ChannelEntity.kt | 2 +- .../source/local/entity/ChannelGroupEntity.kt | 2 +- .../local/entity/complex/ChannelDataEntity.kt | 2 +- .../entity/complex/ChannelGroupDataEntity.kt | 2 +- .../data/source/remote/SuplaChannelConfig.kt | 2 +- .../org/supla/android/db/ChannelBase.java | 2 +- .../db/room/app/AppDatabaseConverters.kt | 2 +- .../org/supla/android/di/CoreSharedModule.kt | 34 ++++++++++ .../extensions/LocalizedStringExtensions.kt | 33 +++++++++ .../detailbase/history/ui/HistoryDetail.kt | 2 +- .../detailbase/standarddetail/ItemBundle.kt | 4 +- .../standarddetail/StandardDetailViewModel.kt | 2 +- .../general/SwitchGeneralViewModel.kt | 2 +- .../ThermostatDetailViewModel.kt | 2 +- .../general/ThermostatGeneralViewModel.kt | 2 +- .../ui/layouts/SlideableListItemLayout.kt | 12 +++- .../android/ui/lists/BaseChannelsAdapter.kt | 17 ++--- .../android/ui/lists/BaseListViewModel.kt | 2 +- .../DeleteChannelMeasurementsUseCase.kt | 2 +- .../GetChannelDefaultCaptionUseCase.kt | 2 +- .../channel/GetChannelStateUseCase.kt | 4 +- ...ithChildrenMeasurementsDateRangeUseCase.kt | 2 +- ...dChannelWithChildrenMeasurementsUseCase.kt | 2 +- .../GpmValueStringProvider.kt | 2 +- ...midityAndTemperatureValueStringProvider.kt | 2 +- .../valueprovider/DepthSensorValueProvider.kt | 2 +- .../DistanceSensorValueProvider.kt | 2 +- .../ElectricityMeterValueProvider.kt | 2 +- .../channel/valueprovider/GpmValueProvider.kt | 2 +- .../HumidityAndTemperatureValueProvider.kt | 2 +- .../ImpulseCounterValueProvider.kt | 2 +- ...SwitchWithElectricityMeterValueProvider.kt | 2 +- .../valueprovider/ThermometerValueProvider.kt | 2 +- .../details/BaseDetailTypeProviderUseCase.kt | 2 +- .../ProvideChannelDetailTypeUseCase.kt | 2 +- .../UpdateChannelGroupTotalValueUseCase.kt | 2 +- .../usecases/icon/GetChannelIconUseCase.kt | 2 +- app/src/main/res/values-de/strings.xml | 6 +- app/src/main/res/values-pl/strings.xml | 4 ++ app/src/main/res/values/strings.xml | 4 ++ .../channellist/ChannelListViewModelTest.kt | 2 +- .../NoExtendedValueStateHandlerTest.kt | 2 +- .../gpmdetail/GpmDetailViewModelTest.kt | 2 +- .../switchdetail/SwitchDetailViewModelTest.kt | 2 +- .../SwitchGeneralViewModelTest.kt | 2 +- .../ThermostatDetailViewModelTest.kt | 2 +- .../general/ThermostatGeneralViewModelTest.kt | 2 +- .../curtain/CurtainViewModelTest.kt | 2 +- .../garagedoor/GarageDoorViewModelTest.kt | 2 +- .../ProjectorScreenViewModelTest.kt | 2 +- .../RollerShutterViewModelTest.kt | 2 +- .../roofwindow/RoofWindowViewModelTest.kt | 2 +- .../TerraceAwningViewModelTest.kt | 2 +- .../grouplist/GroupListViewModelTest.kt | 2 +- .../channel/ChannelActionUseCaseTest.kt | 2 +- .../CreateProfileChannelsListUseCaseTest.kt | 2 +- .../DeleteChannelMeasurementsUseCaseTest.kt | 2 +- .../channel/GetChannelCaptionUseCaseTest.kt | 2 +- .../channel/GetChannelStateUseCaseTest.kt | 2 +- .../GetChannelValueStringUseCaseTest.kt | 2 +- .../channel/GetChannelValueUseCaseTest.kt | 2 +- .../channel/GroupActionUseCaseTest.kt | 2 +- .../channel/LoadChannelConfigUseCaseTest.kt | 2 +- ...ChannelMeasurementsDataRangeUseCaseTest.kt | 2 +- .../LoadChannelMeasurementsUseCaseTest.kt | 2 +- ...hildrenMeasurementsDateRangeUseCaseTest.kt | 2 +- ...nnelWithChildrenMeasurementsUseCaseTest.kt | 2 +- .../channel/UpdateChannelUseCaseTest.kt | 2 +- .../DepthSensorValueProviderTest.kt | 2 +- .../valueprovider/GpmValueProviderTest.kt | 2 +- ...HumidityAndTemperatureValueProviderTest.kt | 2 +- .../ThermometerValueProviderTest.kt | 2 +- .../ProvideChannelDetailTypeUseCaseTest.kt | 2 +- .../ProvideGroupDetailTypeUseCaseTest.kt | 2 +- .../GetGroupActivePercentageUseCaseTest.kt | 2 +- .../ReadGroupTiltingDetailsUseCaseTest.kt | 2 +- ...UpdateChannelGroupTotalValueUseCaseTest.kt | 2 +- .../icon/GetChannelIconUseCaseTest.kt | 2 +- ...renToIconValueItemUpdateEventMapperTest.kt | 2 +- ...ildrenToThermostatUpdateEventMapperTest.kt | 2 +- .../CreateTemperaturesListUseCaseTest.kt | 2 +- build.gradle.kts | 1 + settings.gradle.kts | 3 +- shared-core/.gitignore | 1 + shared-core/build.gradle.kts | 63 ++++++++++++++++++ .../core/shared/data}/SuplaChannelFunction.kt | 2 +- .../shared/infrastructure/LocalizedString.kt | 29 ++++++++ .../usecase/GetChannelActionStringUseCase.kt | 63 ++++++++++++++++++ 94 files changed, 338 insertions(+), 94 deletions(-) create mode 100644 .kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.kotlin-kotlin-stdlib-2.0.0-commonMain-2bbUHA.klib create mode 100644 .kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.kotlin-kotlin-stdlib-2.0.21-commonMain-WPEnbA.klib create mode 100644 app/src/main/java/org/supla/android/di/CoreSharedModule.kt create mode 100644 app/src/main/java/org/supla/android/extensions/LocalizedStringExtensions.kt create mode 100644 shared-core/.gitignore create mode 100644 shared-core/build.gradle.kts rename {app/src/main/java/org/supla/android/data/source/remote/channel => shared-core/src/commonMain/kotlin/org/supla/core/shared/data}/SuplaChannelFunction.kt (98%) create mode 100644 shared-core/src/commonMain/kotlin/org/supla/core/shared/infrastructure/LocalizedString.kt create mode 100644 shared-core/src/commonMain/kotlin/org/supla/core/shared/usecase/GetChannelActionStringUseCase.kt diff --git a/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.kotlin-kotlin-stdlib-2.0.0-commonMain-2bbUHA.klib b/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.kotlin-kotlin-stdlib-2.0.0-commonMain-2bbUHA.klib new file mode 100644 index 0000000000000000000000000000000000000000..ed256742287bb397a1ccb0a087f255661c73c958 GIT binary patch literal 140310 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�G%orI*8NOBp4GraL8D8i;K@NIDc0n_CPc*VP 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 literal 0 HcmV?d00001 diff --git a/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.kotlin-kotlin-stdlib-2.0.21-commonMain-WPEnbA.klib b/.kotlin/metadata/kotlinTransformedMetadataLibraries/org.jetbrains.kotlin-kotlin-stdlib-2.0.21-commonMain-WPEnbA.klib new file mode 100644 index 0000000000000000000000000000000000000000..09432d6765dbb9f0bb78049c2de16e5d14f221c9 GIT binary patch literal 144473 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 vc+@u#5GeAJKWF`0|t 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 literal 0 HcmV?d00001 diff --git a/app/build.gradle.kts b/app/build.gradle.kts index a693ea341..b2a2b0f32 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -113,6 +113,8 @@ repositories { } dependencies { + implementation(project(":shared-core")) + implementation(Deps.Androidx.Core.Splash) implementation(Deps.Multidex) implementation(Deps.Androidx.Lifecycle.Extensions) diff --git a/app/src/main/java/org/supla/android/data/model/chart/ChannelChartSets.kt b/app/src/main/java/org/supla/android/data/model/chart/ChannelChartSets.kt index 0bc21bb40..e12446d90 100644 --- a/app/src/main/java/org/supla/android/data/model/chart/ChannelChartSets.kt +++ b/app/src/main/java/org/supla/android/data/model/chart/ChannelChartSets.kt @@ -19,7 +19,7 @@ package org.supla.android.data.model.chart import org.supla.android.core.ui.StringProvider import org.supla.android.data.source.local.entity.complex.ChannelDataEntity -import org.supla.android.data.source.remote.channel.SuplaChannelFunction +import org.supla.core.shared.data.SuplaChannelFunction data class ChannelChartSets( val remoteId: Int, diff --git a/app/src/main/java/org/supla/android/data/model/general/ChannelBase.kt b/app/src/main/java/org/supla/android/data/model/general/ChannelBase.kt index f1c307e43..0c9ac8bc8 100644 --- a/app/src/main/java/org/supla/android/data/model/general/ChannelBase.kt +++ b/app/src/main/java/org/supla/android/data/model/general/ChannelBase.kt @@ -17,7 +17,7 @@ package org.supla.android.data.model.general Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -import org.supla.android.data.source.remote.channel.SuplaChannelFunction +import org.supla.core.shared.data.SuplaChannelFunction interface ChannelBase { val id: Long? diff --git a/app/src/main/java/org/supla/android/data/source/local/entity/ChannelBaseExtensions.kt b/app/src/main/java/org/supla/android/data/source/local/entity/ChannelBaseExtensions.kt index 0e4a4cd0a..cb931ec6f 100644 --- a/app/src/main/java/org/supla/android/data/source/local/entity/ChannelBaseExtensions.kt +++ b/app/src/main/java/org/supla/android/data/source/local/entity/ChannelBaseExtensions.kt @@ -18,7 +18,7 @@ package org.supla.android.data.source.local.entity */ import org.supla.android.data.model.general.ChannelBase -import org.supla.android.data.source.remote.channel.SuplaChannelFunction +import org.supla.core.shared.data.SuplaChannelFunction fun ChannelBase.isHvacThermostat() = function == SuplaChannelFunction.HVAC_THERMOSTAT || diff --git a/app/src/main/java/org/supla/android/data/source/local/entity/ChannelEntity.kt b/app/src/main/java/org/supla/android/data/source/local/entity/ChannelEntity.kt index d84045f58..94797ac2b 100644 --- a/app/src/main/java/org/supla/android/data/source/local/entity/ChannelEntity.kt +++ b/app/src/main/java/org/supla/android/data/source/local/entity/ChannelEntity.kt @@ -26,8 +26,8 @@ import org.supla.android.data.source.local.entity.ChannelEntity.Companion.COLUMN import org.supla.android.data.source.local.entity.ChannelEntity.Companion.COLUMN_LOCATION_ID import org.supla.android.data.source.local.entity.ChannelEntity.Companion.COLUMN_PROFILE_ID import org.supla.android.data.source.local.entity.ChannelEntity.Companion.TABLE_NAME -import org.supla.android.data.source.remote.channel.SuplaChannelFunction import org.supla.android.lib.SuplaChannel +import org.supla.core.shared.data.SuplaChannelFunction @Entity( tableName = TABLE_NAME, diff --git a/app/src/main/java/org/supla/android/data/source/local/entity/ChannelGroupEntity.kt b/app/src/main/java/org/supla/android/data/source/local/entity/ChannelGroupEntity.kt index 7797a5bde..8c3121fe7 100644 --- a/app/src/main/java/org/supla/android/data/source/local/entity/ChannelGroupEntity.kt +++ b/app/src/main/java/org/supla/android/data/source/local/entity/ChannelGroupEntity.kt @@ -26,9 +26,9 @@ import org.supla.android.data.source.local.entity.ChannelGroupEntity.Companion.C import org.supla.android.data.source.local.entity.ChannelGroupEntity.Companion.COLUMN_PROFILE_ID import org.supla.android.data.source.local.entity.ChannelGroupEntity.Companion.COLUMN_REMOTE_ID import org.supla.android.data.source.local.entity.ChannelGroupEntity.Companion.TABLE_NAME -import org.supla.android.data.source.remote.channel.SuplaChannelFunction import org.supla.android.usecases.group.totalvalue.GroupTotalValue import org.supla.android.usecases.group.totalvalue.GroupValue +import org.supla.core.shared.data.SuplaChannelFunction @Entity( tableName = TABLE_NAME, diff --git a/app/src/main/java/org/supla/android/data/source/local/entity/complex/ChannelDataEntity.kt b/app/src/main/java/org/supla/android/data/source/local/entity/complex/ChannelDataEntity.kt index 18c68aa49..b754089e3 100644 --- a/app/src/main/java/org/supla/android/data/source/local/entity/complex/ChannelDataEntity.kt +++ b/app/src/main/java/org/supla/android/data/source/local/entity/complex/ChannelDataEntity.kt @@ -24,11 +24,11 @@ import org.supla.android.data.source.local.entity.ChannelEntity import org.supla.android.data.source.local.entity.ChannelExtendedValueEntity import org.supla.android.data.source.local.entity.ChannelValueEntity import org.supla.android.data.source.local.entity.LocationEntity -import org.supla.android.data.source.remote.channel.SuplaChannelFunction import org.supla.android.db.Channel import org.supla.android.db.ChannelExtendedValue import org.supla.android.db.ChannelValue import org.supla.android.lib.SuplaChannelExtendedValue +import org.supla.core.shared.data.SuplaChannelFunction data class ChannelDataEntity( @Embedded(prefix = "channel_") val channelEntity: ChannelEntity, diff --git a/app/src/main/java/org/supla/android/data/source/local/entity/complex/ChannelGroupDataEntity.kt b/app/src/main/java/org/supla/android/data/source/local/entity/complex/ChannelGroupDataEntity.kt index 250191a3f..79c123bb0 100644 --- a/app/src/main/java/org/supla/android/data/source/local/entity/complex/ChannelGroupDataEntity.kt +++ b/app/src/main/java/org/supla/android/data/source/local/entity/complex/ChannelGroupDataEntity.kt @@ -21,8 +21,8 @@ import androidx.room.Embedded import org.supla.android.data.model.general.ChannelDataBase import org.supla.android.data.source.local.entity.ChannelGroupEntity import org.supla.android.data.source.local.entity.LocationEntity -import org.supla.android.data.source.remote.channel.SuplaChannelFunction import org.supla.android.db.ChannelGroup +import org.supla.core.shared.data.SuplaChannelFunction data class ChannelGroupDataEntity( @Embedded(prefix = "group_") val channelGroupEntity: ChannelGroupEntity, diff --git a/app/src/main/java/org/supla/android/data/source/remote/SuplaChannelConfig.kt b/app/src/main/java/org/supla/android/data/source/remote/SuplaChannelConfig.kt index 65127c2f9..b099947c6 100644 --- a/app/src/main/java/org/supla/android/data/source/remote/SuplaChannelConfig.kt +++ b/app/src/main/java/org/supla/android/data/source/remote/SuplaChannelConfig.kt @@ -18,7 +18,7 @@ package org.supla.android.data.source.remote */ import org.supla.android.data.source.local.entity.ChannelEntity -import org.supla.android.data.source.remote.channel.SuplaChannelFunction +import org.supla.core.shared.data.SuplaChannelFunction enum class ChannelConfigType(val value: Int) { UNKNOWN(-1), diff --git a/app/src/main/java/org/supla/android/db/ChannelBase.java b/app/src/main/java/org/supla/android/db/ChannelBase.java index 407896d9e..001e27077 100644 --- a/app/src/main/java/org/supla/android/db/ChannelBase.java +++ b/app/src/main/java/org/supla/android/db/ChannelBase.java @@ -25,10 +25,10 @@ of the License, or (at your option) any later version. import org.supla.android.SuplaApp; import org.supla.android.ValuesFormatterProvider; import org.supla.android.data.ValuesFormatter; -import org.supla.android.data.source.remote.channel.SuplaChannelFunction; import org.supla.android.extensions.ContextExtensionsKt; import org.supla.android.lib.SuplaChannelBase; import org.supla.android.lib.SuplaConst; +import org.supla.core.shared.data.SuplaChannelFunction; public abstract class ChannelBase extends DbItem { diff --git a/app/src/main/java/org/supla/android/db/room/app/AppDatabaseConverters.kt b/app/src/main/java/org/supla/android/db/room/app/AppDatabaseConverters.kt index c3d20fe8f..e52e197f5 100644 --- a/app/src/main/java/org/supla/android/db/room/app/AppDatabaseConverters.kt +++ b/app/src/main/java/org/supla/android/db/room/app/AppDatabaseConverters.kt @@ -20,7 +20,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. import androidx.room.TypeConverter import org.supla.android.data.source.local.entity.ChannelRelationType import org.supla.android.data.source.remote.ChannelConfigType -import org.supla.android.data.source.remote.channel.SuplaChannelFunction +import org.supla.core.shared.data.SuplaChannelFunction import java.time.LocalDateTime import java.time.ZoneOffset import java.util.Date diff --git a/app/src/main/java/org/supla/android/di/CoreSharedModule.kt b/app/src/main/java/org/supla/android/di/CoreSharedModule.kt new file mode 100644 index 000000000..0363836fe --- /dev/null +++ b/app/src/main/java/org/supla/android/di/CoreSharedModule.kt @@ -0,0 +1,34 @@ +package org.supla.android.di +/* + Copyright (C) AC SOFTWARE SP. Z O.O. + + This program 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 2 + of the License, or (at your option) any later version. + + This program 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, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +import dagger.Module +import dagger.Provides +import dagger.hilt.InstallIn +import dagger.hilt.components.SingletonComponent +import org.supla.core.shared.usecase.GetChannelActionStringUseCase +import javax.inject.Singleton + +@Module +@InstallIn(SingletonComponent::class) +class CoreSharedModule { + + @Provides + @Singleton + fun provideGetChannelActionStringUseCase() = GetChannelActionStringUseCase() +} diff --git a/app/src/main/java/org/supla/android/extensions/LocalizedStringExtensions.kt b/app/src/main/java/org/supla/android/extensions/LocalizedStringExtensions.kt new file mode 100644 index 000000000..33465e959 --- /dev/null +++ b/app/src/main/java/org/supla/android/extensions/LocalizedStringExtensions.kt @@ -0,0 +1,33 @@ +package org.supla.android.extensions +/* + Copyright (C) AC SOFTWARE SP. Z O.O. + + This program 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 2 + of the License, or (at your option) any later version. + + This program 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, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +import org.supla.android.R +import org.supla.core.shared.infrastructure.LocalizedString + +val LocalizedString.resourceId: Int + get() = when (this) { + LocalizedString.GENERAL_TURN_ON -> R.string.channel_btn_on + LocalizedString.GENERAL_TURN_OFF -> R.string.channel_btn_off + LocalizedString.GENERAL_OPEN -> R.string.channel_btn_open + LocalizedString.GENERAL_CLOSE -> R.string.channel_btn_close + LocalizedString.GENERAL_SHUT -> R.string.channel_btn_shut + LocalizedString.GENERAL_REVEAL -> R.string.channel_btn_reveal + LocalizedString.GENERAL_COLLAPSE -> R.string.channel_btn_collapse + LocalizedString.GENERAL_EXPAND -> R.string.channel_btn_expand + } diff --git a/app/src/main/java/org/supla/android/features/details/detailbase/history/ui/HistoryDetail.kt b/app/src/main/java/org/supla/android/features/details/detailbase/history/ui/HistoryDetail.kt index f9e48f959..ba63eabd5 100644 --- a/app/src/main/java/org/supla/android/features/details/detailbase/history/ui/HistoryDetail.kt +++ b/app/src/main/java/org/supla/android/features/details/detailbase/history/ui/HistoryDetail.kt @@ -87,7 +87,6 @@ import org.supla.android.data.model.chart.style.ChartStyle import org.supla.android.data.model.chart.style.ThermometerChartStyle import org.supla.android.data.model.general.RangeValueType import org.supla.android.data.source.local.calendar.Hour -import org.supla.android.data.source.remote.channel.SuplaChannelFunction import org.supla.android.extensions.weekEnd import org.supla.android.extensions.weekStart import org.supla.android.features.details.detailbase.history.HistoryDetailViewState @@ -104,6 +103,7 @@ import org.supla.android.ui.views.charts.PieChart import org.supla.android.ui.views.tools.Shadow import org.supla.android.ui.views.tools.ShadowOrientation import org.supla.android.usecases.channel.valueformatter.HumidityValueFormatter +import org.supla.core.shared.data.SuplaChannelFunction import java.util.Date interface HistoryDetailProxy : BaseViewProxy { diff --git a/app/src/main/java/org/supla/android/features/details/detailbase/standarddetail/ItemBundle.kt b/app/src/main/java/org/supla/android/features/details/detailbase/standarddetail/ItemBundle.kt index 4309c5697..019fdda33 100644 --- a/app/src/main/java/org/supla/android/features/details/detailbase/standarddetail/ItemBundle.kt +++ b/app/src/main/java/org/supla/android/features/details/detailbase/standarddetail/ItemBundle.kt @@ -19,10 +19,10 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. import org.supla.android.data.source.local.entity.complex.ChannelDataEntity import org.supla.android.data.source.local.entity.complex.ChannelGroupDataEntity -import org.supla.android.data.source.remote.channel.SuplaChannelFunction -import org.supla.android.data.source.remote.channel.suplaFunction import org.supla.android.data.source.runtime.ItemType import org.supla.android.db.Channel +import org.supla.core.shared.data.SuplaChannelFunction +import org.supla.core.shared.data.suplaFunction import java.io.Serializable data class ItemBundle( diff --git a/app/src/main/java/org/supla/android/features/details/detailbase/standarddetail/StandardDetailViewModel.kt b/app/src/main/java/org/supla/android/features/details/detailbase/standarddetail/StandardDetailViewModel.kt index d0227eb58..80715e134 100644 --- a/app/src/main/java/org/supla/android/features/details/detailbase/standarddetail/StandardDetailViewModel.kt +++ b/app/src/main/java/org/supla/android/features/details/detailbase/standarddetail/StandardDetailViewModel.kt @@ -25,12 +25,12 @@ import org.supla.android.core.ui.StringProvider import org.supla.android.core.ui.ViewEvent import org.supla.android.core.ui.ViewState import org.supla.android.data.model.general.ChannelDataBase -import org.supla.android.data.source.remote.channel.SuplaChannelFunction import org.supla.android.data.source.runtime.ItemType import org.supla.android.events.UpdateEventsManager import org.supla.android.tools.SuplaSchedulers import org.supla.android.usecases.channel.ReadChannelByRemoteIdUseCase import org.supla.android.usecases.group.ReadChannelGroupByRemoteIdUseCase +import org.supla.core.shared.data.SuplaChannelFunction abstract class StandardDetailViewModel( private val readChannelByRemoteIdUseCase: ReadChannelByRemoteIdUseCase, diff --git a/app/src/main/java/org/supla/android/features/details/switchdetail/general/SwitchGeneralViewModel.kt b/app/src/main/java/org/supla/android/features/details/switchdetail/general/SwitchGeneralViewModel.kt index f6d56cb89..bccaef0ed 100644 --- a/app/src/main/java/org/supla/android/features/details/switchdetail/general/SwitchGeneralViewModel.kt +++ b/app/src/main/java/org/supla/android/features/details/switchdetail/general/SwitchGeneralViewModel.kt @@ -33,7 +33,6 @@ import org.supla.android.data.model.general.ChannelState import org.supla.android.data.model.general.hasElectricityMeter import org.supla.android.data.source.local.entity.complex.ChannelDataEntity import org.supla.android.data.source.local.entity.complex.ChannelGroupDataEntity -import org.supla.android.data.source.remote.channel.SuplaChannelFunction import org.supla.android.data.source.runtime.ItemType import org.supla.android.events.DownloadEventsManager import org.supla.android.extensions.ifTrue @@ -51,6 +50,7 @@ import org.supla.android.usecases.channel.electricitymeter.LoadElectricityMeterM import org.supla.android.usecases.client.ExecuteSimpleActionUseCase import org.supla.android.usecases.group.ReadChannelGroupByRemoteIdUseCase import org.supla.android.usecases.icon.GetChannelIconUseCase +import org.supla.core.shared.data.SuplaChannelFunction import java.util.Date import javax.inject.Inject diff --git a/app/src/main/java/org/supla/android/features/details/thermostatdetail/ThermostatDetailViewModel.kt b/app/src/main/java/org/supla/android/features/details/thermostatdetail/ThermostatDetailViewModel.kt index e629f259b..67efaf02c 100644 --- a/app/src/main/java/org/supla/android/features/details/thermostatdetail/ThermostatDetailViewModel.kt +++ b/app/src/main/java/org/supla/android/features/details/thermostatdetail/ThermostatDetailViewModel.kt @@ -23,7 +23,6 @@ import org.supla.android.core.ui.StringProvider import org.supla.android.data.model.general.ChannelDataBase import org.supla.android.data.source.local.entity.complex.ChannelDataEntity import org.supla.android.data.source.local.entity.complex.isHvacThermostat -import org.supla.android.data.source.remote.channel.SuplaChannelFunction import org.supla.android.data.source.remote.hvac.ThermostatSubfunction import org.supla.android.events.UpdateEventsManager import org.supla.android.features.details.detailbase.standarddetail.StandardDetailViewEvent @@ -33,6 +32,7 @@ import org.supla.android.tools.SuplaSchedulers import org.supla.android.usecases.channel.GetChannelCaptionUseCase import org.supla.android.usecases.channel.ReadChannelByRemoteIdUseCase import org.supla.android.usecases.group.ReadChannelGroupByRemoteIdUseCase +import org.supla.core.shared.data.SuplaChannelFunction import javax.inject.Inject @HiltViewModel diff --git a/app/src/main/java/org/supla/android/features/details/thermostatdetail/general/ThermostatGeneralViewModel.kt b/app/src/main/java/org/supla/android/features/details/thermostatdetail/general/ThermostatGeneralViewModel.kt index 32ce8207b..527f2db6f 100644 --- a/app/src/main/java/org/supla/android/features/details/thermostatdetail/general/ThermostatGeneralViewModel.kt +++ b/app/src/main/java/org/supla/android/features/details/thermostatdetail/general/ThermostatGeneralViewModel.kt @@ -39,7 +39,6 @@ import org.supla.android.data.source.local.entity.custom.ChannelWithChildren import org.supla.android.data.source.remote.ChannelConfigType import org.supla.android.data.source.remote.ConfigResult import org.supla.android.data.source.remote.SuplaDeviceConfig -import org.supla.android.data.source.remote.channel.SuplaChannelFunction import org.supla.android.data.source.remote.hvac.SuplaChannelHvacConfig import org.supla.android.data.source.remote.hvac.SuplaChannelWeeklyScheduleConfig import org.supla.android.data.source.remote.hvac.SuplaHvacMode @@ -68,6 +67,7 @@ import org.supla.android.usecases.channel.GetChannelValueUseCase import org.supla.android.usecases.channel.ReadChannelWithChildrenTreeUseCase import org.supla.android.usecases.icon.GetChannelIconUseCase import org.supla.android.usecases.thermostat.CreateTemperaturesListUseCase +import org.supla.core.shared.data.SuplaChannelFunction import java.util.Date import java.util.concurrent.TimeUnit import javax.inject.Inject diff --git a/app/src/main/java/org/supla/android/ui/layouts/SlideableListItemLayout.kt b/app/src/main/java/org/supla/android/ui/layouts/SlideableListItemLayout.kt index b4f688a17..0b7dc8142 100644 --- a/app/src/main/java/org/supla/android/ui/layouts/SlideableListItemLayout.kt +++ b/app/src/main/java/org/supla/android/ui/layouts/SlideableListItemLayout.kt @@ -21,12 +21,16 @@ import android.content.Context import android.util.AttributeSet import android.view.View import android.widget.LinearLayout +import androidx.appcompat.widget.AppCompatButton import dagger.hilt.android.AndroidEntryPoint import org.supla.android.Preferences import org.supla.android.R +import org.supla.android.extensions.resourceId import org.supla.android.ui.lists.SlideableItem import org.supla.android.ui.lists.SwapableListItem import org.supla.android.ui.lists.data.SlideableListItemData +import org.supla.core.shared.data.SuplaChannelFunction +import org.supla.core.shared.usecase.GetChannelActionStringUseCase import java.lang.Integer.min import javax.inject.Inject @@ -55,6 +59,9 @@ class SlideableListItemLayout @JvmOverloads constructor( @Inject lateinit var preferences: Preferences + @Inject + lateinit var getChannelActionStringUseCase: GetChannelActionStringUseCase + override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) { val desiredHeight = resources.getDimensionPixelSize(R.dimen.channel_layout_height) * getScaleFactor() @@ -96,8 +103,11 @@ class SlideableListItemLayout @JvmOverloads constructor( rightItem?.run { updateRightItemPosition(this) } } - fun bind(locationCaption: String) { + fun bind(locationCaption: String, function: SuplaChannelFunction) { this.locationCaption = locationCaption + + getChannelActionStringUseCase.leftButton(function)?.resourceId?.let { (leftItem as? AppCompatButton)?.setText(it) } + getChannelActionStringUseCase.rightButton(function)?.resourceId?.let { (rightItem as? AppCompatButton)?.setText(it) } } private fun updateLeftItemPosition(item: View) { diff --git a/app/src/main/java/org/supla/android/ui/lists/BaseChannelsAdapter.kt b/app/src/main/java/org/supla/android/ui/lists/BaseChannelsAdapter.kt index 0f37bb5fa..7a6c9affe 100644 --- a/app/src/main/java/org/supla/android/ui/lists/BaseChannelsAdapter.kt +++ b/app/src/main/java/org/supla/android/ui/lists/BaseChannelsAdapter.kt @@ -22,7 +22,6 @@ import android.view.LayoutInflater import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView.ViewHolder import org.supla.android.Preferences -import org.supla.android.R import org.supla.android.SuplaApp import org.supla.android.data.model.general.ChannelDataBase import org.supla.android.data.source.runtime.ItemType @@ -134,7 +133,7 @@ abstract class BaseChannelsAdapter( inner class ThermostatListItemViewHolder(val binding: LiMainThermostatItemBinding) : ViewHolder(binding.root) { fun bind(item: ListItem.HvacThermostatItem) { val data = item.toSlideableListItemData() as SlideableListItemData.Thermostat - binding.listItemRoot.bind(locationCaption = item.locationCaption) + binding.listItemRoot.bind(locationCaption = item.locationCaption, function = item.channelBase.function) binding.listItemContent.bind( itemType = ItemType.CHANNEL, remoteId = item.channel.remoteId, @@ -155,7 +154,7 @@ abstract class BaseChannelsAdapter( inner class IconValueListItemViewHolder(val binding: LiMainIconValueItemBinding) : ViewHolder(binding.root) { fun bind(item: ListItem.IconValueItem) { val data = item.toSlideableListItemData() as SlideableListItemData.Default - binding.listItemRoot.bind(locationCaption = item.locationCaption) + binding.listItemRoot.bind(locationCaption = item.locationCaption, function = item.channelBase.function) binding.listItemContent.bind( itemType = ItemType.CHANNEL, remoteId = item.channel.remoteId, @@ -174,7 +173,7 @@ abstract class BaseChannelsAdapter( inner class GpMeterListItemViewHolder(val binding: LiMainIconValueItemBinding) : ViewHolder(binding.root) { fun bind(item: ListItem.GeneralPurposeMeterItem) { val data = item.toSlideableListItemData() as SlideableListItemData.Default - binding.listItemRoot.bind(locationCaption = item.locationCaption) + binding.listItemRoot.bind(locationCaption = item.locationCaption, function = item.channelBase.function) binding.listItemContent.bind( itemType = ItemType.CHANNEL, remoteId = item.channel.remoteId, @@ -193,7 +192,7 @@ abstract class BaseChannelsAdapter( inner class GpMeasurementListItemViewHolder(val binding: LiMainIconValueItemBinding) : ViewHolder(binding.root) { fun bind(item: ListItem.GeneralPurposeMeasurementItem) { val data = item.toSlideableListItemData() as SlideableListItemData.Default - binding.listItemRoot.bind(locationCaption = item.locationCaption) + binding.listItemRoot.bind(locationCaption = item.locationCaption, function = item.channelBase.function) binding.listItemContent.bind( itemType = ItemType.CHANNEL, remoteId = item.channel.remoteId, @@ -212,7 +211,7 @@ abstract class BaseChannelsAdapter( inner class ShadingSystemListItemViewHolder(val binding: LiMainIconValueWithButtonsItemBinding) : ViewHolder(binding.root) { fun bind(item: ListItem.ShadingSystemItem) { val data = item.toSlideableListItemData() as SlideableListItemData.Default - binding.listItemRoot.bind(locationCaption = item.locationCaption) + binding.listItemRoot.bind(locationCaption = item.locationCaption, function = item.channelBase.function) binding.listItemContent.bind( itemType = ItemType.CHANNEL, remoteId = item.channel.remoteId, @@ -226,16 +225,14 @@ abstract class BaseChannelsAdapter( binding.listItemContent.setOnClickListener { listItemClickCallback(item.channel.remoteId) } binding.listItemContent.setOnLongClickListener { onLongPress(this) } binding.listItemLeftItem.setOnClickListener { onLeftButtonClick(item.channel.remoteId) } - binding.listItemLeftItem.setText(R.string.channel_btn_close) binding.listItemRightItem.setOnClickListener { onRightButtonClick(item.channel.remoteId) } - binding.listItemRightItem.setText(R.string.channel_btn_open) } } inner class SwitchListItemViewHolder(val binding: LiMainIconValueWithButtonsItemBinding) : ViewHolder(binding.root) { fun bind(item: ListItem.SwitchItem) { val data = item.toSlideableListItemData() as SlideableListItemData.Default - binding.listItemRoot.bind(locationCaption = item.locationCaption) + binding.listItemRoot.bind(locationCaption = item.locationCaption, function = item.channelBase.function) binding.listItemContent.bind( itemType = ItemType.CHANNEL, remoteId = item.channel.remoteId, @@ -249,9 +246,7 @@ abstract class BaseChannelsAdapter( binding.listItemContent.setOnClickListener { listItemClickCallback(item.channel.remoteId) } binding.listItemContent.setOnLongClickListener { onLongPress(this) } binding.listItemLeftItem.setOnClickListener { onLeftButtonClick(item.channel.remoteId) } - binding.listItemLeftItem.setText(R.string.channel_btn_off) binding.listItemRightItem.setOnClickListener { onRightButtonClick(item.channel.remoteId) } - binding.listItemRightItem.setText(R.string.channel_btn_on) } } } diff --git a/app/src/main/java/org/supla/android/ui/lists/BaseListViewModel.kt b/app/src/main/java/org/supla/android/ui/lists/BaseListViewModel.kt index 170c5fe46..05570a51f 100644 --- a/app/src/main/java/org/supla/android/ui/lists/BaseListViewModel.kt +++ b/app/src/main/java/org/supla/android/ui/lists/BaseListViewModel.kt @@ -13,13 +13,13 @@ import org.supla.android.data.model.general.ChannelDataBase import org.supla.android.data.source.local.entity.ChannelRelationType import org.supla.android.data.source.local.entity.complex.ChannelChildEntity import org.supla.android.data.source.local.entity.complex.ChannelDataEntity -import org.supla.android.data.source.remote.channel.SuplaChannelFunction import org.supla.android.lib.SuplaChannelValue import org.supla.android.lib.SuplaClientMessageHandler.OnSuplaClientMessageListener import org.supla.android.lib.SuplaClientMsg import org.supla.android.tools.SuplaSchedulers import org.supla.android.usecases.profile.CloudUrl import org.supla.android.usecases.profile.LoadActiveProfileUrlUseCase +import org.supla.core.shared.data.SuplaChannelFunction abstract class BaseListViewModel( private val preferences: Preferences, diff --git a/app/src/main/java/org/supla/android/usecases/channel/DeleteChannelMeasurementsUseCase.kt b/app/src/main/java/org/supla/android/usecases/channel/DeleteChannelMeasurementsUseCase.kt index 1fc80523a..a71d206cf 100644 --- a/app/src/main/java/org/supla/android/usecases/channel/DeleteChannelMeasurementsUseCase.kt +++ b/app/src/main/java/org/supla/android/usecases/channel/DeleteChannelMeasurementsUseCase.kt @@ -25,12 +25,12 @@ import org.supla.android.data.source.GeneralPurposeMeterLogRepository import org.supla.android.data.source.RoomChannelRepository import org.supla.android.data.source.TemperatureAndHumidityLogRepository import org.supla.android.data.source.TemperatureLogRepository -import org.supla.android.data.source.remote.channel.SuplaChannelFunction import org.supla.android.lib.SuplaConst.SUPLA_CHANNELFNC_ELECTRICITY_METER import org.supla.android.lib.SuplaConst.SUPLA_CHANNELFNC_GENERAL_PURPOSE_MEASUREMENT import org.supla.android.lib.SuplaConst.SUPLA_CHANNELFNC_GENERAL_PURPOSE_METER import org.supla.android.lib.SuplaConst.SUPLA_CHANNELFNC_HUMIDITYANDTEMPERATURE import org.supla.android.lib.SuplaConst.SUPLA_CHANNELFNC_THERMOMETER +import org.supla.core.shared.data.SuplaChannelFunction import javax.inject.Inject import javax.inject.Singleton diff --git a/app/src/main/java/org/supla/android/usecases/channel/GetChannelDefaultCaptionUseCase.kt b/app/src/main/java/org/supla/android/usecases/channel/GetChannelDefaultCaptionUseCase.kt index a6d1c4cd2..5734c5975 100644 --- a/app/src/main/java/org/supla/android/usecases/channel/GetChannelDefaultCaptionUseCase.kt +++ b/app/src/main/java/org/supla/android/usecases/channel/GetChannelDefaultCaptionUseCase.kt @@ -20,7 +20,7 @@ package org.supla.android.usecases.channel import androidx.annotation.StringRes import org.supla.android.R import org.supla.android.core.ui.StringProvider -import org.supla.android.data.source.remote.channel.SuplaChannelFunction +import org.supla.core.shared.data.SuplaChannelFunction import javax.inject.Inject import javax.inject.Singleton diff --git a/app/src/main/java/org/supla/android/usecases/channel/GetChannelStateUseCase.kt b/app/src/main/java/org/supla/android/usecases/channel/GetChannelStateUseCase.kt index 1e597d121..cfb14bdac 100644 --- a/app/src/main/java/org/supla/android/usecases/channel/GetChannelStateUseCase.kt +++ b/app/src/main/java/org/supla/android/usecases/channel/GetChannelStateUseCase.kt @@ -23,14 +23,14 @@ import org.supla.android.data.source.local.entity.ChannelGroupEntity import org.supla.android.data.source.local.entity.ChannelValueEntity import org.supla.android.data.source.local.entity.complex.ChannelDataEntity import org.supla.android.data.source.local.entity.complex.ChannelGroupDataEntity -import org.supla.android.data.source.remote.channel.SuplaChannelFunction -import org.supla.android.data.source.remote.channel.suplaFunction import org.supla.android.data.source.remote.hvac.ThermostatSubfunction import org.supla.android.db.Channel import org.supla.android.db.ChannelBase import org.supla.android.db.ChannelGroup import org.supla.android.db.ChannelValue import org.supla.android.usecases.group.GetGroupActivePercentageUseCase +import org.supla.core.shared.data.SuplaChannelFunction +import org.supla.core.shared.data.suplaFunction import javax.inject.Inject import javax.inject.Singleton diff --git a/app/src/main/java/org/supla/android/usecases/channel/LoadChannelWithChildrenMeasurementsDateRangeUseCase.kt b/app/src/main/java/org/supla/android/usecases/channel/LoadChannelWithChildrenMeasurementsDateRangeUseCase.kt index 161427c48..9ca9bc19e 100644 --- a/app/src/main/java/org/supla/android/usecases/channel/LoadChannelWithChildrenMeasurementsDateRangeUseCase.kt +++ b/app/src/main/java/org/supla/android/usecases/channel/LoadChannelWithChildrenMeasurementsDateRangeUseCase.kt @@ -27,7 +27,7 @@ import org.supla.android.data.source.local.entity.complex.hasMeasurements import org.supla.android.data.source.local.entity.complex.isHvacThermostat import org.supla.android.data.source.local.entity.custom.ChannelWithChildren import org.supla.android.data.source.local.entity.hasMeasurements -import org.supla.android.data.source.remote.channel.SuplaChannelFunction +import org.supla.core.shared.data.SuplaChannelFunction import java.util.Date import javax.inject.Inject import javax.inject.Singleton diff --git a/app/src/main/java/org/supla/android/usecases/channel/LoadChannelWithChildrenMeasurementsUseCase.kt b/app/src/main/java/org/supla/android/usecases/channel/LoadChannelWithChildrenMeasurementsUseCase.kt index 4ade56e0e..5822eda8a 100644 --- a/app/src/main/java/org/supla/android/usecases/channel/LoadChannelWithChildrenMeasurementsUseCase.kt +++ b/app/src/main/java/org/supla/android/usecases/channel/LoadChannelWithChildrenMeasurementsUseCase.kt @@ -27,9 +27,9 @@ import org.supla.android.data.source.local.entity.complex.ChannelDataEntity import org.supla.android.data.source.local.entity.complex.isHvacThermostat import org.supla.android.data.source.local.entity.custom.ChannelWithChildren import org.supla.android.data.source.local.entity.hasMeasurements -import org.supla.android.data.source.remote.channel.SuplaChannelFunction import org.supla.android.usecases.channel.measurementsprovider.TemperatureAndHumidityMeasurementsProvider import org.supla.android.usecases.channel.measurementsprovider.TemperatureMeasurementsProvider +import org.supla.core.shared.data.SuplaChannelFunction import javax.inject.Inject import javax.inject.Singleton diff --git a/app/src/main/java/org/supla/android/usecases/channel/stringvalueprovider/GpmValueStringProvider.kt b/app/src/main/java/org/supla/android/usecases/channel/stringvalueprovider/GpmValueStringProvider.kt index 3006b22a1..38bab6545 100644 --- a/app/src/main/java/org/supla/android/usecases/channel/stringvalueprovider/GpmValueStringProvider.kt +++ b/app/src/main/java/org/supla/android/usecases/channel/stringvalueprovider/GpmValueStringProvider.kt @@ -20,7 +20,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. import com.google.gson.Gson import org.supla.android.data.ValuesFormatter import org.supla.android.data.source.local.entity.complex.ChannelDataEntity -import org.supla.android.data.source.remote.channel.SuplaChannelFunction import org.supla.android.data.source.remote.gpm.SuplaChannelGeneralPurposeBaseConfig import org.supla.android.di.GSON_FOR_REPO import org.supla.android.extensions.guardLet @@ -28,6 +27,7 @@ import org.supla.android.usecases.channel.ChannelValueStringProvider import org.supla.android.usecases.channel.ValueType import org.supla.android.usecases.channel.valueformatter.GpmValueFormatter import org.supla.android.usecases.channel.valueprovider.GpmValueProvider +import org.supla.core.shared.data.SuplaChannelFunction import java.util.Locale import javax.inject.Inject import javax.inject.Named diff --git a/app/src/main/java/org/supla/android/usecases/channel/stringvalueprovider/HumidityAndTemperatureValueStringProvider.kt b/app/src/main/java/org/supla/android/usecases/channel/stringvalueprovider/HumidityAndTemperatureValueStringProvider.kt index 1bec4c441..0c7639001 100644 --- a/app/src/main/java/org/supla/android/usecases/channel/stringvalueprovider/HumidityAndTemperatureValueStringProvider.kt +++ b/app/src/main/java/org/supla/android/usecases/channel/stringvalueprovider/HumidityAndTemperatureValueStringProvider.kt @@ -19,12 +19,12 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. import org.supla.android.Preferences import org.supla.android.data.source.local.entity.complex.ChannelDataEntity -import org.supla.android.data.source.remote.channel.SuplaChannelFunction import org.supla.android.usecases.channel.ChannelValueStringProvider import org.supla.android.usecases.channel.ValueType import org.supla.android.usecases.channel.valueformatter.HumidityValueFormatter import org.supla.android.usecases.channel.valueformatter.ThermometerValueFormatter import org.supla.android.usecases.channel.valueprovider.HumidityAndTemperatureValueProvider +import org.supla.core.shared.data.SuplaChannelFunction import javax.inject.Inject import javax.inject.Singleton diff --git a/app/src/main/java/org/supla/android/usecases/channel/valueprovider/DepthSensorValueProvider.kt b/app/src/main/java/org/supla/android/usecases/channel/valueprovider/DepthSensorValueProvider.kt index cf9d15c49..7c94d7e46 100644 --- a/app/src/main/java/org/supla/android/usecases/channel/valueprovider/DepthSensorValueProvider.kt +++ b/app/src/main/java/org/supla/android/usecases/channel/valueprovider/DepthSensorValueProvider.kt @@ -18,7 +18,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ import org.supla.android.data.source.local.entity.complex.ChannelDataEntity -import org.supla.android.data.source.remote.channel.SuplaChannelFunction +import org.supla.core.shared.data.SuplaChannelFunction import javax.inject.Inject import javax.inject.Singleton diff --git a/app/src/main/java/org/supla/android/usecases/channel/valueprovider/DistanceSensorValueProvider.kt b/app/src/main/java/org/supla/android/usecases/channel/valueprovider/DistanceSensorValueProvider.kt index 3e5b3fb5f..65ce9f4fc 100644 --- a/app/src/main/java/org/supla/android/usecases/channel/valueprovider/DistanceSensorValueProvider.kt +++ b/app/src/main/java/org/supla/android/usecases/channel/valueprovider/DistanceSensorValueProvider.kt @@ -18,7 +18,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ import org.supla.android.data.source.local.entity.complex.ChannelDataEntity -import org.supla.android.data.source.remote.channel.SuplaChannelFunction +import org.supla.core.shared.data.SuplaChannelFunction import javax.inject.Inject import javax.inject.Singleton diff --git a/app/src/main/java/org/supla/android/usecases/channel/valueprovider/ElectricityMeterValueProvider.kt b/app/src/main/java/org/supla/android/usecases/channel/valueprovider/ElectricityMeterValueProvider.kt index ad84fd189..b45de0b10 100644 --- a/app/src/main/java/org/supla/android/usecases/channel/valueprovider/ElectricityMeterValueProvider.kt +++ b/app/src/main/java/org/supla/android/usecases/channel/valueprovider/ElectricityMeterValueProvider.kt @@ -21,12 +21,12 @@ import org.supla.android.core.storage.UserStateHolder import org.supla.android.data.source.local.entity.complex.ChannelDataEntity import org.supla.android.data.source.local.entity.complex.Electricity import org.supla.android.data.source.local.entity.custom.Phase -import org.supla.android.data.source.remote.channel.SuplaChannelFunction import org.supla.android.data.source.remote.channel.SuplaElectricityMeasurementType import org.supla.android.data.source.remote.channel.suplaElectricityMeterMeasuredTypes import org.supla.android.usecases.channel.ChannelValueProvider import org.supla.android.usecases.channel.ValueType import org.supla.android.usecases.channel.valueprovider.parser.IntValueParser +import org.supla.core.shared.data.SuplaChannelFunction import javax.inject.Inject import javax.inject.Singleton diff --git a/app/src/main/java/org/supla/android/usecases/channel/valueprovider/GpmValueProvider.kt b/app/src/main/java/org/supla/android/usecases/channel/valueprovider/GpmValueProvider.kt index 4902e8c3f..efdce902c 100644 --- a/app/src/main/java/org/supla/android/usecases/channel/valueprovider/GpmValueProvider.kt +++ b/app/src/main/java/org/supla/android/usecases/channel/valueprovider/GpmValueProvider.kt @@ -18,7 +18,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ import org.supla.android.data.source.local.entity.complex.ChannelDataEntity -import org.supla.android.data.source.remote.channel.SuplaChannelFunction +import org.supla.core.shared.data.SuplaChannelFunction import javax.inject.Inject import javax.inject.Singleton diff --git a/app/src/main/java/org/supla/android/usecases/channel/valueprovider/HumidityAndTemperatureValueProvider.kt b/app/src/main/java/org/supla/android/usecases/channel/valueprovider/HumidityAndTemperatureValueProvider.kt index 55c1471ce..179177e44 100644 --- a/app/src/main/java/org/supla/android/usecases/channel/valueprovider/HumidityAndTemperatureValueProvider.kt +++ b/app/src/main/java/org/supla/android/usecases/channel/valueprovider/HumidityAndTemperatureValueProvider.kt @@ -18,10 +18,10 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ import org.supla.android.data.source.local.entity.complex.ChannelDataEntity -import org.supla.android.data.source.remote.channel.SuplaChannelFunction import org.supla.android.usecases.channel.ChannelValueProvider import org.supla.android.usecases.channel.ValueType import org.supla.android.usecases.channel.valueprovider.parser.IntValueParser +import org.supla.core.shared.data.SuplaChannelFunction import javax.inject.Inject import javax.inject.Singleton diff --git a/app/src/main/java/org/supla/android/usecases/channel/valueprovider/ImpulseCounterValueProvider.kt b/app/src/main/java/org/supla/android/usecases/channel/valueprovider/ImpulseCounterValueProvider.kt index c300ace4c..575107307 100644 --- a/app/src/main/java/org/supla/android/usecases/channel/valueprovider/ImpulseCounterValueProvider.kt +++ b/app/src/main/java/org/supla/android/usecases/channel/valueprovider/ImpulseCounterValueProvider.kt @@ -18,10 +18,10 @@ package org.supla.android.usecases.channel.valueprovider */ import org.supla.android.data.source.local.entity.complex.ChannelDataEntity -import org.supla.android.data.source.remote.channel.SuplaChannelFunction import org.supla.android.usecases.channel.ChannelValueProvider import org.supla.android.usecases.channel.ValueType import org.supla.android.usecases.channel.valueprovider.parser.LongValueProvider +import org.supla.core.shared.data.SuplaChannelFunction import javax.inject.Inject import javax.inject.Singleton diff --git a/app/src/main/java/org/supla/android/usecases/channel/valueprovider/SwitchWithElectricityMeterValueProvider.kt b/app/src/main/java/org/supla/android/usecases/channel/valueprovider/SwitchWithElectricityMeterValueProvider.kt index ad898d83b..c58737640 100644 --- a/app/src/main/java/org/supla/android/usecases/channel/valueprovider/SwitchWithElectricityMeterValueProvider.kt +++ b/app/src/main/java/org/supla/android/usecases/channel/valueprovider/SwitchWithElectricityMeterValueProvider.kt @@ -19,12 +19,12 @@ package org.supla.android.usecases.channel.valueprovider import org.supla.android.core.storage.UserStateHolder import org.supla.android.data.source.local.entity.complex.ChannelDataEntity -import org.supla.android.data.source.remote.channel.SuplaChannelFunction import org.supla.android.data.source.remote.channel.SuplaElectricityMeasurementType import org.supla.android.lib.SuplaChannelValue.SUBV_TYPE_ELECTRICITY_MEASUREMENTS import org.supla.android.usecases.channel.ChannelValueProvider import org.supla.android.usecases.channel.ValueType import org.supla.android.usecases.channel.valueprovider.parser.IntValueParser +import org.supla.core.shared.data.SuplaChannelFunction import javax.inject.Inject import javax.inject.Singleton diff --git a/app/src/main/java/org/supla/android/usecases/channel/valueprovider/ThermometerValueProvider.kt b/app/src/main/java/org/supla/android/usecases/channel/valueprovider/ThermometerValueProvider.kt index 323b56dec..be5128522 100644 --- a/app/src/main/java/org/supla/android/usecases/channel/valueprovider/ThermometerValueProvider.kt +++ b/app/src/main/java/org/supla/android/usecases/channel/valueprovider/ThermometerValueProvider.kt @@ -18,7 +18,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ import org.supla.android.data.source.local.entity.complex.ChannelDataEntity -import org.supla.android.data.source.remote.channel.SuplaChannelFunction +import org.supla.core.shared.data.SuplaChannelFunction import javax.inject.Inject import javax.inject.Singleton diff --git a/app/src/main/java/org/supla/android/usecases/details/BaseDetailTypeProviderUseCase.kt b/app/src/main/java/org/supla/android/usecases/details/BaseDetailTypeProviderUseCase.kt index cd0b75b27..125dbd21a 100644 --- a/app/src/main/java/org/supla/android/usecases/details/BaseDetailTypeProviderUseCase.kt +++ b/app/src/main/java/org/supla/android/usecases/details/BaseDetailTypeProviderUseCase.kt @@ -17,8 +17,8 @@ package org.supla.android.usecases.details Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -import org.supla.android.data.source.remote.channel.SuplaChannelFunction import org.supla.android.features.details.detailbase.standarddetail.DetailPage +import org.supla.core.shared.data.SuplaChannelFunction abstract class BaseDetailTypeProviderUseCase { diff --git a/app/src/main/java/org/supla/android/usecases/details/ProvideChannelDetailTypeUseCase.kt b/app/src/main/java/org/supla/android/usecases/details/ProvideChannelDetailTypeUseCase.kt index 1a8b732b6..21a58028e 100644 --- a/app/src/main/java/org/supla/android/usecases/details/ProvideChannelDetailTypeUseCase.kt +++ b/app/src/main/java/org/supla/android/usecases/details/ProvideChannelDetailTypeUseCase.kt @@ -23,10 +23,10 @@ import org.supla.android.data.source.local.entity.custom.ChannelWithChildren import org.supla.android.data.source.local.entity.isElectricityMeter import org.supla.android.data.source.local.entity.isImpulseCounter import org.supla.android.data.source.remote.channel.SuplaChannelFlag -import org.supla.android.data.source.remote.channel.SuplaChannelFunction import org.supla.android.features.details.detailbase.standarddetail.DetailPage import org.supla.android.lib.SuplaChannelValue.SUBV_TYPE_ELECTRICITY_MEASUREMENTS import org.supla.android.lib.SuplaChannelValue.SUBV_TYPE_IC_MEASUREMENTS +import org.supla.core.shared.data.SuplaChannelFunction import javax.inject.Inject import javax.inject.Singleton diff --git a/app/src/main/java/org/supla/android/usecases/group/UpdateChannelGroupTotalValueUseCase.kt b/app/src/main/java/org/supla/android/usecases/group/UpdateChannelGroupTotalValueUseCase.kt index b92faad08..766fe3085 100644 --- a/app/src/main/java/org/supla/android/usecases/group/UpdateChannelGroupTotalValueUseCase.kt +++ b/app/src/main/java/org/supla/android/usecases/group/UpdateChannelGroupTotalValueUseCase.kt @@ -22,7 +22,6 @@ import org.supla.android.data.source.ChannelGroupRelationRepository import org.supla.android.data.source.ChannelGroupRepository import org.supla.android.data.source.local.entity.ChannelGroupEntity import org.supla.android.data.source.local.entity.ChannelValueEntity -import org.supla.android.data.source.remote.channel.SuplaChannelFunction import org.supla.android.usecases.group.totalvalue.DimmerAndRgbGroupValue import org.supla.android.usecases.group.totalvalue.DimmerGroupValue import org.supla.android.usecases.group.totalvalue.GroupTotalValue @@ -33,6 +32,7 @@ import org.supla.android.usecases.group.totalvalue.ProjectorScreenGroupValue import org.supla.android.usecases.group.totalvalue.RgbGroupValue import org.supla.android.usecases.group.totalvalue.ShadingSystemGroupValue import org.supla.android.usecases.group.totalvalue.ShadowingBlindGroupValue +import org.supla.core.shared.data.SuplaChannelFunction import javax.inject.Inject import javax.inject.Singleton diff --git a/app/src/main/java/org/supla/android/usecases/icon/GetChannelIconUseCase.kt b/app/src/main/java/org/supla/android/usecases/icon/GetChannelIconUseCase.kt index 46ed12d78..d188d527e 100644 --- a/app/src/main/java/org/supla/android/usecases/icon/GetChannelIconUseCase.kt +++ b/app/src/main/java/org/supla/android/usecases/icon/GetChannelIconUseCase.kt @@ -20,7 +20,6 @@ package org.supla.android.usecases.icon import org.supla.android.data.model.general.ChannelDataBase import org.supla.android.data.model.general.ChannelState import org.supla.android.data.model.general.IconType -import org.supla.android.data.source.remote.channel.SuplaChannelFunction import org.supla.android.db.ChannelBase import org.supla.android.extensions.guardLet import org.supla.android.extensions.ifLet @@ -32,6 +31,7 @@ import org.supla.android.lib.SuplaConst.SUPLA_CHANNELFNC_DIMMERANDRGBLIGHTING import org.supla.android.lib.SuplaConst.SUPLA_CHANNELFNC_HUMIDITYANDTEMPERATURE import org.supla.android.lib.SuplaConst.SUPLA_CHANNELFNC_THERMOMETER import org.supla.android.usecases.channel.GetChannelStateUseCase +import org.supla.core.shared.data.SuplaChannelFunction import javax.inject.Inject import javax.inject.Singleton diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 5e136867c..0a8f0f637 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -444,7 +444,7 @@ Die Aktion wurde nicht erfolgreich durchgeführt Wischgeste zum Öffnen der Kanaldetails wurde gelöscht, tippe auf dem Kanal, um sie zu sehen. - Das Kanal is offline + Das Kanal ist offline Benachrichtigungen! Schalte die Notifikationen ein, um auf dem Laufenden zu halten! Um sie Ihnen zu zeigen, brauchen wir Ihre Zustimmung.\n\nDie Notifikation können Sie in Supla Cloud konfigurieren. Überspringen @@ -636,6 +636,10 @@ Blind- aufgenommen Blind- zurückgegeben Energie + Verhüllen + Enthüllen + Einklappen + Ausklappen eingeschaltet eingeschaltet diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 207beda06..21d1fae32 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -711,6 +711,10 @@ Indukcyjna Pojemnościowa Energia + Zasłoń + Odsłoń + Zwiń + Rozwiń włączone diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index fe2550f91..e6b57179e 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -733,6 +733,10 @@ Forward reactive Reverse reactive Energy + Shut + Reveal + Collapse + Expand on diff --git a/app/src/test/java/org/supla/android/features/channellist/ChannelListViewModelTest.kt b/app/src/test/java/org/supla/android/features/channellist/ChannelListViewModelTest.kt index de3a3bd97..1b3d9a54a 100644 --- a/app/src/test/java/org/supla/android/features/channellist/ChannelListViewModelTest.kt +++ b/app/src/test/java/org/supla/android/features/channellist/ChannelListViewModelTest.kt @@ -45,7 +45,6 @@ import org.supla.android.data.source.local.entity.ChannelValueEntity import org.supla.android.data.source.local.entity.LocationEntity import org.supla.android.data.source.local.entity.complex.ChannelDataEntity import org.supla.android.data.source.local.entity.custom.ChannelWithChildren -import org.supla.android.data.source.remote.channel.SuplaChannelFunction import org.supla.android.data.source.runtime.ItemType import org.supla.android.events.UpdateEventsManager import org.supla.android.features.details.detailbase.standarddetail.DetailPage @@ -63,6 +62,7 @@ import org.supla.android.usecases.details.ThermostatDetailType import org.supla.android.usecases.details.WindowDetailType import org.supla.android.usecases.location.CollapsedFlag import org.supla.android.usecases.location.ToggleLocationUseCase +import org.supla.core.shared.data.SuplaChannelFunction @RunWith(MockitoJUnitRunner::class) class ChannelListViewModelTest : BaseViewModelTest() { diff --git a/app/src/test/java/org/supla/android/features/details/detailbase/electricitymeter/NoExtendedValueStateHandlerTest.kt b/app/src/test/java/org/supla/android/features/details/detailbase/electricitymeter/NoExtendedValueStateHandlerTest.kt index 17ddfa066..b929f1e59 100644 --- a/app/src/test/java/org/supla/android/features/details/detailbase/electricitymeter/NoExtendedValueStateHandlerTest.kt +++ b/app/src/test/java/org/supla/android/features/details/detailbase/electricitymeter/NoExtendedValueStateHandlerTest.kt @@ -26,10 +26,10 @@ import org.assertj.core.api.Assertions.assertThat import org.junit.Before import org.junit.Test import org.supla.android.data.source.local.entity.complex.ChannelDataEntity -import org.supla.android.data.source.remote.channel.SuplaChannelFunction import org.supla.android.lib.SuplaChannelValue.SUBV_TYPE_ELECTRICITY_MEASUREMENTS import org.supla.android.usecases.channel.GetChannelValueUseCase import org.supla.android.usecases.channel.electricitymeter.ElectricityMeasurements +import org.supla.core.shared.data.SuplaChannelFunction class NoExtendedValueStateHandlerTest { @MockK diff --git a/app/src/test/java/org/supla/android/features/details/gpmdetail/GpmDetailViewModelTest.kt b/app/src/test/java/org/supla/android/features/details/gpmdetail/GpmDetailViewModelTest.kt index ad1aef754..9bcb0fe96 100644 --- a/app/src/test/java/org/supla/android/features/details/gpmdetail/GpmDetailViewModelTest.kt +++ b/app/src/test/java/org/supla/android/features/details/gpmdetail/GpmDetailViewModelTest.kt @@ -36,13 +36,13 @@ import org.supla.android.Preferences import org.supla.android.core.BaseViewModelTest import org.supla.android.core.ui.StringProvider import org.supla.android.data.source.local.entity.complex.ChannelDataEntity -import org.supla.android.data.source.remote.channel.SuplaChannelFunction import org.supla.android.data.source.runtime.ItemType import org.supla.android.events.UpdateEventsManager import org.supla.android.tools.SuplaSchedulers import org.supla.android.usecases.channel.GetChannelCaptionUseCase import org.supla.android.usecases.channel.ReadChannelByRemoteIdUseCase import org.supla.android.usecases.group.ReadChannelGroupByRemoteIdUseCase +import org.supla.core.shared.data.SuplaChannelFunction @RunWith(MockitoJUnitRunner::class) class GpmDetailViewModelTest : BaseViewModelTest() { diff --git a/app/src/test/java/org/supla/android/features/details/switchdetail/SwitchDetailViewModelTest.kt b/app/src/test/java/org/supla/android/features/details/switchdetail/SwitchDetailViewModelTest.kt index d217c2bf1..2909fa999 100644 --- a/app/src/test/java/org/supla/android/features/details/switchdetail/SwitchDetailViewModelTest.kt +++ b/app/src/test/java/org/supla/android/features/details/switchdetail/SwitchDetailViewModelTest.kt @@ -37,13 +37,13 @@ import org.supla.android.core.BaseViewModelTest import org.supla.android.core.ui.StringProvider import org.supla.android.data.source.local.entity.complex.ChannelDataEntity import org.supla.android.data.source.local.entity.complex.ChannelGroupDataEntity -import org.supla.android.data.source.remote.channel.SuplaChannelFunction import org.supla.android.data.source.runtime.ItemType import org.supla.android.events.UpdateEventsManager import org.supla.android.tools.SuplaSchedulers import org.supla.android.usecases.channel.GetChannelCaptionUseCase import org.supla.android.usecases.channel.ReadChannelByRemoteIdUseCase import org.supla.android.usecases.group.ReadChannelGroupByRemoteIdUseCase +import org.supla.core.shared.data.SuplaChannelFunction @RunWith(MockitoJUnitRunner::class) class SwitchDetailViewModelTest : BaseViewModelTest() { diff --git a/app/src/test/java/org/supla/android/features/details/switchdetail/switchdetail/SwitchGeneralViewModelTest.kt b/app/src/test/java/org/supla/android/features/details/switchdetail/switchdetail/SwitchGeneralViewModelTest.kt index d0e313eb9..c434bbb46 100644 --- a/app/src/test/java/org/supla/android/features/details/switchdetail/switchdetail/SwitchGeneralViewModelTest.kt +++ b/app/src/test/java/org/supla/android/features/details/switchdetail/switchdetail/SwitchGeneralViewModelTest.kt @@ -37,7 +37,6 @@ import org.supla.android.data.model.general.ChannelState import org.supla.android.data.source.local.entity.ChannelExtendedValueEntity import org.supla.android.data.source.local.entity.complex.ChannelDataEntity import org.supla.android.data.source.local.entity.complex.ChannelGroupDataEntity -import org.supla.android.data.source.remote.channel.SuplaChannelFunction import org.supla.android.data.source.runtime.ItemType import org.supla.android.events.DownloadEventsManager import org.supla.android.features.details.detailbase.electricitymeter.ElectricityMeterGeneralStateHandler @@ -58,6 +57,7 @@ import org.supla.android.usecases.channel.electricitymeter.LoadElectricityMeterM import org.supla.android.usecases.client.ExecuteSimpleActionUseCase import org.supla.android.usecases.group.ReadChannelGroupByRemoteIdUseCase import org.supla.android.usecases.icon.GetChannelIconUseCase +import org.supla.core.shared.data.SuplaChannelFunction import java.util.Date @Suppress("UnusedLambdaExpressionBody") diff --git a/app/src/test/java/org/supla/android/features/details/thermostatdetail/ThermostatDetailViewModelTest.kt b/app/src/test/java/org/supla/android/features/details/thermostatdetail/ThermostatDetailViewModelTest.kt index a209fe531..b4b8f39d1 100644 --- a/app/src/test/java/org/supla/android/features/details/thermostatdetail/ThermostatDetailViewModelTest.kt +++ b/app/src/test/java/org/supla/android/features/details/thermostatdetail/ThermostatDetailViewModelTest.kt @@ -34,7 +34,6 @@ import org.supla.android.core.ui.StringProvider import org.supla.android.data.source.local.entity.ChannelEntity import org.supla.android.data.source.local.entity.ChannelValueEntity import org.supla.android.data.source.local.entity.complex.ChannelDataEntity -import org.supla.android.data.source.remote.channel.SuplaChannelFunction import org.supla.android.data.source.remote.hvac.ThermostatSubfunction import org.supla.android.data.source.remote.thermostat.ThermostatValue import org.supla.android.data.source.runtime.ItemType @@ -43,6 +42,7 @@ import org.supla.android.tools.SuplaSchedulers import org.supla.android.usecases.channel.GetChannelCaptionUseCase import org.supla.android.usecases.channel.ReadChannelByRemoteIdUseCase import org.supla.android.usecases.group.ReadChannelGroupByRemoteIdUseCase +import org.supla.core.shared.data.SuplaChannelFunction @RunWith(MockitoJUnitRunner::class) class ThermostatDetailViewModelTest : diff --git a/app/src/test/java/org/supla/android/features/details/thermostatdetail/general/ThermostatGeneralViewModelTest.kt b/app/src/test/java/org/supla/android/features/details/thermostatdetail/general/ThermostatGeneralViewModelTest.kt index 867d434d3..e5e4d8770 100644 --- a/app/src/test/java/org/supla/android/features/details/thermostatdetail/general/ThermostatGeneralViewModelTest.kt +++ b/app/src/test/java/org/supla/android/features/details/thermostatdetail/general/ThermostatGeneralViewModelTest.kt @@ -43,7 +43,6 @@ import org.supla.android.data.source.local.entity.complex.ChannelChildEntity import org.supla.android.data.source.local.entity.complex.ChannelDataEntity import org.supla.android.data.source.local.entity.custom.ChannelWithChildren import org.supla.android.data.source.remote.ConfigResult -import org.supla.android.data.source.remote.channel.SuplaChannelFunction import org.supla.android.data.source.remote.hvac.SuplaChannelHvacConfig import org.supla.android.data.source.remote.hvac.SuplaChannelWeeklyScheduleConfig import org.supla.android.data.source.remote.hvac.SuplaHvacAlgorithm @@ -68,6 +67,7 @@ import org.supla.android.usecases.channel.GetChannelValueUseCase import org.supla.android.usecases.channel.ReadChannelWithChildrenTreeUseCase import org.supla.android.usecases.icon.GetChannelIconUseCase import org.supla.android.usecases.thermostat.CreateTemperaturesListUseCase +import org.supla.core.shared.data.SuplaChannelFunction import java.util.Date import java.util.concurrent.TimeUnit diff --git a/app/src/test/java/org/supla/android/features/details/windowdetail/curtain/CurtainViewModelTest.kt b/app/src/test/java/org/supla/android/features/details/windowdetail/curtain/CurtainViewModelTest.kt index 2e843261b..26673a718 100644 --- a/app/src/test/java/org/supla/android/features/details/windowdetail/curtain/CurtainViewModelTest.kt +++ b/app/src/test/java/org/supla/android/features/details/windowdetail/curtain/CurtainViewModelTest.kt @@ -43,7 +43,6 @@ import org.supla.android.data.source.local.entity.complex.ChannelDataEntity import org.supla.android.data.source.local.entity.complex.ChannelGroupDataEntity import org.supla.android.data.source.local.entity.custom.GroupOnlineSummary import org.supla.android.data.source.remote.channel.SuplaChannelFlag -import org.supla.android.data.source.remote.channel.SuplaChannelFunction import org.supla.android.data.source.remote.rollershutter.RollerShutterValue import org.supla.android.data.source.remote.shadingsystem.SuplaShadingSystemFlag import org.supla.android.data.source.runtime.ItemType @@ -67,6 +66,7 @@ import org.supla.android.usecases.client.LoginUseCase import org.supla.android.usecases.group.GetGroupOnlineSummaryUseCase import org.supla.android.usecases.group.ReadChannelGroupByRemoteIdUseCase import org.supla.android.usecases.group.totalvalue.GroupTotalValue +import org.supla.core.shared.data.SuplaChannelFunction @RunWith(MockitoJUnitRunner::class) class CurtainViewModelTest : BaseViewModelTest() { diff --git a/app/src/test/java/org/supla/android/features/details/windowdetail/garagedoor/GarageDoorViewModelTest.kt b/app/src/test/java/org/supla/android/features/details/windowdetail/garagedoor/GarageDoorViewModelTest.kt index 9913a9af3..357aafa2e 100644 --- a/app/src/test/java/org/supla/android/features/details/windowdetail/garagedoor/GarageDoorViewModelTest.kt +++ b/app/src/test/java/org/supla/android/features/details/windowdetail/garagedoor/GarageDoorViewModelTest.kt @@ -43,7 +43,6 @@ import org.supla.android.data.source.local.entity.complex.ChannelDataEntity import org.supla.android.data.source.local.entity.complex.ChannelGroupDataEntity import org.supla.android.data.source.local.entity.custom.GroupOnlineSummary import org.supla.android.data.source.remote.channel.SuplaChannelFlag -import org.supla.android.data.source.remote.channel.SuplaChannelFunction import org.supla.android.data.source.remote.rollershutter.RollerShutterValue import org.supla.android.data.source.remote.shadingsystem.SuplaShadingSystemFlag import org.supla.android.data.source.runtime.ItemType @@ -66,6 +65,7 @@ import org.supla.android.usecases.client.LoginUseCase import org.supla.android.usecases.group.GetGroupOnlineSummaryUseCase import org.supla.android.usecases.group.ReadChannelGroupByRemoteIdUseCase import org.supla.android.usecases.group.totalvalue.GroupTotalValue +import org.supla.core.shared.data.SuplaChannelFunction @RunWith(MockitoJUnitRunner::class) class GarageDoorViewModelTest : BaseViewModelTest() { diff --git a/app/src/test/java/org/supla/android/features/details/windowdetail/projectorscreen/ProjectorScreenViewModelTest.kt b/app/src/test/java/org/supla/android/features/details/windowdetail/projectorscreen/ProjectorScreenViewModelTest.kt index 5c3234f0d..1ae13b9ac 100644 --- a/app/src/test/java/org/supla/android/features/details/windowdetail/projectorscreen/ProjectorScreenViewModelTest.kt +++ b/app/src/test/java/org/supla/android/features/details/windowdetail/projectorscreen/ProjectorScreenViewModelTest.kt @@ -43,7 +43,6 @@ import org.supla.android.data.source.local.entity.complex.ChannelDataEntity import org.supla.android.data.source.local.entity.complex.ChannelGroupDataEntity import org.supla.android.data.source.local.entity.custom.GroupOnlineSummary import org.supla.android.data.source.remote.channel.SuplaChannelFlag -import org.supla.android.data.source.remote.channel.SuplaChannelFunction import org.supla.android.data.source.remote.rollershutter.RollerShutterValue import org.supla.android.data.source.remote.shadingsystem.SuplaShadingSystemFlag import org.supla.android.data.source.runtime.ItemType @@ -66,6 +65,7 @@ import org.supla.android.usecases.client.LoginUseCase import org.supla.android.usecases.group.GetGroupOnlineSummaryUseCase import org.supla.android.usecases.group.ReadChannelGroupByRemoteIdUseCase import org.supla.android.usecases.group.totalvalue.GroupTotalValue +import org.supla.core.shared.data.SuplaChannelFunction @RunWith(MockitoJUnitRunner::class) class ProjectorScreenViewModelTest : BaseViewModelTest() { diff --git a/app/src/test/java/org/supla/android/features/details/windowdetail/rollershutter/RollerShutterViewModelTest.kt b/app/src/test/java/org/supla/android/features/details/windowdetail/rollershutter/RollerShutterViewModelTest.kt index a032b63fa..e5cc474d4 100644 --- a/app/src/test/java/org/supla/android/features/details/windowdetail/rollershutter/RollerShutterViewModelTest.kt +++ b/app/src/test/java/org/supla/android/features/details/windowdetail/rollershutter/RollerShutterViewModelTest.kt @@ -47,7 +47,6 @@ import org.supla.android.data.source.local.entity.complex.ChannelDataEntity import org.supla.android.data.source.local.entity.complex.ChannelGroupDataEntity import org.supla.android.data.source.local.entity.custom.GroupOnlineSummary import org.supla.android.data.source.remote.channel.SuplaChannelFlag -import org.supla.android.data.source.remote.channel.SuplaChannelFunction import org.supla.android.data.source.remote.rollershutter.RollerShutterValue import org.supla.android.data.source.remote.shadingsystem.SuplaShadingSystemFlag import org.supla.android.data.source.runtime.ItemType @@ -75,6 +74,7 @@ import org.supla.android.usecases.client.SuplaClientOperation import org.supla.android.usecases.group.GetGroupOnlineSummaryUseCase import org.supla.android.usecases.group.ReadChannelGroupByRemoteIdUseCase import org.supla.android.usecases.group.totalvalue.GroupTotalValue +import org.supla.core.shared.data.SuplaChannelFunction @RunWith(MockitoJUnitRunner::class) class RollerShutterViewModelTest : diff --git a/app/src/test/java/org/supla/android/features/details/windowdetail/roofwindow/RoofWindowViewModelTest.kt b/app/src/test/java/org/supla/android/features/details/windowdetail/roofwindow/RoofWindowViewModelTest.kt index 1d7c824ea..0c92a7d02 100644 --- a/app/src/test/java/org/supla/android/features/details/windowdetail/roofwindow/RoofWindowViewModelTest.kt +++ b/app/src/test/java/org/supla/android/features/details/windowdetail/roofwindow/RoofWindowViewModelTest.kt @@ -26,7 +26,6 @@ import org.supla.android.data.source.local.entity.complex.ChannelDataEntity import org.supla.android.data.source.local.entity.complex.ChannelGroupDataEntity import org.supla.android.data.source.local.entity.custom.GroupOnlineSummary import org.supla.android.data.source.remote.channel.SuplaChannelFlag -import org.supla.android.data.source.remote.channel.SuplaChannelFunction import org.supla.android.data.source.remote.rollershutter.RollerShutterValue import org.supla.android.data.source.remote.shadingsystem.SuplaShadingSystemFlag import org.supla.android.data.source.runtime.ItemType @@ -49,6 +48,7 @@ import org.supla.android.usecases.client.LoginUseCase import org.supla.android.usecases.group.GetGroupOnlineSummaryUseCase import org.supla.android.usecases.group.ReadChannelGroupByRemoteIdUseCase import org.supla.android.usecases.group.totalvalue.GroupTotalValue +import org.supla.core.shared.data.SuplaChannelFunction @RunWith(MockitoJUnitRunner::class) class RoofWindowViewModelTest : diff --git a/app/src/test/java/org/supla/android/features/details/windowdetail/terraceawning/TerraceAwningViewModelTest.kt b/app/src/test/java/org/supla/android/features/details/windowdetail/terraceawning/TerraceAwningViewModelTest.kt index f8b4ae7f6..35d27d00c 100644 --- a/app/src/test/java/org/supla/android/features/details/windowdetail/terraceawning/TerraceAwningViewModelTest.kt +++ b/app/src/test/java/org/supla/android/features/details/windowdetail/terraceawning/TerraceAwningViewModelTest.kt @@ -43,7 +43,6 @@ import org.supla.android.data.source.local.entity.complex.ChannelDataEntity import org.supla.android.data.source.local.entity.complex.ChannelGroupDataEntity import org.supla.android.data.source.local.entity.custom.GroupOnlineSummary import org.supla.android.data.source.remote.channel.SuplaChannelFlag -import org.supla.android.data.source.remote.channel.SuplaChannelFunction import org.supla.android.data.source.remote.rollershutter.RollerShutterValue import org.supla.android.data.source.remote.shadingsystem.SuplaShadingSystemFlag import org.supla.android.data.source.runtime.ItemType @@ -66,6 +65,7 @@ import org.supla.android.usecases.client.LoginUseCase import org.supla.android.usecases.group.GetGroupOnlineSummaryUseCase import org.supla.android.usecases.group.ReadChannelGroupByRemoteIdUseCase import org.supla.android.usecases.group.totalvalue.GroupTotalValue +import org.supla.core.shared.data.SuplaChannelFunction @RunWith(MockitoJUnitRunner::class) class TerraceAwningViewModelTest : BaseViewModelTest() { diff --git a/app/src/test/java/org/supla/android/features/grouplist/GroupListViewModelTest.kt b/app/src/test/java/org/supla/android/features/grouplist/GroupListViewModelTest.kt index 30e1ae03b..48c50c298 100644 --- a/app/src/test/java/org/supla/android/features/grouplist/GroupListViewModelTest.kt +++ b/app/src/test/java/org/supla/android/features/grouplist/GroupListViewModelTest.kt @@ -25,7 +25,6 @@ import org.supla.android.data.model.general.ChannelDataBase import org.supla.android.data.source.ChannelRepository import org.supla.android.data.source.local.entity.LocationEntity import org.supla.android.data.source.local.entity.complex.ChannelGroupDataEntity -import org.supla.android.data.source.remote.channel.SuplaChannelFunction import org.supla.android.data.source.runtime.ItemType import org.supla.android.events.UpdateEventsManager import org.supla.android.features.details.detailbase.standarddetail.DetailPage @@ -43,6 +42,7 @@ import org.supla.android.usecases.location.CollapsedFlag import org.supla.android.usecases.location.ToggleLocationUseCase import org.supla.android.usecases.profile.CloudUrl import org.supla.android.usecases.profile.LoadActiveProfileUrlUseCase +import org.supla.core.shared.data.SuplaChannelFunction @RunWith(MockitoJUnitRunner::class) class GroupListViewModelTest : BaseViewModelTest() { diff --git a/app/src/test/java/org/supla/android/usecases/channel/ChannelActionUseCaseTest.kt b/app/src/test/java/org/supla/android/usecases/channel/ChannelActionUseCaseTest.kt index 329dfe61e..15fe65906 100644 --- a/app/src/test/java/org/supla/android/usecases/channel/ChannelActionUseCaseTest.kt +++ b/app/src/test/java/org/supla/android/usecases/channel/ChannelActionUseCaseTest.kt @@ -20,13 +20,13 @@ import org.supla.android.data.source.RoomChannelRepository import org.supla.android.data.source.local.entity.ChannelValueEntity import org.supla.android.data.source.local.entity.complex.ChannelDataEntity import org.supla.android.data.source.remote.channel.SuplaChannelFlag -import org.supla.android.data.source.remote.channel.SuplaChannelFunction import org.supla.android.data.source.remote.relay.SuplaRelayFlag import org.supla.android.data.source.remote.valve.SuplaValveFlag import org.supla.android.data.source.remote.valve.ValveValue import org.supla.android.lib.actions.ActionId import org.supla.android.lib.actions.ActionParameters import org.supla.android.lib.actions.SubjectType +import org.supla.core.shared.data.SuplaChannelFunction @RunWith(MockitoJUnitRunner::class) class ChannelActionUseCaseTest { diff --git a/app/src/test/java/org/supla/android/usecases/channel/CreateProfileChannelsListUseCaseTest.kt b/app/src/test/java/org/supla/android/usecases/channel/CreateProfileChannelsListUseCaseTest.kt index d7929a9db..3abafe2cd 100644 --- a/app/src/test/java/org/supla/android/usecases/channel/CreateProfileChannelsListUseCaseTest.kt +++ b/app/src/test/java/org/supla/android/usecases/channel/CreateProfileChannelsListUseCaseTest.kt @@ -18,13 +18,13 @@ import org.supla.android.data.source.RoomChannelRepository import org.supla.android.data.source.local.entity.ChannelRelationEntity import org.supla.android.data.source.local.entity.complex.ChannelChildEntity import org.supla.android.data.source.local.entity.complex.ChannelDataEntity -import org.supla.android.data.source.remote.channel.SuplaChannelFunction import org.supla.android.data.source.remote.thermostat.ThermostatIndicatorIcon import org.supla.android.images.ImageId import org.supla.android.ui.lists.ListItem import org.supla.android.ui.lists.data.IssueIconType import org.supla.android.usecases.icon.GetChannelIconUseCase import org.supla.android.usecases.location.CollapsedFlag +import org.supla.core.shared.data.SuplaChannelFunction @RunWith(MockitoJUnitRunner::class) class CreateProfileChannelsListUseCaseTest { diff --git a/app/src/test/java/org/supla/android/usecases/channel/DeleteChannelMeasurementsUseCaseTest.kt b/app/src/test/java/org/supla/android/usecases/channel/DeleteChannelMeasurementsUseCaseTest.kt index 59a3373b9..c2c7c9eaa 100644 --- a/app/src/test/java/org/supla/android/usecases/channel/DeleteChannelMeasurementsUseCaseTest.kt +++ b/app/src/test/java/org/supla/android/usecases/channel/DeleteChannelMeasurementsUseCaseTest.kt @@ -40,7 +40,7 @@ import org.supla.android.data.source.local.entity.ChannelEntity import org.supla.android.data.source.local.entity.ChannelRelationType import org.supla.android.data.source.local.entity.complex.ChannelChildEntity import org.supla.android.data.source.local.entity.custom.ChannelWithChildren -import org.supla.android.data.source.remote.channel.SuplaChannelFunction +import org.supla.core.shared.data.SuplaChannelFunction @RunWith(MockitoJUnitRunner::class) class DeleteChannelMeasurementsUseCaseTest { diff --git a/app/src/test/java/org/supla/android/usecases/channel/GetChannelCaptionUseCaseTest.kt b/app/src/test/java/org/supla/android/usecases/channel/GetChannelCaptionUseCaseTest.kt index 7515cee80..8ce6f0251 100644 --- a/app/src/test/java/org/supla/android/usecases/channel/GetChannelCaptionUseCaseTest.kt +++ b/app/src/test/java/org/supla/android/usecases/channel/GetChannelCaptionUseCaseTest.kt @@ -30,7 +30,7 @@ import org.mockito.kotlin.verify import org.mockito.kotlin.verifyNoInteractions import org.mockito.kotlin.whenever import org.supla.android.data.source.local.entity.ChannelEntity -import org.supla.android.data.source.remote.channel.SuplaChannelFunction +import org.supla.core.shared.data.SuplaChannelFunction @RunWith(MockitoJUnitRunner::class) class GetChannelCaptionUseCaseTest { diff --git a/app/src/test/java/org/supla/android/usecases/channel/GetChannelStateUseCaseTest.kt b/app/src/test/java/org/supla/android/usecases/channel/GetChannelStateUseCaseTest.kt index 0fe47fc26..f003736cb 100644 --- a/app/src/test/java/org/supla/android/usecases/channel/GetChannelStateUseCaseTest.kt +++ b/app/src/test/java/org/supla/android/usecases/channel/GetChannelStateUseCaseTest.kt @@ -28,9 +28,9 @@ import org.mockito.junit.MockitoJUnitRunner import org.supla.android.data.model.general.ChannelState import org.supla.android.data.source.local.entity.ChannelValueEntity import org.supla.android.data.source.local.entity.complex.ChannelDataEntity -import org.supla.android.data.source.remote.channel.SuplaChannelFunction import org.supla.android.data.source.remote.hvac.ThermostatSubfunction import org.supla.android.usecases.group.GetGroupActivePercentageUseCase +import org.supla.core.shared.data.SuplaChannelFunction @RunWith(MockitoJUnitRunner::class) class GetChannelStateUseCaseTest { diff --git a/app/src/test/java/org/supla/android/usecases/channel/GetChannelValueStringUseCaseTest.kt b/app/src/test/java/org/supla/android/usecases/channel/GetChannelValueStringUseCaseTest.kt index 66ddbd37e..096cb6b0d 100644 --- a/app/src/test/java/org/supla/android/usecases/channel/GetChannelValueStringUseCaseTest.kt +++ b/app/src/test/java/org/supla/android/usecases/channel/GetChannelValueStringUseCaseTest.kt @@ -31,7 +31,6 @@ import org.mockito.kotlin.verifyNoMoreInteractions import org.mockito.kotlin.whenever import org.supla.android.data.ValuesFormatter import org.supla.android.data.source.local.entity.complex.ChannelDataEntity -import org.supla.android.data.source.remote.channel.SuplaChannelFunction import org.supla.android.usecases.channel.stringvalueprovider.DepthSensorValueStringProvider import org.supla.android.usecases.channel.stringvalueprovider.DistanceSensorValueStringProvider import org.supla.android.usecases.channel.stringvalueprovider.ElectricityMeterValueStringProvider @@ -40,6 +39,7 @@ import org.supla.android.usecases.channel.stringvalueprovider.HumidityAndTempera import org.supla.android.usecases.channel.stringvalueprovider.ImpulseCounterValueStringProvider import org.supla.android.usecases.channel.stringvalueprovider.SwitchWithElectricityMeterValueStringProvider import org.supla.android.usecases.channel.stringvalueprovider.ThermometerValueStringProvider +import org.supla.core.shared.data.SuplaChannelFunction @RunWith(MockitoJUnitRunner::class) class GetChannelValueStringUseCaseTest { diff --git a/app/src/test/java/org/supla/android/usecases/channel/GetChannelValueUseCaseTest.kt b/app/src/test/java/org/supla/android/usecases/channel/GetChannelValueUseCaseTest.kt index 977055471..502f7817b 100644 --- a/app/src/test/java/org/supla/android/usecases/channel/GetChannelValueUseCaseTest.kt +++ b/app/src/test/java/org/supla/android/usecases/channel/GetChannelValueUseCaseTest.kt @@ -30,7 +30,6 @@ import org.mockito.kotlin.verifyNoInteractions import org.mockito.kotlin.verifyNoMoreInteractions import org.mockito.kotlin.whenever import org.supla.android.data.source.local.entity.complex.ChannelDataEntity -import org.supla.android.data.source.remote.channel.SuplaChannelFunction import org.supla.android.usecases.channel.valueprovider.DepthSensorValueProvider import org.supla.android.usecases.channel.valueprovider.DistanceSensorValueProvider import org.supla.android.usecases.channel.valueprovider.ElectricityMeterValueProvider @@ -39,6 +38,7 @@ import org.supla.android.usecases.channel.valueprovider.HumidityAndTemperatureVa import org.supla.android.usecases.channel.valueprovider.ImpulseCounterValueProvider import org.supla.android.usecases.channel.valueprovider.SwitchWithElectricityMeterValueProvider import org.supla.android.usecases.channel.valueprovider.ThermometerValueProvider +import org.supla.core.shared.data.SuplaChannelFunction @RunWith(MockitoJUnitRunner::class) class GetChannelValueUseCaseTest { diff --git a/app/src/test/java/org/supla/android/usecases/channel/GroupActionUseCaseTest.kt b/app/src/test/java/org/supla/android/usecases/channel/GroupActionUseCaseTest.kt index 47e973888..02aac0f6c 100644 --- a/app/src/test/java/org/supla/android/usecases/channel/GroupActionUseCaseTest.kt +++ b/app/src/test/java/org/supla/android/usecases/channel/GroupActionUseCaseTest.kt @@ -18,10 +18,10 @@ import org.supla.android.core.networking.suplaclient.SuplaClientApi import org.supla.android.core.networking.suplaclient.SuplaClientProvider import org.supla.android.data.source.ChannelGroupRepository import org.supla.android.data.source.local.entity.complex.ChannelGroupDataEntity -import org.supla.android.data.source.remote.channel.SuplaChannelFunction import org.supla.android.lib.actions.ActionId import org.supla.android.lib.actions.ActionParameters import org.supla.android.lib.actions.SubjectType +import org.supla.core.shared.data.SuplaChannelFunction @RunWith(MockitoJUnitRunner::class) class GroupActionUseCaseTest { diff --git a/app/src/test/java/org/supla/android/usecases/channel/LoadChannelConfigUseCaseTest.kt b/app/src/test/java/org/supla/android/usecases/channel/LoadChannelConfigUseCaseTest.kt index b39c9c168..6e4d26606 100644 --- a/app/src/test/java/org/supla/android/usecases/channel/LoadChannelConfigUseCaseTest.kt +++ b/app/src/test/java/org/supla/android/usecases/channel/LoadChannelConfigUseCaseTest.kt @@ -35,8 +35,8 @@ import org.supla.android.data.source.RoomChannelRepository import org.supla.android.data.source.local.entity.ChannelEntity import org.supla.android.data.source.remote.ChannelConfigType import org.supla.android.data.source.remote.SuplaChannelConfig -import org.supla.android.data.source.remote.channel.SuplaChannelFunction import org.supla.android.usecases.channelconfig.LoadChannelConfigUseCase +import org.supla.core.shared.data.SuplaChannelFunction @RunWith(MockitoJUnitRunner::class) class LoadChannelConfigUseCaseTest { diff --git a/app/src/test/java/org/supla/android/usecases/channel/LoadChannelMeasurementsDataRangeUseCaseTest.kt b/app/src/test/java/org/supla/android/usecases/channel/LoadChannelMeasurementsDataRangeUseCaseTest.kt index 12fa0b754..37f9a0245 100644 --- a/app/src/test/java/org/supla/android/usecases/channel/LoadChannelMeasurementsDataRangeUseCaseTest.kt +++ b/app/src/test/java/org/supla/android/usecases/channel/LoadChannelMeasurementsDataRangeUseCaseTest.kt @@ -33,8 +33,8 @@ import org.mockito.junit.MockitoJUnitRunner import org.supla.android.data.model.Optional import org.supla.android.data.model.chart.DateRange import org.supla.android.data.source.local.entity.complex.ChannelDataEntity -import org.supla.android.data.source.remote.channel.SuplaChannelFunction import org.supla.android.extensions.date +import org.supla.core.shared.data.SuplaChannelFunction @RunWith(MockitoJUnitRunner::class) class LoadChannelMeasurementsDataRangeUseCaseTest { diff --git a/app/src/test/java/org/supla/android/usecases/channel/LoadChannelMeasurementsUseCaseTest.kt b/app/src/test/java/org/supla/android/usecases/channel/LoadChannelMeasurementsUseCaseTest.kt index 3b1073e39..5538ec75f 100644 --- a/app/src/test/java/org/supla/android/usecases/channel/LoadChannelMeasurementsUseCaseTest.kt +++ b/app/src/test/java/org/supla/android/usecases/channel/LoadChannelMeasurementsUseCaseTest.kt @@ -32,12 +32,12 @@ import org.junit.Test import org.supla.android.data.model.chart.ChannelChartSets import org.supla.android.data.model.chart.ChartDataSpec import org.supla.android.data.source.local.entity.complex.ChannelDataEntity -import org.supla.android.data.source.remote.channel.SuplaChannelFunction import org.supla.android.usecases.channel.measurementsprovider.ElectricityConsumptionMeasurementsProvider import org.supla.android.usecases.channel.measurementsprovider.GeneralPurposeMeasurementMeasurementsProvider import org.supla.android.usecases.channel.measurementsprovider.GeneralPurposeMeterMeasurementsProvider import org.supla.android.usecases.channel.measurementsprovider.TemperatureAndHumidityMeasurementsProvider import org.supla.android.usecases.channel.measurementsprovider.TemperatureMeasurementsProvider +import org.supla.core.shared.data.SuplaChannelFunction class LoadChannelMeasurementsUseCaseTest : BaseLoadMeasurementsUseCaseTest() { diff --git a/app/src/test/java/org/supla/android/usecases/channel/LoadChannelWithChildrenMeasurementsDateRangeUseCaseTest.kt b/app/src/test/java/org/supla/android/usecases/channel/LoadChannelWithChildrenMeasurementsDateRangeUseCaseTest.kt index ac3e8b6b4..d02ec36a4 100644 --- a/app/src/test/java/org/supla/android/usecases/channel/LoadChannelWithChildrenMeasurementsDateRangeUseCaseTest.kt +++ b/app/src/test/java/org/supla/android/usecases/channel/LoadChannelWithChildrenMeasurementsDateRangeUseCaseTest.kt @@ -41,8 +41,8 @@ import org.supla.android.data.source.local.entity.ChannelRelationType import org.supla.android.data.source.local.entity.complex.ChannelChildEntity import org.supla.android.data.source.local.entity.complex.ChannelDataEntity import org.supla.android.data.source.local.entity.custom.ChannelWithChildren -import org.supla.android.data.source.remote.channel.SuplaChannelFunction import org.supla.android.extensions.date +import org.supla.core.shared.data.SuplaChannelFunction @RunWith(MockitoJUnitRunner::class) class LoadChannelWithChildrenMeasurementsDateRangeUseCaseTest { diff --git a/app/src/test/java/org/supla/android/usecases/channel/LoadChannelWithChildrenMeasurementsUseCaseTest.kt b/app/src/test/java/org/supla/android/usecases/channel/LoadChannelWithChildrenMeasurementsUseCaseTest.kt index aec5791db..b8168331d 100644 --- a/app/src/test/java/org/supla/android/usecases/channel/LoadChannelWithChildrenMeasurementsUseCaseTest.kt +++ b/app/src/test/java/org/supla/android/usecases/channel/LoadChannelWithChildrenMeasurementsUseCaseTest.kt @@ -39,10 +39,10 @@ import org.supla.android.data.source.local.entity.ChannelRelationType import org.supla.android.data.source.local.entity.complex.ChannelChildEntity import org.supla.android.data.source.local.entity.complex.ChannelDataEntity import org.supla.android.data.source.local.entity.custom.ChannelWithChildren -import org.supla.android.data.source.remote.channel.SuplaChannelFunction import org.supla.android.extensions.date import org.supla.android.usecases.channel.measurementsprovider.TemperatureAndHumidityMeasurementsProvider import org.supla.android.usecases.channel.measurementsprovider.TemperatureMeasurementsProvider +import org.supla.core.shared.data.SuplaChannelFunction @RunWith(MockitoJUnitRunner::class) class LoadChannelWithChildrenMeasurementsUseCaseTest : BaseLoadMeasurementsUseCaseTest() { diff --git a/app/src/test/java/org/supla/android/usecases/channel/UpdateChannelUseCaseTest.kt b/app/src/test/java/org/supla/android/usecases/channel/UpdateChannelUseCaseTest.kt index 527a1629a..ab8204da7 100644 --- a/app/src/test/java/org/supla/android/usecases/channel/UpdateChannelUseCaseTest.kt +++ b/app/src/test/java/org/supla/android/usecases/channel/UpdateChannelUseCaseTest.kt @@ -41,13 +41,13 @@ import org.supla.android.data.source.RoomProfileRepository import org.supla.android.data.source.local.entity.ChannelEntity import org.supla.android.data.source.local.entity.LocationEntity import org.supla.android.data.source.local.entity.ProfileEntity -import org.supla.android.data.source.remote.channel.SuplaChannelFunction import org.supla.android.db.Location import org.supla.android.testhelpers.suplaChannel import org.supla.android.usecases.channelconfig.RequestChannelConfigUseCase import org.supla.android.widget.WidgetConfiguration import org.supla.android.widget.WidgetManager import org.supla.android.widget.WidgetPreferences +import org.supla.core.shared.data.SuplaChannelFunction @Suppress("UnusedDataClassCopyResult") @RunWith(MockitoJUnitRunner::class) diff --git a/app/src/test/java/org/supla/android/usecases/channel/valueprovider/DepthSensorValueProviderTest.kt b/app/src/test/java/org/supla/android/usecases/channel/valueprovider/DepthSensorValueProviderTest.kt index 80c03587c..fd1051b94 100644 --- a/app/src/test/java/org/supla/android/usecases/channel/valueprovider/DepthSensorValueProviderTest.kt +++ b/app/src/test/java/org/supla/android/usecases/channel/valueprovider/DepthSensorValueProviderTest.kt @@ -8,7 +8,7 @@ import org.junit.runner.RunWith import org.mockito.InjectMocks import org.mockito.junit.MockitoJUnitRunner import org.supla.android.data.source.local.entity.complex.ChannelDataEntity -import org.supla.android.data.source.remote.channel.SuplaChannelFunction +import org.supla.core.shared.data.SuplaChannelFunction @RunWith(MockitoJUnitRunner::class) class DepthSensorValueProviderTest : BaseDoubleValueProviderTest() { diff --git a/app/src/test/java/org/supla/android/usecases/channel/valueprovider/GpmValueProviderTest.kt b/app/src/test/java/org/supla/android/usecases/channel/valueprovider/GpmValueProviderTest.kt index 599694183..1daaded79 100644 --- a/app/src/test/java/org/supla/android/usecases/channel/valueprovider/GpmValueProviderTest.kt +++ b/app/src/test/java/org/supla/android/usecases/channel/valueprovider/GpmValueProviderTest.kt @@ -8,7 +8,7 @@ import org.junit.runner.RunWith import org.mockito.InjectMocks import org.mockito.junit.MockitoJUnitRunner import org.supla.android.data.source.local.entity.complex.ChannelDataEntity -import org.supla.android.data.source.remote.channel.SuplaChannelFunction +import org.supla.core.shared.data.SuplaChannelFunction @RunWith(MockitoJUnitRunner::class) class GpmValueProviderTest : BaseDoubleValueProviderTest() { diff --git a/app/src/test/java/org/supla/android/usecases/channel/valueprovider/HumidityAndTemperatureValueProviderTest.kt b/app/src/test/java/org/supla/android/usecases/channel/valueprovider/HumidityAndTemperatureValueProviderTest.kt index c893bc9a0..92d7ceecf 100644 --- a/app/src/test/java/org/supla/android/usecases/channel/valueprovider/HumidityAndTemperatureValueProviderTest.kt +++ b/app/src/test/java/org/supla/android/usecases/channel/valueprovider/HumidityAndTemperatureValueProviderTest.kt @@ -8,8 +8,8 @@ import org.junit.runner.RunWith import org.mockito.InjectMocks import org.mockito.junit.MockitoJUnitRunner import org.supla.android.data.source.local.entity.complex.ChannelDataEntity -import org.supla.android.data.source.remote.channel.SuplaChannelFunction import org.supla.android.usecases.channel.ValueType +import org.supla.core.shared.data.SuplaChannelFunction @RunWith(MockitoJUnitRunner::class) class HumidityAndTemperatureValueProviderTest { diff --git a/app/src/test/java/org/supla/android/usecases/channel/valueprovider/ThermometerValueProviderTest.kt b/app/src/test/java/org/supla/android/usecases/channel/valueprovider/ThermometerValueProviderTest.kt index 5bd3f1176..0a8d70a2c 100644 --- a/app/src/test/java/org/supla/android/usecases/channel/valueprovider/ThermometerValueProviderTest.kt +++ b/app/src/test/java/org/supla/android/usecases/channel/valueprovider/ThermometerValueProviderTest.kt @@ -8,7 +8,7 @@ import org.junit.runner.RunWith import org.mockito.InjectMocks import org.mockito.junit.MockitoJUnitRunner import org.supla.android.data.source.local.entity.complex.ChannelDataEntity -import org.supla.android.data.source.remote.channel.SuplaChannelFunction +import org.supla.core.shared.data.SuplaChannelFunction @RunWith(MockitoJUnitRunner::class) class ThermometerValueProviderTest : BaseDoubleValueProviderTest() { diff --git a/app/src/test/java/org/supla/android/usecases/details/ProvideChannelDetailTypeUseCaseTest.kt b/app/src/test/java/org/supla/android/usecases/details/ProvideChannelDetailTypeUseCaseTest.kt index 06936284f..ecdf1950a 100644 --- a/app/src/test/java/org/supla/android/usecases/details/ProvideChannelDetailTypeUseCaseTest.kt +++ b/app/src/test/java/org/supla/android/usecases/details/ProvideChannelDetailTypeUseCaseTest.kt @@ -28,10 +28,10 @@ import org.supla.android.data.source.local.entity.ChannelValueEntity import org.supla.android.data.source.local.entity.complex.ChannelDataEntity import org.supla.android.data.source.local.entity.custom.ChannelWithChildren import org.supla.android.data.source.remote.channel.SuplaChannelFlag -import org.supla.android.data.source.remote.channel.SuplaChannelFunction import org.supla.android.features.details.detailbase.standarddetail.DetailPage import org.supla.android.lib.SuplaChannelValue.SUBV_TYPE_ELECTRICITY_MEASUREMENTS import org.supla.android.lib.SuplaChannelValue.SUBV_TYPE_IC_MEASUREMENTS +import org.supla.core.shared.data.SuplaChannelFunction @RunWith(MockitoJUnitRunner::class) class ProvideChannelDetailTypeUseCaseTest { diff --git a/app/src/test/java/org/supla/android/usecases/details/ProvideGroupDetailTypeUseCaseTest.kt b/app/src/test/java/org/supla/android/usecases/details/ProvideGroupDetailTypeUseCaseTest.kt index dcc1289e1..9c8b5bd5a 100644 --- a/app/src/test/java/org/supla/android/usecases/details/ProvideGroupDetailTypeUseCaseTest.kt +++ b/app/src/test/java/org/supla/android/usecases/details/ProvideGroupDetailTypeUseCaseTest.kt @@ -25,8 +25,8 @@ import org.junit.runner.RunWith import org.mockito.InjectMocks import org.mockito.junit.MockitoJUnitRunner import org.supla.android.data.source.local.entity.complex.ChannelDataEntity -import org.supla.android.data.source.remote.channel.SuplaChannelFunction import org.supla.android.features.details.detailbase.standarddetail.DetailPage +import org.supla.core.shared.data.SuplaChannelFunction @RunWith(MockitoJUnitRunner::class) class ProvideGroupDetailTypeUseCaseTest { diff --git a/app/src/test/java/org/supla/android/usecases/group/GetGroupActivePercentageUseCaseTest.kt b/app/src/test/java/org/supla/android/usecases/group/GetGroupActivePercentageUseCaseTest.kt index 3afa14118..7f0ea82fe 100644 --- a/app/src/test/java/org/supla/android/usecases/group/GetGroupActivePercentageUseCaseTest.kt +++ b/app/src/test/java/org/supla/android/usecases/group/GetGroupActivePercentageUseCaseTest.kt @@ -25,7 +25,7 @@ import org.junit.runner.RunWith import org.mockito.InjectMocks import org.mockito.junit.MockitoJUnitRunner import org.supla.android.data.source.local.entity.ChannelGroupEntity -import org.supla.android.data.source.remote.channel.SuplaChannelFunction +import org.supla.core.shared.data.SuplaChannelFunction @RunWith(MockitoJUnitRunner::class) class GetGroupActivePercentageUseCaseTest { diff --git a/app/src/test/java/org/supla/android/usecases/group/ReadGroupTiltingDetailsUseCaseTest.kt b/app/src/test/java/org/supla/android/usecases/group/ReadGroupTiltingDetailsUseCaseTest.kt index 7bfb5d0fa..c7b9d80d7 100644 --- a/app/src/test/java/org/supla/android/usecases/group/ReadGroupTiltingDetailsUseCaseTest.kt +++ b/app/src/test/java/org/supla/android/usecases/group/ReadGroupTiltingDetailsUseCaseTest.kt @@ -16,9 +16,9 @@ import org.supla.android.data.source.ChannelGroupRelationRepository import org.supla.android.data.source.local.entity.ChannelEntity import org.supla.android.data.source.local.entity.complex.ChannelGroupRelationDataEntity import org.supla.android.data.source.remote.ChannelConfigType -import org.supla.android.data.source.remote.channel.SuplaChannelFunction import org.supla.android.data.source.remote.rollershutter.SuplaChannelFacadeBlindConfig import org.supla.android.data.source.remote.rollershutter.SuplaTiltControlType +import org.supla.core.shared.data.SuplaChannelFunction class ReadGroupTiltingDetailsUseCaseTest { diff --git a/app/src/test/java/org/supla/android/usecases/group/UpdateChannelGroupTotalValueUseCaseTest.kt b/app/src/test/java/org/supla/android/usecases/group/UpdateChannelGroupTotalValueUseCaseTest.kt index f4f1c7c7e..86c317d64 100644 --- a/app/src/test/java/org/supla/android/usecases/group/UpdateChannelGroupTotalValueUseCaseTest.kt +++ b/app/src/test/java/org/supla/android/usecases/group/UpdateChannelGroupTotalValueUseCaseTest.kt @@ -38,7 +38,7 @@ import org.supla.android.data.source.ChannelGroupRepository import org.supla.android.data.source.local.entity.ChannelGroupEntity import org.supla.android.data.source.local.entity.ChannelValueEntity import org.supla.android.data.source.local.entity.complex.ChannelGroupRelationDataEntity -import org.supla.android.data.source.remote.channel.SuplaChannelFunction +import org.supla.core.shared.data.SuplaChannelFunction @Suppress("SameParameterValue") @RunWith(MockitoJUnitRunner::class) diff --git a/app/src/test/java/org/supla/android/usecases/icon/GetChannelIconUseCaseTest.kt b/app/src/test/java/org/supla/android/usecases/icon/GetChannelIconUseCaseTest.kt index 741fdad09..59e7da1c5 100644 --- a/app/src/test/java/org/supla/android/usecases/icon/GetChannelIconUseCaseTest.kt +++ b/app/src/test/java/org/supla/android/usecases/icon/GetChannelIconUseCaseTest.kt @@ -30,7 +30,6 @@ import org.mockito.kotlin.whenever import org.supla.android.data.model.general.ChannelState import org.supla.android.data.model.general.IconType import org.supla.android.data.source.local.entity.complex.ChannelDataEntity -import org.supla.android.data.source.remote.channel.SuplaChannelFunction import org.supla.android.db.Channel import org.supla.android.db.ChannelBase import org.supla.android.images.ImageCacheProxy @@ -41,6 +40,7 @@ import org.supla.android.lib.SuplaConst.SUPLA_CHANNELFNC_LIGHTSWITCH import org.supla.android.lib.SuplaConst.SUPLA_CHANNELFNC_THERMOMETER import org.supla.android.usecases.channel.GetChannelStateUseCase import org.supla.android.usecases.channel.ValueStateWrapper +import org.supla.core.shared.data.SuplaChannelFunction @Suppress("SameParameterValue") @RunWith(MockitoJUnitRunner::class) diff --git a/app/src/test/java/org/supla/android/usecases/list/eventmappers/ChannelWithChildrenToIconValueItemUpdateEventMapperTest.kt b/app/src/test/java/org/supla/android/usecases/list/eventmappers/ChannelWithChildrenToIconValueItemUpdateEventMapperTest.kt index eba2e649e..4b0942852 100644 --- a/app/src/test/java/org/supla/android/usecases/list/eventmappers/ChannelWithChildrenToIconValueItemUpdateEventMapperTest.kt +++ b/app/src/test/java/org/supla/android/usecases/list/eventmappers/ChannelWithChildrenToIconValueItemUpdateEventMapperTest.kt @@ -29,7 +29,6 @@ import org.mockito.junit.MockitoJUnitRunner import org.mockito.kotlin.whenever import org.supla.android.data.source.local.entity.complex.ChannelDataEntity import org.supla.android.data.source.local.entity.custom.ChannelWithChildren -import org.supla.android.data.source.remote.channel.SuplaChannelFunction import org.supla.android.db.Channel import org.supla.android.images.ImageId import org.supla.android.ui.lists.ListOnlineState @@ -37,6 +36,7 @@ import org.supla.android.ui.lists.data.SlideableListItemData import org.supla.android.usecases.channel.GetChannelCaptionUseCase import org.supla.android.usecases.channel.GetChannelValueStringUseCase import org.supla.android.usecases.icon.GetChannelIconUseCase +import org.supla.core.shared.data.SuplaChannelFunction @RunWith(MockitoJUnitRunner::class) class ChannelWithChildrenToIconValueItemUpdateEventMapperTest { diff --git a/app/src/test/java/org/supla/android/usecases/list/eventmappers/ChannelWithChildrenToThermostatUpdateEventMapperTest.kt b/app/src/test/java/org/supla/android/usecases/list/eventmappers/ChannelWithChildrenToThermostatUpdateEventMapperTest.kt index 81d3bb2e4..88b55da75 100644 --- a/app/src/test/java/org/supla/android/usecases/list/eventmappers/ChannelWithChildrenToThermostatUpdateEventMapperTest.kt +++ b/app/src/test/java/org/supla/android/usecases/list/eventmappers/ChannelWithChildrenToThermostatUpdateEventMapperTest.kt @@ -34,7 +34,6 @@ import org.supla.android.data.source.local.entity.complex.ChannelChildEntity import org.supla.android.data.source.local.entity.complex.ChannelDataEntity import org.supla.android.data.source.local.entity.custom.ChannelWithChildren import org.supla.android.data.source.remote.channel.SuplaChannelFlag -import org.supla.android.data.source.remote.channel.SuplaChannelFunction import org.supla.android.data.source.remote.thermostat.ThermostatIndicatorIcon import org.supla.android.data.source.remote.thermostat.ThermostatValue import org.supla.android.db.Channel @@ -49,6 +48,7 @@ import org.supla.android.ui.lists.data.SlideableListItemData import org.supla.android.usecases.channel.GetChannelCaptionUseCase import org.supla.android.usecases.channel.GetChannelValueStringUseCase import org.supla.android.usecases.icon.GetChannelIconUseCase +import org.supla.core.shared.data.SuplaChannelFunction @RunWith(MockitoJUnitRunner::class) class ChannelWithChildrenToThermostatUpdateEventMapperTest { diff --git a/app/src/test/java/org/supla/android/usecases/thermostat/CreateTemperaturesListUseCaseTest.kt b/app/src/test/java/org/supla/android/usecases/thermostat/CreateTemperaturesListUseCaseTest.kt index 72ae300ec..9db33edec 100644 --- a/app/src/test/java/org/supla/android/usecases/thermostat/CreateTemperaturesListUseCaseTest.kt +++ b/app/src/test/java/org/supla/android/usecases/thermostat/CreateTemperaturesListUseCaseTest.kt @@ -32,12 +32,12 @@ import org.supla.android.data.source.local.entity.ChannelRelationType import org.supla.android.data.source.local.entity.complex.ChannelChildEntity import org.supla.android.data.source.local.entity.complex.ChannelDataEntity import org.supla.android.data.source.local.entity.custom.ChannelWithChildren -import org.supla.android.data.source.remote.channel.SuplaChannelFunction import org.supla.android.features.details.thermostatdetail.general.MeasurementValue import org.supla.android.images.ImageId import org.supla.android.usecases.channel.GetChannelValueStringUseCase import org.supla.android.usecases.channel.ValueType import org.supla.android.usecases.icon.GetChannelIconUseCase +import org.supla.core.shared.data.SuplaChannelFunction class CreateTemperaturesListUseCaseTest { diff --git a/build.gradle.kts b/build.gradle.kts index b5fa34946..7543821b7 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,5 +1,6 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. plugins { + kotlin("multiplatform") version "2.0.21" apply false id("com.google.dagger.hilt.android") version Versions.Hilt apply false } diff --git a/settings.gradle.kts b/settings.gradle.kts index 8a109a878..7116b4c9e 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1 +1,2 @@ -include(":app") \ No newline at end of file +include(":app") +include(":shared-core") diff --git a/shared-core/.gitignore b/shared-core/.gitignore new file mode 100644 index 000000000..42afabfd2 --- /dev/null +++ b/shared-core/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/shared-core/build.gradle.kts b/shared-core/build.gradle.kts new file mode 100644 index 000000000..d9edfbada --- /dev/null +++ b/shared-core/build.gradle.kts @@ -0,0 +1,63 @@ +import org.jetbrains.kotlin.gradle.plugin.mpp.apple.XCFramework + +plugins { + kotlin("multiplatform") + id("com.android.library") +} + +android { + namespace = "org.supla.core.shared" + compileSdk = 34 + + defaultConfig { + minSdk = 24 + + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + } + + buildTypes { + release { + isMinifyEnabled = false + } + create("internaltest") { + initWith(buildTypes.getByName("debug")) + } + } + compileOptions { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 + } +} + +kotlin { + androidTarget() + + val xcf = XCFramework() + + listOf( + iosX64(), + iosArm64(), + iosSimulatorArm64() + ).forEach { + it.binaries.framework { + baseName = "shared-core" + xcf.add(this) + } + } + + sourceSets { + val commonMain by getting + val iosX64Main by getting + val iosArm64Main by getting + val iosSimulatorArm64Main by getting + } +} + +dependencies { + testImplementation("junit:junit:4.13.2") +} + +tasks.register("applyXCFramework") { + commandLine("cp", "-R", "build/XCFrameworks/release/shared_core.xcframework", "../../supla-ios") + dependsOn("assembleXCFramework") +} \ No newline at end of file diff --git a/app/src/main/java/org/supla/android/data/source/remote/channel/SuplaChannelFunction.kt b/shared-core/src/commonMain/kotlin/org/supla/core/shared/data/SuplaChannelFunction.kt similarity index 98% rename from app/src/main/java/org/supla/android/data/source/remote/channel/SuplaChannelFunction.kt rename to shared-core/src/commonMain/kotlin/org/supla/core/shared/data/SuplaChannelFunction.kt index 71dba7802..8de28669b 100644 --- a/app/src/main/java/org/supla/android/data/source/remote/channel/SuplaChannelFunction.kt +++ b/shared-core/src/commonMain/kotlin/org/supla/core/shared/data/SuplaChannelFunction.kt @@ -1,4 +1,4 @@ -package org.supla.android.data.source.remote.channel +package org.supla.core.shared.data /* Copyright (C) AC SOFTWARE SP. Z O.O. diff --git a/shared-core/src/commonMain/kotlin/org/supla/core/shared/infrastructure/LocalizedString.kt b/shared-core/src/commonMain/kotlin/org/supla/core/shared/infrastructure/LocalizedString.kt new file mode 100644 index 000000000..c9ccafe8e --- /dev/null +++ b/shared-core/src/commonMain/kotlin/org/supla/core/shared/infrastructure/LocalizedString.kt @@ -0,0 +1,29 @@ +package org.supla.core.shared.infrastructure +/* + Copyright (C) AC SOFTWARE SP. Z O.O. + + This program 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 2 + of the License, or (at your option) any later version. + + This program 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, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +enum class LocalizedString { + GENERAL_TURN_ON, + GENERAL_TURN_OFF, + GENERAL_OPEN, + GENERAL_CLOSE, + GENERAL_SHUT, + GENERAL_REVEAL, + GENERAL_COLLAPSE, + GENERAL_EXPAND +} \ No newline at end of file diff --git a/shared-core/src/commonMain/kotlin/org/supla/core/shared/usecase/GetChannelActionStringUseCase.kt b/shared-core/src/commonMain/kotlin/org/supla/core/shared/usecase/GetChannelActionStringUseCase.kt new file mode 100644 index 000000000..1fc103453 --- /dev/null +++ b/shared-core/src/commonMain/kotlin/org/supla/core/shared/usecase/GetChannelActionStringUseCase.kt @@ -0,0 +1,63 @@ +package org.supla.core.shared.usecase +/* + Copyright (C) AC SOFTWARE SP. Z O.O. + + This program 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 2 + of the License, or (at your option) any later version. + + This program 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, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +import org.supla.core.shared.data.SuplaChannelFunction +import org.supla.core.shared.infrastructure.LocalizedString + +class GetChannelActionStringUseCase { + fun rightButton(function: SuplaChannelFunction): LocalizedString? = + when (function) { + SuplaChannelFunction.CONTROLLING_THE_ROOF_WINDOW, + SuplaChannelFunction.ROLLER_GARAGE_DOOR -> LocalizedString.GENERAL_OPEN + + SuplaChannelFunction.CONTROLLING_THE_FACADE_BLIND, + SuplaChannelFunction.CONTROLLING_THE_ROLLER_SHUTTER, + SuplaChannelFunction.VERTICAL_BLIND, + SuplaChannelFunction.CURTAIN -> LocalizedString.GENERAL_REVEAL + + SuplaChannelFunction.TERRACE_AWNING, + SuplaChannelFunction.PROJECTOR_SCREEN -> LocalizedString.GENERAL_COLLAPSE + + SuplaChannelFunction.POWER_SWITCH, + SuplaChannelFunction.LIGHTSWITCH, + SuplaChannelFunction.STAIRCASE_TIMER -> LocalizedString.GENERAL_TURN_ON + + else -> null + } + + fun leftButton(function: SuplaChannelFunction): LocalizedString? = + when (function) { + SuplaChannelFunction.CONTROLLING_THE_ROOF_WINDOW, + SuplaChannelFunction.ROLLER_GARAGE_DOOR -> LocalizedString.GENERAL_CLOSE + + SuplaChannelFunction.CONTROLLING_THE_FACADE_BLIND, + SuplaChannelFunction.CONTROLLING_THE_ROLLER_SHUTTER, + SuplaChannelFunction.VERTICAL_BLIND, + SuplaChannelFunction.CURTAIN -> LocalizedString.GENERAL_SHUT + + SuplaChannelFunction.TERRACE_AWNING, + SuplaChannelFunction.PROJECTOR_SCREEN -> LocalizedString.GENERAL_EXPAND + + SuplaChannelFunction.POWER_SWITCH, + SuplaChannelFunction.LIGHTSWITCH, + SuplaChannelFunction.STAIRCASE_TIMER -> LocalizedString.GENERAL_TURN_OFF + + else -> null + } +} \ No newline at end of file From 04d7b4e30b960a59c9dee812f5678b5401c13be6 Mon Sep 17 00:00:00 2001 From: Michal Polanski Date: Wed, 23 Oct 2024 10:41:06 +0200 Subject: [PATCH 2/8] Fix warning about missing string value provider --- .../channel/GetChannelValueStringUseCase.kt | 9 ++++-- .../NoValueStringProvider.kt | 29 +++++++++++++++++++ 2 files changed, 36 insertions(+), 2 deletions(-) create mode 100644 app/src/main/java/org/supla/android/usecases/channel/stringvalueprovider/NoValueStringProvider.kt diff --git a/app/src/main/java/org/supla/android/usecases/channel/GetChannelValueStringUseCase.kt b/app/src/main/java/org/supla/android/usecases/channel/GetChannelValueStringUseCase.kt index 84d2261d5..7fc11dd62 100644 --- a/app/src/main/java/org/supla/android/usecases/channel/GetChannelValueStringUseCase.kt +++ b/app/src/main/java/org/supla/android/usecases/channel/GetChannelValueStringUseCase.kt @@ -27,8 +27,10 @@ import org.supla.android.usecases.channel.stringvalueprovider.ElectricityMeterVa import org.supla.android.usecases.channel.stringvalueprovider.GpmValueStringProvider import org.supla.android.usecases.channel.stringvalueprovider.HumidityAndTemperatureValueStringProvider import org.supla.android.usecases.channel.stringvalueprovider.ImpulseCounterValueStringProvider +import org.supla.android.usecases.channel.stringvalueprovider.NoValueStringProvider import org.supla.android.usecases.channel.stringvalueprovider.SwitchWithElectricityMeterValueStringProvider import org.supla.android.usecases.channel.stringvalueprovider.ThermometerValueStringProvider +import org.supla.core.shared.data.SuplaChannelFunction import javax.inject.Inject import javax.inject.Singleton @@ -52,7 +54,10 @@ class GetChannelValueStringUseCase @Inject constructor( distanceSensorValueStringProvider, electricityMeterValueStringProvider, switchWithElectricityMeterValueStringProvider, - impulseCounterValueStringProvider + impulseCounterValueStringProvider, + NoValueStringProvider(SuplaChannelFunction.STAIRCASE_TIMER), + NoValueStringProvider(SuplaChannelFunction.POWER_SWITCH), + NoValueStringProvider(SuplaChannelFunction.LIGHTSWITCH) ) operator fun invoke(channel: ChannelDataEntity, valueType: ValueType = ValueType.FIRST, withUnit: Boolean = true): String { @@ -79,5 +84,5 @@ enum class ValueType { interface ChannelValueStringProvider { fun handle(channelData: ChannelDataEntity): Boolean - fun value(channelData: ChannelDataEntity, valueType: ValueType, withUnit: Boolean = true): String + fun value(channelData: ChannelDataEntity, valueType: ValueType, withUnit: Boolean = true): String? } diff --git a/app/src/main/java/org/supla/android/usecases/channel/stringvalueprovider/NoValueStringProvider.kt b/app/src/main/java/org/supla/android/usecases/channel/stringvalueprovider/NoValueStringProvider.kt new file mode 100644 index 000000000..fa02715b3 --- /dev/null +++ b/app/src/main/java/org/supla/android/usecases/channel/stringvalueprovider/NoValueStringProvider.kt @@ -0,0 +1,29 @@ +package org.supla.android.usecases.channel.stringvalueprovider +/* +Copyright (C) AC SOFTWARE SP. Z O.O. + +This program 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 2 +of the License, or (at your option) any later version. + +This program 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, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ + +import org.supla.android.data.source.local.entity.complex.ChannelDataEntity +import org.supla.android.usecases.channel.ChannelValueStringProvider +import org.supla.android.usecases.channel.ValueType +import org.supla.core.shared.data.SuplaChannelFunction + +class NoValueStringProvider(private val function: SuplaChannelFunction) : ChannelValueStringProvider { + override fun handle(channelData: ChannelDataEntity): Boolean = channelData.function == function + + override fun value(channelData: ChannelDataEntity, valueType: ValueType, withUnit: Boolean): String? = null +} From 003cd26e161a8b262bf03a75509798cfcbd6f5d0 Mon Sep 17 00:00:00 2001 From: Michal Polanski Date: Wed, 23 Oct 2024 10:43:33 +0200 Subject: [PATCH 3/8] Correct min height in thermostat detail for Sonoff devices --- .../details/thermostatdetail/general/ui/ThermostatDetail.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/supla/android/features/details/thermostatdetail/general/ui/ThermostatDetail.kt b/app/src/main/java/org/supla/android/features/details/thermostatdetail/general/ui/ThermostatDetail.kt index 893e1e155..f3e2b2d55 100644 --- a/app/src/main/java/org/supla/android/features/details/thermostatdetail/general/ui/ThermostatDetail.kt +++ b/app/src/main/java/org/supla/android/features/details/thermostatdetail/general/ui/ThermostatDetail.kt @@ -129,7 +129,7 @@ context (ColumnScope) @Composable private fun ThermostatView(viewState: ThermostatGeneralViewState, viewProxy: ThermostatGeneralViewProxy, modifier: Modifier = Modifier) { BoxWithConstraints(modifier = modifier) { - if (maxHeight < 250.dp) { + if (maxHeight < 298.dp) { if (viewState.isOff.not() && viewState.isAutoFunction && !viewState.programmedModeActive) { HeatingCoolingRowSmallScreen(viewState = viewState, viewProxy = viewProxy) } @@ -584,7 +584,7 @@ private fun PreviewSmall() { @Composable private fun PreviewVerySmall() { SuplaTheme { - Box(modifier = Modifier.height(330.dp)) { + Box(modifier = Modifier.height(381.dp)) { ThermostatDetail( PreviewProxy( ThermostatGeneralViewState( From bf5bebdf935405572c02d696d8632bda0957ff77 Mon Sep 17 00:00:00 2001 From: Michal Polanski Date: Wed, 23 Oct 2024 10:44:22 +0200 Subject: [PATCH 4/8] Fix shared-core XCFramework name --- shared-core/build.gradle.kts | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/shared-core/build.gradle.kts b/shared-core/build.gradle.kts index d9edfbada..48da18dc8 100644 --- a/shared-core/build.gradle.kts +++ b/shared-core/build.gradle.kts @@ -22,6 +22,9 @@ android { create("internaltest") { initWith(buildTypes.getByName("debug")) } + create("internalTestRelease") { + initWith(buildTypes.getByName("release")) + } } compileOptions { sourceCompatibility = JavaVersion.VERSION_17 @@ -32,7 +35,7 @@ android { kotlin { androidTarget() - val xcf = XCFramework() + val xcf = XCFramework("SharedCore") listOf( iosX64(), @@ -40,7 +43,7 @@ kotlin { iosSimulatorArm64() ).forEach { it.binaries.framework { - baseName = "shared-core" + baseName = "SharedCore" xcf.add(this) } } @@ -58,6 +61,6 @@ dependencies { } tasks.register("applyXCFramework") { - commandLine("cp", "-R", "build/XCFrameworks/release/shared_core.xcframework", "../../supla-ios") - dependsOn("assembleXCFramework") + commandLine("cp", "-R", "build/XCFrameworks/release/SharedCore.xcframework", "../../supla-ios") + dependsOn("assembleSharedCoreReleaseXCFramework") } \ No newline at end of file From 92a232068dbd4914008107ec8f2b2446a308239e Mon Sep 17 00:00:00 2001 From: Michal Polanski Date: Wed, 23 Oct 2024 10:46:15 +0200 Subject: [PATCH 5/8] Fix crashes in add device wizard --- .../android/AddDeviceWizardActivity.java | 53 ++++++++----------- .../org/supla/android/WizardActivity.java | 48 +++++++++++------ .../suplaclient/SuplaClientState.kt | 6 +-- .../suplaclient/SuplaClientStateHolder.kt | 2 + 4 files changed, 58 insertions(+), 51 deletions(-) diff --git a/app/src/main/java/org/supla/android/AddDeviceWizardActivity.java b/app/src/main/java/org/supla/android/AddDeviceWizardActivity.java index b91c5945f..8364cd59a 100644 --- a/app/src/main/java/org/supla/android/AddDeviceWizardActivity.java +++ b/app/src/main/java/org/supla/android/AddDeviceWizardActivity.java @@ -87,7 +87,6 @@ of the License, or (at your option) any later version. import org.supla.android.core.networking.suplaclient.SuplaClientEvent.AddWizardFinished; import org.supla.android.core.networking.suplaclient.SuplaClientEvent.AddWizardStopped; import org.supla.android.core.networking.suplaclient.SuplaClientState.Reason.AddWizardStarted; -import org.supla.android.core.networking.suplaclient.SuplaClientStateHolder; import org.supla.android.lib.SuplaConst; import org.supla.android.lib.SuplaRegistrationEnabled; import org.supla.android.profile.AuthInfo; @@ -167,7 +166,6 @@ public class AddDeviceWizardActivity extends WizardActivity @Inject ProfileManager profileManager; @Inject EspHtmlParser espHtmlParser; - @Inject SuplaClientStateHolder suplaClientStateHolder; @Inject DisconnectUseCase disconnectUseCase; @Inject SuplaSchedulers suplaSchedulers; @@ -446,8 +444,6 @@ protected void onStart() { return; } - SuplaApp.getApp().getSuplaClient(); - watchDog = new Timer(); watchDog.schedule( new TimerTask() { @@ -1117,23 +1113,20 @@ public void onAvailable(@NonNull Network network) { connectivityManager.bindProcessToNetwork(network); wizard.runOnUiThread( - new Runnable() { - @Override - public void run() { - unregisterReceivers(); - removeConfigTask(); - - espConfigTask = new ESPConfigureTask(espHtmlParser); - espConfigTask.setDelegate(wizard); - - setStep(STEP_CONFIGURE); - AuthInfo info = profileManager.getCurrentProfile().blockingGet().getAuthInfo(); - espConfigTask.execute( - getSelectedSSID(), - edPassword.getText().toString(), - info.getServerForEmail(), - info.getEmailAddress()); - } + () -> { + unregisterReceivers(); + removeConfigTask(); + + espConfigTask = new ESPConfigureTask(espHtmlParser); + espConfigTask.setDelegate(wizard); + + setStep(STEP_CONFIGURE); + AuthInfo info = profileManager.getCurrentProfile().blockingGet().getAuthInfo(); + espConfigTask.execute( + getSelectedSSID(), + edPassword.getText().toString(), + info.getServerForEmail(), + info.getEmailAddress()); }); } @@ -1142,12 +1135,10 @@ public void onUnavailable() { super.onUnavailable(); wizard.runOnUiThread( - new Runnable() { - @Override - public void run() { - unregisterCallbacks(); - showError(R.string.wizard_iodev_connect_failed); - } + () -> { + unregisterCallbacks(); + suplaClientStateHolder.handleEvent(AddWizardFinished.INSTANCE); + showError(R.string.wizard_iodev_connect_failed); }); } }; @@ -1181,6 +1172,7 @@ private void connect() { } if (iodev_NetworkID == -1) { + suplaClientStateHolder.handleEvent(AddWizardFinished.INSTANCE); showError(R.string.wizard_addnetwork_error); return; } @@ -1294,10 +1286,6 @@ public void onReceive(Context c, Intent i) { stateChangedReceiver = null; - if (SuplaApp.getApp().getSuplaClient() != null) { - SuplaApp.getApp().getSuplaClient().reconnect(); - } - setStep(STEP_DONE); showDone(result); } @@ -1332,6 +1320,8 @@ public void onReceive(Context c, Intent i) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { connectToInternet_Q(); } + + suplaClientStateHolder.handleEvent(AddWizardFinished.INSTANCE); } private String getSelectedSSID() { @@ -1429,7 +1419,6 @@ public void onWifiThrottlingDialogFinish(WifiThrottlingNotificationDialog dialog } private void resumeClientAndClose() { - suplaClientStateHolder.handleEvent(AddWizardFinished.INSTANCE); showMain(this); finish(); } diff --git a/app/src/main/java/org/supla/android/WizardActivity.java b/app/src/main/java/org/supla/android/WizardActivity.java index 982623752..7528cc469 100644 --- a/app/src/main/java/org/supla/android/WizardActivity.java +++ b/app/src/main/java/org/supla/android/WizardActivity.java @@ -1,5 +1,23 @@ package org.supla.android; +/* +Copyright (C) AC SOFTWARE SP. Z O.O. + +This program 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 2 +of the License, or (at your option) any later version. + +This program 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, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ + import android.annotation.SuppressLint; import android.os.Bundle; import android.view.View; @@ -10,6 +28,9 @@ import java.util.ArrayList; import java.util.Timer; import java.util.TimerTask; +import javax.inject.Inject; +import org.supla.android.core.networking.suplaclient.SuplaClientState.Locked; +import org.supla.android.core.networking.suplaclient.SuplaClientStateHolder; @SuppressLint("Registered") public abstract class WizardActivity extends NavigationActivity { @@ -23,6 +44,8 @@ public abstract class WizardActivity extends NavigationActivity { private RelativeLayout mContent; private ArrayList mPages = new ArrayList<>(); + @Inject SuplaClientStateHolder suplaClientStateHolder; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -43,6 +66,15 @@ protected void onCreate(Bundle savedInstanceState) { setBtnNextEnabled(false); } + @Override + protected void onStart() { + super.onStart(); + + if (suplaClientStateHolder.stateOrNull() == Locked.INSTANCE) { + finish(); + } + } + protected View addStepPage(int layoutResId, int pageId) { View stepPage = Inflate(layoutResId, null); if (stepPage != null) { @@ -78,18 +110,6 @@ protected int getVisiblePageId() { return 0; } - protected void setBtnNextVisible(boolean visible) { - if (visible) { - mBtnNextLeftPart.setVisibility(View.VISIBLE); - mBtnNextMiddlePart.setVisibility(View.VISIBLE); - mBtnNextRightPart.setVisibility(View.VISIBLE); - } else { - mBtnNextLeftPart.setVisibility(View.GONE); - mBtnNextMiddlePart.setVisibility(View.GONE); - mBtnNextRightPart.setVisibility(View.GONE); - } - } - protected void setBtnNextEnabled(boolean enabled) { mBtnNextLeftPart.setEnabled(enabled); mBtnNextMiddlePart.setEnabled(enabled); @@ -104,10 +124,6 @@ protected void setBtnNextText(int resId) { mBtnNextMiddlePart.setText(resId, TextView.BufferType.NORMAL); } - protected void setBtnNextText(String text) { - mBtnNextMiddlePart.setText(text, TextView.BufferType.NORMAL); - } - protected boolean isBtnNextPreloaderVisible() { return mBtnNextPreloaderTimer != null; } diff --git a/app/src/main/java/org/supla/android/core/networking/suplaclient/SuplaClientState.kt b/app/src/main/java/org/supla/android/core/networking/suplaclient/SuplaClientState.kt index 3237a8383..9ea2d594d 100644 --- a/app/src/main/java/org/supla/android/core/networking/suplaclient/SuplaClientState.kt +++ b/app/src/main/java/org/supla/android/core/networking/suplaclient/SuplaClientState.kt @@ -48,6 +48,7 @@ sealed interface SuplaClientState { SuplaClientEvent.Lock, SuplaClientEvent.OnStart, SuplaClientEvent.NetworkConnected, + SuplaClientEvent.AddWizardStopped, is SuplaClientEvent.Finish -> null SuplaClientEvent.Unlock -> Connecting() @@ -60,7 +61,6 @@ sealed interface SuplaClientState { is SuplaClientEvent.Error -> throw IllegalEvent.IllegalErrorEvent("Unexpected event in Locked") SuplaClientEvent.Initialized -> throw IllegalEvent.IllegalInitializedEvent("Unexpected event in Locked") SuplaClientEvent.AddWizardFinished -> throw IllegalEvent.IllegalAddWizardFinishedEvent("Unexpected event in Locked") - SuplaClientEvent.AddWizardStopped -> throw IllegalEvent.IllegalAddWizardStoppedEvent("Unexpected event in Locked") } } } @@ -146,7 +146,7 @@ sealed interface SuplaClientState { SuplaClientEvent.Lock -> Locking is SuplaClientEvent.Finish -> Finished(reason ?: event.reason) - is SuplaClientEvent.Error -> Finished(event.reason) + is SuplaClientEvent.Error -> Finished(if (reason == Reason.AddWizardStarted) reason else event.reason) // others which should not occur SuplaClientEvent.NoAccount -> throw IllegalEvent.IllegalNoAccountEvent("Unexpected event in Disconnecting") @@ -203,7 +203,7 @@ sealed interface SuplaClientState { is SuplaClientEvent.Error -> if (event.reason != reason) Finished(event.reason) else null is SuplaClientEvent.Finish -> if (event.reason != reason && reason != Reason.AddWizardStarted) Finished(event.reason ?: reason) else null - SuplaClientEvent.AddWizardStopped -> Finished(Reason.AppInBackground) + SuplaClientEvent.AddWizardStopped -> if (reason == Reason.AddWizardStarted) Finished() else Connecting() // others which should not occur SuplaClientEvent.Connected -> throw IllegalEvent.IllegalConnectedEvent("Unexpected event in Finished") diff --git a/app/src/main/java/org/supla/android/core/networking/suplaclient/SuplaClientStateHolder.kt b/app/src/main/java/org/supla/android/core/networking/suplaclient/SuplaClientStateHolder.kt index 6765edf19..c2c1134cc 100644 --- a/app/src/main/java/org/supla/android/core/networking/suplaclient/SuplaClientStateHolder.kt +++ b/app/src/main/java/org/supla/android/core/networking/suplaclient/SuplaClientStateHolder.kt @@ -64,6 +64,8 @@ class SuplaClientStateHolder @Inject constructor( fun state(): Observable = stateSubject.hide() + fun stateOrNull(): SuplaClientState? = stateSubject.value + fun handleEvent(event: SuplaClientEvent) { synchronized(this) { handleEventInternally(event) From 5f648f2d5165c4344045014a5988fb6d16641161 Mon Sep 17 00:00:00 2001 From: Michal Polanski Date: Wed, 23 Oct 2024 12:23:03 +0200 Subject: [PATCH 6/8] Correct JVM Toolchain for shared-core --- shared-core/build.gradle.kts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/shared-core/build.gradle.kts b/shared-core/build.gradle.kts index 48da18dc8..80b77528e 100644 --- a/shared-core/build.gradle.kts +++ b/shared-core/build.gradle.kts @@ -54,6 +54,8 @@ kotlin { val iosArm64Main by getting val iosSimulatorArm64Main by getting } + + jvmToolchain(17) } dependencies { From 81777474dae19f05cedd339f7b2b079ae6598eb0 Mon Sep 17 00:00:00 2001 From: Michal Polanski Date: Wed, 23 Oct 2024 16:46:06 +0200 Subject: [PATCH 7/8] Change JVM Toolchain to 21 --- app/build.gradle.kts | 6 +++--- shared-core/build.gradle.kts | 6 ++---- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index b2a2b0f32..c9edd82a2 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -38,8 +38,8 @@ android { } compileOptions { - sourceCompatibility(JavaVersion.VERSION_17) - targetCompatibility(JavaVersion.VERSION_17) + sourceCompatibility(JavaVersion.VERSION_21) + targetCompatibility(JavaVersion.VERSION_21) isCoreLibraryDesugaringEnabled = true } @@ -103,7 +103,7 @@ android { } kotlinOptions { - jvmTarget = "17" + jvmTarget = "21" freeCompilerArgs = listOf("-Xcontext-receivers", "-Xjvm-default=all") } } diff --git a/shared-core/build.gradle.kts b/shared-core/build.gradle.kts index 80b77528e..8da0401c8 100644 --- a/shared-core/build.gradle.kts +++ b/shared-core/build.gradle.kts @@ -27,8 +27,8 @@ android { } } compileOptions { - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 + sourceCompatibility = JavaVersion.VERSION_21 + targetCompatibility = JavaVersion.VERSION_21 } } @@ -54,8 +54,6 @@ kotlin { val iosArm64Main by getting val iosSimulatorArm64Main by getting } - - jvmToolchain(17) } dependencies { From 7b4810661bee1507219f3148cfe9823e547f9a04 Mon Sep 17 00:00:00 2001 From: Przemek Zygmunt Date: Wed, 23 Oct 2024 19:46:26 +0200 Subject: [PATCH 8/8] Change version to 24.10.04 --- app/build.gradle.kts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index c9edd82a2..47c09019b 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -25,8 +25,8 @@ android { minSdk = Versions.MinSdk targetSdk = Versions.TargetSdk multiDexEnabled = true - versionCode = 253 - versionName = "24.10.03" + versionCode = 254 + versionName = "24.10.04" ndk { moduleName = "suplaclient"