diff --git a/.idea/.name b/.idea/.name
deleted file mode 100644
index 1fd20b0..0000000
--- a/.idea/.name
+++ /dev/null
@@ -1 +0,0 @@
-My Costs
\ No newline at end of file
diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index 261ec28..0f32ff6 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -13,6 +13,7 @@
+
diff --git a/.idea/misc.xml b/.idea/misc.xml
index d3efc26..2d3f4db 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -1,8 +1,5 @@
-
-
-
@@ -27,17 +24,7 @@
-
-
-
-
-
-
-
-
-
-
-
+
diff --git a/.idea/modules.xml b/.idea/modules.xml
index b8b99b7..ed716cb 100644
--- a/.idea/modules.xml
+++ b/.idea/modules.xml
@@ -2,7 +2,7 @@
-
+
diff --git a/app/build.gradle b/app/build.gradle
index a612d6c..72df4f0 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,15 +1,14 @@
apply plugin: 'com.android.application'
-apply plugin: 'com.neenbedankt.android-apt'
apply from: "${project.rootDir}/QA/quality.gradle"
android {
- compileSdkVersion 23
- buildToolsVersion "23.0.2"
+ compileSdkVersion 26
+ buildToolsVersion '26.0.1'
defaultConfig {
applicationId "com.kodelabs.mycosts"
minSdkVersion 15
- targetSdkVersion 23
+ targetSdkVersion 26
versionCode 1
versionName "1.0"
}
@@ -28,9 +27,10 @@ dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
// general
- compile 'com.android.support:appcompat-v7:23.1.1'
- compile 'com.android.support:design:23.1.1'
- compile 'com.jakewharton:butterknife:7.0.1'
+ compile 'com.android.support:appcompat-v7:26.0.0'
+ compile 'com.android.support:design:26.0.0'
+ compile 'com.jakewharton:butterknife:8.8.0'
+ annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.0'
compile 'com.jakewharton.timber:timber:4.1.0'
// inspection
@@ -38,23 +38,23 @@ dependencies {
compile 'com.facebook.stetho:stetho-okhttp3:1.3.0'
// network
- compile 'com.squareup.retrofit2:retrofit:2.0.0-beta4'
- compile 'com.squareup.retrofit2:converter-gson:+'
- compile 'com.squareup.okhttp3:logging-interceptor:3.0.1'
+ compile 'com.squareup.retrofit2:retrofit:2.3.0'
+ compile 'com.squareup.retrofit2:converter-gson:2.3.0'
+ compile 'com.squareup.okhttp3:logging-interceptor:3.4.1'
// database
- apt "com.github.Raizlabs.DBFlow:dbflow-processor:${dbflow_version}"
+ annotationProcessor "com.github.Raizlabs.DBFlow:dbflow-processor:${dbflow_version}"
compile "com.github.Raizlabs.DBFlow:dbflow-core:${dbflow_version}"
compile "com.github.Raizlabs.DBFlow:dbflow:${dbflow_version}"
// material design
- compile 'com.android.support:cardview-v7:23.1.1'
- compile 'com.android.support:recyclerview-v7:23.1.1'
+ compile 'com.android.support:cardview-v7:26.0.0'
+ compile 'com.android.support:recyclerview-v7:26.0.0'
compile('com.github.ozodrukh:CircularReveal:1.1.1@aar') {
transitive = true;
}
// tests
testCompile 'junit:junit:4.12'
- testCompile "org.mockito:mockito-core:1.+"
+ testCompile "org.mockito:mockito-core:1.10.19"
}
diff --git a/app/src/main/java/com/kodelabs/mycosts/presentation/ui/activities/AbstractCostActivity.java b/app/src/main/java/com/kodelabs/mycosts/presentation/ui/activities/AbstractCostActivity.java
index fa4f43c..c492c62 100644
--- a/app/src/main/java/com/kodelabs/mycosts/presentation/ui/activities/AbstractCostActivity.java
+++ b/app/src/main/java/com/kodelabs/mycosts/presentation/ui/activities/AbstractCostActivity.java
@@ -18,7 +18,7 @@
import java.util.Date;
-import butterknife.Bind;
+import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import io.codetail.widget.RevealFrameLayout;
@@ -30,29 +30,23 @@ public abstract class AbstractCostActivity extends AppCompatActivity
implements DatePickerDialog.OnDateSetListener {
- @Bind(R.id.reveal_layout)
+ protected Date mSelectedDate;
+ protected String mDescription;
+ protected String mCategory;
+ protected double mAmount;
+ @BindView(R.id.reveal_layout)
RevealFrameLayout mRevealLayout;
-
- @Bind(R.id.toolbar)
+ @BindView(R.id.toolbar)
Toolbar mToolbar;
-
- @Bind(R.id.input_date)
+ @BindView(R.id.input_date)
TextView mDateTextView;
-
- @Bind(R.id.input_amount)
+ @BindView(R.id.input_amount)
EditText mAmountEditText;
-
- @Bind(R.id.input_description)
+ @BindView(R.id.input_description)
EditText mDescriptionEditText;
-
- @Bind(R.id.input_cost_category)
+ @BindView(R.id.input_cost_category)
Spinner mCategorySpinner;
- protected Date mSelectedDate;
- protected String mDescription;
- protected String mCategory;
- protected double mAmount;
-
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
diff --git a/app/src/main/java/com/kodelabs/mycosts/presentation/ui/activities/MainActivity.java b/app/src/main/java/com/kodelabs/mycosts/presentation/ui/activities/MainActivity.java
index c0062ac..4ea37c1 100644
--- a/app/src/main/java/com/kodelabs/mycosts/presentation/ui/activities/MainActivity.java
+++ b/app/src/main/java/com/kodelabs/mycosts/presentation/ui/activities/MainActivity.java
@@ -27,7 +27,7 @@
import java.util.List;
-import butterknife.Bind;
+import butterknife.BindView;
import butterknife.ButterKnife;
import io.codetail.widget.RevealFrameLayout;
import timber.log.Timber;
@@ -38,10 +38,10 @@ public class MainActivity extends AppCompatActivity implements MainPresenter.Vie
public static final int EDIT_COST_REQUEST = 0;
- @Bind(R.id.expenses_list)
+ @BindView(R.id.expenses_list)
RecyclerView mRecyclerView;
- @Bind(R.id.reveal_layout)
+ @BindView(R.id.reveal_layout)
RevealFrameLayout mRevealLayout;
private MainPresenter mMainPresenter;
diff --git a/app/src/main/java/com/kodelabs/mycosts/presentation/ui/adapters/CostItemAdapter.java b/app/src/main/java/com/kodelabs/mycosts/presentation/ui/adapters/CostItemAdapter.java
index f4c7b0b..084351c 100644
--- a/app/src/main/java/com/kodelabs/mycosts/presentation/ui/adapters/CostItemAdapter.java
+++ b/app/src/main/java/com/kodelabs/mycosts/presentation/ui/adapters/CostItemAdapter.java
@@ -21,7 +21,7 @@
import java.util.List;
import java.util.Set;
-import butterknife.Bind;
+import butterknife.BindView;
import butterknife.ButterKnife;
/**
@@ -30,86 +30,12 @@
public class CostItemAdapter extends RecyclerView.Adapter implements RecyclerViewClickListener {
- private enum ViewType {
- CONTRACTED_CARD, EXPANDED_CARD
- }
-
+ public final MainPresenter.View mView;
private List mCostList;
- private Context mContext;
+ private Context mContext;
private Set mSelectedItems;
- public final MainPresenter.View mView;
-
- public static class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
-
- @Bind(R.id.cost_item_title)
- public TextView mTitle;
-
- @Bind(R.id.cost_item_total_value)
- public TextView mTotalCost;
-
- private RecyclerViewClickListener mListener;
-
- public void setup(DailyTotalCost dailyTotalCost) {
- Context context = mTitle.getContext();
-
- final String dateText = DateUtils.dateToText(context, dailyTotalCost.getDate());
- final String title = String.format(context.getString(R.string.total_expenses), dateText);
- mTitle.setText(title);
- mTotalCost.setText(String.valueOf(dailyTotalCost.getTotalCost()) + "$");
- }
-
- @Override
- public void onClick(View v) {
- mListener.onClickView(getAdapterPosition());
- }
-
- public ViewHolder(View v, final RecyclerViewClickListener listener) {
- super(v);
- ButterKnife.bind(this, v);
- v.setOnClickListener(this);
- mListener = listener;
- }
- }
-
- public static class ExpandedViewHolder extends RecyclerView.ViewHolder
- implements View.OnClickListener, IndividualCostViewClickListener {
-
- @Bind(R.id.card_expanded_costview)
- public ExpandedCostView mExpandedCostView;
-
- private RecyclerViewClickListener mListener;
-
- @Override
- public void onClickDelete(long costId) {
- mListener.onClickDelete(getAdapterPosition(), costId);
- }
-
- @Override
- public void onClickEdit(long costId) {
- mListener.onClickEdit(getAdapterPosition(), costId);
- }
-
- @Override
- public void onClick(View v) {
- mListener.onClickView(getAdapterPosition());
- }
-
- public ExpandedViewHolder(View v, final RecyclerViewClickListener listener) {
- super(v);
- ButterKnife.bind(this, v);
- v.setOnClickListener(this);
-
- // this listener is our adapter
- mListener = listener;
-
- // set a listener for edit, delete calls
- mExpandedCostView.setIndividualCostViewClickListener(this);
- }
- }
-
-
public CostItemAdapter(MainPresenter.View view, Context context) {
mCostList = new ArrayList<>();
mView = view;
@@ -198,4 +124,76 @@ public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int position) {
public int getItemCount() {
return mCostList.size();
}
+
+ private enum ViewType {
+ CONTRACTED_CARD, EXPANDED_CARD
+ }
+
+ public static class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
+
+ @BindView(R.id.cost_item_title)
+ public TextView mTitle;
+
+ @BindView(R.id.cost_item_total_value)
+ public TextView mTotalCost;
+
+ private RecyclerViewClickListener mListener;
+
+ public ViewHolder(View v, final RecyclerViewClickListener listener) {
+ super(v);
+ ButterKnife.bind(this, v);
+ v.setOnClickListener(this);
+ mListener = listener;
+ }
+
+ public void setup(DailyTotalCost dailyTotalCost) {
+ Context context = mTitle.getContext();
+
+ final String dateText = DateUtils.dateToText(context, dailyTotalCost.getDate());
+ final String title = String.format(context.getString(R.string.total_expenses), dateText);
+ mTitle.setText(title);
+ mTotalCost.setText(String.valueOf(dailyTotalCost.getTotalCost()) + "$");
+ }
+
+ @Override
+ public void onClick(View v) {
+ mListener.onClickView(getAdapterPosition());
+ }
+ }
+
+ public static class ExpandedViewHolder extends RecyclerView.ViewHolder
+ implements View.OnClickListener, IndividualCostViewClickListener {
+
+ @BindView(R.id.card_expanded_costview)
+ public ExpandedCostView mExpandedCostView;
+
+ private RecyclerViewClickListener mListener;
+
+ public ExpandedViewHolder(View v, final RecyclerViewClickListener listener) {
+ super(v);
+ ButterKnife.bind(this, v);
+ v.setOnClickListener(this);
+
+ // this listener is our adapter
+ mListener = listener;
+
+ // set a listener for edit, delete calls
+ mExpandedCostView.setIndividualCostViewClickListener(this);
+ }
+
+ @Override
+ public void onClickDelete(long costId) {
+ mListener.onClickDelete(getAdapterPosition(), costId);
+ }
+
+ @Override
+ public void onClickEdit(long costId) {
+ mListener.onClickEdit(getAdapterPosition(), costId);
+ }
+
+ @Override
+ public void onClick(View v) {
+ mListener.onClickView(getAdapterPosition());
+ }
+ }
}
diff --git a/app/src/main/java/com/kodelabs/mycosts/presentation/ui/customviews/CostItemView.java b/app/src/main/java/com/kodelabs/mycosts/presentation/ui/customviews/CostItemView.java
index e19edcd..1cc5c35 100644
--- a/app/src/main/java/com/kodelabs/mycosts/presentation/ui/customviews/CostItemView.java
+++ b/app/src/main/java/com/kodelabs/mycosts/presentation/ui/customviews/CostItemView.java
@@ -14,7 +14,7 @@
import com.kodelabs.mycosts.domain.model.Cost;
import com.kodelabs.mycosts.presentation.ui.listeners.IndividualCostViewClickListener;
-import butterknife.Bind;
+import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
@@ -23,16 +23,16 @@
*/
public class CostItemView extends RelativeLayout implements OnMenuItemClickListener {
- @Bind(R.id.cost_item_title)
+ @BindView(R.id.cost_item_title)
TextView mCategoryView;
- @Bind(R.id.cost_item_total_value)
+ @BindView(R.id.cost_item_total_value)
TextView mValueView;
- @Bind(R.id.cost_item_description)
+ @BindView(R.id.cost_item_description)
TextView mDescriptionView;
- @Bind(R.id.button_menu)
+ @BindView(R.id.button_menu)
ImageButton mMenuButton;
private IndividualCostViewClickListener mCostViewClickListener;
diff --git a/app/src/main/java/com/kodelabs/mycosts/presentation/ui/customviews/ExpandedCostView.java b/app/src/main/java/com/kodelabs/mycosts/presentation/ui/customviews/ExpandedCostView.java
index 393fba7..76e1656 100644
--- a/app/src/main/java/com/kodelabs/mycosts/presentation/ui/customviews/ExpandedCostView.java
+++ b/app/src/main/java/com/kodelabs/mycosts/presentation/ui/customviews/ExpandedCostView.java
@@ -19,7 +19,7 @@
import java.util.Date;
import java.util.List;
-import butterknife.Bind;
+import butterknife.BindView;
import butterknife.ButterKnife;
/**
@@ -27,13 +27,13 @@
*/
public class ExpandedCostView extends CardView {
- @Bind(R.id.cost_item_title)
+ @BindView(R.id.cost_item_title)
TextView mTitle;
- @Bind(R.id.cost_item_total_value)
+ @BindView(R.id.cost_item_total_value)
TextView mValue;
- @Bind(R.id.layout_individual_cost_items)
+ @BindView(R.id.layout_individual_cost_items)
LinearLayout mLinearLayout;
@Nullable
diff --git a/app/src/main/java/com/kodelabs/mycosts/sync/SyncAdapter.java b/app/src/main/java/com/kodelabs/mycosts/sync/SyncAdapter.java
index 1eee50c..d080f93 100644
--- a/app/src/main/java/com/kodelabs/mycosts/sync/SyncAdapter.java
+++ b/app/src/main/java/com/kodelabs/mycosts/sync/SyncAdapter.java
@@ -39,6 +39,25 @@ public class SyncAdapter extends AbstractThreadedSyncAdapter {
private CostRepository mCostRepository;
private List mUnsyncedCosts;
+ private Callback mResponseCallback = new Callback() {
+ @Override
+ public void onResponse(Call call, Response response) {
+ Timber.i("UPLOAD SUCCESS: %d", response.code());
+
+ if (response.isSuccessful()) {
+ mCostRepository.markSynced(mUnsyncedCosts);
+ }
+ }
+
+ @Override
+ public void onFailure(Call call, Throwable t) {
+ Timber.e("UPLOAD FAIL");
+ t.printStackTrace();
+
+ // try to sync again
+ SyncResult syncResult = new SyncResult();
+ }
+ };
public SyncAdapter(Context context, boolean autoInitialize) {
super(context, autoInitialize);
@@ -69,27 +88,6 @@ public static void triggerSync(Context context) {
ContentResolver.requestSync(account, context.getString(R.string.stub_content_authority), settingsBundle);
}
-
- private Callback mResponseCallback = new Callback() {
- @Override
- public void onResponse(Call call, Response response) {
- Timber.i("UPLOAD SUCCESS: %d", response.code());
-
- if (response.isSuccess()) {
- mCostRepository.markSynced(mUnsyncedCosts);
- }
- }
-
- @Override
- public void onFailure(Call call, Throwable t) {
- Timber.e("UPLOAD FAIL");
- t.printStackTrace();
-
- // try to sync again
- SyncResult syncResult = new SyncResult();
- }
- };
-
@Override
public void onPerformSync(Account account, Bundle extras, String authority, ContentProviderClient provider,
SyncResult syncResult) {
@@ -117,7 +115,7 @@ public void onPerformSync(Account account, Bundle extras, String authority, Cont
Timber.i("UPLOAD SUCCESS: %d", response.code());
// everything went well, mark local cost items as synced
- if (response.isSuccess()) {
+ if (response.isSuccessful()) {
mCostRepository.markSynced(mUnsyncedCosts);
}
diff --git a/build.gradle b/build.gradle
index 2974c8e..2ff6984 100644
--- a/build.gradle
+++ b/build.gradle
@@ -5,10 +5,9 @@ buildscript {
jcenter()
}
dependencies {
- classpath 'com.android.tools.build:gradle:1.5.0'
+ classpath 'com.android.tools.build:gradle:3.0.0-alpha8'
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
-
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
@@ -18,8 +17,9 @@ allprojects {
repositories {
jcenter()
maven {
- url "https://jitpack.io"
+ url "https://maven.google.com"
}
+ maven { url "https://jitpack.io" }
}
}
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index f23df6e..2b30c4d 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
-#Wed Oct 21 11:34:03 PDT 2015
+#Mon Jul 31 17:57:11 MST 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-milestone-1-all.zip