Advertisement
Guest User

Untitled

a guest
Oct 18th, 2017
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 27.42 KB | None | 0 0
  1. package com.mp3.music.player.invenio.musicplayer;
  2.  
  3. import android.annotation.TargetApi;
  4. import android.app.ProgressDialog;
  5. import android.content.ContentResolver;
  6. import android.content.ContentValues;
  7. import android.content.Context;
  8. import android.content.DialogInterface;
  9. import android.content.Intent;
  10. import android.database.Cursor;
  11. import android.media.MediaScannerConnection;
  12. import android.media.RingtoneManager;
  13. import android.net.Uri;
  14. import android.os.Build;
  15. import android.os.Bundle;
  16. import android.os.Environment;
  17. import android.provider.MediaStore;
  18. import android.support.v7.app.AlertDialog;
  19. import android.view.LayoutInflater;
  20. import android.view.View;
  21. import android.view.ViewGroup;
  22. import android.widget.AdapterView;
  23. import android.widget.ArrayAdapter;
  24. import android.widget.Button;
  25. import android.widget.EditText;
  26. import android.widget.ListView;
  27. import android.widget.Toast;
  28.  
  29. import com.mp3.music.player.invenio.NeedPermissionActivity;
  30. import com.mp3.music.player.invenio.R;
  31. import com.mp3.music.player.invenio.RingtoneApplication;
  32. import com.mp3.music.player.invenio.musicplayer.models.Entity;
  33. import com.mp3.music.player.invenio.musicplayer.models.EntityUtils;
  34. import com.mp3.music.player.invenio.musicplayer.models.Playlist;
  35. import com.mp3.music.player.invenio.musicplayer.models.Track;
  36. import com.mp3.music.player.invenio.musicplayer.utils.DataBaseHelper;
  37. import com.mp3.music.player.invenio.musicplayer.utils.DataLoader;
  38. import com.mp3.music.player.invenio.musicplayer.utils.Utils;
  39. import com.mp3.music.player.invenio.utils.Constants;
  40. import com.mp3.music.player.invenio.utils.ImagePicker;
  41.  
  42. import java.util.ArrayList;
  43.  
  44. public class HasMenuItemActivity extends NeedPermissionActivity {
  45.  
  46. protected int mode = MODE_NONE;
  47. public static final int MODE_NONE = -1;
  48. public static final int MODE_RENAME = 1;
  49. public static final int MODE_DELETE = 2;
  50. public static final int UPDATE_THEME = 44;
  51.  
  52. protected String LOG_TAG;
  53.  
  54. @Override
  55. protected void onCreate(Bundle b) {
  56. super.onCreate(b);
  57. LOG_TAG = getClass().getSimpleName();
  58. RingtoneApplication.getInstance().setCurrentActivity(this);
  59. }
  60.  
  61. @Override
  62. protected void onDestroy() {
  63. super.onDestroy();
  64. RingtoneApplication.getInstance().removeCurrentActivity(this);
  65. }
  66.  
  67. @Override
  68. protected void onResume() {
  69. RingtoneApplication.getInstance().setPaused(false);
  70. super.onResume();
  71. RingtoneApplication.getInstance().setCurrentActivity(this);
  72. }
  73.  
  74. @Override
  75. protected void onPause() {
  76. RingtoneApplication.getInstance().setPaused(true);
  77. super.onPause();
  78. RingtoneApplication.getInstance().removeCurrentActivity(null);
  79. }
  80.  
  81. public void addToPlaylistCallback(Entity playList, Track track) {
  82. }
  83.  
  84. public void removeFromPlaylistCallback(Entity playList, Track track) {
  85. }
  86.  
  87. public void removeEntityCallback(Entity entity) {
  88. }
  89.  
  90. public void addPlaylistCallback(Entity entity) {
  91. }
  92.  
  93. public void renameEntityCallback(Entity entity, String[] resultPaths) {
  94. }
  95.  
  96. protected ProgressDialog progressDialog;
  97.  
  98. public void showProgressDialog() {
  99. progressDialog = new ProgressDialog(this);
  100. progressDialog.setTitle(getString(R.string.progress_dialog_wait));
  101. progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
  102. progressDialog.setCancelable(false);
  103. progressDialog.show();
  104. }
  105.  
  106. public void dismissProgressDialog() {
  107. if (progressDialog != null) {
  108. progressDialog.dismiss();
  109. }
  110. }
  111.  
  112. protected void updateAdapter(int mode) {
  113. }
  114.  
  115. protected void startScanner(final int mode) {
  116. showProgressDialog();
  117. new Thread(new Runnable() {
  118. @Override
  119. public void run() {
  120. MediaScannerWrapper mediaScannerWrapper = new MediaScannerWrapper(getApplicationContext(),
  121. Environment.getExternalStorageDirectory().getPath(), Constants.getInstance().AUDIO_TYPE, mode);
  122. mediaScannerWrapper.scan();
  123. }
  124. }).start();
  125. }
  126.  
  127. public void changeEntityImage(Entity entity) {
  128. RingtoneApplication.getInstance().setCurrentEntity(entity);
  129. ImagePicker.getImageFromDevice(this);
  130. }
  131.  
  132. Uri uri = null;
  133. int type = -1;
  134.  
  135. public void makeSongAsDefault(int type, Uri uri) {
  136. if (checkWriteSettingsPermission()) {
  137. RingtoneManager.setActualDefaultRingtoneUri(this, type, uri);
  138. } else {
  139. this.uri = uri;
  140. this.type = type;
  141. }
  142. }
  143.  
  144. @Override
  145. protected void onSaveInstanceState(Bundle outState) {
  146. if (type != -1 && uri != null) {
  147. outState.putInt("type", type);
  148. outState.putString("uri", uri.toString());
  149. }
  150. }
  151.  
  152. @Override
  153. protected void onRestoreInstanceState(Bundle savedInstanceState) {
  154. super.onRestoreInstanceState(savedInstanceState);
  155. try {
  156. this.uri = Uri.parse(savedInstanceState.getString("uri"));
  157. this.type = savedInstanceState.getInt("type");
  158. } catch (Exception e) {
  159. e.printStackTrace();
  160. }
  161. }
  162.  
  163. @Override
  164. protected void grantPermission(int permission) {
  165. switch (permission) {
  166. case CODE_WRITE_SETTINGS_PERMISSION:
  167. if (type != -1 && uri != null) {
  168. RingtoneManager.setActualDefaultRingtoneUri(this, type, uri);
  169. }
  170. break;
  171. case CODE_WRITE_CONTACTS_PERMISSION:
  172. callChooseContactActivity();
  173. break;
  174. case REQUEST_CODE_DOCUMENT_TREE:
  175. switch (mode) {
  176. case MODE_RENAME:
  177. renameEntity(RingtoneApplication.getInstance().getTempEntity());
  178. mode = MODE_NONE;
  179. break;
  180. case MODE_DELETE:
  181. deleteEntity(RingtoneApplication.getInstance().getTempEntity());
  182. mode = MODE_NONE;
  183. break;
  184. }
  185. break;
  186. }
  187. }
  188.  
  189. @Override
  190. protected void deniedPermission(int permission) {
  191. switch (permission) {
  192. case CODE_WRITE_SETTINGS_PERMISSION:
  193. showAppDetailSettingsDialog(R.string.dialog_msg_access_to_write_settings);
  194. break;
  195. case CODE_WRITE_CONTACTS_PERMISSION:
  196. showAppDetailSettingsDialog(R.string.dialog_msg_access_to_contact);
  197. break;
  198. }
  199. }
  200.  
  201.  
  202. public void callContactActivity() {
  203. if (checkWriteContactPermission(true)) {
  204. callChooseContactActivity();
  205. }
  206. }
  207.  
  208. protected void callChooseContactActivity() {
  209. Intent intentContact = new Intent(this, ChooseContactActivity.class);
  210. intentContact.putExtra(Constants.getInstance().SONG_URI, Utils.getUri(RingtoneApplication.getInstance().getTempEntity().getLongId()).toString());
  211. intentContact.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  212. startActivity(intentContact);
  213. }
  214.  
  215. protected class MediaScannerWrapper implements
  216. MediaScannerConnection.MediaScannerConnectionClient {
  217. private MediaScannerConnection mConnection;
  218. private String mPath;
  219. private String mMimeType;
  220. private int mode;
  221.  
  222. MediaScannerWrapper(Context ctx, String filePath, String mime, int mode) {
  223. mPath = filePath;
  224. mMimeType = mime;
  225. mConnection = new MediaScannerConnection(getApplicationContext(), this);
  226. this.mode = mode;
  227. }
  228.  
  229. MediaScannerWrapper(Context ctx, String[] filePaths, int mode) {
  230. MediaScannerConnection.scanFile(getApplicationContext(), filePaths, null, this);
  231. this.mode = mode;
  232. }
  233.  
  234. void scan() {
  235. mConnection.connect();
  236. }
  237.  
  238. public void onMediaScannerConnected() {
  239. mConnection.scanFile(mPath, mMimeType);
  240. }
  241.  
  242. public void onScanCompleted(String path, Uri uri) {
  243. dismissProgressDialog();
  244. DataLoader.loadData(3);
  245. if (true) { //DataLoader.getCurrentSongList().size() > 0
  246. runOnUiThread(new Runnable() {
  247. @Override
  248. public void run() {
  249. updateAdapter(mode);
  250. }
  251. });
  252. }
  253.  
  254. if (mConnection != null) {
  255. mConnection.disconnect();
  256. }
  257. }
  258. }
  259.  
  260. protected void callTimerDialog() {
  261. View v = getLayoutInflater().inflate(R.layout.timer_layout, null);
  262. final EditText hour = (EditText) v.findViewById(R.id.etHours);
  263. final EditText minutes = (EditText) v.findViewById(R.id.etMinutes);
  264. final EditText seconds = (EditText) v.findViewById(R.id.etSeconds);
  265. final AlertDialog adb = new AlertDialog.Builder(this)
  266. .setTitle(getString(R.string.menu_item_title_timer_for_sleep))
  267. .setView(v)
  268. .setNegativeButton(getString(R.string.dialog_btn_cancel), new DialogInterface.OnClickListener() {
  269. @Override
  270. public void onClick(DialogInterface dialog, int which) {
  271.  
  272. }
  273. })
  274. .setPositiveButton(getString(R.string.dialog_timer_btn_start), new DialogInterface.OnClickListener() {
  275. @Override
  276. public void onClick(DialogInterface dialog, int which) {
  277.  
  278. }
  279. }).create();
  280. adb.setOnShowListener(new DialogInterface.OnShowListener() {
  281. @Override
  282. public void onShow(final DialogInterface dialog) {
  283. Button button = ((AlertDialog) dialog).getButton(AlertDialog.BUTTON_POSITIVE);
  284. button.setOnClickListener(new View.OnClickListener() {
  285.  
  286. @Override
  287. public void onClick(View view) {
  288. String sHour = hour.getText().toString();
  289. String sMinute = minutes.getText().toString();
  290. String sSecond = seconds.getText().toString();
  291. if (correctTimerValues(sHour, sMinute, sSecond)) {
  292. try {
  293. int hValue = Integer.parseInt(sHour);
  294. int mValue = Integer.parseInt(sMinute);
  295. int sValue = Integer.parseInt(sSecond);
  296. long millisec = ((hValue * 360) + mValue * 60 + sValue) * 1000;
  297. if (millisec > 0) {
  298. RingtoneApplication.getInstance().getMusicServiceHelper().setTimerToSleep(millisec);
  299. adb.dismiss();
  300. } else {
  301. Toast.makeText(HasMenuItemActivity.this, R.string.dialog_msg_enter_valid_values, Toast.LENGTH_SHORT).show();
  302. }
  303. } catch (Exception e) {
  304. e.printStackTrace();
  305. Toast.makeText(HasMenuItemActivity.this, R.string.dialog_msg_enter_valid_values, Toast.LENGTH_SHORT).show();
  306. }
  307. } else {
  308. Toast.makeText(HasMenuItemActivity.this, R.string.dialog_msg_enter_valid_values, Toast.LENGTH_SHORT).show();
  309. }
  310. }
  311. });
  312. }
  313. });
  314. adb.show();
  315. }
  316.  
  317. private boolean correctTimerValues(String sHour, String sMinute, String sSecond) {
  318. return !(sHour.isEmpty() && sMinute.isEmpty() && sSecond.isEmpty());
  319. }
  320.  
  321.  
  322. public void askPermissionToEditFile(final int mode) {
  323. AlertDialog.Builder adb = new AlertDialog.Builder(this).setTitle(getString(R.string.dialog_title_permission_require))
  324. .setMessage(getString(R.string.dialog_msg_required_permission_to_write))
  325. .setPositiveButton(getResources().getString(R.string.dialog_positive_btn_ok), new DialogInterface.OnClickListener() {
  326. @TargetApi(Build.VERSION_CODES.LOLLIPOP)
  327. @Override
  328. public void onClick(DialogInterface dialog, int which) {
  329. HasMenuItemActivity.this.mode = mode;
  330. openDocumentTree();
  331. dialog.dismiss();
  332. }
  333. })
  334. .setNegativeButton(getString(R.string.dialog_negative_btn_no), new DialogInterface.OnClickListener() {
  335. @Override
  336. public void onClick(DialogInterface dialog, int which) {
  337.  
  338. }
  339. });
  340. adb.show();
  341. }
  342.  
  343. public void showAddSongToPlaylistDialog(final Track track) {
  344. AlertDialog.Builder adb = new AlertDialog.Builder(this);
  345. LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
  346. final View containerView = inflater.inflate(R.layout.dialog_listview, null);
  347. adb.setView(containerView);
  348. adb.setTitle(getString(R.string.dialog_title_add_to_playlist));
  349. final ListView listView = (ListView) containerView.findViewById(R.id.listView);
  350. listView.setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS);
  351. final ArrayList<Playlist> playlists = DataLoader.getPlaylist();
  352. final ArrayList<String> playlistsName = new ArrayList<>();
  353. for (int i = 0; i < playlists.size(); i++) {
  354. playlistsName.add(playlists.get(i).name);
  355. }
  356. ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, playlistsName);
  357. listView.setAdapter(adapter);
  358. final AlertDialog alertDialog = adb.create();
  359. listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
  360. @Override
  361. public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
  362. boolean success = addToPlaylist(track, playlists.get(position));
  363. alertDialog.dismiss();
  364. if (success) {
  365. Toast.makeText(HasMenuItemActivity.this, HasMenuItemActivity.this.getString(R.string.dialog_msg_song) + " \"" + track.displayName + "\" "
  366. + HasMenuItemActivity.this.getString(R.string.dialog_msg_successfully_added_to) + " \""
  367. + playlistsName.get(position) + "\"", Toast.LENGTH_SHORT)
  368. .show();
  369. Playlist pl = playlists.get(position);
  370. pl.position = position;
  371. addToPlaylistCallback(pl, track);
  372. } else {
  373. Toast.makeText(HasMenuItemActivity.this, HasMenuItemActivity.this.getString(R.string.dialog_msg_song) + " \"" + track.displayName + "\" "
  374. + HasMenuItemActivity.this.getString(R.string.dialog_msg_is_already_in) + " \""
  375. + playlistsName.get(position) + "\"", Toast.LENGTH_SHORT)
  376. .show();
  377. }
  378. }
  379. });
  380.  
  381. Button btn_create = (Button) containerView.findViewById(R.id.button_create_new_playlist);
  382. btn_create.setOnClickListener(new View.OnClickListener() {
  383. @Override
  384. public void onClick(View v) {
  385. alertDialog.dismiss();
  386. AlertDialog.Builder builder = new AlertDialog.Builder(HasMenuItemActivity.this);
  387. builder.setTitle(HasMenuItemActivity.this.getString(R.string.dialog_title_create_new_playlist));
  388. final EditText editText = new EditText(HasMenuItemActivity.this);
  389. editText.setHint(R.string.placeholder_enter_the_name_of_new_playlist);
  390. editText.setFocusable(true);
  391. builder.setView(editText);
  392. builder.setPositiveButton(HasMenuItemActivity.this.getString(R.string.dialog_positib_btn_submit), new DialogInterface.OnClickListener() {
  393. @Override
  394. public void onClick(DialogInterface dialog, int which) {
  395. createPlaylist(editText.getText().toString());
  396. dialog.dismiss();
  397. DataLoader.reloadPlaylists();
  398. showAddSongToPlaylistDialog(track);
  399. }
  400. });
  401. builder.setNegativeButton(HasMenuItemActivity.this.getString(R.string.dialog_btn_cancel), new DialogInterface.OnClickListener() {
  402. @Override
  403. public void onClick(DialogInterface dialog, int which) {
  404. dialog.dismiss();
  405. alertDialog.show();
  406. }
  407. });
  408. builder.show();
  409. }
  410. });
  411. Button btn_cancel = (Button) containerView.findViewById(R.id.button_cancel);
  412. btn_cancel.setOnClickListener(new View.OnClickListener() {
  413. @Override
  414. public void onClick(View v) {
  415. alertDialog.dismiss();
  416. }
  417. });
  418. alertDialog.show();
  419. }
  420.  
  421. public boolean addToPlaylist(Track track, Entity playlist) {
  422. DataBaseHelper.getInstance(RingtoneApplication.getInstance()).addSongToPlaylist(playlist, track);
  423. boolean isDouble = false;
  424. ContentResolver resolver = RingtoneApplication.getInstance().loggedGetContentResolver(LOG_TAG);
  425. Uri uri = MediaStore.Audio.Playlists.Members.getContentUri("external", playlist.getLongId());
  426. Cursor cursor = resolver.query(uri, null, null, null, null, null);
  427. if (cursor != null && cursor.moveToFirst()) {
  428. do {
  429. long id = cursor.getLong(cursor.getColumnIndex(MediaStore.Audio.Playlists.Members.AUDIO_ID));
  430. if (track.getLongId() == id) {
  431. isDouble = true;
  432. cursor.close();
  433. break;
  434. }
  435. } while (cursor.moveToNext());
  436. cursor.close();
  437. }
  438.  
  439. if (!isDouble) {
  440. String[] cols = new String[]{
  441. "count(*)"
  442. };
  443. cursor = resolver.query(uri, cols, null, null, null);
  444. if (cursor != null) {
  445. cursor.moveToLast();
  446. final int base = cursor.getInt(0);
  447. cursor.close();
  448. ContentValues values = new ContentValues();
  449. values.put(MediaStore.Audio.Playlists.Members.PLAY_ORDER, base + track.getLongId());
  450. values.put(MediaStore.Audio.Playlists.Members.AUDIO_ID, track.getLongId());
  451. Uri newUri = resolver.insert(uri, values);
  452. if (newUri != null) {
  453. resolver.notifyChange(newUri, null);
  454. }
  455. }
  456. return true;
  457. }
  458. return false;
  459. }
  460.  
  461. public void createPlaylist(String _name) {
  462. long newId = DataLoader.getPlaylist().size() > 0 ? DataLoader.getPlaylist().get(0).getLongId() : -1L;
  463. for (Playlist pl : DataLoader.getPlaylist()) {
  464. if (pl.getLongId() > newId)
  465. newId = pl.getLongId();
  466. }
  467. newId++;
  468. Playlist pl = new Playlist(newId, _name);
  469. pl.position = DataLoader.getPlaylist().size();
  470. ContentValues values = new ContentValues();
  471. values.put(MediaStore.Audio.Playlists.NAME, _name);
  472. values.put(MediaStore.Audio.Playlists.DATE_ADDED, System.currentTimeMillis());
  473. values.put(MediaStore.Audio.Playlists.DATE_MODIFIED, System.currentTimeMillis());
  474. ContentResolver resolver = RingtoneApplication.getInstance().loggedGetContentResolver(LOG_TAG);
  475. Uri uri = resolver.insert(MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI, values);
  476. if (uri != null) {
  477. resolver.notifyChange(uri, null);
  478. Cursor cursor = RingtoneApplication.getInstance().loggedGetContentResolver(LOG_TAG).query(uri, null, null, null, null, null);
  479. if (cursor != null && cursor.moveToFirst()) {
  480. String name = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Playlists.NAME));
  481. Toast.makeText(this,
  482. getString(R.string.playlist) + " \"" + name + "\" " + getString(R.string.dialog_msg_successfully_created),
  483. Toast.LENGTH_SHORT).show();
  484. DataBaseHelper.getInstance(RingtoneApplication.getInstance()).createPlaylist(pl, null, 1);
  485. DataLoader.getPlaylist().add(pl);
  486. addPlaylistCallback(pl);
  487. cursor.close();
  488. }
  489. }
  490. // DataLoader.reloadPlaylists();
  491. }
  492.  
  493. public void renameEntity(final Entity entity) {
  494. AlertDialog.Builder builder = new AlertDialog.Builder(this);
  495. builder.setTitle(getString(R.string.title_rename) + " " + getString(EntityUtils.getReadableClassName(entity)).toLowerCase());
  496. final EditText editText = new EditText(this);
  497. editText.setText(entity.name);
  498. editText.setFocusable(true);
  499. builder.setView(editText);
  500. builder.setPositiveButton(getString(R.string.dialog_positive_btn_ok), new DialogInterface.OnClickListener() {
  501. @Override
  502. public void onClick(final DialogInterface dialog, int which) {
  503. final String newName = editText.getText().toString();
  504. if (!newName.equals("") && newName.trim().length() > 0) {
  505. EntityUtils.stopPlayerIfEntityContainsSong(entity);
  506. showProgressDialog();
  507. new Thread(new Runnable() {
  508. @Override
  509. public void run() {
  510. final String[] resultPaths = EntityUtils.rename(entity, newName);
  511. dismissProgressDialog();
  512. runOnUiThread(new Runnable() {
  513. @Override
  514. public void run() {
  515. if (resultPaths == null) {
  516. showErrorDialog(entity, HasMenuItemActivity.this.getString(R.string.dialog_title_error_rename));
  517. } else {
  518. renameEntityCallback(entity, resultPaths);
  519. }
  520. }
  521. });
  522. }
  523. }).start();
  524. dialog.dismiss();
  525. }
  526.  
  527. }
  528. });
  529. builder.setNegativeButton(getString(R.string.dialog_btn_cancel), new DialogInterface.OnClickListener() {
  530. @Override
  531. public void onClick(DialogInterface dialog, int which) {
  532. dialog.dismiss();
  533. }
  534. });
  535. builder.setCancelable(true);
  536. builder.show();
  537. }
  538.  
  539. public void deleteEntity(final Entity entity) {
  540. AlertDialog.Builder builder = new AlertDialog.Builder(this)
  541. .setTitle(getString(R.string.setting_item_title_remove) + " " + getString(EntityUtils.getReadableClassName(entity)).toLowerCase())
  542. .setMessage(getString(R.string.dialog_msg_do_you_want_to_remove_the_playlist) + " \"" + entity.name + "\" " + HasMenuItemActivity.this.getString(EntityUtils.getReadableClassName(entity)).toLowerCase())
  543. .setPositiveButton(HasMenuItemActivity.this.getString(R.string.dialog_positive_btn_yes), new DialogInterface.OnClickListener() {
  544. @Override
  545. public void onClick(DialogInterface dialog, int which) {
  546. /* NOT WORKING ON MEZU. REMOVES ALL PLAYLISTS!!!!!
  547. ContentResolver resolver = RingtoneApplication.getInstance().loggedGetContentResolver(LOG_TAG);
  548. String where = MediaStore.Audio.Playlists._ID + "=?";
  549. String[] args = new String[]{String.valueOf(playlist.id)};
  550. int result = resolver.delete(MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI, where, args);
  551. Log.e("Utils", "1 deleteEntity raws deleted "+result+ " name "+playlist.name+" id "+playlist.id);
  552. if (result>0)
  553. Toast.makeText(RingtoneApplication.getInstance(), playlist.name + context.getString(R.string.deleted_successfully), Toast.LENGTH_SHORT).show();
  554. */
  555. EntityUtils.stopPlayerIfEntityContainsSong(entity);
  556. showProgressDialog();
  557. new Thread(new Runnable() {
  558. @Override
  559. public void run() {
  560. final boolean result = EntityUtils.delete(entity);
  561. dismissProgressDialog();
  562. runOnUiThread(new Runnable() {
  563. @Override
  564. public void run() {
  565. if (result) {
  566. removeEntityCallback(entity);
  567. } else {
  568. showErrorDialog(entity, HasMenuItemActivity.this.getString(R.string.dialog_title_error_delete));
  569. }
  570. }
  571. });
  572.  
  573. }
  574. }).start();
  575. dialog.dismiss();
  576.  
  577. }
  578. })
  579. .setNegativeButton(HasMenuItemActivity.this.getString(R.string.dialog_btn_cancel), new DialogInterface.OnClickListener() {
  580. @Override
  581. public void onClick(DialogInterface dialog, int which) {
  582. dialog.dismiss();
  583. }
  584. });
  585. builder.show();
  586. }
  587.  
  588. public void removeFromPlaylist(Entity playlist, Track track) {
  589. DataBaseHelper.getInstance(RingtoneApplication.getInstance()).deleteSongFromPlaylist(playlist, track);
  590. ContentResolver resolver = RingtoneApplication.getInstance().loggedGetContentResolver(LOG_TAG);
  591. Uri uri = MediaStore.Audio.Playlists.Members.getContentUri("external", playlist.getLongId());
  592. resolver.delete(uri, MediaStore.Audio.Playlists.Members.AUDIO_ID + " = " + track.getLongId(), null);
  593. removeFromPlaylistCallback(playlist, track);
  594. }
  595.  
  596. public void showErrorDialog(Entity entity, String s) {
  597. AlertDialog.Builder errorDialog = new AlertDialog.Builder(this)
  598. .setTitle(s + "\"" + entity.name + "\" " + HasMenuItemActivity.this.getString(EntityUtils.getReadableClassName(entity)).toLowerCase())
  599. .setCancelable(true)
  600. .setNegativeButton(HasMenuItemActivity.this.getString(R.string.dialog_btn_cancel), new DialogInterface.OnClickListener() {
  601. @Override
  602. public void onClick(DialogInterface dialog, int which) {
  603. dialog.dismiss();
  604. }
  605. });
  606. errorDialog.create().show();
  607. }
  608.  
  609. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement