package com.odoo.addons.mail.widgets;
import java.util.ArrayList;
import java.util.List;
import android.annotation.SuppressLint;
import android.app.PendingIntent;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.util.Log;
import android.widget.ListView;
import android.widget.RemoteViews;
import com.odoo.MainActivity;
import com.odoo.addons.mail.ComposeMail;
import com.odoo.support.OUser;
import com.odoo.support.listview.OListAdapter;
import com.odoo.widgets.WidgetHelper;
import com.odoo.R;
public class MailWidget extends AppWidgetProvider {
public static final String TAG = "com.odoo.addons.mail.widgets.MailWidget";
public static final String ACTION_MESSAGE_WIDGET_UPDATE = "com.odoo.addons.widgets.ACTION_MESSAGE_WIDGET_UPDATE";
public static final String ACTION_MESSAGE_WIDGET_CALL = "com.odoo.addons.widgets.ACTION_MESSAGE_WIDGET_CALL";
public static final int REQUEST_CODE = 112;
ListView mMessageListView = null;
OListAdapter mMessageListAdapter = null;
List<Object> mMessageObjects = new ArrayList<Object>();
@Override
public void onReceive(Context context, Intent intent) {
Log.d(TAG, "MessageWidget->onReceive()");
if (intent.getAction().equals(ACTION_MESSAGE_WIDGET_CALL)) {
Intent intentMain = new Intent(context, MainActivity.class);
intentMain.setAction(ACTION_MESSAGE_WIDGET_CALL);
intentMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intentMain.putExtras(intent.getExtras());
intentMain.putExtra(WidgetHelper.EXTRA_WIDGET_ITEM_KEY,
"message_detail");
context.startActivity(intentMain);
}
if (intent.getAction().equals(AppWidgetManager.ACTION_APPWIDGET_UPDATE)
&& intent.hasExtra(MailWidget.ACTION_MESSAGE_WIDGET_UPDATE)
&& intent.getExtras().getBoolean(
MailWidget.ACTION_MESSAGE_WIDGET_UPDATE)) {
Log.v(TAG, "ACTION_MESSAGE_WIDGET_UPDATE");
AppWidgetManager appWidgetManager = AppWidgetManager
.getInstance(context.getApplicationContext());
ComponentName component = new ComponentName(context,
MailWidget.class);
int[] ids = appWidgetManager.getAppWidgetIds(component);
onUpdate(context, appWidgetManager, ids);
appWidgetManager.notifyAppWidgetViewDataChanged(ids,
R.id.widgetMessageList);
}
super.onReceive(context, intent);
}
@SuppressLint({ "InlinedApi", "DefaultLocale" })
private static RemoteViews initMessageWidgetListView(Context context,
int widgetId) {
Log.d(TAG, "MessageWidget->initWidgetListView()");
RemoteViews mView = new RemoteViews(context.getPackageName(),
R.layout.widget_mail_layout);
Intent svcIntent = new Intent(context, MailRemoteViewService.class);
svcIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, widgetId);
String filter = MailWidgetConfigure.getPref(context, widgetId,
"message_filter");
svcIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_OPTIONS, filter
.toString().toLowerCase());
svcIntent.setData(Uri.parse(svcIntent.toUri(Intent.URI_INTENT_SCHEME)));
mView.setRemoteAdapter(R.id.widgetMessageList, svcIntent);
return mView;
}
static void updateMessageWidget(Context context, AppWidgetManager manager,
int[] widgetIds) {
if (OUser.current(context) == null)
return;
for (int widget : widgetIds) {
// Setting title
String filter = MailWidgetConfigure.getPref(context, widget,
"message_filter");
RemoteViews mView = initMessageWidgetListView(context, widget);
final Intent onItemClick = new Intent(context, MailWidget.class);
onItemClick.setAction(ACTION_MESSAGE_WIDGET_CALL);
onItemClick.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, widget);
onItemClick.setData(Uri.parse(onItemClick
.toUri(Intent.URI_INTENT_SCHEME)));
final PendingIntent onClickPendingIntent = PendingIntent
.getBroadcast(context, 1, onItemClick,
PendingIntent.FLAG_UPDATE_CURRENT);
mView.setPendingIntentTemplate(R.id.widgetMessageList,
onClickPendingIntent);
// widget icon and main row click
Intent messageIntent = new Intent(context, MainActivity.class);
messageIntent.setAction(ACTION_MESSAGE_WIDGET_CALL);
messageIntent.putExtra(WidgetHelper.EXTRA_WIDGET_ITEM_KEY,
"message_main");
PendingIntent mPedingIntent = PendingIntent.getActivity(context,
REQUEST_CODE, messageIntent, 0);
mView.setOnClickPendingIntent(R.id.widgetImgLauncher, mPedingIntent);
mView.setOnClickPendingIntent(R.id.widgetTopBar, mPedingIntent);
// compose mail
Intent intent = new Intent(context, ComposeMail.class);
PendingIntent pIntent = PendingIntent.getActivity(context,
REQUEST_CODE, intent, 0);
mView.setOnClickPendingIntent(R.id.imgBtnWidgetCompose, pIntent);
// setting current user
mView.setTextViewText(R.id.txvWidgetUserName, OUser
.current(context).getAndroidName());
mView.setTextViewText(R.id.widgetTxvWidgetTitle, filter);
// Updating widget
manager.updateAppWidget(widget, mView);
}
}
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
super.onUpdate(context, appWidgetManager, appWidgetIds);
}
}