Skip to content

Commit e6a900e

Browse files
author
Sid Zi
committed
Original com functionality is back
1 parent ee9bfdb commit e6a900e

25 files changed

+403
-38
lines changed

app/src/main/java/com/sidzi/circleofmusic/adapters/ChatAdapter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
//
2828
// @Override
2929
// public ChatAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
30-
// final View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_row_chat, parent, false);
30+
// final View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.row_chat, parent, false);
3131
// return new ViewHolder(view);
3232
// }
3333
//
Lines changed: 126 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,126 @@
1+
package com.sidzi.circleofmusic.adapters;
2+
3+
import android.content.ComponentName;
4+
import android.content.Context;
5+
import android.content.Intent;
6+
import android.content.ServiceConnection;
7+
import android.os.IBinder;
8+
import android.support.v7.widget.RecyclerView;
9+
import android.view.LayoutInflater;
10+
import android.view.View;
11+
import android.view.ViewGroup;
12+
import android.widget.TextView;
13+
14+
import com.android.volley.Request;
15+
import com.android.volley.RequestQueue;
16+
import com.android.volley.Response;
17+
import com.android.volley.VolleyError;
18+
import com.android.volley.toolbox.JsonArrayRequest;
19+
import com.android.volley.toolbox.Volley;
20+
import com.sidzi.circleofmusic.R;
21+
import com.sidzi.circleofmusic.entities.ComTrack;
22+
import com.sidzi.circleofmusic.services.MusicPlayerService;
23+
24+
import org.json.JSONArray;
25+
import org.json.JSONException;
26+
27+
import java.util.ArrayList;
28+
import java.util.List;
29+
30+
import static com.sidzi.circleofmusic.config.com_url;
31+
32+
public class ComTracksAdapter extends RecyclerView.Adapter<ComTracksAdapter.ViewHolder> {
33+
34+
private List<ComTrack> mTrackList;
35+
private Context mContext;
36+
37+
public ComTracksAdapter(Context mContext) {
38+
super();
39+
this.mContext = mContext;
40+
mTrackList = new ArrayList<>();
41+
RequestQueue requestQueue = Volley.newRequestQueue(mContext);
42+
JsonArrayRequest trackRequest = new JsonArrayRequest(Request.Method.GET, com_url + "getTracks", null, new Response.Listener<JSONArray>() {
43+
@Override
44+
public void onResponse(JSONArray response) {
45+
try {
46+
for (int i = 0; i < response.length(); i++) {
47+
mTrackList.add(new ComTrack(response.getJSONObject(i)));
48+
}
49+
notifyDataSetChanged();
50+
} catch (JSONException e) {
51+
e.printStackTrace();
52+
}
53+
}
54+
}, new Response.ErrorListener() {
55+
@Override
56+
public void onErrorResponse(VolleyError error) {
57+
// Couldn't fetch data
58+
}
59+
});
60+
requestQueue.add(trackRequest);
61+
}
62+
63+
64+
@Override
65+
public ComTracksAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
66+
final View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.row_com_track, parent, false);
67+
return new ViewHolder(view);
68+
}
69+
70+
@Override
71+
public void onBindViewHolder(final ViewHolder holder, final int position) {
72+
holder.tvComTrackName.setText(mTrackList.get(position).getTitle());
73+
holder.tvComTrackInfo.setText(mTrackList.get(position).getArtist());
74+
holder.tvComTrackUploader.setText(mTrackList.get(position).getUsername());
75+
String temp_path = mTrackList.get(position).getPath();
76+
77+
holder.itemView.setTag(R.id.tag_track_path, temp_path);
78+
holder.itemView.setTag(R.id.tag_track_name, mTrackList.get(position).getTitle());
79+
holder.itemView.setTag(R.id.tag_track_artist, mTrackList.get(position).getArtist());
80+
}
81+
82+
@Override
83+
public int getItemCount() {
84+
return mTrackList.size();
85+
}
86+
87+
class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener, View.OnLongClickListener {
88+
private TextView tvComTrackName;
89+
private TextView tvComTrackInfo;
90+
private TextView tvComTrackUploader;
91+
92+
ViewHolder(View view) {
93+
super(view);
94+
this.tvComTrackName = (TextView) view.findViewById(R.id.tvComTrackName);
95+
this.tvComTrackInfo = (TextView) view.findViewById(R.id.tvComTrackInfo);
96+
this.tvComTrackUploader = (TextView) view.findViewById(R.id.tvComTrackUploader);
97+
view.setOnClickListener(this);
98+
view.setOnLongClickListener(this);
99+
}
100+
101+
@Override
102+
public void onClick(final View v) {
103+
Intent intent = new Intent(mContext, MusicPlayerService.class);
104+
ServiceConnection mMusicServiceConnection = new ServiceConnection() {
105+
@Override
106+
public void onServiceConnected(ComponentName componentName, IBinder iBinder) {
107+
MusicPlayerService.MusicBinder musicBinder = (MusicPlayerService.MusicBinder) iBinder;
108+
musicBinder.getService().play(v.getTag(R.id.tag_track_path).toString(), v.getTag(R.id.tag_track_artist).toString(), v.getTag(R.id.tag_track_name).toString());
109+
mContext.unbindService(this);
110+
}
111+
112+
@Override
113+
public void onServiceDisconnected(ComponentName componentName) {
114+
115+
}
116+
};
117+
mContext.bindService(intent, mMusicServiceConnection, Context.BIND_AUTO_CREATE);
118+
}
119+
120+
@Override
121+
public boolean onLongClick(View v) {
122+
// Show who uploaded it
123+
return true;
124+
}
125+
}
126+
}

app/src/main/java/com/sidzi/circleofmusic/adapters/PotmAdapter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ public void onErrorResponse(VolleyError error) {
6161

6262
@Override
6363
public PotmAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
64-
final View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_row_potm, parent, false);
64+
final View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.row_potm, parent, false);
6565
return new PotmAdapter.ViewHolder(view);
6666
}
6767

app/src/main/java/com/sidzi/circleofmusic/adapters/TracksAdapter.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ public void getBucketedTracks() {
7979

8080
@Override
8181
public TracksAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
82-
final View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_row_track, parent, false);
82+
final View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.row_track, parent, false);
8383
return new ViewHolder(view);
8484
}
8585

@@ -127,6 +127,7 @@ public void onServiceConnected(ComponentName componentName, IBinder iBinder) {
127127
musicBinder.getService().play(v.getTag(R.id.tag_track_path).toString());
128128
else
129129
musicBinder.getService().bucketPlay(v.getTag(R.id.tag_track_path).toString());
130+
mContext.unbindService(this);
130131
}
131132

132133
@Override
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package com.sidzi.circleofmusic.entities;
2+
3+
4+
import org.json.JSONException;
5+
import org.json.JSONObject;
6+
7+
public class ComTrack {
8+
private String username;
9+
private String path;
10+
private String title;
11+
private String artist;
12+
13+
public ComTrack(JSONObject ComTrack) {
14+
try {
15+
this.username = ComTrack.getString("username");
16+
this.path = ComTrack.getString("path");
17+
this.title = ComTrack.getString("title");
18+
this.artist = ComTrack.getString("artist");
19+
} catch (JSONException e) {
20+
e.printStackTrace();
21+
}
22+
}
23+
24+
public String getUsername() {
25+
return username;
26+
}
27+
28+
public String getPath() {
29+
return path;
30+
}
31+
32+
public String getTitle() {
33+
return title;
34+
}
35+
36+
public String getArtist() {
37+
return artist;
38+
}
39+
}
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,70 @@
11
package com.sidzi.circleofmusic.fragments;
22

33

4+
import android.content.Intent;
5+
import android.os.Build;
46
import android.os.Bundle;
57
import android.support.annotation.Nullable;
8+
import android.support.design.widget.FloatingActionButton;
69
import android.support.v4.app.Fragment;
10+
import android.support.v7.widget.LinearLayoutManager;
11+
import android.support.v7.widget.RecyclerView;
712
import android.view.LayoutInflater;
813
import android.view.View;
914
import android.view.ViewGroup;
1015

1116
import com.sidzi.circleofmusic.R;
17+
import com.sidzi.circleofmusic.adapters.ComTracksAdapter;
18+
import com.sidzi.circleofmusic.helpers.FileUploader;
19+
import com.sidzi.circleofmusic.helpers.VerticalSpaceDecorationHelper;
20+
import com.sidzi.circleofmusic.ui.ListFileActivity;
21+
22+
import java.io.File;
23+
24+
import static android.app.Activity.RESULT_OK;
1225

1326
public class TheFifthFragment extends Fragment {
1427
@Nullable
1528
@Override
1629
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
1730
View TheFifthFragmentView = inflater.inflate(R.layout.fragment_fifth, container, false);
31+
32+
RecyclerView mRecyclerView;
33+
RecyclerView.LayoutManager mLayoutManager;
34+
35+
mRecyclerView = (RecyclerView) TheFifthFragmentView.findViewById(R.id.rvComTrackList);
36+
mLayoutManager = new LinearLayoutManager(getContext());
37+
38+
mRecyclerView.setLayoutManager(mLayoutManager);
39+
mRecyclerView.setHasFixedSize(true);
40+
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP_MR1) {
41+
mRecyclerView.addItemDecoration(new VerticalSpaceDecorationHelper(getContext()));
42+
}
43+
ComTracksAdapter mComTracksAdapter = new ComTracksAdapter(getContext());
44+
mRecyclerView.setAdapter(mComTracksAdapter);
45+
46+
FloatingActionButton fabUpload = (FloatingActionButton) TheFifthFragmentView.findViewById(R.id.fabUpload);
47+
fabUpload.setOnClickListener(new View.OnClickListener() {
48+
@Override
49+
public void onClick(View view) {
50+
Intent intent = new Intent(getContext(), ListFileActivity.class);
51+
startActivityForResult(intent, 220);
52+
}
53+
});
54+
1855
return TheFifthFragmentView;
1956
}
57+
58+
@Override
59+
public void onActivityResult(int requestCode, int resultCode, Intent data) {
60+
super.onActivityResult(requestCode, resultCode, data);
61+
if (requestCode == 220 && resultCode == RESULT_OK) {
62+
String path;
63+
path = data.getStringExtra("filepath");
64+
if (!"".equals(path) && !(new File(path).isDirectory()))
65+
new FileUploader(getContext(), path).execute();
66+
else
67+
startActivityForResult(new Intent(getContext(), ListFileActivity.class), 220);
68+
}
69+
}
2070
}
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
package com.sidzi.circleofmusic.helpers;
2+
3+
import android.content.Context;
4+
import android.content.SharedPreferences;
5+
import android.os.AsyncTask;
6+
import android.util.Log;
7+
import android.widget.Toast;
8+
9+
import com.sidzi.circleofmusic.config;
10+
import com.sidzi.circleofmusic.entities.Track;
11+
12+
import net.gotev.uploadservice.MultipartUploadRequest;
13+
import net.gotev.uploadservice.UploadNotificationConfig;
14+
15+
import java.util.ArrayList;
16+
17+
public class FileUploader extends AsyncTask<Void, Void, Boolean> {
18+
private String path;
19+
private Context mContext;
20+
21+
public FileUploader(Context context, String filename) {
22+
path = filename;
23+
mContext = context;
24+
}
25+
26+
@Override
27+
protected Boolean doInBackground(Void... params) {
28+
SharedPreferences settings = mContext.getSharedPreferences("com_prefs", 0);
29+
if (!settings.getBoolean("registered", false))
30+
return false;
31+
else {
32+
String url = config.com_url + "uploadTrack";
33+
ArrayList<Track> mArrayList = Utils.musicLoader(mContext);
34+
Track _temp = new Track("", "", "");
35+
try {
36+
_temp = mArrayList.get(mArrayList.indexOf(new Track(path)));
37+
} catch (IndexOutOfBoundsException e) {
38+
e.printStackTrace();
39+
}
40+
try {
41+
final String uploadIdentity =
42+
new MultipartUploadRequest(mContext, url)
43+
.addFileToUpload(path, "file")
44+
.setNotificationConfig(new UploadNotificationConfig())
45+
.setMaxRetries(2)
46+
.addParameter("username", settings.getString("username", ""))
47+
.addParameter("artist", _temp.getArtist())
48+
.addParameter("title", _temp.getName())
49+
.addParameter("filename", _temp.getPath().substring(_temp.getPath().lastIndexOf("/")))
50+
.startUpload();
51+
} catch (Exception exc) {
52+
Log.e("AndroidUploadService", exc.getMessage(), exc);
53+
}
54+
return true;
55+
}
56+
}
57+
58+
@Override
59+
protected void onPostExecute(Boolean aBoolean) {
60+
super.onPostExecute(aBoolean);
61+
if (!aBoolean)
62+
Toast.makeText(mContext, "Register first", Toast.LENGTH_LONG).show();
63+
}
64+
}

app/src/main/java/com/sidzi/circleofmusic/recievers/MusicPlayerViewHandler.java

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ public class MusicPlayerViewHandler extends BroadcastReceiver {
3434
private ImageButton ibPlayNext;
3535
private NotificationManager mNotificationManager;
3636
private NotificationCompat.Builder mBuilder;
37+
private ProgressBar pbTrackPlay;
3738

3839
public MusicPlayerViewHandler(Context mContext) {
3940
super();
@@ -44,7 +45,7 @@ public MusicPlayerViewHandler(Context mContext) {
4445
ibPlay = (ImageButton) ((MainActivity) mContext).findViewById(R.id.ibPlayPause);
4546
ibAddToBucket = (ImageButton) ((MainActivity) mContext).findViewById(R.id.ibAddToBucket);
4647
ibPlayNext = (ImageButton) ((MainActivity) mContext).findViewById(R.id.ibPlayNext);
47-
ProgressBar pbTrackPlay = (ProgressBar) ((MainActivity) mContext).findViewById(R.id.pbTrackPlay);
48+
pbTrackPlay = (ProgressBar) ((MainActivity) mContext).findViewById(R.id.pbTrackPlay);
4849
pbTrackPlay.getProgressDrawable().setColorFilter(mContext.getResources().getColor(R.color.primaryInverted), PorterDuff.Mode.SRC_IN);
4950

5051
// Music Notification
@@ -56,7 +57,6 @@ public MusicPlayerViewHandler(Context mContext) {
5657
.setSmallIcon(R.drawable.ic_statusbar)
5758
.setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
5859
.setContentIntent(mainActivity)
59-
.setOngoing(true)
6060
.setLargeIcon(BitmapFactory.decodeResource(mContext.getResources(), R.mipmap.ic_launcher));
6161
}
6262

@@ -71,10 +71,14 @@ public void onServiceConnected(ComponentName componentName, IBinder iBinder) {
7171
ibPlay.setOnClickListener(new View.OnClickListener() {
7272
@Override
7373
public void onClick(final View v) {
74-
if (mpService.mMediaPlayer.isPlaying()) {
75-
mpService.pause();
76-
} else {
77-
mpService.unpause();
74+
try {
75+
if (mpService.mMediaPlayer.isPlaying()) {
76+
mpService.pause();
77+
} else {
78+
mpService.unpause();
79+
}
80+
} catch (NullPointerException e) {
81+
e.printStackTrace();
7882
}
7983
}
8084
});
@@ -120,6 +124,7 @@ public void onServiceDisconnected(ComponentName componentName) {
120124
mBuilder.setContentTitle(temp_track.getName())
121125
.setContentText(temp_track.getArtist());
122126
mNotificationManager.notify(notifyId, mBuilder.build());
127+
pbTrackPlay.setIndeterminate(true);
123128
break;
124129
case MusicPlayerService.ACTION_PAUSE:
125130
ibPlay.setImageResource(R.drawable.ic_track_play);
@@ -129,6 +134,7 @@ public void onServiceDisconnected(ComponentName componentName) {
129134
case MusicPlayerService.ACTION_PLAY:
130135
ibPlay.setImageResource(R.drawable.ic_track_stop);
131136
mBuilder.setOngoing(true);
137+
pbTrackPlay.setIndeterminate(false);
132138
mNotificationManager.notify(notifyId, mBuilder.build());
133139
break;
134140
case MusicPlayerService.ACTION_CLOSE:

0 commit comments

Comments
 (0)