Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.mp3.music.player.invenio.musicplayer;
- import android.annotation.TargetApi;
- import android.app.ProgressDialog;
- import android.content.ContentResolver;
- import android.content.ContentValues;
- import android.content.Context;
- import android.content.DialogInterface;
- import android.content.Intent;
- import android.database.Cursor;
- import android.media.MediaScannerConnection;
- import android.media.RingtoneManager;
- import android.net.Uri;
- import android.os.Build;
- import android.os.Bundle;
- import android.os.Environment;
- import android.provider.MediaStore;
- import android.support.v7.app.AlertDialog;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.ViewGroup;
- import android.widget.AdapterView;
- import android.widget.ArrayAdapter;
- import android.widget.Button;
- import android.widget.EditText;
- import android.widget.ListView;
- import android.widget.Toast;
- import com.mp3.music.player.invenio.NeedPermissionActivity;
- import com.mp3.music.player.invenio.R;
- import com.mp3.music.player.invenio.RingtoneApplication;
- import com.mp3.music.player.invenio.musicplayer.models.Entity;
- import com.mp3.music.player.invenio.musicplayer.models.EntityUtils;
- import com.mp3.music.player.invenio.musicplayer.models.Playlist;
- import com.mp3.music.player.invenio.musicplayer.models.Track;
- import com.mp3.music.player.invenio.musicplayer.utils.DataBaseHelper;
- import com.mp3.music.player.invenio.musicplayer.utils.DataLoader;
- import com.mp3.music.player.invenio.musicplayer.utils.Utils;
- import com.mp3.music.player.invenio.utils.Constants;
- import com.mp3.music.player.invenio.utils.ImagePicker;
- import java.util.ArrayList;
- public class HasMenuItemActivity extends NeedPermissionActivity {
- protected int mode = MODE_NONE;
- public static final int MODE_NONE = -1;
- public static final int MODE_RENAME = 1;
- public static final int MODE_DELETE = 2;
- public static final int UPDATE_THEME = 44;
- protected String LOG_TAG;
- @Override
- protected void onCreate(Bundle b) {
- super.onCreate(b);
- LOG_TAG = getClass().getSimpleName();
- RingtoneApplication.getInstance().setCurrentActivity(this);
- }
- @Override
- protected void onDestroy() {
- super.onDestroy();
- RingtoneApplication.getInstance().removeCurrentActivity(this);
- }
- @Override
- protected void onResume() {
- RingtoneApplication.getInstance().setPaused(false);
- super.onResume();
- RingtoneApplication.getInstance().setCurrentActivity(this);
- }
- @Override
- protected void onPause() {
- RingtoneApplication.getInstance().setPaused(true);
- super.onPause();
- RingtoneApplication.getInstance().removeCurrentActivity(null);
- }
- public void addToPlaylistCallback(Entity playList, Track track) {
- }
- public void removeFromPlaylistCallback(Entity playList, Track track) {
- }
- public void removeEntityCallback(Entity entity) {
- }
- public void addPlaylistCallback(Entity entity) {
- }
- public void renameEntityCallback(Entity entity, String[] resultPaths) {
- }
- protected ProgressDialog progressDialog;
- public void showProgressDialog() {
- progressDialog = new ProgressDialog(this);
- progressDialog.setTitle(getString(R.string.progress_dialog_wait));
- progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
- progressDialog.setCancelable(false);
- progressDialog.show();
- }
- public void dismissProgressDialog() {
- if (progressDialog != null) {
- progressDialog.dismiss();
- }
- }
- protected void updateAdapter(int mode) {
- }
- protected void startScanner(final int mode) {
- showProgressDialog();
- new Thread(new Runnable() {
- @Override
- public void run() {
- MediaScannerWrapper mediaScannerWrapper = new MediaScannerWrapper(getApplicationContext(),
- Environment.getExternalStorageDirectory().getPath(), Constants.getInstance().AUDIO_TYPE, mode);
- mediaScannerWrapper.scan();
- }
- }).start();
- }
- public void changeEntityImage(Entity entity) {
- RingtoneApplication.getInstance().setCurrentEntity(entity);
- ImagePicker.getImageFromDevice(this);
- }
- Uri uri = null;
- int type = -1;
- public void makeSongAsDefault(int type, Uri uri) {
- if (checkWriteSettingsPermission()) {
- RingtoneManager.setActualDefaultRingtoneUri(this, type, uri);
- } else {
- this.uri = uri;
- this.type = type;
- }
- }
- @Override
- protected void onSaveInstanceState(Bundle outState) {
- if (type != -1 && uri != null) {
- outState.putInt("type", type);
- outState.putString("uri", uri.toString());
- }
- }
- @Override
- protected void onRestoreInstanceState(Bundle savedInstanceState) {
- super.onRestoreInstanceState(savedInstanceState);
- try {
- this.uri = Uri.parse(savedInstanceState.getString("uri"));
- this.type = savedInstanceState.getInt("type");
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- @Override
- protected void grantPermission(int permission) {
- switch (permission) {
- case CODE_WRITE_SETTINGS_PERMISSION:
- if (type != -1 && uri != null) {
- RingtoneManager.setActualDefaultRingtoneUri(this, type, uri);
- }
- break;
- case CODE_WRITE_CONTACTS_PERMISSION:
- callChooseContactActivity();
- break;
- case REQUEST_CODE_DOCUMENT_TREE:
- switch (mode) {
- case MODE_RENAME:
- renameEntity(RingtoneApplication.getInstance().getTempEntity());
- mode = MODE_NONE;
- break;
- case MODE_DELETE:
- deleteEntity(RingtoneApplication.getInstance().getTempEntity());
- mode = MODE_NONE;
- break;
- }
- break;
- }
- }
- @Override
- protected void deniedPermission(int permission) {
- switch (permission) {
- case CODE_WRITE_SETTINGS_PERMISSION:
- showAppDetailSettingsDialog(R.string.dialog_msg_access_to_write_settings);
- break;
- case CODE_WRITE_CONTACTS_PERMISSION:
- showAppDetailSettingsDialog(R.string.dialog_msg_access_to_contact);
- break;
- }
- }
- public void callContactActivity() {
- if (checkWriteContactPermission(true)) {
- callChooseContactActivity();
- }
- }
- protected void callChooseContactActivity() {
- Intent intentContact = new Intent(this, ChooseContactActivity.class);
- intentContact.putExtra(Constants.getInstance().SONG_URI, Utils.getUri(RingtoneApplication.getInstance().getTempEntity().getLongId()).toString());
- intentContact.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- startActivity(intentContact);
- }
- protected class MediaScannerWrapper implements
- MediaScannerConnection.MediaScannerConnectionClient {
- private MediaScannerConnection mConnection;
- private String mPath;
- private String mMimeType;
- private int mode;
- MediaScannerWrapper(Context ctx, String filePath, String mime, int mode) {
- mPath = filePath;
- mMimeType = mime;
- mConnection = new MediaScannerConnection(getApplicationContext(), this);
- this.mode = mode;
- }
- MediaScannerWrapper(Context ctx, String[] filePaths, int mode) {
- MediaScannerConnection.scanFile(getApplicationContext(), filePaths, null, this);
- this.mode = mode;
- }
- void scan() {
- mConnection.connect();
- }
- public void onMediaScannerConnected() {
- mConnection.scanFile(mPath, mMimeType);
- }
- public void onScanCompleted(String path, Uri uri) {
- dismissProgressDialog();
- DataLoader.loadData(3);
- if (true) { //DataLoader.getCurrentSongList().size() > 0
- runOnUiThread(new Runnable() {
- @Override
- public void run() {
- updateAdapter(mode);
- }
- });
- }
- if (mConnection != null) {
- mConnection.disconnect();
- }
- }
- }
- protected void callTimerDialog() {
- View v = getLayoutInflater().inflate(R.layout.timer_layout, null);
- final EditText hour = (EditText) v.findViewById(R.id.etHours);
- final EditText minutes = (EditText) v.findViewById(R.id.etMinutes);
- final EditText seconds = (EditText) v.findViewById(R.id.etSeconds);
- final AlertDialog adb = new AlertDialog.Builder(this)
- .setTitle(getString(R.string.menu_item_title_timer_for_sleep))
- .setView(v)
- .setNegativeButton(getString(R.string.dialog_btn_cancel), new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- }
- })
- .setPositiveButton(getString(R.string.dialog_timer_btn_start), new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- }
- }).create();
- adb.setOnShowListener(new DialogInterface.OnShowListener() {
- @Override
- public void onShow(final DialogInterface dialog) {
- Button button = ((AlertDialog) dialog).getButton(AlertDialog.BUTTON_POSITIVE);
- button.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- String sHour = hour.getText().toString();
- String sMinute = minutes.getText().toString();
- String sSecond = seconds.getText().toString();
- if (correctTimerValues(sHour, sMinute, sSecond)) {
- try {
- int hValue = Integer.parseInt(sHour);
- int mValue = Integer.parseInt(sMinute);
- int sValue = Integer.parseInt(sSecond);
- long millisec = ((hValue * 360) + mValue * 60 + sValue) * 1000;
- if (millisec > 0) {
- RingtoneApplication.getInstance().getMusicServiceHelper().setTimerToSleep(millisec);
- adb.dismiss();
- } else {
- Toast.makeText(HasMenuItemActivity.this, R.string.dialog_msg_enter_valid_values, Toast.LENGTH_SHORT).show();
- }
- } catch (Exception e) {
- e.printStackTrace();
- Toast.makeText(HasMenuItemActivity.this, R.string.dialog_msg_enter_valid_values, Toast.LENGTH_SHORT).show();
- }
- } else {
- Toast.makeText(HasMenuItemActivity.this, R.string.dialog_msg_enter_valid_values, Toast.LENGTH_SHORT).show();
- }
- }
- });
- }
- });
- adb.show();
- }
- private boolean correctTimerValues(String sHour, String sMinute, String sSecond) {
- return !(sHour.isEmpty() && sMinute.isEmpty() && sSecond.isEmpty());
- }
- public void askPermissionToEditFile(final int mode) {
- AlertDialog.Builder adb = new AlertDialog.Builder(this).setTitle(getString(R.string.dialog_title_permission_require))
- .setMessage(getString(R.string.dialog_msg_required_permission_to_write))
- .setPositiveButton(getResources().getString(R.string.dialog_positive_btn_ok), new DialogInterface.OnClickListener() {
- @TargetApi(Build.VERSION_CODES.LOLLIPOP)
- @Override
- public void onClick(DialogInterface dialog, int which) {
- HasMenuItemActivity.this.mode = mode;
- openDocumentTree();
- dialog.dismiss();
- }
- })
- .setNegativeButton(getString(R.string.dialog_negative_btn_no), new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- }
- });
- adb.show();
- }
- public void showAddSongToPlaylistDialog(final Track track) {
- AlertDialog.Builder adb = new AlertDialog.Builder(this);
- LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- final View containerView = inflater.inflate(R.layout.dialog_listview, null);
- adb.setView(containerView);
- adb.setTitle(getString(R.string.dialog_title_add_to_playlist));
- final ListView listView = (ListView) containerView.findViewById(R.id.listView);
- listView.setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS);
- final ArrayList<Playlist> playlists = DataLoader.getPlaylist();
- final ArrayList<String> playlistsName = new ArrayList<>();
- for (int i = 0; i < playlists.size(); i++) {
- playlistsName.add(playlists.get(i).name);
- }
- ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, playlistsName);
- listView.setAdapter(adapter);
- final AlertDialog alertDialog = adb.create();
- listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
- @Override
- public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
- boolean success = addToPlaylist(track, playlists.get(position));
- alertDialog.dismiss();
- if (success) {
- Toast.makeText(HasMenuItemActivity.this, HasMenuItemActivity.this.getString(R.string.dialog_msg_song) + " \"" + track.displayName + "\" "
- + HasMenuItemActivity.this.getString(R.string.dialog_msg_successfully_added_to) + " \""
- + playlistsName.get(position) + "\"", Toast.LENGTH_SHORT)
- .show();
- Playlist pl = playlists.get(position);
- pl.position = position;
- addToPlaylistCallback(pl, track);
- } else {
- Toast.makeText(HasMenuItemActivity.this, HasMenuItemActivity.this.getString(R.string.dialog_msg_song) + " \"" + track.displayName + "\" "
- + HasMenuItemActivity.this.getString(R.string.dialog_msg_is_already_in) + " \""
- + playlistsName.get(position) + "\"", Toast.LENGTH_SHORT)
- .show();
- }
- }
- });
- Button btn_create = (Button) containerView.findViewById(R.id.button_create_new_playlist);
- btn_create.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- alertDialog.dismiss();
- AlertDialog.Builder builder = new AlertDialog.Builder(HasMenuItemActivity.this);
- builder.setTitle(HasMenuItemActivity.this.getString(R.string.dialog_title_create_new_playlist));
- final EditText editText = new EditText(HasMenuItemActivity.this);
- editText.setHint(R.string.placeholder_enter_the_name_of_new_playlist);
- editText.setFocusable(true);
- builder.setView(editText);
- builder.setPositiveButton(HasMenuItemActivity.this.getString(R.string.dialog_positib_btn_submit), new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- createPlaylist(editText.getText().toString());
- dialog.dismiss();
- DataLoader.reloadPlaylists();
- showAddSongToPlaylistDialog(track);
- }
- });
- builder.setNegativeButton(HasMenuItemActivity.this.getString(R.string.dialog_btn_cancel), new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- dialog.dismiss();
- alertDialog.show();
- }
- });
- builder.show();
- }
- });
- Button btn_cancel = (Button) containerView.findViewById(R.id.button_cancel);
- btn_cancel.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- alertDialog.dismiss();
- }
- });
- alertDialog.show();
- }
- public boolean addToPlaylist(Track track, Entity playlist) {
- DataBaseHelper.getInstance(RingtoneApplication.getInstance()).addSongToPlaylist(playlist, track);
- boolean isDouble = false;
- ContentResolver resolver = RingtoneApplication.getInstance().loggedGetContentResolver(LOG_TAG);
- Uri uri = MediaStore.Audio.Playlists.Members.getContentUri("external", playlist.getLongId());
- Cursor cursor = resolver.query(uri, null, null, null, null, null);
- if (cursor != null && cursor.moveToFirst()) {
- do {
- long id = cursor.getLong(cursor.getColumnIndex(MediaStore.Audio.Playlists.Members.AUDIO_ID));
- if (track.getLongId() == id) {
- isDouble = true;
- cursor.close();
- break;
- }
- } while (cursor.moveToNext());
- cursor.close();
- }
- if (!isDouble) {
- String[] cols = new String[]{
- "count(*)"
- };
- cursor = resolver.query(uri, cols, null, null, null);
- if (cursor != null) {
- cursor.moveToLast();
- final int base = cursor.getInt(0);
- cursor.close();
- ContentValues values = new ContentValues();
- values.put(MediaStore.Audio.Playlists.Members.PLAY_ORDER, base + track.getLongId());
- values.put(MediaStore.Audio.Playlists.Members.AUDIO_ID, track.getLongId());
- Uri newUri = resolver.insert(uri, values);
- if (newUri != null) {
- resolver.notifyChange(newUri, null);
- }
- }
- return true;
- }
- return false;
- }
- public void createPlaylist(String _name) {
- long newId = DataLoader.getPlaylist().size() > 0 ? DataLoader.getPlaylist().get(0).getLongId() : -1L;
- for (Playlist pl : DataLoader.getPlaylist()) {
- if (pl.getLongId() > newId)
- newId = pl.getLongId();
- }
- newId++;
- Playlist pl = new Playlist(newId, _name);
- pl.position = DataLoader.getPlaylist().size();
- ContentValues values = new ContentValues();
- values.put(MediaStore.Audio.Playlists.NAME, _name);
- values.put(MediaStore.Audio.Playlists.DATE_ADDED, System.currentTimeMillis());
- values.put(MediaStore.Audio.Playlists.DATE_MODIFIED, System.currentTimeMillis());
- ContentResolver resolver = RingtoneApplication.getInstance().loggedGetContentResolver(LOG_TAG);
- Uri uri = resolver.insert(MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI, values);
- if (uri != null) {
- resolver.notifyChange(uri, null);
- Cursor cursor = RingtoneApplication.getInstance().loggedGetContentResolver(LOG_TAG).query(uri, null, null, null, null, null);
- if (cursor != null && cursor.moveToFirst()) {
- String name = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Playlists.NAME));
- Toast.makeText(this,
- getString(R.string.playlist) + " \"" + name + "\" " + getString(R.string.dialog_msg_successfully_created),
- Toast.LENGTH_SHORT).show();
- DataBaseHelper.getInstance(RingtoneApplication.getInstance()).createPlaylist(pl, null, 1);
- DataLoader.getPlaylist().add(pl);
- addPlaylistCallback(pl);
- cursor.close();
- }
- }
- // DataLoader.reloadPlaylists();
- }
- public void renameEntity(final Entity entity) {
- AlertDialog.Builder builder = new AlertDialog.Builder(this);
- builder.setTitle(getString(R.string.title_rename) + " " + getString(EntityUtils.getReadableClassName(entity)).toLowerCase());
- final EditText editText = new EditText(this);
- editText.setText(entity.name);
- editText.setFocusable(true);
- builder.setView(editText);
- builder.setPositiveButton(getString(R.string.dialog_positive_btn_ok), new DialogInterface.OnClickListener() {
- @Override
- public void onClick(final DialogInterface dialog, int which) {
- final String newName = editText.getText().toString();
- if (!newName.equals("") && newName.trim().length() > 0) {
- EntityUtils.stopPlayerIfEntityContainsSong(entity);
- showProgressDialog();
- new Thread(new Runnable() {
- @Override
- public void run() {
- final String[] resultPaths = EntityUtils.rename(entity, newName);
- dismissProgressDialog();
- runOnUiThread(new Runnable() {
- @Override
- public void run() {
- if (resultPaths == null) {
- showErrorDialog(entity, HasMenuItemActivity.this.getString(R.string.dialog_title_error_rename));
- } else {
- renameEntityCallback(entity, resultPaths);
- }
- }
- });
- }
- }).start();
- dialog.dismiss();
- }
- }
- });
- builder.setNegativeButton(getString(R.string.dialog_btn_cancel), new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- dialog.dismiss();
- }
- });
- builder.setCancelable(true);
- builder.show();
- }
- public void deleteEntity(final Entity entity) {
- AlertDialog.Builder builder = new AlertDialog.Builder(this)
- .setTitle(getString(R.string.setting_item_title_remove) + " " + getString(EntityUtils.getReadableClassName(entity)).toLowerCase())
- .setMessage(getString(R.string.dialog_msg_do_you_want_to_remove_the_playlist) + " \"" + entity.name + "\" " + HasMenuItemActivity.this.getString(EntityUtils.getReadableClassName(entity)).toLowerCase())
- .setPositiveButton(HasMenuItemActivity.this.getString(R.string.dialog_positive_btn_yes), new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- /* NOT WORKING ON MEZU. REMOVES ALL PLAYLISTS!!!!!
- ContentResolver resolver = RingtoneApplication.getInstance().loggedGetContentResolver(LOG_TAG);
- String where = MediaStore.Audio.Playlists._ID + "=?";
- String[] args = new String[]{String.valueOf(playlist.id)};
- int result = resolver.delete(MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI, where, args);
- Log.e("Utils", "1 deleteEntity raws deleted "+result+ " name "+playlist.name+" id "+playlist.id);
- if (result>0)
- Toast.makeText(RingtoneApplication.getInstance(), playlist.name + context.getString(R.string.deleted_successfully), Toast.LENGTH_SHORT).show();
- */
- EntityUtils.stopPlayerIfEntityContainsSong(entity);
- showProgressDialog();
- new Thread(new Runnable() {
- @Override
- public void run() {
- final boolean result = EntityUtils.delete(entity);
- dismissProgressDialog();
- runOnUiThread(new Runnable() {
- @Override
- public void run() {
- if (result) {
- removeEntityCallback(entity);
- } else {
- showErrorDialog(entity, HasMenuItemActivity.this.getString(R.string.dialog_title_error_delete));
- }
- }
- });
- }
- }).start();
- dialog.dismiss();
- }
- })
- .setNegativeButton(HasMenuItemActivity.this.getString(R.string.dialog_btn_cancel), new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- dialog.dismiss();
- }
- });
- builder.show();
- }
- public void removeFromPlaylist(Entity playlist, Track track) {
- DataBaseHelper.getInstance(RingtoneApplication.getInstance()).deleteSongFromPlaylist(playlist, track);
- ContentResolver resolver = RingtoneApplication.getInstance().loggedGetContentResolver(LOG_TAG);
- Uri uri = MediaStore.Audio.Playlists.Members.getContentUri("external", playlist.getLongId());
- resolver.delete(uri, MediaStore.Audio.Playlists.Members.AUDIO_ID + " = " + track.getLongId(), null);
- removeFromPlaylistCallback(playlist, track);
- }
- public void showErrorDialog(Entity entity, String s) {
- AlertDialog.Builder errorDialog = new AlertDialog.Builder(this)
- .setTitle(s + "\"" + entity.name + "\" " + HasMenuItemActivity.this.getString(EntityUtils.getReadableClassName(entity)).toLowerCase())
- .setCancelable(true)
- .setNegativeButton(HasMenuItemActivity.this.getString(R.string.dialog_btn_cancel), new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- dialog.dismiss();
- }
- });
- errorDialog.create().show();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement