Skip to content

Instantly share code, notes, and snippets.

@geirsagberg
geirsagberg / gist:aec53838136aba1d6631
Last active August 29, 2015 14:14
FocusTextBinding for iOS
// Based on http://stackoverflow.com/a/19221385/500976
// In Setup.cs:
// protected override void FillTargetFactories(IMvxTargetBindingFactoryRegistry registry)
// {
// base.FillTargetFactories(registry);
// registry.RegisterCustomBindingFactory("FocusText", (UITextField textField) => new FocusTextBinding(textField));
// }
using System;
using Cirrious.MvvmCross.Binding;
using System;
using System.Collections.Generic;
using Android.App;
using Android.Content;
using Cirrious.MvvmCross.Binding.BindingContext;
using Cirrious.MvvmCross.Binding.Droid.BindingContext;
using Cirrious.MvvmCross.Droid.Views;
using Cirrious.MvvmCross.ViewModels;
namespace ECC.Mobile.Droid.Views
@geirsagberg
geirsagberg / MvxActionBarFragmentActivity.cs
Created January 28, 2015 14:31
MvxActionBarFragmentActivity
public abstract class MvxActionBarFragmentActivity : MvxActionBarEventSource, IMvxAndroidView, IMvxEventSourceFragmentActivity
{
private readonly List<WeakReference<Fragment>> _fragments = new List<WeakReference<Fragment>>();
public object DataContext
{
get { return BindingContext.DataContext; }
set { BindingContext.DataContext = value; }
}
@geirsagberg
geirsagberg / MvxActionBarEventSource.cs
Created January 28, 2015 14:31
MvxActionBarEventSource
public class MvxActionBarEventSource : ActionBarActivity, IMvxEventSourceActivity
{
public event EventHandler DisposeCalled;
public event EventHandler<MvxValueEventArgs<Bundle>> CreateWillBeCalled;
public event EventHandler<MvxValueEventArgs<Bundle>> CreateCalled;
public event EventHandler DestroyCalled;
public event EventHandler<MvxValueEventArgs<Intent>> NewIntentCalled;
public event EventHandler ResumeCalled;
public event EventHandler PauseCalled;
public event EventHandler StartCalled;
@geirsagberg
geirsagberg / IMvxEventSourceFragmentActivity.cs
Created January 28, 2015 14:32
IMvxEventSourceFragmentActivity
public interface IMvxEventSourceFragmentActivity : IMvxEventSourceActivity
{
IList<Fragment> Fragments { get; }
}
@geirsagberg
geirsagberg / MvxCachingFragmentActivityAdapter.cs
Created January 28, 2015 14:34
MvxCachingFragmentActivityBehavior
public class MvxCachingFragmentActivityBehavior
: MvxBaseActivityAdapter
{
private const string SavedFragmentTypesKey = "__mvxSavedFragmentTypes";
private const string SavedCurrentFragmentsKey = "__mvxSavedCurrentFragments";
private readonly Dictionary<string, FragmentInfo> _lookup = new Dictionary<string, FragmentInfo>();
private Dictionary<int, string> _currentFragments = new Dictionary<int, string>();
IList<Fragment> Fragments { get { return ((IMvxEventSourceFragmentActivity)Activity).Fragments; } }
FragmentManager FragmentManager { get { return Activity.FragmentManager; } }
@geirsagberg
geirsagberg / StoryBoardContainer.cs
Last active November 19, 2015 12:02
MvvmCross load views from Storyboards using a custom attribute
public class StoryBoardContainer : MvxTouchViewsContainer
{
protected override IMvxTouchView CreateViewOfType(Type viewType, MvxViewModelRequest request)
{
var storyboardAttribute = viewType.GetCustomAttribute<FromStoryboardAttribute>();
if (storyboardAttribute != null) {
var storyboard = UIStoryboard.FromName(storyboardAttribute.StoryboardName ?? viewType.Name, null);
var viewController = storyboard.InstantiateViewController(viewType.Name);
return (IMvxTouchView) viewController;
}
@geirsagberg
geirsagberg / jsend.js
Last active August 29, 2015 14:24
Shortcuts for JSend JSON API (http://labs.omniti.com/labs/jsend)
/**
* Shortcuts for JSend JSON API (http://labs.omniti.com/labs/jsend)
* @author Geir Sagberg
*/
export function fail(data) {
return {
status: 'fail',
data
};
@geirsagberg
geirsagberg / BindingCollection.cs
Last active September 18, 2015 09:31
BindingCollection
/// <summary>
/// ObservableCollection that exposes an event ItemPropertyChanged that fires whenever an item in the collection changes
/// </summary>
public class BindingCollection<T> : ObservableCollection<T>
where T : INotifyPropertyChanged
{
public BindingCollection()
{
CollectionChanged += OnCollectionChanged;
}
@geirsagberg
geirsagberg / SubscriptionManager.cs
Created September 24, 2015 08:31
MvvmCross SubscriptionManager
public class SubscriptionManager
{
private Dictionary<Type, MvxSubscriptionToken> subscriptions = new Dictionary<Type, MvxSubscriptionToken>();
public IMvxMessenger Messenger { get; set; }
public SubscriptionManager(IMvxMessenger messenger)
{
Messenger = messenger;
}