119 lines
3.4 KiB
Java
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();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|