Skip to content

Commit 317d899

Browse files
committed
feat: About Us
1 parent 40a7865 commit 317d899

File tree

13 files changed

+303
-1
lines changed

13 files changed

+303
-1
lines changed

app/build.gradle

+4
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ apply from: '../config/quality/quality.gradle'
33
apply plugin: 'kotlin-android'
44
apply plugin: 'kotlin-android-extensions'
55
apply plugin: 'kotlin-kapt'
6+
apply plugin: 'com.google.android.gms.oss-licenses-plugin'
67

78
android {
89
compileSdkVersion 28
@@ -134,6 +135,9 @@ dependencies {
134135
implementation "com.github.Raizlabs.DBFlow:dbflow-rx2:$rootProject.dbFlowVersion"
135136
implementation "com.github.Raizlabs.DBFlow:dbflow-rx2-kotlinextensions:$rootProject.dbFlowVersion"
136137

138+
//OpenSource Licences
139+
implementation "com.google.android.gms:play-services-oss-licenses:17.0.0"
140+
137141
// Instrumentation test dependencies
138142
androidTestImplementation jUnit
139143
androidTestImplementation mockito

app/src/main/AndroidManifest.xml

+5
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,11 @@
3434
<activity android:name=".ui.mifos.customerProfile.CustomerProfileActivity"/>
3535
<activity android:name=".ui.mifos.plannedPlayment.PlannedPaymentActivity"/>
3636
<activity android:name=".ui.mifos.debtincomereport.DebtIncomeReportActivity"/>
37+
<activity android:name=".ui.mifos.aboutus.AboutUsActivity"/>
38+
<activity android:name=".ui.mifos.privacypolicy.PrivacyPolicyActivity"/>
39+
<activity
40+
android:name="com.google.android.gms.oss.licenses.OssLicensesMenuActivity"
41+
android:theme="@style/Theme.AppCompat.Light.DarkActionBar" />
3742
</application>
3843

3944
</manifest>

app/src/main/kotlin/org/mifos/mobile/cn/injection/component/ActivityComponent.kt

+3
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import dagger.Subcomponent
55
import org.mifos.mobile.cn.injection.PerActivity
66
import org.mifos.mobile.cn.injection.module.ActivityModule
77
import org.mifos.mobile.cn.ui.mifos.DashboardActivity
8+
import org.mifos.mobile.cn.ui.mifos.aboutus.AboutUsFragment
89
import org.mifos.mobile.cn.ui.mifos.accounts.AccountsFragment
910
import org.mifos.mobile.cn.ui.mifos.accountsFilter.AccountsFilterBottomSheet
1011
import org.mifos.mobile.cn.ui.mifos.customerAccounts.CustomerAccountFragment
@@ -75,4 +76,6 @@ interface ActivityComponent {
7576
fun inject(debtIncomeReportFragment: DebtIncomeReportFragment)
7677

7778
fun inject(customerDepositDetailsFragment: CustomerDepositDetailsFragment)
79+
80+
fun inject(aboutUsFragment: AboutUsFragment)
7881
}

app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/DashboardActivity.kt

+9
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,9 @@ import org.mifos.mobile.cn.ui.utils.MaterialDialog
2222
import javax.inject.Inject
2323
import kotlinx.android.synthetic.main.activity_main.*
2424
import org.mifos.mobile.cn.enums.AccountType
25+
import org.mifos.mobile.cn.ui.mifos.aboutus.AboutUsActivity
2526
import org.mifos.mobile.cn.ui.mifos.customerAccounts.CustomerAccountFragment
27+
import org.mifos.mobile.cn.ui.mifos.loanApplication.loanActivity.LoanApplicationActivity
2628
import org.mifos.mobile.cn.ui.mifos.products.ProductFragment
2729
import org.mifos.mobile.cn.ui.mifos.recentTransactions.RecentTransactionsFragment
2830
import org.mifos.mobile.cn.ui.utils.CircularImageView
@@ -173,6 +175,9 @@ class DashboardActivity : MifosBaseActivity(), View.OnClickListener, NavigationV
173175
R.id.item_recent_transactions -> {
174176
replaceFragment(RecentTransactionsFragment.Companion.newInstance(),true,R.id.container)
175177
}
178+
R.id.item_about_us -> {
179+
showAboutUs()
180+
}
176181
}
177182

178183
// close the drawer
@@ -205,5 +210,9 @@ class DashboardActivity : MifosBaseActivity(), View.OnClickListener, NavigationV
205210
super.onBackPressed()
206211
}
207212
}
213+
fun showAboutUs(){
214+
val intent = Intent(this, AboutUsActivity::class.java)
215+
startActivity(intent)
216+
}
208217

209218
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package org.mifos.mobile.cn.ui.mifos.aboutus
2+
3+
import android.os.Bundle
4+
import kotlinx.android.synthetic.main.globalcontainer.*
5+
import org.mifos.mobile.cn.R
6+
import org.mifos.mobile.cn.ui.base.MifosBaseActivity
7+
8+
class AboutUsActivity: MifosBaseActivity() {
9+
10+
override fun onCreate(savedInstanceState: Bundle?) {
11+
super.onCreate(savedInstanceState)
12+
setContentView(R.layout.activity_toolbar_container)
13+
setToolbarTitle(getString(R.string.about_us))
14+
showBackButton()
15+
replaceFragment(AboutUsFragment.newInstance(),false,R.id.container)
16+
}
17+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
package org.mifos.mobile.cn.ui.mifos.aboutus
2+
3+
import android.content.Intent
4+
import android.os.Bundle
5+
import android.view.LayoutInflater
6+
import android.view.View
7+
import android.view.ViewGroup
8+
import androidx.fragment.app.Fragment
9+
import com.google.android.gms.oss.licenses.OssLicensesMenuActivity
10+
import kotlinx.android.synthetic.main.fragment_about_us.*
11+
import org.mifos.mobile.cn.BuildConfig
12+
import org.mifos.mobile.cn.R
13+
import org.mifos.mobile.cn.ui.base.MifosBaseActivity
14+
import org.mifos.mobile.cn.ui.base.MifosBaseFragment
15+
import org.mifos.mobile.cn.ui.mifos.privacypolicy.PrivacyPolicyActivity
16+
import java.util.*
17+
18+
class AboutUsFragment : MifosBaseFragment(), View.OnClickListener {
19+
20+
lateinit var rootview: View
21+
22+
companion object {
23+
fun newInstance(): Fragment {
24+
val fragment: Fragment = AboutUsFragment()
25+
val args = Bundle()
26+
fragment.arguments = args
27+
return fragment
28+
}
29+
}
30+
31+
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
32+
rootview = inflater.inflate(R.layout.fragment_about_us, container, false)
33+
(activity as MifosBaseActivity).activityComponent.inject(this)
34+
setToolbarTitle(getString(R.string.about_us))
35+
return rootview
36+
}
37+
38+
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
39+
super.onViewCreated(view, savedInstanceState)
40+
41+
tv_app_version.text = getString(R.string.app_version, BuildConfig.VERSION_NAME)
42+
tv_copy_right.text = getString(R.string.copy_right_mifos, Calendar.getInstance().get(Calendar.YEAR).toString())
43+
tv_licenses.setOnClickListener(this)
44+
tv_privacy_policy.setOnClickListener(this)
45+
}
46+
47+
override fun onClick(v: View?) {
48+
if (v != null) {
49+
when (v.id) {
50+
R.id.tv_licenses -> showOpenSourceLisences()
51+
R.id.tv_privacy_policy -> showPrivacyPolicy()
52+
}
53+
}
54+
}
55+
56+
fun showOpenSourceLisences() {
57+
startActivity(Intent(activity, OssLicensesMenuActivity::class.java))
58+
}
59+
60+
fun showPrivacyPolicy() {
61+
startActivity(Intent(activity, PrivacyPolicyActivity::class.java))
62+
}
63+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
package org.mifos.mobile.cn.ui.mifos.privacypolicy
2+
3+
import android.annotation.SuppressLint
4+
import android.content.Intent
5+
import android.graphics.Bitmap
6+
import android.net.Uri
7+
import android.os.Bundle
8+
import android.view.View
9+
import android.webkit.WebView
10+
import android.webkit.WebViewClient
11+
import kotlinx.android.synthetic.main.activity_privacy_policy.*
12+
import org.mifos.mobile.cn.R
13+
import org.mifos.mobile.cn.ui.base.MifosBaseActivity
14+
15+
@SuppressLint("Registered")
16+
class PrivacyPolicyActivity: MifosBaseActivity() {
17+
private var showOrHideWebViewInitialUse = "show"
18+
19+
@SuppressLint("SetJavaScriptEnabled")
20+
override fun onCreate(savedInstanceState: Bundle?) {
21+
super.onCreate(savedInstanceState)
22+
setContentView(R.layout.activity_privacy_policy)
23+
setToolbarTitle(getString(R.string.privacy_policy))
24+
showBackButton()
25+
26+
// Force links and redirects to open in the WebView instead of in a browser
27+
webView.webViewClient = WebViewClient()
28+
29+
// Enable Javascript
30+
val webSettings = webView.settings
31+
webSettings.javaScriptEnabled = true
32+
33+
// REMOTE RESOURCE
34+
webView.settings.domStorageEnabled = true
35+
webView.overScrollMode = WebView.OVER_SCROLL_NEVER
36+
webView.loadUrl(getString(R.string.privacy_policy_host_url))
37+
webView.webViewClient = MyWebViewClient()
38+
}
39+
40+
override fun onBackPressed() {
41+
if (webView.canGoBack()) {
42+
webView.goBack()
43+
} else {
44+
super.onBackPressed()
45+
}
46+
}
47+
48+
internal inner class MyWebViewClient : WebViewClient() {
49+
50+
override fun shouldOverrideUrlLoading(view: WebView, url: String): Boolean {
51+
if (Uri.parse(url).host!!
52+
.endsWith(getString(R.string.privacy_policy_host))) {
53+
return false
54+
}
55+
startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(url)))
56+
return true
57+
}
58+
59+
override fun onPageFinished(view: WebView, url: String) {
60+
showOrHideWebViewInitialUse = "hide"
61+
progress_bar.visibility = View.GONE
62+
view.visibility = View.VISIBLE
63+
super.onPageFinished(view, url)
64+
}
65+
}
66+
}
11.8 KB
Loading
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
3+
<!--
4+
~ This project is licensed under the open source MPL V2.
5+
~ See https://github.com/openMF/self-service-app/blob/master/LICENSE.md
6+
-->
7+
<androidx.coordinatorlayout.widget.CoordinatorLayout
8+
xmlns:android="http://schemas.android.com/apk/res/android"
9+
android:fitsSystemWindows="true"
10+
android:layout_height="match_parent"
11+
android:layout_width="match_parent">
12+
13+
<LinearLayout
14+
style="@style/LinearLayout.Base">
15+
16+
<include layout="@layout/toolbar"/>
17+
18+
<androidx.coordinatorlayout.widget.CoordinatorLayout
19+
android:layout_height="match_parent"
20+
android:layout_width="match_parent">
21+
22+
<WebView
23+
android:id="@+id/webView"
24+
android:layout_alignParentBottom="true"
25+
android:layout_alignParentEnd="true"
26+
android:layout_alignParentLeft="true"
27+
android:layout_alignParentRight="true"
28+
android:layout_alignParentStart="true"
29+
android:layout_alignParentTop="true"
30+
android:layout_height="fill_parent"
31+
android:layout_width="fill_parent"
32+
android:visibility="gone"/>
33+
34+
<ProgressBar
35+
android:id="@+id/progress_bar"
36+
android:layout_centerHorizontal="true"
37+
android:layout_centerInParent="true"
38+
android:layout_centerVertical="true"
39+
android:layout_gravity="center"
40+
android:layout_height="wrap_content"
41+
android:layout_width="wrap_content"/>
42+
43+
</androidx.coordinatorlayout.widget.CoordinatorLayout>
44+
45+
</LinearLayout>
46+
47+
</androidx.coordinatorlayout.widget.CoordinatorLayout>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
<!--
2+
~ This project is licensed under the open source MPL V2.
3+
~ See https://github.com/openMF/self-service-app/blob/master/LICENSE.md
4+
-->
5+
<androidx.coordinatorlayout.widget.CoordinatorLayout
6+
xmlns:android="http://schemas.android.com/apk/res/android"
7+
android:background="@drawable/bg_about"
8+
android:layout_gravity="center"
9+
android:layout_height="match_parent"
10+
android:layout_width="match_parent"
11+
android:orientation="vertical">
12+
13+
<LinearLayout
14+
android:layout_gravity="center"
15+
android:layout_height="wrap_content"
16+
android:layout_width="wrap_content"
17+
android:orientation="vertical">
18+
19+
<TextView
20+
android:layout_gravity="center"
21+
android:layout_height="wrap_content"
22+
android:layout_width="wrap_content"
23+
android:text="@string/app_name"
24+
android:textAppearance="@style/Base.TextAppearance.AppCompat.Medium"
25+
android:textColor="@color/black"/>
26+
27+
<TextView
28+
style="@style/Base.TextAppearance.AppCompat.Small"
29+
android:id="@+id/tv_app_version"
30+
android:layout_gravity="center"
31+
android:layout_height="wrap_content"
32+
android:layout_width="wrap_content"
33+
android:text="@string/app_version"/>
34+
35+
<ImageView
36+
android:layout_width="132dp"
37+
android:layout_height="148dp"
38+
android:layout_gravity="center"
39+
android:layout_margin="@dimen/layout_padding_16dp"
40+
android:src="@drawable/mifos_logo_new" />
41+
42+
<TextView
43+
style="@style/Base.TextAppearance.AppCompat.Small"
44+
android:id="@+id/tv_copy_right"
45+
android:layout_gravity="center"
46+
android:layout_height="wrap_content"
47+
android:layout_width="wrap_content"
48+
android:text="@string/copy_right_mifos"/>
49+
50+
<TextView
51+
style="@style/Base.TextAppearance.AppCompat.Small"
52+
android:layout_gravity="center"
53+
android:layout_height="wrap_content"
54+
android:layout_width="wrap_content"
55+
android:text="@string/all_rights_reserved"/>
56+
57+
<TextView
58+
android:id="@+id/tv_licenses"
59+
android:layout_gravity="center"
60+
android:layout_height="wrap_content"
61+
android:layout_marginBottom="@dimen/layout_padding_4dp"
62+
android:layout_marginTop="@dimen/layout_padding_48dp"
63+
android:layout_width="wrap_content"
64+
android:text="@string/licenses"
65+
android:textColor="@color/colorPrimary"
66+
android:textSize="@dimen/text_medium"/>
67+
68+
<TextView
69+
android:id="@+id/tv_privacy_policy"
70+
android:layout_gravity="center"
71+
android:layout_height="wrap_content"
72+
android:layout_width="wrap_content"
73+
android:text="@string/privacy_policy"
74+
android:textColor="@color/colorPrimary"
75+
android:textSize="@dimen/text_medium"/>
76+
77+
</LinearLayout>
78+
79+
</androidx.coordinatorlayout.widget.CoordinatorLayout>

app/src/main/res/values/dimens.xml

+1
Original file line numberDiff line numberDiff line change
@@ -48,4 +48,5 @@
4848
<dimen name="header_view_start_margin_bottom">14dp</dimen>
4949

5050
<dimen name="view_line_height">1dp</dimen>
51+
<dimen name="layout_padding_48dp">48dp</dimen>
5152
</resources>

app/src/main/res/values/strings.xml

+8
Original file line numberDiff line numberDiff line change
@@ -301,6 +301,14 @@
301301
<string name="no_beneficiary">No beneficiaries</string>
302302
<string name="account">Account</string>
303303
<string name="balance">Balance</string>
304+
<string name="app_version">Version %1$s</string>
305+
<string name="copy_right_mifos">©2016-%1$s Mifos Initiative.</string>
306+
<string name="all_rights_reserved">All rights reserved.</string>
307+
<string name="licenses">Licenses</string>
308+
<string name="privacy_policy">Privacy Policy</string>
309+
<string name="privacy_policy_host" translatable="false">openmf.github.io/privacy_policy_mifos_mobile.html</string>
310+
<string name="privacy_policy_host_url" translatable="false">https://openmf.github.io/privacy_policy_mifos_mobile.html</string>
311+
<string name="opensource_license_title">Open Source licenses</string>
304312

305313

306314
</resources>

build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ buildscript {
1010
dependencies {
1111
classpath 'com.android.tools.build:gradle:3.3.2'
1212
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
13-
13+
classpath 'com.google.android.gms:oss-licenses-plugin:0.9.5'
1414
// NOTE: Do not place your application dependencies here; they belong
1515
// in the individual module build.gradle files
1616
}

0 commit comments

Comments
 (0)