public void ItemScannedAction(QrMessage message)
        {
            try
            {
                var qrId = message.ParseQrCode();

                var activeScanningMethod = appStorage.GetScanningAction();

                if (activeScanningMethod == ScanningAction.RelocateItem)
                {
                    Boolean done = false;
                    Device.BeginInvokeOnMainThread(async() =>
                    {
                        await NavigateFromMenu((int)MenuItemType.RelocateItems);
                        done = true;
                    });
                    while (!done)
                    {
                        // Wait for the navigate to complete.
                    }
                }
                if (Detail.GetType() == typeof(NavigationPage))
                {
                    var currentPage = ((NavigationPage)Detail).CurrentPage;
                    if (currentPage.GetType() == typeof(UpdateMdAssignedItemPage))
                    {
                        ((UpdateMdAssignedItemPage)currentPage).UpdatedScannedItem(qrId);
                        return;
                    }

                    var root = ((NavigationPage)Detail).RootPage;
                    if (root.GetType() == typeof(MultiItemUpdatePage))
                    {
                        ((MultiItemUpdatePage)root).AddQrId(qrId);
                        return;
                    }
                }


                var detailsModel = new ItemDetailViewModel();
                detailsModel.loadFromQrId(qrId);
                var detailsPage = ItemDetailPage.CreateItemDetailPage(detailsModel);
                var newPage     = new NavigationPage(detailsPage);
                Device.BeginInvokeOnMainThread(async() =>
                {
                    await NavigateToNewPageFromApp(newPage);
                });
            }
            catch (Exception ex)
            {
                var exMessage = CdbApiFactory.ParseApiException(ex);
                Debug.WriteLine(exMessage);
                Device.BeginInvokeOnMainThread(async() =>
                {
                    await DisplayAlert(exMessage.SimpleName, exMessage.Message, "OK");
                });
            }
        }
示例#2
0
        public override bool OnKeyUp([GeneratedEnum] Keycode keyCode, KeyEvent e)
        {
            var currentKeyChar = e.DisplayLabel;

            if (char.IsLetterOrDigit(currentKeyChar) ||
                currentKeyChar.Equals('=') ||
                keyCode == Keycode.Enter)
            {
                var currentKey = currentKeyChar + "";

                if (QRIDtrigger.Equals(PreviousKeyStroke))
                {
                    if (keyCode == Keycode.Enter)
                    {
                        var topic   = QrMessage.MESSAGE_SCANNED_TOPIC;
                        var type    = QrMessage.NUMERIC_INPUT_CODETYPE;
                        var message = new QrMessage(type, Code);

                        MessagingCenter.Send <QrMessage>(message, topic);
                    }

                    int result = -1;
                    if (int.TryParse(currentKey, out result))
                    {
                        Code += result;
                    }
                    else
                    {
                        PreviousKeyStroke = "";
                        Code = "";
                    }
                }
                else
                {
                    if (QRIDtrigger.StartsWith(PreviousKeyStroke))
                    {
                        PreviousKeyStroke += currentKey;
                    }
                    else
                    {
                        PreviousKeyStroke = currentKey;
                        Code = "";
                    }
                }
            }

            //process key press
            return(base.OnKeyUp(keyCode, e));
        }
示例#3
0
        void scanner_Data(object sender, Scanner.DataEventArgs e)
        {
            ScanDataCollection scanDataCollection = e.P0;

            if ((scanDataCollection != null) && (scanDataCollection.Result == ScannerResults.Success))
            {
                IList <ScanDataCollection.ScanData> scanData = scanDataCollection.GetScanData();

                foreach (ScanDataCollection.ScanData data in scanData)
                {
                    Console.WriteLine(data.LabelType + " : " + data.Data);
                    var topic   = QrMessage.MESSAGE_SCANNED_TOPIC;
                    var message = new QrMessage(data.LabelType.ToString(), data.Data);

                    MessagingCenter.Send <QrMessage>(message, topic);
                }
            }
        }
示例#4
0
        async void TypeQR_Clicked(System.Object sender, System.EventArgs e)
        {
            string result = await DisplayPromptAsync("Type QRID", "Enter Component QR Code:", initialValue : "", maxLength : 9, keyboard : Keyboard.Numeric);

            QrMessage.SubmitTypedQRIDResult(result);
        }