diff --git a/.idea/misc.xml b/.idea/misc.xml
index 5d19981..fbb6828 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -37,7 +37,7 @@
-
+
diff --git a/app/src/main/java/com/hikapro/backpack/MainActivity.java b/app/src/main/java/com/hikapro/backpack/MainActivity.java
index 09db3d8..a30de4c 100644
--- a/app/src/main/java/com/hikapro/backpack/MainActivity.java
+++ b/app/src/main/java/com/hikapro/backpack/MainActivity.java
@@ -11,6 +11,7 @@ import android.view.MenuItem;
import com.hikapro.backpack.model.AddModel;
import com.hikapro.backpack.model.DetailModel;
import com.hikapro.backpack.model.ItemModel;
+import com.hikapro.backpack.model.Model;
import com.hikapro.backpack.model.PackedModel;
import com.hikapro.backpack.model.SetModel;
import com.hikapro.backpack.model.ShareModel;
@@ -244,10 +245,10 @@ public class MainActivity extends Activity implements View.ActivityCallback {
}
@Override
- public void startItemDetailFragment(Item item, int setId) {
+ public void startItemDetailFragment(int setId, Model.Item baseModel, int position) {
- ItemDetailFragment view = ItemDetailFragment.newInstance(item, setId);
- ItemDetailPresenter presenter = new ItemDetailPresenter();
+ ItemDetailFragment view = ItemDetailFragment.newInstance(setId);
+ ItemDetailPresenter presenter = new ItemDetailPresenter(baseModel, position);
DetailModel model = new DetailModel();
view.setPresenter(presenter);
@@ -260,6 +261,7 @@ public class MainActivity extends Activity implements View.ActivityCallback {
stateMaintainer.put(presenter);
stateMaintainer.put(model);
+
}
@Override
diff --git a/app/src/main/java/com/hikapro/backpack/model/DetailModel.java b/app/src/main/java/com/hikapro/backpack/model/DetailModel.java
index 12d9532..d3a8437 100644
--- a/app/src/main/java/com/hikapro/backpack/model/DetailModel.java
+++ b/app/src/main/java/com/hikapro/backpack/model/DetailModel.java
@@ -34,11 +34,17 @@ public class DetailModel implements Model.Detail {
public int getCount() {
return 1;
}
+
@Override
- public Item findItem(int id) {
+ public Item getCurrentItem() {
return item;
}
+ @Override
+ public void setCurrentItem(Item item) {
+ this.item = item;
+ }
+
@Override
public Bitmap getPicture() {
return pic;
@@ -129,7 +135,6 @@ public class DetailModel implements Model.Detail {
@Override
public void setPresenter(Presenter.ItemDetail presenter) {
this.presenter = presenter;
- this.item = presenter.getCurrentItem();
this.currentSet = presenter.getSetId();
}
diff --git a/app/src/main/java/com/hikapro/backpack/model/Model.java b/app/src/main/java/com/hikapro/backpack/model/Model.java
index 292847e..c61dcaf 100644
--- a/app/src/main/java/com/hikapro/backpack/model/Model.java
+++ b/app/src/main/java/com/hikapro/backpack/model/Model.java
@@ -60,7 +60,8 @@ public interface Model {
interface Detail extends Base {
int getCount();
- com.hikapro.backpack.model.entities.Item findItem(int id);
+ com.hikapro.backpack.model.entities.Item getCurrentItem();
+ void setCurrentItem(com.hikapro.backpack.model.entities.Item item);
Bitmap getPicture();
void setPresenter(Presenter.ItemDetail presenter);
Presenter.ItemDetail getPresenter();
diff --git a/app/src/main/java/com/hikapro/backpack/model/dao/DAO.java b/app/src/main/java/com/hikapro/backpack/model/dao/DAO.java
index 2fbce45..8207094 100644
--- a/app/src/main/java/com/hikapro/backpack/model/dao/DAO.java
+++ b/app/src/main/java/com/hikapro/backpack/model/dao/DAO.java
@@ -11,6 +11,7 @@ import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.os.Process;
+import android.text.TextUtils;
import java.io.IOException;
import java.util.ArrayList;
@@ -1628,7 +1629,8 @@ public class DAO {
String filename = null;
if (item != null) {
- bitmap = BitmapFactory.decodeFile(item.getPhotoLocal());
+ if (!TextUtils.isEmpty(item.getPhotoLocal()))
+ bitmap = BitmapFactory.decodeFile(item.getPhotoLocal());
// cannot retrieve, download and save then
if (bitmap == null) { // return it
bitmap = downloadHelper.loadImage(item.getPhotoUrl());
diff --git a/app/src/main/java/com/hikapro/backpack/model/dao/ImageDownloadHelper.java b/app/src/main/java/com/hikapro/backpack/model/dao/ImageDownloadHelper.java
index 8b18706..5a7c075 100644
--- a/app/src/main/java/com/hikapro/backpack/model/dao/ImageDownloadHelper.java
+++ b/app/src/main/java/com/hikapro/backpack/model/dao/ImageDownloadHelper.java
@@ -5,11 +5,13 @@ import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Environment;
+import android.support.v4.content.ContextCompat;
import android.util.Log;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
+import java.net.SocketTimeoutException;
import java.net.URL;
import java.net.URLConnection;
@@ -20,7 +22,8 @@ import com.hikapro.backpack.App;
*/
public class ImageDownloadHelper {
- public static final String ITEMS_TAG = "items";
+ public static final String IMAGE_DOWNLOAD_TAG = "Image download";
+ public static final String IMAGE_DIRECTORY_NAME = "items";
private Context context;
public ImageDownloadHelper() {
@@ -32,10 +35,15 @@ public class ImageDownloadHelper {
try {
URL url = new URL(netPath);
URLConnection conn = url.openConnection();
+ conn.setReadTimeout(4000);
bitmap = BitmapFactory.decodeStream(conn.getInputStream());
+ } catch (SocketTimeoutException ex) {
+ bitmap = null;
+ Log.e(IMAGE_DOWNLOAD_TAG, " Timeout elapsed.");
} catch (Exception ex) {
- Log.e(ITEMS_TAG, " File cannot be downloaded");
+ Log.e(IMAGE_DOWNLOAD_TAG, " File cannot be downloaded due to exception.");
}
+
return bitmap;
}
@@ -62,8 +70,9 @@ public class ImageDownloadHelper {
try {
file = File.createTempFile(fileName, null, context.getCacheDir());
} catch (IOException e) {
- Log.e(ITEMS_TAG, " Cannot obtain temp file");
+ Log.e(IMAGE_DOWNLOAD_TAG, " Cannot obtain temp file");
}
+
return file;
}
@@ -77,17 +86,25 @@ public class ImageDownloadHelper {
public String saveImageInternal(String filename, Bitmap bitmap) {
File file = null;
- FileOutputStream outputStream;
+ FileOutputStream outputStream = null;
if (bitmap != null && !filename.isEmpty()) {
file = createTempFile(filename);
if (file != null) {
try {
outputStream = new FileOutputStream(file);
bitmap.compress(Bitmap.CompressFormat.JPEG, 90, outputStream);
- outputStream.flush();
- outputStream.close();
} catch (Exception e) {
- Log.e(ITEMS_TAG, " File cannot be saved");
+ Log.e(IMAGE_DOWNLOAD_TAG, "File cannot be saved (Internal): " + e);
+ } finally {
+
+ if (outputStream != null) {
+ try {
+ outputStream.flush();
+ outputStream.close();
+ } catch (IOException e) {
+ // do nothing here
+ }
+ }
}
}
}
@@ -96,18 +113,32 @@ public class ImageDownloadHelper {
public String saveImageExternal(String filename, Bitmap bitmap) {
File file = null;
- FileOutputStream outputStream;
+ FileOutputStream outputStream = null;
if (isExternalStorageWritable()) {
if (bitmap != null && !filename.isEmpty()) {
- File directory = getDir();
- file = new File(directory.getAbsoluteFile(), filename);
try {
- outputStream = new FileOutputStream(file);
- bitmap.compress(Bitmap.CompressFormat.JPEG, 90, outputStream);
- outputStream.flush();
- outputStream.close();
+ File directory = getDir();
+ if (directory != null) {
+ file = new File(directory.getAbsoluteFile(), filename);
+ outputStream = new FileOutputStream(file);
+ bitmap.compress(Bitmap.CompressFormat.JPEG, 90, outputStream);
+ } else {
+ Log.e(IMAGE_DOWNLOAD_TAG, "Saving failed (External): directory unavailable.");
+ }
} catch (Exception e) {
- Log.e(ITEMS_TAG, " File cannot be saved");
+ Log.e(IMAGE_DOWNLOAD_TAG, "File cannot be saved (External): " + e);
+
+ } finally {
+
+ if (outputStream != null) {
+ try {
+ outputStream.flush();
+ outputStream.close();
+
+ } catch (IOException e) {
+ // do nothing here
+ }
+ }
}
}
}
@@ -116,30 +147,47 @@ public class ImageDownloadHelper {
/* Checks if external storage is available for read and write */
public boolean isExternalStorageWritable() {
+ boolean ret;
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state)) {
- return true;
- }
- return false;
+ ret = true;
+ } else
+ ret = false;
+
+ return ret;
}
/* Checks if external storage is available to at least read */
public boolean isExternalStorageReadable() {
+ boolean ret;
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state) ||
Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
- return true;
- }
- return false;
+ ret = true;
+ } else
+ ret = false;
+
+ return ret;
}
private File getDir() {
- // Get the directory for the app's private pictures directory.
- File file = new File(context.getExternalFilesDir(
- Environment.DIRECTORY_PICTURES), ITEMS_TAG);
- if (!file.mkdirs()) {
- Log.e(ITEMS_TAG, " Directory not created");
+ File ret = null;
+ // Get available SD cards
+ File[] dirs = ContextCompat.getExternalFilesDirs(context, Environment.DIRECTORY_PICTURES);
+ if (dirs != null) {
+ switch (dirs.length) {
+ case 1:
+ ret = new File(dirs[0], IMAGE_DIRECTORY_NAME); // can be emulated SD card
+ break;
+ case 2:
+ ret = new File(dirs[1], IMAGE_DIRECTORY_NAME);// real SD card
+ break;
+ }
}
- return file;
+
+ if (!ret.mkdirs()) {
+ Log.e(IMAGE_DOWNLOAD_TAG, "Directory was not created or already exists.");
+ }
+ return ret;
}
}
diff --git a/app/src/main/java/com/hikapro/backpack/presenter/AddPresenter.java b/app/src/main/java/com/hikapro/backpack/presenter/AddPresenter.java
index 0db093d..ce5f535 100644
--- a/app/src/main/java/com/hikapro/backpack/presenter/AddPresenter.java
+++ b/app/src/main/java/com/hikapro/backpack/presenter/AddPresenter.java
@@ -28,7 +28,10 @@ import com.hikapro.backpack.model.Model;
import com.hikapro.backpack.model.entities.Category;
import com.hikapro.backpack.model.entities.Item;
import com.hikapro.backpack.presenter.adapters.AddListAdapter;
+import com.hikapro.backpack.presenter.adapters.helper.FlowLayout;
+import com.hikapro.backpack.presenter.adapters.helper.Util;
import com.hikapro.backpack.presenter.adapters.helper.items.DividerDecoration;
+import com.hikapro.backpack.presenter.adapters.helper.items.DividerDecoration2;
import com.hikapro.backpack.view.View;
import java.lang.ref.WeakReference;
@@ -43,7 +46,7 @@ public class AddPresenter implements Presenter.Add {
private AddListAdapter adapter;
private RecyclerView recycler;
- private ViewGroup categoryContainer;
+ private FlowLayout categoryContainer;
private ViewGroup categoryContainerMain;
private boolean isContainerAlreadyInitialised;
private Item newItem;
@@ -94,8 +97,10 @@ public class AddPresenter implements Presenter.Add {
recycler.setLayoutManager(llm);
recycler.setAdapter(adapter);
recycler.setItemAnimator(new DefaultItemAnimator());
- recycler.addItemDecoration(new DividerDecoration(getActivityContext()));
- categoryContainer = (ViewGroup) view.findViewById(R.id.add_item_category_flow);
+ //recycler.addItemDecoration(new DividerDecoration(getActivityContext()));
+ recycler.addItemDecoration(new DividerDecoration2(getActivityContext(), R.drawable.divider, Util.dp2px(getAppContext(), 16)));
+ categoryContainer = (FlowLayout) view.findViewById(R.id.add_item_category_flow);
+ //categoryContainer.setPaddings(Util.dp2px(getAppContext(), 15), Util.dp2px(getAppContext(), 15)); // TODO check here
categoryContainerMain = (ViewGroup) view.findViewById(R.id.add_item_category_container);
categoryContainerMain.setVisibility(android.view.View.GONE);
recycler.setVisibility(android.view.View.GONE);
@@ -222,7 +227,9 @@ public class AddPresenter implements Presenter.Add {
button = (Button) LayoutInflater.from(getActivityContext()).inflate(
R.layout.category_button, null);
button.setId(category.getId());
- button.setText(category.getName());
+ String txt = category.getName();
+
+ button.setText(txt);
button.setOnClickListener(new CategoryButtonClickListener());
categoryContainer.addView(button);
diff --git a/app/src/main/java/com/hikapro/backpack/presenter/ItemDetailPresenter.java b/app/src/main/java/com/hikapro/backpack/presenter/ItemDetailPresenter.java
index b34d6cf..5281430 100644
--- a/app/src/main/java/com/hikapro/backpack/presenter/ItemDetailPresenter.java
+++ b/app/src/main/java/com/hikapro/backpack/presenter/ItemDetailPresenter.java
@@ -4,18 +4,17 @@ import android.app.ActionBar;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
-import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.support.v7.widget.DefaultItemAnimator;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
+import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.ViewGroup;
import android.webkit.URLUtil;
import android.widget.ImageView;
import android.widget.TextView;
-import android.widget.Toast;
import java.lang.ref.WeakReference;
@@ -23,7 +22,10 @@ import com.hikapro.backpack.R;
import com.hikapro.backpack.model.Model;
import com.hikapro.backpack.model.entities.Item;
import com.hikapro.backpack.presenter.adapters.ItemDetailAdapter;
+import com.hikapro.backpack.presenter.adapters.helper.OnSwipeTouchListener;
+import com.hikapro.backpack.presenter.adapters.helper.Util;
import com.hikapro.backpack.presenter.adapters.helper.items.DividerDecoration;
+import com.hikapro.backpack.presenter.adapters.helper.items.DividerDecoration2;
import com.hikapro.backpack.view.View;
/**
@@ -33,19 +35,23 @@ public class ItemDetailPresenter implements Presenter.ItemDetail {
private WeakReference view;
private Model.Detail model;
+ private Model.Item exModel;
private ItemDetailAdapter adapter;
private Item item;
private int setId;
private ImageView itemPhoto;
private TextView itemDescription;
private TextView itemLink;
+ private int position;
+ private ViewGroup progress;
+ private OnSwipeTouchListener swipeTouchListener;
- public ItemDetailPresenter() {
- this.adapter = new ItemDetailAdapter(this);
+ public ItemDetailPresenter(Model.Item itemModel, int startPosition) {
+ this.adapter = new ItemDetailAdapter(this);
+ this.exModel = itemModel;
+ this.position = startPosition;
}
- // life cycle -->
-
@Override
public void onDestroy(boolean isChangingConfiguration) {
view = null;
@@ -54,6 +60,7 @@ public class ItemDetailPresenter implements Presenter.ItemDetail {
model = null;
}
}
+
@Override
public android.view.View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
@@ -62,14 +69,32 @@ public class ItemDetailPresenter implements Presenter.ItemDetail {
itemPhoto = (ImageView) view.findViewById(R.id.item_photo);
itemDescription = (TextView) view.findViewById(R.id.item_description);
itemLink = (TextView) view.findViewById(R.id.item_link);
+ progress = (ViewGroup) view.findViewById(R.id.detail_progress_container);
+ progress.setVisibility(android.view.View.VISIBLE);
+ swipeTouchListener = new OnSwipeTouchListener(getActivityContext()) {
+ @Override
+ public void onSwipeLeft() {
+ swipeLeft();
+ }
+
+ @Override
+ public void onSwipeRight() {
+ swipeRight();
+ }
+ };
+ progress.setOnTouchListener(swipeTouchListener);
+ itemDescription.setOnTouchListener(swipeTouchListener);
LinearLayoutManager llm = new LinearLayoutManager(getActivityContext());
RecyclerView detailRecycler = (RecyclerView) view.findViewById(R.id.item_detail_recycler);
detailRecycler.setLayoutManager(llm);
detailRecycler.setAdapter(adapter);
detailRecycler.setItemAnimator(new DefaultItemAnimator());
- detailRecycler.addItemDecoration(new DividerDecoration(getActivityContext()));
+ //detailRecycler.addItemDecoration(new DividerDecoration(getActivityContext()));
+ detailRecycler.addItemDecoration(new DividerDecoration2(getActivityContext(), R.drawable.divider, Util.dp2px(getAppContext(), 16)));
+
detailRecycler.setHasFixedSize(true);
+ model.setCurrentItem(exModel.getItemByPosition(position));
model.executeQuery();
Activity activity = (Activity) getActivityContext();
@@ -87,19 +112,24 @@ public class ItemDetailPresenter implements Presenter.ItemDetail {
}
return view;
}
+
@Override
public void onSaveInstanceState(Bundle outState) {
}
- // life cycle <--
-
- // process -->
@Override
public void notifyDataSetChanged() {
adapter.notifyDataSetChanged();
- item = model.findItem(0);
- itemDescription.setText(item.getDescription());
+ item = model.getCurrentItem();
+
+ if (!TextUtils.isEmpty(item.getDescription())) {
+ itemDescription.setText(item.getDescription());
+ itemDescription.setVisibility(android.view.View.VISIBLE);
+ } else {
+ itemDescription.setVisibility(android.view.View.GONE);
+ }
+
if (item.getBuyUrls() != null && !item.getBuyUrls().isEmpty()) {
itemLink.setVisibility(android.view.View.VISIBLE);
itemLink.setOnClickListener(new android.view.View.OnClickListener() {
@@ -122,16 +152,12 @@ public class ItemDetailPresenter implements Presenter.ItemDetail {
}
}
- // process <--
-
- // other impl -->
-
@Override
public void setView(View.ItemDetail view) {
this.view = new WeakReference<>(view);
- this.item = getView().getItem();
this.setId = view.getSetId();
}
+
@Override
public void setModel(Model.Detail model) {
this.model = model;
@@ -166,9 +192,17 @@ public class ItemDetailPresenter implements Presenter.ItemDetail {
@Override
public void notifyPictureChanged() {
- itemPhoto.setImageBitmap(model.getPicture());
+ progress.setVisibility(android.view.View.GONE);
+ if (model.getPicture() != null) {
+ itemPhoto.setImageBitmap(model.getPicture());
+ itemPhoto.setVisibility(android.view.View.VISIBLE);
+ itemPhoto.setOnTouchListener(swipeTouchListener);
+ } else {
+ itemPhoto.setImageBitmap(null);
+ itemPhoto.setVisibility(android.view.View.GONE);
+ }
+
}
- // other impl <--
private View.ItemDetail getView() throws NullPointerException {
if ( view != null )
@@ -180,4 +214,34 @@ public class ItemDetailPresenter implements Presenter.ItemDetail {
public int getSetId() {
return setId;
}
+
+ private boolean isValidPosition(int position) {
+ boolean ret;
+ ret = position > -1 && position < exModel.getItemsCount();
+ return ret;
+ }
+
+ private void swipeLeft() {
+ if (isValidPosition(position + 1)) {
+ // start progress
+ progress.setVisibility(android.view.View.VISIBLE);
+ itemPhoto.setVisibility(android.view.View.GONE);
+ // load data
+ model.setCurrentItem(exModel.getItemByPosition(++position));
+ model.executeQuery();
+ itemPhoto.setImageBitmap(null);
+ }
+ }
+
+ private void swipeRight() {
+ if (isValidPosition(position - 1)) {
+ // start progress
+ progress.setVisibility(android.view.View.VISIBLE);
+ itemPhoto.setVisibility(android.view.View.GONE);
+ // load data
+ model.setCurrentItem(exModel.getItemByPosition(--position));
+ model.executeQuery();
+ itemPhoto.setImageBitmap(null);
+ }
+ }
}
diff --git a/app/src/main/java/com/hikapro/backpack/presenter/ItemListPresenter.java b/app/src/main/java/com/hikapro/backpack/presenter/ItemListPresenter.java
index 3cf6e37..90f43a3 100644
--- a/app/src/main/java/com/hikapro/backpack/presenter/ItemListPresenter.java
+++ b/app/src/main/java/com/hikapro/backpack/presenter/ItemListPresenter.java
@@ -21,8 +21,10 @@ import com.hikapro.backpack.R;
import com.hikapro.backpack.model.Model;
import com.hikapro.backpack.model.entities.Item;
import com.hikapro.backpack.model.entities.Set;
+import com.hikapro.backpack.presenter.adapters.helper.Util;
import com.hikapro.backpack.presenter.adapters.helper.items.DividerDecoration;
import com.hikapro.backpack.presenter.adapters.ItemListAdapter;
+import com.hikapro.backpack.presenter.adapters.helper.items.DividerDecoration2;
import com.hikapro.backpack.presenter.adapters.helper.items.ItemSwipeCallback;
import com.hikapro.backpack.presenter.adapters.helper.items.StickyHeaderDecoration;
import com.hikapro.backpack.view.View;
@@ -75,7 +77,9 @@ public class ItemListPresenter implements Presenter.ItemList {
final StickyHeaderDecoration decoration = new StickyHeaderDecoration(adapter);
recycler.addItemDecoration(decoration);
- recycler.addItemDecoration(new DividerDecoration(getActivityContext()));
+ //recycler.addItemDecoration(new DividerDecoration(getActivityContext()));
+ recycler.addItemDecoration(new DividerDecoration2(getActivityContext(), R.drawable.divider, Util.dp2px(getAppContext(), 16)));
+
adapter.registerAdapterDataObserver(new RecyclerView.AdapterDataObserver() {
@Override
public void onChanged() {
@@ -141,7 +145,7 @@ public class ItemListPresenter implements Presenter.ItemList {
@Override
public void setVisibility() {
- if (model.getPackedQty() == model.getActiveItemsCount()) {
+ if (model.getPackedQty() > 0 && model.getPackedQty() == model.getActiveItemsCount()) {
footer.setVisibility(android.view.View.VISIBLE);
} else if ( model.getPackedQty() > 0) {
footer.setVisibility(android.view.View.VISIBLE);
@@ -157,13 +161,8 @@ public class ItemListPresenter implements Presenter.ItemList {
}
@Override
- public void showDetails(int itemId) {
- Item item = model.findItem(itemId);
- if (item != null)
- getView().showItemDetail(item, set.getId());
- else
- showMessage(String.format("Item with Id %d is not found.", itemId));
-
+ public void showDetails(int position) {
+ getView().showItemDetail(getCurrentSet().getId(), model, position);
}
// process <--
diff --git a/app/src/main/java/com/hikapro/backpack/presenter/Presenter.java b/app/src/main/java/com/hikapro/backpack/presenter/Presenter.java
index d83871b..8790d13 100644
--- a/app/src/main/java/com/hikapro/backpack/presenter/Presenter.java
+++ b/app/src/main/java/com/hikapro/backpack/presenter/Presenter.java
@@ -56,7 +56,7 @@ public interface Presenter {
Set getCurrentSet();
void showMessage(String message);
void onSaveInstanceState(Bundle outState);
- void showDetails(int itemId);
+ void showDetails(int position);
void filter(String query);
void unpack(int setId);
void restore(int setId);
diff --git a/app/src/main/java/com/hikapro/backpack/presenter/adapters/ItemDetailAdapter.java b/app/src/main/java/com/hikapro/backpack/presenter/adapters/ItemDetailAdapter.java
index 7166541..7db6003 100644
--- a/app/src/main/java/com/hikapro/backpack/presenter/adapters/ItemDetailAdapter.java
+++ b/app/src/main/java/com/hikapro/backpack/presenter/adapters/ItemDetailAdapter.java
@@ -1,15 +1,12 @@
package com.hikapro.backpack.presenter.adapters;
-import android.graphics.Bitmap;
import android.graphics.Color;
import android.graphics.Paint;
-import android.graphics.Typeface;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
-import android.widget.Toast;
import com.hikapro.backpack.R;
import com.hikapro.backpack.model.entities.Item;
@@ -19,7 +16,6 @@ import com.hikapro.backpack.presenter.adapters.helper.items.swipe2.SwipableEleme
import com.hikapro.backpack.presenter.adapters.helper.items.swipe2.SwipeMenu;
import com.hikapro.backpack.presenter.adapters.helper.items.swipe2.SwipeMenuItem;
import com.hikapro.backpack.presenter.adapters.helper.items.swipe2.SwipeMenuLayout;
-import com.hikapro.backpack.view.recycler.DetailViewHolder;
import com.hikapro.backpack.view.recycler.ItemViewHolder;
/**
@@ -41,7 +37,7 @@ public class ItemDetailAdapter extends RecyclerView.Adapter {
@Override
public void onBindViewHolder(final ItemViewHolder holder, final int position) {
- final Item item = presenter.getModel().findItem(position);
+ final Item item = presenter.getModel().getCurrentItem();
holder.cb_item.setChecked(item.isPacked());
holder.tv_text.setText(item.getName() + " " + item.getId() + " pos " + position);
holder.im_info.setVisibility(View.GONE);
diff --git a/app/src/main/java/com/hikapro/backpack/presenter/adapters/ItemListAdapter.java b/app/src/main/java/com/hikapro/backpack/presenter/adapters/ItemListAdapter.java
index 1599e99..03b9d1f 100644
--- a/app/src/main/java/com/hikapro/backpack/presenter/adapters/ItemListAdapter.java
+++ b/app/src/main/java/com/hikapro/backpack/presenter/adapters/ItemListAdapter.java
@@ -3,16 +3,11 @@ package com.hikapro.backpack.presenter.adapters;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Typeface;
-import android.graphics.drawable.ColorDrawable;
-import android.os.Handler;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
-import android.widget.Toast;
-
-import java.util.HashMap;
import com.hikapro.backpack.R;
import com.hikapro.backpack.model.entities.Category;
@@ -85,7 +80,7 @@ public class ItemListAdapter extends RecyclerView.Adapter implem
holder.im_info.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
- presenter.showDetails(item.getId());
+ presenter.showDetails(position);
}
});
@@ -224,7 +219,7 @@ public class ItemListAdapter extends RecyclerView.Adapter implem
public HeaderViewHolder onCreateHeaderViewHolder(ViewGroup parent) {
HeaderViewHolder viewHolder;
View v = LayoutInflater.from(parent.getContext())
- .inflate(R.layout.view_header, parent, false);
+ .inflate(R.layout.header_element, parent, false);
viewHolder = new HeaderViewHolder(v);
return viewHolder;
}
diff --git a/app/src/main/java/com/hikapro/backpack/presenter/adapters/PackedListAdapter.java b/app/src/main/java/com/hikapro/backpack/presenter/adapters/PackedListAdapter.java
index 41d2cac..bbf7d21 100644
--- a/app/src/main/java/com/hikapro/backpack/presenter/adapters/PackedListAdapter.java
+++ b/app/src/main/java/com/hikapro/backpack/presenter/adapters/PackedListAdapter.java
@@ -50,7 +50,7 @@ public class PackedListAdapter extends ItemListAdapter {
holder.im_info.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
- presenter.showDetails(item.getId());
+ presenter.showDetails(position);
}
});
diff --git a/app/src/main/java/com/hikapro/backpack/FlowLayout.java b/app/src/main/java/com/hikapro/backpack/presenter/adapters/helper/FlowLayout.java
similarity index 91%
rename from app/src/main/java/com/hikapro/backpack/FlowLayout.java
rename to app/src/main/java/com/hikapro/backpack/presenter/adapters/helper/FlowLayout.java
index 7846c87..a09fe61 100644
--- a/app/src/main/java/com/hikapro/backpack/FlowLayout.java
+++ b/app/src/main/java/com/hikapro/backpack/presenter/adapters/helper/FlowLayout.java
@@ -1,4 +1,4 @@
-package com.hikapro.backpack;
+package com.hikapro.backpack.presenter.adapters.helper;
import android.content.Context;
import android.content.res.TypedArray;
@@ -6,6 +6,8 @@ import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;
+import com.hikapro.backpack.R;
+
/**
* Created by tariel on 22/05/16.
*/
@@ -20,7 +22,7 @@ public class FlowLayout extends ViewGroup {
setPaddings(0,0);
}
- protected void setPaddings(int V, int H){
+ public void setPaddings(int V, int H){
PADDING_X = H;
PADDING_Y = V;
}
@@ -62,20 +64,20 @@ public class FlowLayout extends ViewGroup {
else
childHeightMeasureSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED);
mHeight = 0;
- for(int i = 0; i < count; i++) {
+ for (int i = 0; i < count; i++) {
final View child = getChildAt(i);
- if(child.getVisibility() != GONE) {
+ if (child.getVisibility() != GONE) {
child.measure(MeasureSpec.makeMeasureSpec(width, MeasureSpec.AT_MOST), childHeightMeasureSpec);
final int childw = child.getMeasuredWidth();
mHeight = Math.max(mHeight, child.getMeasuredHeight() + PADDING_Y);
- if(xpos + childw > width) {
+ if (xpos + childw > width) {
xpos = getPaddingLeft();
ypos += mHeight;
}
xpos += childw + PADDING_X;
}
}
- if(MeasureSpec.getMode(heightMeasureSpec) == MeasureSpec.UNSPECIFIED) {
+ if (MeasureSpec.getMode(heightMeasureSpec) == MeasureSpec.UNSPECIFIED) {
height = ypos + mHeight;
} else if(MeasureSpec.getMode(heightMeasureSpec) == MeasureSpec.AT_MOST) {
if(ypos + mHeight < height) {
diff --git a/app/src/main/java/com/hikapro/backpack/presenter/adapters/helper/OnSwipeTouchListener.java b/app/src/main/java/com/hikapro/backpack/presenter/adapters/helper/OnSwipeTouchListener.java
new file mode 100644
index 0000000..8ac3585
--- /dev/null
+++ b/app/src/main/java/com/hikapro/backpack/presenter/adapters/helper/OnSwipeTouchListener.java
@@ -0,0 +1,53 @@
+package com.hikapro.backpack.presenter.adapters.helper;
+
+import android.content.Context;
+import android.view.GestureDetector;
+import android.view.MotionEvent;
+import android.view.View;
+
+/**
+ * Created by tariel on 16/07/16.
+ */
+public class OnSwipeTouchListener implements View.OnTouchListener {
+
+ private final GestureDetector gestureDetector;
+
+ public OnSwipeTouchListener(Context context) {
+ gestureDetector = new GestureDetector(context, new GestureListener());
+ }
+
+ public void onSwipeLeft() {
+ }
+
+ public void onSwipeRight() {
+ }
+
+ public boolean onTouch(View v, MotionEvent event) {
+ return gestureDetector.onTouchEvent(event);
+ }
+
+ private final class GestureListener extends GestureDetector.SimpleOnGestureListener {
+
+ private static final int SWIPE_DISTANCE_THRESHOLD = 100;
+ private static final int SWIPE_VELOCITY_THRESHOLD = 100;
+
+ @Override
+ public boolean onDown(MotionEvent e) {
+ return true;
+ }
+
+ @Override
+ public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
+ float distanceX = e2.getX() - e1.getX();
+ float distanceY = e2.getY() - e1.getY();
+ if (Math.abs(distanceX) > Math.abs(distanceY) && Math.abs(distanceX) > SWIPE_DISTANCE_THRESHOLD && Math.abs(velocityX) > SWIPE_VELOCITY_THRESHOLD) {
+ if (distanceX > 0)
+ onSwipeRight();
+ else
+ onSwipeLeft();
+ return true;
+ }
+ return false;
+ }
+ }
+}
diff --git a/app/src/main/java/com/hikapro/backpack/presenter/adapters/helper/items/DividerDecoration.java b/app/src/main/java/com/hikapro/backpack/presenter/adapters/helper/items/DividerDecoration.java
index 4f66cf5..a290c5d 100644
--- a/app/src/main/java/com/hikapro/backpack/presenter/adapters/helper/items/DividerDecoration.java
+++ b/app/src/main/java/com/hikapro/backpack/presenter/adapters/helper/items/DividerDecoration.java
@@ -9,6 +9,8 @@ import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
+import com.hikapro.backpack.presenter.adapters.helper.Util;
+
public class DividerDecoration extends RecyclerView.ItemDecoration {
diff --git a/app/src/main/java/com/hikapro/backpack/presenter/adapters/helper/items/DividerDecoration2.java b/app/src/main/java/com/hikapro/backpack/presenter/adapters/helper/items/DividerDecoration2.java
new file mode 100644
index 0000000..4240077
--- /dev/null
+++ b/app/src/main/java/com/hikapro/backpack/presenter/adapters/helper/items/DividerDecoration2.java
@@ -0,0 +1,60 @@
+package com.hikapro.backpack.presenter.adapters.helper.items;
+
+import android.content.Context;
+import android.content.res.TypedArray;
+import android.graphics.Canvas;
+import android.graphics.drawable.Drawable;
+import android.support.v4.content.ContextCompat;
+import android.support.v7.widget.RecyclerView;
+import android.view.View;
+
+/**
+ * Created by tariel on 19/07/16.
+ */
+public class DividerDecoration2 extends RecyclerView.ItemDecoration {
+
+ private static final int[] ATTRS = new int[]{android.R.attr.listDivider};
+ private int paddingX;
+
+ private Drawable mDivider;
+
+ /**
+ * Default divider will be used
+ */
+ public DividerDecoration2(Context context) {
+ final TypedArray styledAttributes = context.obtainStyledAttributes(ATTRS);
+ mDivider = styledAttributes.getDrawable(0);
+ styledAttributes.recycle();
+ }
+
+ /**
+ * Custom divider will be used
+ */
+ public DividerDecoration2(Context context, int resId) {
+ mDivider = ContextCompat.getDrawable(context, resId);
+ }
+
+ public DividerDecoration2(Context context, int resId, int paddingX) {
+ mDivider = ContextCompat.getDrawable(context, resId);
+ this.paddingX = paddingX;
+ }
+
+ @Override
+ public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) {
+ int left = parent.getPaddingLeft();
+ int right = parent.getWidth() - parent.getPaddingRight();
+
+ int childCount = parent.getChildCount();
+ for (int i = 0; i < childCount; i++) {
+ View child = parent.getChildAt(i);
+
+ RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child.getLayoutParams();
+
+ int top = child.getBottom() + params.bottomMargin;
+ int bottom = top + mDivider.getIntrinsicHeight();
+
+ mDivider.setBounds(left + paddingX, top, right - paddingX, bottom);
+ mDivider.draw(c);
+ }
+ }
+}
diff --git a/app/src/main/java/com/hikapro/backpack/presenter/adapters/helper/items/swipe2/SwipableRecycler.java b/app/src/main/java/com/hikapro/backpack/presenter/adapters/helper/items/swipe2/SwipableRecycler.java
index 77a2339..5e8c8eb 100644
--- a/app/src/main/java/com/hikapro/backpack/presenter/adapters/helper/items/swipe2/SwipableRecycler.java
+++ b/app/src/main/java/com/hikapro/backpack/presenter/adapters/helper/items/swipe2/SwipableRecycler.java
@@ -67,9 +67,12 @@ public class SwipableRecycler extends RecyclerView {
if (lastTouchedElement != null && lastTouchedElement.isOpen() && lastTouchedElement != buf) {
handled = true;
}
+ // on click
+ /*
if (lastTouchedElement != null && lastTouchedElement.isOpen() && inRangeOfView(lastTouchedElement.getMenuView(), e)) {
lastTouchedElement.getMenuView().notifyOnClick(e.getRawX(), e.getRawY());
}
+ */
if (lastTouchedElement != null)
lastTouchedElement.onSwipe(e);
return handled;
@@ -88,6 +91,13 @@ public class SwipableRecycler extends RecyclerView {
}
return true;
}
+ // TODO del
+ case MotionEvent.ACTION_UP:
+ // on click
+ if (lastTouchedElement != null && lastTouchedElement.isOpen() && inRangeOfView(lastTouchedElement.getMenuView(), e)) {
+ lastTouchedElement.getMenuView().notifyOnClick(e.getRawX(), e.getRawY());
+ }
+ return super.onInterceptTouchEvent(e);
}
return super.onInterceptTouchEvent(e);
}
diff --git a/app/src/main/java/com/hikapro/backpack/view/View.java b/app/src/main/java/com/hikapro/backpack/view/View.java
index fb6cf53..1bb35d5 100644
--- a/app/src/main/java/com/hikapro/backpack/view/View.java
+++ b/app/src/main/java/com/hikapro/backpack/view/View.java
@@ -2,6 +2,7 @@ package com.hikapro.backpack.view;
import android.content.Context;
+import com.hikapro.backpack.model.Model;
import com.hikapro.backpack.model.entities.Item;
import com.hikapro.backpack.model.entities.Set;
import com.hikapro.backpack.presenter.Presenter;
@@ -25,14 +26,13 @@ public interface View {
}
interface ItemList extends Base {
- void showItemDetail(Item item, int setId);
+ void showItemDetail(int setId, Model.Item baseModel, int position);
void showPackedItems(Set set);
void setPresenter(Presenter.ItemList presenter);
Set getSet();
}
interface ItemDetail extends Base {
void setPresenter(Presenter.ItemDetail presenter);
- Item getItem();
int getSetId();
}
@@ -50,7 +50,7 @@ public interface View {
void startSetListFragment();
void startItemListFragment(Set set);
void startPackedListFragment(Set set);
- void startItemDetailFragment(Item item, int setId);
+ void startItemDetailFragment(int setId, Model.Item baseModel, int position);
void startShareFragment(int setId);
void startAddFragment(Set set);
diff --git a/app/src/main/java/com/hikapro/backpack/view/fragments/ItemDetailFragment.java b/app/src/main/java/com/hikapro/backpack/view/fragments/ItemDetailFragment.java
index 87800b7..71bccb6 100644
--- a/app/src/main/java/com/hikapro/backpack/view/fragments/ItemDetailFragment.java
+++ b/app/src/main/java/com/hikapro/backpack/view/fragments/ItemDetailFragment.java
@@ -22,7 +22,6 @@ import com.hikapro.backpack.presenter.Presenter;
*/
public class ItemDetailFragment extends Fragment implements com.hikapro.backpack.view.View.ItemDetail {
- private static final String BUNDLE_ITEM_KEY = "BUNDLE_ITEM_KEY";
private static final String BUNDLE_SET_KEY = "BUNDLE_SET_KEY";
private Presenter.ItemDetail presenter;
@@ -37,10 +36,9 @@ public class ItemDetailFragment extends Fragment implements com.hikapro.backpack
return new ItemDetailFragment();
}
- public static ItemDetailFragment newInstance(Item item, int setId) {
+ public static ItemDetailFragment newInstance(int setId) {
ItemDetailFragment ret = ItemDetailFragment.construct();
Bundle args = new Bundle();
- args.putSerializable(BUNDLE_ITEM_KEY, item);
args.putInt(BUNDLE_SET_KEY, setId);
ret.setArguments(args);
return ret;
@@ -142,13 +140,6 @@ public class ItemDetailFragment extends Fragment implements com.hikapro.backpack
return this.getActivity();
}
- @Override
- public Item getItem() {
- Bundle args = getArguments();
- Item item = (Item) args.getSerializable(BUNDLE_ITEM_KEY);
- return item;
- }
-
@Override
public int getSetId() {
Bundle args = getArguments();
diff --git a/app/src/main/java/com/hikapro/backpack/view/fragments/ItemListFragment.java b/app/src/main/java/com/hikapro/backpack/view/fragments/ItemListFragment.java
index 004c146..d2fe483 100644
--- a/app/src/main/java/com/hikapro/backpack/view/fragments/ItemListFragment.java
+++ b/app/src/main/java/com/hikapro/backpack/view/fragments/ItemListFragment.java
@@ -17,6 +17,7 @@ import android.widget.SearchView;
import android.widget.Toast;
import com.hikapro.backpack.R;
+import com.hikapro.backpack.model.Model;
import com.hikapro.backpack.model.entities.Item;
import com.hikapro.backpack.model.entities.Set;
import com.hikapro.backpack.presenter.Presenter;
@@ -178,10 +179,11 @@ public class ItemListFragment extends Fragment implements com.hikapro.backpack.v
// life cycle <--
+
@Override
- public void showItemDetail(Item item, int setId) {
- activityCallback.startItemDetailFragment(item, setId);
- }//TODO del?
+ public void showItemDetail(int setId, Model.Item baseModel, int position) {
+ activityCallback.startItemDetailFragment(setId, baseModel, position);
+ }
@Override
public void showPackedItems(Set set) {
diff --git a/app/src/main/java/com/hikapro/backpack/view/recycler/DetailViewHolder.java b/app/src/main/java/com/hikapro/backpack/view/recycler/DetailViewHolder.java
deleted file mode 100644
index ca6d2a5..0000000
--- a/app/src/main/java/com/hikapro/backpack/view/recycler/DetailViewHolder.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.hikapro.backpack.view.recycler;
-
-import android.support.v7.widget.RecyclerView;
-import android.view.View;
-import android.widget.ImageView;
-import android.widget.TextView;
-
-import com.hikapro.backpack.R;
-
-/**
- * Created by tariel on 23/04/16.
- */
-public class DetailViewHolder extends RecyclerView.ViewHolder {
-
- public TextView title;
- public TextView description;
- public ImageView photo;
-
- public DetailViewHolder(View v) {
- super(v);
- setupViews(v);
- }
-
- private void setupViews(View view) {
- title = (TextView) view.findViewById(R.id.item_title);
- description = (TextView) view.findViewById(R.id.item_description);
- photo = (ImageView) view.findViewById(R.id.item_photo);
- }
-}
diff --git a/app/src/main/java/com/hikapro/backpack/view/recycler/ItemViewHolderCopy.java b/app/src/main/java/com/hikapro/backpack/view/recycler/ItemViewHolderCopy.java
deleted file mode 100644
index 929d95d..0000000
--- a/app/src/main/java/com/hikapro/backpack/view/recycler/ItemViewHolderCopy.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package com.hikapro.backpack.view.recycler;
-
-import android.support.v7.widget.RecyclerView;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.Button;
-import android.widget.CheckBox;
-import android.widget.ImageButton;
-
-import com.hikapro.backpack.R;
-
-
-/**
- * Created by tariel on 01/05/16.
- */
-public class ItemViewHolderCopy extends RecyclerView.ViewHolder {
-
- public int id;
- public CheckBox checkBox;
- public Button leaveAtHomeButton;
- public Button deleteButton;
- public ImageButton infoButton;
- public ViewGroup swipeGroup;
-
- public ItemViewHolderCopy(View v) {
- super(v);
- setupViews(v);
- }
-
- private void setupViews(View view) {
- infoButton = (ImageButton) view.findViewById(R.id.info_button);
- checkBox = (CheckBox) view.findViewById(R.id.item_checkbox);
- leaveAtHomeButton = (Button) view.findViewById(R.id.leave_at_home_button);
- deleteButton = (Button) view.findViewById(R.id.delete_button);
- swipeGroup = (ViewGroup) view.findViewById((R.id.swipe_container));
- }
-
-}
diff --git a/app/src/main/res/drawable/cat_btn_bg.xml b/app/src/main/res/drawable/cat_btn_bg.xml
new file mode 100644
index 0000000..33d2523
--- /dev/null
+++ b/app/src/main/res/drawable/cat_btn_bg.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/divider.xml b/app/src/main/res/drawable/divider.xml
new file mode 100644
index 0000000..c285233
--- /dev/null
+++ b/app/src/main/res/drawable/divider.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/nice_btn_bg.xml b/app/src/main/res/drawable/nice_btn_bg.xml
new file mode 100644
index 0000000..000d9f3
--- /dev/null
+++ b/app/src/main/res/drawable/nice_btn_bg.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/add_cust_actionbar.xml b/app/src/main/res/layout/add_cust_actionbar.xml
index 2f6a61e..a1b7ebd 100644
--- a/app/src/main/res/layout/add_cust_actionbar.xml
+++ b/app/src/main/res/layout/add_cust_actionbar.xml
@@ -9,14 +9,14 @@
diff --git a/app/src/main/res/layout/category_button.xml b/app/src/main/res/layout/category_button.xml
index 28f89e2..521c1f1 100644
--- a/app/src/main/res/layout/category_button.xml
+++ b/app/src/main/res/layout/category_button.xml
@@ -1,7 +1,14 @@
\ No newline at end of file
diff --git a/app/src/main/res/layout/divider.xml b/app/src/main/res/layout/divider.xml
index 3509b84..dc17d06 100644
--- a/app/src/main/res/layout/divider.xml
+++ b/app/src/main/res/layout/divider.xml
@@ -1,6 +1,6 @@
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/footer.xml b/app/src/main/res/layout/footer.xml
index 24b5c5a..7245009 100644
--- a/app/src/main/res/layout/footer.xml
+++ b/app/src/main/res/layout/footer.xml
@@ -2,22 +2,23 @@
+ android:background="@color/colorFooterBackground"
+ android:layout_gravity="bottom">
diff --git a/app/src/main/res/layout/fragment_add.xml b/app/src/main/res/layout/fragment_add.xml
index 93cd3a5..770709d 100644
--- a/app/src/main/res/layout/fragment_add.xml
+++ b/app/src/main/res/layout/fragment_add.xml
@@ -1,48 +1,58 @@
-
+ android:layout_height="wrap_content"
+ android:background="@color/colorListBackground">
-
+ android:layout_height="wrap_content"
+ android:orientation="vertical">
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
diff --git a/app/src/main/res/layout/fragment_item_detail.xml b/app/src/main/res/layout/fragment_item_detail.xml
index ce063c5..c987dc9 100644
--- a/app/src/main/res/layout/fragment_item_detail.xml
+++ b/app/src/main/res/layout/fragment_item_detail.xml
@@ -35,6 +35,25 @@
android:layout_gravity="center_horizontal"
android:contentDescription="@string/cd_item_image"/>
+
+
+
+
diff --git a/app/src/main/res/layout/fragment_item_list.xml b/app/src/main/res/layout/fragment_item_list.xml
index 093b85b..dd80d01 100644
--- a/app/src/main/res/layout/fragment_item_list.xml
+++ b/app/src/main/res/layout/fragment_item_list.xml
@@ -31,17 +31,17 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAlignment="center"
- android:textSize="@dimen/size_item_packed"
+ android:textSize="@dimen/text_footer"
android:textStyle="bold"
- android:textColor="@color/colorUiSecondaryFont"
+ android:textColor="@color/colorFooterTextWhite"
android:id="@+id/footer_packed_count"/>
diff --git a/app/src/main/res/layout/fragment_packed_list.xml b/app/src/main/res/layout/fragment_packed_list.xml
index 987d461..e03bcc7 100644
--- a/app/src/main/res/layout/fragment_packed_list.xml
+++ b/app/src/main/res/layout/fragment_packed_list.xml
@@ -18,18 +18,18 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAlignment="center"
- android:textSize="@dimen/size_item_packed"
+ android:textSize="@dimen/text_footer"
android:textStyle="bold"
- android:textColor="@color/colorUiSecondaryFont"
+ android:textColor="@color/colorFooterTextWhite"
android:id="@+id/header_packed_count"/>
+ android:visibility="gone"/>
+ android:orientation="vertical"
+ android:background="@color/colorMainBackground">
+ android:background="@color/colorListBackground"/>
+ android:background="@color/colorListBackground">
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_add.xml b/app/src/main/res/layout/item_add.xml
index d5ff6d9..b45dfd4 100644
--- a/app/src/main/res/layout/item_add.xml
+++ b/app/src/main/res/layout/item_add.xml
@@ -12,13 +12,16 @@
android:layout_alignParentLeft="true"
android:paddingStart="@dimen/activity_horizontal_margin"
android:textAppearance="?android:attr/textAppearanceLarge"
- android:textSize="@dimen/size_item_name_big"/>
+ android:textColor="@color/colorText"
+ android:textSize="@dimen/text_item_name"/>
@@ -28,6 +31,7 @@
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="@string/already_in_list"
+ android:textSize="@dimen/text_item_category"
android:textColor="@color/save_green"
android:gravity="center_vertical"
android:layout_alignParentEnd="true"
diff --git a/app/src/main/res/layout/item_detail.xml b/app/src/main/res/layout/item_detail.xml
index a6f7cfc..07a2ce1 100644
--- a/app/src/main/res/layout/item_detail.xml
+++ b/app/src/main/res/layout/item_detail.xml
@@ -18,12 +18,11 @@
android:id="@+id/item_description"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:textColor="@color/colorUiMainFont" />
+ android:textColor="@color/colorDescriptionText" />
-
+ android:textColor="@color/colorLinkText"/>
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_detail_copy.xml b/app/src/main/res/layout/item_detail_copy.xml
deleted file mode 100644
index 567d66f..0000000
--- a/app/src/main/res/layout/item_detail_copy.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_element.xml b/app/src/main/res/layout/item_element.xml
index 433c599..cccabc4 100644
--- a/app/src/main/res/layout/item_element.xml
+++ b/app/src/main/res/layout/item_element.xml
@@ -25,8 +25,8 @@
android:layout_gravity="center"
android:layout_marginStart="@dimen/margin_standard"
android:layout_marginEnd="@dimen/margin_standard"
- android:textSize="@dimen/size_item_name"
- android:textColor="@color/colorUiMainFont" />
+ android:textSize="@dimen/text_item_name"
+ android:textColor="@color/colorText" />
\ No newline at end of file
+ android:layout_height="wrap_content"
+ customNS:paddingY="15dp"
+ customNS:paddingX="15dp" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/test.xml b/app/src/main/res/layout/test.xml
index c51b945..9d33454 100644
--- a/app/src/main/res/layout/test.xml
+++ b/app/src/main/res/layout/test.xml
@@ -1,5 +1,5 @@
-
+ android:paddingLeft="150dp"
+ android:paddingTop="150dp"/>
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/test_actionbar.xml b/app/src/main/res/layout/test_actionbar.xml
deleted file mode 100644
index 550f9e7..0000000
--- a/app/src/main/res/layout/test_actionbar.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/test_actionbar2.xml b/app/src/main/res/layout/test_actionbar2.xml
deleted file mode 100644
index c47b681..0000000
--- a/app/src/main/res/layout/test_actionbar2.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
- >
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/view_header.xml b/app/src/main/res/layout/view_header.xml
deleted file mode 100644
index f2d9673..0000000
--- a/app/src/main/res/layout/view_header.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/view_item.xml b/app/src/main/res/layout/view_item.xml
deleted file mode 100644
index e591439..0000000
--- a/app/src/main/res/layout/view_item.xml
+++ /dev/null
@@ -1,64 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/values-v21/styles.xml b/app/src/main/res/values-v21/styles.xml
index f6ac70d..6d6acbc 100644
--- a/app/src/main/res/values-v21/styles.xml
+++ b/app/src/main/res/values-v21/styles.xml
@@ -2,6 +2,9 @@
-