private bool CheckVersion() { if (!Master.VERSION_CHECKED) { string sResponse = WebCommunications.SendGetRequest(Master.GetBaseURL() + Master.GetServerURL() + "RequiredAppVersion", true); XElement pResponse = Master.ReadResponse(sResponse); if (pResponse.Element("Text").Value != Master.APP_VERSION) { var pBuilder = new AlertDialog.Builder(this); pBuilder.SetMessage("You have an outdated version of this app. Please reinstall the app from http://digitalwarriorlabs.com/games/game_clans\n(" + Master.APP_VERSION + " -> " + pResponse.Element("Text").Value + ")"); pBuilder.SetPositiveButton("Ok", (e, s) => { //Intent pBrowserIntent = new Intent(this, Intent.ActionView, new Uri("http://digitalwarriorlabs.com/games/game_clans")); Intent pBrowserIntent = new Intent(Intent.ActionView, Android.Net.Uri.Parse("http://digitalwarriorlabs.com/games/game_clans")); StartActivity(pBrowserIntent); System.Environment.Exit(0); }); pBuilder.SetNegativeButton("Cancel", (e, s) => { System.Environment.Exit(0); }); pBuilder.Show(); return(false); } } return(true); }
private void RefreshGameList() { string sResponse = WebCommunications.SendPostRequest(Master.GetBaseURL() + Master.GetServerURL() + "ListActiveGames", Master.BuildCommonBody(), true); XElement pResponse = Master.ReadResponse(sResponse); List <string> lGames = new List <string>(); List <string> lGameIDs = new List <string>(); List <string> lGameNames = new List <string>(); List <string> lDisplay = new List <string>(); if (pResponse.Element("Data").Element("Games") != null) { foreach (XElement pGame in pResponse.Element("Data").Element("Games").Elements("Game")) { lGameIDs.Add(pGame.Value); lGames.Add(pGame.Attribute("GameType").Value); lGameNames.Add(pGame.Attribute("GameName").Value); lDisplay.Add(pGame.Attribute("GameName").Value + " (" + pGame.Attribute("GameType").Value + ")"); } } ListView pGamesList = FindViewById <ListView>(Resource.Id.gamesList); pGamesList.Adapter = new DrawerItemCustomAdapter(this, Resource.Layout.ListViewItemRow, lDisplay.ToArray()); pGamesList.ItemClick += (object sender, Android.Widget.AdapterView.ItemClickEventArgs e) => { int iChoice = e.Position; Intent pIntent = null; if (lGames[iChoice] == "Zendo") { pIntent = new Intent(this, (new ZendoActivity()).Class); } pIntent.SetAction(lGameIDs[iChoice]); pIntent.PutExtra("GameName", lGameNames[iChoice]); this.Finish(); StartActivity(pIntent); }; }
private void BuildHomeDashboard() { // get the scoreboard from the server string sResponse = WebCommunications.SendPostRequest(Master.GetBaseURL() + Master.GetServerURL() + "GetClanLeaderboard", Master.BuildCommonBody(), true); XElement pResponse = Master.ReadResponse(sResponse); // build the scoreboard if (pResponse.Element("Data").Element("Leaderboard") != null) { XElement pLeaderboard = pResponse.Element("Data").Element("Leaderboard"); TextView pMyUser = FindViewById <TextView>(Resource.Id.lblMyStatsName); TextView pMyScore = FindViewById <TextView>(Resource.Id.lblMyStatsScore); TextView pMyPlace = FindViewById <TextView>(Resource.Id.lblMyStatsPlace); pMyUser.Text = Master.GetActiveUserName(); pMyScore.Text = pLeaderboard.Attribute("Score").Value; pMyPlace.Text = pLeaderboard.Attribute("Place").Value; LinearLayout pScoreboardLayout = FindViewById <LinearLayout>(Resource.Id.lstScoreBoard); pScoreboardLayout.RemoveAllViews(); foreach (XElement pScoreXml in pLeaderboard.Elements("Score")) { View pScoreRow = LayoutInflater.From(this).Inflate(Resource.Layout.ScoreRow, pScoreboardLayout, false); TextView pUser = pScoreRow.FindViewById <TextView>(Resource.Id.lblScoreName); TextView pPlace = pScoreRow.FindViewById <TextView>(Resource.Id.lblScorePlace); TextView pScore = pScoreRow.FindViewById <TextView>(Resource.Id.lblScoreScore); pUser.Text = pScoreXml.Attribute("User").Value; pPlace.Text = pScoreXml.Attribute("Place").Value; pScore.Text = pScoreXml.Attribute("Score").Value; pScoreboardLayout.AddView(pScoreRow); } } // get the notifcations list from the server sResponse = WebCommunications.SendPostRequest(Master.GetBaseURL() + Master.GetServerURL() + "GetUnreadNotifications", Master.BuildCommonBody(), true); pResponse = Master.ReadResponse(sResponse); LinearLayout pNotifLayout = FindViewById <LinearLayout>(Resource.Id.lstNotifications); pNotifLayout.RemoveAllViews(); if (pResponse.Element("Data").Element("Notifications") != null) { foreach (XElement pNotif in pResponse.Element("Data").Element("Notifications").Elements("Notification")) { // make the datarow layout View pDataRow = LayoutInflater.From(this).Inflate(Resource.Layout.DataRow, pNotifLayout, false); TextView pDataText = pDataRow.FindViewById <TextView>(Resource.Id.txtText); pDataText.Text = pNotif.Attribute("GameName").Value + " - " + pNotif.Value; // reset event handler pDataText.Click -= m_pDataTextDelegate; m_pDataTextDelegate = delegate { string sGameID = pNotif.Attribute("GameID").Value; Intent pIntent = null; if (sGameID.Contains("Zendo")) { pIntent = new Intent(this, typeof(ZendoActivity)); } pIntent.SetAction(sGameID); pIntent.PutExtra("GameName", pNotif.Attribute("GameName").Value); this.Finish(); StartActivity(pIntent); }; pDataText.Click += m_pDataTextDelegate; /*pDataText.Click += delegate * { * string sGameID = pNotif.Attribute("GameID").Value; * Intent pIntent = null; * if (sGameID.Contains("Zendo")) { pIntent = new Intent(this, typeof(ZendoActivity)); } * pIntent.SetAction(sGameID); * pIntent.PutExtra("GameName", pNotif.Attribute("GameName").Value); * this.Finish(); * StartActivity(pIntent); * };*/ pNotifLayout.AddView(pDataRow); } } Button pMarkRead = FindViewById <Button>(Resource.Id.btnMarkRead); pMarkRead.Click += delegate { WebCommunications.SendPostRequest(Master.GetBaseURL() + Master.GetServerURL() + "MarkUnreadNotificationsRead", Master.BuildCommonBody(), true); this.BuildHomeDashboard(); }; }
protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); this.SetContentView(Resource.Layout.Notifications); base.CreateDrawer(); // get the notifcations list from the server string sResponse = WebCommunications.SendPostRequest(Master.GetBaseURL() + Master.GetServerURL() + "GetLastNNotifications", Master.BuildCommonBody(), true); XElement pResponse = Master.ReadResponse(sResponse); List <string> lDisplay = new List <string>(); List <string> lIDs = new List <string>(); List <string> lGameNames = new List <string>(); if (pResponse.Element("Data").Element("Notifications") != null) { foreach (XElement pNotif in pResponse.Element("Data").Element("Notifications").Elements("Notification")) { lDisplay.Add(pNotif.Attribute("GameName").Value + " - " + pNotif.Value); lIDs.Add(pNotif.Attribute("GameID").Value); lGameNames.Add(pNotif.Attribute("GameName").Value); } } ListView pNotifList = FindViewById <ListView>(Resource.Id.lstNotifications); pNotifList.Adapter = new DrawerItemCustomAdapter(this, Resource.Layout.ListViewItemRow, lDisplay.ToArray()); pNotifList.ItemClick += (object sender, Android.Widget.AdapterView.ItemClickEventArgs e) => { int iChoice = e.Position; Intent pIntent = null; if (lIDs[iChoice].Contains("Zendo")) { pIntent = new Intent(this, typeof(ZendoActivity)); } pIntent.SetAction(lIDs[iChoice]); pIntent.PutExtra("GameName", lGameNames[iChoice]); this.Finish(); StartActivity(pIntent); }; /*LinearLayout pNotifLayout = FindViewById<LinearLayout>(Resource.Id.lstNotifications); * pNotifLayout.RemoveAllViews(); * if (pResponse.Element("Data").Element("Notifications") != null) * { * foreach (XElement pNotif in pResponse.Element("Data").Element("Notifications").Elements("Notification")) * { * // make the datarow layout * View pDataRow = LayoutInflater.From(this).Inflate(Resource.Layout.DataRow, pNotifLayout, false); * * TextView pDataText = pDataRow.FindViewById<TextView>(Resource.Id.txtText); * pDataText.Text = pNotif.Attribute("GameName").Value + " - " + pNotif.Value; * * pDataText.Click += delegate * { * string sGameID = pNotif.Attribute("GameID").Value; * Intent pIntent = null; * if (sGameID.Contains("Zendo")) { pIntent = new Intent(this, typeof(ZendoActivity)); } * pIntent.SetAction(sGameID); * pIntent.PutExtra("GameName", pNotif.Attribute("GameName").Value); * this.Finish(); * StartActivity(pIntent); * }; * * pNotifLayout.AddView(pDataRow); * } * }*/ }
private void CheckServerNotifications(Context pContext, string sClan, string sName) { XElement pResponse = null; //try //{ string sPrevClan = Master.GetActiveClan(); string sPrevUser = Master.GetActiveUserName(); Master.SetActiveClan(sClan); Master.SetActiveUserName(sName); string sResponse = WebCommunications.SendPostRequest(Master.GetBaseURL() + Master.GetServerURL() + "GetUnseenNotifications", Master.BuildCommonBody(), true); pResponse = Master.ReadResponse(sResponse); Master.SetActiveClan(sPrevClan); Master.SetActiveUserName(sPrevUser); //} //catch (Exception e) { return; } if (pResponse.Element("Data") != null && pResponse.Element("Data").Element("Notifications").Value != "") { List <XElement> pNotifications = pResponse.Element("Data").Element("Notifications").Elements("Notification").ToList(); foreach (XElement pNotification in pNotifications) { string sContent = pNotification.Value; string sGameID = pNotification.Attribute("GameID").Value; string sGameName = pNotification.Attribute("GameName").Value; Notification.Builder pBuilder = new Notification.Builder(pContext); pBuilder.SetContentTitle(sClan + " - " + sGameName); pBuilder.SetContentText(sContent); pBuilder.SetSmallIcon(Resource.Drawable.Icon); pBuilder.SetVibrate(new long[] { 200, 50, 200, 50 }); pBuilder.SetVisibility(NotificationVisibility.Public); pBuilder.SetPriority((int)NotificationPriority.Default); Intent pIntent = null; if (sGameID.Contains("Zendo")) { pIntent = new Intent(pContext, typeof(ZendoActivity)); } pIntent.SetAction(sGameID); pIntent.PutExtra("GameName", sGameName); pBuilder.SetContentIntent(PendingIntent.GetActivity(pContext, 0, pIntent, 0)); pBuilder.SetStyle(new Notification.BigTextStyle().BigText(sContent)); Notification pNotif = pBuilder.Build(); NotificationManager pManager = (NotificationManager)pContext.GetSystemService(Context.NotificationService); pManager.Notify((int)Java.Lang.JavaSystem.CurrentTimeMillis(), pNotif); // using time to make different ID every time, so doesn't replace old notification //pManager.Notify(DateTime.Now.Millisecond, pNotif); // using time to make different ID every time, so doesn't replace old notification } } }
protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); SetContentView(Resource.Layout.JoinGroup); EditText pClan = FindViewById <EditText>(Resource.Id.txtClanName); EditText pPass = FindViewById <EditText>(Resource.Id.txtClanPassword); EditText pUser = FindViewById <EditText>(Resource.Id.txtUserName); Button pJoin = FindViewById <Button>(Resource.Id.btnSubmitJoin); pJoin.Click += delegate { // TODO: SANITIZATION! _hidden.InitializeWeb(); //string sUserPass = File.ReadAllText(Master.GetBaseDir() + "_key.dat"); string sUserPass = Master.GetKey(); string sBody = "<params><param name='sEmail'>" + Master.GetEmail() + "</param><param name='sClanName'>" + pClan.Text.ToString() + "</param><param name='sClanPassPhrase'>" + pPass.Text.ToString() + "</param><param name='sUserName'>" + pUser.Text.ToString() + "</param><param name='sUserPassPhrase'>" + sUserPass + "</param></params>"; //string sResponse = WebCommunications.SendPostRequest("http://dwlapi.azurewebsites.net/api/reflection/GameClansServer/GameClansServer/ClanServer/JoinClan", sBody, true); string sResponse = WebCommunications.SendPostRequest(Master.GetBaseURL() + Master.GetServerURL() + "JoinClan", sBody, true); XElement pResponse = Master.ReadResponse(sResponse); //Master.Popup(this, pResponse.Element("Text").Value); string sResponseMessage = pResponse.Element("Text").Value; // TODO: even if user is already part of clan, need to check local clans file and make sure the data is there (and add it if not) var pBuilder = new AlertDialog.Builder(this); pBuilder.SetMessage(sResponseMessage); if (pResponse.Attribute("Type").Value == "Error" || pResponse.Element("Data").Element("ClanStub") == null) { pBuilder.SetPositiveButton("Ok", (e, s) => { return; }); } else { pBuilder.SetPositiveButton("Ok", (e, s) => { XElement pClanStub = pResponse.Element("Data").Element("ClanStub"); string sClanName = pClanStub.Attribute("ClanName").Value; string sUserName = pClanStub.Attribute("UserName").Value; File.AppendAllLines(Master.GetBaseDir() + "_clans.dat", new List <string>() { sClanName + "|" + sUserName }); this.SetResult(Result.Ok); this.Finish(); }); } pBuilder.Create().Show(); }; }
protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); this.SetContentView(Resource.Layout.Login); EditText pEmail = FindViewById <EditText>(Resource.Id.txtEmail); EditText pPass = FindViewById <EditText>(Resource.Id.txtUserPassword); Button pSubmit = FindViewById <Button>(Resource.Id.btnLogin); pSubmit.Click += delegate { string sBody = "<params><param name='sEmail'>" + pEmail.Text.ToString() + "</param><param name='sPassword'>" + Security.Sha256Hash(pPass.Text.ToString()) + "</param></params>"; string sResponse = WebCommunications.SendPostRequest(Master.GetBaseURL() + Master.GetServerURL() + "ReturningUser", sBody, true); XElement pResponse = Master.ReadResponse(sResponse); string sResponseMessage = pResponse.Element("Text").Value; if (pResponse.Attribute("Type").Value == "Error") { this.Popup(sResponseMessage); } else { Master.HandleUserRegistrationData(pResponse); this.Finish(); } }; }
protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); SetContentView(Resource.Layout.Key); EditText pEmail = FindViewById <EditText>(Resource.Id.txtEmail); EditText pPass1 = FindViewById <EditText>(Resource.Id.txtUserPassword); EditText pPass2 = FindViewById <EditText>(Resource.Id.txtUserPassword2); Button pSubmit = FindViewById <Button>(Resource.Id.btnSetPassword); pSubmit.Click += delegate { if (pEmail.Text == "") { Master.Popup(this, "Your email cannot be blank."); } if (pPass1.Text == "") { Master.Popup(this, "Your password cannot be blank."); return; } if (pPass1.Text != pPass2.Text) { Master.Popup(this, "The password fields do not match."); return; } string sBody = "<params><param name='sEmail'>" + pEmail.Text.ToString() + "</param><param name='sPassword'>" + Security.Sha256Hash(pPass1.Text.ToString()) + "</param></params>"; string sResponse = WebCommunications.SendPostRequest(Master.GetBaseURL() + Master.GetServerURL() + "RegisterUser", sBody, true); XElement pResponse = Master.ReadResponse(sResponse); string sResponseMessage = pResponse.Element("Text").Value; if (pResponse.Attribute("Type").Value == "Error") { Popup(sResponseMessage); return; } else { //MessageBox.Show(sResponseMessage); Master.HandleUserRegistrationData(pResponse); this.Finish(); } }; }