/*
* The contents of this file are subject to the OpenMRS Public License
* Version 1.0 (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://license.openmrs.org
*
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
* License for the specific language governing rights and limitations
* under the License.
*
* Copyright (C) OpenMRS, LLC. All Rights Reserved.
*/
package org.openmrs.mobile.activities.patientdashboard;
import android.content.res.Configuration;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.view.Menu;
import net.yanzm.mth.MaterialTabHost;
import org.openmrs.mobile.R;
import org.openmrs.mobile.activities.ACBaseActivity;
import org.openmrs.mobile.activities.patientdashboard.details.PatientDashboardDetailsPresenter;
import org.openmrs.mobile.activities.patientdashboard.details.PatientDetailsFragment;
import org.openmrs.mobile.activities.patientdashboard.diagnosis.PatientDashboardDiagnosisPresenter;
import org.openmrs.mobile.activities.patientdashboard.diagnosis.PatientDiagnosisFragment;
import org.openmrs.mobile.activities.patientdashboard.visits.PatientDashboardVisitsPresenter;
import org.openmrs.mobile.activities.patientdashboard.visits.PatientVisitsFragment;
import org.openmrs.mobile.activities.patientdashboard.vitals.PatientDashboardVitalsPresenter;
import org.openmrs.mobile.activities.patientdashboard.vitals.PatientVitalsFragment;
import org.openmrs.mobile.utilities.ApplicationConstants;
import org.openmrs.mobile.utilities.TabUtil;
import java.util.ArrayList;
public class PatientDashboardActivity extends ACBaseActivity {
private String mId;
public PatientDashboardContract.PatientDashboardMainPresenter mPresenter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_patient_dashboard);
getSupportActionBar().setElevation(0);
Bundle patientBundle = savedInstanceState;
if (null != patientBundle) {
patientBundle.getString(ApplicationConstants.BundleKeys.PATIENT_ID_BUNDLE);
} else {
patientBundle = getIntent().getExtras();
}
mId = String.valueOf(patientBundle.get(ApplicationConstants.BundleKeys.PATIENT_ID_BUNDLE));
initViewPager(new PatientDashboardPagerAdapter(getSupportFragmentManager(), mId));
}
@Override
public void onAttachFragment(Fragment fragment) {
attachPresenterToFragment(fragment);
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putString(ApplicationConstants.BundleKeys.PATIENT_ID_BUNDLE, mId);
}
@Override
public void onConfigurationChanged(final Configuration config) {
super.onConfigurationChanged(config);
TabUtil.setHasEmbeddedTabs(getSupportActionBar(), getWindowManager(), TabUtil.MIN_SCREEN_WIDTH_FOR_PATIENTDASHBOARDACTIVITY);
}
@Override
public void onBackPressed() {
super.onBackPressed();
finish();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
getMenuInflater().inflate(R.menu.patient_dashboard_menu, menu);
return true;
}
private void initViewPager(PatientDashboardPagerAdapter adapter) {
MaterialTabHost tabHost = (MaterialTabHost) findViewById(R.id.tabhost);
tabHost.setType(MaterialTabHost.Type.FullScreenWidth);
for (int i = 0; i < adapter.getCount(); i++) {
tabHost.addTab(getTabNames().get(i).toUpperCase());
}
final ViewPager viewPager = (ViewPager) findViewById(R.id.pager);
viewPager.setAdapter(adapter);
viewPager.addOnPageChangeListener(tabHost);
tabHost.setOnTabChangeListener(new MaterialTabHost.OnTabChangeListener() {
@Override
public void onTabSelected(int position) {
viewPager.setCurrentItem(position);
}
});
}
private ArrayList<String> getTabNames() {
ArrayList<String> tabNames = new ArrayList<>();
tabNames.add(getString(R.string.patient_scroll_tab_details_label));
tabNames.add(getString(R.string.patient_scroll_tab_diagnosis_label));
tabNames.add(getString(R.string.patient_scroll_tab_visits_label));
tabNames.add(getString(R.string.patient_scroll_tab_vitals_label));
return tabNames;
}
private void attachPresenterToFragment(Fragment fragment) {
Bundle patientBundle = getIntent().getExtras();
String id = String.valueOf(patientBundle.get(ApplicationConstants.BundleKeys.PATIENT_ID_BUNDLE));
if (fragment instanceof PatientDetailsFragment) {
mPresenter = new PatientDashboardDetailsPresenter(id, ((PatientDetailsFragment) fragment));
}
else if (fragment instanceof PatientDiagnosisFragment) {
mPresenter = new PatientDashboardDiagnosisPresenter(id, ((PatientDiagnosisFragment) fragment));
}
else if (fragment instanceof PatientVisitsFragment) {
mPresenter = new PatientDashboardVisitsPresenter(id, ((PatientVisitsFragment) fragment));
}
else if (fragment instanceof PatientVitalsFragment){
mPresenter = new PatientDashboardVitalsPresenter(id, ((PatientVitalsFragment) fragment));
}
}
}