package com.safemobile.activities; import java.util.ArrayList; import java.util.ConcurrentModificationException; import java.util.ListIterator; import java.util.Timer; import com.safemobile.lib.AppParams; import com.safemobile.lib.Contact; import com.safemobile.lib.radio.Channel; import com.safemobile.lib.radio.Emerg; import com.safemobile.lib.radio.IncCall; import com.safemobile.lib.radio.Zone; import android.app.Activity; import android.app.Dialog; import android.content.Context; import android.os.Handler; import android.widget.ArrayAdapter; public abstract class AbstractRadioActivity extends Activity { /** Misc */ public AbstractParentActivity parentTab; public Activity activity; public Context context; public boolean emergencyOn = false; public boolean pttONoff = false; public IncCall incCall; public String chMsg = ""; public Emerg emerg; public Dialog dialogExternal; // only in PadRadio //public int radioID, GWID, zoneNR, chNR; /** Handler */ public Handler myHandler = new Handler(); public Timer timerInCall, timerPTTOn, timerCallType; /** Lists */ //public ArrayList allContactsNames = new ArrayList(); //public ArrayList allGroupsNames = new ArrayList(); //public ArrayList allContactsIDs = new ArrayList(); //public ArrayList allGroupsIDs = new ArrayList(); //public ArrayList crtZones = new ArrayList(); //public ArrayList crtChannels = new ArrayList(); public ArrayAdapter adapter; /** Methods */ //public void onCreate(Bundle savedInstanceState) { }; public abstract void startAudioHandler(); public void PTTclick(int type) { }; /* public abstract void updateRadioTCPdown(); public abstract void UpdateRadios(ArrayList radios); public abstract void UpdateCallTypeChanged(IncCall response); public abstract void UpdateZoneCH(int _radioID, int _GWID, int _zoneNR, int _chNR); public abstract void UpdateRadioStatus(int status); public abstract void UpdateIncCall (IncCall iCall); public abstract String updateUI(EnumCallState radioStatus); public abstract void UpdateEmerg (Emerg emerg); public abstract void onContactsUpdate(); */ public abstract void sendPTTFromBlueTooth(boolean on); public abstract void ShowDialog(String title, String errorMsg); public abstract void stopAudioHandler(); public abstract Object getAudioHandlerState(); public abstract void initUDP(); /** Stop the timer that ends call after one minute */ public void stopTimerInCall() { timerInCall.cancel(); timerInCall.purge(); timerInCall = null; } /** get Group Contact ID from Name */ public long getGroupID4Name_old(String name) { try { ListIterator it = AppParams.listContacts.listIterator(); while(it.hasNext()) { Contact ctc = it.next(); // if searched name - return corresponding id if(ctc.name.equals(name) && ctc.contactType == Contact.GROUP) return ctc.id; } long id = -1; // try to get id from name because the id was manual dialed try { id = Long.parseLong(name); } catch(Exception ex) { } return id; } catch (ConcurrentModificationException ex) { return -1; } } /** get Private Contact ID from Name */ public long getPrivateID4Name_old(String name) { try { ListIterator it = AppParams.listContacts.listIterator(); while(it.hasNext()) { Contact ctc = it.next(); // if searched name - return corresponding id if(ctc.name.equals(name) && ctc.contactType == Contact.PRIVATE) return ctc.id; } long id = -1; // try to get id from name because the id was manual dialed try { id = Long.parseLong(name); } catch(Exception ex) { } return id; } catch (ConcurrentModificationException ex) { return -1; } } /** get Private Contact ID from Name */ public String getName4PrivateID(long id) { try { ListIterator it = AppParams.listContacts.listIterator(); while(it.hasNext()) { Contact ctc = it.next(); // if searched name - return corresponding id if(ctc.id == id && ctc.contactType == Contact.PRIVATE) return ctc.name; } return id+""; } catch (ConcurrentModificationException ex) { return id+""; } } /** get Group Contact ID from Name */ public String getName4GroupID(long id) { try { ListIterator it = AppParams.listContacts.listIterator(); while(it.hasNext()) { Contact ctc = it.next(); // if searched name - return corresponding id if(ctc.id == id && ctc.contactType == Contact.GROUP) return ctc.name; } return id+""; } catch (ConcurrentModificationException ex) { return id+""; } } /** get zone number from spinner zoneName */ public int getNR4Zone_old(String zoneName) { for(Zone zone: AppParams.listZones) if(zone.ZoneName.equals(zoneName)) return zone.id; return -1; } /** get channel number from spinner chName */ public int getNR4CH_old(String chName) { for(Channel ch: AppParams.crtZone.channelList) if(ch.chName.equals(chName)) return ch.id; return -1; } /** get All Contacts Names */ public static ArrayList getAllContactsName(String type, ArrayList listContacts) { ArrayList list = new ArrayList(); try { ListIterator it = listContacts.listIterator(); while(it.hasNext()) { Contact contact = it.next(); if(type.equals("Call")) list.add(contact.name); else { if((type.equalsIgnoreCase("Private Call") && contact.contactType == Contact.PRIVATE) || (type.equalsIgnoreCase("Group Call") && contact.contactType == Contact.GROUP)) list.add(contact.name); } } } catch (ConcurrentModificationException ex) { } return list; } /** get All Contacts Names */ public static ArrayList getAllContactsIDs(String type, ArrayList listContacts) { ArrayList list = new ArrayList(); try { ListIterator it = listContacts.listIterator(); while(it.hasNext()) { Contact contact = it.next(); if(type.equals("Call")) list.add((long)contact.id); if((type.equalsIgnoreCase("Private Call") && contact.contactType == Contact.PRIVATE) || (type.equalsIgnoreCase("Group Call") && contact.contactType == Contact.GROUP)) list.add((long)contact.id); } } catch (ConcurrentModificationException ex) { } return list; } /** Display a toast Message */ public void displayToast(String msg) { parentTab.displayToast(msg); } }