diff --git a/app/src/main/java/app/fedilab/fedilabtube/AllPlaylistsActivity.java b/app/src/main/java/app/fedilab/fedilabtube/AllPlaylistsActivity.java index f7517ba..0bca829 100644 --- a/app/src/main/java/app/fedilab/fedilabtube/AllPlaylistsActivity.java +++ b/app/src/main/java/app/fedilab/fedilabtube/AllPlaylistsActivity.java @@ -15,7 +15,6 @@ package app.fedilab.fedilabtube; * see . */ import android.content.Context; -import android.os.AsyncTask; import android.os.Bundle; import android.os.Handler; import android.os.Looper; @@ -65,7 +64,6 @@ public class AllPlaylistsActivity extends AppCompatActivity { PlaylistAdapter playlistAdapter; - private AsyncTask asyncTask; private RelativeLayout mainLoader; private RelativeLayout textviewNoAction; private HashMap privacyToSend; @@ -74,6 +72,7 @@ public class AllPlaylistsActivity extends AppCompatActivity { private String idChannel; private List playlists; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -111,100 +110,12 @@ public class AllPlaylistsActivity extends AppCompatActivity { playlistAdapter = new PlaylistAdapter(AllPlaylistsActivity.this, playlists, textviewNoAction); lv_playlist.setAdapter(playlistAdapter); - add_new.setOnClickListener(view -> { - AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(AllPlaylistsActivity.this); - LayoutInflater inflater1 = getLayoutInflater(); - View dialogView = inflater1.inflate(R.layout.add_playlist, new LinearLayout(AllPlaylistsActivity.this), false); - dialogBuilder.setView(dialogView); - EditText display_name = dialogView.findViewById(R.id.display_name); - EditText description = dialogView.findViewById(R.id.description); - set_upload_channel = dialogView.findViewById(R.id.set_upload_channel); - set_upload_privacy = dialogView.findViewById(R.id.set_upload_privacy); - - - ChannelsVM viewModelC = new ViewModelProvider(AllPlaylistsActivity.this).get(ChannelsVM.class); - viewModelC.get().observe(AllPlaylistsActivity.this, this::manageVIewChannels); - - display_name.setFilters(new InputFilter[]{new InputFilter.LengthFilter(120)}); - description.setFilters(new InputFilter[]{new InputFilter.LengthFilter(1000)}); - - dialogBuilder.setPositiveButton(R.string.validate, (dialog, id) -> { - - if (display_name.getText() != null && display_name.getText().toString().trim().length() > 0) { - PlaylistElement playlistElement = new PlaylistElement(); - playlistElement.setDisplayName(display_name.getText().toString().trim()); - if (description.getText() != null && description.getText().toString().trim().length() > 0) { - playlistElement.setDescription(description.getText().toString().trim()); - } - playlistElement.setVideoChannelId(idChannel); - String idPrivacy; - String label; - Map.Entry privacyM = privacyToSend.entrySet().iterator().next(); - idPrivacy = String.valueOf(privacyM.getKey()); - label = privacyM.getValue(); - if ((label.equals("Public") && (playlistElement.getVideoChannelId() == null || playlistElement.getVideoChannelId().equals("")))) { - Toasty.error(AllPlaylistsActivity.this, getString(R.string.error_channel_mandatory), Toast.LENGTH_LONG).show(); - } else { - if (privacyToSend != null) { - playlistElement.setPrivacy(idPrivacy); - } - new Thread(() -> { - try { - String playlistId = new PeertubeAPI(AllPlaylistsActivity.this).createPlaylist(playlistElement); - Handler mainHandler = new Handler(Looper.getMainLooper()); - Runnable myRunnable = () -> { - Playlist playlist = new Playlist(); - playlist.setId(playlistId); - playlist.setDescription(playlistElement.getDescription()); - playlist.setDisplayName(playlistElement.getDisplayName()); - playlist.setPrivacy(privacyToSend); - playlists.add(playlist); - playlistAdapter.notifyDataSetChanged(); - }; - mainHandler.post(myRunnable); - } catch (HttpsConnection.HttpsConnectionException e) { - e.printStackTrace(); - Handler mainHandler = new Handler(Looper.getMainLooper()); - Runnable myRunnable = () -> { - if (e.getMessage() != null) { - Toasty.error(AllPlaylistsActivity.this, e.getMessage(), Toast.LENGTH_LONG).show(); - } else { - Toasty.error(AllPlaylistsActivity.this, getString(R.string.toast_error), Toast.LENGTH_LONG).show(); - } - }; - mainHandler.post(myRunnable); - } - }).start(); - dialog.dismiss(); - } - } else { - Toasty.error(AllPlaylistsActivity.this, getString(R.string.error_display_name), Toast.LENGTH_LONG).show(); - } - - }); - dialogBuilder.setNegativeButton(R.string.cancel, (dialog, id) -> dialog.dismiss()); - - - AlertDialog alertDialog = dialogBuilder.create(); - alertDialog.setTitle(getString(R.string.action_playlist_create)); - alertDialog.setOnDismissListener(dialogInterface -> { - //Hide keyboard - InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); - assert imm != null; - imm.hideSoftInputFromWindow(display_name.getWindowToken(), 0); - }); - if (alertDialog.getWindow() != null) - alertDialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE); - alertDialog.show(); - }); + add_new.setOnClickListener(view -> manageAlert(null)); } @Override public void onDestroy() { super.onDestroy(); - if (asyncTask != null && !asyncTask.isCancelled()) { - asyncTask.cancel(true); - } } @Override @@ -234,6 +145,95 @@ public class AllPlaylistsActivity extends AppCompatActivity { } } + public void manageAlert(Playlist playlistToEdit) { + + AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(AllPlaylistsActivity.this); + LayoutInflater inflater1 = getLayoutInflater(); + View dialogView = inflater1.inflate(R.layout.add_playlist, new LinearLayout(AllPlaylistsActivity.this), false); + dialogBuilder.setView(dialogView); + EditText display_name = dialogView.findViewById(R.id.display_name); + EditText description = dialogView.findViewById(R.id.description); + set_upload_channel = dialogView.findViewById(R.id.set_upload_channel); + set_upload_privacy = dialogView.findViewById(R.id.set_upload_privacy); + + ChannelsVM viewModelC = new ViewModelProvider(AllPlaylistsActivity.this).get(ChannelsVM.class); + viewModelC.get().observe(AllPlaylistsActivity.this, this::manageVIewChannels); + + display_name.setFilters(new InputFilter[]{new InputFilter.LengthFilter(120)}); + description.setFilters(new InputFilter[]{new InputFilter.LengthFilter(1000)}); + + if (playlistToEdit != null) { + display_name.setText(playlistToEdit.getDisplayName()); + description.setText(playlistToEdit.getDescription()); + } + + dialogBuilder.setPositiveButton(R.string.validate, (dialog, id) -> { + if (display_name.getText() != null && display_name.getText().toString().trim().length() > 0) { + PlaylistElement playlistElement = new PlaylistElement(); + playlistElement.setDisplayName(display_name.getText().toString().trim()); + if (description.getText() != null && description.getText().toString().trim().length() > 0) { + playlistElement.setDescription(description.getText().toString().trim()); + } + playlistElement.setVideoChannelId(idChannel); + String idPrivacy; + String label; + Map.Entry privacyM = privacyToSend.entrySet().iterator().next(); + idPrivacy = String.valueOf(privacyM.getKey()); + label = privacyM.getValue(); + if ((label.equals("Public") && (playlistElement.getVideoChannelId() == null || playlistElement.getVideoChannelId().equals("")))) { + Toasty.error(AllPlaylistsActivity.this, getString(R.string.error_channel_mandatory), Toast.LENGTH_LONG).show(); + } else { + if (privacyToSend != null) { + playlistElement.setPrivacy(idPrivacy); + } + new Thread(() -> { + try { + String playlistId = new PeertubeAPI(AllPlaylistsActivity.this).createPlaylist(playlistElement); + Handler mainHandler = new Handler(Looper.getMainLooper()); + Runnable myRunnable = () -> { + Playlist playlist = new Playlist(); + playlist.setId(playlistId); + playlist.setDescription(playlistElement.getDescription()); + playlist.setDisplayName(playlistElement.getDisplayName()); + playlist.setPrivacy(privacyToSend); + playlists.add(playlist); + playlistAdapter.notifyDataSetChanged(); + }; + mainHandler.post(myRunnable); + } catch (HttpsConnection.HttpsConnectionException e) { + e.printStackTrace(); + Handler mainHandler = new Handler(Looper.getMainLooper()); + Runnable myRunnable = () -> { + if (e.getMessage() != null) { + Toasty.error(AllPlaylistsActivity.this, e.getMessage(), Toast.LENGTH_LONG).show(); + } else { + Toasty.error(AllPlaylistsActivity.this, getString(R.string.toast_error), Toast.LENGTH_LONG).show(); + } + }; + mainHandler.post(myRunnable); + } + }).start(); + dialog.dismiss(); + } + } else { + Toasty.error(AllPlaylistsActivity.this, getString(R.string.error_display_name), Toast.LENGTH_LONG).show(); + } + + }); + dialogBuilder.setNegativeButton(R.string.cancel, (dialog, id) -> dialog.dismiss()); + AlertDialog alertDialog = dialogBuilder.create(); + alertDialog.setTitle(getString(R.string.action_playlist_create)); + alertDialog.setOnDismissListener(dialogInterface -> { + //Hide keyboard + InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); + assert imm != null; + imm.hideSoftInputFromWindow(display_name.getWindowToken(), 0); + }); + if (alertDialog.getWindow() != null) + alertDialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE); + alertDialog.show(); + } + public void manageVIewChannels(APIResponse apiResponse) { if (apiResponse.getError() != null || apiResponse.getAccounts() == null || apiResponse.getAccounts().size() == 0) { diff --git a/app/src/main/java/app/fedilab/fedilabtube/drawer/PlaylistAdapter.java b/app/src/main/java/app/fedilab/fedilabtube/drawer/PlaylistAdapter.java index a3ef305..5d8f9a9 100644 --- a/app/src/main/java/app/fedilab/fedilabtube/drawer/PlaylistAdapter.java +++ b/app/src/main/java/app/fedilab/fedilabtube/drawer/PlaylistAdapter.java @@ -122,7 +122,6 @@ public class PlaylistAdapter extends BaseAdapter { popup.getMenuInflater() .inflate(R.menu.playlist_menu, popup.getMenu()); popup.setOnMenuItemClickListener(item -> { - //noinspection SwitchStatementWithTooFewBranches switch (item.getItemId()) { case R.id.action_delete: AlertDialog.Builder builder = new AlertDialog.Builder(context); @@ -142,9 +141,9 @@ public class PlaylistAdapter extends BaseAdapter { .setNegativeButton(R.string.no, (dialog, which) -> dialog.dismiss()) .show(); break; - /*case R.id.action_edit: + case R.id.action_edit: - break;*/ + break; } return true; }); diff --git a/app/src/main/res/layout/drawer_playlist.xml b/app/src/main/res/layout/drawer_playlist.xml index b7d2e74..bc56392 100644 --- a/app/src/main/res/layout/drawer_playlist.xml +++ b/app/src/main/res/layout/drawer_playlist.xml @@ -34,9 +34,9 @@ diff --git a/app/src/main/res/menu/playlist_menu.xml b/app/src/main/res/menu/playlist_menu.xml index 4c273b0..f9da37c 100644 --- a/app/src/main/res/menu/playlist_menu.xml +++ b/app/src/main/res/menu/playlist_menu.xml @@ -6,11 +6,9 @@ android:icon="@drawable/ic_baseline_delete_24" android:title="@string/delete" app:showAsAction="ifRoom" /> -