Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 1 addition & 14 deletions MemeProject/.idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion MemeProject/MemeProject.iml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<module external.linked.project.id="MemeProject" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$" external.system.id="GRADLE" external.system.module.group="" external.system.module.version="unspecified" type="JAVA_MODULE" version="4">
<module external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$" external.system.id="GRADLE" external.system.module.group="" external.system.module.version="unspecified" type="JAVA_MODULE" version="4">
<component name="FacetManager">
<facet type="java-gradle" name="Java-Gradle">
<configuration>
Expand Down
7 changes: 5 additions & 2 deletions MemeProject/app/app.iml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<module external.linked.project.id=":app" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$/.." external.system.id="GRADLE" external.system.module.group="MemeProject" external.system.module.version="unspecified" type="JAVA_MODULE" version="4">
<module external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$/.." external.system.id="GRADLE" external.system.module.group="MemeProject" external.system.module.version="unspecified" type="JAVA_MODULE" version="4">
<component name="FacetManager">
<facet type="android-gradle" name="Android-Gradle">
<configuration>
Expand Down Expand Up @@ -83,9 +83,12 @@
<excludeFolder url="file://$MODULE_DIR$/build/outputs" />
<excludeFolder url="file://$MODULE_DIR$/build/tmp" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="jdk" jdkName="Android API 22 Platform" jdkType="Android SDK" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" exported="" name="appcompat-v7-22.1.1" level="project" />
<orderEntry type="library" exported="" name="gson-2.3.1" level="project" />
<orderEntry type="library" exported="" name="picasso-2.5.2" level="project" />
<orderEntry type="library" exported="" name="retrofit-1.9.0" level="project" />
<orderEntry type="library" exported="" name="support-v4-22.1.1" level="project" />
<orderEntry type="library" exported="" name="support-annotations-22.1.1" level="project" />
</component>
Expand Down
2 changes: 2 additions & 0 deletions MemeProject/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -22,4 +22,6 @@ android {
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.1.1'
compile 'com.squareup.picasso:picasso:2.5.2'
compile 'com.squareup.retrofit:retrofit:1.9.0'
}
1 change: 1 addition & 0 deletions MemeProject/app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
package="madelyntav.c4q.nyc.memeproject" >

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

<application
android:allowBackup="true"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,27 +8,47 @@
import android.widget.ImageView;
import android.widget.TextView;

import com.squareup.picasso.Picasso;

import java.util.ArrayList;
import java.util.List;

import madelyntav.c4q.nyc.memeproject.Meme_API.Meme;

/**
* Created by kadeemmaragh on 6/4/15.
*/
public class CustomArrayAdapter extends ArrayAdapter<String> {

List<String> memeNames= null;
List<Integer> memeImages = null;
List<String> memeUrls = null;
private static LayoutInflater inflater = null;
private Context context;

CustomArrayAdapter(Context context, List<String> names, List<Integer> images) {
super(context, R.layout.list_item, names);
memeNames = names;
memeImages = images;
this.context = context.getApplicationContext();

inflater = (LayoutInflater) context.
getSystemService(Context.LAYOUT_INFLATER_SERVICE);

}

CustomArrayAdapter(Context context, List<String> names, List<String> imageUrls, boolean api) {
super(context, R.layout.list_item, names);
memeNames = names;
memeUrls = imageUrls;
this.context = context.getApplicationContext();

inflater = (LayoutInflater) context.
getSystemService(Context.LAYOUT_INFLATER_SERVICE);

}


@Override
public View getView(int position, View convertView,
ViewGroup parent) {
Expand All @@ -47,12 +67,14 @@ private View newView(ViewGroup parent) {

private void bindView(int position, View row) {
TextView label=(TextView)row.findViewById(R.id.memeName);

label.setText(memeNames.get(position));

ImageView icon=(ImageView)row.findViewById(R.id.memeImage);
label.setText(memeNames.get(position));

icon.setImageResource(memeImages.get(position));
if(memeUrls == null) {
Picasso.with(context).load(memeImages.get(position)).resize(250, 250).centerCrop().into(icon);
}else{
Picasso.with(context).load(memeUrls.get(position)).resize(250, 250).centerCrop().into(icon);
}
}


Expand Down
Original file line number Diff line number Diff line change
@@ -1,27 +1,40 @@
package madelyntav.c4q.nyc.memeproject;

import android.app.Activity;
import android.content.ContentResolver;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.Toast;

import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import madelyntav.c4q.nyc.memeproject.Meme_API.Meme;
import madelyntav.c4q.nyc.memeproject.Meme_API.MemeTemplate;
import madelyntav.c4q.nyc.memeproject.Meme_API.MemeTemplateAPI;
import madelyntav.c4q.nyc.memeproject.Meme_DB.MySQLiteOpenHelper;
import retrofit.Callback;
import retrofit.RestAdapter;
import retrofit.RetrofitError;
import retrofit.client.Response;

/**
* Created by kadeemmaragh on 6/5/15.
*/
public class MemeList extends Activity {

private static final String DB_FULL_PATH = "//data/data/madelyntav.c4q.nyc.memeproject/databases/myDb";
ListView listView;
HashMap<Integer, String> memePairs;
private Uri uri;
List<Meme> memeList;
List<String> imageUrls;
List<String> imageTitles;

@Override
public void onCreate(Bundle savedInstanceState) {
Expand All @@ -30,60 +43,115 @@ public void onCreate(Bundle savedInstanceState) {

listView = (ListView) findViewById(R.id.listView);

memePairs = new HashMap<>();
memePairs.put(R.drawable.actual_advice_mallard, "Actual Advice Mallard");
memePairs.put(R.drawable.but_thats_none_of_my_business, "But That's None Of My Business");
memePairs.put(R.drawable.creepy_condescending_wonka, "Creepy Condescending Wonka");
memePairs.put(R.drawable.futurama_fry, "Skeptical Fry");
memePairs.put(R.drawable.good_guy_greg, "Good Guy Greg");
memePairs.put(R.drawable.liam_neeson_taken, "Liam Neeson Taken");
memePairs.put(R.drawable.one_does_not_simply, "One Does Not Simply");
memePairs.put(R.drawable.scumbag_steve, "Scumbag Steve");
memePairs.put(R.drawable.shut_up_and_take_my_money_fry, "Shut Up And Take My Money");
memePairs.put(R.drawable.ten_guy, "Ten Guy");
memePairs.put(R.drawable.the_most_interesting_man_in_the_world, "The Most Interesting Man In The World");
memePairs.put(R.drawable.third_world_skeptical_kid, "Third World Skeptical Kid");
memePairs.put(R.drawable.unhelpful_high_school_teacher, "Unhelpful High School Teacher");
memePairs.put(R.drawable.yao_ming, "Yao Ming");
memePairs.put(R.drawable.you_the_real_mvp, "You The Real MVP");
if(dataBaseExists()){

memeList = loadData();

final ArrayList<Integer> memeImages = new ArrayList<Integer>();
ArrayList<String> memeNames = new ArrayList<String>();
addItemsToArrays(memeImages, memeNames);
imageUrls = new ArrayList<String>();
imageTitles = new ArrayList<String>();
for(Meme meme : memeList){
imageUrls.add(meme.getUrl());
imageTitles.add(meme.getName());
}

CustomArrayAdapter memeAdapter = new CustomArrayAdapter(getApplicationContext(), memeNames, memeImages);
listView.setAdapter(new CustomArrayAdapter(getApplicationContext(), imageTitles, imageUrls, true));
}else{

listView.setAdapter(memeAdapter);
retrofitGetMemeTemplates();
}

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent intent = new Intent(MemeList.this, EditPhoto.class);

uri = Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE + "://" + getResources().getResourcePackageName(memeImages.get(position)) + '/' + getResources().getResourceTypeName(memeImages.get(position)) + '/' + getResources().getResourceEntryName(memeImages.get(position)));
//uri = Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE + "://" + getResources().getResourcePackageName(memeImages.get(position)) + '/' + getResources().getResourceTypeName(memeImages.get(position)) + '/' + getResources().getResourceEntryName(memeImages.get(position)));

intent.putExtra("image", uri);
startActivity(intent);
Toast.makeText(getApplicationContext(), "Please select VANILLA or DEMO layout to begin", Toast.LENGTH_SHORT).show();


}
});

}

private List<Meme> loadData() {

MySQLiteOpenHelper db = MySQLiteOpenHelper.getInstance(this);
return db.loadData();
}

private void insertData(Meme meme) {
MySQLiteOpenHelper db = MySQLiteOpenHelper.getInstance(this);
db.insertRow(meme);
}

private void retrofitGetMemeTemplates(){

RestAdapter restAdapter = new RestAdapter.Builder()
.setEndpoint("https://api.imgflip.com")
.setLogLevel(RestAdapter.LogLevel.FULL)
.build();

MemeTemplateAPI memeTemplateAPI = restAdapter.create(MemeTemplateAPI.class);

memeTemplateAPI.getTemplates(new Callback<MemeTemplate>() {
@Override
public void success(MemeTemplate memeTemplate, Response response) {
memeList = memeTemplate.getData().getMemes();
imageUrls = new ArrayList<String>();
imageTitles = new ArrayList<String>();
for(Meme meme : memeList){
imageUrls.add(meme.getUrl());
imageTitles.add(meme.getName());
}

loadDBSetAdapter();
}

@Override
public void failure(RetrofitError error) {
(Toast.makeText(MemeList.this,"Couldn't load popular Memes",Toast.LENGTH_LONG)).show();
}
});

}

public void addItemsToArrays(ArrayList<Integer> images, ArrayList<String> titles) {
int position = 0;
for (Integer image : memePairs.keySet()) {
private void loadDBSetAdapter(){

(new AsyncTask<Void, Void, List<Meme>>() {
@Override
protected List<Meme> doInBackground(Void... voids) {

for(Meme meme : memeList) {
insertData(meme);
}

return loadData();
}

images.add(position, image);
titles.add(position, memePairs.get(image));
position++;
@Override
protected void onPostExecute(List<Meme> memes) {
super.onPostExecute(memes);

listView.setAdapter(new CustomArrayAdapter(getApplicationContext(), imageTitles, imageUrls, true));
}
}).execute();

}

private boolean dataBaseExists() {
SQLiteDatabase checkDB = null;
try {
checkDB = SQLiteDatabase.openDatabase(DB_FULL_PATH, null,
SQLiteDatabase.OPEN_READONLY);
checkDB.close();
} catch (SQLiteException e) {
// database doesn't exist yet.
}
return checkDB != null;
}


}
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package madelyntav.c4q.nyc.memeproject.Meme_API;

import java.util.ArrayList;
import java.util.List;
import com.google.gson.annotations.Expose;

public class Data {

@Expose
private List<Meme> memes = new ArrayList<Meme>();

/**
*
* @return
* The memes
*/
public List<Meme> getMemes() {
return memes;
}

/**
*
* @param memes
* The memes
*/
public void setMemes(List<Meme> memes) {
this.memes = memes;
}

}
Loading