diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index c65ef8e..29bc014 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -98,6 +98,11 @@ android:exported="true" android:screenOrientation="portrait"> + + + + + - - - - diff --git a/app/src/main/java/com/ssb/simplitend/articles/ArticleShowerActivity.java b/app/src/main/java/com/ssb/simplitend/articles/ArticleShowerActivity.java index b8d91fd..d55cc6c 100644 --- a/app/src/main/java/com/ssb/simplitend/articles/ArticleShowerActivity.java +++ b/app/src/main/java/com/ssb/simplitend/articles/ArticleShowerActivity.java @@ -1,14 +1,14 @@ package com.ssb.simplitend.articles; -import androidx.appcompat.app.AppCompatActivity; - import android.content.Intent; import android.os.Bundle; -import android.webkit.WebSettings; +import android.view.View; +import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.Toast; -import com.ssb.simplitend.R; +import androidx.appcompat.app.AppCompatActivity; + import com.ssb.simplitend.databinding.ActivityArticleShowerBinding; public class ArticleShowerActivity extends AppCompatActivity { @@ -52,11 +52,19 @@ public class ArticleShowerActivity extends AppCompatActivity { return; } + binding.progressBar.setVisibility(View.VISIBLE); + binding.webView.getSettings().setJavaScriptEnabled(true); binding.webView.getSettings().setBuiltInZoomControls(true); binding.webView.getSettings().setDisplayZoomControls(false); - binding.webView.setWebViewClient(new WebViewClient()); + binding.webView.setWebViewClient(new WebViewClient(){ + @Override + public void onPageCommitVisible(WebView view, String url) { + super.onPageCommitVisible(view, url); + binding.progressBar.setVisibility(View.GONE); + } + }); binding.webView.loadUrl(url); } diff --git a/app/src/main/java/com/ssb/simplitend/articles/ArticlesActivity.java b/app/src/main/java/com/ssb/simplitend/articles/ArticlesActivity.java index 3e9b3b2..dba3a72 100644 --- a/app/src/main/java/com/ssb/simplitend/articles/ArticlesActivity.java +++ b/app/src/main/java/com/ssb/simplitend/articles/ArticlesActivity.java @@ -9,6 +9,7 @@ import androidx.recyclerview.widget.LinearLayoutManager; import android.app.ProgressDialog; import android.content.Intent; import android.os.Bundle; +import android.view.View; import android.widget.Toast; import com.ssb.simplitend.R; @@ -25,8 +26,6 @@ public class ArticlesActivity extends AppCompatActivity private ArticlesAdapter articlesAdapter; - private ProgressDialog progressDialog; - @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -44,18 +43,14 @@ public class ArticlesActivity extends AppCompatActivity } private void getArticles() { - progressDialog.setTitle("Please wait..."); - progressDialog.setMessage("while we fetch the articles"); - progressDialog.setCancelable(false); - progressDialog.show(); + binding.noArticles.setVisibility(View.GONE); + binding.progressBar.setVisibility(View.VISIBLE); + binding.search.setVisibility(View.GONE); presenter.getArticles(this); } private void initViews() { - - progressDialog = new ProgressDialog(this); - binding.articlesRv.setLayoutManager(new LinearLayoutManager(this)); articlesAdapter = new ArticlesAdapter(this); binding.articlesRv.setAdapter(articlesAdapter); @@ -77,14 +72,24 @@ public class ArticlesActivity extends AppCompatActivity @Override public void onArticlesFetched(ArrayList articleResults) { - progressDialog.dismiss(); + binding.progressBar.setVisibility(View.GONE); + binding.noArticles.setVisibility(View.GONE); + binding.search.setVisibility(View.VISIBLE); + + if (articleResults.isEmpty()){ + binding.noArticles.setVisibility(View.VISIBLE); + binding.search.setVisibility(View.GONE); + } articlesAdapter.submitList(articleResults); } @Override public void onArticleFetchFailed(Throwable t, String message) { - progressDialog.dismiss(); + binding.progressBar.setVisibility(View.GONE); + binding.noArticles.setVisibility(View.VISIBLE); + binding.search.setVisibility(View.GONE); + Toast.makeText(this, "" + message, Toast.LENGTH_SHORT).show(); } diff --git a/app/src/main/java/com/ssb/simplitend/caregiverdashboard/fragments/DashBoardFragment.java b/app/src/main/java/com/ssb/simplitend/caregiverdashboard/fragments/DashBoardFragment.java index 7b2e4bf..ba5abe3 100644 --- a/app/src/main/java/com/ssb/simplitend/caregiverdashboard/fragments/DashBoardFragment.java +++ b/app/src/main/java/com/ssb/simplitend/caregiverdashboard/fragments/DashBoardFragment.java @@ -1,21 +1,58 @@ package com.ssb.simplitend.caregiverdashboard.fragments; +import static com.ssb.simplitend.articles.ArticleShowerActivity.ARTICLE_TITLE; +import static com.ssb.simplitend.articles.ArticleShowerActivity.ARTICLE_URL_KEY; + +import android.content.Intent; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.Toast; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; +import androidx.lifecycle.ViewModelProvider; +import com.bumptech.glide.Glide; +import com.google.android.gms.maps.CameraUpdateFactory; +import com.google.android.gms.maps.GoogleMap; +import com.google.android.gms.maps.OnMapReadyCallback; +import com.google.android.gms.maps.SupportMapFragment; +import com.google.android.gms.maps.model.LatLng; +import com.google.android.gms.maps.model.MarkerOptions; +import com.ssb.simplitend.R; +import com.ssb.simplitend.apputils.AppUtil; +import com.ssb.simplitend.apputils.CaregiverDataCache; +import com.ssb.simplitend.articles.ArticleContracts; +import com.ssb.simplitend.articles.ArticleResult; +import com.ssb.simplitend.articles.ArticleShowerActivity; +import com.ssb.simplitend.articles.ArticlesActivity; +import com.ssb.simplitend.caregiverdashboard.mvvm.CaregiverMainViewModel; +import com.ssb.simplitend.cg_geofencing.CgGeoFencingActivity; import com.ssb.simplitend.databinding.CaregiverDashFragmentBinding; +import com.ssb.simplitend.welcome.welcomecg.mvvm.CareGiverData; +import com.ssb.simplitend.welcome.welcomepatient.mvvm.models.PatientData; -public class DashBoardFragment extends Fragment { +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.Locale; +import java.util.TimeZone; + +public class DashBoardFragment extends Fragment implements + OnMapReadyCallback, ArticleContracts.GetArticleCallback { // view binding protected CaregiverDashFragmentBinding binding; + private CaregiverMainViewModel viewModel; + + private CareGiverData careGiverData; + + private PatientData patientData; + public DashBoardFragment(){ // required empty } @@ -24,7 +61,174 @@ public class DashBoardFragment extends Fragment { @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { binding = CaregiverDashFragmentBinding.inflate(inflater, container, false); + viewModel = new ViewModelProvider(requireActivity()).get(CaregiverMainViewModel.class); + + CaregiverDataCache.getCaregiverData(requireActivity(), (careGiverData1 -> { + this.careGiverData = careGiverData1; + + setDetails(); + }), true); + + initViews(); + + clickEvents(); + + loadArticles(); return binding.getRoot(); } + + private void loadArticles() { + viewModel.getArticles(this); + } + + private void setDetails() { + if (careGiverData == null || careGiverData.patientDetails == null){ + Toast.makeText(requireActivity(), "Couldn't load data", Toast.LENGTH_SHORT).show(); + return; + } + + patientData = careGiverData.patientDetails; + + binding.patientName.setText(patientData.first_name); + + setUpMap(); + } + + private void setUpMap() { + // Obtain the SupportMapFragment and get notified when the map is ready to be used. + SupportMapFragment mapFragment = (SupportMapFragment) getChildFragmentManager() + .findFragmentById(R.id.home_map); + if (mapFragment != null) { + mapFragment.getMapAsync(this); + }else{ + Toast.makeText(requireActivity(), "Couldn't load map. Please try again.", Toast.LENGTH_SHORT).show(); + } + } + + private void initViews() { + Glide.with(requireActivity()) + .asGif() + .load(R.raw.anim_pulse) + .into(binding.activityGif); + + Glide.with(requireActivity()) + .asGif() + .load(R.raw.anim_pulse) + .into(binding.upComingGif); + } + + private void clickEvents() { + binding.viewMoreArticle.setOnClickListener(v -> { + Intent intent = new Intent(requireActivity(), ArticlesActivity.class); + startActivity(intent); + }); + } + + public void setArticleDetails(ArticleResult articleResult){ + if (articleResult == null) return; + + Glide.with(requireActivity()) + .load(AppUtil.IMAGE_BASE_URL + articleResult.large_image) + .centerCrop() + .placeholder(android.R.color.darker_gray) + .error(android.R.color.darker_gray) + .into(binding.articleImg); + + if (articleResult.article_title == null){ + articleResult.article_title = "No title"; + } + + binding.articleTitle.setText(articleResult.article_title); + + if (articleResult.article_author == null){ + articleResult.article_author = "No author"; + } + + binding.articleAuthorName.setText(articleResult.article_author); + + try { + if (articleResult.created_at == null) throw new Exception(); + // parsing time of created at + SimpleDateFormat format = new SimpleDateFormat( + "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.US); + format.setTimeZone(TimeZone.getTimeZone("UTC")); + + Date date = format.parse(articleResult.created_at); + if (date == null) throw new Exception(); + + SimpleDateFormat pretty_format = new SimpleDateFormat("dd MMM yy, HH:mm a", Locale.getDefault()); + String time = pretty_format.format(date); + + binding.articleCreatedAt.setText(time); + + }catch (Exception e){ + // do nothing + String none = "None"; + binding.articleCreatedAt.setText(none); + } + + binding.articleCard.setOnClickListener(v -> { + Intent intent = new Intent(requireActivity(), ArticleShowerActivity.class); + intent.putExtra(ARTICLE_URL_KEY, articleResult.article_link); + intent.putExtra(ARTICLE_TITLE, articleResult.article_title); + startActivity(intent); + }); + } + + @Override + public void onArticlesFetched(ArrayList articleResults) { + if (articleResults == null) return; + + // saving in view model + viewModel.setArticleResults(articleResults); + + if (articleResults.size() > 0){ + binding.articleView.setVisibility(View.VISIBLE); + + setArticleDetails(articleResults.get(0)); + + }else{ + // no articles + binding.articleView.setVisibility(View.GONE); + } + } + + @Override + public void onArticleFetchFailed(Throwable t, String message) { + // do nothing + binding.articleView.setVisibility(View.GONE); + } + + @Override + public void onMapReady(@NonNull GoogleMap googleMap) { + LatLng latLng; + + // loading patient's location + try { + if (patientData == null) throw new Exception(); + + double lat = Double.parseDouble(patientData.lat); + double lng = Double.parseDouble(patientData.lng); + + latLng = new LatLng(lat, lng); + }catch (Exception e){ + // near marine drive + latLng = new LatLng(18.93294274664527, 72.82806102186441); + } + + googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, 16)); + + MarkerOptions markerOptions = new MarkerOptions() + .position(latLng) + .title(patientData.first_name + ""); + + googleMap.addMarker(markerOptions); + googleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng, 16));; + + googleMap.setOnMapClickListener(latLng1 -> { + Intent intent = new Intent(requireActivity(), CgGeoFencingActivity.class); + startActivity(intent); + }); + } } diff --git a/app/src/main/java/com/ssb/simplitend/caregiverdashboard/mvvm/CaregiverMainViewModel.java b/app/src/main/java/com/ssb/simplitend/caregiverdashboard/mvvm/CaregiverMainViewModel.java index 65c2b29..75a9bf1 100644 --- a/app/src/main/java/com/ssb/simplitend/caregiverdashboard/mvvm/CaregiverMainViewModel.java +++ b/app/src/main/java/com/ssb/simplitend/caregiverdashboard/mvvm/CaregiverMainViewModel.java @@ -1,14 +1,38 @@ package com.ssb.simplitend.caregiverdashboard.mvvm; +import androidx.annotation.NonNull; import androidx.lifecycle.ViewModel; import com.google.android.material.appbar.MaterialToolbar; +import com.ssb.simplitend.articles.ArticleContracts; +import com.ssb.simplitend.articles.ArticleResult; import com.yarolegovich.slidingrootnav.SlidingRootNav; +import java.util.ArrayList; + public class CaregiverMainViewModel extends ViewModel { public SlidingRootNav slidingRootNav; - public CaregiverMainViewModel(){} + private final HomeRepository homeRepository; + + private ArrayList articleResults; + + public CaregiverMainViewModel(){ + this.homeRepository = HomeRepository.getHomeRepository(); + } + + public void setArticleResults(ArrayList articleResults) { + this.articleResults = articleResults; + } + + public void getArticles(@NonNull ArticleContracts.GetArticleCallback articleCallback){ + if (articleResults == null){ + homeRepository.getArticles(articleCallback); + }else{ + articleCallback.onArticlesFetched(articleResults); + } + + } } diff --git a/app/src/main/java/com/ssb/simplitend/caregiverdashboard/mvvm/DashboardApiService.java b/app/src/main/java/com/ssb/simplitend/caregiverdashboard/mvvm/DashboardApiService.java new file mode 100644 index 0000000..a2cf06d --- /dev/null +++ b/app/src/main/java/com/ssb/simplitend/caregiverdashboard/mvvm/DashboardApiService.java @@ -0,0 +1,7 @@ +package com.ssb.simplitend.caregiverdashboard.mvvm; + +public interface DashboardApiService { + + + +} diff --git a/app/src/main/java/com/ssb/simplitend/caregiverdashboard/mvvm/HomeRepository.java b/app/src/main/java/com/ssb/simplitend/caregiverdashboard/mvvm/HomeRepository.java new file mode 100644 index 0000000..683cc8c --- /dev/null +++ b/app/src/main/java/com/ssb/simplitend/caregiverdashboard/mvvm/HomeRepository.java @@ -0,0 +1,28 @@ +package com.ssb.simplitend.caregiverdashboard.mvvm; + +import androidx.annotation.NonNull; + +import com.ssb.simplitend.articles.ArticleContracts; +import com.ssb.simplitend.articles.ArticlePresenter; + +public class HomeRepository { + + private static HomeRepository homeRepository; + + private HomeRepository(){} + + public static synchronized HomeRepository getHomeRepository(){ + if (homeRepository == null){ + homeRepository = new HomeRepository(); + } + + return homeRepository; + } + + public void getArticles(@NonNull ArticleContracts.GetArticleCallback getArticleCallback){ + ArticlePresenter articlePresenter = ArticlePresenter.getArticlePresenter(); + + articlePresenter.getArticles(getArticleCallback); + } + +} diff --git a/app/src/main/java/com/ssb/simplitend/cg_subscription/CgSubscriptionActivity.java b/app/src/main/java/com/ssb/simplitend/cg_subscription/CgSubscriptionActivity.java index fc21403..2c3359d 100644 --- a/app/src/main/java/com/ssb/simplitend/cg_subscription/CgSubscriptionActivity.java +++ b/app/src/main/java/com/ssb/simplitend/cg_subscription/CgSubscriptionActivity.java @@ -66,28 +66,54 @@ public class CgSubscriptionActivity extends AppCompatActivity clickEvents(); + // selecting default yearly pack + binding.yearCheck.setSelected(true); } private void clickEvents() { binding.makePayment.setOnClickListener(view -> { payForSubscription(); }); + + binding.yearCard.setOnClickListener(v -> { + if (!binding.yearCheck.isSelected()){ + // not selected + binding.monthCheck.setSelected(false); + binding.yearCheck.setSelected(true); + } + }); + + binding.monthCard.setOnClickListener(v -> { + if (!binding.monthCheck.isActivated()){ + binding.yearCheck.setSelected(false); + binding.monthCheck.setSelected(true); + } + }); + } private void payForSubscription() { - if (careGiverData == null){ + if (careGiverData == null) { Toast.makeText(this, "Something went wrong", Toast.LENGTH_SHORT).show(); return; } -// int position = binding.viewPager.getCurrentItem(); -// if (subscriptionPlans == null || position < 0 || position >= subscriptionPlans.size()) { -// Toast.makeText(this, "Couldn't load plan.", Toast.LENGTH_SHORT).show(); -// return; -// } + if (!binding.monthCheck.isSelected() && !binding.yearCheck.isSelected()){ + Toast.makeText(this, "Please select a plan", Toast.LENGTH_SHORT).show(); + return; + } int position = 0; + if (binding.yearCheck.isSelected()){ + position = 1; + } + + if (position >= subscriptionPlans.size()){ + Toast.makeText(this, "Something went wrong", Toast.LENGTH_SHORT).show(); + return; + } + progressDialog.setTitle("Please wait..."); progressDialog.setMessage("while we take you to the payment gateway."); progressDialog.setCancelable(false); @@ -132,18 +158,6 @@ public class CgSubscriptionActivity extends AppCompatActivity } private void initViews() { -// binding.viewPager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() { -// @Override -// public void onPageSelected(int position) { -// super.onPageSelected(position); -// if (subscriptionPlans == null -// || position < 0 || position >= subscriptionPlans.size()) return; -// -// String btn_text = "Make payment $" + subscriptionPlans.get(position).plan_value; -// binding.makePayment.setText(btn_text); -// } -// }); - // loading subscription plans progressDialog = new ProgressDialog(this); @@ -152,7 +166,6 @@ public class CgSubscriptionActivity extends AppCompatActivity progressDialog.setCancelable(false); progressDialog.show(); - String token = "Bearer " + AppUtil.getCgToken(this); presenter.getSubscriptionPlans(token, this); @@ -179,7 +192,7 @@ public class CgSubscriptionActivity extends AppCompatActivity } private void createSubscription() { - if (this.stripe_price_id == null || this.payment_intent_id == null){ + if (this.stripe_price_id == null || this.payment_intent_id == null) { // something went wrong Toast.makeText(this, "Something went wrong", Toast.LENGTH_SHORT).show(); return; @@ -246,11 +259,6 @@ public class CgSubscriptionActivity extends AppCompatActivity public void onSubscriptionFetched(ArrayList subscriptionPlans) { this.subscriptionPlans = subscriptionPlans; progressDialog.dismiss(); - -// // loading plans -// PlanAdapter planAdapter = new PlanAdapter(subscriptionPlans); -// binding.viewPager.setAdapter(planAdapter); -// binding.circleIndicator.setViewPager(binding.viewPager); } @Override @@ -263,7 +271,7 @@ public class CgSubscriptionActivity extends AppCompatActivity @Override public void onSubscriptionCreated() { // statically changing the flag of subscription to 1 - if (careGiverData != null){ + if (careGiverData != null) { careGiverData.isCaregiverTakeSubscription = 1; } diff --git a/app/src/main/java/com/ssb/simplitend/faqs/FAQ_Activity.java b/app/src/main/java/com/ssb/simplitend/faqs/FAQ_Activity.java index 958ff9d..0790c14 100644 --- a/app/src/main/java/com/ssb/simplitend/faqs/FAQ_Activity.java +++ b/app/src/main/java/com/ssb/simplitend/faqs/FAQ_Activity.java @@ -5,6 +5,7 @@ import androidx.recyclerview.widget.LinearLayoutManager; import android.app.ProgressDialog; import android.os.Bundle; +import android.view.View; import android.widget.Toast; import com.ssb.simplitend.R; @@ -19,8 +20,6 @@ public class FAQ_Activity extends AppCompatActivity implements FAQContracts.GETF private FAQsPresenter presenter; - private ProgressDialog progressDialog; - private FAQAdapter faqAdapter; @Override @@ -40,8 +39,6 @@ public class FAQ_Activity extends AppCompatActivity implements FAQContracts.GETF } private void initViews() { - progressDialog = new ProgressDialog(this); - binding.faqsRv.setLayoutManager(new LinearLayoutManager(this)); faqAdapter = new FAQAdapter(); binding.faqsRv.setAdapter(faqAdapter); @@ -54,17 +51,20 @@ public class FAQ_Activity extends AppCompatActivity implements FAQContracts.GETF } private void getFAQs() { - progressDialog.setTitle("Please wait..."); - progressDialog.setMessage("while we fetch the FAQs"); - progressDialog.setCancelable(false); - progressDialog.show(); + binding.progressBar.setVisibility(View.VISIBLE); + binding.noFaqs.setVisibility(View.GONE); presenter.getFAQs(this); } @Override public void onFAQsFetched(ArrayList faqResults) { - progressDialog.dismiss(); + binding.progressBar.setVisibility(View.GONE); + binding.noFaqs.setVisibility(View.GONE); + + if (faqResults.isEmpty()){ + binding.noFaqs.setVisibility(View.VISIBLE); + } faqAdapter.submitList(faqResults); @@ -72,7 +72,8 @@ public class FAQ_Activity extends AppCompatActivity implements FAQContracts.GETF @Override public void onFAQsFetchedFailed(Throwable t, String message) { - progressDialog.dismiss(); + binding.progressBar.setVisibility(View.GONE); + binding.noFaqs.setVisibility(View.VISIBLE); Toast.makeText(this, "" + message, Toast.LENGTH_SHORT).show(); } diff --git a/app/src/main/res/drawable/article_home_tint.xml b/app/src/main/res/drawable/article_home_tint.xml new file mode 100644 index 0000000..5e6ff8c --- /dev/null +++ b/app/src/main/res/drawable/article_home_tint.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_dash_small.xml b/app/src/main/res/drawable/ic_dash_small.xml new file mode 100644 index 0000000..db9941b --- /dev/null +++ b/app/src/main/res/drawable/ic_dash_small.xml @@ -0,0 +1,12 @@ + + + diff --git a/app/src/main/res/drawable/ic_home_notification.xml b/app/src/main/res/drawable/ic_home_notification.xml new file mode 100644 index 0000000..af708b5 --- /dev/null +++ b/app/src/main/res/drawable/ic_home_notification.xml @@ -0,0 +1,44 @@ + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_pill.xml b/app/src/main/res/drawable/ic_pill.xml new file mode 100644 index 0000000..e14a1ba --- /dev/null +++ b/app/src/main/res/drawable/ic_pill.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/sub_check.xml b/app/src/main/res/drawable/sub_check.xml index 1aa59b9..9402c23 100644 --- a/app/src/main/res/drawable/sub_check.xml +++ b/app/src/main/res/drawable/sub_check.xml @@ -1,11 +1,17 @@ - + - + + + - + + + - \ No newline at end of file + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/sub_check_drawable.xml b/app/src/main/res/drawable/sub_check_drawable.xml new file mode 100644 index 0000000..175712e --- /dev/null +++ b/app/src/main/res/drawable/sub_check_drawable.xml @@ -0,0 +1,10 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/sub_uncheck.xml b/app/src/main/res/drawable/sub_uncheck.xml new file mode 100644 index 0000000..68cc19f --- /dev/null +++ b/app/src/main/res/drawable/sub_uncheck.xml @@ -0,0 +1,14 @@ + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_article_shower.xml b/app/src/main/res/layout/activity_article_shower.xml index 1ac309a..fc8ef85 100644 --- a/app/src/main/res/layout/activity_article_shower.xml +++ b/app/src/main/res/layout/activity_article_shower.xml @@ -27,4 +27,13 @@ android:layout_below="@id/toolbar" /> + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_articles.xml b/app/src/main/res/layout/activity_articles.xml index bc13880..93edd9a 100644 --- a/app/src/main/res/layout/activity_articles.xml +++ b/app/src/main/res/layout/activity_articles.xml @@ -74,6 +74,38 @@ + + + + + + + + @@ -30,6 +29,38 @@ android:textSize="@dimen/_18ssp" android:textColor="@color/black" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/cg_subscription_layout.xml b/app/src/main/res/layout/cg_subscription_layout.xml index 03ca1fc..7f814d4 100644 --- a/app/src/main/res/layout/cg_subscription_layout.xml +++ b/app/src/main/res/layout/cg_subscription_layout.xml @@ -3,8 +3,8 @@ xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" - android:orientation="vertical" - android:background="@color/white"> + android:background="@color/white" + android:orientation="vertical"> + android:overScrollMode="never" + android:scrollbars="none"> - - android:fontFamily="@font/nunito_bold" - android:text="@string/year" - android:textColor="@color/black" - android:textSize="@dimen/_14ssp" + - /> + + + @@ -194,6 +220,7 @@ - - android:fontFamily="@font/nunito_bold" - android:text="@string/monthly" - android:textColor="@color/black" - android:textSize="@dimen/_14ssp" + + android:src="@drawable/sub_check_drawable" + + /> + + + + diff --git a/app/src/main/res/raw/anim_pulse.gif b/app/src/main/res/raw/anim_pulse.gif new file mode 100644 index 0000000..d47276c Binary files /dev/null and b/app/src/main/res/raw/anim_pulse.gif differ diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 151948f..c4419ed 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -370,6 +370,12 @@ Monthly $5.95 /year + On going activity + Upcoming activity + None + view more + No articles found! + No FAQs found! Kms