From 16ecdbf92ebf519c3e9b73793e6ab82147cc157c Mon Sep 17 00:00:00 2001 From: garvit984 Date: Fri, 13 Mar 2020 16:15:29 +0530 Subject: [PATCH] Home Fragment, Profile Fragment and Account Fragment --- app/src/main/AndroidManifest.xml | 2 + .../org/mifos/mobile/cn/ui/mifos/Account.kt | 20 +++ .../mobile/cn/ui/mifos/DashboardActivity.kt | 25 ++- .../org/mifos/mobile/cn/ui/mifos/Home.kt | 21 +++ .../org/mifos/mobile/cn/ui/mifos/Main.kt | 71 +++++++++ .../org/mifos/mobile/cn/ui/mifos/Profile.kt | 20 +++ .../org/mifos/mobile/cn/ui/mifos/Test1.kt | 26 ++++ .../org/mifos/mobile/cn/ui/mifos/Transfer.kt | 4 + .../cn/ui/mifos/accounts/AccountsFragment.kt | 2 +- .../CustomerDetailsFragment.kt | 91 +++++------ .../CustomerProfileActivity.kt | 6 +- .../ui/mifos/dashboard/DashboardFragment.kt | 32 +++- .../cn/ui/mifos/passcode/PasscodeActivity.kt | 37 ++++- .../cn/ui/mifos/settings/SettingsFragment.kt | 10 +- .../mifos/mobile/cn/ui/utils/ConstantKeys.kt | 6 +- .../drawable_editable_image_hint.xml | 18 +++ app/src/main/res/drawable-v24/ic_camera.xml | 12 ++ .../main/res/drawable-v24/ic_error_state.xml | 9 ++ .../main/res/drawable-v24/ic_transaction.xml | 5 + app/src/main/res/drawable-v24/profile.png | Bin 0 -> 3800 bytes .../shape_bottom_sheet_dialog_grip.xml | 5 + .../main/res/drawable/bottomview_selector.xml | 6 + app/src/main/res/drawable/gray_box.xml | 17 +++ app/src/main/res/drawable/ic_account.xml | 9 ++ .../res/drawable/ic_add_circle_black_24dp.xml | 9 ++ app/src/main/res/drawable/ic_home.xml | 9 ++ .../main/res/drawable/ic_notifications.xml | 2 +- app/src/main/res/drawable/ic_profile.xml | 9 ++ app/src/main/res/drawable/ic_swap_horiz.xml | 9 ++ app/src/main/res/drawable/round_gray.xml | 9 ++ app/src/main/res/drawable/violet_concave.xml | 9 ++ app/src/main/res/drawable/violet_round.xml | 17 +++ app/src/main/res/layout/activity_home.xml | 41 +++++ .../content_bottom_sheet_account_details.xml | 55 +++++++ app/src/main/res/layout/fragment_account.xml | 120 +++++++++++++++ app/src/main/res/layout/fragment_accounts.xml | 2 +- app/src/main/res/layout/fragment_home.xml | 142 ++++++++++++++++++ app/src/main/res/layout/fragment_profile.xml | 55 +++++++ .../layout/fragment_recent_transactions.xml | 28 +++- app/src/main/res/layout/item_casual_list.xml | 63 ++++++++ app/src/main/res/layout/placeholder_state.xml | 38 +++++ .../res/layout/profile_username_and_image.xml | 58 +++++++ app/src/main/res/layout/toolbar_new.xml | 14 ++ .../main/res/menu/bottom_navigation_main.xml | 31 ++++ app/src/main/res/menu/menu_nav_drawer.xml | 5 + app/src/main/res/values/colors.xml | 19 ++- app/src/main/res/values/dimens.xml | 6 +- app/src/main/res/values/strings.xml | 15 +- app/src/main/res/values/styles.xml | 7 +- build.gradle | 2 +- gradle/wrapper/gradle-wrapper.properties | 4 +- 51 files changed, 1147 insertions(+), 85 deletions(-) create mode 100644 app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/Account.kt create mode 100644 app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/Home.kt create mode 100644 app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/Main.kt create mode 100644 app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/Profile.kt create mode 100644 app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/Test1.kt create mode 100644 app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/Transfer.kt create mode 100644 app/src/main/res/drawable-v24/drawable_editable_image_hint.xml create mode 100644 app/src/main/res/drawable-v24/ic_camera.xml create mode 100644 app/src/main/res/drawable-v24/ic_error_state.xml create mode 100644 app/src/main/res/drawable-v24/ic_transaction.xml create mode 100644 app/src/main/res/drawable-v24/profile.png create mode 100644 app/src/main/res/drawable-v24/shape_bottom_sheet_dialog_grip.xml create mode 100644 app/src/main/res/drawable/bottomview_selector.xml create mode 100644 app/src/main/res/drawable/gray_box.xml create mode 100644 app/src/main/res/drawable/ic_account.xml create mode 100644 app/src/main/res/drawable/ic_add_circle_black_24dp.xml create mode 100644 app/src/main/res/drawable/ic_home.xml create mode 100644 app/src/main/res/drawable/ic_profile.xml create mode 100644 app/src/main/res/drawable/ic_swap_horiz.xml create mode 100644 app/src/main/res/drawable/round_gray.xml create mode 100644 app/src/main/res/drawable/violet_concave.xml create mode 100644 app/src/main/res/drawable/violet_round.xml create mode 100644 app/src/main/res/layout/activity_home.xml create mode 100644 app/src/main/res/layout/content_bottom_sheet_account_details.xml create mode 100644 app/src/main/res/layout/fragment_account.xml create mode 100644 app/src/main/res/layout/fragment_home.xml create mode 100644 app/src/main/res/layout/fragment_profile.xml create mode 100644 app/src/main/res/layout/item_casual_list.xml create mode 100644 app/src/main/res/layout/placeholder_state.xml create mode 100644 app/src/main/res/layout/profile_username_and_image.xml create mode 100644 app/src/main/res/layout/toolbar_new.xml create mode 100644 app/src/main/res/menu/bottom_navigation_main.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index db3b07b5..49d22353 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -4,6 +4,7 @@ + + diff --git a/app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/Account.kt b/app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/Account.kt new file mode 100644 index 00000000..4b159892 --- /dev/null +++ b/app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/Account.kt @@ -0,0 +1,20 @@ +package org.mifos.mobile.cn.ui.mifos + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import org.mifos.mobile.cn.R +import org.mifos.mobile.cn.ui.base.MifosBaseFragment + +class Account : MifosBaseFragment() { + companion object { + fun newInstance(): Account = Account() + } + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle?): View? { + // Inflate the layout for this fragment + getToolbar().setVisibility(View.GONE); + return inflater.inflate(R.layout.fragment_account, container, false) + } +} \ No newline at end of file diff --git a/app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/DashboardActivity.kt b/app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/DashboardActivity.kt index 6895b8e2..5cd897cf 100644 --- a/app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/DashboardActivity.kt +++ b/app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/DashboardActivity.kt @@ -31,12 +31,15 @@ import org.mifos.mobile.cn.ui.mifos.settings.SettingsFragment import org.mifos.mobile.cn.ui.utils.CircularImageView import org.mifos.mobile.cn.ui.utils.Toaster import android.widget.Toast +import com.mifos.mobile.passcode.utils.PasscodePreferencesHelper +import org.mifos.mobile.cn.ui.mifos.passcode.PasscodeActivity +import org.mifos.mobile.cn.ui.utils.ConstantKeys class DashboardActivity : MifosBaseActivity(), View.OnClickListener, NavigationView.OnNavigationItemSelectedListener { @Inject internal lateinit var preferencesHelper: PreferencesHelper - + private var passcodePreferencesHelper: PasscodePreferencesHelper? = null private lateinit var tvUsername: TextView private lateinit var ivCircularUserProfilePicture: CircularImageView private lateinit var ivTextDrawableUserProfilePicture: ImageView @@ -52,7 +55,7 @@ class DashboardActivity : MifosBaseActivity(), View.OnClickListener, NavigationV setupNavigationBar() setToolbarElevation() - replaceFragment(DashboardFragment.newInstance(), false, R.id.container) + replaceFragment(DashboardFragment.newInstance("customer_identifier"), false, R.id.container) } @@ -95,10 +98,6 @@ class DashboardActivity : MifosBaseActivity(), View.OnClickListener, NavigationV val actionBarDrawerToggle = object : ActionBarDrawerToggle(this, drawerLayout, getToolbar(), R.string.open_drawer, R.string.close_drawer) { - override fun onDrawerClosed(drawerView: View) { - super.onDrawerClosed(drawerView) - } - override fun onDrawerOpened(drawerView: View) { super.onDrawerOpened(drawerView) hideKeyboard(drawerView) @@ -160,7 +159,7 @@ class DashboardActivity : MifosBaseActivity(), View.OnClickListener, NavigationV when (item.itemId) { R.id.item_home -> { hideToolbarElevation() - replaceFragment(DashboardFragment.newInstance(), true, R.id.container) + replaceFragment(DashboardFragment.newInstance("customer_identifier"), true, R.id.container) } R.id.item_accounts -> { replaceFragment(CustomerAccountFragment.newInstance(AccountType.DEPOSIT), true, @@ -170,7 +169,17 @@ class DashboardActivity : MifosBaseActivity(), View.OnClickListener, NavigationV R.id.item_logout -> { showLogoutDialog() } - + R.id.item_passcode ->{ + if (this != null) { + passcodePreferencesHelper = PasscodePreferencesHelper(this) + val currentPass: String = passcodePreferencesHelper!!.getPassCode() + passcodePreferencesHelper!!.savePassCode("") + val intent = Intent(this, PasscodeActivity::class.java) + intent.putExtra(ConstantKeys.CURR_PASSWORD, currentPass) + intent.putExtra(ConstantKeys.UPDATE_PASSWORD_KEY, true) + startActivity(intent) + } + } R.id.item_product -> { replaceFragment(ProductFragment.Companion.newInstance(), true, R.id.container) diff --git a/app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/Home.kt b/app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/Home.kt new file mode 100644 index 00000000..ff9eb701 --- /dev/null +++ b/app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/Home.kt @@ -0,0 +1,21 @@ +package org.mifos.mobile.cn.ui.mifos + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import org.mifos.mobile.cn.R +import org.mifos.mobile.cn.ui.Test1 +import org.mifos.mobile.cn.ui.base.MifosBaseFragment + +class Home : MifosBaseFragment() { + companion object { + fun newInstance(): Home = Home() + } + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle?): View? { + // Inflate the layout for this fragment + getToolbar().setVisibility(View.GONE); + return inflater.inflate(R.layout.fragment_home, container, false) + } +} \ No newline at end of file diff --git a/app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/Main.kt b/app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/Main.kt new file mode 100644 index 00000000..0030fa16 --- /dev/null +++ b/app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/Main.kt @@ -0,0 +1,71 @@ +package org.mifos.mobile.cn.ui.mifos + +import android.os.Bundle +import androidx.annotation.NonNull +import androidx.fragment.app.Fragment +import androidx.swiperefreshlayout.widget.SwipeRefreshLayout +import com.google.android.material.bottomnavigation.BottomNavigationView +import org.mifos.mobile.cn.R +import org.mifos.mobile.cn.ui.Test1 +import org.mifos.mobile.cn.ui.base.MifosBaseActivity +import android.view.MenuItem as MenuItem1 + + +class Main : MifosBaseActivity(), BottomNavigationView.OnNavigationItemSelectedListener { + private var bottomNavigationView: BottomNavigationView? = null + private var menuItem = -1 + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_home) + + bottomNavigationView = findViewById(R.id.bottom_navigation) + setupNavigationBar() + bottomNavigationView?.run { setSelectedItemId(R.id.action_home) + } + + + } + + override fun onNavigationItemSelected(item: MenuItem1): Boolean { + clearFragmentBackStack() + setToolbarElevation() + menuItem = item.itemId +navigateFragment(item.itemId,false) + return true + } + private fun setupNavigationBar() { + + bottomNavigationView?.setOnNavigationItemSelectedListener(object : BottomNavigationView.OnNavigationItemSelectedListener { + override fun onNavigationItemSelected(@NonNull item: android.view.MenuItem): Boolean { + navigateFragment(item.itemId, false) + return true + } + }) + + } + override fun onBackPressed() { + val fragment: Fragment? = supportFragmentManager + .findFragmentById(R.id.bottom_navigation_fragment_container) + if (fragment != null && fragment !is Home && fragment.isVisible()) { + navigateFragment(R.id.action_home, true) + return + } + super.onBackPressed() + } + private fun navigateFragment(id: Int, shouldSelect: Boolean) { + if (shouldSelect) { + bottomNavigationView?.setSelectedItemId(id) + } else { + when (id) { + R.id.action_home -> replaceFragment(Home.newInstance(), false, + R.id.bottom_navigation_fragment_container) + R.id.action_acounts -> replaceFragment(Account.newInstance(), false, + R.id.bottom_navigation_fragment_container) + R.id.action_transfer -> replaceFragment(Test1.newInstance(), false, + R.id.bottom_navigation_fragment_container) + R.id.action_profile -> replaceFragment(Profile.newInstance(), false, + R.id.bottom_navigation_fragment_container) + } + } + } +} diff --git a/app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/Profile.kt b/app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/Profile.kt new file mode 100644 index 00000000..9dda09d2 --- /dev/null +++ b/app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/Profile.kt @@ -0,0 +1,20 @@ +package org.mifos.mobile.cn.ui.mifos + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import org.mifos.mobile.cn.R +import org.mifos.mobile.cn.ui.base.MifosBaseFragment + +class Profile : MifosBaseFragment() { + companion object { + fun newInstance(): Profile = Profile() + } + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle?): View? { + // Inflate the layout for this fragment + getToolbar().setVisibility(View.GONE); + return inflater.inflate(R.layout.fragment_profile, container, false) + } +} \ No newline at end of file diff --git a/app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/Test1.kt b/app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/Test1.kt new file mode 100644 index 00000000..16515844 --- /dev/null +++ b/app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/Test1.kt @@ -0,0 +1,26 @@ +package org.mifos.mobile.cn.ui + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment +import kotlinx.android.synthetic.main.toolbar.* +import org.mifos.mobile.cn.R +import org.mifos.mobile.cn.ui.base.MifosBaseFragment +import org.mifos.mobile.cn.ui.mifos.accounts.AccountsFragment +import org.mifos.mobile.cn.ui.mifos.recentTransactions.RecentTransactionsFragment +import org.mifos.mobile.cn.ui.utils.ConstantKeys + +class Test1 : MifosBaseFragment() { + companion object { + fun newInstance(): Test1 = Test1() + } + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle?): View? { + // Inflate the layout for this fragment + setToolbarTitle("Recent Transactions") + getToolbar().setVisibility(View.GONE); + return inflater.inflate(R.layout.fragment_home, container, false) + } +} \ No newline at end of file diff --git a/app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/Transfer.kt b/app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/Transfer.kt new file mode 100644 index 00000000..397c9bb8 --- /dev/null +++ b/app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/Transfer.kt @@ -0,0 +1,4 @@ +package org.mifos.mobile.cn.ui.mifos + +class Transfer { +} \ No newline at end of file diff --git a/app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/accounts/AccountsFragment.kt b/app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/accounts/AccountsFragment.kt index 66d67927..30f51e6a 100644 --- a/app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/accounts/AccountsFragment.kt +++ b/app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/accounts/AccountsFragment.kt @@ -9,6 +9,7 @@ import android.view.View import android.view.ViewGroup import com.github.therajanmaurya.sweeterror.SweetUIErrorHandler import kotlinx.android.synthetic.main.fragment_accounts.* +import kotlinx.android.synthetic.main.layout_exception_handler.* import org.mifos.mobile.cn.R import org.mifos.mobile.cn.data.models.accounts.deposit.DepositAccount import org.mifos.mobile.cn.data.models.accounts.loan.LoanAccount @@ -19,7 +20,6 @@ import org.mifos.mobile.cn.ui.base.MifosBaseFragment import org.mifos.mobile.cn.ui.utils.ConstantKeys import org.mifos.mobile.cn.ui.utils.Network import javax.inject.Inject -import kotlinx.android.synthetic.main.layout_sweet_exception_handler.* import org.mifos.mobile.cn.data.models.CheckboxStatus import org.mifos.mobile.cn.ui.base.OnItemClickListener import org.mifos.mobile.cn.ui.mifos.customerDepositDetails.CustomerDepositDetailsFragment diff --git a/app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/customerDetails/CustomerDetailsFragment.kt b/app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/customerDetails/CustomerDetailsFragment.kt index 507d1ac1..d8cf978c 100644 --- a/app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/customerDetails/CustomerDetailsFragment.kt +++ b/app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/customerDetails/CustomerDetailsFragment.kt @@ -28,44 +28,43 @@ import org.mifos.mobile.cn.ui.views.HeaderView import javax.inject.Inject -class CustomerDetailsFragment : MifosBaseFragment(), AppBarLayout.OnOffsetChangedListener,CustomerDetailsContract.View, View.OnClickListener{ - +class CustomerDetailsFragment : MifosBaseFragment(), AppBarLayout.OnOffsetChangedListener, CustomerDetailsContract.View, View.OnClickListener { @Inject lateinit var customerDetailsPresenter: CustomerDetailsPresenter - private lateinit var rootView : View - private lateinit var customerIdentification : String - private var isHideToolbarView: Boolean = false - private lateinit var collapsingToolbarLayout : CollapsingToolbarLayout - private lateinit var customer : Customer - private lateinit var toolbarHeaderView : HeaderView - private lateinit var floatHeaderView : HeaderView - - companion object { - fun newInstance(identifier: String): CustomerDetailsFragment { - val fragment = CustomerDetailsFragment() - val args = Bundle() - args.putString(ConstantKeys.CUSTOMER_IDENTIFIER,identifier) - fragment.arguments = args - return fragment - - } - } + private lateinit var rootView: View + private lateinit var customerIdentification: String + private var isHideToolbarView: Boolean = false + private lateinit var collapsingToolbarLayout: CollapsingToolbarLayout + private lateinit var customer: Customer + private lateinit var toolbarHeaderView: HeaderView + private lateinit var floatHeaderView: HeaderView + + companion object { + fun newInstance(identifier: String): CustomerDetailsFragment { + val fragment = CustomerDetailsFragment() + val args = Bundle() + args.putString(ConstantKeys.CUSTOMER_IDENTIFIER, identifier) + fragment.arguments = args + return fragment + } + } - override fun onCreate(savedInstanceState: Bundle?){ + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setToolbarTitle(getString(R.string.account_overview)) - if(arguments != null){1 + if (arguments != null) { + 1 customerIdentification = arguments!!.getString(ConstantKeys.CUSTOMER_IDENTIFIER) } } override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { - rootView = inflater.inflate(R.layout.fragment_customer_details,container,false) + rootView = inflater.inflate(R.layout.fragment_customer_details, container, false) (activity as MifosBaseActivity).activityComponent.inject(this) customerDetailsPresenter.attachView(this) @@ -88,12 +87,13 @@ class CustomerDetailsFragment : MifosBaseFragment(), AppBarLayout.OnOffsetChange } + override fun onClick(view: View) { - when(view.id){ + when (view.id) { R.id.ll_deposit_accounts -> { openDepositAccount() } - R.id.ll_loan_accounts-> { + R.id.ll_loan_accounts -> { openLoanAccount() } R.id.ll_activities -> { @@ -117,13 +117,12 @@ class CustomerDetailsFragment : MifosBaseFragment(), AppBarLayout.OnOffsetChange override fun onResume() { super.onResume() - cl_customer_details.visibility = View.GONE - collapsingToolbarLayout.title= " " + cl_customer_details.visibility = View.GONE + collapsingToolbarLayout.title = " " customerDetailsPresenter.loadCustomerDetails(customerIdentification) } - override fun showCustomerDetails(customer: Customer) { this.customer = customer cl_customer_details.visibility = View.VISIBLE @@ -132,10 +131,10 @@ class CustomerDetailsFragment : MifosBaseFragment(), AppBarLayout.OnOffsetChange loadCustomerPortrait() tv_current_status.text = customer.currentState!!.name - StatusUtils.setCustomerStatusIcon(customer.currentState!!,iv_current_status,context) + StatusUtils.setCustomerStatusIcon(customer.currentState!!, iv_current_status, context) - val address : Address = customer.address!! + val address: Address = customer.address!! val addressBuilder = StringBuilder() addressBuilder .append(address.street).append(", ") @@ -171,6 +170,7 @@ class CustomerDetailsFragment : MifosBaseFragment(), AppBarLayout.OnOffsetChange } showToolbarTitleSubtitle(title, subtitle) } + override fun showUserInterface() { if (toolbar_customer != null) { (activity as AppCompatActivity).setSupportActionBar(toolbar_customer) @@ -178,12 +178,13 @@ class CustomerDetailsFragment : MifosBaseFragment(), AppBarLayout.OnOffsetChange .setDisplayHomeAsUpEnabled(true) } - collapsingToolbarLayout.title= " " + collapsingToolbarLayout.title = " " app_bar_layout.addOnOffsetChangedListener(this) } + override fun showToolbarTitleSubtitle(title: String, subtitle: String) { - toolbarHeaderView.bindTo(title,subtitle) - floatHeaderView.bindTo(title,subtitle) + toolbarHeaderView.bindTo(title, subtitle) + floatHeaderView.bindTo(title, subtitle) } @@ -206,25 +207,22 @@ class CustomerDetailsFragment : MifosBaseFragment(), AppBarLayout.OnOffsetChange } - override fun loadCustomerPortrait() { val imageLoaderUtils = ImageLoaderUtils(this.context!!) - imageLoaderUtils.loadImage(imageLoaderUtils.buildCustomerPortraitImageUrl(customer.identifier),iv_customer_profile,R.drawable.mifos_logo_new) + imageLoaderUtils.loadImage(imageLoaderUtils.buildCustomerPortraitImageUrl(customer.identifier), iv_customer_profile, R.drawable.mifos_logo_new) } override fun showProgressbar() { - showProgressBar() + showProgressBar() } override fun hideProgressbar() { - hideProgressBar() + hideProgressBar() } - - override fun getCustomerStatus(): Customer.State { return customer.currentState!! } @@ -241,6 +239,7 @@ class CustomerDetailsFragment : MifosBaseFragment(), AppBarLayout.OnOffsetChange hideProgressDialog() customerDetailsPresenter.detachView() } + override fun onOffsetChanged(appBarLayout: AppBarLayout?, verticalOffset: Int) { val maxScroll = appBarLayout!!.totalScrollRange val percentage = Math.abs(verticalOffset).toFloat() / maxScroll.toFloat() @@ -254,28 +253,30 @@ class CustomerDetailsFragment : MifosBaseFragment(), AppBarLayout.OnOffsetChange } } + private fun openDepositAccount() { (activity as MifosBaseActivity) .replaceFragment(CustomerAccountFragment.newInstance(AccountType.DEPOSIT), true, R.id.container) } + private fun openLoanAccount() { (activity as MifosBaseActivity) .replaceFragment(CustomerAccountFragment.newInstance(AccountType.LOAN), true, R.id.container) } + private fun openCustomerActivities() { - val intent = Intent(activity,CustomerActivitiesActivity::class.java) - intent.putExtra(ConstantKeys.CUSTOMER_IDENTIFIER,"customer_identifier") + val intent = Intent(activity, CustomerActivitiesActivity::class.java) + intent.putExtra(ConstantKeys.CUSTOMER_IDENTIFIER, "customer_identifier") startActivity(intent) } + private fun openIdentificationCards() { - val intent = Intent(activity,IdentificationsActivity::class.java) - intent.putExtra(ConstantKeys.CUSTOMER_IDENTIFIER,"customer_identifier") + val intent = Intent(activity, IdentificationsActivity::class.java) + intent.putExtra(ConstantKeys.CUSTOMER_IDENTIFIER, "customer_identifier") startActivity(intent) } - - } \ No newline at end of file diff --git a/app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/customerProfile/CustomerProfileActivity.kt b/app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/customerProfile/CustomerProfileActivity.kt index 27cf1165..8370228f 100644 --- a/app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/customerProfile/CustomerProfileActivity.kt +++ b/app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/customerProfile/CustomerProfileActivity.kt @@ -12,13 +12,11 @@ import android.provider.MediaStore import android.view.Menu import android.view.MenuItem import android.widget.ImageView -import com.github.therajanmaurya.sweeterror.SweetUIErrorHandler import kotlinx.android.synthetic.main.activity_customer_profile.* import org.mifos.mobile.cn.R import org.mifos.mobile.cn.ui.base.MifosBaseActivity import org.mifos.mobile.cn.ui.utils.* import java.io.ByteArrayOutputStream -import java.util.jar.Manifest class CustomerProfileActivity: MifosBaseActivity(),CustomerProfileContract.View { @@ -98,6 +96,10 @@ class CustomerProfileActivity: MifosBaseActivity(),CustomerProfileContract.View resources.getString( R.string.dialog_message_write_permission_for_share_never_ask_again), ConstantKeys.PERMISSIONS_WRITE_EXTERNAL_STORAGE_STATUS) + if (CheckSelfPermissionAndRequest.checkSelfPermission(this, + android.Manifest.permission.WRITE_EXTERNAL_STORAGE)){ + shareImage() + } } override fun loadCustomerPortrait() { diff --git a/app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/dashboard/DashboardFragment.kt b/app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/dashboard/DashboardFragment.kt index 977343ff..b0efd9c7 100644 --- a/app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/dashboard/DashboardFragment.kt +++ b/app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/dashboard/DashboardFragment.kt @@ -9,24 +9,29 @@ import kotlinx.android.synthetic.main.fragment_dashboard.* import org.mifos.mobile.cn.data.models.customer.Customer import org.mifos.mobile.cn.R import org.mifos.mobile.cn.enums.AccountType +import org.mifos.mobile.cn.ui.Test1 import org.mifos.mobile.cn.ui.base.MifosBaseActivity import org.mifos.mobile.cn.ui.base.MifosBaseFragment +import org.mifos.mobile.cn.ui.mifos.Main import org.mifos.mobile.cn.ui.mifos.customerAccounts.CustomerAccountFragment import org.mifos.mobile.cn.ui.mifos.customerDetails.CustomerDetailsActivity +import org.mifos.mobile.cn.ui.mifos.customerProfile.CustomerProfileActivity import org.mifos.mobile.cn.ui.mifos.loanApplication.loanActivity.LoanApplicationActivity import org.mifos.mobile.cn.ui.mifos.recentTransactions.RecentTransactionsFragment import org.mifos.mobile.cn.ui.utils.ConstantKeys +import kotlin.random.Random.Default.Companion class DashboardFragment : MifosBaseFragment(), View.OnClickListener { - + private lateinit var customerIdentification: String private lateinit var rootView: View private lateinit var customer: Customer companion object { - fun newInstance(): DashboardFragment { + fun newInstance(identifier: String): DashboardFragment { val fragment = DashboardFragment() val args = Bundle() + args.putString(ConstantKeys.CUSTOMER_IDENTIFIER, identifier) fragment.arguments = args return fragment } @@ -38,15 +43,21 @@ class DashboardFragment : MifosBaseFragment(), View.OnClickListener { rootView = inflater.inflate(R.layout.fragment_dashboard, container, false) setHasOptionsMenu(true) setToolbarTitle(getString(R.string.home)) + if (arguments != null) { + 1 + customerIdentification = arguments!!.getString(ConstantKeys.CUSTOMER_IDENTIFIER) + } return rootView } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) ll_apply_for_loan.setOnClickListener(this) + iv_user_image.setOnClickListener(this) ll_accounts.setOnClickListener(this) ll_account_overview.setOnClickListener(this) ll_recent_transactions.setOnClickListener(this) + ll_charges.setOnClickListener(this) } override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) { @@ -69,6 +80,12 @@ class DashboardFragment : MifosBaseFragment(), View.OnClickListener { R.id.ll_recent_transactions -> { showRecentTransactions() } + R.id.iv_user_image -> { + openCustomerProfile() + } + R.id.ll_charges ->{ + test() + } } } @@ -77,7 +94,11 @@ class DashboardFragment : MifosBaseFragment(), View.OnClickListener { intent.putExtra(ConstantKeys.CUSTOMER_IDENTIFIER, "customer_identifier") startActivity(intent) } - + private fun openCustomerProfile() { + val intent = Intent(activity, CustomerProfileActivity::class.java) + intent.putExtra(ConstantKeys.CUSTOMER_IDENTIFIER, customerIdentification) + startActivity(intent) + } private fun openAccount() { (activity as MifosBaseActivity) .replaceFragment(CustomerAccountFragment.newInstance(AccountType.DEPOSIT), @@ -95,4 +116,9 @@ class DashboardFragment : MifosBaseFragment(), View.OnClickListener { .replaceFragment(RecentTransactionsFragment.Companion.newInstance(), true,R.id.container) } + private fun test(){ + val intent = Intent(activity, Main::class.java) + intent.putExtra(ConstantKeys.CUSTOMER_IDENTIFIER, "customer_identifier") + startActivity(intent) + } } \ No newline at end of file diff --git a/app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/passcode/PasscodeActivity.kt b/app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/passcode/PasscodeActivity.kt index f04d00e1..023b1318 100644 --- a/app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/passcode/PasscodeActivity.kt +++ b/app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/passcode/PasscodeActivity.kt @@ -1,19 +1,47 @@ package org.mifos.mobile.cn.ui.mifos.passcode +import android.Manifest import android.content.DialogInterface import android.content.Intent +import android.os.Bundle import android.view.View import android.widget.Toast import com.mifos.mobile.passcode.MifosPassCodeActivity import com.mifos.mobile.passcode.utils.EncryptionUtil +import com.mifos.mobile.passcode.utils.PasscodePreferencesHelper import org.mifos.mobile.cn.R import org.mifos.mobile.cn.ui.mifos.DashboardActivity import org.mifos.mobile.cn.ui.mifos.login.LoginActivity +import org.mifos.mobile.cn.ui.utils.CheckSelfPermissionAndRequest.checkSelfPermission +import org.mifos.mobile.cn.ui.utils.CheckSelfPermissionAndRequest.requestPermission +import org.mifos.mobile.cn.ui.utils.ConstantKeys import org.mifos.mobile.cn.ui.utils.MaterialDialog import org.mifos.mobile.cn.ui.utils.Toaster class PasscodeActivity : MifosPassCodeActivity(){ + private var currPass = "" + private var updatePassword = false + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + if (!checkSelfPermission(this, + Manifest.permission.READ_PHONE_STATE)) { + requestPermission() + } + + } + + private fun requestPermission() { + requestPermission( + this, + Manifest.permission.READ_PHONE_STATE, + ConstantKeys.PERMISSIONS_REQUEST_READ_PHONE_STATE, + resources.getString( + R.string.dialog_message_phone_state_permission_denied_prompt), + resources.getString(R.string.dialog_message_phone_state_permission_never_ask_again), + ConstantKeys.PERMISSIONS_READ_PHONE_STATE_STATUS) + } override fun getLogo(): Int { return R.drawable.mifos_logo_new @@ -49,5 +77,12 @@ class PasscodeActivity : MifosPassCodeActivity(){ override fun getEncryptionType(): Int { return EncryptionUtil.FINERACT_CN } - + override fun onBackPressed() { + super.onBackPressed() + if (updatePassword && !currPass.isEmpty()) { + val helper = PasscodePreferencesHelper(this) + helper.savePassCode(currPass) + } + finish() + } } \ No newline at end of file diff --git a/app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/settings/SettingsFragment.kt b/app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/settings/SettingsFragment.kt index 21f01cec..7e6913b1 100644 --- a/app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/settings/SettingsFragment.kt +++ b/app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/settings/SettingsFragment.kt @@ -1,13 +1,16 @@ package org.mifos.mobile.cn.ui.mifos.settings -import android.content.Context -import android.net.Uri +import android.content.Intent import android.os.Bundle -import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import androidx.fragment.app.Fragment +import com.mifos.mobile.passcode.utils.PasscodePreferencesHelper import org.mifos.mobile.cn.R +import org.mifos.mobile.cn.ui.mifos.passcode.PasscodeActivity +import org.mifos.mobile.cn.ui.utils.ConstantKeys + // TODO: Rename parameter arguments, choose names that match // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER @@ -27,6 +30,7 @@ class SettingsFragment : Fragment() { override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { // Inflate the layout for this fragment + return inflater.inflate(R.layout.fragment_settings, container, false) } diff --git a/app/src/main/kotlin/org/mifos/mobile/cn/ui/utils/ConstantKeys.kt b/app/src/main/kotlin/org/mifos/mobile/cn/ui/utils/ConstantKeys.kt index 64fabae7..348066d7 100644 --- a/app/src/main/kotlin/org/mifos/mobile/cn/ui/utils/ConstantKeys.kt +++ b/app/src/main/kotlin/org/mifos/mobile/cn/ui/utils/ConstantKeys.kt @@ -10,7 +10,11 @@ object ConstantKeys { const val REQUEST_PERMISSION_SETTING = 254 const val PERMISSION_REQUEST_ALL = 4 const val PERMISSION_REQUEST_CAMERA = 5 - + const val PASSCODE = "Passcode" + const val CURR_PASSWORD = "currentPassword" + const val PERMISSIONS_READ_PHONE_STATE_STATUS = "read_phone_status" + const val PERMISSIONS_REQUEST_READ_PHONE_STATE = 2 + const val UPDATE_PASSWORD_KEY = "updatePassword" const val PERMISSIONS_WRITE_EXTERNAL_STORAGE_STATUS = "write_status" const val PERMISSION_READ_EXTERNAL_STORAGE_STATUS = "read_status" const val PERMISSIONS_CAMERA_STATUS = "camera_status" diff --git a/app/src/main/res/drawable-v24/drawable_editable_image_hint.xml b/app/src/main/res/drawable-v24/drawable_editable_image_hint.xml new file mode 100644 index 00000000..9790605f --- /dev/null +++ b/app/src/main/res/drawable-v24/drawable_editable_image_hint.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable-v24/ic_camera.xml b/app/src/main/res/drawable-v24/ic_camera.xml new file mode 100644 index 00000000..7b9b5cd4 --- /dev/null +++ b/app/src/main/res/drawable-v24/ic_camera.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable-v24/ic_error_state.xml b/app/src/main/res/drawable-v24/ic_error_state.xml new file mode 100644 index 00000000..c01af649 --- /dev/null +++ b/app/src/main/res/drawable-v24/ic_error_state.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable-v24/ic_transaction.xml b/app/src/main/res/drawable-v24/ic_transaction.xml new file mode 100644 index 00000000..fad1fe3e --- /dev/null +++ b/app/src/main/res/drawable-v24/ic_transaction.xml @@ -0,0 +1,5 @@ + + + + diff --git a/app/src/main/res/drawable-v24/profile.png b/app/src/main/res/drawable-v24/profile.png new file mode 100644 index 0000000000000000000000000000000000000000..0dcfeb06b9967ac7af3c65c9c5c57fab6da23156 GIT binary patch literal 3800 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 O0000 + + diff --git a/app/src/main/res/drawable/bottomview_selector.xml b/app/src/main/res/drawable/bottomview_selector.xml new file mode 100644 index 00000000..12200b02 --- /dev/null +++ b/app/src/main/res/drawable/bottomview_selector.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/gray_box.xml b/app/src/main/res/drawable/gray_box.xml new file mode 100644 index 00000000..0e0364ef --- /dev/null +++ b/app/src/main/res/drawable/gray_box.xml @@ -0,0 +1,17 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_account.xml b/app/src/main/res/drawable/ic_account.xml new file mode 100644 index 00000000..b9d5db60 --- /dev/null +++ b/app/src/main/res/drawable/ic_account.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_add_circle_black_24dp.xml b/app/src/main/res/drawable/ic_add_circle_black_24dp.xml new file mode 100644 index 00000000..be629131 --- /dev/null +++ b/app/src/main/res/drawable/ic_add_circle_black_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_home.xml b/app/src/main/res/drawable/ic_home.xml new file mode 100644 index 00000000..70fb2910 --- /dev/null +++ b/app/src/main/res/drawable/ic_home.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_notifications.xml b/app/src/main/res/drawable/ic_notifications.xml index 10953e1d..2de5681a 100644 --- a/app/src/main/res/drawable/ic_notifications.xml +++ b/app/src/main/res/drawable/ic_notifications.xml @@ -4,6 +4,6 @@ android:viewportWidth="24.0" android:viewportHeight="24.0"> diff --git a/app/src/main/res/drawable/ic_profile.xml b/app/src/main/res/drawable/ic_profile.xml new file mode 100644 index 00000000..76785806 --- /dev/null +++ b/app/src/main/res/drawable/ic_profile.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_swap_horiz.xml b/app/src/main/res/drawable/ic_swap_horiz.xml new file mode 100644 index 00000000..f9df11df --- /dev/null +++ b/app/src/main/res/drawable/ic_swap_horiz.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/round_gray.xml b/app/src/main/res/drawable/round_gray.xml new file mode 100644 index 00000000..81cf96d7 --- /dev/null +++ b/app/src/main/res/drawable/round_gray.xml @@ -0,0 +1,9 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/violet_concave.xml b/app/src/main/res/drawable/violet_concave.xml new file mode 100644 index 00000000..518afafc --- /dev/null +++ b/app/src/main/res/drawable/violet_concave.xml @@ -0,0 +1,9 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/violet_round.xml b/app/src/main/res/drawable/violet_round.xml new file mode 100644 index 00000000..30cca1a2 --- /dev/null +++ b/app/src/main/res/drawable/violet_round.xml @@ -0,0 +1,17 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_home.xml b/app/src/main/res/layout/activity_home.xml new file mode 100644 index 00000000..b3f97b87 --- /dev/null +++ b/app/src/main/res/layout/activity_home.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/content_bottom_sheet_account_details.xml b/app/src/main/res/layout/content_bottom_sheet_account_details.xml new file mode 100644 index 00000000..e0a95ffb --- /dev/null +++ b/app/src/main/res/layout/content_bottom_sheet_account_details.xml @@ -0,0 +1,55 @@ + + + + + + + + + + + + + +