diff --git a/app/src/main/java/jp/atled/agileworks/widget/AwAppWidget.kt b/app/src/main/java/jp/atled/agileworks/widget/AwAppWidget.kt index 3eedbed6ec13ab843dfdfb05ae753bce5da26fa1..032e84dbfa16913b20d9fd39893145bec3083108 100644 --- a/app/src/main/java/jp/atled/agileworks/widget/AwAppWidget.kt +++ b/app/src/main/java/jp/atled/agileworks/widget/AwAppWidget.kt @@ -15,6 +15,7 @@ import androidx.work.PeriodicWorkRequestBuilder import androidx.work.WorkManager import jp.atled.agileworks.R import jp.atled.agileworks.model.ApprovalInfo +import jp.atled.agileworks.model.AuthStateRepository import jp.atled.agileworks.model.LoginRepository import jp.atled.agileworks.model.WidgetRepository import jp.atled.agileworks.view.ui.login.LoginActivity @@ -123,8 +124,15 @@ sealed class AwAppWidgetBase(private val widgetLayoutId: Int) : AppWidgetProvide putExtra(AwAppWidgetRemoteViewsFactory.SERVER_NUMBER, serverNumber) data = Uri.parse(toUri(Intent.URI_INTENT_SCHEME)) } - val systemName = LoginRepository(serverNumber).loadSystemName() views.setRemoteAdapter(R.id.widgetGridView, intent) + // ログイン状態を判別し、ウィジェットのsystemNameを出しわけ + var systemName = "" + if (AuthStateRepository(serverNumber).loadAuthState().isAuthorized) { + // ログイン中の場合、SystemName 取得 + systemName = LoginRepository(serverNumber).loadSystemName() + } else { + //ログインしていない場合、表示しない + } views.setTextViewText(R.id.systemName, systemName) //LoginActivityへ設定したサーバーを伝える @@ -140,6 +148,30 @@ sealed class AwAppWidgetBase(private val widgetLayoutId: Int) : AppWidgetProvide ) views.setPendingIntentTemplate(R.id.widgetGridView, clickPendingIntentTemplate) + appWidgetManager.updateAppWidget(appWidgetId, views) + } + // Widget 上部の SystemName ラベルの更新 + internal fun updateWidgetSystemName(context: Context, + appWidgetManager: AppWidgetManager, + appWidgetId: Int) { + val widgetLayoutId = appWidgetManager.getAppWidgetInfo(appWidgetId).initialLayout + + val views = RemoteViews( + context.packageName, + widgetLayoutId + ) + + val serverNumber = WidgetRepository().loadWidgetLayoutIdPref(appWidgetId) + // ログイン状態を判別し、ウィジェットのsystemNameを出しわけ + var systemName = "" + if (AuthStateRepository(serverNumber).loadAuthState().isAuthorized) { + // ログイン中の場合、SystemName 取得 + systemName = LoginRepository(serverNumber).loadSystemName() + } else { + //ログインしていない場合、表示しない + } + views.setTextViewText(R.id.systemName, systemName) + appWidgetManager.updateAppWidget(appWidgetId, views) } } diff --git a/app/src/main/java/jp/atled/agileworks/widget/WidgetUpdate.kt b/app/src/main/java/jp/atled/agileworks/widget/WidgetUpdate.kt index 81505dddc37b262b6576b7a0b5c475d7d083cde9..96117161c6adf4e783746efeec642860a6386779 100644 --- a/app/src/main/java/jp/atled/agileworks/widget/WidgetUpdate.kt +++ b/app/src/main/java/jp/atled/agileworks/widget/WidgetUpdate.kt @@ -4,6 +4,7 @@ import android.appwidget.AppWidgetManager import android.content.ComponentName import jp.atled.agileworks.R import jp.atled.agileworks.AwApp +import jp.atled.agileworks.widget.AwAppWidgetBase.Companion.updateWidgetSystemName object WidgetUpdate { private val WIDGET_CLASSES: List> = listOf( @@ -17,6 +18,10 @@ object WidgetUpdate { val myWidget = ComponentName(AwApp.instance.applicationContext, widgetClass) val appWidgetIds: IntArray = manager.getAppWidgetIds(myWidget) manager.notifyAppWidgetViewDataChanged(appWidgetIds, R.id.widgetGridView) + // Widget 上部の SystemName ラベルの更新 + for(appWidgetId in appWidgetIds) { + updateWidgetSystemName(AwApp.instance.applicationContext, manager, appWidgetId) + } } } } \ No newline at end of file