mirror of https://github.com/LeOS-GSI/LeOS-Genesis
101 lines
4.7 KiB
Java
101 lines
4.7 KiB
Java
package com.widget.onionservices.widgetManager;
|
|
|
|
import android.app.PendingIntent;
|
|
import android.appwidget.AppWidgetManager;
|
|
import android.appwidget.AppWidgetProvider;
|
|
import android.content.Context;
|
|
import android.content.Intent;
|
|
import android.os.Build;
|
|
import android.os.Bundle;
|
|
import android.widget.RemoteViews;
|
|
import com.leos.onionservices.R;
|
|
import com.widget.onionservices.helperMethod.helperMethod;
|
|
import java.util.Arrays;
|
|
import java.util.Collections;
|
|
import java.util.List;
|
|
|
|
public class widgetController extends AppWidgetProvider {
|
|
|
|
/*Model Declaration*/
|
|
private widgetViewController mWidgetViewController;
|
|
private widgetModelController mWidgetModelController;
|
|
|
|
/* Local Variables */
|
|
|
|
private int mCurrentWidth;
|
|
private RemoteViews mViews;
|
|
|
|
/* Navigator Initializations */
|
|
|
|
private void initializeAppWidget(Context pContext, AppWidgetManager pAppWidgetManager, int pAppWidgetId) {
|
|
initializeModel(pContext);
|
|
initializeLocalEventHandler(pContext, pAppWidgetId);
|
|
pAppWidgetManager.updateAppWidget(pAppWidgetId, mViews);
|
|
}
|
|
|
|
private void initializeLocalEventHandler(Context pContext, int pAppWidgetId) {
|
|
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"));
|
|
}
|
|
}
|
|
|
|
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());
|
|
}
|
|
|
|
public void onReceive(Context context, Intent intent) {
|
|
initializeModel(context);
|
|
mWidgetModelController.onTrigger(widgetEnums.eModelViewController.M_ON_RECIEVE, Arrays.asList(context, intent));
|
|
}
|
|
|
|
/* Local Overrides */
|
|
|
|
@Override
|
|
public void onAppWidgetOptionsChanged(Context context, AppWidgetManager appWidgetManager, int appWidgetId, Bundle widgetInfo) {
|
|
mCurrentWidth = widgetInfo.getInt(AppWidgetManager.OPTION_APPWIDGET_MAX_WIDTH);
|
|
onUpdate(context, appWidgetManager, new int[]{appWidgetId});
|
|
}
|
|
|
|
@Override
|
|
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
|
|
initializeModel(context);
|
|
if (mCurrentWidth != 0) {
|
|
int size = (int) Math.floor((mCurrentWidth - 30) / 70);
|
|
mWidgetViewController.onTrigger(widgetEnums.eWidgetViewController.M_INIT, Collections.singletonList(size));
|
|
appWidgetManager.updateAppWidget(appWidgetIds, mViews);
|
|
} else {
|
|
initializeAppWidget(context, appWidgetManager, appWidgetIds[0]);
|
|
}
|
|
}
|
|
|
|
/* Callbacks */
|
|
|
|
public class widgetViewCallback implements com.hiddenservices.onionservices.eventObserver.eventListener {
|
|
@Override
|
|
public Object invokeObserver(List<Object> pData, Object pCommand) {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
public class widgetModelCallback implements com.hiddenservices.onionservices.eventObserver.eventListener {
|
|
@Override
|
|
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));
|
|
} 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)) {
|
|
onRestored((Context) pData.get(0), (int[]) pData.get(1), (int[]) pData.get(2));
|
|
} else if (pCommand.equals(widgetEnums.eWidgetControllerCallback.M_DELETE)) {
|
|
onDeleted((Context) pData.get(0), (int[]) pData.get(1));
|
|
}
|
|
return null;
|
|
}
|
|
}
|
|
} |