Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
teolemon committed May 13, 2016
2 parents aa2240b + ce10a7e commit a86f47d
Show file tree
Hide file tree
Showing 21 changed files with 539 additions and 405 deletions.
Binary file modified app/app-release.apk
Binary file not shown.
7 changes: 4 additions & 3 deletions app/build.gradle
Expand Up @@ -8,8 +8,8 @@ android {
applicationId "openfoodfacts.github.scrachx.openfood"
minSdkVersion 15
targetSdkVersion 23
versionCode 17
versionName "0.1.12.1"
versionCode 19
versionName "0.2.1"
}

dexOptions {
Expand All @@ -24,6 +24,7 @@ android {

lintOptions {
abortOnError false
disable 'MissingTranslation'
}

packagingOptions{
Expand Down Expand Up @@ -74,7 +75,7 @@ dependencies {

compile 'me.dm7.barcodescanner:zxing:1.8.4'

compile 'com.hkm.loyalslider:library:1.8.3'
compile 'com.hkm.loyalslider:library:1.8.8'

compile 'org.jsoup:jsoup:1.8.3'

Expand Down
Expand Up @@ -15,6 +15,8 @@
import java.util.List;
import java.util.Locale;

import butterknife.Bind;
import butterknife.OnClick;
import openfoodfacts.github.scrachx.openfood.R;
import openfoodfacts.github.scrachx.openfood.models.Allergen;
import openfoodfacts.github.scrachx.openfood.views.adapters.AllergensAdapter;
Expand All @@ -25,6 +27,8 @@ public class AlertUserFragment extends BaseFragment {
private AllergensAdapter mAdapter;
private RecyclerView mRvAllergens;
private SharedPreferences mSettings;
private View mView;
@Bind(R.id.fab) FloatingActionButton mFab;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
Expand All @@ -35,10 +39,11 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa
public void onViewCreated(final View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);

mView = view;
mSettings = getActivity().getSharedPreferences("prefs", 0);
boolean firstRunAlert = mSettings.getBoolean("firstRunAlert", true);
if (firstRunAlert) {
MaterialDialog dialog = new MaterialDialog.Builder(getContext())
new MaterialDialog.Builder(getContext())
.title(R.string.alert_dialog_warning_title)
.content(R.string.warning_alert_data)
.positiveText(R.string.ok_button)
Expand All @@ -49,48 +54,44 @@ public void onViewCreated(final View view, @Nullable Bundle savedInstanceState)
}

mRvAllergens = (RecyclerView) view.findViewById(R.id.alergens_recycle);

mAllergens = Allergen.find(Allergen.class, "enable = ?", "true");
mAdapter = new AllergensAdapter(mAllergens);
mRvAllergens.setAdapter(mAdapter);
mRvAllergens.setLayoutManager(new LinearLayoutManager(view.getContext()));
mRvAllergens.setHasFixedSize(true);
}

FloatingActionButton myFab = (FloatingActionButton) view.findViewById(R.id.fab);
myFab.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
final List<Allergen> all = IteratorUtils.toList(Allergen.findAll(Allergen.class));
List<String> allS = new ArrayList<String>();
for (Allergen a : all) {
if (Locale.getDefault().getLanguage().contains("fr")){
if(a.getIdAllergen().contains("fr:")) allS.add(a.getName().substring(a.getName().indexOf(":")+1));
} else if (Locale.getDefault().getLanguage().contains("en")) {
if(a.getIdAllergen().contains("en:")) allS.add(a.getName().substring(a.getName().indexOf(":")+1));
}
}
new MaterialDialog.Builder(view.getContext())
.title(R.string.title_dialog_alert)
.items(allS)
.itemsCallback(new MaterialDialog.ListCallback() {
@Override
public void onSelection(MaterialDialog dialog, View view, int which, CharSequence text) {
all.get(which).setEnable("true");
all.get(which).save();
boolean canAdd = true;
for(Allergen a : mAllergens) {
if(a.getName().equals(all.get(which).getName())) canAdd = false;
}
if(canAdd) {
mAllergens.add(all.get(which));
mAdapter.notifyItemInserted(mAllergens.size() - 1);
mRvAllergens.scrollToPosition(mAdapter.getItemCount() - 1);
}
}
})
.show();
@OnClick(R.id.fab)
protected void onAddAllergens() {
final List<Allergen> all = IteratorUtils.toList(Allergen.findAll(Allergen.class));
List<String> allS = new ArrayList<String>();
for (Allergen a : all) {
if (Locale.getDefault().getLanguage().contains("fr")){
if(a.getIdAllergen().contains("fr:")) allS.add(a.getName().substring(a.getName().indexOf(":")+1));
} else if (Locale.getDefault().getLanguage().contains("en")) {
if(a.getIdAllergen().contains("en:")) allS.add(a.getName().substring(a.getName().indexOf(":")+1));
}
});

}
new MaterialDialog.Builder(mView.getContext())
.title(R.string.title_dialog_alert)
.items(allS)
.itemsCallback(new MaterialDialog.ListCallback() {
@Override
public void onSelection(MaterialDialog dialog, View view, int which, CharSequence text) {
all.get(which).setEnable("true");
all.get(which).save();
boolean canAdd = true;
for(Allergen a : mAllergens) {
if(a.getName().equals(all.get(which).getName())) canAdd = false;
}
if(canAdd) {
mAllergens.add(all.get(which));
mAdapter.notifyItemInserted(mAllergens.size() - 1);
mRvAllergens.scrollToPosition(mAdapter.getItemCount() - 1);
}
}
})
.show();
}

}
@@ -1,8 +1,8 @@
package openfoodfacts.github.scrachx.openfood.fragments;

import android.media.Ringtone;
import android.media.RingtoneManager;
import android.net.Uri;
import android.content.SharedPreferences;
import android.media.AudioManager;
import android.media.ToneGenerator;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.support.v4.view.MenuItemCompat;
Expand All @@ -27,22 +27,28 @@ public class BarCodeScannerFragment extends BaseFragment implements MessageDialo
private static final String FLASH_STATE = "FLASH_STATE";
private static final String AUTO_FOCUS_STATE = "AUTO_FOCUS_STATE";
private static final String CAMERA_ID = "CAMERA_ID";
private static final String RING_STATE = "RING_STATE";
private ZXingScannerView mScannerView;
private boolean mFlash;
private boolean mRing;
private boolean mAutoFocus;
private int mCameraId = -1;
private List<BarcodeFormat> mFormats;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle state) {
final SharedPreferences settings = getActivity().getSharedPreferences("camera", 0);

mScannerView = new ZXingScannerView(getActivity());
if(state != null) {
mRing = state.getBoolean(RING_STATE, false);
mFlash = state.getBoolean(FLASH_STATE, false);
mAutoFocus = state.getBoolean(AUTO_FOCUS_STATE, true);
mCameraId = state.getInt(CAMERA_ID, -1);
} else {
mFlash = false;
mAutoFocus = true;
mRing = settings.getBoolean("ring", false);
mFlash = settings.getBoolean("flash", false);
mAutoFocus = settings.getBoolean("focus", true);
mCameraId = -1;
}
setupFormats();
Expand All @@ -60,14 +66,20 @@ public void onCreateOptionsMenu (Menu menu, MenuInflater inflater) {

MenuItem menuItem;

if(mRing) {
menuItem = menu.add(Menu.NONE, R.id.menu_ring, 0, R.string.ring_on);
} else {
menuItem = menu.add(Menu.NONE, R.id.menu_ring, 0, R.string.ring_off);
}
MenuItemCompat.setShowAsAction(menuItem, MenuItem.SHOW_AS_ACTION_NEVER);

if(mFlash) {
menuItem = menu.add(Menu.NONE, R.id.menu_flash, 0, R.string.flash_on);
} else {
menuItem = menu.add(Menu.NONE, R.id.menu_flash, 0, R.string.flash_off);
}
MenuItemCompat.setShowAsAction(menuItem, MenuItem.SHOW_AS_ACTION_NEVER);


if(mAutoFocus) {
menuItem = menu.add(Menu.NONE, R.id.menu_auto_focus, 0, R.string.auto_focus_on);
} else {
Expand All @@ -82,23 +94,43 @@ public void onCreateOptionsMenu (Menu menu, MenuInflater inflater) {
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle presses on the action bar items

final SharedPreferences settings = getActivity().getSharedPreferences("camera", 0);
SharedPreferences.Editor editor = settings.edit();
switch (item.getItemId()) {
case R.id.menu_ring:
mRing = !mRing;
if(mRing) {
item.setTitle(R.string.ring_on);
editor.putBoolean("ring", true);
} else {
item.setTitle(R.string.ring_off);
editor.putBoolean("ring", false);
}
editor.apply();
return true;
case R.id.menu_flash:
mFlash = !mFlash;
if(mFlash) {
item.setTitle(R.string.flash_on);
editor.putBoolean("flash", true);
} else {
item.setTitle(R.string.flash_off);
editor.putBoolean("flash", false);
}
editor.apply();
mScannerView.setFlash(mFlash);
return true;
case R.id.menu_auto_focus:
mAutoFocus = !mAutoFocus;
if(mAutoFocus) {
item.setTitle(R.string.auto_focus_on);
editor.putBoolean("focus", true);
} else {
item.setTitle(R.string.auto_focus_off);
editor.putBoolean("focus", false);
}
editor.apply();
mScannerView.setAutoFocus(mAutoFocus);
return true;
case R.id.menu_camera_selector:
Expand All @@ -125,17 +157,20 @@ public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putBoolean(FLASH_STATE, mFlash);
outState.putBoolean(AUTO_FOCUS_STATE, mAutoFocus);
outState.putBoolean(RING_STATE, mRing);
}

@Override
public void handleResult(Result rawResult) {
try {
Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
Ringtone r = RingtoneManager.getRingtone(getActivity().getApplicationContext(), notification);
r.play();
} catch (Exception e) {}
if(mRing) {
try {
ToneGenerator beep = new ToneGenerator(AudioManager.STREAM_NOTIFICATION, 100);
beep.startTone(ToneGenerator.TONE_PROP_BEEP);
} catch (Exception e) {}
}
if (!rawResult.getText().isEmpty()) {
goToProduct(rawResult, mScannerView);
FoodAPIRestClientUsage api = new FoodAPIRestClientUsage();
api.getProduct(rawResult.getText(), getActivity(), mScannerView, this);
}
}

Expand Down Expand Up @@ -167,11 +202,6 @@ public void setupFormats() {
mScannerView.setFormats(mFormats);
}

private void goToProduct(Result rawResult, ZXingScannerView scannerView) {
FoodAPIRestClientUsage api = new FoodAPIRestClientUsage();
api.getProduct(rawResult.getText(), getActivity(), scannerView, this);
}

@Override
public void onPause() {
super.onPause();
Expand Down
Expand Up @@ -9,10 +9,10 @@
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import org.apache.commons.validator.routines.checkdigit.EAN13CheckDigit;

import butterknife.Bind;
import butterknife.OnClick;
import openfoodfacts.github.scrachx.openfood.R;
import openfoodfacts.github.scrachx.openfood.models.FoodAPIRestClientUsage;
import openfoodfacts.github.scrachx.openfood.utils.Utils;
Expand All @@ -30,26 +30,21 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
mLaunchButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Utils.hideKeyboard(getActivity());
if (mBarCodeText.getText().toString().isEmpty()) {
Toast.makeText(getActivity(), getResources().getString(R.string.txtBarcodeRequire), Toast.LENGTH_LONG).show();
} else {
if (EAN13CheckDigit.EAN13_CHECK_DIGIT.isValid(mBarCodeText.getText().toString()) && (!mBarCodeText.getText().toString().substring(0, 3).contains("977") || !mBarCodeText.getText().toString().substring(0, 3).contains("978") || !mBarCodeText.getText().toString().substring(0, 3).contains("979"))) {
goToProduct();
} else {
Toast.makeText(getActivity(), getResources().getString(R.string.txtBarcodeNotValid), Toast.LENGTH_LONG).show();
}
}
}
});
mBarCodeText.setSelected(false);
}

private void goToProduct() {
FoodAPIRestClientUsage api = new FoodAPIRestClientUsage();
api.getProduct(mBarCodeText.getText().toString(), getActivity());
@OnClick(R.id.buttonBarcode)
protected void onSearchBarcodeProduct() {
Utils.hideKeyboard(getActivity());
if (mBarCodeText.getText().toString().isEmpty()) {
Toast.makeText(getActivity(), getResources().getString(R.string.txtBarcodeRequire), Toast.LENGTH_LONG).show();
} else {
if (EAN13CheckDigit.EAN13_CHECK_DIGIT.isValid(mBarCodeText.getText().toString()) && (!mBarCodeText.getText().toString().substring(0, 3).contains("977") || !mBarCodeText.getText().toString().substring(0, 3).contains("978") || !mBarCodeText.getText().toString().substring(0, 3).contains("979"))) {
FoodAPIRestClientUsage api = new FoodAPIRestClientUsage();
api.getProduct(mBarCodeText.getText().toString(), getActivity());
} else {
Toast.makeText(getActivity(), getResources().getString(R.string.txtBarcodeNotValid), Toast.LENGTH_LONG).show();
}
}
}
}
Expand Up @@ -8,12 +8,12 @@
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;

import com.afollestad.materialdialogs.MaterialDialog;
import com.loopj.android.http.AsyncHttpResponseHandler;
import com.loopj.android.http.RequestParams;

import butterknife.Bind;
import butterknife.OnClick;
import openfoodfacts.github.scrachx.openfood.R;
import openfoodfacts.github.scrachx.openfood.network.FoodUserClient;
import openfoodfacts.github.scrachx.openfood.views.ScannerFragmentActivity;
Expand All @@ -30,19 +30,20 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
checkUserCredentials();
}

@OnClick(R.id.buttonScan)
protected void OnScan() {
Intent intent = new Intent(getActivity(), ScannerFragmentActivity.class);
startActivity(intent);
}

private void checkUserCredentials() {
final SharedPreferences settings = getActivity().getSharedPreferences("login", 0);
String loginS = settings.getString("user", "");
String passS = settings.getString("pass", "");

mButtonScan.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getActivity(), ScannerFragmentActivity.class);
startActivity(intent);
}
});

if (!loginS.isEmpty() && !passS.isEmpty()) {
RequestParams params = new RequestParams();
params.put("user_id", loginS);
Expand Down

0 comments on commit a86f47d

Please sign in to comment.