/*
* Copyright (c) 2014. The Trustees of Indiana University.
*
* This version of the code is licensed under the MPL 2.0 Open Source license with additional
* healthcare disclaimer. If the user is an entity intending to commercialize any application
* that uses this code in a for-profit venture, please contact the copyright holder.
*/
package com.muzima.view.cohort;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.widget.Toast;
import android.view.Menu;
import android.view.MenuItem;
import com.muzima.R;
import com.muzima.adapters.cohort.CohortPagerAdapter;
import com.muzima.utils.Fonts;
import com.muzima.utils.NetworkUtils;
import com.muzima.view.BroadcastListenerActivity;
import com.muzima.view.custom.PagerSlidingTabStrip;
import static com.muzima.utils.Constants.DataSyncServiceConstants;
import static com.muzima.utils.Constants.DataSyncServiceConstants.SyncStatusConstants;
public class CohortActivity extends BroadcastListenerActivity {
private static final String TAG = "CohortActivity";
private ViewPager viewPager;
private CohortPagerAdapter cohortPagerAdapter;
private PagerSlidingTabStrip pagerTabsLayout;
private MenuItem menubarLoadButton;
private boolean syncInProgress;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_with_pager);
initPager();
initPagerIndicator();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.cohort_list_menu, menu);
menubarLoadButton = menu.findItem(R.id.menu_load);
menubarLoadButton.setVisible(false);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_load:
if (!NetworkUtils.isConnectedToNetwork(this)) {
Toast.makeText(this, R.string.error_local_connection_unavailable, Toast.LENGTH_SHORT).show();
return true;
}
if (syncInProgress) {
Toast.makeText(this, getString(R.string.info_cohort_fetch_in_progress), Toast.LENGTH_SHORT).show();
return true;
}
syncCohortsInBackgroundService();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
@Override
protected void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
int syncStatus = intent.getIntExtra(DataSyncServiceConstants.SYNC_STATUS, SyncStatusConstants.UNKNOWN_ERROR);
int syncType = intent.getIntExtra(DataSyncServiceConstants.SYNC_TYPE, -1);
if (syncType == DataSyncServiceConstants.SYNC_COHORTS) {
hideProgressbar();
syncInProgress = false;
if (syncStatus == SyncStatusConstants.SUCCESS) {
cohortPagerAdapter.onCohortDownloadFinish();
}
} else if (syncType == DataSyncServiceConstants.SYNC_PATIENTS_FULL_DATA) {
if (syncStatus == SyncStatusConstants.SUCCESS) {
cohortPagerAdapter.onPatientsDownloadFinish();
}
} else if (syncType == DataSyncServiceConstants.SYNC_ENCOUNTERS) {
hideProgressbar();
}
}
public void hideProgressbar() {
menubarLoadButton.setActionView(null);
}
public void showProgressBar() {
menubarLoadButton.setActionView(R.layout.refresh_menuitem);
}
private void initPager() {
viewPager = (ViewPager) findViewById(R.id.pager);
cohortPagerAdapter = new CohortPagerAdapter(getApplicationContext(), getSupportFragmentManager());
cohortPagerAdapter.initPagerViews();
viewPager.setAdapter(cohortPagerAdapter);
}
private void initPagerIndicator() {
pagerTabsLayout = (PagerSlidingTabStrip) findViewById(R.id.pager_indicator);
pagerTabsLayout.setTextColor(Color.WHITE);
pagerTabsLayout.setTextSize((int) getResources().getDimension(R.dimen.pager_indicator_text_size));
pagerTabsLayout.setSelectedTextColor(getResources().getColor(R.color.tab_indicator));
pagerTabsLayout.setTypeface(Fonts.roboto_medium(this), -1);
pagerTabsLayout.setViewPager(viewPager);
viewPager.setCurrentItem(0);
pagerTabsLayout.markCurrentSelected(0);
pagerTabsLayout.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener(){
@Override
public void onPageSelected(int position) {
onPageChange(position);
}
});
}
private void onPageChange(int position) {
if (menubarLoadButton == null) {
return;
}
switch (position) {
case CohortPagerAdapter.TAB_SYNCED:
cohortPagerAdapter.reinitializeAllCohortsTab();
menubarLoadButton.setVisible(false);
break;
case CohortPagerAdapter.TAB_All:
menubarLoadButton.setVisible(true);
break;
}
}
private void syncCohortsInBackgroundService() {
syncInProgress = true;
cohortPagerAdapter.onCohortDownloadStart();
showProgressBar();
new SyncCohortsIntent(this).start();
}
}