package me.wcy.music.executor; import android.app.ProgressDialog; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.os.Handler; import android.support.v7.app.AlertDialog; import android.view.MenuItem; import me.wcy.music.R; import me.wcy.music.activity.AboutActivity; import me.wcy.music.activity.MusicActivity; import me.wcy.music.activity.SettingActivity; import me.wcy.music.application.AppCache; import me.wcy.music.service.PlayService; import me.wcy.music.utils.Preferences; import me.wcy.music.utils.ToastUtils; /** * 导航菜单执行器 * Created by hzwangchenyan on 2016/1/14. */ public class NaviMenuExecutor { public static boolean onNavigationItemSelected(MenuItem item, Context context) { switch (item.getItemId()) { case R.id.action_setting: startActivity(context, SettingActivity.class); return true; case R.id.action_night: nightMode(context); break; case R.id.action_timer: timerDialog(context); return true; case R.id.action_exit: exit(context); return true; case R.id.action_about: startActivity(context, AboutActivity.class); return true; } return false; } private static void startActivity(Context context, Class<?> cls) { Intent intent = new Intent(context, cls); context.startActivity(intent); } private static void nightMode(Context context) { if (!(context instanceof MusicActivity)) { return; } final MusicActivity activity = (MusicActivity) context; final boolean on = !Preferences.isNightMode(); final ProgressDialog dialog = new ProgressDialog(activity); dialog.setCancelable(false); dialog.show(); AppCache.updateNightMode(on); Handler handler = new Handler(activity.getMainLooper()); handler.postDelayed(new Runnable() { @Override public void run() { dialog.cancel(); activity.recreate(); Preferences.saveNightMode(on); } }, 500); } private static void timerDialog(final Context context) { if (!(context instanceof MusicActivity)) { return; } new AlertDialog.Builder(context) .setTitle(R.string.menu_timer) .setItems(context.getResources().getStringArray(R.array.timer_text), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { int[] times = context.getResources().getIntArray(R.array.timer_int); startTimer(context, times[which]); } }) .show(); } private static void startTimer(Context context, int minute) { if (!(context instanceof MusicActivity)) { return; } MusicActivity activity = (MusicActivity) context; PlayService service = activity.getPlayService(); service.startQuitTimer(minute * 60 * 1000); if (minute > 0) { ToastUtils.show(context.getString(R.string.timer_set, String.valueOf(minute))); } else { ToastUtils.show(R.string.timer_cancel); } } private static void exit(Context context) { if (!(context instanceof MusicActivity)) { return; } MusicActivity activity = (MusicActivity) context; activity.finish(); PlayService service = AppCache.getPlayService(); if (service != null) { service.stop(); } } }