package com.openerp.widgets.message;
import java.util.ArrayList;
import java.util.List;
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.openerp.MainActivity;
import com.openerp.R;
import com.openerp.addons.message.MessageComposeActivity;
import com.openerp.support.OEUser;
import com.openerp.support.listview.OEListAdapter;
import com.openerp.widgets.WidgetHelper;
public class MessageWidget extends AppWidgetProvider {
public static final String TAG = "com.openerp.widgets.MessageWidget";
public static final String ACTION_MESSAGE_WIDGET_UPDATE = "com.openerp.widgets.ACTION_MESSAGE_WIDGET_UPDATE";
// ListView setup
ListView mMessageListView = null;
OEListAdapter mMessageListAdapter = null;
List<Object> mMessageObjects = new ArrayList<Object>();
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(WidgetHelper.ACTION_WIDGET_CALL)) {
Intent intentMain = new Intent(context, MainActivity.class);
intentMain.setAction(WidgetHelper.ACTION_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.getExtras().getBoolean(
MessageWidget.ACTION_MESSAGE_WIDGET_UPDATE)) {
Log.v(TAG, "ACTION_MESSAGE_WIDGET_UPDATE");
AppWidgetManager appWidgetManager = AppWidgetManager
.getInstance(context.getApplicationContext());
ComponentName component = new ComponentName(context,
MessageWidget.class);
int[] ids = appWidgetManager.getAppWidgetIds(component);
onUpdate(context, appWidgetManager, ids);
appWidgetManager.notifyAppWidgetViewDataChanged(ids,
R.id.widgetMessageList);
}
super.onReceive(context, intent);
}
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
Log.d(TAG, "MessageWidget->onUpdate()");
updateWidget(context, appWidgetManager, appWidgetIds);
}
@SuppressWarnings("deprecation")
private static RemoteViews initWidgetListView(Context context, int widgetId) {
Log.d(TAG, "MessageWidget->initWidgetListView()");
RemoteViews mView = new RemoteViews(context.getPackageName(),
R.layout.widget_message_layout);
Intent svcIntent = new Intent(context, MessageRemoteViewService.class);
svcIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, widgetId);
String filter = MessageWidgetConfigure.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(widgetId, R.id.widgetMessageList, svcIntent);
return mView;
}
static void updateWidget(Context context, AppWidgetManager manager,
int[] widgetIds) {
if (OEUser.current(context) == null)
return;
for (int widget : widgetIds) {
// Setting title
String filter = MessageWidgetConfigure.getPref(context, widget,
"message_filter");
RemoteViews mView = initWidgetListView(context, widget);
final Intent onItemClick = new Intent(context, MessageWidget.class);
onItemClick.setAction(WidgetHelper.ACTION_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, 0, onItemClick,
PendingIntent.FLAG_UPDATE_CURRENT);
mView.setPendingIntentTemplate(R.id.widgetMessageList,
onClickPendingIntent);
// widget icon and main row click
Intent mIntent = new Intent(context, MainActivity.class);
PendingIntent mPIntent = PendingIntent.getActivity(context, 0,
mIntent, 0);
mView.setOnClickPendingIntent(R.id.widgetImgLauncher, mPIntent);
mView.setOnClickPendingIntent(R.id.widgetTopBar, mPIntent);
// compose message
Intent intent = new Intent(context, MessageComposeActivity.class);
PendingIntent pIntent = PendingIntent.getActivity(context, 0,
intent, 0);
mView.setOnClickPendingIntent(R.id.imgBtnWidgetCompose, pIntent);
// setting current user
mView.setTextViewText(R.id.txvWidgetUserName,
OEUser.current(context).getAndroidName());
mView.setTextViewText(R.id.widgetTxvWidgetTitle, filter);
// Updating widget
manager.updateAppWidget(widget, mView);
}
}
}