package com.almalence.widget;
/* <!-- +++
import com.almalence.opencam_plus.R;
+++ --> */
//<!-- -+-
import com.almalence.opencam.R;
//-+- -->
import android.annotation.TargetApi;
import android.app.PendingIntent;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.util.Log;
import android.widget.RemoteViews;
public class OpenCameraSolidWidgetProvider extends AppWidgetProvider
{
public static final String ACTION_START_ACTIVITY = "startActivity";
public static final String BROADCAST_PARAM_IS_MODE = "itemType";
@Override
public void onDeleted(Context context, int[] appWidgetIds) {
super.onDeleted(context, appWidgetIds);
}
@Override
public void onDisabled(Context context) {
super.onDisabled(context);
}
@Override
public void onEnabled(Context context) {
super.onEnabled(context);
}
@Override
public void onReceive(final Context context, Intent intent)
{
if(ACTION_START_ACTIVITY.equals(intent.getAction()))
{
boolean isModeCall = intent.getBooleanExtra(BROADCAST_PARAM_IS_MODE, false);
if(isModeCall)
{
String modeName = intent.getStringExtra(OpenCameraWidgetConfigureActivity.EXTRA_ITEM);
boolean torchValue = intent.getBooleanExtra(OpenCameraWidgetConfigureActivity.EXTRA_TORCH, false);
boolean barcodeValue = intent.getBooleanExtra(OpenCameraWidgetConfigureActivity.EXTRA_BARCODE, false);
Bundle extras = new Bundle();
extras.putString(OpenCameraWidgetConfigureActivity.EXTRA_ITEM, modeName);
extras.putBoolean(OpenCameraWidgetConfigureActivity.EXTRA_TORCH, torchValue);
extras.putBoolean(OpenCameraWidgetConfigureActivity.EXTRA_BARCODE, barcodeValue);
//Intent modeIntent = new Intent(context, MainScreen.class);
//Intent modeIntent = new Intent("com.almalence.opencam");
Intent modeIntent = context.getPackageManager().getLaunchIntentForPackage("com.almalence.opencam_plus");
if(modeIntent != null)
{
modeIntent.putExtras(extras);
modeIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
context.startActivity(modeIntent);
}
else
{
modeIntent = context.getPackageManager().getLaunchIntentForPackage("com.almalence.opencam");
if(modeIntent != null)
{
modeIntent.putExtras(extras);
modeIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
context.startActivity(modeIntent);
}
else
{
try
{
// Intent shopIntent = context.getPackageManager().getLaunchIntentForPackage("com.android.vending");
// //Intent shopIntent = new Intent(Intent.ACTION_VIEW);
// shopIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
// shopIntent.setData(Uri.parse("market://details?id=com.almalence.opencam"));
// context.startActivity(shopIntent);
Intent shopIntent = new Intent(Intent.ACTION_VIEW);
shopIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
shopIntent.setData(Uri.parse("market://details?id=com.almalence.opencam"));
context.startActivity(shopIntent);
//context.startActivity(intent);
}
catch(ActivityNotFoundException e)
{
Log.e("Widget", "Unable to start Google Play");
return;
}
}
}
}
else
{
int widgetID = intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, 0);
Intent configIntent = new Intent(context, OpenCameraSolidWidgetConfigureActivity.class);
configIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
configIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, widgetID);
configIntent.setData(Uri.withAppendedPath(Uri.parse("abc" + "://widget/id/"), String.valueOf(widgetID)));
context.startActivity(configIntent);
}
}
else if(intent.getAction().contentEquals("com.sec.android.widgetapp.APPWIDGET_RESIZE"))
{
handleResizeSignal(context, intent);
}
super.onReceive(context, intent);
}
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds)
{
final int N = appWidgetIds.length;
// Perform this loop procedure for each App Widget that belongs to this provider
for (int i=0; i<N; i++)
{
int appWidgetId = appWidgetIds[i];
RemoteViews remoteViews = null;
remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget_opencamera_solid);
/// set intent for widget service that will create the views
Intent serviceIntent = new Intent(context, OpenCameraSolidWidgetService.class);
serviceIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
serviceIntent.setData(Uri.parse(serviceIntent.toUri(Intent.URI_INTENT_SCHEME))); // embed extras so they don't get ignored
remoteViews.setRemoteAdapter(R.id.widgetSolidGrid, serviceIntent);
remoteViews.setEmptyView(R.id.widgetSolidGrid, R.id.widgetSolidEmptyView);
Intent intent = new Intent(context, OpenCameraSolidWidgetProvider.class);
intent.setAction(ACTION_START_ACTIVITY);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
remoteViews.setPendingIntentTemplate(R.id.widgetSolidGrid, pendingIntent);
// Intent configIntent = new Intent(context, OpenCameraSolidWidgetConfigureActivity.class);
// configIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
// configIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
// configIntent.setData(Uri.withAppendedPath(Uri.parse("abc" + "://widget/id/"), String.valueOf(appWidgetId)));
//
// PendingIntent pendingIntent2 = PendingIntent.getActivity(context, 0, configIntent, 0);
// remoteViews.setOnClickPendingIntent(R.id.fakeImage, pendingIntent2);
// update widget
appWidgetManager.updateAppWidget(appWidgetId, remoteViews);
}
super.onUpdate(context, appWidgetManager, appWidgetIds);
}
public static RemoteViews buildRemoteViews(Context context, int appWidgetId)
{
RemoteViews remoteViews = null;
remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget_opencamera_solid);
/// set intent for widget service that will create the views
Intent serviceIntent = new Intent(context, OpenCameraSolidWidgetService.class);
serviceIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
serviceIntent.setData(Uri.parse(serviceIntent.toUri(Intent.URI_INTENT_SCHEME))); // embed extras so they don't get ignored
remoteViews.setRemoteAdapter(R.id.widgetSolidGrid, serviceIntent);
remoteViews.setEmptyView(R.id.widgetSolidGrid, R.id.widgetSolidEmptyView);
Intent intent = new Intent(context, OpenCameraSolidWidgetProvider.class);
intent.setAction(ACTION_START_ACTIVITY);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
remoteViews.setPendingIntentTemplate(R.id.widgetSolidGrid, pendingIntent);
// Intent configIntent = new Intent(context, OpenCameraSolidWidgetConfigureActivity.class);
// configIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
// configIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
// configIntent.setData(Uri.withAppendedPath(Uri.parse("abc" + "://widget/id/"), String.valueOf(appWidgetId)));
//
// PendingIntent pendingIntent2 = PendingIntent.getActivity(context, 0, configIntent, 0);
// remoteViews.setOnClickPendingIntent(R.id.fakeImage, pendingIntent2);
return remoteViews;
}
@TargetApi(16)
@Override
public void onAppWidgetOptionsChanged(Context context,
AppWidgetManager appWidgetManager,
int appWidgetId,
Bundle newOptions)
{
super.onAppWidgetOptionsChanged(context, appWidgetManager, appWidgetId, newOptions);
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget_opencamera_solid);
/// set intent for widget service that will create the views
Intent serviceIntent = new Intent(context, OpenCameraSolidWidgetService.class);
serviceIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
serviceIntent.setData(Uri.parse(serviceIntent.toUri(Intent.URI_INTENT_SCHEME))); // embed extras so they don't get ignored
remoteViews.setRemoteAdapter(R.id.widgetSolidGrid, serviceIntent);
remoteViews.setEmptyView(R.id.widgetSolidGrid, R.id.widgetSolidEmptyView);
Intent intent = new Intent(context, OpenCameraSolidWidgetProvider.class);
intent.setAction(ACTION_START_ACTIVITY);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
remoteViews.setPendingIntentTemplate(R.id.widgetSolidGrid, pendingIntent);
// update widget
appWidgetManager.updateAppWidget(appWidgetId, remoteViews);
}
@TargetApi(16)
private void handleResizeSignal(Context context, Intent intent)
{
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
int appWidgetId = intent.getIntExtra("widgetId", 0);
int widgetSpanX = intent.getIntExtra("widgetspanx", 0);
int widgetSpanY = intent.getIntExtra("widgetspany", 0);
if(appWidgetId > 0 && widgetSpanX > 0 && widgetSpanY > 0) {
Bundle newOptions = new Bundle();
// We have to convert these numbers for future use
newOptions.putInt(AppWidgetManager.OPTION_APPWIDGET_MIN_HEIGHT, widgetSpanY * 74);
newOptions.putInt(AppWidgetManager.OPTION_APPWIDGET_MIN_WIDTH, widgetSpanX * 74);
appWidgetManager.updateAppWidgetOptions(appWidgetId, newOptions);
onAppWidgetOptionsChanged(context, appWidgetManager, appWidgetId, newOptions);
}
}
}