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
Binary file modified .DS_Store
Binary file not shown.
3 changes: 1 addition & 2 deletions MemeProject/.idea/compiler.xml

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

5 changes: 0 additions & 5 deletions MemeProject/.idea/encodings.xml

This file was deleted.

4 changes: 2 additions & 2 deletions MemeProject/.idea/gradle.xml

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

12 changes: 9 additions & 3 deletions MemeProject/.idea/misc.xml

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

3 changes: 1 addition & 2 deletions MemeProject/.idea/modules.xml

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

5 changes: 0 additions & 5 deletions MemeProject/.idea/scopes/scope_settings.xml

This file was deleted.

3 changes: 1 addition & 2 deletions MemeProject/.idea/vcs.xml

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

4 changes: 2 additions & 2 deletions MemeProject/MemeProject.iml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
<facet type="java-gradle" name="Java-Gradle">
<configuration>
<option name="BUILD_FOLDER_PATH" value="$MODULE_DIR$/build" />
<option name="BUILDABLE" value="false" />
</configuration>
</facet>
</component>
Expand All @@ -15,5 +16,4 @@
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

</module>
11 changes: 7 additions & 4 deletions MemeProject/app/app.iml
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,9 @@
<option name="SELECTED_TEST_ARTIFACT" value="_android_test_" />
<option name="ASSEMBLE_TASK_NAME" value="assembleDebug" />
<option name="COMPILE_JAVA_TASK_NAME" value="compileDebugSources" />
<option name="ASSEMBLE_TEST_TASK_NAME" value="assembleDebugAndroidTest" />
<option name="SOURCE_GEN_TASK_NAME" value="generateDebugSources" />
<option name="ASSEMBLE_TEST_TASK_NAME" value="assembleDebugAndroidTest" />
<option name="COMPILE_JAVA_TEST_TASK_NAME" value="compileDebugAndroidTestSources" />
<option name="TEST_SOURCE_GEN_TASK_NAME" value="generateDebugAndroidTestSources" />
<option name="ALLOW_USER_CONFIGURATION" value="false" />
<option name="MANIFEST_FILE_RELATIVE_PATH" value="/src/main/AndroidManifest.xml" />
Expand Down Expand Up @@ -83,11 +84,13 @@
<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>
</module>

</module>
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'
}
Empty file.
Empty file.
Empty file.
30 changes: 26 additions & 4 deletions MemeProject/app/src/main/java/madelyntav/c4q/nyc/memeproject/CustomArrayAdapter.java
100644 → 100755
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
Empty file.
Empty file.
134 changes: 101 additions & 33 deletions MemeProject/app/src/main/java/madelyntav/c4q/nyc/memeproject/MemeList.java
100644 → 100755
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;
}


}
Loading