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 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + +