nowol/app/src/main/java/com/blogspot/developersu/nowol/nowol/com/blogspot/developersu/nowol/nowol/widget/NoWolWidget.java

100 lines
4.2 KiB
Java

package com.blogspot.developersu.nowol.nowol.com.blogspot.developersu.nowol.nowol.widget;
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.graphics.Color;
import android.widget.RemoteViews;
import com.blogspot.developersu.nowol.nowol.R;
import com.blogspot.developersu.nowol.nowol.SendRequestService;
public class NoWolWidget extends AppWidgetProvider {
private SharedPreferences sharedSettings;
String hostIP;
int bgColor;
private void setRequests(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIDs){
sharedSettings = context.getSharedPreferences("NoWolPreferences", Context.MODE_PRIVATE);
hostIP = sharedSettings.getString("Host", context.getResources().getString(R.string.hostNameDefault));
bgColor = sharedSettings.getInt("WidgetBgColor", Color.BLACK);
RemoteViews rv = new RemoteViews(context.getPackageName(), R.layout.no_wol_widget);
rv.setInt(R.id.widgetBasicLayout, "setBackgroundColor", bgColor);
for (int appWidgetId : appWidgetIDs) {
//refresh
Intent refreshIntent = new Intent(context, SendRequestService.class);
refreshIntent.putExtra("url", hostIP);
refreshIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
PendingIntent refreshPendingIntent = PendingIntent.getService(context, appWidgetId+1, refreshIntent, PendingIntent.FLAG_UPDATE_CURRENT);
rv.setOnClickPendingIntent(R.id.widgetBntRefresh, refreshPendingIntent);
//reset
Intent resetIntent = new Intent(context, SendRequestService.class);
resetIntent.putExtra("url", hostIP + "/?RESET=on");
resetIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
PendingIntent resetPendingIntent = PendingIntent.getService(context, appWidgetId+2, resetIntent, PendingIntent.FLAG_UPDATE_CURRENT);
rv.setOnClickPendingIntent(R.id.widgetBtnReset, resetPendingIntent);
//power
Intent powerIntent = new Intent(context, SendRequestService.class);
powerIntent.putExtra("url", hostIP + "/?POWER0=on");
powerIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
PendingIntent powerPendingIntent = PendingIntent.getService(context, appWidgetId+3, powerIntent, PendingIntent.FLAG_UPDATE_CURRENT);
rv.setOnClickPendingIntent(R.id.widgetBtnPwr, powerPendingIntent);
//power5
Intent power5Intent = new Intent(context, SendRequestService.class);
power5Intent.putExtra("url", hostIP + "/?POWER1=on");
power5Intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
PendingIntent power5PendingIntent = PendingIntent.getService(context, appWidgetId+4, power5Intent, PendingIntent.FLAG_UPDATE_CURRENT);
rv.setOnClickPendingIntent(R.id.widgetBtnPwr5, power5PendingIntent);
appWidgetManager.updateAppWidget(appWidgetId, rv);
context.startService(refreshIntent);
}
}
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
super.onUpdate(context, appWidgetManager, appWidgetIds);
setRequests(context, appWidgetManager, appWidgetIds);
}
@Override
public void onEnabled(Context context) {
super.onEnabled(context);
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
int[] appWidgetIds = appWidgetManager.getAppWidgetIds(new ComponentName(context, NoWolWidget.class));
setRequests(context, appWidgetManager, appWidgetIds);
}
@Override
public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
onEnabled(context);
}
@Override
public void onDeleted(Context context, int[] appWidgetIds) {
super.onDeleted(context, appWidgetIds);
}
@Override
public void onDisabled(Context context) {
super.onDisabled(context);
}
}