Skip to content

Commit

Permalink
Merge branch 'dev'
Browse files Browse the repository at this point in the history
  • Loading branch information
williamwong committed Jun 21, 2015
2 parents d3632ea + 8499c1c commit 1957b3d
Show file tree
Hide file tree
Showing 22 changed files with 909 additions and 86 deletions.
8 changes: 4 additions & 4 deletions app/build.gradle
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
apply plugin: 'com.android.application'

android {
compileSdkVersion 'android-MNC'
compileSdkVersion 22
buildToolsVersion '23.0.0 rc2'
defaultConfig {
applicationId "org.williamwong.spotifystreamer"
minSdkVersion 9
targetSdkVersion 'MNC'
minSdkVersion 14
targetSdkVersion 22
versionCode 1
versionName "1.0"
}
Expand All @@ -30,7 +30,7 @@ dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.2.0'
compile 'com.squareup.picasso:picasso:2.5.2'
compile(name:'spotify-web-api-android-0.1.0', ext:'aar')
compile(name: 'spotify-web-api-android-0.1.0', ext: 'aar')
compile 'com.squareup.retrofit:retrofit:1.9.0'
compile 'com.squareup.okhttp:okhttp:2.2.0'
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
* <a href="http://d.android.com/tools/testing/testing_android.html">Testing Fundamentals</a>
*/
public class ApplicationTest extends ApplicationTestCase<Application> {
public ApplicationTest() {
super(Application.class);
}
public ApplicationTest() {
super(Application.class);
}
}
16 changes: 14 additions & 2 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,32 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.williamwong.spotifystreamer" >

<uses-permission android:name="android.permission.INTERNET" />

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
android:name=".activities.MainActivity"
android:label="@string/app_name"
android:launchMode="singleTop"
android:windowSoftInputMode="stateUnchanged" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".activities.TrackActivity"
android:label="@string/title_activity_track"
android:parentActivityName=".activities.MainActivity" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="org.williamwong.spotifystreamer.activities.MainActivity" />
</activity>
</application>

</manifest>

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package org.williamwong.spotifystreamer.activities;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;

import org.williamwong.spotifystreamer.R;
import org.williamwong.spotifystreamer.fragments.ArtistFragment;

public class MainActivity extends AppCompatActivity implements ArtistFragment.Callbacks {

public static final String SPOTIFY_ID_KEY = "spotifyId";
public static final String ARTIST_NAME_KEY = "artistName";

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}

/**
* Handles artist selected and start new activity with track results.
* This is a callback from the {@link org.williamwong.spotifystreamer.fragments.ArtistFragment.Callbacks}
* class.
*
* @param spotifyId a Spotify id representing the artist
* @param artistName the name of the artist
*/
@Override
public void onArtistSelected(String spotifyId, String artistName) {
Intent trackIntent = new Intent(this, TrackActivity.class);
trackIntent.putExtra(SPOTIFY_ID_KEY, spotifyId);
trackIntent.putExtra(ARTIST_NAME_KEY, artistName);
startActivity(trackIntent);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package org.williamwong.spotifystreamer.activities;

import android.os.Bundle;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;

import org.williamwong.spotifystreamer.R;
import org.williamwong.spotifystreamer.fragments.TrackFragment;

public class TrackActivity extends AppCompatActivity {

private static final String TRACK_FRAGMENT_TAG = "trackFragment";
private TrackFragment mTrackFragment;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_track);

// Retrieve arguments from intent
String spotifyId = getIntent().getStringExtra(MainActivity.SPOTIFY_ID_KEY);
String artistName = getIntent().getStringExtra(MainActivity.ARTIST_NAME_KEY);

// Find fragment if exists. If not, create new instance of fragment
if (savedInstanceState != null) {
mTrackFragment = (TrackFragment) getSupportFragmentManager().findFragmentByTag(TRACK_FRAGMENT_TAG);
} else if (mTrackFragment == null) {
mTrackFragment = TrackFragment.newInstance(spotifyId);
}

// Set subtitle to be the artist name
if (getSupportActionBar() != null) {
getSupportActionBar().setSubtitle(artistName);
}

// Insert fragment into container
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.tracksContainer, mTrackFragment, TRACK_FRAGMENT_TAG);
ft.commit();
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
package org.williamwong.spotifystreamer.adapters;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;

import com.squareup.picasso.Picasso;

import org.williamwong.spotifystreamer.R;
import org.williamwong.spotifystreamer.models.ArtistModel;

import java.util.List;

/**
* List adapter for artist search results
* Created by w.wong on 6/14/2015.
*/
public class ArtistAdapter extends ArrayAdapter<ArtistModel> {

public ArtistAdapter(Context context, List<ArtistModel> objects) {
super(context, 0, objects);
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
ArtistModel artist = getItem(position);

ViewHolder viewHolder;
if (convertView == null) {
convertView = LayoutInflater.from(getContext())
.inflate(R.layout.list_item_artist, parent, false);
viewHolder = new ViewHolder(convertView);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}

viewHolder.artistNameTextView.setText(artist.getName());
Picasso.with(getContext())
.load(artist.getImageUrl())
.fit().centerCrop()
.into(viewHolder.artistThumbnailImageView);

return convertView;
}

private static class ViewHolder {
TextView artistNameTextView;
ImageView artistThumbnailImageView;

public ViewHolder(View v) {
artistNameTextView = (TextView) v.findViewById(R.id.artistNameTextView);
artistThumbnailImageView = (ImageView) v.findViewById(R.id.artistThumbnailImageView);
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
package org.williamwong.spotifystreamer.adapters;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;

import com.squareup.picasso.Picasso;

import org.williamwong.spotifystreamer.R;
import org.williamwong.spotifystreamer.models.TrackModel;

import java.util.List;

/**
* List adapter for track list.
* Created by w.wong on 6/19/2015.
*/
public class TrackAdapter extends ArrayAdapter<TrackModel> {

public TrackAdapter(Context context, List<TrackModel> objects) {
super(context, 0, objects);
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
TrackModel track = getItem(position);

ViewHolder viewHolder;
if (convertView == null) {
convertView = LayoutInflater.from(getContext()).inflate(R.layout.list_item_track, parent, false);
viewHolder = new ViewHolder(convertView);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}

viewHolder.trackNameTextView.setText(track.getTrackName());
viewHolder.albumNameTextView.setText(track.getAlbumName());
Picasso.with(getContext())
.load(track.getImageUrl())
.fit().centerCrop()
.into(viewHolder.trackThumbnailImageView);

return convertView;
}

private static class ViewHolder {
TextView trackNameTextView;
TextView albumNameTextView;
ImageView trackThumbnailImageView;

public ViewHolder(View v) {
trackNameTextView = (TextView) v.findViewById(R.id.trackNameTextView);
albumNameTextView = (TextView) v.findViewById(R.id.albumNameTextView);
trackThumbnailImageView = (ImageView) v.findViewById(R.id.trackThumbnailImageView);
}
}
}
Loading

0 comments on commit 1957b3d

Please sign in to comment.