← Back to team overview

dhis-mobile-devs team mailing list archive

[Branch ~dhis-mobile-devs/dhis-mobile/lwuit-tracking] Rev 234: Port back fixes from Uganda 2.15 Tracker (Revision No. 135-144)

 

------------------------------------------------------------
revno: 234
committer: sherylyn.marie
branch nick: lwuit-tracking
timestamp: Wed 2014-09-03 19:23:09 +0800
message:
  Port back fixes from Uganda 2.15 Tracker (Revision No. 135-144)
modified:
  src/org/hisp/dhis/mobile/model/OrgUnit.java
  src/org/hisp/dhis/mobile/model/Patient.java
  src/org/hisp/dhis/mobile/view/FindBeneficiaryView.java
  src/org/hisp/dhis/mobile/view/HistoryPersonListView.java
  src/org/hisp/dhis/mobile/view/PersonDashboardView.java
  src/org/hisp/dhis/mobile/view/PersonRegistrationView.java
  src/org/hisp/dhis/mobile/view/ProgramSelectView.java
  src/org/hisp/dhis/mobile/view/TrackingDataEntryView.java
  src/org/hisp/dhis/mobile/view/TrackingMainMenuView.java


--
lp:~dhis-mobile-devs/dhis-mobile/lwuit-tracking
https://code.launchpad.net/~dhis-mobile-devs/dhis-mobile/lwuit-tracking

Your team DHIS mobile developers is subscribed to branch lp:~dhis-mobile-devs/dhis-mobile/lwuit-tracking.
To unsubscribe from this branch go to https://code.launchpad.net/~dhis-mobile-devs/dhis-mobile/lwuit-tracking/+edit-subscription
=== modified file 'src/org/hisp/dhis/mobile/model/OrgUnit.java'
--- src/org/hisp/dhis/mobile/model/OrgUnit.java	2014-06-24 03:59:44 +0000
+++ src/org/hisp/dhis/mobile/model/OrgUnit.java	2014-09-03 11:23:09 +0000
@@ -64,6 +64,12 @@
     private String getMessageUrl;
 
     private String replyMessageUrl;
+    
+    private String downloadInterpretationUrl;
+    
+    private String postInterpretationUrl;
+    
+    private String postCommentUrl;
 
     private String updateContactUrl;
 
@@ -195,6 +201,21 @@
     {
         return replyMessageUrl;
     }
+    
+    public String getDownloadInterpretationUrl()
+    {
+    	return downloadInterpretationUrl;
+    }
+    
+    public String getPostInterpretationUrl()
+    {
+    	return postInterpretationUrl;
+    }
+    
+    public String getPostCommentUrl()
+    {
+    	return postCommentUrl;
+    }
 
     public String getUpdateContactUrl()
     {
@@ -306,6 +327,9 @@
         dataOutputStream.writeUTF( downloadMessageConversationUrl );
         dataOutputStream.writeUTF( getMessageUrl );
         dataOutputStream.writeUTF( replyMessageUrl );
+        dataOutputStream.writeUTF( downloadInterpretationUrl );
+        dataOutputStream.writeUTF( postInterpretationUrl );
+        dataOutputStream.writeUTF( postCommentUrl );
         dataOutputStream.writeUTF( updateContactUrl );
         dataOutputStream.writeUTF( findPatientUrl );
         dataOutputStream.writeUTF( registerPersonUrl );
@@ -382,6 +406,15 @@
         replyMessageUrl = dataInputStream.readUTF();
         LogMan.log( LogMan.DEBUG, "OrgUnit," + CLASS_TAG, "replyMessageUrl=" + replyMessageUrl );
 
+        downloadInterpretationUrl = dataInputStream.readUTF();
+        LogMan.log( LogMan.DEBUG, "OrgUnit," + CLASS_TAG, "downloadInterpretationUrl=" + downloadInterpretationUrl );
+
+        postInterpretationUrl = dataInputStream.readUTF();
+        LogMan.log( LogMan.DEBUG, "OrgUnit," + CLASS_TAG, "postInterpretationUrl=" + postInterpretationUrl );
+
+        postCommentUrl = dataInputStream.readUTF();
+        LogMan.log( LogMan.DEBUG, "OrgUnit," + CLASS_TAG, "postCommentUrl=" + postCommentUrl );
+        
         updateContactUrl = dataInputStream.readUTF();
         LogMan.log( LogMan.DEBUG, "OrgUnit," + CLASS_TAG, "updateContactUrl=" + updateContactUrl );
 

=== modified file 'src/org/hisp/dhis/mobile/model/Patient.java'
--- src/org/hisp/dhis/mobile/model/Patient.java	2014-05-22 07:59:58 +0000
+++ src/org/hisp/dhis/mobile/model/Patient.java	2014-09-03 11:23:09 +0000
@@ -90,6 +90,19 @@
     {
         this.enrollmentPrograms = enrollmentPrograms;
     }
+    
+    public boolean isEnrolledIn( Program program )
+    {
+        for ( int i = 0; i < enrollmentPrograms.size(); i++ )
+        {
+            ProgramInstance programInstance = (ProgramInstance) enrollmentPrograms.elementAt( i );
+            if ( programInstance.getProgramId() == program.getId() )
+            {
+                return true;
+            }
+        }
+        return false;
+    }
 
     public String getOrganisationUnitName()
     {

=== modified file 'src/org/hisp/dhis/mobile/view/FindBeneficiaryView.java'
--- src/org/hisp/dhis/mobile/view/FindBeneficiaryView.java	2014-04-03 01:58:41 +0000
+++ src/org/hisp/dhis/mobile/view/FindBeneficiaryView.java	2014-09-03 11:23:09 +0000
@@ -62,6 +62,9 @@
     implements ActionListener
 {
     private static final String CLASS_TAG = "FindBeneficiaryView";
+
+    private static final int MINIMUM_KEYWORD_LENGTH = 3;
+
     private Form mainForm;
 
     private TextField keywordTextField;
@@ -196,6 +199,13 @@
                         getNotification().setText( "(*) : Required Field" );
                         getMainForm().show();
                     }
+                    else if ( keyword.length() < MINIMUM_KEYWORD_LENGTH )
+                    {
+                        prepareView();
+                        getNotification().setText( "Keyword must be at least " + MINIMUM_KEYWORD_LENGTH + " characters." );
+                        getMainForm().show();
+                        
+                    }
                     else
                     {
                         nameBasedMIDlet.getWaitingView().showView();
@@ -232,31 +242,34 @@
                         // Program Selection
                         String tempURL = ConnectionManager.getUrl() + "/0";
                         ConnectionManager.setUrl( tempURL );
-//                        if ( ((String) programOptions.getSelectedItem()).equals( "All" ) )
-//                        {
-//                            String tempURL = ConnectionManager.getUrl() + "/0";
-//                            ConnectionManager.setUrl( tempURL );
-//                            tempURL = null;
-//
-//                            programIndex = 0;
-//                        }
-//                        else
-//                        {
-//                            for ( int i = 0; i < programVector.size(); i++ )
-//                            {
-//                                if ( ((String) programOptions.getSelectedItem()).equals( ((Model) (programVector
-//                                    .elementAt( i ))).getName() ) )
-//                                {
-//                                    String tempURL = ConnectionManager.getUrl() + "/"
-//                                        + ((Model) programVector.elementAt( i )).getId();
-//                                    ConnectionManager.setUrl( tempURL );
-//
-//                                    tempURL = null;
-//                                    programIndex = i + 1;
-//                                    break;
-//                                }
-//                            }
-//                        }
+                        // if ( ((String)
+                        // programOptions.getSelectedItem()).equals( "All" ) )
+                        // {
+                        // String tempURL = ConnectionManager.getUrl() + "/0";
+                        // ConnectionManager.setUrl( tempURL );
+                        // tempURL = null;
+                        //
+                        // programIndex = 0;
+                        // }
+                        // else
+                        // {
+                        // for ( int i = 0; i < programVector.size(); i++ )
+                        // {
+                        // if ( ((String)
+                        // programOptions.getSelectedItem()).equals( ((Model)
+                        // (programVector
+                        // .elementAt( i ))).getName() ) )
+                        // {
+                        // String tempURL = ConnectionManager.getUrl() + "/"
+                        // + ((Model) programVector.elementAt( i )).getId();
+                        // ConnectionManager.setUrl( tempURL );
+                        //
+                        // tempURL = null;
+                        // programIndex = i + 1;
+                        // break;
+                        // }
+                        // }
+                        // }
 
                         ConnectionManager.findPatientByName( keyword );
                         mainForm = null;

=== modified file 'src/org/hisp/dhis/mobile/view/HistoryPersonListView.java'
--- src/org/hisp/dhis/mobile/view/HistoryPersonListView.java	2014-05-28 11:14:44 +0000
+++ src/org/hisp/dhis/mobile/view/HistoryPersonListView.java	2014-09-03 11:23:09 +0000
@@ -35,6 +35,7 @@
 import org.hisp.dhis.mobile.model.Model;
 import org.hisp.dhis.mobile.model.ModelList;
 import org.hisp.dhis.mobile.model.Patient;
+import org.hisp.dhis.mobile.model.Program;
 import org.hisp.dhis.mobile.recordstore.PatientRecordStore;
 import org.hisp.dhis.mobile.ui.Text;
 
@@ -67,6 +68,8 @@
 
     private ModelList modelList;
 
+    private Program program;
+
     public HistoryPersonListView( DHISMIDlet dhisMIDlet )
     {
         super( dhisMIDlet );
@@ -87,7 +90,6 @@
         for ( int i = 0; i < offlinePatients.size(); i++ )
         {
             final Model patientModel = (Model) offlinePatients.elementAt( i );
-
             if ( !patientModel.getName().startsWith( trackedEntityName ) )
             {
                 trackedEntityName = patientModel.getName().substring( 0, patientModel.getName().indexOf( "/" ) );
@@ -103,35 +105,49 @@
 
             }
 
-            String patientInfo = patientModel.getName().substring( patientModel.getName().indexOf( "/" ) + 1 );
-            LinkButton personLink = new LinkButton( patientInfo );
-            /*
-             * name = null; birthday = null; patientInfo = null;
-             */
-            personLink.addActionListener( new ActionListener()
-            {
-                public void actionPerformed( ActionEvent ae )
+            Patient patient = null;
+            try
+            {
+                patient = PatientRecordStore.getPatient( patientModel.getId() );
+            }
+            catch ( Exception e )
+            {
+                LogMan.log( "UI," + CLASS_TAG, e );
+                e.printStackTrace();
+            }
+            if ( patient != null && patient.isEnrolledIn( program ) )
+            {
+                String patientInfo = patientModel.getName().substring( patientModel.getName().indexOf( "/" ) + 1 );
+                LinkButton personLink = new LinkButton( patientInfo );
+                /*
+                 * name = null; birthday = null; patientInfo = null;
+                 */
+                personLink.addActionListener( new ActionListener()
                 {
-                    nameBasedMIDlet.getWaitingView().showView();
-                    try
-                    {
-                        Patient patient = PatientRecordStore.getPatient( patientModel.getId() );
-                        nameBasedMIDlet.getPersonDashboardView().setPatient( patient );
-                        nameBasedMIDlet.getPersonDashboardView().setPreviousScreen( nameBasedMIDlet.HISTORY_PERSON_LIST_VIEW );
-                        nameBasedMIDlet.getPersonDashboardView().showView();
-                    }
-                    catch ( Exception e )
-                    {
-                        LogMan.log( "UI," + CLASS_TAG, e );
-                        e.printStackTrace();
-                    }
-                    mainForm = null;
-                    backCommand = null;
-                    modelList = null;
-                    System.gc();
-                }
-            } );
-            mainForm.addComponent( personLink );
+                    public void actionPerformed( ActionEvent ae )
+                    {
+                        nameBasedMIDlet.getWaitingView().showView();
+                        try
+                        {
+                            Patient patient = PatientRecordStore.getPatient( patientModel.getId() );
+                            nameBasedMIDlet.getPersonDashboardView().setPatient( patient );
+                            nameBasedMIDlet.getPersonDashboardView().setPreviousScreen(
+                                nameBasedMIDlet.HISTORY_PERSON_LIST_VIEW );
+                            nameBasedMIDlet.getPersonDashboardView().showView();
+                        }
+                        catch ( Exception e )
+                        {
+                            LogMan.log( "UI," + CLASS_TAG, e );
+                            e.printStackTrace();
+                        }
+                        mainForm = null;
+                        backCommand = null;
+                        modelList = null;
+                        System.gc();
+                    }
+                } );
+                mainForm.addComponent( personLink );
+            }
         }
     }
 
@@ -195,4 +211,14 @@
         this.modelList = modelList;
     }
 
+    public Program getProgram()
+    {
+        return program;
+    }
+
+    public void setProgram( Program program )
+    {
+        this.program = program;
+    }
+
 }

=== modified file 'src/org/hisp/dhis/mobile/view/PersonDashboardView.java'
--- src/org/hisp/dhis/mobile/view/PersonDashboardView.java	2014-06-24 03:59:44 +0000
+++ src/org/hisp/dhis/mobile/view/PersonDashboardView.java	2014-09-03 11:23:09 +0000
@@ -32,13 +32,8 @@
  * @version PersonDashboardView.java 3:03:11 PM Feb 15, 2013 $
  */
 
-import java.io.IOException;
 import java.util.Vector;
 
-import javax.microedition.rms.RecordStoreException;
-import javax.microedition.rms.RecordStoreFullException;
-import javax.microedition.rms.RecordStoreNotFoundException;
-
 import org.hisp.dhis.mobile.connection.ConnectionManager;
 import org.hisp.dhis.mobile.log.LogMan;
 import org.hisp.dhis.mobile.midlet.DHISMIDlet;
@@ -55,7 +50,10 @@
 import org.hisp.dhis.mobile.recordstore.ProgramRecordStore;
 import org.hisp.dhis.mobile.ui.Text;
 
+import com.sun.lwuit.Button;
 import com.sun.lwuit.Command;
+import com.sun.lwuit.Dialog;
+import com.sun.lwuit.Display;
 import com.sun.lwuit.Form;
 import com.sun.lwuit.Label;
 import com.sun.lwuit.TextArea;
@@ -83,6 +81,8 @@
 
     private int previousScreen;
 
+    private Dialog confirmDialog;
+
     public PersonDashboardView( DHISMIDlet dhisMIDlet )
     {
         super( dhisMIDlet );
@@ -171,6 +171,14 @@
         // lblEnrollmentRelationship.setSelectedStyle( labelStyle );
         // mainForm.addComponent( lblEnrollmentRelationship );
         // this.prepareEnrollmentRelationships();
+
+        Label spaceLabel1 = new Label( " " );
+        Label spaceLabel2 = new Label( " " );
+        Label spaceLabel3 = new Label( " " );
+        spaceLabel3.setFocusable( true );
+        mainForm.addComponent( spaceLabel1 );
+        mainForm.addComponent( spaceLabel2 );
+        mainForm.addComponent( spaceLabel3 );
     }
 
     public void showView()
@@ -404,11 +412,40 @@
                 {
                     public void actionPerformed( ActionEvent arg )
                     {
-                        namebasedMidlet.getWaitingView().showView();
-
-                        ConnectionManager.setUrl( namebasedMidlet.getCurrentOrgUnit().getEnrollProgramUrl() );
-
-                        ConnectionManager.enrollProgram( patient.getId(), program.getId(), program.getName() );
+                        confirmDialog = new Dialog();
+                        confirmDialog.setTitle( "Confirmation" );
+                        Button yButton = new Button( Text.YES() );
+                        Button nButton = new Button( Text.NO() );
+                        Label label = new Label( "Do you want to enroll in this program?" );
+
+                        yButton.addActionListener( new ActionListener()
+                        {
+
+                            public void actionPerformed( ActionEvent ae )
+                            {
+                                ConnectionManager.setUrl( namebasedMidlet.getCurrentOrgUnit().getEnrollProgramUrl() );
+
+                                ConnectionManager.enrollProgram( patient.getId(), program.getId(), program.getName() );
+                            }
+                        } );
+
+                        nButton.addActionListener( new ActionListener()
+                        {
+
+                            public void actionPerformed( ActionEvent ae )
+                            {
+                                confirmDialog = (Dialog) Display.getInstance().getCurrent();
+                                confirmDialog.dispose();
+                                confirmDialog = null;
+                                System.gc();
+
+                            }
+                        } );
+                        confirmDialog.addComponent( label );
+                        confirmDialog.addComponent( yButton );
+                        confirmDialog.addComponent( nButton );
+
+                        confirmDialog.show();
                     }
                 } );
 

=== modified file 'src/org/hisp/dhis/mobile/view/PersonRegistrationView.java'
--- src/org/hisp/dhis/mobile/view/PersonRegistrationView.java	2014-08-18 08:58:56 +0000
+++ src/org/hisp/dhis/mobile/view/PersonRegistrationView.java	2014-09-03 11:23:09 +0000
@@ -141,6 +141,14 @@
                     mainForm.addComponent( comboBox );
                     patientAttributeValueVector.addElement( comboBox );
                 }
+                else if ( patientAttribute.getType().equals( "date" ) )
+                {
+                    patientAttributeTextField = new TextField();
+                    patientAttributeTextField.setHint( "YYYY-MM-dd" );
+                    patientAttributeTextField.setLabelForComponent( patientAttributeLabel );
+                    mainForm.addComponent( patientAttributeTextField );
+                    patientAttributeValueVector.addElement( patientAttributeTextField );
+                }
                 else
                 {
                     patientAttributeTextField = new TextField();
@@ -150,6 +158,7 @@
                     {
                         patientAttributeTextField.setConstraint( TextField.NUMERIC );
                         patientAttributeTextField.setInputModeOrder( new String[] { "123" } );
+                        patientAttributeTextField.setHint( "Please enter number" );
                     }
 
                     mainForm.addComponent( patientAttributeTextField );

=== modified file 'src/org/hisp/dhis/mobile/view/ProgramSelectView.java'
--- src/org/hisp/dhis/mobile/view/ProgramSelectView.java	2014-06-24 03:59:44 +0000
+++ src/org/hisp/dhis/mobile/view/ProgramSelectView.java	2014-09-03 11:23:09 +0000
@@ -7,9 +7,11 @@
 import org.hisp.dhis.mobile.midlet.DHISMIDlet;
 import org.hisp.dhis.mobile.midlet.NameBasedMIDlet;
 import org.hisp.dhis.mobile.model.LinkButton;
+import org.hisp.dhis.mobile.model.ModelList;
 import org.hisp.dhis.mobile.model.Program;
 import org.hisp.dhis.mobile.model.ProgramStage;
 import org.hisp.dhis.mobile.recordstore.OrgUnitRecordStore;
+import org.hisp.dhis.mobile.recordstore.PatientRecordStore;
 import org.hisp.dhis.mobile.ui.Text;
 
 import com.sun.lwuit.CheckBox;
@@ -57,7 +59,7 @@
         {
             try
             {
-                if ( OrgUnitRecordStore.loadAllOrgUnit().size() > 1 )
+                if ( targetScreen != nameBasedMIDlet.HISTORY_PERSON_LIST_VIEW && OrgUnitRecordStore.loadAllOrgUnit().size() > 1 )
                 {
                     nameBasedMIDlet.getOrgUnitSelectView().setProgramType( programType );
                     nameBasedMIDlet.getOrgUnitSelectView().setTargetScreen( targetScreen );
@@ -147,6 +149,13 @@
                             ConnectionManager.setUrl( nameBasedMIDlet.getCurrentOrgUnit().getFindLostToFollowUpUrl() );
                             ConnectionManager.findLostToFollowUp( program.getId() + "-" + status + "-" + isRiskCase );
                         }
+                        else if ( targetScreen == nameBasedMIDlet.HISTORY_PERSON_LIST_VIEW )
+                        {
+                            ModelList modelList = PatientRecordStore.getCurrentPatients();
+                            nameBasedMIDlet.getHistoryPersonListView().setProgram( program );
+                            nameBasedMIDlet.getHistoryPersonListView().setModelList( modelList );
+                            nameBasedMIDlet.getHistoryPersonListView().showView();
+                        }
 
                     }
                     catch ( Exception e )

=== modified file 'src/org/hisp/dhis/mobile/view/TrackingDataEntryView.java'
--- src/org/hisp/dhis/mobile/view/TrackingDataEntryView.java	2014-05-23 10:03:40 +0000
+++ src/org/hisp/dhis/mobile/view/TrackingDataEntryView.java	2014-09-03 11:23:09 +0000
@@ -26,15 +26,10 @@
  */
 package org.hisp.dhis.mobile.view;
 
-import java.io.IOException;
 import java.util.Enumeration;
 import java.util.Hashtable;
 import java.util.Vector;
 
-import javax.microedition.rms.RecordStoreException;
-import javax.microedition.rms.RecordStoreFullException;
-import javax.microedition.rms.RecordStoreNotFoundException;
-
 import org.hisp.dhis.mobile.connection.ConnectionManager;
 import org.hisp.dhis.mobile.log.LogMan;
 import org.hisp.dhis.mobile.midlet.DHISMIDlet;
@@ -50,10 +45,13 @@
 import org.hisp.dhis.mobile.ui.Text;
 import org.hisp.dhis.mobile.util.TrackingUtils;
 
+import com.sun.lwuit.Button;
 import com.sun.lwuit.CheckBox;
 import com.sun.lwuit.ComboBox;
 import com.sun.lwuit.Command;
 import com.sun.lwuit.Component;
+import com.sun.lwuit.Dialog;
+import com.sun.lwuit.Display;
 import com.sun.lwuit.Form;
 import com.sun.lwuit.Label;
 import com.sun.lwuit.TextField;
@@ -100,6 +98,8 @@
 
     private CheckBox completeStatusCheckBox;
 
+    private Dialog dialog;
+
     public TrackingDataEntryView( DHISMIDlet dhisMIDlet )
     {
         super( dhisMIDlet );
@@ -158,6 +158,7 @@
             {
                 reportDateField.setText( "Today" );
             }
+            reportDateField.setEnabled( !programStage.isCompleted() );
             mainForm.addComponent( reportDateField );
 
             for ( int i = 0; i < programStage.getDataElements().size(); i++ )
@@ -165,8 +166,11 @@
                 mainForm.addComponent( generateDataElementLabel( labelStyle, ((ProgramStageDataElement) programStage
                     .getDataElements().elementAt( i )) ) );
                 checkIfViolated( ((ProgramStageDataElement) programStage.getDataElements().elementAt( i )) );
-                mainForm.addComponent( getComponentByType( ((ProgramStageDataElement) programStage.getDataElements()
-                    .elementAt( i )) ) );
+
+                Component c = getComponentByType( ((ProgramStageDataElement) programStage.getDataElements().elementAt( i )) );
+
+                c.setEnabled( !programStage.isCompleted() );
+                mainForm.addComponent( c );
             }
 
             // Add complete check box
@@ -175,6 +179,7 @@
             {
                 completeStatusCheckBox.setSelected( true );
             }
+            completeStatusCheckBox.setEnabled( !programStage.isCompleted() );
             mainForm.addComponent( completeStatusCheckBox );
         }
 
@@ -349,10 +354,19 @@
     public Component generateDataElementLabel( Style labelStyle, ProgramStageDataElement de )
     {
         Label lblDataElement = new Label();
-        if ( de.isCompulsory() )
+        if ( de.isCompulsory() && de.getType().equals( "date" ) )
+        {
+            lblDataElement.setText( de.getName() + "* DD-MM-YYYY" );
+        }
+        else if ( de.isCompulsory() && de.getType() != "date" )
         {
             lblDataElement.setText( de.getName() + "*" );
         }
+        else if ( !de.isCompulsory() && de.getType().equals( "date" ) )
+        {
+            lblDataElement.setText( de.getName() + "DD-MM-YYYY" );
+        }
+
         else
         {
             lblDataElement.setText( de.getName() );
@@ -479,7 +493,45 @@
             else
             {
                 collectInputData();
-                uploadInputData();
+                if ( completeStatusCheckBox.isSelected() )
+                {
+                    uploadInputData();
+                }
+                else
+                {
+                    dialog = new Dialog();
+                    dialog.setTitle( "Confirmation" );
+                    Button yButton = new Button( Text.YES() );
+                    Button nButton = new Button( Text.NO() );
+                    Label label = new Label( "This stage is not completed yet. Proceed anyway?" );
+
+                    yButton.addActionListener( new ActionListener()
+                    {
+
+                        public void actionPerformed( ActionEvent ae )
+                        {
+                            uploadInputData();
+                        }
+                    } );
+
+                    nButton.addActionListener( new ActionListener()
+                    {
+
+                        public void actionPerformed( ActionEvent ae )
+                        {
+                            dialog = (Dialog) Display.getInstance().getCurrent();
+                            dialog.dispose();
+                            dialog = null;
+                            System.gc();
+
+                        }
+                    } );
+                    dialog.addComponent( label );
+                    dialog.addComponent( yButton );
+                    dialog.addComponent( nButton );
+
+                    dialog.show();
+                }
             }
 
         }
@@ -558,8 +610,11 @@
             mainForm.setTransitionOutAnimator( CommonTransitions.createSlide( CommonTransitions.SLIDE_HORIZONTAL, true,
                 200 ) );
             mainForm.addCommand( this.getBackCommand() );
-            mainForm.addCommand( this.getSendCommand() );
-            mainForm.addCommand( this.getSaveCommand() );
+            if ( !programStage.isCompleted() )
+            {
+                mainForm.addCommand( this.getSendCommand() );
+                mainForm.addCommand( this.getSaveCommand() );
+            }
             mainForm.addCommandListener( this );
         }
         return mainForm;

=== modified file 'src/org/hisp/dhis/mobile/view/TrackingMainMenuView.java'
--- src/org/hisp/dhis/mobile/view/TrackingMainMenuView.java	2014-06-24 03:59:44 +0000
+++ src/org/hisp/dhis/mobile/view/TrackingMainMenuView.java	2014-09-03 11:23:09 +0000
@@ -178,9 +178,9 @@
             }
             else if ( nextPageName.equals( MENU_HISTORY ) )
             {
-                ModelList modelList = PatientRecordStore.getCurrentPatients();
-                nameBasedMidlet.getHistoryPersonListView().setModelList( modelList );
-                nameBasedMidlet.getHistoryPersonListView().showView();
+                nameBasedMidlet.getProgramSelectView().setPrograms( ProgramRecordStore.getNonAnonymousPrograms() );
+                nameBasedMidlet.getProgramSelectView().setTargetScreen( nameBasedMidlet.HISTORY_PERSON_LIST_VIEW );
+                nameBasedMidlet.getProgramSelectView().showView();
 
             }
             else if ( nextPageName.equals( MENU_PENDING_REGISTRATION ) )