package com.wm.remusic.dialog;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.support.v7.app.AlertDialog;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.facebook.drawee.view.SimpleDraweeView;
import com.wm.remusic.MainApplication;
import com.wm.remusic.R;
import com.wm.remusic.fragment.AttachDialogFragment;
import com.wm.remusic.info.Playlist;
import com.wm.remusic.provider.PlaylistInfo;
import com.wm.remusic.provider.PlaylistsManager;
import com.wm.remusic.service.MusicTrack;
import com.wm.remusic.uitl.IConstants;
import com.wm.remusic.uitl.MusicUtils;
import com.wm.remusic.widget.DividerItemDecoration;
import java.util.ArrayList;
/**
* Created by wm on 20/12/15.
*/
public class AddPlaylistDialog extends AttachDialogFragment {
private PlaylistInfo playlistInfo;
private PlaylistsManager playlistsManager;
private RecyclerView recyclerView;
private long[] musicId;
public static AddPlaylistDialog newInstance(long[] songList) {
AddPlaylistDialog dialog = new AddPlaylistDialog();
Bundle bundle = new Bundle();
bundle.putLongArray("songs", songList);
dialog.setArguments(bundle);
return dialog;
}
@Override
public View onCreateView(LayoutInflater inflater, final ViewGroup container, Bundle savedInstanceState) {
//设置无标题
getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE);
if (getArguments() != null) {
musicId = getArguments().getLongArray("songs");
}
playlistInfo = PlaylistInfo.getInstance(getContext());
playlistsManager = PlaylistsManager.getInstance(getContext());
View view = inflater.inflate(R.layout.fragment_add_playlist, container);
LinearLayoutManager layoutManager = new LinearLayoutManager(getContext());
LinearLayout linearLayout = (LinearLayout) view.findViewById(R.id.create_new_playlist);
recyclerView = (RecyclerView) view.findViewById(R.id.add_playlist_recyclerview);
linearLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final AlertDialog alertDialog = new AlertDialog.Builder(getContext()).create();
alertDialog.setView((getActivity().getLayoutInflater().inflate(R.layout.dialog, null)));
alertDialog.show();
Window window = alertDialog.getWindow();
window.setContentView(R.layout.dialog);
final EditText editText = (EditText) (window.findViewById(R.id.message));
editText.requestFocus();
(window.findViewById(R.id.positiveButton)).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
alertDialog.dismiss();
}
});
(window.findViewById(R.id.negativeButton)).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dismiss();
new Thread(new Runnable() {
@Override
public void run() {
String albumart = null;
for (long id : musicId) {
albumart = MusicUtils.getAlbumdata(MainApplication.context, id);
if (albumart != null) {
break;
}
}
//String albumart = MusicUtils.getMusicInfo(getContext(), musicId[0]).albumData;
playlistInfo.addPlaylist(editText.getText().hashCode(), editText.getText().toString(),
musicId.length, "file://" + albumart, "local");
for (int i = 0; i < musicId.length; i++) {
playlistsManager.insert(MainApplication.context, editText.getText().hashCode(), musicId[i], i);
}
Intent intent = new Intent(IConstants.PLAYLIST_COUNT_CHANGED);
MainApplication.context.sendBroadcast(intent);
}
}).start();
alertDialog.dismiss();
}
});
}
});
ArrayList<Playlist> playlists = playlistInfo.getPlaylist();
recyclerView.setLayoutManager(layoutManager);
AddPlaylistAdapter adapter = new AddPlaylistAdapter(playlists);
recyclerView.setAdapter(adapter);
//setItemDecoration();
return view;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setStyle(DialogFragment.STYLE_NO_FRAME, R.style.CustomDatePickerDialog);
}
@Override
public void onStart() {
super.onStart();
//设置fragment高度 、宽度
int dialogHeight = (int) (getActivity().getResources().getDisplayMetrics().heightPixels * 0.65);
int dialogWidth = (int) (getActivity().getResources().getDisplayMetrics().widthPixels * 0.77);
getDialog().getWindow().setLayout(dialogWidth, dialogHeight);
getDialog().setCanceledOnTouchOutside(true);
}
//设置分割线
private void setItemDecoration() {
RecyclerView.ItemDecoration itemDecoration = new DividerItemDecoration(getActivity(), DividerItemDecoration.VERTICAL_LIST);
recyclerView.addItemDecoration(itemDecoration);
}
private class AddPlaylistAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
ArrayList<Playlist> playlists;
public AddPlaylistAdapter(ArrayList<Playlist> p) {
playlists = p;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return new ViewHolder(LayoutInflater.from(getContext()).inflate(R.layout.fragment_add_playlist_item, parent, false));
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
Playlist playlist = playlists.get(position);
//((ViewHolder)holder).imageView.setImageURI();
((ViewHolder) holder).title.setText(playlist.name);
((ViewHolder) holder).count.setText(playlist.songCount + "");
Uri uri = Uri.parse(playlist.albumArt);
((ViewHolder) holder).imageView.setImageURI(uri);
}
@Override
public int getItemCount() {
return playlists.size();
}
class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
SimpleDraweeView imageView;
TextView title, count;
public ViewHolder(View v) {
super(v);
this.imageView = (SimpleDraweeView) v.findViewById(R.id.add_playlist_img);
this.title = (TextView) v.findViewById(R.id.add_playlist_toptext);
this.count = (TextView) v.findViewById(R.id.add_playlist_bottom_text);
v.setOnClickListener(this);
}
@Override
public void onClick(View v) {
Playlist playlist = playlists.get(getAdapterPosition());
//playlistInfo.updatePlaylist(playlist.id, musicId.length);
ArrayList<MusicTrack> musicTracks = playlistsManager.getPlaylist(playlist.id);
if (getAdapterPosition() == 0 && musicTracks.size() == 0) {
for (int i = 0; i < musicId.length; i++) {
playlistsManager.insert(getContext(), playlist.id, musicId[i], 0);
}
}
for (int i = 0; i < musicId.length; i++) {
for (int j = 0; j < musicTracks.size(); j++) {
if (musicId[i] != musicTracks.get(j).mId) {
playlistsManager.insert(getContext(), playlist.id, musicId[i], 0);
}
}
}
Intent intent = new Intent(IConstants.PLAYLIST_COUNT_CHANGED);
getActivity().sendBroadcast(intent);
dismiss();
}
}
}
}