This commit is contained in:
2023-07-27 20:50:41 +05:30
parent c824482282
commit 78b2592d26
44 changed files with 976 additions and 260 deletions

View File

@@ -1,48 +1,49 @@
package com.ssb.simplitend.caregiverdashboard;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.drawerlayout.widget.DrawerLayout;
import androidx.lifecycle.ViewModelProvider;
import android.animation.ObjectAnimator;
import android.content.res.ColorStateList;
import android.os.Bundle;
import android.os.Handler;
import android.view.MotionEvent;
import android.view.Menu;
import android.view.View;
import android.view.ViewTreeObserver;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.content.res.AppCompatResources;
import androidx.core.content.res.ResourcesCompat;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.ViewModelProvider;
import com.ssb.simplitend.R;
import com.ssb.simplitend.caregiverdashboard.fragments.CaregiverChatsFragment;
import com.ssb.simplitend.caregiverdashboard.fragments.DashBoardFragment;
import com.ssb.simplitend.caregiverdashboard.fragments.MyPatientFragment;
import com.ssb.simplitend.caregiverdashboard.mvvm.CaregiverMainViewModel;
import com.ssb.simplitend.databinding.CaregiverDashboardBinding;
import com.yarolegovich.slidingrootnav.SlidingRootNav;
import com.ssb.simplitend.customsviews.HomeBottomNav;
import com.ssb.simplitend.customsviews.MenuItem;
import com.ssb.simplitend.databinding.CaregiverDashboardActivityBinding;
import com.ssb.simplitend.databinding.CaregiverDashboardMenuBinding;
import com.yarolegovich.slidingrootnav.SlidingRootNavBuilder;
import com.yarolegovich.slidingrootnav.callback.DragStateListener;
import com.yarolegovich.slidingrootnav.util.DrawerListenerAdapter;
public class CaregiverDashActivity extends AppCompatActivity implements
DragStateListener{
DragStateListener,
HomeBottomNav.OnBottomNavItemSelectListener {
// view binding
protected CaregiverDashboardBinding binding;
protected CaregiverDashboardActivityBinding binding;
private CaregiverDashboardMenuBinding menuBinding;
protected CaregiverMainViewModel viewModel;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = CaregiverDashboardBinding.inflate(getLayoutInflater());
binding = CaregiverDashboardActivityBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
binding.btn.setOnClickListener(view -> {
ObjectAnimator objAnim = ObjectAnimator.ofFloat(view, "translationX", -100f);
objAnim.setDuration(100);
objAnim.start();
});
initViews();
clickEvents();
}
private void initViews() {
@@ -50,16 +51,50 @@ public class CaregiverDashActivity extends AppCompatActivity implements
// viewmodel
viewModel = new ViewModelProvider(this).get(CaregiverMainViewModel.class);
// inflating menu view
menuBinding = CaregiverDashboardMenuBinding.inflate(getLayoutInflater());
// sliding navigation bar
viewModel.slidingRootNav = null;
viewModel.slidingRootNav = new SlidingRootNavBuilder(this)
.withMenuLayout(R.layout.caregiver_dashboard_menu)
.withMenuView(menuBinding.getRoot())
.addDragStateListener(this)
.withToolbarMenuToggle(binding.toolbar)
.withRootViewScale(0.8f)
.withDragDistance(250)
.inject();
binding.bottomNav.setItemSelectListener(this);
// initializing dashboard fragment
replaceFragment(new DashBoardFragment());
}
private void clickEvents() {
// menu click events
menuBinding.close.setOnClickListener(v -> {
if (viewModel.slidingRootNav.isMenuOpened()){
viewModel.slidingRootNav.closeMenu(true);
}
});
// content click events
binding.tint.setOnClickListener(v -> {
if (viewModel.slidingRootNav.isMenuOpened()){
viewModel.slidingRootNav.closeMenu(true);
binding.tint.setVisibility(View.GONE);
}
});
}
private void replaceFragment(Fragment fragment){
getSupportFragmentManager().beginTransaction()
.replace(R.id.fcv_cg_home, fragment)
.commitAllowingStateLoss();
}
// slide bar drag callbacks
@Override
public void onDragStart() {
@@ -70,8 +105,35 @@ public class CaregiverDashActivity extends AppCompatActivity implements
public void onDragEnd(boolean isMenuOpened) {
if (isMenuOpened){
binding.getRoot().setRadius(30);
binding.tint.setVisibility(View.VISIBLE);
}else{
binding.getRoot().setRadius(0);
binding.tint.setVisibility(View.GONE);
}
}
@Override
public void onBottomNavItemSelected(MenuItem selectedItem) {
if (selectedItem == MenuItem.DASHBOARD){
replaceFragment(new DashBoardFragment());
// setting up toolbar accordingly
binding.toolbar.setNavigationIcon(AppCompatResources.getDrawable(this, R.drawable.ic_menu));
binding.toolbar.setNavigationIconTint(getResources().getColor(R.color.black));
binding.toolbar.setTitle("Welcome Aditya");
}else if (selectedItem == MenuItem.MY_PATIENT){
replaceFragment(new MyPatientFragment());
// setting up toolbar accordingly
binding.toolbar.setTitle(null);
binding.toolbar.setNavigationIcon(AppCompatResources.getDrawable(this, R.drawable.ic_menu));
binding.toolbar.setNavigationIconTint(getResources().getColor(R.color.white));
}else if (selectedItem == MenuItem.CHATS){
replaceFragment(new CaregiverChatsFragment());
binding.toolbar.setNavigationIcon(AppCompatResources.getDrawable(this, R.drawable.ic_menu));
binding.toolbar.setNavigationIconTint(getResources().getColor(R.color.black));
binding.toolbar.setTitle("Chats");
}
}
}

View File

@@ -0,0 +1,30 @@
package com.ssb.simplitend.caregiverdashboard.fragments;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import com.ssb.simplitend.databinding.CaregiverChatsFragmentBinding;
public class CaregiverChatsFragment extends Fragment {
// view binding
protected CaregiverChatsFragmentBinding binding;
public CaregiverChatsFragment(){
// required empty
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
binding = CaregiverChatsFragmentBinding.inflate(inflater, container, false);
return binding.getRoot();
}
}

View File

@@ -0,0 +1,30 @@
package com.ssb.simplitend.caregiverdashboard.fragments;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import com.ssb.simplitend.databinding.CaregiverDashFragmentBinding;
public class DashBoardFragment extends Fragment {
// view binding
protected CaregiverDashFragmentBinding binding;
public DashBoardFragment(){
// required empty
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
binding = CaregiverDashFragmentBinding.inflate(inflater, container, false);
return binding.getRoot();
}
}

View File

@@ -0,0 +1,31 @@
package com.ssb.simplitend.caregiverdashboard.fragments;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import com.ssb.simplitend.databinding.CaregiverDashFragmentBinding;
import com.ssb.simplitend.databinding.MyPatientFragmentBinding;
public class MyPatientFragment extends Fragment {
// view binding
protected MyPatientFragmentBinding binding;
public MyPatientFragment(){
// required empty
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
binding = MyPatientFragmentBinding.inflate(inflater, container, false);
return binding.getRoot();
}
}

View File

@@ -2,6 +2,7 @@ package com.ssb.simplitend.caregiverdashboard.mvvm;
import androidx.lifecycle.ViewModel;
import com.google.android.material.appbar.MaterialToolbar;
import com.yarolegovich.slidingrootnav.SlidingRootNav;
public class CaregiverMainViewModel extends ViewModel {

View File

@@ -4,14 +4,26 @@ import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.LinearLayout;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.daimajia.androidanimations.library.Techniques;
import com.daimajia.androidanimations.library.YoYo;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.ssb.simplitend.R;
public class HomeBottomNav extends FrameLayout {
// views
private FloatingActionButton dashBtnBig, patientBig, chatsBig;
private LinearLayout dashSmall, patientSmall, chatsSmall;
// fields
private MenuItem selected_item = MenuItem.DASHBOARD;
private OnBottomNavItemSelectListener itemSelectListener;
// constructors
public HomeBottomNav(@NonNull Context context) {
@@ -31,6 +43,135 @@ public class HomeBottomNav extends FrameLayout {
private void initViews(){
View view = inflate(getContext(), R.layout.home_bottom_nav, this);
dashBtnBig = view.findViewById(R.id.dadh_big);
dashSmall = view.findViewById(R.id.dash_small);
patientBig = view.findViewById(R.id.patient_big);
patientSmall = view.findViewById(R.id.patient_small);
chatsBig = view.findViewById(R.id.chat_big);
chatsSmall = view.findViewById(R.id.chats_small);
clickEvents();
}
private void clickEvents() {
dashSmall.setOnClickListener(v -> {
selectMenuItem(MenuItem.DASHBOARD);
if (itemSelectListener != null) {
itemSelectListener.onBottomNavItemSelected(MenuItem.DASHBOARD);
}
});
chatsSmall.setOnClickListener(v -> {
selectMenuItem(MenuItem.CHATS);
if (itemSelectListener != null) {
itemSelectListener.onBottomNavItemSelected(MenuItem.CHATS);
}
});
patientSmall.setOnClickListener(v -> {
selectMenuItem(MenuItem.MY_PATIENT);
if (itemSelectListener != null) {
itemSelectListener.onBottomNavItemSelected(MenuItem.MY_PATIENT);
}
});
}
public void setItemSelectListener(OnBottomNavItemSelectListener itemSelectListener) {
this.itemSelectListener = itemSelectListener;
}
private void selectMenuItem(MenuItem menuitem){
clearItemSelection(this.selected_item);
this.selected_item = menuitem;
FloatingActionButton selectedBig = null;
LinearLayout selectedSmall = null;
switch (menuitem){
case DASHBOARD:
selectedBig = dashBtnBig;
selectedSmall = dashSmall;
break;
case CHATS:
selectedBig = chatsBig;
selectedSmall = chatsSmall;
break;
case MY_PATIENT:
selectedBig = patientBig;
selectedSmall = patientSmall;
break;
}
final FloatingActionButton final_selectedBig = selectedBig;
final LinearLayout final_selectedSmall = selectedSmall;
if (final_selectedBig != null && final_selectedSmall != null){
YoYo.with(Techniques.SlideOutUp)
.duration(100)
.onEnd(animator -> {
final_selectedBig.setVisibility(VISIBLE);
final_selectedSmall.setVisibility(GONE);
YoYo.with(Techniques.SlideInUp)
.duration(100)
.playOn(final_selectedBig);
})
.playOn(final_selectedSmall);
}
}
private void clearItemSelection(MenuItem selected_item) {
FloatingActionButton selectedBig = null;
LinearLayout selectedSmall = null;
switch (selected_item){
case DASHBOARD:
selectedBig = dashBtnBig;
selectedSmall = dashSmall;
break;
case CHATS:
selectedBig = chatsBig;
selectedSmall = chatsSmall;
break;
case MY_PATIENT:
selectedBig = patientBig;
selectedSmall = patientSmall;
break;
}
final FloatingActionButton final_selectedBig = selectedBig;
final LinearLayout final_selectedSmall = selectedSmall;
if (final_selectedBig != null && final_selectedSmall != null){
YoYo.with(Techniques.SlideOutDown)
.duration(100)
.onEnd(animator -> {
final_selectedBig.setVisibility(GONE);
final_selectedSmall.setVisibility(VISIBLE);
YoYo.with(Techniques.SlideInDown)
.duration(100)
.playOn(final_selectedSmall);
})
.playOn(final_selectedBig);
}
}
// callback interfaces
@FunctionalInterface
public interface OnBottomNavItemSelectListener{
void onBottomNavItemSelected(MenuItem selectedItem);
}
}

View File

@@ -0,0 +1,7 @@
package com.ssb.simplitend.customsviews;
public enum MenuItem {
MY_PATIENT,
DASHBOARD,
CHATS
}

View File

@@ -1,4 +1,4 @@
package com.ssb.simplitend.careperson_dashboard;
package com.ssb.simplitend.patient_dashboard;
import androidx.appcompat.app.AppCompatActivity;
@@ -6,7 +6,7 @@ import android.os.Bundle;
import com.ssb.simplitend.R;
public class DashBoardActivityCP extends AppCompatActivity {
public class DashBoardActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {

View File

@@ -1,4 +1,4 @@
package com.ssb.simplitend.careperson_dashboard.chats;
package com.ssb.simplitend.patient_dashboard.chats;
import android.os.Bundle;
import android.view.LayoutInflater;
@@ -12,10 +12,10 @@ import androidx.fragment.app.Fragment;
import androidx.navigation.Navigation;
import com.ssb.simplitend.R;
import com.ssb.simplitend.careperson_dashboard.chats.mvvm.Author;
import com.ssb.simplitend.careperson_dashboard.chats.mvvm.ChatItem;
import com.ssb.simplitend.careperson_dashboard.chats.mvvm.Message;
import com.ssb.simplitend.careperson_dashboard.chats.mvvm.Receiver;
import com.ssb.simplitend.patient_dashboard.chats.mvvm.Author;
import com.ssb.simplitend.patient_dashboard.chats.mvvm.ChatItem;
import com.ssb.simplitend.patient_dashboard.chats.mvvm.Message;
import com.ssb.simplitend.patient_dashboard.chats.mvvm.Receiver;
import com.ssb.simplitend.databinding.ChatFragmentBinding;
import com.stfalcon.chatkit.messages.MessagesListAdapter;

View File

@@ -1,4 +1,4 @@
package com.ssb.simplitend.careperson_dashboard.chats;
package com.ssb.simplitend.patient_dashboard.chats;
import android.view.LayoutInflater;
import android.view.ViewGroup;
@@ -8,7 +8,7 @@ import androidx.recyclerview.widget.DiffUtil;
import androidx.recyclerview.widget.ListAdapter;
import androidx.recyclerview.widget.RecyclerView;
import com.ssb.simplitend.careperson_dashboard.chats.mvvm.ChatItem;
import com.ssb.simplitend.patient_dashboard.chats.mvvm.ChatItem;
import com.ssb.simplitend.databinding.ChatCardViewholderBinding;
public class ChatListAdapter extends ListAdapter<ChatItem, ChatListAdapter.ChatCardViewHolder> {

View File

@@ -1,6 +1,6 @@
package com.ssb.simplitend.careperson_dashboard.chats;
package com.ssb.simplitend.patient_dashboard.chats;
import static com.ssb.simplitend.careperson_dashboard.chats.ChatFragment.CHAT_ITEM_KEY;
import static com.ssb.simplitend.patient_dashboard.chats.ChatFragment.CHAT_ITEM_KEY;
import android.os.Bundle;
import android.view.LayoutInflater;
@@ -16,8 +16,8 @@ import androidx.recyclerview.widget.LinearLayoutManager;
import com.ssb.simplitend.R;
import com.ssb.simplitend.apputils.AppUtil;
import com.ssb.simplitend.careperson_dashboard.chats.mvvm.ChatItem;
import com.ssb.simplitend.careperson_dashboard.chats.mvvm.ChatListViewModel;
import com.ssb.simplitend.patient_dashboard.chats.mvvm.ChatItem;
import com.ssb.simplitend.patient_dashboard.chats.mvvm.ChatListViewModel;
import com.ssb.simplitend.databinding.ChatListFragmentBinding;
public class ChatListFragment extends Fragment implements ChatListAdapter.OnChatItemClickListener {

View File

@@ -1,4 +1,4 @@
package com.ssb.simplitend.careperson_dashboard.chats.mvvm;
package com.ssb.simplitend.patient_dashboard.chats.mvvm;
import com.ssb.simplitend.R;
import com.stfalcon.chatkit.commons.models.IUser;

View File

@@ -1,4 +1,4 @@
package com.ssb.simplitend.careperson_dashboard.chats.mvvm;
package com.ssb.simplitend.patient_dashboard.chats.mvvm;
import java.io.Serializable;

View File

@@ -1,8 +1,8 @@
package com.ssb.simplitend.careperson_dashboard.chats.mvvm;
package com.ssb.simplitend.patient_dashboard.chats.mvvm;
import androidx.lifecycle.ViewModel;
import com.ssb.simplitend.careperson_dashboard.chats.ChatListAdapter;
import com.ssb.simplitend.patient_dashboard.chats.ChatListAdapter;
import java.util.ArrayList;

View File

@@ -1,4 +1,4 @@
package com.ssb.simplitend.careperson_dashboard.chats.mvvm;
package com.ssb.simplitend.patient_dashboard.chats.mvvm;
import com.stfalcon.chatkit.commons.models.IMessage;
import com.stfalcon.chatkit.commons.models.IUser;

View File

@@ -1,4 +1,4 @@
package com.ssb.simplitend.careperson_dashboard.chats.mvvm;
package com.ssb.simplitend.patient_dashboard.chats.mvvm;
import com.ssb.simplitend.R;
import com.stfalcon.chatkit.commons.models.IUser;

View File

@@ -1,4 +1,4 @@
package com.ssb.simplitend.careperson_dashboard.fragments;
package com.ssb.simplitend.patient_dashboard.fragments;
import android.os.Bundle;
import android.view.LayoutInflater;

View File

@@ -16,7 +16,7 @@ import androidx.navigation.Navigation;
import com.ssb.simplitend.R;
import com.ssb.simplitend.apputils.AppUtil;
import com.ssb.simplitend.apputils.RetrofitHelper;
import com.ssb.simplitend.careperson_dashboard.DashBoardActivityCP;
import com.ssb.simplitend.patient_dashboard.DashBoardActivity;
import com.ssb.simplitend.databinding.ProfileProgressFragmentBinding;
import com.ssb.simplitend.welcome.mvvm.models.CallResponse;
import com.ssb.simplitend.welcome.mvvm.models.PatientData;
@@ -102,7 +102,7 @@ public class ProfileProgressFragment extends Fragment implements ProfileContract
);
binding.skipToDashboard.setOnClickListener(v -> {
Intent intent = new Intent(requireActivity(), DashBoardActivityCP.class);
Intent intent = new Intent(requireActivity(), DashBoardActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);
requireActivity().finish();

View File

@@ -18,7 +18,7 @@ import androidx.navigation.Navigation;
import com.ssb.simplitend.R;
import com.ssb.simplitend.apputils.AppUtil;
import com.ssb.simplitend.apputils.EditTextErrorRemover;
import com.ssb.simplitend.careperson_dashboard.DashBoardActivityCP;
import com.ssb.simplitend.patient_dashboard.DashBoardActivity;
import com.ssb.simplitend.databinding.SignInFragmentBinding;
import com.ssb.simplitend.welcome.mvvm.WelcomeContracts;
import com.ssb.simplitend.welcome.mvvm.WelcomeViewModel;
@@ -138,7 +138,7 @@ public class SignInFragment extends Fragment implements WelcomeContracts.Registe
Toast.makeText(requireContext(), "Log in successful.", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(requireActivity(), DashBoardActivityCP.class);
Intent intent = new Intent(requireActivity(), DashBoardActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);
requireActivity().finish();