am_dot_com

DDM 20201126

Nov 26th, 2020 (edited)
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.51 KB | None | 0 0
  1. package com.joythis.android.myphonecaller;
  2.  
  3. import androidx.annotation.NonNull;
  4. import androidx.appcompat.app.AppCompatActivity;
  5.  
  6. import android.content.Context;
  7. import android.os.Bundle;
  8. import android.view.Menu;
  9. import android.view.MenuInflater;
  10. import android.view.MenuItem;
  11. import android.view.View;
  12. import android.widget.ArrayAdapter;
  13. import android.widget.Button;
  14. import android.widget.EditText;
  15. import android.widget.ListView;
  16.  
  17. import java.util.ArrayList;
  18.  
  19. public class MainActivity extends AppCompatActivity {
  20.  
  21.     //data members
  22.     Context mContext;
  23.     ContactDB mDB;
  24.     AmUtil mUtil;
  25.     ArrayList<Contact> mAlContacts; //runtime representation of the contacts managed by the app
  26.  
  27.     EditText mEtName, mEtNumber;
  28.     Button mBtnInsertContact;
  29.     ListView mLvContacts;
  30.     ArrayAdapter<Contact> mAd;
  31.  
  32.     Button.OnClickListener mButtonClickHandler =
  33.         new Button.OnClickListener() {
  34.         @Override
  35.         public void onClick(View v) {
  36.             switch(v.getId()){
  37.                 case R.id.idBtnInsertContact:
  38.                     actionInsertContact();
  39.                     break;
  40.             }//switch
  41.         }//onClick
  42.     };//mButtonClickHandler
  43.  
  44.     void actionInsertContact(){
  45.         String strName = mEtName.getText().toString().trim();
  46.         String strNumber = mEtNumber.getText().toString().trim();
  47.  
  48.         boolean bCheck = strName.length()>0 && strNumber.length()>0;
  49.         if (bCheck){
  50.             Contact c = new Contact(strName, strNumber);
  51.             mDB.insertContact(c);
  52.             //mAlContacts.add(c);
  53.             syncContactsDataWithTheirPresentation();
  54.         }//
  55.         else{
  56.             mUtil.fb("Name and Number can NOT be empty!");
  57.         }
  58.     }//actionInsertContact
  59.  
  60.     @Override
  61.     protected void onCreate(Bundle savedInstanceState) {
  62.         super.onCreate(savedInstanceState);
  63.         setContentView(R.layout.insert_contact_rl);
  64.  
  65.         init();
  66.     }//onCreate
  67.  
  68.     void init(){
  69.         mContext = this;
  70.         mDB = new ContactDB(this);
  71.         mUtil = new AmUtil(this);
  72.         mAlContacts = new ArrayList<>();
  73.  
  74.         mEtName = findViewById(R.id.idEtName);
  75.         mEtNumber = findViewById(R.id.idEtNumber);
  76.         mBtnInsertContact = findViewById(R.id.idBtnInsertContact);
  77.         mLvContacts = findViewById(R.id.idLvContacts);
  78.  
  79.         mAd = new ArrayAdapter<>(
  80.             mContext,
  81.             android.R.layout.simple_list_item_1,
  82.             mAlContacts
  83.         );
  84.  
  85.         mLvContacts.setAdapter(mAd);
  86.  
  87.         //TODO:
  88.         /*
  89.         layout
  90.         op layout
  91.          */
  92.  
  93.         mAlContacts = mDB.selectAllContactsByInsertDateDESC();
  94.         syncContactsDataWithTheirPresentation();
  95.     }
  96.  
  97.     /*
  98.     this method assigns a "menu resource file" to the
  99.     activity's action bar.
  100.      */
  101.     @Override
  102.     public boolean onCreateOptionsMenu(Menu pMenu) {
  103.         MenuInflater minf = this.getMenuInflater();
  104.         if (minf!=null){
  105.             minf.inflate(
  106.                 R.menu.sorting_options_menu,//id the XML for the menu
  107.                 pMenu //Java ref to assign to the menu
  108.             );
  109.         }//if
  110.  
  111.         return super.onCreateOptionsMenu(pMenu);
  112.     }//onCreateOptionsMenu
  113.  
  114.     /*
  115.     here we code what should happen upon the selection of
  116.     any of the menu options
  117.      */
  118.     @Override
  119.     public boolean onOptionsItemSelected(@NonNull MenuItem pMenuItem) {
  120.         switch(pMenuItem.getItemId()){
  121.             case R.id.idMenuItemSortNameAsc:
  122.                 actionSortNameAsc();
  123.                 break;
  124.             case R.id.idMenuItemSortNameDesc:
  125.                 actionSortNameDesc();
  126.                 break;
  127.             case R.id.idMenuItemSortNumberAsc:
  128.                 actionSortNumberAsc();
  129.                 break;
  130.             case R.id.idMenuItemSortNumberDesc:
  131.                 actionSortNumberDesc();
  132.                 break;
  133.             case R.id.idMenuItemSortInsertDateAsc:
  134.                 actionSortInsertDateAsc();
  135.                 break;
  136.             case R.id.idMenuItemSortInsertDateDesc:
  137.                 actionSortInsertDateDesc();
  138.                 break;
  139.         }//switch
  140.         return super.onOptionsItemSelected(pMenuItem);
  141.     }
  142.  
  143.     void actionSortNameAsc(){
  144.         mAlContacts = mDB.selectAllContactsByNameASC();
  145.         syncContactsDataWithTheirPresentation();
  146.     }
  147.  
  148.     void actionSortNameDesc(){
  149.         mAlContacts = mDB.selectAllContactsByNameDESC();
  150.         syncContactsDataWithTheirPresentation();
  151.     }
  152.  
  153.     void actionSortNumberAsc(){
  154.         mAlContacts = mDB.selectAllContactsByNumberASC();
  155.         syncContactsDataWithTheirPresentation();
  156.     }
  157.  
  158.     void actionSortNumberDesc(){
  159.         mAlContacts = mDB.selectAllContactsByNumberDESC();
  160.         syncContactsDataWithTheirPresentation();
  161.     }
  162.  
  163.     void actionSortInsertDateAsc(){
  164.         mAlContacts = mDB.selectAllContactsByInsertDateASC();
  165.         syncContactsDataWithTheirPresentation();
  166.     }
  167.  
  168.     void actionSortInsertDateDesc(){
  169.         mAlContacts = mDB.selectAllContactsByInsertDateDESC();
  170.         syncContactsDataWithTheirPresentation();
  171.     }
  172.  
  173.     void syncContactsDataWithTheirPresentation(){
  174.         //TODO, it depends on our options for the layout design
  175.         ArrayList<Contact> temp = mDB.selectAllContactsByInsertDateDESC();
  176.         if (temp!=null && temp.size()>0){
  177.             mAlContacts.clear();
  178.             for (Contact c: temp){
  179.                 mAlContacts.add(c);
  180.             }//for
  181.         }//if
  182.  
  183.         mAd.notifyDataSetChanged();
  184.     }
  185. }//MainActivity
Advertisement
Add Comment
Please, Sign In to add comment