Example #1
0
 private static GistItemViewModel CreateGistItemViewModel(GistModel gist, Action<GistItemViewModel> action)
 {
     var owner = (gist.Owner == null) ? "Anonymous" : gist.Owner.Login;
     var description = string.IsNullOrEmpty(gist.Description) ? "Gist " + gist.Id : gist.Description;
     var imageUrl = (gist.Owner == null) ? null : gist.Owner.AvatarUrl;
     return new GistItemViewModel(owner, imageUrl, description, gist.UpdatedAt, action);
 }
        protected async virtual void Save()
        {
            if (_model.Files.Count == 0)
            {
                MonoTouch.Utilities.ShowAlert("No Files", "You cannot create a Gist without atleast one file");
                return;
            }

            try
            {
                GistModel newGist = null;
                _model.Public = _public.Value;
                await this.DoWorkAsync("Saving...", async() => {
                    newGist = (await Application.Client.ExecuteAsync(Application.Client.AuthenticatedUser.Gists.CreateGist(_model))).Data;
                });

                if (Created != null && newGist != null)
                {
                    Created(newGist);
                }

                //Dismiss me!
                NavigationController.PopViewControllerAnimated(true);
            }
            catch (Exception e)
            {
                MonoTouch.Utilities.ShowAlert("Unable to Save!", e.Message);
            }
        }
Example #3
0
 private static string GetGistTitle(GistModel gist)
 {
     var title = (gist.Owner == null) ? "Anonymous" : gist.Owner.Login;
     if (gist.Files.Count > 0)
         title = gist.Files.First().Key;
     return title;
 }
Example #4
0
        public EditGistController(GistModel gist)
            : base(true)
        {
            Title         = "Edit Gist";
            Style         = UITableViewStyle.Grouped;
            _originalGist = gist;

            NavigationItem.LeftBarButtonItem  = new UIBarButtonItem(NavigationButton.Create(Images.Buttons.Cancel, Discard));
            NavigationItem.RightBarButtonItem = new UIBarButtonItem(NavigationButton.Create(Images.Buttons.Save, Save));

            _model             = new GistEditModel();
            _model.Description = gist.Description;
            _model.Files       = new Dictionary <string, GistEditModel.File>();

            if (gist.Files != null)
            {
                foreach (var f in gist.Files)
                {
                    _model.Files.Add(f.Key, new GistEditModel.File()
                    {
                        Content = f.Value.Content
                    });
                }
            }
        }
Example #5
0
        public EditGistController(GistModel gist)
            : base(true)
        {
            Title         = "Edit Gist";
            Style         = UITableViewStyle.Grouped;
            _originalGist = gist;

            NavigationItem.LeftBarButtonItem  = new UIBarButtonItem(Theme.CurrentTheme.CancelButton, UIBarButtonItemStyle.Plain, (s, e) => Discard());
            NavigationItem.RightBarButtonItem = new UIBarButtonItem(Theme.CurrentTheme.SaveButton, UIBarButtonItemStyle.Plain, (s, e) => Save());

            _model             = new GistEditModel();
            _model.Description = gist.Description;
            _model.Files       = new Dictionary <string, GistEditModel.File>();

            if (gist.Files != null)
            {
                foreach (var f in gist.Files)
                {
                    _model.Files.Add(f.Key, new GistEditModel.File()
                    {
                        Content = f.Value.Content
                    });
                }
            }
        }
Example #6
0
        protected override Element CreateElement(GistModel x)
        {
            var element = CreateGistElement(x);

            element.Tapped += () => NavigationController.PushViewController(new GistInfoController(x.Id), true);
            return(element);
        }
Example #7
0
        private static GistItemViewModel CreateGistItemViewModel(GistModel gist, Action <GistItemViewModel> action)
        {
            var owner       = (gist.Owner == null) ? "Anonymous" : gist.Owner.Login;
            var description = string.IsNullOrEmpty(gist.Description) ? "Gist " + gist.Id : gist.Description;
            var imageUrl    = (gist.Owner == null) ? null : gist.Owner.AvatarUrl;

            return(new GistItemViewModel(owner, imageUrl, description, gist.UpdatedAt, action));
        }
Example #8
0
        public void RenderGist(GistModel model)
        {
            _shareButton.Enabled = _userButton.Enabled = model != null;
            var root = new RootElement(Title)
            {
                UnevenRows = true
            };
            var sec = new Section();

            _header.Subtitle = "Updated " + model.UpdatedAt.ToDaysAgo();


            var str = string.IsNullOrEmpty(model.Description) ? "Gist " + model.Id : model.Description;
            var d   = new NameTimeStringElement()
            {
                Time               = model.UpdatedAt.ToDaysAgo(),
                String             = str,
                Image              = Theme.CurrentTheme.AnonymousUserImage,
                BackgroundColor    = UIColor.White,
                UseBackgroundColor = true,
            };

            //Sometimes there's no user!
            d.Name     = (model.User == null) ? "Anonymous" : model.User.Login;
            d.ImageUri = (model.User == null) ? null : new Uri(model.User.AvatarUrl);

            sec.Add(d);

            var sec2 = new Section();

            foreach (var file in model.Files.Keys)
            {
                var sse = new StyledStringElement(file, model.Files[file].Size + " bytes", UITableViewCellStyle.Subtitle)
                {
                    Accessory     = MonoTouch.UIKit.UITableViewCellAccessory.DisclosureIndicator,
                    LineBreakMode = MonoTouch.UIKit.UILineBreakMode.TailTruncation,
                    Lines         = 1
                };

                var fileSaved     = file;
                var gistFileModel = model.Files[fileSaved];

                if (string.Equals(gistFileModel.Language, "markdown", StringComparison.OrdinalIgnoreCase))
                {
                    sse.Tapped += () => NavigationController.PushViewController(new GistViewableFileController(gistFileModel, ViewModel.Gist.HtmlUrl), true);
                }
                else
                {
                    sse.Tapped += () => NavigationController.PushViewController(new GistFileViewController(gistFileModel, ViewModel.Gist.HtmlUrl), true);
                }

                sec2.Add(sse);
            }

            _header.SetNeedsDisplay();
            root.Add(new [] { sec, sec2 });
            Root = root;
        }
Example #9
0
        private static GistItemViewModel CreateGistItemViewModel(GistModel gist, Action <GistItemViewModel> action)
        {
            var title       = (gist.Owner == null) ? "Anonymous" : gist.Owner.Login;
            var description = string.IsNullOrEmpty(gist.Description) ? "Gist " + gist.Id : gist.Description;
            var imageUrl    = (gist.Owner == null) ? null : gist.Owner.AvatarUrl;

            if (gist.Files.Count > 0)
            {
                title = gist.Files.First().Key;
            }
            return(new GistItemViewModel(title, imageUrl, description, gist.UpdatedAt, action));
        }
Example #10
0
        private GistItemViewModel CreateGistItemViewModel(GistModel gist)
        {
            var title = GetGistTitle(gist);
            var description = string.IsNullOrEmpty(gist.Description) ? "Gist " + gist.Id : gist.Description;
            var imageUrl = (gist.Owner == null) ? null : gist.Owner.AvatarUrl;

            return new GistItemViewModel(title, imageUrl, description, gist.UpdatedAt, _ =>
            {
                var vm = this.CreateViewModel<GistViewModel>();
                vm.Id = gist.Id;
                vm.Gist = gist;
                NavigateTo(vm);
            });
        }
Example #11
0
        private GistItemViewModel CreateGistItemViewModel(GistModel gist)
        {
            var title = (gist.Owner == null) ? "Anonymous" : gist.Owner.Login;
            var description = string.IsNullOrEmpty(gist.Description) ? "Gist " + gist.Id : gist.Description;
            var imageUrl = (gist.Owner == null) ? null : gist.Owner.AvatarUrl;
            if (gist.Files.Count > 0)
                title = gist.Files.First().Key;

            return new GistItemViewModel(title, imageUrl, description, gist.UpdatedAt, _ =>
            {
                var vm = this.CreateViewModel<GistViewModel>();
                vm.Id = gist.Id;
                vm.Gist = gist;
                NavigateTo(vm);
            });
        }
Example #12
0
        public EditGistController(GistModel gist)
            : base(true)
        {
            Title = "Edit Gist";
            Style = UITableViewStyle.Grouped;
            _originalGist = gist;

            NavigationItem.LeftBarButtonItem = new UIBarButtonItem (NavigationButton.Create(Images.Buttons.Cancel, Discard));
            NavigationItem.RightBarButtonItem = new UIBarButtonItem(NavigationButton.Create(Images.Buttons.Save, Save));

            _model = new GistEditModel();
            _model.Description = gist.Description;
            _model.Files = new Dictionary<string, GistEditModel.File>();

            if (gist.Files != null)
                foreach (var f in gist.Files)
                    _model.Files.Add(f.Key, new GistEditModel.File() { Content = f.Value.Content });
        }
Example #13
0
        public EditGistController(GistModel gist)
            : base(true)
        {
            Title = "Edit Gist";
            Style = UITableViewStyle.Grouped;
            _originalGist = gist;

            NavigationItem.LeftBarButtonItem = new UIBarButtonItem (Theme.CurrentTheme.CancelButton, UIBarButtonItemStyle.Plain, (s, e) => Discard());
            NavigationItem.RightBarButtonItem = new UIBarButtonItem(Theme.CurrentTheme.SaveButton, UIBarButtonItemStyle.Plain, (s, e) => Save());

            _model = new GistEditModel();
            _model.Description = gist.Description;
            _model.Files = new Dictionary<string, GistEditModel.File>();

            if (gist.Files != null)
                foreach (var f in gist.Files)
                    _model.Files.Add(f.Key, new GistEditModel.File() { Content = f.Value.Content });
        }
Example #14
0
        public GistViewModel(GistModel gist, IGistClientService gistClientService, IAsyncOperationStatusManager asyncOperationStatusManager, IErrorHandler errorHandler) : this(gist.Name, gistClientService, asyncOperationStatusManager, errorHandler)
        {
            Gist        = gist;
            Description = gist.Description;
            Public      = gist.IsPublic;
            Url         = gist.Url;
            var files = new List <GistFileViewModel>(gist.Files.Count);

            foreach (var file in gist.Files)
            {
                var gistFileViewModel = new GistFileViewModel(file, this, gistClientService, asyncOperationStatusManager, errorHandler);
                gistFileViewModel.History.AddRange(gist.History.Select(h => new GistHistoryEntryViewModel(h, gistFileViewModel)));
                files.Add(gistFileViewModel);
            }
            Files.AddRange(files);
            History.AddRange(gist.History.Select(h => new GistHistoryEntryViewModel(h, this)));
            History.First().IsCheckedOut = true;
        }
Example #15
0
        private GistItemViewModel CreateGistItemViewModel(GistModel gist)
        {
            var title       = (gist.Owner == null) ? "Anonymous" : gist.Owner.Login;
            var description = string.IsNullOrEmpty(gist.Description) ? "Gist " + gist.Id : gist.Description;
            var imageUrl    = (gist.Owner == null) ? null : gist.Owner.AvatarUrl;

            if (gist.Files.Count > 0)
            {
                title = gist.Files.First().Key;
            }

            return(new GistItemViewModel(title, imageUrl, description, gist.UpdatedAt, _ =>
            {
                var vm = this.CreateViewModel <GistViewModel>();
                vm.Id = gist.Id;
                vm.Gist = gist;
                NavigateTo(vm);
            }));
        }
Example #16
0
        public EditGistController(GistModel gist)
            : base(UITableViewStyle.Grouped, true)
        {
            Title         = "Edit Gist";
            _originalGist = gist;

            _model             = new GistEditModel();
            _model.Description = gist.Description;
            _model.Files       = new Dictionary <string, GistEditModel.File>();

            if (gist.Files != null)
            {
                foreach (var f in gist.Files)
                {
                    _model.Files.Add(f.Key, new GistEditModel.File()
                    {
                        Content = f.Value.Content
                    });
                }
            }
        }
Example #17
0
 public GistAddMessage(object sender, GistModel gist)
     : base(sender)
 {
     Gist = gist;
 }
Example #18
0
 public GistAddMessage(object sender, GistModel gist) 
     : base(sender)
 {
     Gist = gist;
 }
Example #19
0
 public GistDetailElement(GistModel gist, bool full = false)
     : base(string.Empty)
 {
     _gist = gist;
     _full = full;
 }
Example #20
0
 public GistDetailElement(GistModel gist, bool full = false)
     : base(string.Empty)
 {
     _gist = gist;
     _full = full;
 }
Example #21
0
 public GistViewController(GistModel model)
     : this(model.Id)
 {
     //Controller.Model.Gist = model;
 }
Example #22
0
 public GistElement(GistModel gist, Action action)
 {
     _gist   = gist;
     _action = action;
     _title  = _gist.Files?.Select(x => x.Key).FirstOrDefault() ?? "Gist #" + _gist.Id;
 }
Example #23
0
 public GistElement(GistModel gist, Action action)
 {
     _gist = gist;
     _action = action;
     _title = _gist.Files?.Select(x => x.Key).FirstOrDefault() ?? "Gist #" + _gist.Id;
 }
Example #24
0
 protected override Element CreateElement(GistModel x)
 {
     var element = CreateGistElement(x);
     element.Tapped += () => NavigationController.PushViewController(new GistInfoController(x.Id) { Model = x }, true);
     return element;
 }