From 04ff3ad80bd022b2435653c2ad00981f9904c51a Mon Sep 17 00:00:00 2001 From: stubbfel Date: Thu, 19 Sep 2013 10:55:07 +0200 Subject: [PATCH] add filter pid medhod to stringmanager --- .../Pages/PlaceNews/PlaceNews.xaml.cs | 33 +++++---- .../Resources/Constants.Designer.cs | 9 +++ .../CampusAppWP8/Resources/Constants.resx | 3 + .../CampusAppWPortalLib8/Settings.StyleCop | 2 + .../Utility/DefaultStringManager.cs | 71 ++++++++++++++++++- 5 files changed, 100 insertions(+), 18 deletions(-) diff --git a/CampusAppWP8/CampusAppWP8/Pages/PlaceNews/PlaceNews.xaml.cs b/CampusAppWP8/CampusAppWP8/Pages/PlaceNews/PlaceNews.xaml.cs index aa1574a9..ab6f784e 100644 --- a/CampusAppWP8/CampusAppWP8/Pages/PlaceNews/PlaceNews.xaml.cs +++ b/CampusAppWP8/CampusAppWP8/Pages/PlaceNews/PlaceNews.xaml.cs @@ -95,8 +95,13 @@ namespace CampusAppWP8.Pages.PlaceNews qrScan = false; string qrResult = App.LoadFromIsolatedStorage("PlaceNewsQCCode"); App.SaveToIsolatedStorage("PlaceNewsQCCode", null); - this.searchPidList = new List() { qrResult.Split('\n')[0].Trim() }; - this.SendGetPisPssForPlacenews(this.searchPidList); + + string searchPid = Wp8StringManager.FilterPlaceIdinQRResultString(qrResult); + if (searchPid != null) + { + this.searchPidList = new List() { searchPid }; + this.SendGetPisPssForPlacenews(this.searchPidList); + } } else { @@ -280,6 +285,9 @@ namespace CampusAppWP8.Pages.PlaceNews // load from pis api this.SendGetPlaceService(this.searchPidList, serviceNames); + + this.CheckedSetupResultBox(); + } /// /// Method send get for PlaceInformation of certain places @@ -351,7 +359,7 @@ namespace CampusAppWP8.Pages.PlaceNews private void ApplicationBarMenuItem_Click(object sender, EventArgs e) { this.qrScan = true; - string urlString = "/Pages/Dev/QRScanner.xaml"; + string urlString = Constants.PathQR_QRPage; urlString += "?" + Constants.ParamQRResultKey + "=" + "PlaceNewsQCCode"; Uri url = new Uri(urlString as string, UriKind.Relative); this.NavigationService.Navigate(url); @@ -363,6 +371,7 @@ namespace CampusAppWP8.Pages.PlaceNews /// Event information. private void ApplicationBarMenuItem_Click_1(object sender, EventArgs e) { + this.ProgressBar.Visibility = Visibility.Visible; this.device.SubscribeForMessage("NDEF", this.NDEFHandler); } @@ -421,22 +430,12 @@ namespace CampusAppWP8.Pages.PlaceNews NDEFMessage ndef = new NDEFMessage(data); string nfcContent = ndef.GetContent(); - nfcContent = nfcContent.Trim('{'); - nfcContent = nfcContent.Trim('}'); - string[] items = nfcContent.Split(','); - string pid = "0"; - foreach (string item in items) + string pid = Wp8StringManager.FilterPlaceIdinNFCResultString(nfcContent.Trim()); + if (pid != null) { - if (item.StartsWith("\"pid\":\"")) - { - pid = item; - pid = pid.TrimStart("\"pid\":\"".ToCharArray()); - pid = pid.TrimEnd('\"'); - break; - } + this.searchPidList = new List() { pid }; + this.SendGetPisPssForPlacenews(this.searchPidList); } - this.searchPidList = new List() { pid }; - this.SendGetPisPssForPlacenews(this.searchPidList); // this.Dispatcher.BeginInvoke(new Action(() => MessageBox.Show(ndef.GetContent()))); } #endregion diff --git a/CampusAppWP8/CampusAppWP8/Resources/Constants.Designer.cs b/CampusAppWP8/CampusAppWP8/Resources/Constants.Designer.cs index 0f3c3b91..50e0e97e 100644 --- a/CampusAppWP8/CampusAppWP8/Resources/Constants.Designer.cs +++ b/CampusAppWP8/CampusAppWP8/Resources/Constants.Designer.cs @@ -861,6 +861,15 @@ namespace CampusAppWP8.Resources { } } + /// + /// Sucht eine lokalisierte Zeichenfolge, die /Pages/Dev/QRScanner.xaml ähnelt. + /// + public static string PathQR_QRPage { + get { + return ResourceManager.GetString("PathQR_QRPage", resourceCulture); + } + } + /// /// Sucht eine lokalisierte Zeichenfolge, die /Pages/Setting/AppSettingPage.xaml ähnelt. /// diff --git a/CampusAppWP8/CampusAppWP8/Resources/Constants.resx b/CampusAppWP8/CampusAppWP8/Resources/Constants.resx index 675e0e6b..522f7cf8 100644 --- a/CampusAppWP8/CampusAppWP8/Resources/Constants.resx +++ b/CampusAppWP8/CampusAppWP8/Resources/Constants.resx @@ -516,4 +516,7 @@ QRResultKey + + /Pages/Dev/QRScanner.xaml + \ No newline at end of file diff --git a/CampusAppWP8/CampusAppWPortalLib8/Settings.StyleCop b/CampusAppWP8/CampusAppWPortalLib8/Settings.StyleCop index 7aff7afb..54487d17 100644 --- a/CampusAppWP8/CampusAppWPortalLib8/Settings.StyleCop +++ b/CampusAppWP8/CampusAppWPortalLib8/Settings.StyleCop @@ -1,7 +1,9 @@ + nfc param + qr str stubbfel telefon diff --git a/CampusAppWP8/CampusAppWPortalLib8/Utility/DefaultStringManager.cs b/CampusAppWP8/CampusAppWPortalLib8/Utility/DefaultStringManager.cs index faf0b1b3..a572c10f 100644 --- a/CampusAppWP8/CampusAppWPortalLib8/Utility/DefaultStringManager.cs +++ b/CampusAppWP8/CampusAppWPortalLib8/Utility/DefaultStringManager.cs @@ -6,7 +6,7 @@ // 06.06.2013 //---------------------------------------------------------------------- namespace CampusAppWPortalLib8.Utility -{ +{ using System; using System.Text.RegularExpressions; using CampusAppWPortalLib8.Resources; @@ -118,6 +118,75 @@ namespace CampusAppWPortalLib8.Utility return shortStr; } + + /// + /// Method gets the placeId of the result string for an qrCode string + /// + /// input qrCode string + /// the id if it was found it in the string otherwise null + public static string FilterPlaceIdinQRResultString(string qrCodeResult) + { + string[] lines = qrCodeResult.Split('\n'); + + string tmpLineTrim; + foreach (string line in lines) + { + tmpLineTrim = line.Trim(); + if (DefaultStringManager.IsDigitsOnly(tmpLineTrim)) + { + return tmpLineTrim; + } + } + + return null; + } + + /// + /// Method check if the string contains only digit + /// + /// input string + /// true if the string contains only digit, otherwise false + public static bool IsDigitsOnly(string str) + { + foreach (char c in str) + { + if (c < '0' || c > '9') + { + return false; + } + } + + return true; + } + + /// + /// Method gets the placeId of the result string for an nfc string + /// + /// input nfc string + /// the id if it was found it in the string otherwise null + public static string FilterPlaceIdinNFCResultString(string nfcResult) + { + string nfcResultTrim = nfcResult.Trim('{'); + nfcResultTrim = nfcResultTrim.Trim('}'); + string[] items = nfcResultTrim.Split(','); + string[] tmpStringPair; + + foreach (string item in items) + { + tmpStringPair = item.Trim().Split(':'); + + if (tmpStringPair.Length == 2) + { + string pairKey = tmpStringPair[0].Trim('\"').Trim(); + if (pairKey.Equals("pid")) + { + return tmpStringPair[1].Trim('\"').Trim(); + } + } + } + + return null; + } #endregion } }