/*
* Copyright 2014 Klinker Apps Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package xyz.klinker.blur.addons.settings;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Point;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.preference.*;
import android.view.Display;
import android.view.WindowManager;
import android.widget.Toast;
import xyz.klinker.blur.R;
import xyz.klinker.blur.addons.utils.IOUtils;
import xyz.klinker.blur.addons.utils.IconPackHelper;
import xyz.klinker.blur.addons.utils.Utils;
import java.io.File;
public class SettingsPopupActivity extends PreferenceActivity implements SharedPreferences.OnSharedPreferenceChangeListener {
public Context context;
@Override
public void onCreate(Bundle savedInstanceState) {
setUpWindow();
super.onCreate(savedInstanceState);
context = this;
setPrefs();
setXML();
}
private void setPrefs() {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
if (Build.VERSION.SDK_INT < 18 ||
!Utils.isPackageInstalled(this, "com.klinker.android.blur_unread")) {
prefs.edit().putBoolean("use_unread", false).commit();
}
if (Build.VERSION.SDK_INT < 16) {
prefs.edit().putBoolean("scroll_wallpaper", false).commit();
}
}
@Override
public void onResume() {
super.onResume();
try {
getPreferenceScreen().getSharedPreferences()
.registerOnSharedPreferenceChangeListener(this);
} catch (Exception e) { }
}
@Override
public void onPause() {
super.onPause();
try {
getPreferenceScreen().getSharedPreferences()
.unregisterOnSharedPreferenceChangeListener(this);
} catch (Exception e) { }
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String s) {
SettingsActivity.prefChanged = true;
// clear any custom icons when you switch packs
if (s.equals("icon_pack")) {
sharedPreferences.edit().remove("custom_icons").commit();
}
}
public void setUpWindow() {
//requestWindowFeature(Window.FEATURE_ACTION_BAR);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND,
WindowManager.LayoutParams.FLAG_DIM_BEHIND);
// Params for the window.
// You can easily set the alpha and the dim behind the window from here
WindowManager.LayoutParams params = getWindow().getAttributes();
params.alpha = .85f; // lower than one makes it more transparent
params.dimAmount = .6f; // set it higher if you want to dim behind the window
getWindow().setAttributes(params);
getListView().setAlpha(.85f);
// Gets the display size so that you can set the window to a percent of that
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;
// You could also easily used an integer value from the shared preferences to set the percent
if (height > width) {
getWindow().setLayout((int) (width * .85), (int) (height * .66));
} else {
getWindow().setLayout((int) (width * .5), (int) (height * .8));
}
}
@SuppressWarnings("deprecation")
public void setXML() {
switch (getIntent().getIntExtra("page", 1)) {
case SettingsActivity.PAGE_LAYOUT:
addPreferencesFromResource(R.xml.layout_settings);
getActionBar().setTitle(R.string.layout);
setUpLayout();
break;
case SettingsActivity.PAGE_VISUALS:
addPreferencesFromResource(R.xml.visual_settings);
getActionBar().setTitle(R.string.visuals);
setUpVisuals();
break;
case SettingsActivity.PAGE_DOCK:
addPreferencesFromResource(R.xml.dock_settings);
getActionBar().setTitle(R.string.dock);
break;
case SettingsActivity.PAGE_EXPERIMENTAL:
addPreferencesFromResource(R.xml.advanced_settings);
getActionBar().setTitle(getString(R.string.experimental_settings));
setUpExperimental();
break;
case SettingsActivity.PAGE_BACKUP:
addPreferencesFromResource(R.xml.backup_settings);
getActionBar().setTitle(getString(R.string.backup_and_restore));
setUpBackup();
break;
}
}
public void setUpLayout() {
Preference gestureSettings = findPreference("buttons_and_gestures");
gestureSettings.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
startActivity(new Intent(context, ButtonsGesturesActivity.class));
return false;
}
});
Preference hiddenApps = findPreference("hidden_apps");
hiddenApps.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
startActivity(new Intent(context, HiddenAppsActivity.class));
return false;
}
});
}
public void setUpVisuals() {
Preference iconPack = findPreference("ui_general_iconpack");
iconPack.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
IconPackHelper.pickIconPack(context);
return false;
}
});
}
public void setUpExperimental() {
final AlertDialog.Builder builder = new AlertDialog.Builder(this)
.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
Preference runningAbout = findPreference("running_about");
runningAbout.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
builder.setTitle(R.string.about_running);
builder.setMessage(R.string.keep_running_about);
builder.show();
return false;
}
});
/*if (Build.VERSION.SDK_INT >= 18) {
Preference unreadAbout = findPreference("unread_about");
unreadAbout.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
builder.setTitle(R.string.unread_badges);
builder.setMessage(R.string.about_unread_summary);
builder.show();
return false;
}
});
Preference unreadBugs = findPreference("unread_bugs");
unreadBugs.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
builder.setTitle(R.string.known_bugs);
builder.setMessage(R.string.unread_bugs_summary);
builder.show();
return false;
}
});
}
if (Build.VERSION.SDK_INT >= 19) {
Preference hotword = findPreference("hotword_about");
hotword.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
builder.setTitle(R.string.ok_google_hotword);
builder.setMessage(R.string.hotword_about);
builder.show();
return false;
}
});
}*/
}
public void setUpBackup() {
Preference backupSettings = findPreference("backup_settings");
backupSettings.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
File des = new File(Environment.getExternalStorageDirectory() + "/Blur/backup.prefs");
if (IOUtils.saveSharedPreferencesToFile(des, context)) {
Toast.makeText(context, R.string.backup_complete, Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(context, R.string.backup_failed, Toast.LENGTH_SHORT).show();
}
return false;
}
});
Preference restoreSettings = findPreference("restore_settings");
restoreSettings.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
File des = new File(Environment.getExternalStorageDirectory() + "/Blur/backup.prefs");
if (IOUtils.loadSharedPreferencesFromFile(des, context)) {
Toast.makeText(context, R.string.restore_complete, Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(context, R.string.restore_failed, Toast.LENGTH_SHORT).show();
}
return false;
}
});
}
}