'Activity module
Sub Process_Globals
'These global variables will be declared once when the application starts.
'These variables can be accessed from all modules.
End Sub
Sub Globals
'These global variables will be redeclared each time the activity is created.
'These variables can only be accessed from this module.
Dim SQL1 As SQL
Dim ID As String
Dim lstTable, listOfContacts As List
Dim ContactsList As WebView
Dim Contact As Contact
Dim LblContact, LblFav As Label
Dim FavContacts2 As ListView
Dim cName, cNumber As String
End Sub
Sub Activity_Create(FirstTime As Boolean)
ProgressDialogShow2("Checking Contacts...", False)
ActivityInit
GetContacts
GetMyContacts
End Sub
Sub ActivityInit
'clear the old database file
If File.Exists(File.DirRootExternal,"contacts.db") Then
File.Delete(File.DirRootExternal,"contacts.db")
End If
'Phone contacts are stored in a webview
ContactsList.Initialize("ContactsList")
Activity.AddView( ContactsList, 1%x, 10%y, 98%x, 38%y)
'Favourite contacts are stored in a listview
FavContacts2.Initialize("FavContacts2")
FavContacts2.SingleLineLayout.Label.TextSize=20
Activity.AddView(FavContacts2, 1%x, 60%y, 98%x, 38%y)
'Define two labels
LblContact.Initialize("")
LblContact.Text="Phone Contacts"
LblContact.Gravity=Gravity.CENTER_HORIZONTAL
LblContact.Color=Colors.LightGray
LblContact.TextSize=4%y
LblContact.TextColor=Colors.Blue
LblFav.Initialize("")
LblFav.Text="Favourites"
LblFav.Gravity=Gravity.CENTER_HORIZONTAL
LblFav.Color=Colors.LightGray
LblFav.TextSize=4%y
LblFav.TextColor=Colors.Blue
Activity.AddView(LblContact,1%x, 1%y, 98%x, 8%y)
Activity.AddView(LblFav,1%x, 50%y, 98%x, 8%y)
End Sub
Sub Activity_Resume
End Sub
Sub Activity_Pause (UserClosed As Boolean)
End Sub
Sub GetContacts
SQL1.Initialize(File.DirRootExternal, "contacts.db", True)
'Create the contacts table which holds data about each contact.
Dim m As Map
m.Initialize
m.Put("Id", DBUtils.DB_TEXT)
m.Put("Name", DBUtils.DB_TEXT)
m.Put("Number", DBUtils.DB_TEXT)
DBUtils.CreateTable(SQL1, "Contacts", m, "Id")
Dim ListOfMaps As List
ListOfMaps.Initialize
Dim Contacts2 As Contacts2
listOfContacts = Contacts2.GetAll(True,False)
For I = 0 To listOfContacts.Size - 1
Contact = listOfContacts.Get(I)
Dim m As Map
m.Initialize
m.Put("Id", NumberFormat2(I, 6, 0, 0, False))
m.Put("Name", Contact.DisplayName)
m.Put("Number", Contact.PhoneNumber)
ListOfMaps.Add(m)
Next
DBUtils.InsertMaps(SQL1, "Contacts", ListOfMaps)
ContactsList.LoadHtml(DBUtils.ExecuteHtml(SQL1,"SELECT Name, Number FROM Contacts ORDER BY Name ASC", Null, 0, True))
lstTable=DBUtils.ExecuteMemoryTable(SQL1,"SELECT Name, Number FROM Contacts ORDER BY Name ASC", Null, 0)
ContactsList.ZoomEnabled=False
ProgressDialogHide
End Sub
Sub GetMyContacts
If File.Exists(File.DirRootExternal,"qSMS-MyContacts.lst")=False Then
'ToastMessageShow ("No contacts to load," & CRLF & "please use select contacts in menu!", True)
Return True
End If
Dim savelist As List
savelist=File.ReadList(File.DirRootExternal,"qSMS-MyContacts.lst")
FavContacts2.Clear
'Save contacts from list to listview
For n=0 To savelist.Size-1
FavContacts2.AddSingleLine(savelist.Get(n))
Next
FavContacts2.Invalidate
End Sub
'Catch a selected contact and store DisplayName in cName, PhoneNumber in cNumber
Sub ContactsList_OverrideUrl (Url As String) As Boolean
'parse the row and column numbers from the URL
Dim values() As String
values = Regex.Split("[.]", Url.SubString(7))
Dim col, row As Int
col = values(0)
row = values(1)
Dim val(3) As String
val=lstTable.get(row)
'ID=val(0)
cName=val(0)
cNumber=val(1)
For c=0 To FavContacts2.Size-1
If FavContacts2.GetItem(c)=cName & "-" & cNumber Then Return True
Next
FavContacts2.AddSingleLine(cName & "-" & cNumber)
SortMyContacts
Return True 'Don't try to navigate to this URL
End Sub
Sub SortMyContacts
Dim MyList As List
'Save contacts from listview to list
MyList.Initialize
For c=0 To FavContacts2.Size-1
MyList.Add(FavContacts2.GetItem(c))
Next
MyList.Sort(True)
FavContacts2.Clear
'Save contacts from list to listview
For n=0 To MyList.Size-1
FavContacts2.AddSingleLine(MyList.Get(n))
Next
FavContacts2.Invalidate
End Sub
Sub FavContacts2_ItemClick (Position As Int, Value As Object)
If ContactsList.Visible=True Then
'Remove current contact
FavContacts2.RemoveAt(Position)
SortMyContacts
Else
'Contact selected for SMS
Dim values() As String
values = Regex.Split("[ - ]", Value)
cName=values(0)
cNumber=values(1)
End If
End Sub
Sub activity_KeyPress (KeyCode As Int) As Boolean
'Catch the back button. Delete old favourites and save new file
If KeyCode = KeyCodes.KEYCODE_BACK Then
If File.Exists(File.DirRootExternal,"qSMS-MyContacts.lst") Then
File.Delete(File.DirRootExternal,"qSMS-MyContacts.lst")
End If
Dim MyList As List
MyList.Initialize
For c=0 To FavContacts2.Size-1
MyList.Add(FavContacts2.GetItem(c))
Next
File.WriteList(File.DirRootExternal,"qSMS-MyContacts.lst",MyList)
Main.ContactsChanged=True
Activity.Finish
End If
End Sub