Skip to content
This repository has been archived by the owner on Feb 13, 2025. It is now read-only.

Commit

Permalink
Merge branch 'release/v1.2'
Browse files Browse the repository at this point in the history
* release/v1.2: (46 commits)
  Updated read me and commit latest APK
  Changed instance creation for actiondialog
  Bumped version
  Removed memory cache size
  Remove html
  Don't reset view twice
  Fixed issue with images not being deleted properly
  Added share functionality
  Added delete option functionality
  Added selection
  Added menu
  Added basic action mode for long press images
  Added notes into action adapter
  Fixed population issue
  Populate model on save
  Added notes input box
  Fixed issue with adding new plant messing up order
  Added snack bar for feeding
  Fixed formatting inconsistencies
  Tone back the colours
  ...
  • Loading branch information
7LPdWcaW committed Oct 10, 2015
2 parents 217e7df + b4d1df7 commit 4548f72
Show file tree
Hide file tree
Showing 37 changed files with 1,558 additions and 221 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

Welcome to grow tracker. This app was created to help record data about growing plants in order to monitor the growing conditions to help make the plants grow better, and identify potential issues during the grow process.

[Latest APK: (MD5) 1415322161aff8582f45fca66cb7c3f6 v1.1](https://github.com/7LPdWcaW/GrowTracker-Android/raw/master/app/app-release.apk)
[Latest APK: (MD5) fb7153166529a7aa2b072a3c48186d62 v1.2](https://github.com/7LPdWcaW/GrowTracker-Android/raw/master/app/app-release.apk)

# Installation

Expand Down
Binary file modified app/app-release.apk
Binary file not shown.
10 changes: 5 additions & 5 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ android {
applicationId "me.anon.grow"
minSdkVersion 15
targetSdkVersion 22
versionCode 2
versionName "1.1"
versionCode 3
versionName "1.2"
}

lintOptions {
Expand All @@ -23,9 +23,9 @@ android {

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.1.1'
compile 'com.android.support:recyclerview-v7:22.1.1'
compile 'com.android.support:cardview-v7:22.1.1'
compile 'com.android.support:appcompat-v7:22.2.0'
compile 'com.android.support:recyclerview-v7:22.2.0'
compile 'com.android.support:cardview-v7:22.2.0'
compile 'com.google.code.gson:gson:2.3.1'
compile 'com.kennyc:snackbar:2.0.2'
compile 'com.github.PhilJay:MPAndroidChart:v2.1.0'
Expand Down
16 changes: 8 additions & 8 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,14 @@
</intent-filter>
</activity>

<activity android:name=".MainActivity" android:screenOrientation="portrait" />
<activity android:name=".AddPlantActivity" android:screenOrientation="portrait" />
<activity android:name=".AddFeedingActivity" android:screenOrientation="portrait" />
<activity android:name=".EditFeedingActivity" android:screenOrientation="portrait" />
<activity android:name=".ViewPhotosActivity" android:screenOrientation="portrait" />
<activity android:name=".EventsActivity" android:screenOrientation="portrait" />
<activity android:name=".StatisticsActivity" android:screenOrientation="portrait" />
<activity android:name=".MainActivity" />
<activity android:name=".AddPlantActivity" />
<activity android:name=".AddFeedingActivity" />
<activity android:name=".EditFeedingActivity" />
<activity android:name=".ViewPhotosActivity" />
<activity android:name=".EventsActivity" />
<activity android:name=".StatisticsActivity" />
<activity android:name=".fragment.ImageLightboxDialog" android:theme="@style/fullscreen" />
<activity android:name=".PlantDetailsActivity" android:windowSoftInputMode="stateAlwaysHidden" android:screenOrientation="portrait" />
<activity android:name=".PlantDetailsActivity" android:windowSoftInputMode="stateAlwaysHidden" />
</application>
</manifest>
16 changes: 9 additions & 7 deletions app/src/main/java/me/anon/controller/adapter/ActionAdapter.java
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ public interface OnActionSelectListener
String summary = "";
if (action instanceof Feed)
{
viewHolder.itemView.setBackgroundColor(Action.ActionName.FEED.getColour());
viewHolder.itemView.setBackgroundColor(0x9A90CAF9);
viewHolder.getName().setText("Feed with nutrients");

if (((Feed)action).getNutrient() != null)
Expand Down Expand Up @@ -134,7 +134,7 @@ public interface OnActionSelectListener
}
else if (action instanceof Water)
{
viewHolder.itemView.setBackgroundColor(Action.ActionName.WATER.getColour());
viewHolder.itemView.setBackgroundColor(0x9ABBDEFB);
viewHolder.getName().setText("Watered");
StringBuilder waterStr = new StringBuilder();

Expand Down Expand Up @@ -176,20 +176,22 @@ else if (action instanceof EmptyAction && ((EmptyAction)action).getAction() != n
{
viewHolder.getName().setText(((EmptyAction)action).getAction().getPrintString());
viewHolder.itemView.setBackgroundColor(((EmptyAction)action).getAction().getColour());

summary = action.getNotes();
}
else if (action instanceof NoteAction)
{
viewHolder.getName().setText("Note");
viewHolder.itemView.setBackgroundColor(0xffffffff);

summary = action.getNotes();
}
else if (action instanceof StageChange)
{
viewHolder.getName().setText(((StageChange)action).getNewStage().getPrintString());
viewHolder.itemView.setBackgroundColor(0xffB39DDB);
viewHolder.itemView.setBackgroundColor(0x9AB39DDB);
}

if (!TextUtils.isEmpty(action.getNotes()))
{
summary += summary.length() > 0 ? "\n\n" : "";
summary += action.getNotes();
}

if (!TextUtils.isEmpty(summary))
Expand Down
58 changes: 52 additions & 6 deletions app/src/main/java/me/anon/controller/adapter/ImageAdapter.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import java.util.List;

import lombok.Getter;
import lombok.Setter;
import me.anon.grow.MainApplication;
import me.anon.grow.R;
import me.anon.grow.fragment.ImageLightboxDialog;
Expand All @@ -28,6 +29,9 @@
public class ImageAdapter extends RecyclerView.Adapter<ImageHolder>
{
@Getter private List<String> images = new ArrayList<>();
@Getter private List<Integer> selected = new ArrayList<>();
@Setter private View.OnLongClickListener onLongClickListener;
private boolean inActionMode = false;

public void setImages(List<String> images)
{
Expand All @@ -41,9 +45,9 @@ public void setImages(List<String> images)
return new ImageHolder(LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.image_item, viewGroup, false));
}

@Override public void onBindViewHolder(ImageHolder viewHolder, final int i)
@Override public void onBindViewHolder(final ImageHolder viewHolder, final int position)
{
final String imageUri = images.get(i);
final String imageUri = images.get(position);

ImageLoader.getInstance().cancelDisplayTask(viewHolder.getImage());
ImageLoader.getInstance().displayImage("file://" + imageUri, viewHolder.getImage(), MainApplication.getDisplayImageOptions());
Expand All @@ -52,12 +56,54 @@ public void setImages(List<String> images)
{
@Override public void onClick(View v)
{
Intent details = new Intent(v.getContext(), ImageLightboxDialog.class);
details.putExtra("images", (String[])images.toArray(new String[getItemCount()]));
details.putExtra("image_position", i);
v.getContext().startActivity(details);
if (!inActionMode)
{
Intent details = new Intent(v.getContext(), ImageLightboxDialog.class);
details.putExtra("images", (String[])images.toArray(new String[getItemCount()]));
details.putExtra("image_position", position);
v.getContext().startActivity(details);
}
else
{
if (selected.contains((Integer)position))
{
selected.remove((Integer)position);
viewHolder.getSelection().setChecked(false);
}
else
{
selected.add(position);
viewHolder.getSelection().setChecked(true);
}
}
}
});

viewHolder.getSelection().setChecked(selected.contains((Integer)position));
viewHolder.getSelection().setVisibility(inActionMode ? View.VISIBLE : View.GONE);

if (onLongClickListener != null && !inActionMode)
{
viewHolder.itemView.setOnLongClickListener(new View.OnLongClickListener()
{
@Override public boolean onLongClick(View v)
{
selected.add(position);
viewHolder.getSelection().setChecked(true);
return onLongClickListener.onLongClick(v);
}
});
}
}

public void setInActionMode(boolean inActionMode)
{
this.inActionMode = inActionMode;

if (!inActionMode)
{
selected.clear();
}
}

@Override public int getItemCount()
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package me.anon.controller.adapter;

public interface ItemTouchHelperAdapter
{
void onItemMove(int fromPosition, int toPosition);

void onItemDismiss(int position);
}
58 changes: 45 additions & 13 deletions app/src/main/java/me/anon/controller/adapter/PlantAdapter.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package me.anon.controller.adapter;

import android.content.Context;
import android.content.Intent;
import android.support.v7.widget.RecyclerView;
import android.text.Html;
Expand All @@ -18,6 +19,7 @@
import me.anon.grow.PlantDetailsActivity;
import me.anon.grow.R;
import me.anon.lib.DateRenderer;
import me.anon.lib.manager.PlantManager;
import me.anon.model.Action;
import me.anon.model.Feed;
import me.anon.model.Plant;
Expand All @@ -33,15 +35,21 @@
* @documentation // TODO Reference flow doc
* @project GrowTracker
*/
public class PlantAdapter extends RecyclerView.Adapter<PlantHolder>
public class PlantAdapter extends RecyclerView.Adapter<PlantHolder> implements ItemTouchHelperAdapter
{
@Getter private List<Plant> plants = new ArrayList<>();
private Context context;

public PlantAdapter(Context context)
{
this.context = context;
}

public void setPlants(List<Plant> plants)
{
this.plants.clear();
this.plants.addAll(plants);
Collections.reverse(this.plants);
this.plants.removeAll(Collections.singleton(null));
}

@Override public PlantHolder onCreateViewHolder(ViewGroup viewGroup, int i)
Expand Down Expand Up @@ -102,12 +110,11 @@ else if (action instanceof Water && lastWater == null)
if (lastWater.getPh() != null)
{
summary += "<b>" + lastWater.getPh() + " PH</b>";
}

if (lastWater.getPh() != null || lastWater.getRunoff() != null)
{
summary += lastWater.getPh() != null ? " -> " : "";
summary += "<b>" + lastWater.getRunoff() + " PH</b> ";
if (lastWater.getRunoff() != null)
{
summary += " -> <b>" + lastWater.getRunoff() + " PH</b> ";
}
}

if (lastWater.getAmount() != null)
Expand Down Expand Up @@ -140,12 +147,11 @@ else if (action instanceof Water && lastWater == null)
if (lastFeed.getPh() != null)
{
summary += "<b>" + lastFeed.getPh() + " PH</b>";
}

if (lastFeed.getPh() != null || lastFeed.getRunoff() != null)
{
summary += lastFeed.getPh() != null ? " -> " : "";
summary += "<b>" + lastFeed.getRunoff() + " PH</b> ";
if (lastFeed.getRunoff() != null)
{
summary += " -> <b>" + lastFeed.getRunoff() + " PH</b> ";
}
}

if (lastFeed.getAmount() != null)
Expand Down Expand Up @@ -178,7 +184,7 @@ else if (action instanceof Water && lastWater == null)
@Override public void onClick(View v)
{
Intent details = new Intent(v.getContext(), PlantDetailsActivity.class);
details.putExtra("plant_index", plants.size() - i - 1);
details.putExtra("plant_index", PlantManager.getInstance().getPlants().indexOf(plant));
v.getContext().startActivity(details);
}
});
Expand All @@ -188,4 +194,30 @@ else if (action instanceof Water && lastWater == null)
{
return plants.size();
}

@Override public void onItemMove(int fromPosition, int toPosition)
{
if (fromPosition < toPosition)
{
for (int index = fromPosition; index < toPosition; index++)
{
Collections.swap(plants, index, index + 1);
}
}
else
{
for (int index = fromPosition; index > toPosition; index--)
{
Collections.swap(plants, index, index - 1);
}
}

notifyItemMoved(fromPosition, toPosition);
}

@Override public void onItemDismiss(int position)
{
plants.remove(position);
notifyItemRemoved(position);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package me.anon.controller.adapter;

import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.helper.ItemTouchHelper;

public class SimpleItemTouchHelperCallback extends ItemTouchHelper.Callback
{
private final ItemTouchHelperAdapter mAdapter;

public SimpleItemTouchHelperCallback(ItemTouchHelperAdapter adapter)
{
mAdapter = adapter;
}

@Override public boolean isLongPressDragEnabled()
{
return true;
}

@Override public boolean isItemViewSwipeEnabled()
{
return false;
}

@Override public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder)
{
int dragFlags = ItemTouchHelper.UP | ItemTouchHelper.DOWN;
int swipeFlags = ItemTouchHelper.START | ItemTouchHelper.END;
return makeMovementFlags(dragFlags, swipeFlags);
}

@Override public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target)
{
mAdapter.onItemMove(viewHolder.getAdapterPosition(), target.getAdapterPosition());
return true;
}

@Override public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction)
{
mAdapter.onItemDismiss(viewHolder.getAdapterPosition());
}
}
2 changes: 0 additions & 2 deletions app/src/main/java/me/anon/grow/AddFeedingActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,6 @@ public class AddFeedingActivity extends AppCompatActivity
{
super.onCreate(savedInstanceState);

setTitle("New feeding");

setContentView(R.layout.fragment_holder);
Views.inject(this);

Expand Down
4 changes: 2 additions & 2 deletions app/src/main/java/me/anon/grow/MainApplication.java
Original file line number Diff line number Diff line change
Expand Up @@ -32,12 +32,12 @@ public class MainApplication extends Application
.cacheInMemory(true)
.cacheOnDisk(true)
.showImageOnLoading(R.drawable.ic_image)
.imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2)
.imageScaleType(ImageScaleType.EXACTLY_STRETCHED)
.bitmapConfig(Bitmap.Config.RGB_565)
.build();

ImageLoader.getInstance().init(new ImageLoaderConfiguration.Builder(this)
.memoryCacheExtraOptions(512, 512)
.threadPoolSize(6)
.build());
}
}
Loading

0 comments on commit 4548f72

Please sign in to comment.