Example #1
0
        /*
         * Occurs when a Chooser task is completed.
         * @param sender The object that triggered the event.
         * @param e The result containing the image selected by the user.
         */
        private void PhotoChooserTaskCompleted(object sender, PhotoResult e)
        {
            photoTaskStarted = false;
            Memory    eventData = new Memory(16);
            const int MAWidgetEventData_eventType        = 0;
            const int MAWidgetEventData_imagePickerState = 4;
            const int MAWidgetEventData_imageHandle      = 8;
            const int MAWidgetEventData_imageEncoding    = 12;

            eventData.WriteInt32(MAWidgetEventData_eventType, MoSync.Constants.EVENT_TYPE_IMAGE_PICKER);

            if (e.TaskResult == TaskResult.OK)
            {
                // the user has selected an image -> the image picker state will be 1 - ok
                eventData.WriteInt32(MAWidgetEventData_imagePickerState, 1);

                // get a bitmap of the image selected by the user using the Image Picker
                BitmapImage img = new BitmapImage();
                img.SetSource(e.ChosenPhoto);
                switch (eventType)
                {
                case MoSync.Constants.MA_IMAGE_PICKER_EVENT_RETURN_TYPE_IMAGE_DATA:
                    // We create a memory stream that will contain the bitmap image
                    // with jpeg encoding
                    MemoryStream    memoryStream   = new MemoryStream();
                    WriteableBitmap writableBitmap = new WriteableBitmap(img);
                    writableBitmap.SaveJpeg(memoryStream, img.PixelWidth, img.PixelHeight, 0, 100);

                    eventData.WriteInt32(MAWidgetEventData_imageHandle, runtimeReference.AddResource(
                                             new Resource(memoryStream, MoSync.Constants.RT_BINARY, true)));
                    break;

                default:
                    // The AddResource returns an int - the image handle that's sent with the event data
                    eventData.WriteInt32(MAWidgetEventData_imageHandle, runtimeReference.AddResource(
                                             new Resource(img, MoSync.Constants.RT_IMAGE)));
                    break;
                }

                eventData.WriteInt32(MAWidgetEventData_imageEncoding, MoSync.Constants.MA_IMAGE_PICKER_ITEM_ENCODING_JPEG);
            }
            else
            {
                // the user has canceled the image selection -> the image picker state will be 0 - cancel
                eventData.WriteInt32(MAWidgetEventData_imagePickerState, 0);
            }

            runtimeReference.PostEvent(new Event(eventData));
        }
        /*
         * Occurs when a Chooser task is completed.
         * @param sender The object that triggered the event.
         * @param e The result containing the image selected by the user.
         */
        private void PhotoChooserTaskCompleted(object sender, PhotoResult e)
        {
            photoTaskStarted = false;
            Memory    eventData = new Memory(12);
            const int MAWidgetEventData_eventType        = 0;
            const int MAWidgetEventData_imagePickerState = 4;
            const int MAWidgetEventData_imageHandle      = 8;

            eventData.WriteInt32(MAWidgetEventData_eventType, MoSync.Constants.EVENT_TYPE_IMAGE_PICKER);

            if (e.TaskResult == TaskResult.OK)
            {
                // the user has selected an image -> the image picker state will be 1 - ok
                eventData.WriteInt32(MAWidgetEventData_imagePickerState, 1);

                // get a bitmap of the image selected by the user using the Image Picker
                BitmapImage img = new BitmapImage();
                img.SetSource(e.ChosenPhoto);

                // The AddResource returns an int - the image handle that's sent with the event data
                eventData.WriteInt32(MAWidgetEventData_imageHandle, runtimeReference.AddResource(
                                         new Resource(img, MoSync.Constants.RT_IMAGE)));
            }
            else
            {
                // the user has canceled the image selection -> the image picker state will be 0 - cancel
                eventData.WriteInt32(MAWidgetEventData_imagePickerState, 0);
            }

            runtimeReference.PostEvent(new Event(eventData));
        }