Large diffs are not rendered by default.

@@ -20,8 +20,10 @@

package com.ushahidi.android.app.entities;

import com.ushahidi.android.app.models.Model;

public class Category implements IDbEntity {

public class Category extends Model implements IDbEntity {

private int id;

@@ -54,7 +56,7 @@ public String getCategoryColor() {
}

public void setCategoryColor(String color) {
this.categoryColor = color;
this.categoryColor = "#"+color;
}

public int getCategoryPosition() {
@@ -74,4 +76,22 @@ public void setDbId(int id) {
public int getDbId() {
return id;
}

/* (non-Javadoc)
* @see com.ushahidi.android.app.models.Model#load()
*/
@Override
public boolean load() {
// TODO Auto-generated method stub
return false;
}

/* (non-Javadoc)
* @see com.ushahidi.android.app.models.Model#save()
*/
@Override
public boolean save() {
// TODO Auto-generated method stub
return false;
}
}
@@ -201,8 +201,8 @@ public boolean loadReportById(long id) {
return false;
}

public boolean loadReportByCategory(String category) {
mReports = Database.mReportDao.fetchReportByCategory(category);
public boolean loadReportByCategory(int categoryId) {
mReports = Database.mReportDao.fetchReportByCategoryId(categoryId);

if (mReports != null) {
return true;
@@ -252,22 +252,24 @@ public List<ListReportModel> getReports(Context context) {
return reportModel;
}

public Vector<String> getCategories(Context context) {
public List<Category> getCategories(Context context) {
final List<Category> categories = Database.mCategoryDao
.fetchAllCategoryTitles();
final Vector<String> vectorCategories = new Vector<String>();

if ((categories != null) && (categories.size() > 0)) {
vectorCategories.clear();
vectorCategories.add(context.getString(R.string.all_categories));

for (Category category : categories) {
if (category != null) {
vectorCategories.add(category.getCategoryTitle());
}
}
}
return vectorCategories;
//return vectorCategories;

return categories;
}

private Drawable getImage(Context context, int reportId) {
@@ -25,7 +25,6 @@
import android.location.Location;
import android.os.Bundle;
import android.support.v4.view.MenuItem;
import android.text.TextUtils;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ViewSwitcher;
@@ -51,7 +50,7 @@ public class ViewReportActivity extends

private Bundle photosBundle;

private String category;
private int categoryId;

public ViewReportActivity() {
super(ViewReportView.class, R.layout.view_report, R.menu.view_report,
@@ -66,14 +65,14 @@ public void onCreate(Bundle savedInstanceState) {
view = new ViewReportView(this);
photosBundle = new Bundle();

this.category = getIntent().getExtras().getString("category");
this.categoryId = getIntent().getExtras().getInt("category",0);
this.position = getIntent().getExtras().getInt("id", 0);

if ((category != null) && (!TextUtils.isEmpty(category)))
reports.loadReportByCategory(category);
else
if (categoryId ==0) {
reports.loadReportByCategory(categoryId);
}else{
reports.load();

}
initReport(this.position);

}
@@ -40,9 +40,11 @@
import android.widget.ImageButton;
import android.widget.ListView;

import com.ushahidi.android.app.Preferences;
import com.ushahidi.android.app.R;
import com.ushahidi.android.app.adapters.BaseArrayAdapter;
import com.ushahidi.android.app.adapters.CategorySpinnerAdater;
import com.ushahidi.android.app.adapters.ListReportAdapter;
import com.ushahidi.android.app.entities.Category;
import com.ushahidi.android.app.fragments.BaseListFragment;
import com.ushahidi.android.app.models.ListReportModel;
import com.ushahidi.android.app.net.CategoriesHttpClient;
@@ -66,17 +68,13 @@ public class ListReportFragment extends

public ListReportAdapter mListReportAdapter;

private ListReportModel mListReportModel;

private Handler mHandler;

private MenuItem refresh;

private ArrayAdapter<String> spinnerArrayAdapter;

private Vector<String> categories;
private CategorySpinnerAdater spinnerArrayAdapter;

private String filterCategory;
private int filterCategory = 0;

private CharSequence filterTitle = null;

@@ -91,7 +89,6 @@ public class ListReportFragment extends
public ListReportFragment() {
super(ListReportView.class, ListReportAdapter.class,
R.layout.list_report, R.menu.list_report, android.R.id.list);
categories = new Vector<String>();
}

@Override
@@ -106,7 +103,6 @@ public void onActivityCreated(Bundle savedInstanceState) {

mListReportView = new ListReportView(getActivity());
mListReportAdapter = new ListReportAdapter(getActivity());
mListReportModel = new ListReportModel();
mHandler = new Handler();
mListReportView.getFilterReportView().addTextChangedListener(
new TextWatcher() {
@@ -238,33 +234,31 @@ public void refreshMapLists() {

private void showDropDownNav() {

if (categories != null && categories.size() > 0) {

new AlertDialog.Builder(getActivity())
.setTitle(getActivity().getString(R.string.prompt_mesg))
.setAdapter(spinnerArrayAdapter,
new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog,
int which) {
filterCategory = categories.get(which);
// FIXME implement a proper way of filtering
// by
// category
if ((filterCategory != null)
&& (!TextUtils
.isEmpty(filterCategory))
&& (filterCategory != getActivity()
.getString(
R.string.all_categories))) {
// if (categories != null && categories.size() > 0) {

new AlertDialog.Builder(getActivity())
.setTitle(getActivity().getString(R.string.prompt_mesg))
.setAdapter(spinnerArrayAdapter,
new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog,
int which) {
if (spinnerArrayAdapter.listCategories != null) {
filterCategory = spinnerArrayAdapter.listCategories
.get(which).getDbId();
final String all = spinnerArrayAdapter.listCategories
.get(which).getCategoryTitle();
if ((all != null)
&& (!TextUtils.isEmpty(all))
&& (all != getActivity().getString(
R.string.all_categories))) {
mListReportAdapter
.refresh(filterCategory);
mListReportView
.getPullToRefreshListView()
.setAdapter(mListReportAdapter);
mListReportView.displayEmptyListText();
// filterCategory = null;

} else {
mListReportAdapter.refresh();
@@ -273,21 +267,17 @@ public void onClick(DialogInterface dialog,
.setAdapter(mListReportAdapter);
mListReportView.displayEmptyListText();
}
dialog.dismiss();
}
}).create().show();
}
dialog.dismiss();
}
}).create().show();
// }

}

public void showCategories() {
categories = mListReportModel.getCategories(getActivity());
spinnerArrayAdapter = new ArrayAdapter<String>(getActivity(),
android.R.layout.simple_dropdown_item_1line, categories);

spinnerArrayAdapter
.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

spinnerArrayAdapter = new CategorySpinnerAdater(getActivity());
spinnerArrayAdapter.refresh();
}

@Override
@@ -419,9 +409,7 @@ protected void onLoaded(boolean success) {
public void launchViewReport(int id) {
Intent i = new Intent(getActivity(), ViewReportActivity.class);
i.putExtra("id", id);
if (filterCategory != null
&& !filterCategory
.equalsIgnoreCase(getString(R.string.all_categories))) {
if (filterCategory == 0) {
i.putExtra("category", filterCategory);
} else {
i.putExtra("category", "");
@@ -28,8 +28,8 @@
/**
* Widget Annotation
*/
@Retention(RetentionPolicy.CLASS)
@Target(ElementType.FIELD )
public @ interface Widget {
public int value();
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface Widget {
public int value();
}