package com.chickenkiller.upods2.utils; import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.text.Html; import android.view.View; import android.widget.Toast; import com.afollestad.materialdialogs.MaterialDialog; import com.chickenkiller.upods2.R; import com.chickenkiller.upods2.controllers.app.ProfileManager; import com.chickenkiller.upods2.controllers.app.SettingsManager; import com.chickenkiller.upods2.controllers.internet.BackendManager; import com.chickenkiller.upods2.controllers.player.UniversalPlayer; import com.chickenkiller.upods2.dialogs.DialogFragmentAddMediaItem; import com.chickenkiller.upods2.dialogs.DialogFragmentConfarmation; import com.chickenkiller.upods2.dialogs.DialogFragmentMessage; import com.chickenkiller.upods2.fragments.FragmentPlayer; import com.chickenkiller.upods2.interfaces.IFragmentsManager; import com.chickenkiller.upods2.interfaces.IOperationFinishCallback; import com.chickenkiller.upods2.interfaces.IRequestCallback; import com.chickenkiller.upods2.models.Episode; import com.chickenkiller.upods2.models.MediaItem; import com.chickenkiller.upods2.models.Podcast; import com.chickenkiller.upods2.models.RadioItem; import com.chickenkiller.upods2.models.Track; import com.chickenkiller.upods2.utils.enums.MediaItemType; import org.json.JSONObject; import java.io.File; import java.util.Iterator; /** * Created by Alon Zilberman on 10/22/15. * Put all logic for context menu clicks here */ public class ContextMenuHelper { public static void showAboutPodcastDialog(Podcast podcast, IFragmentsManager fragmentsManager) { DialogFragmentMessage dialogFragmentMessage = new DialogFragmentMessage(); dialogFragmentMessage.setTitle(podcast.getName()); dialogFragmentMessage.setMessage(podcast.getDescription()); fragmentsManager.showDialogFragment(dialogFragmentMessage); } public static void showPodcastInFolder(MediaItem mediaItemData, Activity activity) { Uri selectedUri = Uri.parse(((Podcast) mediaItemData).getDownloadedDirectory()); Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(selectedUri, "*/*"); activity.startActivity(intent); } public static void removeAllDonwloadedEpisods(Activity activity, final Podcast podcast, final IOperationFinishCallback contextItemSelected) { DialogFragmentConfarmation dialogFragmentConfarmation = new DialogFragmentConfarmation(); dialogFragmentConfarmation.setTitle(podcast.getName()); dialogFragmentConfarmation.setMessage(activity.getString(R.string.remove_podcast_conformation)); dialogFragmentConfarmation.setPositiveClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String path = podcast.getDownloadedDirectory(); GlobalUtils.deleteDirectory(new File(path)); for (Episode episode : podcast.getEpisodes()) { ProfileManager.getInstance().removeDownloadedTrack(podcast, episode); } podcast.getEpisodes().clear(); contextItemSelected.operationFinished(); } }); ((IFragmentsManager) activity).showDialogFragment(dialogFragmentConfarmation); } public static void removeDonwloadedTrack(Activity activity, Track track, MediaItem mediaItem, final IOperationFinishCallback contextItemSelected) { ProfileManager.getInstance().removeDownloadedTrack(mediaItem, track); Podcast podcast = (Podcast) mediaItem; for (int i = 0; i < podcast.getEpisodes().size(); i++) { if (GlobalUtils.safeTitleEquals(podcast.getEpisodes().get(i).getTitle(), track.getTitle())) { podcast.getEpisodes().remove(i); } } contextItemSelected.operationFinished(); Toast.makeText(activity, R.string.episod_removed, Toast.LENGTH_SHORT).show(); } public static void showAddMediaDialog(Activity activity, MediaItemType mediaItemType) { DialogFragmentAddMediaItem dialogFragmentAddMediaItem = new DialogFragmentAddMediaItem(); dialogFragmentAddMediaItem.setMediaItemType(mediaItemType); ((IFragmentsManager) activity).showDialogFragment(dialogFragmentAddMediaItem); } public static void selectRadioStreamQuality(final Activity activity, final FragmentPlayer fragmentPlayer, final RadioItem currentMediaItem) { final RadioItem playableMediaItem = (RadioItem) UniversalPlayer.getInstance().getPlayingMediaItem(); String[] availableStreams = (playableMediaItem).getAvailableStreams(); for (int i = 0; i < availableStreams.length; i++) { availableStreams[i] = availableStreams[i] + activity.getString(R.string.kbps); } if (availableStreams.length == 0) { Toast.makeText(activity, activity.getString(R.string.not_available_for_stream), Toast.LENGTH_SHORT).show(); } else { new MaterialDialog.Builder(activity).title(R.string.select_stream_quality) .items(availableStreams) .itemsCallbackSingleChoice(playableMediaItem.getSelectedStreamAsNumber(availableStreams), new MaterialDialog.ListCallbackSingleChoice() { @Override public boolean onSelection(MaterialDialog dialog, View view, int which, CharSequence text) { String selectedStream = text.toString().replace(activity.getString(R.string.kbps), ""); SettingsManager.getInstace().saveStreamQualitySelection(playableMediaItem, selectedStream); playableMediaItem.selectStreamUrl(selectedStream); currentMediaItem.selectStreamUrl(selectedStream); UniversalPlayer.getInstance().softRestart(); fragmentPlayer.initPlayerStateUI(); return true; } }) .positiveText(R.string.select) .show(); } } public static void showStreamInfoDialog(final Activity activity) { String stremLink = UniversalPlayer.getInstance().getPlayingMediaItem().getAudeoLink(); final MaterialDialog progressDialog = new MaterialDialog.Builder(activity) .title(R.string.fetching_info) .content(R.string.please_wait) .progress(true, 0) .show(); BackendManager.getInstance().sendRequest(ServerApi.STREAM_INFO + stremLink, new IRequestCallback() { @Override public void onRequestSuccessed(final JSONObject jResponse) { activity.runOnUiThread(new Runnable() { @Override public void run() { try { StringBuilder info = new StringBuilder(); Iterator<String> iter = jResponse.keys(); while (iter.hasNext()) { String key = iter.next(); String value = jResponse.has(key) ? jResponse.getString(key) : ""; value = value.equals("null") || value.isEmpty() ? activity.getString(R.string.unknown) : value; info.append("<b>" + GlobalUtils.upperCase(key) + ":</b> " + value + "<br>"); } new MaterialDialog.Builder(activity) .title(R.string.stream_info) .content(Html.fromHtml(info.toString())) .positiveText(R.string.ok) .show(); } catch (Exception e) { Toast.makeText(activity, R.string.cant_get_info, Toast.LENGTH_SHORT).show(); e.printStackTrace(); } progressDialog.dismiss(); } } ); } @Override public void onRequestFailed() { activity.runOnUiThread(new Runnable() { @Override public void run() { progressDialog.dismiss(); } }); } } ); } }