LeOS-Genesis/app/src/main/java/com/widget/onionservices/widgetManager/widgetController.java

104 lines
4.7 KiB
Java
Raw Normal View History

2022-03-29 21:55:20 +02:00
package com.widget.onionservices.widgetManager;
2021-05-29 09:55:46 +02:00
import android.app.PendingIntent;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.Context;
import android.content.Intent;
2022-03-29 21:55:20 +02:00
import android.os.Build;
2021-05-29 09:55:46 +02:00
import android.os.Bundle;
2022-04-04 18:42:22 +02:00
import android.util.Log;
2021-05-29 09:55:46 +02:00
import android.widget.RemoteViews;
2022-03-29 21:55:20 +02:00
2021-05-29 09:55:46 +02:00
import com.example.myapplication.R;
2022-03-29 21:55:20 +02:00
import com.widget.onionservices.helperMethod.helperMethod;
2022-05-02 18:26:09 +02:00
2021-06-15 13:18:26 +02:00
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
2021-05-29 09:55:46 +02:00
2021-06-15 13:18:26 +02:00
public class widgetController extends AppWidgetProvider {
/*Model Declaration*/
private widgetViewController mWidgetViewController;
private widgetModelController mWidgetModelController;
2021-05-29 09:55:46 +02:00
/* Local Variables */
2021-06-15 13:18:26 +02:00
private int mCurrentWidth;
private RemoteViews mViews;
2021-05-29 09:55:46 +02:00
/* Navigator Initializations */
2021-06-15 13:18:26 +02:00
private void initializeAppWidget(Context pContext, AppWidgetManager pAppWidgetManager, int pAppWidgetId) {
initializeModel(pContext);
initializeLocalEventHandler(pContext, pAppWidgetId);
pAppWidgetManager.updateAppWidget(pAppWidgetId, mViews);
}
2021-05-29 09:55:46 +02:00
2022-05-02 18:26:09 +02:00
private void initializeLocalEventHandler(Context pContext, int pAppWidgetId) {
2022-03-29 21:55:20 +02:00
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
mViews.setOnClickPendingIntent(R.id.pTextInvoker, helperMethod.onCreatePendingIntent(pContext, pAppWidgetId, PendingIntent.FLAG_IMMUTABLE, "mOpenApplication"));
mViews.setOnClickPendingIntent(R.id.pVoiceInvoker, helperMethod.onCreatePendingIntent(pContext, pAppWidgetId, PendingIntent.FLAG_IMMUTABLE, "mOpenVoice"));
2022-05-02 18:26:09 +02:00
} else {
2022-03-29 21:55:20 +02:00
mViews.setOnClickPendingIntent(R.id.pTextInvoker, helperMethod.onCreatePendingIntent(pContext, pAppWidgetId, PendingIntent.FLAG_UPDATE_CURRENT, "mOpenApplication"));
mViews.setOnClickPendingIntent(R.id.pVoiceInvoker, helperMethod.onCreatePendingIntent(pContext, pAppWidgetId, PendingIntent.FLAG_UPDATE_CURRENT, "mOpenVoice"));
}
2021-06-15 13:18:26 +02:00
}
2021-05-29 09:55:46 +02:00
2022-05-02 18:26:09 +02:00
private void initializeModel(Context pContext) {
2021-06-15 13:18:26 +02:00
mViews = new RemoteViews(pContext.getPackageName(), R.layout.widget_search_controller);
mWidgetViewController = new widgetViewController(pContext, new widgetViewCallback(), mViews);
mWidgetModelController = new widgetModelController(new widgetModelCallback());
2021-05-29 09:55:46 +02:00
}
public void onReceive(Context context, Intent intent) {
2021-06-15 13:18:26 +02:00
initializeModel(context);
mWidgetModelController.onTrigger(widgetEnums.eModelViewController.M_ON_RECIEVE, Arrays.asList(context, intent));
2021-05-29 09:55:46 +02:00
}
2021-06-15 13:18:26 +02:00
2021-05-29 09:55:46 +02:00
/* Local Overrides */
@Override
2022-05-02 18:26:09 +02:00
public void onAppWidgetOptionsChanged(Context context, AppWidgetManager appWidgetManager, int appWidgetId, Bundle widgetInfo) {
mCurrentWidth = widgetInfo.getInt(AppWidgetManager.OPTION_APPWIDGET_MAX_WIDTH);
2021-06-15 13:17:59 +02:00
onUpdate(context, appWidgetManager, new int[]{appWidgetId});
2021-05-29 09:55:46 +02:00
}
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
2021-06-15 13:18:26 +02:00
initializeModel(context);
2022-05-02 18:26:09 +02:00
if (mCurrentWidth != 0) {
int size = (int) Math.floor((mCurrentWidth - 30) / 70);
2021-06-15 13:18:26 +02:00
mWidgetViewController.onTrigger(widgetEnums.eWidgetViewController.M_INIT, Collections.singletonList(size));
appWidgetManager.updateAppWidget(appWidgetIds, mViews);
2022-05-02 18:26:09 +02:00
} else {
2021-06-15 13:18:26 +02:00
initializeAppWidget(context, appWidgetManager, appWidgetIds[0]);
}
}
/* Callbacks */
2022-03-29 21:55:20 +02:00
public class widgetViewCallback implements com.hiddenservices.onionservices.eventObserver.eventListener {
2021-06-15 13:18:26 +02:00
@Override
2021-08-19 22:17:54 +02:00
public Object invokeObserver(List<Object> pData, Object pCommand) {
2021-06-15 13:18:26 +02:00
return null;
}
}
2022-03-29 21:55:20 +02:00
public class widgetModelCallback implements com.hiddenservices.onionservices.eventObserver.eventListener {
2021-06-15 13:18:26 +02:00
@Override
2021-08-19 22:17:54 +02:00
public Object invokeObserver(List<Object> pData, Object pCommand) {
2022-05-02 18:26:09 +02:00
if (pCommand.equals(widgetEnums.eWidgetControllerCallback.M_UPDATE)) {
onUpdate((Context) pData.get(0), (AppWidgetManager) pData.get(1), (int[]) pData.get(2));
} else if (pCommand.equals(widgetEnums.eWidgetControllerCallback.M_OPTION_CHANGE)) {
onAppWidgetOptionsChanged((Context) pData.get(0), (AppWidgetManager) pData.get(1), (int) pData.get(2), (Bundle) pData.get(3));
} else if (pCommand.equals(widgetEnums.eWidgetControllerCallback.M_RESTORE)) {
2021-08-19 22:17:54 +02:00
onRestored((Context) pData.get(0), (int[]) pData.get(1), (int[]) pData.get(2));
2022-05-02 18:26:09 +02:00
} else if (pCommand.equals(widgetEnums.eWidgetControllerCallback.M_DELETE)) {
2021-08-19 22:17:54 +02:00
onDeleted((Context) pData.get(0), (int[]) pData.get(1));
2021-06-15 13:18:26 +02:00
}
return null;
2021-05-29 09:55:46 +02:00
}
}
2021-03-18 18:42:53 +01:00
}