Ejemplo n.º 1
0
        /// <summary>
        /// This is called for activities that set launchMode to "singleTop" in their package,
        /// or if a client used the <see cref="Android.Content.ActivityFlags.SingleTop"/> flag when calling
        /// <see cref="Android.Content.ContextWrapper.StartActivity(Android.Content.Intent)"/>.
        /// </summary>
        /// <param name="intent">The new intent that was started for the activity.</param>
        protected override void OnNewIntent(Intent intent)
        {
            bool isBarcodeShouldBeDeleted = intent.GetBooleanExtra("delete", false);

            // if barcode should be deleted
            if (isBarcodeShouldBeDeleted)
            {
                // if clicked item index is correct
                if (_barcodeGeneratorFragment.ClickedItemIndex != -1)
                {
                    // get adapter
                    ArrayAdapter <Utils.BarcodeInformation> adapter = _barcodeGeneratorFragment.ListAdapter as ArrayAdapter <Utils.BarcodeInformation>;
                    // remove barcode
                    adapter.Remove(adapter.GetItem(_barcodeGeneratorFragment.ClickedItemIndex));
                    adapter.NotifyDataSetChanged();
                }
            }
            else
            {
                // get barcode writer settings
                string xmlSerialization = intent.GetStringExtra("barcode");
                if (xmlSerialization != null)
                {
                    WriterSettings barcodeWriterSettings = Utils.DeserializeBarcodeWriterSettings(xmlSerialization);
                    // get barcode description
                    string barcodeDescription = intent.GetStringExtra("barcodeDescription");

                    // get barcode subset
                    string barcodeSubset = intent.GetStringExtra("barcodeSubset");
                    string barcodeValue  = intent.GetStringExtra("barcodeValue");

                    ArrayAdapter <Utils.BarcodeInformation> adapter = _barcodeGeneratorFragment.ListAdapter as ArrayAdapter <Utils.BarcodeInformation>;

                    // if barcode writer settings is not empty
                    if (barcodeWriterSettings != null)
                    {
                        // if clicked item index is correct
                        if (_barcodeGeneratorFragment.ClickedItemIndex != -1)
                        {
                            // update list item
                            Utils.BarcodeInformation item = adapter.GetItem(_barcodeGeneratorFragment.ClickedItemIndex);
                            item.BarcodeWriterSetting = barcodeWriterSettings;
                            item.BarcodeValue         = barcodeValue;
                            item.BarcodeDescription   = barcodeDescription;
                            item.BarcodeSubsetName    = barcodeSubset;
                        }
                        else
                        {
                            // add value to the list
                            adapter.Add(new Utils.BarcodeInformation(barcodeWriterSettings, barcodeValue, barcodeDescription, barcodeSubset));
                        }
                        adapter.NotifyDataSetChanged();
                    }
                }
            }

            SaveHistory();

            base.OnNewIntent(intent);
        }
        /// <summary>
        /// Called to do initial creation of a fragment.
        /// </summary>
        /// <param name="savedInstanceState">If the fragment is being re-created from a previous saved state,
        /// this is the state.</param>
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);

            Utils.SetLocaleFromPrefereces(this);
            SetContentView(Resource.Layout.main);

            SupportActionBar.SetDisplayHomeAsUpEnabled(true);
            SupportActionBar.SetTitle(Resource.String.title_barcode_viewer);

            string         xmlSerialization      = Intent.GetStringExtra("barcode");
            WriterSettings barcodeWriterSettings = Utils.DeserializeBarcodeWriterSettings(xmlSerialization);
            string         barcodeDescription    = Intent.GetStringExtra("barcodeDescription");
            string         barcodeSubset         = Intent.GetStringExtra("barcodeSubset");
            string         barcodeValue          = Intent.GetStringExtra("barcodeValue");

            _barcode = new Utils.BarcodeInformation(barcodeWriterSettings, barcodeValue, barcodeDescription, barcodeSubset);

            _barcodeViewerFragment = new BarcodeViewerFragment(this);

            // create a new transaction
            Android.Support.V4.App.FragmentTransaction transaction = SupportFragmentManager.BeginTransaction();
            // add fragment to the container
            transaction.Replace(Resource.Id.mainContentFrame, _barcodeViewerFragment);
            // commit the transaction
            transaction.Commit();
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Called when an activity you launched exits, giving you the requestCode you started
        /// it with, the resultCode it returned, and any additional data from it.
        /// </summary>
        /// <param name="requestCode">
        /// The integer request code originally supplied to <see cref="StartActivityForResult()"/>, allowing
        /// you to identify who this result came from.
        /// </param>
        /// <param name="resultCode">The integer result code returned by the child activity through its <see cref="SetResult()"/>.</param>
        /// <param name="data">
        /// An Intent, which can return result data to the caller (various data can be attached to Intent "extras").
        /// </param>
        protected override void OnActivityResult(int requestCode, [GeneratedEnum] Result resultCode, Intent data)
        {
            // if result is OK
            if (resultCode == Result.Ok)
            {
                // get barcode value
                string barcodeValue = data.GetStringExtra("SCAN_RESULT");
                // get barcode type string
                string barcodeType = data.GetStringExtra("SCAN_RESULT_FORMAT");

                // get adapter of list view
                ArrayAdapter <Utils.BarcodeInformation> adapter = _barcodeGeneratorFragment.ListAdapter as ArrayAdapter <Utils.BarcodeInformation>;

                // create new item
                Utils.BarcodeInformation newItem = new Utils.BarcodeInformation();
                // get barcode type
                object barcodeTypeObject;
                bool   isSupported = Utils.BarcodeTypeNameToBarcodeTypes.TryGetValue(barcodeType, out barcodeTypeObject);

                // if barcode type is supported
                if (isSupported)
                {
                    // set barcode value
                    newItem.BarcodeValue = barcodeValue;

                    // if barcode type is subset
                    if (barcodeTypeObject is BarcodeSymbologySubset)
                    {
                        // set subset name
                        newItem.BarcodeSubsetName = barcodeType;
                        ((BarcodeSymbologySubset)barcodeTypeObject).Encode(barcodeValue, newItem.BarcodeWriterSetting);
                    }
                    else
                    {
                        // set barcode type
                        newItem.BarcodeWriterSetting.Barcode = (BarcodeType)barcodeTypeObject;
                        newItem.BarcodeWriterSetting.Value   = barcodeValue;
                    }

                    // add to the list
                    adapter.Add(newItem);
                    adapter.NotifyDataSetChanged();

                    Toast.MakeText(this, Resources.GetString(Resource.String.barcode_added_message), ToastLength.Short).Show();

                    _barcodeGeneratorFragment.SetLastItemIndexToClickedItemIndex();
                    SwitchToBarcodeViewer(this, newItem);
                }
                else
                {
                    ShowInfoDialog(
                        Resources.GetString(Resource.String.app_name),
                        string.Format(Resources.GetString(Resource.String.barcode_type_unsupported_message), barcodeType));
                }
            }
            base.OnActivityResult(requestCode, resultCode, data);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// This method will be called when an item in the list is selected.
        /// </summary>
        /// <param name="l">The ListView where the click happened.</param>
        /// <param name="v">The view that was clicked within the ListView.</param>
        /// <param name="position">The position of the view in the list.</param>
        /// <param name="id">The row id of the item that was clicked.</param>
        public override void OnListItemClick(ListView l, View v, int position, long id)
        {
            base.OnListItemClick(l, v, position, id);

            // save clicked position
            _clickedItemIndex = position;
            // get clicked item
            Utils.BarcodeInformation item = ((BarcodeArrayAdapter)ListAdapter).GetItem(position);

            _mainActivity.SwitchToBarcodeViewer(_mainActivity, item);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Saves history.
        /// </summary>
        private void SaveHistory()
        {
            // adapter of list view
            ArrayAdapter <Utils.BarcodeInformation> adapter = _barcodeGeneratorFragment.ListAdapter as ArrayAdapter <Utils.BarcodeInformation>;

            if (adapter != null)
            {
                try
                {
                    // open file stream to save history
                    using (FileStream fileStream = new FileStream(_historyFilePath, FileMode.Create, FileAccess.Write))
                    {
                        // open java object stream, which allows to seralize objects to a file
                        using (Java.IO.ObjectOutputStream outStream = new Java.IO.ObjectOutputStream(fileStream))
                        {
                            // temp list to get serialized items
                            List <ArrayList> list = new List <ArrayList>();

                            // for each list item
                            for (int index = 0; index < adapter.Count; index++)
                            {
                                // get item
                                Utils.BarcodeInformation item = adapter.GetItem(index);
                                // serialize writer settings
                                string xmlBarcode = Utils.SerializeBarcodeWriterSettings(item.BarcodeWriterSetting);
                                // create java list for four strings
                                ArrayList serializedStruct = new ArrayList();
                                serializedStruct.Add(xmlBarcode);
                                serializedStruct.Add(item.BarcodeDescription);
                                serializedStruct.Add(item.BarcodeSubsetName);
                                serializedStruct.Add(item.BarcodeValue);
                                // add serialized object to the temp list
                                list.Add(serializedStruct);
                            }
                            // create java list
                            using (ArrayList arrayList = new ArrayList(list))
                            {
                                // write java serializable objects to the file
                                outStream.WriteObject(arrayList);
                            }
                            outStream.Close();
                        }
                        fileStream.Close();
                    }
                }
                catch (Exception e)
                {
                    Toast.MakeText(this, string.Format("Save history error: {0}", e.Message), ToastLength.Long).Show();
                    LogUnhandledException(e);
                }
            }
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Switches from current activity to the <see cref="BarcodeViewerActivity"/> instance.
        /// </summary>
        /// <param name="context">A context.</param>
        /// <param name="item">A barcode item.</param>
        internal void SwitchToBarcodeViewer(Context context, Utils.BarcodeInformation item)
        {
            Intent intent = new Intent(context, typeof(BarcodeViewerActivity));
            // serialize data
            string xmlSerialization = Utils.SerializeBarcodeWriterSettings(item.BarcodeWriterSetting);

            intent.PutExtra("barcode", xmlSerialization);
            intent.PutExtra("barcodeDescription", item.BarcodeDescription);
            intent.PutExtra("barcodeSubset", item.BarcodeSubsetName);
            intent.PutExtra("barcodeValue", item.BarcodeValue);
            // start barcode viewer activity
            StartActivity(intent);
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Loads history.
        /// </summary>
        /// <returns>
        /// A history list.
        /// </returns>
        private List <Utils.BarcodeInformation> LoadHistory()
        {
            List <Utils.BarcodeInformation> values = new List <Utils.BarcodeInformation>();

            if (File.Exists(_historyFilePath))
            {
                try
                {
                    // open file stream
                    using (FileStream fileStream = new FileStream(_historyFilePath, FileMode.Open, FileAccess.Read))
                    {
                        // open java object stream, which allows to deseralize objects from a file
                        using (Java.IO.ObjectInputStream inStream = new Java.IO.ObjectInputStream(fileStream))
                        {
                            // read java list
                            JavaList arrayList = (JavaList)inStream.ReadObject();

                            for (int index = 0; index < arrayList.Count; index++)
                            {
                                // read four items: barcode writer settings + barcode value + barcode description + barcode subset name
                                JavaList serializedStruct = arrayList[index] as JavaList;
                                Utils.BarcodeInformation barcodeInformation = new Utils.BarcodeInformation();
                                barcodeInformation.BarcodeWriterSetting = Utils.DeserializeBarcodeWriterSettings((string)serializedStruct[0]);
                                barcodeInformation.BarcodeDescription   = (string)serializedStruct[1];
                                barcodeInformation.BarcodeSubsetName    = (string)serializedStruct[2];
                                if (serializedStruct.Count > 3)
                                {
                                    barcodeInformation.BarcodeValue = (string)serializedStruct[3];
                                }
                                else
                                {
                                    barcodeInformation.BarcodeValue = barcodeInformation.BarcodeWriterSetting.Value;
                                }

                                values.Add(barcodeInformation);
                            }
                            inStream.Close();
                        }
                        fileStream.Close();
                    }
                }
                catch (Exception e)
                {
                    Toast.MakeText(this, string.Format("Load history error: {0}", e.Message), ToastLength.Long).Show();
                    LogUnhandledException(e);
                }
            }

            return(values);
        }