Below is my code but my biggest problem is i have to always have to click on recieved sms to check on recieved sms and also click on sent to see sent messages yet i wanted to have all of them viewed at the same interface example like that of whatsup where you can see both sent and recieved messages in one click. In this i wanted to just pick a name and then view and send message to the that person's account from my database thanks in advance please help
B4X:
#Region Activity Attributes
#FullScreen: False
#IncludeTitle: True
#End Region
Sub Process_Globals
'These global variables will be declared once when the application starts.
'These variables can be accessed from all modules.
Dim cursor1 As Cursor
Private smiley As Bitmap
'Dim SelectedRow As Int : SelectedRow = -1
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.
Private LongTextTemplate As B4XLongTextTemplate
Private lblSelectedItem As Label
'Dim wbvTable2 As ScrollView
Private B4XTable1 As B4XTable
Private xui As XUI
Dim data As List
Private dialog As B4XDialog
End Sub
Sub ShowTable
If lblSelectedItem.Text="Send" Then
'B4XTable1.Refresh
B4XTable1.Clear
B4XTable1.AddColumn("Datesent", B4XTable1.COLUMN_TYPE_TEXT)
B4XTable1.AddColumn("SentMessage", B4XTable1.COLUMN_TYPE_TEXT)
' B4XTable1.AddColumn("ID", B4XTable1.COLUMN_TYPE_TEXT)
data.Initialize
Dim rs As ResultSet = Starter.SQL1.ExecQuery("SELECT DISTINCT Datesent,Sms as SentMessage,ID FROM Sentmessages")
Do While rs.NextRow
Dim row(2) As Object
row(0) = rs.GetString("Datesent")
row(1) = rs.GetString("SentMessage")
'row(2) = rs.GetString("ID")
Log(row(1))
'Log(row(3))
'Log(row(2))
'& " " & rs.GetString("LastName")
'row(2) = rs.GetString("ID")
'Some of the fields are Null. We need to convert them to empty strings:
' If row(1) = "Null" And row(2) = "Null" Then
'Return
'Else
' If row(1) = "Null" Then row(2) = "Null"
'row(1) = rs.GetString("SentMessage")
data.Add(row)
'End If
Loop
rs.Close
B4XTable1.SetData(data)
B4XTable1.Refresh
Return
Else
B4XTable1.Clear
B4XTable1.AddColumn("Datesent", B4XTable1.COLUMN_TYPE_TEXT)
B4XTable1.AddColumn("SentMessage", B4XTable1.COLUMN_TYPE_TEXT)
' B4XTable1.AddColumn("ID", B4XTable1.COLUMN_TYPE_TEXT)
data.Initialize
Dim rs As ResultSet = Starter.SQL1.ExecQuery("SELECT DISTINCT Datesent,Sms as SentMessage,ID FROM Sentmessages")
Do While rs.NextRow
Dim row(2) As Object
row(0) = rs.GetString("Datesent")
row(1) = rs.GetString("SentMessage")
'row(2) = rs.GetString("ID")
Log(row(1))
'Log(row(3))
'Log(row(2))
'& " " & rs.GetString("LastName")
'row(2) = rs.GetString("ID")
'Some of the fields are Null. We need to convert them to empty strings:
'If row(1) = "" And row(2) = "" Then
'Return
'Else
'If row(1) = Null Then row(2) = ""
'row(1) = rs.GetString("SentMessage")
data.Add(row)
' End If
Loop
rs.Close
B4XTable1.SetData(data)
'B4XTable1.Refresh
End If
End Sub
Sub ShowTable2
B4XTable1.Clear
B4XTable1.AddColumn("DateRecieved", B4XTable1.COLUMN_TYPE_TEXT)
B4XTable1.AddColumn("Sms", B4XTable1.COLUMN_TYPE_TEXT)
'B4XTable1.AddColumn("ID", B4XTable1.COLUMN_TYPE_TEXT)
data.Initialize
Dim rs As ResultSet = Starter.SQL1.ExecQuery("SELECT DISTINCT Daterecieved,Sms as RecievedMessage,ID FROM Recievedsms")
Do While rs.NextRow
Dim row(2) As Object
row(0) = rs.Getstring("Daterecieved")
row(1) = rs.GetString("RecievedMessage")
'& " " & rs.GetString("LastName")
' row(2) = rs.GetString("ID")
'Some of the fields are Null. We need to convert them to empty strings:
'If row(2) = Null Then row(2) = ""
'row(3) = rs.GetString("RecievedMessage")
data.Add(row)
Loop
rs.Close
B4XTable1.SetData(data)
End Sub
Sub B4XTable1_CellClicked (ColumnId As String, RowId As Long)
Log(ColumnId)
If ColumnId = "SentMessage" Then
Dim valuer As String = B4XTable1.GetRow(RowId).Get("SentMessage")
If valuer.Length<=140 Then
dialog.Show(valuer, "OK", "", "")
LongTextTemplate.Text= valuer
Else
'dialog.Show(valuer, "OK", "", "")
dialog.ShowTemplate(LongTextTemplate, "OK", "", "")
Return
End If
Else
If ColumnId = "Sms" Then
Dim valuer As String = B4XTable1.GetRow(RowId).Get("Sms")
'dialog.Show(valuer, "OK", "", "")
If valuer.Length<=140 Then
dialog.Show(valuer, "OK", "", "")
Else
LongTextTemplate.Text= valuer
dialog.ShowTemplate(LongTextTemplate, "OK", "", "")
' dialog.ShowCustom(valuer, "OK", "", "")
Return
End If
End If
End If
If ColumnId = "Datesent" Then
'Dim value As String = B4XTable1.GetRow(RowId).Get(ColumnId)
'InputTemplate.Text = value
'Dim valuer As String = B4XTable1.GetRow(RowId).Get("Dates")
'dialog.Show("dddddddddddddddddddddddddddddd", "OK", "", "")
Dim sf As Object = xui.Msgbox2Async("Delete Message?", "Title", "Yes", "Cancel", "No", Null)
Wait For (sf) Msgbox_Result (Result As Int)
If Result = xui.DialogResponse_Positive Then
DeleteRow(B4XTable1, RowId)
End If
Else
If ColumnId = "DateRecieved" Then
Dim sf As Object = xui.Msgbox2Async("Delete Message ?", "Title", "Yes", "Cancel", "No", Null)
Wait For (sf) Msgbox_Result (Result As Int)
If Result = xui.DialogResponse_Positive Then
DeleteRow2(B4XTable1, RowId)
End If
End If
End If
End Sub
Sub DeleteRow (tbl As B4XTable, RowId As Long)
Dim RowData As Map = tbl.GetRow(RowId)
Dim customerID As String = RowData.Get("Datesent")
tbl.sql1.ExecNonQuery2("DELETE FROM data WHERE rowid = ?", Array (RowId)) 'deletes record from Table
Starter.SQL1.ExecNonQuery2("DELETE FROM Sentmessages WHERE Datesent = ?", Array (customerID)) 'deletes from DB
Dim page As Int = tbl.CurrentPage
Dim FirstIndex As Int = tbl.FirstRowIndex
tbl.ClearDataView 'Updates the rows count.
If FirstIndex + 1 >= tbl.mCurrentCount Then
page = page - 1
End If
tbl.CurrentPage = page
End Sub
Sub DeleteRow2 (tbl As B4XTable, RowId As Long)
Dim RowData As Map = tbl.GetRow(RowId)
Dim customerID As String = RowData.Get("DateRecieved")
Log(customerID)
tbl.sql1.ExecNonQuery2("DELETE FROM data WHERE rowid = ?", Array (RowId)) 'deletes record from Table
Starter.SQL1.ExecNonQuery2("DELETE FROM Recievedsms WHERE Daterecieved = ?", Array (customerID)) 'deletes from DB
Dim page As Int = tbl.CurrentPage
Dim FirstIndex As Int = tbl.FirstRowIndex
tbl.ClearDataView 'Updates the rows count.
If FirstIndex + 1 >= tbl.mCurrentCount Then
page = page - 1
End If
tbl.CurrentPage = page
End Sub
Sub Activity_Create(FirstTime As Boolean)
If FirstTime Then
smiley = LoadBitmapResize(File.DirAssets, "smiley.png", 24dip, 24dip, False)
End If
'Do not forget to load the layout file created with the visual designer. For example:
If IsConnectedToInternet=True Then
replysms
'HighPriority_Notification
Activity.LoadLayout("simplechat")
Activity.Title="Chat"
dialog.Initialize(Activity)
LongTextTemplate.Initialize
Else
MsgboxAsync("Error Connecting to the Server Please Check Your Internet Connection","Server Error")
Activity.LoadLayout("simplechat")
Activity.Title="Chat"
Return
End If
End Sub
Sub IsConnectedToInternet As Boolean
Dim r As Reflector
r.Target = r.GetContext
r.Target = r.RunMethod2("getSystemService", "connectivity", "java.lang.String")
r.Target = r.RunMethod("getActiveNetworkInfo")
If r.Target <> Null Then
Return r.RunMethod("isConnectedOrConnecting")
End If
Return False
End Sub
Sub replysms
'Dim SQLQry As String = "DELETE FROM Recievedsms"
'Starter.SQL1.ExecNonQuery(SQLQry)
cursor1 = Starter.SQL1.ExecQuery("SELECT phone AS Phone,Sex FROM Register")
If cursor1.RowCount > 0 Then
cursor1.Position =0
Dim phone As String
phone = cursor1.Getstring("Phone")
Dim sx As String
sx = cursor1.Getstring("Sex")
' sx = "Father"
End If
Dim CustID As String = phone' Customer ID
Dim jtk As HttpJob
jtk.Initialize("", Me)
'j.Download("http://192.168.1.239/KabojjaApp/HandlerVB.ashx?customerid=" & CustID)
jtk.Download("http://kccug.com/KabojjaApp/HandlerVBGetreply.ashx?customerid=" & CustID & "&bcode=" & sx)
'jtk.Download("http://192.168.1.239/KabojjaApp/HandlerVBGetreply.ashx?customerid=" & CustID & "&bcode=" & sx)
'jtk.GetRequest.Timeout = 1000 ' 10 seconds
Wait For (jtk) JobDone(jtk As HttpJob)
If jtk.Success Then ' if job is success (http status code 200)
Dim RetVal As String
Log(RetVal)
RetVal = jtk.GetString
If jtk.GetString = "[]" Then
'Msgbox("Please try Again ","SMIS")
'Return
Else
Dim jpt As JSONParser
jpt.Initialize(jtk.GetString)
'Log(jpt) ' will pr
Log($"Token(${jpt})"$)
Dim quotes As List = jpt.NextArray
For Each quot As Map In quotes
Log("Account: " & quot.Get("Account"))
Log("sms: " & quot.Get("sms"))
Log("Datesent: " & quot.Get("Datesent"))
Log("Status: " & quot.Get("Status"))
Log("codes: " & quot.Get("Code"))
Log("atk: " & quot.Get("atk"))
'Log("Tos: " & quot.Get("Tos"))
Dim ltt As Long
DateTime.DateFormat = "dd/MM/yyyy" ' "1961-08-29"
Dim datestring As String = DateTime.Date(JsonDateToTick( quot.Get("Datesent")))
ltt = DateTime.DateParse(datestring)
DateTime.DateFormat = "dd/MM/yyyy"
Log(DateTime.Date(ltt))
Dim now As Long
now = DateTime.Now
Log(DateTime.Now)
DateTime.DateFormat = "dd/MM/yyyy" : DateTime.TimeFormat = "hh:mm a"
Log(DateTime.Date(ltt)& " "& DateTime.Time(now))
Starter.SQL1.ExecNonQuery2("INSERT INTO Recievedsms VALUES(?, ?, ?)", Array As Object(DateTime.Date(ltt)& " "& DateTime.Time(now), quot.Get("sms"), quot.Get("Code")))
Dim n As NB6
n.Initialize("default", Application.LabelName, "HIGH").SmallIcon(smiley)
n.Build(quot.Get("sms"), "Kabojja Junior School", "tag", Sendsms).Notify(9)
Dim jtkt As HttpJob
jtkt.Initialize("", Me)
jtkt.Download("http://kccug.com/KabojjaApp/HandlerVBDelReply.ashx?customerid=" & quot.Get("atk"))
Next
End If
End If
End Sub
Sub JsonDateToTick(s As String) As Long
Dim m As Matcher = Regex.Matcher("\d+", s)
If m.Find Then
Return m.Match
End If
Log("Invalid date: " & s)
Return 0
End Sub
Sub Activity_Resume
End Sub
Sub Activity_Pause (UserClosed As Boolean)
End Sub
Sub btnFilter_Click
If IsConnectedToInternet=True Then
cursor1 = Starter.SQL1.ExecQuery("SELECT Account FROM SMSlist")
If cursor1.RowCount > 0 Then
StartActivity(Sendsms)
'Activity.Title="Send SMS"
Else
ProgressDialogShow2("Loading Communication Book Please Wait...",False)
Sleep(0)
Dim SQLQry As String = "DELETE FROM SMSlist"
Starter.SQL1.ExecNonQuery(SQLQry)
cursor1 = Starter.SQL1.ExecQuery("SELECT phone AS Phone,Sex FROM Register")
If cursor1.RowCount > 0 Then
cursor1.Position =0
Dim phone As String
phone = cursor1.Getstring("Phone")
Dim sx As String
sx = cursor1.Getstring("Sex")
'Next
End If
Dim CustID As String = phone' Customer ID
Dim jt As HttpJob
jt.Initialize("", Me)
jt.Download("http://kccug.com/KabojjaApp/HandlerVBRegistration.ashx?customerid=" & CustID & "&sx=" & sx)
'jt.GetRequest.Timeout = 10000 ' 10 seconds
Wait For (jt) JobDone(jt As HttpJob)
If jt.Success Then ' if job is success (http status code 200)
Dim RetVal As String
RetVal = jt.GetString
If jt.GetString = "[]" Then
'Msgbox("Please try Again ","SMIS")
'Return
Else
Dim jpt As JSONParser
jpt.Initialize(jt.GetString)
'Log(jpt) ' will pr
Log($"Token(${jpt})"$)
Dim quotes As List = jpt.NextArray
For Each quot As Map In quotes
' Log("Account: " & quot.Get("Account"))
Log("Name: " & quot.Get("Name"))
Log("Category: " & quot.Get("Category"))
Log("Froms: " & quot.Get("Froms"))
Log("Tos: " & quot.Get("Tos"))
Log(DateTime.Date(JsonDateToTick( quot.Get("Froms"))))
Dim l As Long
DateTime.DateFormat = "dd/MM/yyyy" ' "1961-08-29"
Dim datestring As String = DateTime.Date(JsonDateToTick( quot.Get("Froms")))
l = DateTime.DateParse(datestring)
DateTime.DateFormat = "dd/MM/yyyy"
Log(DateTime.Date(l))
Log(DateTime.Date(JsonDateToTick( quot.Get("Tos"))))
Dim lt As Long
DateTime.DateFormat = "dd/MM/yyyy" ' "1961-08-29"
Dim datestring As String = DateTime.Date(JsonDateToTick( quot.Get("Tos")))
lt = DateTime.DateParse(datestring)
DateTime.DateFormat = "dd/MM/yyyy"
Log(DateTime.Date(lt))
'End If
'Grab the last ID number which is the highest number
If quot.Get("Category")="Inactive" Then
MsgboxAsync("Your Account is Inactive Please check with the school to get your Account Activated" ,"SMIS")
Return
End If
If quot.Get("Category")="Expired" Then
MsgboxAsync("Your Registration has Already Expired it was Valid from: " & DateTime.Date(l) &" To:"& DateTime.Date(lt) &" Please Check with the school Admin to get your account Activated" ,"SMIS")
Return
Else
Dim jt As HttpJob
jt.Initialize("", Me)
jt.Download("http://kccug.com/KabojjaApp/HandlerVBGteacher.ashx?customerid=" & quot.Get("Country") & "&customerid2=" & quot.Get("Stream"))
'Sleep(6000)
'jt.GetRequest.Timeout = 2000 ' 10 seconds
Wait For (jt) JobDone(jt As HttpJob)
If jt.Success Then ' if job is success (http status code 200)
Dim RetVal As String
RetVal = jt.GetString
If jt.GetString = "[]" Then
'MsgboxAsync("No Records to Upload Yet for: " & CustID ,"SMIS")
' Return
Else
Dim jpt As JSONParser
jpt.Initialize(jt.GetString)
' Log(jpt) ' will pr
Dim quotes As List = jpt.NextArray
For Each quotd As Map In quotes
Log("Teacher: " & quotd.Get("Teacher"))
Log("Phone: " & quotd.Get("Phone"))
Log("Phone: " & quotd.Get("Phone2"))
Next
' Return "Active"
End If
End If
Log(quotd.Get("Phone"))
'Starter.SQL1.ExecNonQuery("INSERT INTO SMSlist VALUES('" & quot.Get("Account") & "','" & quot.Get("Name") & "','" & CustID & "','" & sx & "','" & 1 & "')")
Starter.SQL1.ExecNonQuery2("INSERT INTO SMSlist VALUES(?, ?, ?,?,?,?)", Array As Object(quot.Get("Account"), quot.Get("Name"),CustID ,sx, 1,quotd.Get("Phone")))
'Log(quot.Get("Account"))
'Log(quot.Get("Name"))
'Log(quot.Get(phone))
'Log(quot.Get(sx))
Log(RetVal) ' will print in log value returned from the server
End If
Next
End If
End If
End If
ProgressDialogHide
StartActivity(Sendsms)
Else
MsgboxAsync("Error Connecting to the Server Please Check Your Internet Connection","Server Error")
Return
End If
End Sub
Sub HighPriority_Notification
Dim n As NB6
n.Initialize("default", Application.LabelName, "HIGH").SmallIcon(smiley)
n.Build("Important Good Work sula!!!", "Content", "tag", Me).Notify(9)
End Sub
Sub btnEdit_Click
'B4XTable1.Clear
ShowTable
lblSelectedItem.Text="Send"
End Sub
Sub btnAdd_Click
'B4XTable1.Clear
ShowTable2
lblSelectedItem.Text="Recieved"
End Sub