diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 493c66a..bfe24b9 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -12,13 +12,18 @@
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
+
+
diff --git a/app/src/main/java/me/gilo/wc/adapter/CouponAdapter.java b/app/src/main/java/me/gilo/wc/adapter/CouponAdapter.java
new file mode 100644
index 0000000..33e3f5f
--- /dev/null
+++ b/app/src/main/java/me/gilo/wc/adapter/CouponAdapter.java
@@ -0,0 +1,34 @@
+package me.gilo.wc.adapter;
+
+import android.support.v7.widget.RecyclerView;
+import android.view.LayoutInflater;
+import android.view.ViewGroup;
+import me.gilo.wc.R;
+import me.gilo.wc.adapter.viewholder.CouponViewHolder;
+import me.gilo.woodroid.models.Coupon;
+
+import java.util.List;
+
+public class CouponAdapter extends RecyclerView.Adapter {
+ private List coupons;
+
+ public CouponAdapter(List coupons) {
+ this.coupons = coupons;
+ }
+
+ @Override
+ public CouponViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
+ return new CouponViewHolder(parent.getContext(), LayoutInflater.from(parent.getContext()).inflate(R.layout.single_coupon_item, parent, false));
+ }
+
+ @Override
+ public void onBindViewHolder(CouponViewHolder holder, int position) {
+ holder.renderView(coupons.get(position));
+ }
+
+
+ @Override
+ public int getItemCount() {
+ return coupons.size() == 0 ? 0 : coupons.size();
+ }
+}
diff --git a/app/src/main/java/me/gilo/wc/adapter/viewholder/CouponViewHolder.kt b/app/src/main/java/me/gilo/wc/adapter/viewholder/CouponViewHolder.kt
new file mode 100644
index 0000000..b418963
--- /dev/null
+++ b/app/src/main/java/me/gilo/wc/adapter/viewholder/CouponViewHolder.kt
@@ -0,0 +1,23 @@
+package me.gilo.wc.adapter.viewholder
+
+import android.content.Context
+import android.support.v7.widget.RecyclerView
+import android.text.Html
+import android.view.View
+import android.widget.TextView
+import me.gilo.wc.R
+import me.gilo.woodroid.models.Coupon
+
+class CouponViewHolder(val context: Context, itemView: View) :
+ RecyclerView.ViewHolder(itemView) {
+
+ fun renderView(coupon: Coupon) {
+ val tvTitle = itemView.findViewById(R.id.tvTitle)
+ val tvDescription = itemView.findViewById(R.id.tvDescription)
+
+ tvTitle.text = coupon.code.toUpperCase()
+ tvDescription.text = Html.fromHtml(coupon.description)
+ }
+
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/me/gilo/wc/adapter/viewholder/MenuViewHolder.java b/app/src/main/java/me/gilo/wc/adapter/viewholder/MenuViewHolder.java
index 0562eae..55aa6df 100644
--- a/app/src/main/java/me/gilo/wc/adapter/viewholder/MenuViewHolder.java
+++ b/app/src/main/java/me/gilo/wc/adapter/viewholder/MenuViewHolder.java
@@ -1,14 +1,12 @@
package me.gilo.wc.adapter.viewholder;
-import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.support.v7.widget.RecyclerView;
import android.view.View;
-import android.widget.ImageView;
import android.widget.TextView;
import me.gilo.wc.R;
-import me.gilo.wc.ui.CouponActivity;
+import me.gilo.wc.ui.coupon.CouponActivity;
import me.gilo.wc.ui.ShopActivity;
public class MenuViewHolder extends RecyclerView.ViewHolder {
diff --git a/app/src/main/java/me/gilo/wc/adapter/viewholder/ProductViewHolder.kt b/app/src/main/java/me/gilo/wc/adapter/viewholder/ProductViewHolder.kt
index f7b12df..d7e6121 100644
--- a/app/src/main/java/me/gilo/wc/adapter/viewholder/ProductViewHolder.kt
+++ b/app/src/main/java/me/gilo/wc/adapter/viewholder/ProductViewHolder.kt
@@ -1,7 +1,6 @@
package me.gilo.wc.adapter.viewholder
import android.content.Context
-import android.content.Intent
import android.support.v7.widget.RecyclerView
import android.text.Html
import android.view.View
@@ -9,8 +8,6 @@ import android.widget.ImageView
import android.widget.TextView
import com.squareup.picasso.Picasso
import me.gilo.wc.R
-import me.gilo.wc.ui.CouponActivity
-import me.gilo.wc.ui.ShopActivity
import me.gilo.woodroid.models.Product
class ProductViewHolder(val context: Context, itemView: View) :
diff --git a/app/src/main/java/me/gilo/wc/ui/BaseActivity.kt b/app/src/main/java/me/gilo/wc/ui/BaseActivity.kt
index 89cbc6e..27dfdb7 100644
--- a/app/src/main/java/me/gilo/wc/ui/BaseActivity.kt
+++ b/app/src/main/java/me/gilo/wc/ui/BaseActivity.kt
@@ -1,23 +1,26 @@
package me.gilo.wc.ui
-import android.app.Activity
import android.content.Context
-import android.os.Bundle
-import android.support.design.widget.Snackbar
-import android.support.v7.app.AppCompatActivity;
-import android.support.v7.widget.LinearLayoutManager
-import android.support.v7.widget.RecyclerView
+import android.support.v7.app.AppCompatActivity
import io.github.inflationx.viewpump.ViewPumpContextWrapper
-import me.gilo.wc.R
-
-import kotlinx.android.synthetic.main.activity_menu.*
-import kotlinx.android.synthetic.main.content_menu.*
-import me.gilo.wc.adapter.MenuAdapter
-import java.util.ArrayList
+import me.gilo.wc.ui.state.ProgressDialogFragment
open class BaseActivity : AppCompatActivity() {
+ private lateinit var progressDialog : ProgressDialogFragment
+
override fun attachBaseContext(newBase: Context) {
super.attachBaseContext(ViewPumpContextWrapper.wrap(newBase))
}
+
+ fun showLoading(title: String, message: String) {
+ val manager = supportFragmentManager
+ progressDialog = ProgressDialogFragment.newInstance(title, message)
+ progressDialog.isCancelable = false
+ progressDialog.show(manager, "progress")
+ }
+
+ fun stopShowingLoading() {
+ progressDialog.dismiss()
+ }
}
diff --git a/app/src/main/java/me/gilo/wc/ui/CouponActivity.kt b/app/src/main/java/me/gilo/wc/ui/CouponActivity.kt
deleted file mode 100644
index 963bbcd..0000000
--- a/app/src/main/java/me/gilo/wc/ui/CouponActivity.kt
+++ /dev/null
@@ -1,21 +0,0 @@
-package me.gilo.wc.ui
-
-import android.os.Bundle
-import android.support.design.widget.Snackbar
-import android.support.v7.app.AppCompatActivity;
-import me.gilo.wc.R
-
-import kotlinx.android.synthetic.main.activity_coupon.*
-
-class CouponActivity : BaseActivity() {
-
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- setContentView(R.layout.activity_coupon)
- setSupportActionBar(toolbar)
-
- title = "Coupon"
-
- }
-
-}
diff --git a/app/src/main/java/me/gilo/wc/ui/coupon/AddCouponActivity.kt b/app/src/main/java/me/gilo/wc/ui/coupon/AddCouponActivity.kt
new file mode 100644
index 0000000..7e25125
--- /dev/null
+++ b/app/src/main/java/me/gilo/wc/ui/coupon/AddCouponActivity.kt
@@ -0,0 +1,59 @@
+package me.gilo.wc.ui.coupon
+
+import android.os.Bundle
+import kotlinx.android.synthetic.main.activity_add_coupon.*
+import kotlinx.android.synthetic.main.content_add_coupon.*
+import me.gilo.wc.R
+import me.gilo.wc.ui.BaseActivity
+import me.gilo.woodroid.Woocommerce
+import me.gilo.woodroid.models.Coupon
+import retrofit2.Call
+import retrofit2.Callback
+import retrofit2.Response
+
+class AddCouponActivity : BaseActivity() {
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_add_coupon)
+ setSupportActionBar(toolbar)
+
+ bCreate.setOnClickListener { submit() }
+
+ }
+
+ private fun submit() {
+ val code = etCode.text.toString()
+ val description = etDescription.text.toString()
+
+ val coupon = Coupon()
+ coupon.code = code
+ coupon.description = description
+
+ createCoupon(coupon)
+ }
+
+ private fun createCoupon(coupon: Coupon) {
+ showLoading("Loading", "This won't take long")
+
+ val woocommerce = Woocommerce.Builder()
+ .setSiteUrl("http://157.230.131.179")
+ .setApiVersion(Woocommerce.API_V2)
+ .setConsumerKey("ck_26c61abd7eeff238d87dc56585bf26cb2d1a1ec3")
+ .setConsumerSecret("cs_062e8e3a7ae0ce08fdebc0c39f8f834d5e87598e")
+ .build()
+
+ woocommerce.Coupon().create(coupon).enqueue(object : Callback {
+ override fun onResponse(call: Call, response: Response) {
+ val couponResponse = response.body()
+ stopShowingLoading()
+ finish()
+ }
+
+ override fun onFailure(call: Call, t: Throwable) {
+ stopShowingLoading()
+ }
+ })
+ }
+
+}
diff --git a/app/src/main/java/me/gilo/wc/ui/coupon/CouponActivity.kt b/app/src/main/java/me/gilo/wc/ui/coupon/CouponActivity.kt
new file mode 100644
index 0000000..b19619d
--- /dev/null
+++ b/app/src/main/java/me/gilo/wc/ui/coupon/CouponActivity.kt
@@ -0,0 +1,73 @@
+package me.gilo.wc.ui.coupon
+
+import android.content.Intent
+import android.os.Bundle
+import android.support.v7.widget.LinearLayoutManager
+import kotlinx.android.synthetic.main.activity_coupon.*
+import kotlinx.android.synthetic.main.content_coupon.*
+import me.gilo.wc.R
+import me.gilo.wc.adapter.CouponAdapter
+import me.gilo.wc.ui.BaseActivity
+import me.gilo.woodroid.Woocommerce
+import me.gilo.woodroid.models.Coupon
+import retrofit2.Call
+import retrofit2.Callback
+import retrofit2.Response
+import java.util.*
+
+class CouponActivity : BaseActivity() {
+
+
+ lateinit var adapter : CouponAdapter
+ lateinit var coupons: ArrayList
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_coupon)
+ setSupportActionBar(toolbar)
+
+ title = "Coupon"
+
+ val layoutManager = LinearLayoutManager(baseContext, LinearLayoutManager.VERTICAL, false)
+ rvCoupons.layoutManager = layoutManager
+ rvCoupons.isNestedScrollingEnabled = false
+
+ coupons = ArrayList()
+
+ adapter = CouponAdapter(coupons)
+ rvCoupons.adapter = adapter
+
+ coupons()
+
+ fab.setOnClickListener{
+ startActivity(Intent(baseContext, AddCouponActivity::class.java))
+ }
+
+ }
+
+ //Not best practise, but works for purposes of demo
+ private fun coupons() {
+ val woocommerce = Woocommerce.Builder()
+ .setSiteUrl("http://157.230.131.179")
+ .setApiVersion(Woocommerce.API_V2)
+ .setConsumerKey("ck_26c61abd7eeff238d87dc56585bf26cb2d1a1ec3")
+ .setConsumerSecret("cs_062e8e3a7ae0ce08fdebc0c39f8f834d5e87598e")
+ .build()
+
+ woocommerce.Coupon().coupons().enqueue(object : Callback> {
+ override fun onResponse(call: Call>, response: Response>) {
+ val couponResponse = response.body()
+ for (coupon in couponResponse!!) {
+ coupons.add(coupon)
+ }
+
+ adapter.notifyDataSetChanged()
+ }
+
+ override fun onFailure(call: Call>, t: Throwable) {
+
+ }
+ })
+ }
+
+}
diff --git a/app/src/main/java/me/gilo/wc/ui/state/ProgressDialogFragment.java b/app/src/main/java/me/gilo/wc/ui/state/ProgressDialogFragment.java
new file mode 100644
index 0000000..876e981
--- /dev/null
+++ b/app/src/main/java/me/gilo/wc/ui/state/ProgressDialogFragment.java
@@ -0,0 +1,53 @@
+package me.gilo.wc.ui.state;
+
+import android.os.Bundle;
+import android.support.v4.app.DialogFragment;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+import me.gilo.wc.R;
+
+
+public class ProgressDialogFragment extends DialogFragment {
+
+ private static final String ARG_TITLE= "title";
+ private static final String ARG_MESSAGE= "message";
+
+ String title = "";
+ String message = "";
+
+ public ProgressDialogFragment() {
+ Bundle args = new Bundle();
+ args.putString(ARG_TITLE, title);
+ args.putString(ARG_MESSAGE, message);
+ setArguments(args);
+ }
+
+ public static ProgressDialogFragment newInstance(String title, String message) {
+ ProgressDialogFragment fragment = new ProgressDialogFragment();
+ Bundle args = new Bundle();
+ args.putString(ARG_TITLE, title);
+ args.putString(ARG_MESSAGE, message);
+ fragment.setArguments(args);
+ return fragment;
+ }
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ View view = inflater.inflate(R.layout.loading_view, container);
+ TextView tvTitle = view.findViewById(R.id.tvProgress_title);
+ TextView tvMessage = view.findViewById(R.id.tvProgress_message);
+
+ title = getArguments().getString(ARG_TITLE);
+ message = getArguments().getString(ARG_MESSAGE);
+
+
+ tvTitle.setText(title);
+ tvMessage.setText(message);
+
+ return view;
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/baseline_add_black_18dp.png b/app/src/main/res/drawable/baseline_add_black_18dp.png
new file mode 100644
index 0000000..1ac427d
Binary files /dev/null and b/app/src/main/res/drawable/baseline_add_black_18dp.png differ
diff --git a/app/src/main/res/layout/activity_add_coupon.xml b/app/src/main/res/layout/activity_add_coupon.xml
new file mode 100644
index 0000000..ab1dce9
--- /dev/null
+++ b/app/src/main/res/layout/activity_add_coupon.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_coupon.xml b/app/src/main/res/layout/activity_coupon.xml
index 6216bec..e9c5180 100644
--- a/app/src/main/res/layout/activity_coupon.xml
+++ b/app/src/main/res/layout/activity_coupon.xml
@@ -5,7 +5,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
- tools:context=".ui.CouponActivity">
+ tools:context=".ui.coupon.CouponActivity">
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/content_add_coupon.xml b/app/src/main/res/layout/content_add_coupon.xml
new file mode 100644
index 0000000..5789648
--- /dev/null
+++ b/app/src/main/res/layout/content_add_coupon.xml
@@ -0,0 +1,117 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/content_coupon.xml b/app/src/main/res/layout/content_coupon.xml
index 9ebc236..3219115 100644
--- a/app/src/main/res/layout/content_coupon.xml
+++ b/app/src/main/res/layout/content_coupon.xml
@@ -7,6 +7,14 @@
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:showIn="@layout/activity_coupon"
- tools:context=".ui.CouponActivity">
+ tools:context=".ui.coupon.CouponActivity">
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_add_coupon.xml b/app/src/main/res/layout/fragment_add_coupon.xml
new file mode 100644
index 0000000..5789648
--- /dev/null
+++ b/app/src/main/res/layout/fragment_add_coupon.xml
@@ -0,0 +1,117 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/loading_view.xml b/app/src/main/res/layout/loading_view.xml
new file mode 100644
index 0000000..6104cb6
--- /dev/null
+++ b/app/src/main/res/layout/loading_view.xml
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/single_coupon_item.xml b/app/src/main/res/layout/single_coupon_item.xml
new file mode 100644
index 0000000..6046a4b
--- /dev/null
+++ b/app/src/main/res/layout/single_coupon_item.xml
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 2e3feb6..228a998 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -8,5 +8,6 @@
fonts/GT-America-Bold.otf
fonts/GT-America-Medium.otf
fonts/GT-America-Regular.otf
+ AddCouponActivity
diff --git a/woodroid/src/main/java/me/gilo/woodroid/models/Attribute.java b/woodroid/src/main/java/me/gilo/woodroid/models/Attribute.java
index 8382681..46a0151 100644
--- a/woodroid/src/main/java/me/gilo/woodroid/models/Attribute.java
+++ b/woodroid/src/main/java/me/gilo/woodroid/models/Attribute.java
@@ -1,13 +1,12 @@
package me.gilo.woodroid.models;
-import android.os.Parcel;
-
import java.io.Serializable;
public class Attribute implements Serializable {
int id;
private String name;
private String slug;
+ private String type;
private int position;
private boolean visible;
private boolean variation;
@@ -70,4 +69,11 @@ public class Attribute implements Serializable {
this.options = options;
}
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
}