示例#1
0
        private async void AddFeed(RoutedEventArgs e)
        {
            // Hides browser otherwise dialog gets behind it
            IsBrowserVisible = false;
            RaisePropertyChanged("IsBrowserVisible");
            var FeedText = await _dialogCoordinator.ShowInputAsync(this, "Add Feed", "Enter the URL of the feed:");

            if (FeedText != null)
            {
                string errMsg = null;
                try
                {
                    Uri       feedUri = new Uri(FeedText);
                    Data.Feed f       = new Data.Feed();
                    f.Location = feedUri;
                    f.UpdateFromUri(true, RetentionDays);
                    f.Save(true);
                    InitializeData(true);
                }
                catch (Exception ex)
                {
                    errMsg = ex.Message;
                }
                if (errMsg != null)
                {
                    await _dialogCoordinator.ShowMessageAsync(this, "Add Feed", "Unable to create a feed for the supplied URL: " + errMsg);
                }
            }
            IsBrowserVisible = true;
            RaisePropertyChanged("IsBrowserVisible");
        }
示例#2
0
        internal static FeedInfo FetchFeedInfo(Data.Feed data)
        {
            var result = new FeedInfo();

            result.Fetch(data);
            return(result);
        }
示例#3
0
        private void MarkFeedRead(RoutedEventArgs e)
        {
            if (_selectedNode == null)
            {
                return;
            }
            SimpleTreeNodeViewModel tvm = (SimpleTreeNodeViewModel)_selectedNode;

            if (tvm.Node is Model.Feed)
            {
                Model.Feed selectedFeed = (Model.Feed)tvm.Node;
                Data.Feed  df           = new Data.Feed(selectedFeed);
                df.MarkAllRead();
            }
            else if (tvm.Node is Model.Host)
            {
                Model.Host selectedHost = (Model.Host)tvm.Node;
                Data.Host  dh           = new Data.Host(selectedHost);
                dh.MarkAllRead();
            }
            else
            {
                return;
            }

            foreach (Article a in Articles)
            {
                a.Unread = false;
            }
        }
示例#4
0
 protected void Update(Data.Feed data)
 {
     if (this.IsSelfDirty)
     {
         data.Type = this.ReadProperty(TypeProperty);
         data.Data = this.ReadProperty(DataProperty);
     }
 }
示例#5
0
        protected void Insert(Data.Feed data)
        {
            data.FeedId      = this.ReadProperty(FeedIdProperty);
            data.CreatedBy   = ((BusinessIdentity)Csla.ApplicationContext.User.Identity).UserId;
            data.CreatedDate = DateTime.Now;

            this.Update(data);
        }
示例#6
0
 private void Fetch(Data.Feed data)
 {
     this.LoadProperty(FeedIdProperty, data.FeedId);
     this.LoadProperty(TypeProperty, data.Type);
     this.LoadProperty(DataProperty, data.Data);
     this.LoadProperty(CreatedByProperty, data.CreatedBy);
     this.LoadProperty(CreatedByEmailProperty, data.CreatedByUser.Email);
     this.LoadProperty(CreatedByNameProperty, data.CreatedByUser.Name);
     this.LoadProperty(CreatedDateProperty, data.CreatedDate);
 }
示例#7
0
        // GET api/values
        public string Get()
        {
            var feedBll = new Data.Feed();

            //return new HttpResponseMessage()
            //{
            //    Content = new StringContent(JArray.FromObject(feedBll.GetFeedList()).ToString(), Encoding.UTF8, "application/json")
            //};
            return(_javaScriptSerializer.Serialize(feedBll.GetFeedList()));
        }
示例#8
0
        protected override void DataPortal_DeleteSelf()
        {
            using (var ctx = Csla.Data.ObjectContextManager <ApplicationEntities>
                             .GetManager(Database.ApplicationConnection, false))
            {
                var data = new Data.Feed
                {
                    FeedId = this.ReadProperty(FeedIdProperty)
                };

                ctx.ObjectContext.Feeds.DeleteObject(data);

                ctx.ObjectContext.SaveChanges();
            }
        }
示例#9
0
        protected override void DataPortal_DeleteSelf()
        {
            using (var ctx = Csla.Data.ObjectContextManager<ApplicationEntities>
                        .GetManager(Database.ApplicationConnection, false))
            {
                var data = new Data.Feed
                {
                    FeedId = this.ReadProperty(FeedIdProperty)
                };

                ctx.ObjectContext.Feeds.DeleteObject(data);

                ctx.ObjectContext.SaveChanges();
            }
        }
示例#10
0
        private async void DeleteFeed(RoutedEventArgs e)
        {
            if (_selectedNode == null)
            {
                return;
            }
            SimpleTreeNodeViewModel tvm = (SimpleTreeNodeViewModel)_selectedNode;

            Model.Feed selectedFeed = null;
            if (tvm.Node is Model.Feed)
            {
                selectedFeed = (Model.Feed)tvm.Node;
            }
            else
            {
                return;
            }


            // Hides browser otherwise dialog gets behind it
            IsBrowserVisible = false;
            RaisePropertyChanged("IsBrowserVisible");

            MessageDialogResult result = await _dialogCoordinator.ShowMessageAsync(this, "Delete Feed", "This action also deletes all downloaded articles and cannot be undone. Are you sure?", MessageDialogStyle.AffirmativeAndNegative);

            if (result == MessageDialogResult.Affirmative)
            {
                string errMsg = null;
                try
                {
                    Data.Feed feed = new Data.Feed(selectedFeed);
                    feed.Delete();
                }
                catch (Exception ex)
                {
                    errMsg = ex.Message;
                }
                if (errMsg != null)
                {
                    await _dialogCoordinator.ShowMessageAsync(this, "Edit Feed", "Unable to edit feed with the supplied URL: " + errMsg);
                }
            }
            IsBrowserVisible = true;
            RaisePropertyChanged("IsBrowserVisible");
            InitializeData(true);
        }
示例#11
0
        protected override void DataPortal_Insert()
        {
            using (var ctx = Csla.Data.ObjectContextManager <ApplicationEntities>
                             .GetManager(Database.ApplicationConnection, false))
            {
                var data = new Data.Feed();

                this.Insert(data);

                ctx.ObjectContext.AddToFeeds(data);

                ctx.ObjectContext.SaveChanges();

                this.LoadProperty(FeedIdProperty, data.FeedId);
                this.LoadProperty(CreatedByProperty, data.CreatedBy);
                this.LoadProperty(CreatedDateProperty, data.CreatedDate);
            }
        }
示例#12
0
        protected override void DataPortal_Insert()
        {
            using (var ctx = Csla.Data.ObjectContextManager<ApplicationEntities>
                        .GetManager(Database.ApplicationConnection, false))
            {
                var data = new Data.Feed();

                this.Insert(data);

                ctx.ObjectContext.AddToFeeds(data);

                ctx.ObjectContext.SaveChanges();

                this.LoadProperty(FeedIdProperty, data.FeedId);
                this.LoadProperty(CreatedByProperty, data.CreatedBy);
                this.LoadProperty(CreatedDateProperty, data.CreatedDate);
            }
        }
示例#13
0
        private async void AddFeed(RoutedEventArgs e)
        {
            // Hides browser otherwise dialog gets behind it
            IsBrowserVisible = false;
            RaisePropertyChanged("IsBrowserVisible");
            var FeedText = await _dialogCoordinator.ShowInputAsync(this, "Add Feed", "Enter the URL of the feed:");
            if (FeedText != null)
            {
                string errMsg = null;
                try
                {
                    Uri feedUri = new Uri(FeedText);
                    Data.Feed f = new Data.Feed();
                    f.Location = feedUri;
                    f.UpdateFromUri(true, RetentionDays);
                    f.Save(true);
                    InitializeData(true);
                }
                catch (Exception ex)
                {
                    errMsg = ex.Message;
                }
                if (errMsg != null)
                {
                    await _dialogCoordinator.ShowMessageAsync(this, "Add Feed", "Unable to create a feed for the supplied URL: " + errMsg);
                }
            }
            IsBrowserVisible = true;
            RaisePropertyChanged("IsBrowserVisible");

        }
示例#14
0
        private async void ImportOPML(RoutedEventArgs e)
        {
            try
            {
                OPML           opml           = new OPML();
                OpenFileDialog openFileDialog = new OpenFileDialog();
                openFileDialog.Multiselect = false;
                openFileDialog.DefaultExt  = ".opml";
                openFileDialog.Filter      = "OPML Files (*.opml)|*.opml";

                Exception exc = null;

                if (openFileDialog.ShowDialog() == true)
                {
                    List <Feed> t = opml.Import(openFileDialog.FileName);
                    foreach (Feed f in t)
                    {
                        try
                        {
                            Data.Feed feed = new Data.Feed(f);
                            feed.Location = f.Location;
                            feed.Save(false);
                        }
                        catch (Exception ee)
                        {
                            exc = ee;
                        }
                    }

                    // Reload tree
                    InitializeData(true);


                    await _dialogCoordinator.ShowMessageAsync(this, "Import OPML", "OPML imported successfully. Allow some minutes to let feed titles update from the RSS feed.");

                    // Update details from the uri
                    Task updaterTask = Task.Factory.StartNew(async() =>
                    {
                        _updaterInPause = true;
                        foreach (Feed f in t)
                        {
                            try
                            {
                                Data.Feed feed = new Data.Feed(f);
                                feed.Location  = f.Location;
                                feed.UpdateFromUri(true, RetentionDays);
                                feed.Save(true);
                            }
                            catch (Exception ee)
                            {
                                exc = ee;
                            }
                        }
                        _updaterInPause = false;

                        InitializeData(true);

                        if (exc != null)
                        {
                            await _dialogCoordinator.ShowMessageAsync(this, "Import OPML", "Unable to update feeds: " + exc.Message);
                        }
                    },
                                                             CancellationToken.None,
                                                             TaskCreationOptions.None,
                                                             TaskScheduler.Default);


                    if (exc != null)
                    {
                        throw exc;
                    }
                }
            }
            catch (Exception ex)
            {
                IsBrowserVisible = false;
                RaisePropertyChanged("IsBrowserVisible");
                await _dialogCoordinator.ShowMessageAsync(this, "Import OPML", "Unable to import: " + ex.Message);
            }
        }
示例#15
0
        private async void DeleteFeed(RoutedEventArgs e)
        {
            if (_selectedNode == null)
                return;
            SimpleTreeNodeViewModel tvm = (SimpleTreeNodeViewModel)_selectedNode;
            Model.Feed selectedFeed = null;
            if (tvm.Node is Model.Feed)
            {
                selectedFeed = (Model.Feed)tvm.Node;
            }
            else
                return;


            // Hides browser otherwise dialog gets behind it
            IsBrowserVisible = false;
            RaisePropertyChanged("IsBrowserVisible");

            MessageDialogResult result = await _dialogCoordinator.ShowMessageAsync(this, "Delete Feed", "This action also deletes all downloaded articles and cannot be undone. Are you sure?", MessageDialogStyle.AffirmativeAndNegative);

            if (result == MessageDialogResult.Affirmative)
            {
                string errMsg = null;
                try
                {
                    Data.Feed feed = new Data.Feed(selectedFeed);
                    feed.Delete();
                }
                catch (Exception ex)
                {
                    errMsg = ex.Message;
                }
                if (errMsg != null)
                {
                    await _dialogCoordinator.ShowMessageAsync(this, "Edit Feed", "Unable to edit feed with the supplied URL: " + errMsg);
                }
            }
            IsBrowserVisible = true;
            RaisePropertyChanged("IsBrowserVisible");
            InitializeData(true);
        }
示例#16
0
        private async void EditFeed(RoutedEventArgs e)
        {
            if (_selectedNode == null)
                return;
            SimpleTreeNodeViewModel tvm = (SimpleTreeNodeViewModel)_selectedNode;
            Model.Feed selectedFeed = null;
            if (tvm.Node is Model.Feed)
            {
                selectedFeed = (Model.Feed)tvm.Node;
            }
            else
            {
                if (tvm.Node is Model.Host)
                {
                    try
                    {
                        Model.Host selectedHost = (Model.Host)tvm.Node;
                        IsBrowserVisible = false;
                        RaisePropertyChanged("IsBrowserVisible");
                        MetroDialogSettings diagSettings = new MetroDialogSettings();
                        diagSettings.DefaultText = selectedHost.Zoom.ToString();
                        var ZoomLevel = await _dialogCoordinator.ShowInputAsync(this, "Set Zoom Level", "Enter the desired zoom level for this host: ", diagSettings);
                        int prevZoom = selectedHost.Zoom;
                        selectedHost.Zoom = Int32.Parse(ZoomLevel.ToString());
                        Data.Host dh = new Data.Host(selectedHost);
                        dh.Save();

                        if (prevZoom != selectedHost.Zoom)
                        {
                            var msg = new SendSetZoomMessage(selectedHost.Zoom);
                            msg.SetImmediately = true;
                            Messenger.Default.Send<SendSetZoomMessage>(msg);
                        }
                    }
                    catch (Exception ex)
                    {
                        await _dialogCoordinator.ShowMessageAsync(this, "Set Zoom Level", "Unable to set zoom: " + ex.Message);
                    }
                    finally
                    {
                        IsBrowserVisible = true;
                        RaisePropertyChanged("IsBrowserVisible");
                    }
                }
                return;
            }


            // Hides browser otherwise dialog gets behind it
            IsBrowserVisible = false;
            RaisePropertyChanged("IsBrowserVisible");
            MetroDialogSettings dialogSettings = new MetroDialogSettings();
            dialogSettings.DefaultText = selectedFeed.Location.ToString();
            var FeedText = await _dialogCoordinator.ShowInputAsync(this, "Edit feed", "Enter the URL of the feed:", dialogSettings);
            if (FeedText != null)
            {
                string errMsg = null;
                try
                {
                    Uri feedUri = new Uri(FeedText);
                    Data.Feed f = new Data.Feed(selectedFeed);
                    f.Location = feedUri;
                    f.UpdateFromUri(true, RetentionDays);
                    f.Save(true);
                    InitializeData(true);
                }
                catch (Exception ex)
                {
                    errMsg = ex.Message;
                }
                if (errMsg != null)
                {
                    await _dialogCoordinator.ShowMessageAsync(this, "Edit Feed", "Unable to edit feed with the supplied URL: " + errMsg);
                }
            }
            IsBrowserVisible = true;
            RaisePropertyChanged("IsBrowserVisible");
        }
示例#17
0
        private void MarkFeedRead(RoutedEventArgs e)
        {
            if (_selectedNode == null)
                return;
            SimpleTreeNodeViewModel tvm = (SimpleTreeNodeViewModel)_selectedNode;
            if (tvm.Node is Model.Feed)
            {
                Model.Feed selectedFeed = (Model.Feed)tvm.Node;
                Data.Feed df = new Data.Feed(selectedFeed);
                df.MarkAllRead();
            }
            else if (tvm.Node is Model.Host)
            {
                Model.Host selectedHost = (Model.Host)tvm.Node;
                Data.Host dh = new Data.Host(selectedHost);
                dh.MarkAllRead();
            }
            else
                return;

            foreach (Article a in Articles)
            {
                a.Unread = false;
            }
        }
示例#18
0
        private async void ImportOPML(RoutedEventArgs e)
        {
            try
            {
                OPML opml = new OPML();
                OpenFileDialog openFileDialog = new OpenFileDialog();
                openFileDialog.Multiselect = false;
                openFileDialog.DefaultExt = ".opml";
                openFileDialog.Filter = "OPML Files (*.opml)|*.opml";

                Exception exc = null;

                if (openFileDialog.ShowDialog() == true)
                {
                    List<Feed> t = opml.Import(openFileDialog.FileName);
                    foreach (Feed f in t)
                    {
                        try
                        {
                            Data.Feed feed = new Data.Feed(f);
                            feed.Location = f.Location;
                            feed.Save(false);
                        }
                        catch (Exception ee)
                        {
                            exc = ee;
                        }
                    }

                    // Reload tree
                    InitializeData(true);


                    await _dialogCoordinator.ShowMessageAsync(this, "Import OPML", "OPML imported successfully. Allow some minutes to let feed titles update from the RSS feed.");

                    // Update details from the uri
                    Task updaterTask = Task.Factory.StartNew(async () =>
                    {
                        _updaterInPause = true;
                        foreach (Feed f in t)
                        {
                            try
                            {
                                Data.Feed feed = new Data.Feed(f);
                                feed.Location = f.Location;
                                feed.UpdateFromUri(true, RetentionDays);
                                feed.Save(true);
                            }
                            catch (Exception ee)
                            {
                                exc = ee;
                            }
                        }
                        _updaterInPause = false;

                        InitializeData(true);

                        if (exc != null)
                            await _dialogCoordinator.ShowMessageAsync(this, "Import OPML", "Unable to update feeds: " + exc.Message);

                    },
                    CancellationToken.None,
                    TaskCreationOptions.None,
                    TaskScheduler.Default);


                    if (exc != null)
                        throw exc;
                }
            }
            catch (Exception ex)
            {
                IsBrowserVisible = false;
                RaisePropertyChanged("IsBrowserVisible");
                await _dialogCoordinator.ShowMessageAsync(this, "Import OPML", "Unable to import: " + ex.Message);
            }
        }
示例#19
0
        private async void EditFeed(RoutedEventArgs e)
        {
            if (_selectedNode == null)
            {
                return;
            }
            SimpleTreeNodeViewModel tvm = (SimpleTreeNodeViewModel)_selectedNode;

            Model.Feed selectedFeed = null;
            if (tvm.Node is Model.Feed)
            {
                selectedFeed = (Model.Feed)tvm.Node;
            }
            else
            {
                if (tvm.Node is Model.Host)
                {
                    try
                    {
                        Model.Host selectedHost = (Model.Host)tvm.Node;
                        IsBrowserVisible = false;
                        RaisePropertyChanged("IsBrowserVisible");
                        MetroDialogSettings diagSettings = new MetroDialogSettings();
                        diagSettings.DefaultText = selectedHost.Zoom.ToString();
                        var ZoomLevel = await _dialogCoordinator.ShowInputAsync(this, "Set Zoom Level", "Enter the desired zoom level for this host: ", diagSettings);

                        int prevZoom = selectedHost.Zoom;
                        selectedHost.Zoom = Int32.Parse(ZoomLevel.ToString());
                        Data.Host dh = new Data.Host(selectedHost);
                        dh.Save();

                        if (prevZoom != selectedHost.Zoom)
                        {
                            var msg = new SendSetZoomMessage(selectedHost.Zoom);
                            msg.SetImmediately = true;
                            Messenger.Default.Send <SendSetZoomMessage>(msg);
                        }
                    }
                    catch (Exception ex)
                    {
                        await _dialogCoordinator.ShowMessageAsync(this, "Set Zoom Level", "Unable to set zoom: " + ex.Message);
                    }
                    finally
                    {
                        IsBrowserVisible = true;
                        RaisePropertyChanged("IsBrowserVisible");
                    }
                }
                return;
            }


            // Hides browser otherwise dialog gets behind it
            IsBrowserVisible = false;
            RaisePropertyChanged("IsBrowserVisible");
            MetroDialogSettings dialogSettings = new MetroDialogSettings();

            dialogSettings.DefaultText = selectedFeed.Location.ToString();
            var FeedText = await _dialogCoordinator.ShowInputAsync(this, "Edit feed", "Enter the URL of the feed:", dialogSettings);

            if (FeedText != null)
            {
                string errMsg = null;
                try
                {
                    Uri       feedUri = new Uri(FeedText);
                    Data.Feed f       = new Data.Feed(selectedFeed);
                    f.Location = feedUri;
                    f.UpdateFromUri(true, RetentionDays);
                    f.Save(true);
                    InitializeData(true);
                }
                catch (Exception ex)
                {
                    errMsg = ex.Message;
                }
                if (errMsg != null)
                {
                    await _dialogCoordinator.ShowMessageAsync(this, "Edit Feed", "Unable to edit feed with the supplied URL: " + errMsg);
                }
            }
            IsBrowserVisible = true;
            RaisePropertyChanged("IsBrowserVisible");
        }