PinkiePieLive/src/com/derpfish/pinkielive/preference/PinkiePieLiveWallpaperSetti...

119 lines
3.4 KiB
Java

package com.derpfish.pinkielive.preference;
import android.content.Context;
import com.derpfish.pinkielive.PinkiePieLiveWallpaper;
import com.derpfish.pinkielive.R;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.Uri;
import android.os.Bundle;
import android.preference.CheckBoxPreference;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceClickListener;
import android.preference.PreferenceActivity;
import java.io.*;
public class PinkiePieLiveWallpaperSettings extends PreferenceActivity implements SharedPreferences.OnSharedPreferenceChangeListener, OnPreferenceClickListener
{
private static final int SELECT_PICTURE = 1;
private Intent gallery;
@Override
protected void onCreate(Bundle icicle)
{
super.onCreate(icicle);
getPreferenceManager().setSharedPreferencesName(PinkiePieLiveWallpaper.SHARED_PREFS_NAME);
addPreferencesFromResource(R.xml.livewallpaper_settings);
getPreferenceManager().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
setDefaultBgEnabled();
findPreference("livewallpaper_image").setOnPreferenceClickListener(this);
gallery = new Intent();
gallery.setType("image/*");
gallery.setAction(Intent.ACTION_GET_CONTENT);
}
private void setDefaultBgEnabled()
{
final SharedPreferences sharedPr = getPreferenceManager().getSharedPreferences();
findPreference("livewallpaper_defaultbg").setEnabled(
!sharedPr.getBoolean("livewallpaper_defaultbg", true)
|| sharedPr.getString("livewallpaper_image", null) != null);
}
@Override
protected void onResume()
{
super.onResume();
}
@Override
protected void onDestroy()
{
getPreferenceManager().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
super.onDestroy();
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key)
{
setDefaultBgEnabled();
}
@Override
public boolean onPreferenceClick(Preference pr)
{
if (pr.getKey().equals("livewallpaper_image"))
{
startActivityForResult(Intent.createChooser(gallery, "Select Background"), SELECT_PICTURE);
}
return false;
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
if (resultCode == RESULT_OK)
{
if (requestCode == SELECT_PICTURE)
{
Uri selectedImageUri = data.getData();
try {
// Delete old image
String oldLocation = getPreferenceManager().getSharedPreferences().getString("livewallpaper_image", null);
if (oldLocation != null) {
File oldFile = new File(getApplicationContext().getFilesDir(), oldLocation);
if (oldFile.exists()) oldFile.delete();
}
// Copy the new one
FileOutputStream fos = openFileOutput(selectedImageUri.getLastPathSegment(), Context.MODE_PRIVATE);
InputStream fis = getContentResolver().openInputStream(selectedImageUri);
byte[] buf = new byte[1024];
int len;
while ((len = fis.read(buf)) != -1) {
fos.write(buf, 0, len);
}
fis.close();
fos.close();
SharedPreferences.Editor editor = getPreferenceManager().getSharedPreferences().edit();
editor.putString("livewallpaper_image", selectedImageUri.getLastPathSegment());
editor.putBoolean("livewallpaper_defaultbg", false);
editor.commit();
((CheckBoxPreference) findPreference("livewallpaper_defaultbg")).setChecked(false);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
}