package it.angelic.soulissclient; import android.app.Activity; import android.app.Application; import android.content.Context; import android.content.SharedPreferences; import android.graphics.drawable.GradientDrawable; import android.util.DisplayMetrics; import android.util.Log; import android.view.View; import android.view.WindowManager; import java.io.Serializable; import java.util.HashSet; import java.util.Set; import it.angelic.soulissclient.helpers.SoulissPreferenceHelper; /** * Contenitore metodi globali per reperimento contesto * e dimensioni finestra * * @author pegoraro */ public class SoulissApp extends Application implements Serializable { private static final long serialVersionUID = 962480567399715745L; private static volatile Context context; private static DisplayMetrics metrics = new DisplayMetrics(); private static float displayWidth; private static float displayHeight; private static SoulissPreferenceHelper opzioni; private static SharedPreferences soulissConfigurationPreference; public static Context getAppContext() { return SoulissApp.context; } public static float getDisplayHeight() { return displayHeight; } public static float getDisplayWidth() { return displayWidth; } /** * Setta la dimensione del background Drawable * gli errori vengono ignorati e sparati in warn * * @param target * @param mgr */ public static void setBackground(View target, WindowManager mgr) { try { mgr.getDefaultDisplay().getMetrics(metrics); //StateListDrawable gras = (StateListDrawable) target.getRootView().getBackground(); GradientDrawable gra = (GradientDrawable) target.getRootView().getBackground(); gra.setGradientRadius(metrics.widthPixels / 2f); //displayWidth = metrics.widthPixels; //displayHeight = metrics.heightPixels; gra.setDither(true); } catch (Exception e) { Log.w(Constants.TAG, "Couldn't set background:" + e.getMessage()); } } public static SoulissPreferenceHelper getOpzioni() { return opzioni; } /*public static InetAddress getBroadcastAddress() throws UnknownHostException { WifiManager wifi = (WifiManager) SoulissClient.context.getSystemService(Context.WIFI_SERVICE); DhcpInfo dhcp = wifi.getDhcpInfo(); // handle null somehow int broadcast = (dhcp.ipAddress & dhcp.netmask) | ~dhcp.netmask; byte[] quads = new byte[4]; for (int k = 0; k < 4; k++) quads[k] = (byte) ((broadcast >> k * 8) & 0xFF); return InetAddress.getByAddress("255.255.255.255"); }*/ private static void setOpzioni(SoulissPreferenceHelper opzioni) { SoulissApp.opzioni = opzioni; } /*private static void setCtx(Context ct){ SoulissClient.context = ct; }*/ public static boolean isWelcomeDisabled() { return soulissConfigurationPreference.getBoolean("welcome_disabled", false); } public static void saveWelcomeDisabledPreference(boolean val) { SharedPreferences.Editor edit = soulissConfigurationPreference.edit(); edit.putBoolean("welcome_disabled", val).apply(); } public static String getCurrentConfig() { return soulissConfigurationPreference.getString("current_config", ""); } public static void setCurrentConfig(String newConfig) { soulissConfigurationPreference.edit().putString("current_config", newConfig).apply(); } public void onCreate() { super.onCreate(); context = getApplicationContext(); setOpzioni(new SoulissPreferenceHelper(getApplicationContext())); DisplayMetrics displayMetrics = getApplicationContext().getResources().getDisplayMetrics(); displayWidth = displayMetrics.heightPixels / displayMetrics.density; displayHeight = displayMetrics.widthPixels / displayMetrics.density; soulissConfigurationPreference = getSharedPreferences("SoulissConfigPrefs", Activity.MODE_PRIVATE); } public static void addConfiguration(String newConfig) { SharedPreferences.Editor editor = soulissConfigurationPreference.edit(); Set<String> current = getConfigurations(); current.add(newConfig); editor.putStringSet(Constants.SOULISS_CONFIGURATIONS_KEY, current); editor.apply(); } public static void deleteConfiguration(String newConfig) { SharedPreferences.Editor editor = soulissConfigurationPreference.edit(); Set<String> current = getConfigurations(); if (current.contains(newConfig)) current.remove(newConfig); editor.putStringSet(Constants.SOULISS_CONFIGURATIONS_KEY, current); editor.apply(); } public static Set<String> getConfigurations() { return soulissConfigurationPreference.getStringSet(Constants.SOULISS_CONFIGURATIONS_KEY, new HashSet<String>()); } }