UI design for customer pages
This commit is contained in:
parent
5410926f5a
commit
7fe30becb1
@ -13,6 +13,21 @@
|
||||
android:supportsRtl="true"
|
||||
android:theme="@style/AppTheme"
|
||||
android:usesCleartextTraffic="true">
|
||||
<activity
|
||||
android:name=".ui.customer.ShippingAddressActivity"
|
||||
android:label="@string/title_activity_shipping_address"
|
||||
android:theme="@style/AppTheme.NoActionBar">
|
||||
</activity>
|
||||
<activity
|
||||
android:name=".ui.customer.BillingAddressActivity"
|
||||
android:label="@string/title_activity_billing_address"
|
||||
android:theme="@style/AppTheme.NoActionBar">
|
||||
</activity>
|
||||
<activity
|
||||
android:name=".ui.customer.BasicCustomerDetailsActivity"
|
||||
android:label="@string/title_activity_basic_customer_details"
|
||||
android:theme="@style/AppTheme.NoActionBar">
|
||||
</activity>
|
||||
<activity
|
||||
android:name=".ui.onboarding.UserDetailsActivity"
|
||||
android:label="@string/title_activity_user_details"
|
||||
|
||||
@ -5,6 +5,7 @@ import android.os.Bundle
|
||||
import android.support.v7.app.AppCompatActivity
|
||||
import me.gilo.raison.ui.user.onboarding.SignInActivity
|
||||
import me.gilo.raison.ui.user.onboarding.SignUpActivity
|
||||
import me.gilo.wc.ui.customer.BasicCustomerDetailsActivity
|
||||
import me.gilo.wc.ui.home.HomeActivity
|
||||
import me.gilo.wc.ui.product.ProductActivity
|
||||
|
||||
@ -16,7 +17,7 @@ class MainActivity : AppCompatActivity() {
|
||||
super.onCreate(savedInstanceState)
|
||||
setContentView(R.layout.activity_main)
|
||||
|
||||
startActivity(Intent(baseContext, SignInActivity::class.java))
|
||||
startActivity(Intent(baseContext, BasicCustomerDetailsActivity::class.java))
|
||||
|
||||
// val intent = Intent(baseContext, ProductActivity::class.java)
|
||||
// intent.putExtra("productId", 63)
|
||||
|
||||
@ -5,6 +5,10 @@ import dagger.android.ContributesAndroidInjector;
|
||||
import me.gilo.raison.ui.user.onboarding.SignInActivity;
|
||||
import me.gilo.raison.ui.user.onboarding.SignUpActivity;
|
||||
import me.gilo.wc.MainActivity;
|
||||
import me.gilo.wc.ui.WooDroidActivity;
|
||||
import me.gilo.wc.ui.customer.BasicCustomerDetailsActivity;
|
||||
import me.gilo.wc.ui.customer.BillingAddressActivity;
|
||||
import me.gilo.wc.ui.customer.ShippingAddressActivity;
|
||||
import me.gilo.wc.ui.home.HomeActivity;
|
||||
import me.gilo.wc.ui.product.ProductActivity;
|
||||
import me.gilo.wc.ui.product.ShopActivity;
|
||||
@ -30,4 +34,13 @@ abstract class ActivitiesModule {
|
||||
@ContributesAndroidInjector
|
||||
abstract SignUpActivity contributesSignUpActivity();
|
||||
|
||||
@ContributesAndroidInjector
|
||||
abstract BasicCustomerDetailsActivity contributesBasicCustomerDetailsActivity();
|
||||
|
||||
@ContributesAndroidInjector
|
||||
abstract BillingAddressActivity contributesBillingAddressActivity();
|
||||
|
||||
@ContributesAndroidInjector
|
||||
abstract ShippingAddressActivity contributesShippingAddressActivity();
|
||||
|
||||
}
|
||||
|
||||
@ -8,10 +8,7 @@ import dagger.Module;
|
||||
import dagger.Provides;
|
||||
import dagger.multibindings.IntoMap;
|
||||
import me.gilo.wc.utils.ViewModelFactory;
|
||||
import me.gilo.wc.viewmodels.CategoryViewModel;
|
||||
import me.gilo.wc.viewmodels.ProductViewModel;
|
||||
import me.gilo.wc.viewmodels.ReviewViewModel;
|
||||
import me.gilo.wc.viewmodels.UserViewModel;
|
||||
import me.gilo.wc.viewmodels.*;
|
||||
|
||||
import javax.inject.Named;
|
||||
import javax.inject.Singleton;
|
||||
@ -37,6 +34,11 @@ public abstract class ViewModelModule {
|
||||
@ViewModelKey(CategoryViewModel.class)
|
||||
abstract ViewModel bindCategoryViewModel(CategoryViewModel viewModel);
|
||||
|
||||
@Binds
|
||||
@IntoMap
|
||||
@ViewModelKey(CustomerViewModel.class)
|
||||
abstract ViewModel bindCustomerViewModel(CustomerViewModel viewModel);
|
||||
|
||||
|
||||
@Binds
|
||||
@IntoMap
|
||||
|
||||
73
app/src/main/java/me/gilo/wc/repo/CustomerRepository.java
Normal file
73
app/src/main/java/me/gilo/wc/repo/CustomerRepository.java
Normal file
@ -0,0 +1,73 @@
|
||||
package me.gilo.wc.repo;
|
||||
|
||||
|
||||
import me.gilo.wc.common.WooLiveData;
|
||||
import me.gilo.woodroid.Woocommerce;
|
||||
import me.gilo.woodroid.models.Customer;
|
||||
import me.gilo.woodroid.models.Customer;
|
||||
import me.gilo.woodroid.models.filters.CustomerFilter;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import java.util.List;
|
||||
|
||||
public class CustomerRepository {
|
||||
|
||||
@Inject
|
||||
Woocommerce woocommerce;
|
||||
|
||||
|
||||
@Inject
|
||||
public CustomerRepository() {
|
||||
|
||||
}
|
||||
|
||||
public WooLiveData<Customer> create(Customer customer) {
|
||||
final WooLiveData<Customer> callBack = new WooLiveData();
|
||||
woocommerce.CustomerRepository().create(customer).enqueue(callBack);
|
||||
return callBack;
|
||||
}
|
||||
|
||||
|
||||
public WooLiveData<Customer> customer(int id) {
|
||||
final WooLiveData<Customer> callBack = new WooLiveData();
|
||||
woocommerce.CustomerRepository().customer(id).enqueue(callBack);
|
||||
return callBack;
|
||||
}
|
||||
|
||||
public WooLiveData<List<Customer>> customers() {
|
||||
final WooLiveData<List<Customer>> callBack = new WooLiveData();
|
||||
|
||||
woocommerce.CustomerRepository().customers().enqueue(callBack);
|
||||
|
||||
return callBack;
|
||||
}
|
||||
|
||||
public WooLiveData<List<Customer>> customers(CustomerFilter customerFilter) {
|
||||
final WooLiveData<List<Customer>> callBack = new WooLiveData();
|
||||
woocommerce.CustomerRepository().customers(customerFilter).enqueue(callBack);
|
||||
return callBack;
|
||||
}
|
||||
|
||||
public WooLiveData<Customer> update(int id, Customer customer) {
|
||||
final WooLiveData<Customer> callBack = new WooLiveData();
|
||||
woocommerce.CustomerRepository().update(id, customer).enqueue(callBack);
|
||||
|
||||
return callBack;
|
||||
}
|
||||
|
||||
public WooLiveData<Customer> delete(int id) {
|
||||
final WooLiveData<Customer> callBack = new WooLiveData();
|
||||
woocommerce.CustomerRepository().delete(id).enqueue(callBack);
|
||||
|
||||
return callBack;
|
||||
}
|
||||
|
||||
public WooLiveData<Customer> delete(int id, boolean force) {
|
||||
final WooLiveData<Customer> callBack = new WooLiveData();
|
||||
woocommerce.CustomerRepository().delete(id, force).enqueue(callBack);
|
||||
|
||||
return callBack;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
41
app/src/main/java/me/gilo/wc/ui/WooDroidActivity.kt
Normal file
41
app/src/main/java/me/gilo/wc/ui/WooDroidActivity.kt
Normal file
@ -0,0 +1,41 @@
|
||||
package me.gilo.wc.ui
|
||||
|
||||
import android.arch.lifecycle.ViewModel
|
||||
import android.content.Context
|
||||
import android.os.Bundle
|
||||
import android.support.design.widget.Snackbar
|
||||
import android.support.v7.app.AppCompatActivity
|
||||
import io.github.inflationx.viewpump.ViewPumpContextWrapper
|
||||
import me.gilo.wc.R
|
||||
|
||||
import kotlinx.android.synthetic.main.activity_basic_customer_details.*
|
||||
import me.gilo.raison.ui.user.onboarding.SignInActivity
|
||||
import me.gilo.wc.common.BaseActivity
|
||||
import me.gilo.wc.ui.state.ProgressDialogFragment
|
||||
import me.gilo.wc.viewmodels.CustomerViewModel
|
||||
import me.gilo.wc.viewmodels.UserViewModel
|
||||
import java.util.regex.Matcher
|
||||
import java.util.regex.Pattern
|
||||
|
||||
abstract class WooDroidActivity<T : ViewModel> : BaseActivity() {
|
||||
|
||||
|
||||
abstract var viewModel : T
|
||||
private lateinit var progressDialog: ProgressDialogFragment
|
||||
|
||||
override fun attachBaseContext(newBase: Context) {
|
||||
super.attachBaseContext(ViewPumpContextWrapper.wrap(newBase))
|
||||
}
|
||||
|
||||
private fun showLoading(title: String, message: String) {
|
||||
val manager = supportFragmentManager
|
||||
progressDialog = ProgressDialogFragment.newInstance(title, message)
|
||||
progressDialog.isCancelable = false
|
||||
progressDialog.show(manager, "progress")
|
||||
}
|
||||
|
||||
private fun stopShowingLoading() {
|
||||
progressDialog.dismiss()
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,38 @@
|
||||
package me.gilo.wc.ui.customer
|
||||
|
||||
import android.content.Context
|
||||
import android.os.Bundle
|
||||
import android.support.design.widget.Snackbar
|
||||
import android.support.v7.app.AppCompatActivity
|
||||
import io.github.inflationx.viewpump.ViewPumpContextWrapper
|
||||
import me.gilo.wc.R
|
||||
|
||||
import kotlinx.android.synthetic.main.activity_basic_customer_details.*
|
||||
import me.gilo.raison.ui.user.onboarding.SignInActivity
|
||||
import me.gilo.wc.common.BaseActivity
|
||||
import me.gilo.wc.ui.WooDroidActivity
|
||||
import me.gilo.wc.ui.state.ProgressDialogFragment
|
||||
import me.gilo.wc.viewmodels.CustomerViewModel
|
||||
import me.gilo.wc.viewmodels.UserViewModel
|
||||
import java.util.regex.Matcher
|
||||
import java.util.regex.Pattern
|
||||
|
||||
class BasicCustomerDetailsActivity : WooDroidActivity<CustomerViewModel>() {
|
||||
|
||||
|
||||
override lateinit var viewModel : CustomerViewModel
|
||||
|
||||
override fun attachBaseContext(newBase: Context) {
|
||||
super.attachBaseContext(ViewPumpContextWrapper.wrap(newBase))
|
||||
}
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
setContentView(R.layout.activity_basic_customer_details)
|
||||
|
||||
viewModel = getViewModel(CustomerViewModel::class.java)
|
||||
title = "Basic Details"
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,28 @@
|
||||
package me.gilo.wc.ui.customer
|
||||
|
||||
import android.content.Context
|
||||
import android.os.Bundle
|
||||
import io.github.inflationx.viewpump.ViewPumpContextWrapper
|
||||
import kotlinx.android.synthetic.main.activity_billing_address.*
|
||||
import me.gilo.wc.R
|
||||
import me.gilo.wc.ui.WooDroidActivity
|
||||
import me.gilo.wc.viewmodels.CustomerViewModel
|
||||
|
||||
class BillingAddressActivity : WooDroidActivity<CustomerViewModel>() {
|
||||
|
||||
override lateinit var viewModel : CustomerViewModel
|
||||
|
||||
override fun attachBaseContext(newBase: Context) {
|
||||
super.attachBaseContext(ViewPumpContextWrapper.wrap(newBase))
|
||||
}
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
setContentView(R.layout.activity_billing_address)
|
||||
|
||||
viewModel = getViewModel(CustomerViewModel::class.java)
|
||||
title = "Billing Address"
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,28 @@
|
||||
package me.gilo.wc.ui.customer
|
||||
|
||||
import android.content.Context
|
||||
import android.os.Bundle
|
||||
import io.github.inflationx.viewpump.ViewPumpContextWrapper
|
||||
import kotlinx.android.synthetic.main.activity_shipping_address.*
|
||||
import me.gilo.wc.R
|
||||
import me.gilo.wc.ui.WooDroidActivity
|
||||
import me.gilo.wc.viewmodels.CustomerViewModel
|
||||
|
||||
class ShippingAddressActivity : WooDroidActivity<CustomerViewModel>() {
|
||||
|
||||
override lateinit var viewModel : CustomerViewModel
|
||||
|
||||
override fun attachBaseContext(newBase: Context) {
|
||||
super.attachBaseContext(ViewPumpContextWrapper.wrap(newBase))
|
||||
}
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
setContentView(R.layout.activity_shipping_address)
|
||||
|
||||
viewModel = getViewModel(CustomerViewModel::class.java)
|
||||
title = "Shipping Address"
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,51 @@
|
||||
package me.gilo.wc.viewmodels;
|
||||
|
||||
import android.arch.lifecycle.ViewModel;
|
||||
import me.gilo.wc.common.WooLiveData;
|
||||
import me.gilo.wc.repo.CustomerRepository;
|
||||
import me.gilo.woodroid.models.Customer;
|
||||
import me.gilo.woodroid.models.filters.CustomerFilter;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
public final class CustomerViewModel extends ViewModel {
|
||||
private final CustomerRepository customerRepository;
|
||||
|
||||
@Inject
|
||||
CustomerViewModel(CustomerRepository customerRepository) {
|
||||
this.customerRepository = customerRepository;
|
||||
|
||||
}
|
||||
|
||||
public WooLiveData<Customer> create(Customer customer) {
|
||||
return customerRepository.create(customer);
|
||||
}
|
||||
|
||||
|
||||
public WooLiveData<Customer> customer(int id) {
|
||||
return customerRepository.customer(id);
|
||||
}
|
||||
|
||||
public WooLiveData<List<Customer>> customers() {
|
||||
return customerRepository.customers();
|
||||
}
|
||||
|
||||
public WooLiveData<List<Customer>> customers(CustomerFilter customerFilter) {
|
||||
return customerRepository.customers(customerFilter);
|
||||
}
|
||||
|
||||
public WooLiveData<Customer> update(int id, Customer customer) {
|
||||
return customerRepository.update(id, customer);
|
||||
}
|
||||
|
||||
public WooLiveData<Customer> delete(int id) {
|
||||
return customerRepository.delete(id);
|
||||
}
|
||||
|
||||
public WooLiveData<Customer> delete(int id, boolean force) {
|
||||
return customerRepository.delete(id, force);
|
||||
}
|
||||
|
||||
}
|
||||
12
app/src/main/res/layout/activity_basic_customer_details.xml
Normal file
12
app/src/main/res/layout/activity_basic_customer_details.xml
Normal file
@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<android.support.design.widget.CoordinatorLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
tools:context=".ui.customer.BasicCustomerDetailsActivity">
|
||||
|
||||
<include layout="@layout/customer_basic_details"/>
|
||||
|
||||
</android.support.design.widget.CoordinatorLayout>
|
||||
13
app/src/main/res/layout/activity_billing_address.xml
Normal file
13
app/src/main/res/layout/activity_billing_address.xml
Normal file
@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<android.support.design.widget.CoordinatorLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
tools:context=".ui.customer.BillingAddressActivity">
|
||||
|
||||
<include layout="@layout/customer_billing_address"/>
|
||||
|
||||
|
||||
</android.support.design.widget.CoordinatorLayout>
|
||||
13
app/src/main/res/layout/activity_shipping_address.xml
Normal file
13
app/src/main/res/layout/activity_shipping_address.xml
Normal file
@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<android.support.design.widget.CoordinatorLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
tools:context=".ui.customer.ShippingAddressActivity">
|
||||
|
||||
|
||||
<include layout="@layout/customer_shipping_address"/>
|
||||
|
||||
</android.support.design.widget.CoordinatorLayout>
|
||||
12
app/src/main/res/layout/content_basic_customer_details.xml
Normal file
12
app/src/main/res/layout/content_basic_customer_details.xml
Normal file
@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<android.support.constraint.ConstraintLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
app:layout_behavior="@string/appbar_scrolling_view_behavior"
|
||||
tools:showIn="@layout/activity_basic_customer_details"
|
||||
tools:context=".ui.customer.BasicCustomerDetailsActivity">
|
||||
|
||||
</android.support.constraint.ConstraintLayout>
|
||||
12
app/src/main/res/layout/content_billing_address.xml
Normal file
12
app/src/main/res/layout/content_billing_address.xml
Normal file
@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<android.support.constraint.ConstraintLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
app:layout_behavior="@string/appbar_scrolling_view_behavior"
|
||||
tools:showIn="@layout/activity_billing_address"
|
||||
tools:context=".ui.customer.BillingAddressActivity">
|
||||
|
||||
</android.support.constraint.ConstraintLayout>
|
||||
12
app/src/main/res/layout/content_shipping_address.xml
Normal file
12
app/src/main/res/layout/content_shipping_address.xml
Normal file
@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<android.support.constraint.ConstraintLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
app:layout_behavior="@string/appbar_scrolling_view_behavior"
|
||||
tools:showIn="@layout/activity_shipping_address"
|
||||
tools:context=".ui.customer.ShippingAddressActivity">
|
||||
|
||||
</android.support.constraint.ConstraintLayout>
|
||||
@ -33,5 +33,8 @@
|
||||
<string name="lorem">Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\'s standard dummy text ever since the 1500s</string>
|
||||
<string name="title_activity_my_orders">MyOrdersActivity</string>
|
||||
<string name="title_activity_user_details">UserDetailsActivity</string>
|
||||
<string name="title_activity_basic_customer_details">BasicCustomerDetailsActivity</string>
|
||||
<string name="title_activity_billing_address">BillingAddressActivity</string>
|
||||
<string name="title_activity_shipping_address">ShippingAddressActivity</string>
|
||||
|
||||
</resources>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user