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

105 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;
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;
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
2021-06-15 13:18:26 +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"));
}else {
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
2021-06-15 13:18:26 +02:00
private void initializeModel(Context pContext){
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
public void onAppWidgetOptionsChanged (Context context, AppWidgetManager appWidgetManager, int appWidgetId, Bundle widgetInfo) {
2021-06-15 13:17:59 +02:00
mCurrentWidth = widgetInfo.getInt (AppWidgetManager.OPTION_APPWIDGET_MAX_WIDTH);
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);
2021-06-15 13:17:59 +02:00
if(mCurrentWidth!=0){
2021-06-15 13:18:26 +02:00
int size = (int) Math.floor ((mCurrentWidth - 30) / 70);
mWidgetViewController.onTrigger(widgetEnums.eWidgetViewController.M_INIT, Collections.singletonList(size));
appWidgetManager.updateAppWidget(appWidgetIds, mViews);
2021-06-15 13:17:59 +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) {
if(pCommand.equals(widgetEnums.eWidgetControllerCallback.M_UPDATE)){
onUpdate((Context)pData.get(0), (AppWidgetManager)pData.get(1), (int[])pData.get(2));
2021-06-15 13:18:26 +02:00
}
2021-08-19 22:17:54 +02:00
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));
2021-06-15 13:18:26 +02:00
}
2021-08-19 22:17:54 +02:00
else if(pCommand.equals(widgetEnums.eWidgetControllerCallback.M_RESTORE)){
onRestored((Context) pData.get(0), (int[]) pData.get(1), (int[]) pData.get(2));
2021-06-15 13:18:26 +02:00
}
2021-08-19 22:17:54 +02:00
else if(pCommand.equals(widgetEnums.eWidgetControllerCallback.M_DELETE)){
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
}