/* © 2010 Stephan Reichholf <stephan at reichholf dot net> * * Licensed under the Create-Commons Attribution-Noncommercial-Share Alike 3.0 Unported * http://creativecommons.org/licenses/by-nc-sa/3.0/ */ package net.reichholf.dreamdroid.helpers.enigma2; import android.content.Context; import android.content.SharedPreferences; import android.os.Environment; import android.preference.PreferenceManager; import android.view.View; import android.widget.ImageView; import com.squareup.picasso.Callback; import com.squareup.picasso.Picasso; import net.reichholf.dreamdroid.DreamDroid; import net.reichholf.dreamdroid.R; import net.reichholf.dreamdroid.helpers.ExtendedHashMap; import net.reichholf.dreamdroid.helpers.NameValuePair; import net.reichholf.dreamdroid.helpers.SimpleHttpClient; import java.io.File; import java.util.ArrayList; /** * @author sre */ public class Picon { public static String getBasepath(Context context){ SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context); if(sp.getBoolean(DreamDroid.PREFS_KEY_PICONS_ONLINE, DreamDroid.isTV(context))) { return String.format("%s/", sp.getString(DreamDroid.PREFS_KEY_SYNC_PICONS_PATH, "/usr/share/enigma2/picon"), "/"); } if(!Environment.getExternalStorageDirectory().canWrite()) return String.format("%s%spicons%s", context.getFilesDir().getAbsolutePath(), File.separator, File.separator); return String.format("%s%sdreamDroid%spicons%s", Environment.getExternalStorageDirectory() .getAbsolutePath(), File.separator, File.separator, File.separator); } public static String getPiconFileName(Context context, ExtendedHashMap service, boolean useName) { String root = getBasepath(context); if(PreferenceManager.getDefaultSharedPreferences(context).getBoolean(DreamDroid.PREFS_KEY_FAKE_PICON, false)) return String.format("%spicon_default.png", root); String fileName; if(useName){ fileName = service.getString(Event.KEY_SERVICE_NAME); } else { fileName = service.getString(Event.KEY_SERVICE_REFERENCE); if (fileName == null || !fileName.contains(":")) return fileName; fileName = fileName.substring(0, fileName.lastIndexOf(':')); fileName = fileName.replace(":", "_"); if (fileName.endsWith("_")) fileName = fileName.substring(0, fileName.length() - 1); } fileName = String.format("%s%s.png", root, fileName); return fileName; } public static void setPiconForView(Context context, ImageView piconView, ExtendedHashMap service, String tag) { setPiconForView(context, piconView, service, tag, null); } public static void setPiconForView(Context context, ImageView piconView, ExtendedHashMap service, String tag, Callback callback) { if (piconView == null) { return; } SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context); if (!sp.getBoolean(DreamDroid.PREFS_KEY_PICONS_ENABLED, DreamDroid.isTV(context))) { piconView.setVisibility(View.GONE); return; } boolean useName = sp.getBoolean(DreamDroid.PREFS_KEY_PICONS_USE_NAME, false); String fileName = getPiconFileName(context, service, useName); if (fileName == null) { piconView.setVisibility(View.GONE); return; } if (piconView.getVisibility() != View.VISIBLE) piconView.setVisibility(View.VISIBLE); String uri = getPiconUri(context, fileName); Picasso.with(context).load(uri).fit().centerInside().tag(tag).error(R.drawable.dreamdroid_logo_simple).into(piconView, callback); } public static String getPiconUri(Context context, String fileName) { //https://dm7080/file?file=%2F%2Fmedia%2Fhdd%2Fmovie%2F20160822%202245%20-%20BR%20Fernsehen%20S%C3%BCd%20HD%20-%20Irgendwie%20und%20Sowieso%20(12)%20-%20Miteinander%20-%20Auseinander%20-%2030-J%C3%84HRIGES%20JUBIL%C3%84UM.ts if(PreferenceManager.getDefaultSharedPreferences(context).getBoolean(DreamDroid.PREFS_KEY_PICONS_ONLINE, DreamDroid.isTV(context))) { ArrayList<NameValuePair> params = new ArrayList<>(); params.add(new NameValuePair("file", fileName)); return SimpleHttpClient.getInstance().buildAuthedUrl(URIStore.FILE, params); } return String.format("file://%s", fileName); } public static void clearCache() { } }