package com.lgq.rssreader.task;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import com.google.gson.Gson;
import com.lgq.rssreader.BlogContentActivity;
import com.lgq.rssreader.MainActivity;
import com.lgq.rssreader.R;
import com.lgq.rssreader.controls.XListView;
import com.lgq.rssreader.core.ReaderApp;
import com.lgq.rssreader.dal.BlogDalHelper;
import com.lgq.rssreader.entity.Blog;
import com.lgq.rssreader.entity.Channel;
import com.lgq.rssreader.parser.FeedlyParser;
import com.lgq.rssreader.parser.HttpResponseHandler;
import com.lgq.rssreader.task.RssWidgetService.RssWidgetFactory;
import com.lgq.rssreader.utils.DateHelper;
import com.lgq.rssreader.utils.Helper;
import com.lgq.rssreader.utils.HtmlHelper;
import android.animation.AnimatorSet.Builder;
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.content.SharedPreferences;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.text.format.DateFormat;
import android.text.format.Time;
import android.util.Log;
import android.util.TypedValue;
import android.widget.RemoteViews;
import android.widget.Toast;
public class MediumRssWidgetProvider extends AppWidgetProvider{
public static final String REFRESH = "com.lgq.rssreader.task.MediumRssWidgetProvider.REFRESH";
public static final String LEFT = "com.lgq.rssreader.task.MediumRssWidgetProvider.LEFT";
public static final String RIGHT = "com.lgq.rssreader.task.MediumRssWidgetProvider.RIGHT";
public static final String ITEM = "com.lgq.rssreader.task.MediumRssWidgetProvider.ITEM";
public static final String OPTION = "android.appwidget.action.APPWIDGET_UPDATE_OPTIONS";
@SuppressLint("NewApi")
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
// for(int i=0, len=appWidgetIds.length;i<len;i++){
// buildRemoteView(context, appWidgetManager, appWidgetIds[i]);
// }
super.onUpdate(context, appWidgetManager, appWidgetIds);
}
@SuppressLint("NewApi")
private void buildRemoteView(Context context, AppWidgetManager appWidgetManager, int appWidgetId){
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget4_2);
Channel c = null;
Blog b = null;
views.setTextViewText(R.id.widget_blog_title, context.getResources().getString(R.string.app_name));
SharedPreferences prefs = ReaderApp.getAppContext().getSharedPreferences("Widget_Channel", 0);
String content = prefs.getString("Widget_Channel" + appWidgetId, "");
if(content.length() > 0 ){
c = new Gson().fromJson(content, Channel.class);
}
if(c == null)
return;
String blogContent = prefs.getString("Widget_Blog" + appWidgetId, "");
BlogDalHelper helper = new BlogDalHelper();
if(blogContent.length() > 0)
b = new Gson().fromJson(blogContent, Blog.class);
else{
b = helper.GetBlogList(c, 1, 1, false).get(0);
prefs.edit().putString("Widget_Blog" + appWidgetId, new Gson().toJson(b)).commit();
}
helper.Close();
views.setTextViewText(R.id.widget_blog_title, b.Title);
views.setTextViewText(R.id.widget_blog_desc, HtmlHelper.filterHtml(b.Description));
if( Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN)
views.setTextViewTextSize(R.id.widget_blog_desc, TypedValue.COMPLEX_UNIT_DIP, 20);
views.setTextViewText(R.id.widget_blog_pagenation, DateHelper.getDaysBeforeNow(b.PubDate));
Intent toastIntent = new Intent(context, BlogContentActivity.class);
toastIntent.setAction(ITEM);
toastIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
toastIntent.setData(Uri.parse(toastIntent.toUri(Intent.URI_INTENT_SCHEME)));
Bundle extras = new Bundle();
extras.putString(BlogContentActivity.CURRENT, new Gson().toJson(b));
if(c != null)
extras.putString(BlogContentActivity.CHANNEL, new Gson().toJson(c));
toastIntent.putExtras(extras);
PendingIntent toastPendingIntent = PendingIntent.getActivity(context, 0, toastIntent, PendingIntent.FLAG_UPDATE_CURRENT);
views.setOnClickPendingIntent(R.id.mediumlayout, toastPendingIntent);
Intent refreshIntent = new Intent(context, MediumRssWidgetProvider.class);
refreshIntent.setAction(REFRESH);
refreshIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
PendingIntent refreshPendingIntent = PendingIntent.getBroadcast(context, 0, refreshIntent, 0);
views.setOnClickPendingIntent(R.id.widget_refresh, refreshPendingIntent);
Intent leftIntent = new Intent(context, MediumRssWidgetProvider.class);
leftIntent.setAction(LEFT);
Bundle leftExtras = new Bundle();
leftExtras.putString(LEFT + "Blog", new Gson().toJson(b));
leftExtras.putString(LEFT + "Channel", new Gson().toJson(c));
leftIntent.putExtras(leftExtras);
leftIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
PendingIntent leftPendingIntent = PendingIntent.getBroadcast(context, 0, leftIntent, 0);
views.setOnClickPendingIntent(R.id.widget_left, leftPendingIntent);
Intent rightIntent = new Intent(context, MediumRssWidgetProvider.class);
rightIntent.setAction(RIGHT);
Bundle rightExtras = new Bundle();
rightExtras.putString(RIGHT + "Blog", new Gson().toJson(b));
rightExtras.putString(RIGHT + "Channel", new Gson().toJson(c));
rightIntent.putExtras(rightExtras);
rightIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
PendingIntent rightPendingIntent = PendingIntent.getBroadcast(context, 0, rightIntent, 0);
views.setOnClickPendingIntent(R.id.widget_right, rightPendingIntent);
appWidgetManager.updateAppWidget(appWidgetId, views);
}
@SuppressLint("NewApi")
@Override
public void onReceive(final Context context, Intent intent){
super.onReceive(context, intent);
final AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
ComponentName cmpName = new ComponentName(context, LargeRssWidgetProvider.class);
final int[] appWidgetIds = appWidgetManager.getAppWidgetIds(cmpName);
BlogDalHelper helper = new BlogDalHelper();
final int mAppWidgetId = intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, 0);
if(intent.getAction().equals(REFRESH)){
FeedlyParser parser = new FeedlyParser();
Channel c = null;
SharedPreferences prefs = ReaderApp.getAppContext().getSharedPreferences("Widget_Channel", 0);
String content = prefs.getString("Widget_Channel" + mAppWidgetId, "");
if(content.length() > 0 ){
c = new Gson().fromJson(content, Channel.class);
}
Blog tmp = new Blog();
tmp.TimeStamp = 0;
tmp.PubDate = new Date();
parser.getRssBlog(c, tmp, ReaderApp.getSettings().NumPerRequest, new HttpResponseHandler(){
@Override
public <Blog> void onCallback(List<Blog> blogs, boolean result, String msg, boolean hasMore){
if(result){
BlogDalHelper helper = new BlogDalHelper();
helper.SynchronyData2DB((List<com.lgq.rssreader.entity.Blog>) blogs);
helper.Close();
Helper.sound();
com.lgq.rssreader.entity.Blog previous = ((List<com.lgq.rssreader.entity.Blog>) blogs).get(0);
// RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget4_2);
//
// views.setTextViewText(R.id.widget_blog_title, previous.Title);
// views.setTextViewText(R.id.widget_blog_desc, HtmlHelper.filterHtml(previous.Description));
// if( Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN)
// views.setTextViewTextSize(R.id.widget_blog_desc, TypedValue.COMPLEX_UNIT_DIP, 20);
// views.setTextViewText(R.id.widget_blog_pagenation, DateHelper.getDaysBeforeNow(previous.PubDate));
//
SharedPreferences.Editor editor = ReaderApp.getAppContext().getSharedPreferences("Widget_Channel", 0).edit();
editor.putString("Widget_Blog" + mAppWidgetId, new Gson().toJson(previous)).commit();
//appWidgetManager.updateAppWidget(mAppWidgetId, views);
buildRemoteView(context, appWidgetManager, mAppWidgetId);
}else{
Toast.makeText(ReaderApp.getAppContext(), msg, Toast.LENGTH_SHORT).show();
}
}
});
}else if(intent.getAction().equals(OPTION)){
buildRemoteView(context, appWidgetManager, mAppWidgetId);
}else if(intent.getAction().equals(LEFT)){
// String content = intent.getExtras().getString(LEFT + "Blog");
//
// Blog b = (Blog) new Gson().fromJson(content, Blog.class);
//
// content = intent.getExtras().getString(LEFT + "Channel");
//
// Channel c = (Channel) new Gson().fromJson(content, Channel.class);
Channel c = null;
Blog b = null;
SharedPreferences prefs = ReaderApp.getAppContext().getSharedPreferences("Widget_Channel", 0);
String content = prefs.getString("Widget_Channel" + mAppWidgetId, "");
if(content.length() > 0 ){
c = new Gson().fromJson(content, Channel.class);
}
String blogContent = prefs.getString("Widget_Blog" + mAppWidgetId, "");
b = new Gson().fromJson(blogContent, Blog.class);
Blog previous = helper.FindBlogBy(null, "", c, b, true);
// RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget4_2);
//
// views.setTextViewText(R.id.widget_blog_title, previous.Title);
// views.setTextViewText(R.id.widget_blog_desc, HtmlHelper.filterHtml(previous.Description));
// if( Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN)
// views.setTextViewTextSize(R.id.widget_blog_desc, TypedValue.COMPLEX_UNIT_DIP, 20);
// views.setTextViewText(R.id.widget_blog_pagenation, DateHelper.getDaysBeforeNow(previous.PubDate));
SharedPreferences.Editor editor = ReaderApp.getAppContext().getSharedPreferences("Widget_Channel", 0).edit();
editor.putString("Widget_Blog" + mAppWidgetId, new Gson().toJson(previous)).commit();
buildRemoteView(context, appWidgetManager, mAppWidgetId);
//appWidgetManager.updateAppWidget(mAppWidgetId, views);
}else if(intent.getAction().equals(RIGHT)){
// String content = intent.getExtras().getString(RIGHT + "Blog");
//
// Blog b = (Blog) new Gson().fromJson(content, Blog.class);
//
// content = intent.getExtras().getString(RIGHT + "Channel");
//
// Channel c = (Channel) new Gson().fromJson(content, Channel.class);
Channel c = null;
Blog b = null;
SharedPreferences prefs = ReaderApp.getAppContext().getSharedPreferences("Widget_Channel", 0);
String content = prefs.getString("Widget_Channel" + mAppWidgetId, "");
if(content.length() > 0 ){
c = new Gson().fromJson(content, Channel.class);
}
String blogContent = prefs.getString("Widget_Blog" + mAppWidgetId, "");
b = new Gson().fromJson(blogContent, Blog.class);
Blog next = helper.FindBlogBy(null, "", c, b, false);
// RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget4_2);
//
// views.setTextViewText(R.id.widget_blog_title, next.Title);
// views.setTextViewText(R.id.widget_blog_desc, HtmlHelper.filterHtml(next.Description));
// if( Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN)
// views.setTextViewTextSize(R.id.widget_blog_desc, TypedValue.COMPLEX_UNIT_DIP, 20);
// views.setTextViewText(R.id.widget_blog_pagenation, DateHelper.getDaysBeforeNow(next.PubDate));
//
SharedPreferences.Editor editor = ReaderApp.getAppContext().getSharedPreferences("Widget_Channel", 0).edit();
editor.putString("Widget_Blog" + mAppWidgetId, new Gson().toJson(next)).commit();
//appWidgetManager.updateAppWidget(mAppWidgetId, views);
buildRemoteView(context, appWidgetManager, mAppWidgetId);
}else if(intent.getAction().equals(ITEM)){
}
helper.Close();
}
}