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); } }
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); }
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); }
/*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)); }
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(); } }