package com.shvelo.guesslogo; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.content.ContentValues; import android.content.Context; import android.content.Intent; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; //import android.util.Log; import android.util.Log; public class BrandManager { public static Context context; public static Activity activity; public static List<Brand> brands; public static SQLiteDatabase db; public static void init(Context con, Activity act) { context = con; activity = act; brands = new ArrayList<Brand>(); DBHelper dbHelper = new DBHelper(context); db = dbHelper.get(); Cursor query = db.query("brands", null, null, null, null, null, "name asc", null); for(int i = 0; i < query.getCount(); i++) { query.moveToNext(); /*for(int ii = 0; ii < query.getColumnNames().length; ii++) { Log.d("guesslogo", query.getColumnNames()[ii]); }*/ int imageResource = context.getResources().getIdentifier(query.getString(query.getColumnIndex("logo")), null, context.getPackageName()); List<String> variants = new ArrayList<String>(); variants.add(query.getString(query.getColumnIndex("variant1"))); variants.add(query.getString(query.getColumnIndex("variant2"))); variants.add(query.getString(query.getColumnIndex("variant3"))); variants.add(query.getString(query.getColumnIndex("variant4"))); Brand b = new Brand( query.getInt(query.getColumnIndex("_id")), query.getString(query.getColumnIndex("name")), context.getResources().getDrawable(imageResource), variants, query.getInt(query.getColumnIndex("correct")), (query.getInt(query.getColumnIndex("guessed")) == 1) ); brands.add(b); } } public static void saveUnguessed() { db.beginTransaction(); for(int i = 0; i < brands.size(); i++) { int guessedInt = 0; if(brands.get(i).guessed) { guessedInt = 1; } db.execSQL("UPDATE brands SET guessed=? WHERE _id=?", new String[] { String.valueOf(guessedInt), String.valueOf(brands.get(i).id) }); } db.setTransactionSuccessful(); db.endTransaction(); } public static void updateScore(int score) { if(score > 0) { db.rawQuery("UPDATE userdata SET value=? WHERE name='score'", new String[]{ String.valueOf(score) }); ContentValues values = new ContentValues(); values.put("value", score); db.update("userdata", values, "name='score'", null); } Log.d("guesslogo", "update score "+score); } public static int getScore() { Cursor cursor = db.rawQuery("SELECT value FROM userdata WHERE name='score'", null); cursor.moveToFirst(); Log.d("guesslogo", "score "+cursor.getString(0)); return cursor.getInt(0); } public static Brand get(int id) { return brands.get(id); } public static void restart() { for(int i = 0; i < brands.size(); i++) { brands.get(i).guessed = false; } db.execSQL("UPDATE brands SET guessed=0"); db.execSQL("UPDATE userdata SET value='0' WHERE name='score'"); showLogoList(); } public static void showGuessingScreen(int id) { Intent intent = new Intent(); intent.setAction("com.shvelo.guesslogo.GUESS_BRAND"); intent.putExtra("brand", id); activity.startActivity(intent); } public static void showLogoList() { Intent intent = activity.getIntent(); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); activity.startActivity(intent); } public static void next(int id) { if(allGuessed()) return; for(int i = 0; i < brands.size(); i++) { if(i == id) continue; if(!brands.get(i).guessed) showGuessingScreen(i); } } public static Boolean validateGuess(int id, String name) { if(name.toLowerCase().contentEquals(get(id).name.toLowerCase())) { return true; } else { return false; } } public static void guessed(int id) { brands.get(id).guessed = true; saveUnguessed(); } public static int size() { return brands.size(); } public static int sizeGuessed() { int size = 0; for(int i = 0; i < brands.size(); i++) { if(brands.get(i).guessed) size++; } return size; } public static Boolean allGuessed() { for(int i = 0; i < brands.size(); i++) { if(!brands.get(i).guessed) return false; } return true; } }