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.text.TextUtils;
import android.util.Log;
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.MusicInfo;
import com.wm.remusic.info.Playlist;
import com.wm.remusic.provider.PlaylistInfo;
import com.wm.remusic.provider.PlaylistsManager;
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 AddNetPlaylistDialog extends AttachDialogFragment {
private PlaylistInfo playlistInfo;
private PlaylistsManager playlistsManager;
private RecyclerView recyclerView;
private ArrayList<MusicInfo> musics;
private String author;
public static AddNetPlaylistDialog newInstance(ArrayList<MusicInfo> list, String author) {
AddNetPlaylistDialog dialog = new AddNetPlaylistDialog();
Bundle bundle = new Bundle();
bundle.putString("author", author);
bundle.putParcelableArrayList("songs", list);
dialog.setArguments(bundle);
return dialog;
}
public static AddNetPlaylistDialog newInstance(ArrayList<MusicInfo> list) {
AddNetPlaylistDialog dialog = new AddNetPlaylistDialog();
Bundle bundle = new Bundle();
bundle.putString("author", "local");
bundle.putParcelableArrayList("songs", list);
dialog.setArguments(bundle);
return dialog;
}
public static AddNetPlaylistDialog newInstance(MusicInfo info) {
ArrayList<MusicInfo> list = new ArrayList<>();
list.add(info);
return AddNetPlaylistDialog.newInstance(list);
}
@Override
public View onCreateView(final LayoutInflater inflater, final ViewGroup container, Bundle savedInstanceState) {
//设置无标题
getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE);
if (getArguments() != null) {
musics = getArguments().getParcelableArrayList("songs");
author = getArguments().getString("author");
}
playlistInfo = PlaylistInfo.getInstance(mContext);
playlistsManager = PlaylistsManager.getInstance(mContext);
View view = inflater.inflate(R.layout.fragment_add_playlist, container);
LinearLayoutManager layoutManager = new LinearLayoutManager(mContext);
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(mContext).create();
alertDialog.setView((mContext.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() {
Log.e("addplay","here");
String albumart = null;
for (MusicInfo info : musics) {
albumart = info.albumData;
if (info.islocal) {
if (albumart.equals(MusicUtils.getAlbumdata(MainApplication.context, info.songId)))
break;
} else if (!TextUtils.isEmpty(albumart)) {
break;
}
}
long playlistid = editText.getText().hashCode();
playlistInfo.addPlaylist(playlistid, editText.getText().toString(),
musics.size(), albumart, author);
playlistsManager.insertLists(mContext, playlistid, musics);
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) (mContext.getResources().getDisplayMetrics().heightPixels * 0.65);
int dialogWidth = (int) (mContext.getResources().getDisplayMetrics().widthPixels * 0.77);
getDialog().getWindow().setLayout(dialogWidth, dialogHeight);
getDialog().setCanceledOnTouchOutside(true);
}
//设置分割线
private void setItemDecoration() {
RecyclerView.ItemDecoration itemDecoration = new DividerItemDecoration(mContext, 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(mContext).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) {
final Playlist playlist = playlists.get(getAdapterPosition());
//playlistInfo.updatePlaylist(playlist.id, musicId.length);
//ArrayList<MusicTrack> musicTracks = playlistsManager.getPlaylist(playlist.id);
new Thread(new Runnable() {
@Override
public void run() {
try {
playlistsManager.insertLists(mContext, playlist.id, musics);
Intent intent = new Intent(IConstants.PLAYLIST_COUNT_CHANGED);
mContext.sendBroadcast(intent);
dismiss();
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
}
}
}