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/v2.5.2'
Browse files Browse the repository at this point in the history
* release/v2.5.2:
  Bumps version, Adds changeling and updates readme
  Prevent empty passphrases
  Fixes issue with exporting large plant lists and updates markdown
  Fixes markdown and reverses action list
  Fixes issue with bad index references when sorting plants
  Adds dismiss listener and adds reverse functionality
  Replaces apply logic with plant select dialog
  Adds total time to plant lightbox
  Adds total days to photo list separators
  Removes default garden if garden is deleted
  Adds typed value to snacker action
  Adds activity null check for restore
  Adds delivery unit to additive dialog
  Deletes the photo file when deleting photo
  Only allow whole numbers for backup size and adds safe int call
  Prevent empty stage changes from happening
  Do not continue broadcast if no photo was actually taken
  Adds save int parse for to/from date and changes input type to signed
  • Loading branch information
7LPdWcaW committed Jul 10, 2019
2 parents 116d00b + 37bd4da commit 37deb0c
Show file tree
Hide file tree
Showing 26 changed files with 340 additions and 149 deletions.
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@

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) 2be1b62b6e31193f7036b8e41d9a12db v2.5.1](https://github.com/7LPdWcaW/GrowTracker-Android/releases/download/v2.5.1/v2.5.1-production.apk)
[Latest APK: (MD5) 97ee6036106397faeae2217c704adfda v2.5.2](https://github.com/7LPdWcaW/GrowTracker-Android/releases/download/v2.5.2/v2.5.2-production.apk)

[Latest APK (Discrete): (MD5) 97eb68a4a733b4a59a007ef48609e81c v2.5.1](https://github.com/7LPdWcaW/GrowTracker-Android/releases/download/v2.5.1/v2.5.1-discrete.apk)
[Latest APK (Discrete): (MD5) 6a4963bd1c2a4998af7e0b05d2f8c681 v2.5.2](https://github.com/7LPdWcaW/GrowTracker-Android/releases/download/v2.5.2/v2.5.2-discrete.apk)

[Get it on F-Droid with automatic updates](https://f-droid.org/packages/me.anon.grow/)

Expand Down
4 changes: 2 additions & 2 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ android {
applicationId "me.anon.grow"
minSdkVersion 17
targetSdkVersion 28
versionCode 22
versionName "2.5.1"
versionCode 23
versionName "2.5.2"

javaCompileOptions {
annotationProcessorOptions {
Expand Down
18 changes: 2 additions & 16 deletions app/src/main/java/me/anon/controller/adapter/PlantAdapter.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import android.content.Context;
import android.content.Intent;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.text.Html;
import android.view.LayoutInflater;
Expand Down Expand Up @@ -137,7 +138,7 @@ public void setPlants(List<Plant> plants)
@Override public void onClick(View v)
{
Intent details = new Intent(v.getContext(), PlantDetailsActivity.class);
details.putExtra("plant_index", PlantManager.getInstance().getPlants().indexOf(plant));
details.putExtra("plant_index", plants.indexOf(plant));
v.getContext().startActivity(details);
}
});
Expand All @@ -151,22 +152,7 @@ public void setPlants(List<Plant> plants)

@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)
Expand Down
9 changes: 7 additions & 2 deletions app/src/main/java/me/anon/grow/MainActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -83,8 +83,13 @@ public NavigationView getNavigation()
}
else
{
navigation.getMenu().findItem(100 + defaultGarden).setChecked(true);
onNavigationItemSelected(navigation.getMenu().findItem(100 + defaultGarden));
MenuItem item = navigation.getMenu().findItem(100 + defaultGarden);

if (item != null)
{
item.setChecked(true);
onNavigationItemSelected(item);
}
}
}
else
Expand Down
8 changes: 8 additions & 0 deletions app/src/main/java/me/anon/grow/PlantSelectActivity.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package me.anon.grow;

import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.preference.PreferenceManager;
Expand Down Expand Up @@ -55,6 +56,13 @@ public class PlantSelectActivity extends BaseActivity
configureAndFinish(plantIndex.get(0), showImage);
}
});
dialogFragment.setOnDismissListener(new DialogInterface.OnDismissListener()
{
@Override public void onDismiss(DialogInterface dialog)
{
finish();
}
});
dialogFragment.show(getFragmentManager(), null);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,8 +61,9 @@ public AddAdditiveDialogFragment()
Views.inject(this, view);

final Unit selectedUnit = Unit.getSelectedMeasurementUnit(getActivity());
final Unit deliveryUnit = Unit.getSelectedDeliveryUnit(getActivity());

amount.setHint(selectedUnit.getLabel());
amount.setHint(selectedUnit.getLabel() + "/" + deliveryUnit.getLabel());

if (additive != null)
{
Expand Down
15 changes: 8 additions & 7 deletions app/src/main/java/me/anon/grow/fragment/EventListFragment.java
Original file line number Diff line number Diff line change
Expand Up @@ -224,7 +224,7 @@ else if (requestCode == 3)
}
}

@Override public void onSnackBarAction(Object o)
@Override public void onSnackBarAction(View v)
{
plant.getActions().remove(action);
PlantManager.getInstance().upsert(plantIndex, plant);
Expand Down Expand Up @@ -265,7 +265,7 @@ else if (requestCode == 3)
}
}

@Override public void onSnackBarAction(Object o)
@Override public void onSnackBarAction(View v)
{
PlantManager.getInstance().getPlants().get(plantIndex).getActions().remove(PlantManager.getInstance().getPlants().get(plantIndex).getActions().size() - 1);
PlantManager.getInstance().save();
Expand All @@ -278,6 +278,7 @@ else if (requestCode == 3)
@Override public void onActionCopy(final Action action)
{
PlantSelectDialogFragment dialogFragment = new PlantSelectDialogFragment(true);
dialogFragment.setDisabled(plantIndex);
dialogFragment.setOnDialogActionListener(new PlantSelectDialogFragment.OnDialogActionListener()
{
@Override public void onDialogAccept(final ArrayList<Integer> indexes, boolean showImage)
Expand Down Expand Up @@ -313,7 +314,7 @@ else if (requestCode == 3)
}
}

@Override public void onSnackBarAction(Object o)
@Override public void onSnackBarAction(View v)
{
for (int plantIndex = 0; plantIndex < indexes.size(); plantIndex++)
{
Expand Down Expand Up @@ -376,7 +377,7 @@ else if (action instanceof NoteAction)
}
}

@Override public void onSnackBarAction(Object o)
@Override public void onSnackBarAction(View v)
{
plant.getActions().set(originalIndex, action);
PlantManager.getInstance().upsert(plantIndex, plant);
Expand Down Expand Up @@ -418,7 +419,7 @@ else if (action instanceof EmptyAction)
}
}

@Override public void onSnackBarAction(Object o)
@Override public void onSnackBarAction(View v)
{
plant.getActions().set(originalIndex, action);
PlantManager.getInstance().upsert(plantIndex, plant);
Expand Down Expand Up @@ -466,7 +467,7 @@ else if (action instanceof StageChange)
}
}

@Override public void onSnackBarAction(Object o)
@Override public void onSnackBarAction(View v)
{
plant.getActions().set(originalIndex, action);
PlantManager.getInstance().upsert(plantIndex, plant);
Expand Down Expand Up @@ -506,7 +507,7 @@ else if (action instanceof StageChange)
}
}

@Override public void onSnackBarAction(Object o)
@Override public void onSnackBarAction(View v)
{
plant.getActions().add(originalIndex, action);
setActions();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -201,13 +201,17 @@ private void forceHideKeyboard(ViewGroup view)
String stageDayStr = "";
if (lastChange != null)
{
stageDayStr = " – ";
int totalDays = (int)TimeHelper.toDays(Math.abs(date.getTime() - plant.getPlantDate()));
stageDayStr += (totalDays == 0 ? 1 : totalDays);

int currentDays = (int)TimeHelper.toDays(Math.abs(currentChange.getDate() - lastChange.getDate()));
currentDays = (currentDays == 0 ? 1 : currentDays);
stageDayStr += " [" + currentDays + lastChange.getNewStage().getPrintString().substring(0, 1).toLowerCase() + "]";
stageDayStr += "/" + currentDays + lastChange.getNewStage().getPrintString().substring(0, 1).toLowerCase();
}

String dateStr = dateFormat.format(date) + " " + timeFormat.format(date);
((TextView)imageLayout.findViewById(R.id.taken)).setText(Html.fromHtml("<b>Image taken</b>: " + dateStr + stageDayStr + " (" + new DateRenderer().timeAgo(date.getTime()).formattedDate + " ago)"));
((TextView)imageLayout.findViewById(R.id.taken)).setText(Html.fromHtml("<b>Taken</b>: " + dateStr + stageDayStr + " (" + new DateRenderer().timeAgo(date.getTime()).formattedDate + " ago)"));

try
{
Expand Down
28 changes: 25 additions & 3 deletions app/src/main/java/me/anon/grow/fragment/PinDialogFragment.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,9 @@
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.text.Editable;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.view.LayoutInflater;
import android.view.View;
import android.view.WindowManager;
Expand Down Expand Up @@ -69,9 +71,9 @@ public PinDialogFragment(){}
{
@Override public void onClick(DialogInterface dialog, int which)
{
if (onDialogConfirmed != null)
if (onDialogConfirmed != null && !TextUtils.isEmpty(input.getText()))
{
onDialogConfirmed.onDialogConfirmed(TextUtils.isEmpty(input.getText()) ? null : input.getText().toString());
onDialogConfirmed.onDialogConfirmed(input.getText().toString());
}
}
});
Expand All @@ -86,7 +88,27 @@ public PinDialogFragment(){}
}
});

return dialog.create();
final Dialog show = dialog.create();
show.setOnShowListener(new DialogInterface.OnShowListener()
{
@Override public void onShow(DialogInterface dialog)
{
((AlertDialog)show).getButton(DialogInterface.BUTTON_POSITIVE).setEnabled(false);
input.addTextChangedListener(new TextWatcher()
{
@Override public void beforeTextChanged(CharSequence s, int start, int count, int after){}
@Override public void onTextChanged(CharSequence s, int start, int before, int count){}

@Override public void afterTextChanged(Editable s)
{
((AlertDialog)show).getButton(DialogInterface.BUTTON_POSITIVE).setEnabled(s.length() > 0);
}
});

}
});

return show;
}

@Override public void onCancel(DialogInterface dialog)
Expand Down
83 changes: 52 additions & 31 deletions app/src/main/java/me/anon/grow/fragment/PlantDetailsFragment.java
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,8 @@

import com.esotericsoftware.kryo.Kryo;

import org.jetbrains.annotations.NotNull;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
Expand Down Expand Up @@ -343,7 +345,7 @@ private void setUi()
}
}

@Override public void onSnackBarAction(Object o)
@Override public void onSnackBarAction(View v)
{
plant.getActions().remove(action);
PlantManager.getInstance().upsert(plantIndex, plant);
Expand Down Expand Up @@ -439,10 +441,12 @@ private void setUi()
new File(plant.getImages().get(plant.getImages().size() - 1)).delete();
plant.getImages().remove(plant.getImages().size() - 1);
}

PlantManager.getInstance().upsert(plantIndex, plant);
PlantWidgetProvider.triggerUpdateAll(getActivity());
AddonHelper.broadcastImage(getActivity(), plant.getImages().get(plant.getImages().size() - 1), false);
else
{
PlantManager.getInstance().upsert(plantIndex, plant);
PlantWidgetProvider.triggerUpdateAll(getActivity());
AddonHelper.broadcastImage(getActivity(), plant.getImages().get(plant.getImages().size() - 1), false);
}
}
else if (requestCode == 2)
{
Expand All @@ -467,34 +471,51 @@ else if (requestCode == 2)
}
}

@Override public void onSnackBarAction(Object o)
@Override public void onSnackBarAction(View v)
{
final ArrayList<Plant> sortedPlants = PlantManager.getInstance().getSortedPlantList(null);
CharSequence[] plants = new CharSequence[sortedPlants.size()];
for (int index = 0; index < plants.length; index++)
PlantSelectDialogFragment dialog = new PlantSelectDialogFragment(true);
dialog.setDisabled(plantIndex);
dialog.setOnDialogActionListener(new PlantSelectDialogFragment.OnDialogActionListener()
{
plants[index] = sortedPlants.get(index).getName();
}

new AlertDialog.Builder(getActivity())
.setTitle("Select plant")
.setItems(plants, new DialogInterface.OnClickListener()
@Override public void onDialogAccept(ArrayList<Integer> plantIndex, boolean showImage)
{
@Override public void onClick(DialogInterface dialog, int which)
{
final int originalIndex = PlantManager.getInstance().getPlants().indexOf(sortedPlants.get(which));
Water water = (Water)plant.getActions().get(plant.getActions().size() - 1);

Water water = (Water)plant.getActions().get(plant.getActions().size() - 1);
for (Integer index : plantIndex)
{
Water copy = new Kryo().copy(water);
PlantManager.getInstance().getPlants().get(originalIndex).getActions().add(copy);

Intent edit = new Intent(getActivity(), EditWateringActivity.class);
edit.putExtra("plant_index", originalIndex);
edit.putExtra("action_index", PlantManager.getInstance().getPlants().get(originalIndex).getActions().indexOf(copy));
startActivityForResult(edit, 2);
PlantManager.getInstance().getPlants().get(index).getActions().add(copy);
}
})
.show();

SnackBar.show(getActivity(), "Waterings added", new SnackBarListener()
{
@Override public void onSnackBarStarted(Object o)
{
if (getView() != null)
{
FabAnimator.animateUp(getView().findViewById(R.id.fab_complete));
}
}

@Override public void onSnackBarFinished(Object o)
{
if (getView() != null)
{
FabAnimator.animateDown(getView().findViewById(R.id.fab_complete));
}
}

@Override public void onSnackBarAction(@NotNull View o)
{
if (getView() != null)
{
FabAnimator.animateUp(getView().findViewById(R.id.fab_complete));
}
}
});
}
});
dialog.show(getFragmentManager(), "plant-select");
}
});
}
Expand Down Expand Up @@ -576,7 +597,7 @@ else if (requestCode == 4)
}
}

@Override public void onSnackBarAction(Object o)
@Override public void onSnackBarAction(View v)
{
onPhotoClick(null);
}
Expand Down Expand Up @@ -726,7 +747,7 @@ else if (item.getItemId() == R.id.duplicate)
}
}

@Override public void onSnackBarAction(Object o)
@Override public void onSnackBarAction(View v)
{
Intent plantDetails = new Intent(getActivity(), PlantDetailsActivity.class);
plantDetails.putExtra("plant_index", PlantManager.getInstance().getPlants().size() - 1);
Expand Down Expand Up @@ -774,7 +795,7 @@ else if (item.getItemId() == R.id.export)
}
}

@Override public void onSnackBarAction(Object o)
@Override public void onSnackBarAction(View v)
{
plant.getActions().remove(action);
PlantManager.getInstance().upsert(plantIndex, plant);
Expand Down Expand Up @@ -838,7 +859,7 @@ else if (item.getItemId() == R.id.export)
}
}

@Override public void onSnackBarAction(Object o)
@Override public void onSnackBarAction(View v)
{
if (plantIndex > -1)
{
Expand Down
Loading

0 comments on commit 37deb0c

Please sign in to comment.