package net.reichholf.dreamdroid.appwidget;
import android.app.ListActivity;
import android.appwidget.AppWidgetManager;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.view.View;
import android.widget.CheckBox;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;
import net.reichholf.dreamdroid.DatabaseHelper;
import net.reichholf.dreamdroid.Profile;
import net.reichholf.dreamdroid.R;
import net.reichholf.dreamdroid.helpers.ExtendedHashMap;
import java.util.ArrayList;
/**
* Created by Stephan on 07.12.13.
*/
public class VirtualRemoteWidgetConfiguration extends ListActivity {
private ArrayList<ExtendedHashMap> mProfileMapList;
private ArrayList<Profile> mProfiles;
private SimpleAdapter mAdapter;
private int mAppWidgetId;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.virtual_remote_widget_config);
setResult(RESULT_CANCELED);
Intent intent = getIntent();
Bundle extras = intent.getExtras();
if (extras != null) {
mAppWidgetId = extras.getInt(
AppWidgetManager.EXTRA_APPWIDGET_ID,
AppWidgetManager.INVALID_APPWIDGET_ID);
}
load();
}
public void load() {
DatabaseHelper dbh = DatabaseHelper.getInstance(this);
mProfileMapList = new ArrayList<>();
mProfileMapList.clear();
mProfiles = dbh.getProfiles();
if (mProfiles.size() > 0) {
for (Profile m : mProfiles) {
ExtendedHashMap map = new ExtendedHashMap();
map.put(DatabaseHelper.KEY_PROFILE_PROFILE, m.getName());
map.put(DatabaseHelper.KEY_PROFILE_HOST, m.getHost());
mProfileMapList.add(map);
}
mAdapter = new SimpleAdapter(this, mProfileMapList, android.R.layout.two_line_list_item, new String[]{
DatabaseHelper.KEY_PROFILE_PROFILE, DatabaseHelper.KEY_PROFILE_HOST}, new int[]{android.R.id.text1,
android.R.id.text2});
setListAdapter(mAdapter);
mAdapter.notifyDataSetChanged();
} else {
showToast(getString(R.string.no_profile_available));
finish();
}
}
private boolean isQuickZapChecked(){
return ((CheckBox) findViewById(R.id.checkbox_quickzap)).isChecked();
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
finish(mProfiles.get(position).getId(), isQuickZapChecked());
}
public void finish(int profileId, boolean isQuickZap) {
Intent data = new Intent();
data.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, mAppWidgetId);
setResult(RESULT_OK, data);
saveWidgetConfiguration(profileId, !isQuickZap);
Context context = getApplicationContext();
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
Profile profile = getWidgetProfile(context, mAppWidgetId);
VirtualRemoteWidgetProvider.updateWidget(context, appWidgetManager, mAppWidgetId, profile);
finish();
}
public void saveWidgetConfiguration(int profileId, boolean isFull) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = prefs.edit();
editor.putInt(getProfileIdKey(mAppWidgetId), profileId);
editor.putBoolean(getIsFullKey(mAppWidgetId), isFull);
editor.commit();
}
public void showToast(String text) {
Toast toast = Toast.makeText(this, text, Toast.LENGTH_LONG);
toast.show();
}
public static Profile getWidgetProfile(Context context, int appWidgetId) {
int profileId = PreferenceManager.getDefaultSharedPreferences(context).getInt(getProfileIdKey(appWidgetId), -1);
DatabaseHelper dbh = DatabaseHelper.getInstance(context);
return dbh.getProfile(profileId);
}
public static String getProfileIdKey(int appWidgetId) {
return VirtualRemoteWidgetProvider.WIDGET_PREFERENCE_PREFIX + Integer.toString(appWidgetId);
}
public static String getIsFullKey(int appWidgetId) {
return VirtualRemoteWidgetProvider.WIDGET_PREFERENCE_PREFIX + Integer.toString(appWidgetId) + "isFull";
}
public static boolean isFull(Context context, int appWidgetId) {
return PreferenceManager.getDefaultSharedPreferences(context).getBoolean(VirtualRemoteWidgetProvider.WIDGET_PREFERENCE_PREFIX + Integer.toString(appWidgetId) + "isFull", false);
}
public static void deleteWidgetConfiguration(Context context, int appWidgetId) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
if (prefs.contains(getProfileIdKey(appWidgetId))) {
SharedPreferences.Editor editor = prefs.edit();
editor.remove(getProfileIdKey(appWidgetId));
editor.commit();
}
}
}