blob: 573a748b4290a2c5bc98433ac4c94ffbf3f0d3fd [file] [log] [blame]
/*
* Copyright (C) 2023 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.systemui.communal.widgets
import android.appwidget.AppWidgetProviderInfo
import android.content.Intent
import android.os.Bundle
import android.util.Log
import androidx.activity.ComponentActivity
import androidx.activity.result.ActivityResultLauncher
import androidx.activity.result.contract.ActivityResultContracts.StartActivityForResult
import com.android.systemui.communal.domain.interactor.CommunalInteractor
import com.android.systemui.communal.ui.viewmodel.CommunalEditModeViewModel
import com.android.systemui.compose.ComposeFacade.setCommunalEditWidgetActivityContent
import javax.inject.Inject
/** An Activity for editing the widgets that appear in hub mode. */
class EditWidgetsActivity
@Inject
constructor(
private val communalViewModel: CommunalEditModeViewModel,
private val communalInteractor: CommunalInteractor,
) : ComponentActivity() {
companion object {
/**
* Intent extra name for the {@link AppWidgetProviderInfo} of a widget to add to hub mode.
*/
const val ADD_WIDGET_INFO = "add_widget_info"
private const val TAG = "EditWidgetsActivity"
}
private val addWidgetActivityLauncher: ActivityResultLauncher<Intent> =
registerForActivityResult(StartActivityForResult()) { result ->
when (result.resultCode) {
RESULT_OK -> {
result.data
?.let {
it.getParcelableExtra(
ADD_WIDGET_INFO,
AppWidgetProviderInfo::class.java
)
}
?.let { communalInteractor.addWidget(it.provider, 0) }
?: run { Log.w(TAG, "No AppWidgetProviderInfo found in result.") }
}
else ->
Log.w(
TAG,
"Failed to receive result from widget picker, code=${result.resultCode}"
)
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setCommunalEditWidgetActivityContent(
activity = this,
viewModel = communalViewModel,
onOpenWidgetPicker = {
addWidgetActivityLauncher.launch(
Intent(applicationContext, WidgetPickerActivity::class.java)
)
},
onEditDone = {
// TODO(b/315154364): in a separate change, lock the device and transition to GH
finish()
}
)
}
}