private static Task CreateLoadingTask
        (
            string progressFormat,
            Action <string> updateText,
            Func <Context> getContext
        )
        {
            return(Task.Run
                   (
                       async() =>
            {
                await PortableObjectRepository <Activity> .RefreshObjectCacheAsync
                (
                    AndroidCrapApplication.ApplicationLogger,

                    updateCount: (objectCount) =>
                {
                    if (objectCount % _progressChunk != 0)
                    {
                        return;
                    }

                    string progressText = string.Format(progressFormat,
                                                        objectCount);
                    updateText(progressText);
                }
                );

                Context loadingContext = getContext();

                AndroidBrowseThumbnailsActivity.StartBrowseActivity(loadingContext,
                                                                    typeof(AndroidObjectListActivity));
            }
                   ));
        }
        public async override void OnBackPressed()
        {
            _sourceListAdapter.StopTimer();

            if (_sourceListAdapter.IsDataChanged)
            {
                IEnumerable <PortableBaseSource> objectSources
                    = PortableObjectRepository <Activity> .GetObjectSources();

                await PortableSourceRepository.SaveSourceDataAsync
                (
                    objectSources,
                    AndroidCrapApplication.ApplicationLogger
                );

                await PortableObjectRepository <Activity> .RefreshObjectCacheAsync
                (
                    AndroidCrapApplication.ApplicationLogger,

                    updateCount : (objectCount) => { }
                );
            }

            base.OnBackPressed();
        }
        private void OnObjectThumbnailClicked
        (
            object sender,
            EventArgs arguments
        )
        {
            PortableBaseObject selectedObject = null;

            try
            {
                ImageView objectThumbnail = (ImageView)sender;

                string correlationTag = objectThumbnail.GetCorrelationTag();

                selectedObject = PortableObjectRepository <Activity> .GetObjectByCorrelationTag
                                 (
                    correlationTag
                                 );
            }
            catch (Exception exception)
            {
                AndroidCrapApplication.ApplicationLogger.LogError(exception);

                throw;
            }

            if (selectedObject != null)
            {
                EditObject(selectedObject);
            }
        }
Пример #4
0
        protected override void OnDone()
        {
            PortableFileObject imageObject = PortableObjectRepository <Activity> .AddFileObject
                                             (
                _picturePath,

                (directorySource, objectFile) => new AndroidImageObject(directorySource,
                                                                        objectFile)
                                             );

            PortableObjectRepository <Activity> .PushPendingObject(imageObject);

            if (DeviceOrientation == null)
            {
                // this should "never" happen:
                throw new NullReferenceException(nameof(DeviceOrientation));
            }

            var editImageIntent = new Intent(this, typeof(AndroidEditImageActivity));

            editImageIntent.PutExtra(AndroidEditImageActivity.DeviceOrientationExtra,
                                     DeviceOrientation.Value);

            editImageIntent.PutExtra(AndroidEditImageActivity.PicturePathExtra,
                                     _picturePath);

            StartActivity(editImageIntent);
        }
Пример #5
0
        private static Task CreateObjectLoadingTask
        (
            PortableContextLogger contextLogger,
            Action <int> updateCount,
            string sourceFile,
            IReadOnlyDictionary <string, string> fileProviders,
            Func <PortableDirectorySource, string, PortableFileObject> createObject,
            params string[] fileExtensions
        )
        {
            PortableFileEnumerator fileEnumerator = new DefaultFileEnumerator(fileProviders,
                                                                              fileExtensions);

            PortableFileDescriber fileDescriber = new DefaultFileDescriber();

            Task loadingTask = PortableObjectRepository <Activity> .LoadFileObjectsAsync
                               (
                contextLogger,
                updateCount,
                sourceFile,
                fileEnumerator,
                fileDescriber,
                createObject
                               );

            return(loadingTask);
        }
        // http://martynnw.blogspot.co.uk/2014/10/xamarin-android-listviews-checkboxes-on.html

        /*private void SourceItemLongClicked
         * (
         *  object sender,
         *  AdapterView.ItemLongClickEventArgs arguments
         * )
         * {
         *  EditObject(_browseSourcesAdapter[arguments.Position].Key.SourceObjects[0]);
         * }*/

        protected override void OnResume()
        {
            bool initializeAdapter = ((BrowseViewState == null) ||
                                      (PortableObjectRepository <Activity> .HasUnreadSourceChanges));

            if (initializeAdapter)
            {
                List <PortableBaseSource> objectSources
                    = PortableObjectRepository <Activity> .GetObjectSources().OrderBy
                      (
                          objectSource => (!objectSource.IsEnabled) +
                          objectSource.ProviderName +
                          objectSource.SourceName +
                          objectSource.SourceDetails
                      )
                      .ToList();

                _sourceListAdapter = new AndroidBrowseSourcesAdapter
                                     (
                    RunOnUiThread,

                    (viewGroup) => LayoutInflater.Inflate(ItemLayoutResource,
                                                          viewGroup,
                                                          attachToRoot: false),

                    () => { return(BrowseFooterFragment.GetScaleType()); },
                    (scaleType) => BrowseFooterFragment.SetScaleType(scaleType),

                    () => { return(Resources); },

                    this.EditObject,

                    objectSources,

                    onCorrupt: (imageException,
                                imageView) =>
                {
                    this.HandleCorruptObject
                    (
                        imageException,
                        imageView,
                        getCount: () => { return(CorruptMesssageCount); },
                        setCount: (currentMassageCount) => { CorruptMesssageCount = currentMassageCount; }
                    );
                }
                                     );
            }

            base.OnResume();

            _sourceListAdapter.StartTimer(SlideInterval);
        }
Пример #7
0
        /*public override void OnTrimMemory
         * (
         *  [GeneratedEnum] TrimMemory level
         * )
         * {
         *  base.OnTrimMemory(level);
         * }*/

        public override void OnCreate()
        {
            //ApplicationLogger.LogDebug("MEMORY 0 : {0}",
            //                           GC.GetTotalMemory(false));
            base.OnCreate();

            //ApplicationLogger.LogDebug("MEMORY 1 : {0}",
            //                           GC.GetTotalMemory(false));

            UnhandledExceptionHandler.Activate();

            CreateBitmapCache();

            RegisterActivityLifecycleCallbacks(new ActivityLifecycleCallbacks());

            PortableObjectRepository <Activity> .RegisterPlatformSpecific
            (
                getUiContext : () => { return(CurrentActivity); },

                showExceptionAndExit : (activity,
                                        exception) => ShowExceptionAndExit(activity,
                                                                           exception),
                fileObjectDescriber : new DefaultFileDescriber(),

                objectLoadingTask : AndroidObjectRepository.LoadAndroidObjectsAsync
            );

            PortableSourceRepository.RegisterPlatformSpecific
            (
                sourceReaderFactory: AndroidSourceRepository.CreateSourceReader,

                sourceWriterFactory: AndroidSourceRepository.CreateSourceWriter
            );

            //ApplicationLogger.LogDebug("MEMORY 2 : {0}",
            //                           GC.GetTotalMemory(false));
        }
Пример #8
0
        protected override void OnResume()
        {
            bool initializeAdapter = ((BrowseViewState == null) ||
                                      (PortableObjectRepository <Activity> .HasUnreadSourceChanges));

            if (initializeAdapter)
            {
                List <ObjectItem> objectRenderers;

                try
                {
                    objectRenderers
                        = PortableObjectRepository <Activity> .GetEnabledObjects <ObjectItem>()
                          .ToList();
                }
                catch (Exception exception)
                {
                    IsHandlingException = true;

                    base.OnResume();

                    AndroidCrapApplication.ShowExceptionAndExit(this,
                                                                exception);
                    return;
                }

                _objectViewAdapter = new AndroidBrowseObjectsAdapter
                                     (
                    RunOnUiThread,

                    (viewGroup) =>
                {
                    try
                    {
                        return(LayoutInflater.Inflate(ItemLayoutResource,
                                                      viewGroup,
                                                      attachToRoot: false));
                    }
                    catch (Exception exception)
                    {
                        throw exception;
                    }
                },

                    () => { return(BrowseFooterFragment.GetScaleType()); },
                    (scaleType) => BrowseFooterFragment.SetScaleType(scaleType),

                    () => { return(Resources); },

                    LoadingResource,

                    this.EditObject,

                    objectRenderers,

                    getString: (resource) => GetString(resource),

                    onCorrupt: (imageException,
                                imageView) =>
                {
                    this.HandleCorruptObject
                    (
                        imageException,
                        imageView,
                        getCount: () => { return(CorruptMesssageCount); },
                        setCount: (currentMassageCount) => { CorruptMesssageCount = currentMassageCount; }
                    );
                }
                                     );
            }

            base.OnResume();

            AbstractBrowseView.ItemClick -= ObjectItemClicked;
            AbstractBrowseView.ItemClick += ObjectItemClicked;

            bool isDataChanged = false;

            PortableBaseObject pendingObject = PortableObjectRepository <Activity> .PopPendingObject();

            while (pendingObject != null)
            {
                _objectViewAdapter.AddPendingObject(pendingObject);

                isDataChanged = true;

                pendingObject = PortableObjectRepository <Activity> .PopPendingObject();
            }

            if (isDataChanged)
            {
                _objectViewAdapter.NotifyDataSetChanged();
            }
        }