Ejemplo n.º 1
0
        protected override WithImageStorableComicSourceInfo <TResource, TImage> CreateSourceInfo(ComicSnapshot snapshot, ComicSource source, ComicEngine engine)
        {
            var store = AppEngine.GetRequiredService <WithImageComicStoreService <TResource, TImage> >();
            var box   = store.GetStoreBox(source.TargetUrl);

            return(new WithImageStorableComicSourceInfo <TResource, TImage>(snapshot, source, engine.GetComicSourceProviderType(source.TargetUrl), box));
        }
Ejemplo n.º 2
0
        public void AddSomeServices_CallGet_MustReturnService()
        {
            AppEngine.Reset();
            AppEngine.Services.AddSingleton <A>();
            AppEngine.Services.AddScoped <B>();
            AppEngine.Services.AddTransient <C>();
            _ = AppEngine.Provider;

            Check <A>();
            Check <B>();
            Check <C>();

            void Check <T>()
            {
                var a = AppEngine.GetService(typeof(T));

                Assert.IsNotNull(a);
                Assert.IsInstanceOfType(a, typeof(T));
                a = AppEngine.GetService <T>();
                Assert.IsNotNull(a);
                a = AppEngine.GetRequiredService <T>();
                Assert.IsNotNull(a);
                a = AppEngine.GetRequiredService(typeof(T));
                Assert.IsNotNull(a);
                Assert.IsInstanceOfType(a, typeof(T));
            }
        }
Ejemplo n.º 3
0
        private async void LoadVm(string address)
        {
            vm          = new DesktopVisitingViewModel();
            DataContext = vm;
            vc          = new VisitingControlView {
                DataContext = vm
            };
            titleService = AppEngine.GetRequiredService <TitleService>();
            titleService.LeftControls.Add(vc);
            try
            {
                await vm.Visiting.LoadAsync(address);

                if (vm.HasStoreBox)
                {
                    await vm.GoChapterIndexAsync(vm.StoreBox.AttackModel.CurrentChapter);
                }
                else
                {
                    await vm.NextChapterAsync();
                }
                _ = LoadPageAsync(0);
                vm.TransverseChanged += Vm_TransverseChanged;
                rep = this.Get <ItemsRepeater>("Rep");
                car = this.Get <Carousel>("Car");
                var sv = this.Get <ScrollViewer>("RepSv");
                sv.ScrollChanged += Sv_ScrollChanged;
                this.KeyDown     += OnCarKeyDown;
                Vm_TransverseChanged(vm, vm.Transverse);
            }
            catch (Exception ex)
            {
                vm.ExceptionService.Exception = ex;
            }
        }
Ejemplo n.º 4
0
 public StoreComicVisiting(IServiceProvider host, IResourceFactoryCreator <T> resourceFactoryCreator)
     : base(host, resourceFactoryCreator)
 {
     storeService = AppEngine.GetRequiredService <IStoreService>();
     recyclableMemoryStreamManager = AppEngine.GetRequiredService <RecyclableMemoryStreamManager>();
     DelayTime = DefaultDelayTime;
 }
Ejemplo n.º 5
0
        private static void TaskScheduler_UnobservedTaskException(object sender, UnobservedTaskExceptionEventArgs e)
        {
            var exSer = AppEngine.GetRequiredService <ExceptionService>();

            exSer.Exception = e.Exception;
            e.SetObserved();
        }
Ejemplo n.º 6
0
        public HomeViewModel()
        {
            ComicEngine    = AppEngine.GetRequiredService <ComicEngine>();
            SearchEngine   = AppEngine.GetRequiredService <SearchEngine>();
            ProposalEngine = AppEngine.GetRequiredService <ProposalEngine>();

            SearchCommand       = new AsyncRelayCommand(SearchAsync);
            GoSourceCommand     = new RelayCommand(GoSource);
            SetAndSearchCommand = new AsyncRelayCommand <string>(SetAndSearchAsync);
            ResetCommand        = new RelayCommand(Reset);
            SetCurrentCommand   = new RelayCommand <ComicSnapshotInfo <TSourceInfo> >(SetCurrent);
            CopyCommand         = new RelayCommand <string>(Copy);
            scope = AppEngine.CreateScope();

            observableCollectionFactory = AppEngine.GetRequiredService <IObservableCollectionFactory>();
            SearchProviders             = observableCollectionFactory.Create <ISearchProvider>();
            foreach (var item in SearchEngine)
            {
                var sp = (ISearchProvider)scope.ServiceProvider.GetRequiredService(item);
                SearchProviders.Add(sp);
            }
            CurrentSearchProvider = SearchProviders.FirstOrDefault();

            Snapshots         = observableCollectionFactory.Create <ComicSnapshotInfo <TSourceInfo> >();
            ProposalSnapshots = observableCollectionFactory.Create <ComicSnapshotInfo <TSourceInfo> >();
            EngineIcons       = observableCollectionFactory.Create <EngineInfo <TImage> >();
        }
Ejemplo n.º 7
0
        public async Task <ComicDetail> StoreAsync()
        {
            KeepingAction?.Invoke(null, null, null, null, KeepingActionTypes.BeginGetEntity);
            OnBeginGetEntity();
            var entity = await Provider.GetChaptersAsync(Address);

            try
            {
                if (entity is null)
                {
                    return(null);
                }
                var detail = new ComicDetail {
                    Entity = entity
                };
                var cwps = new List <ChapterWithPage>(entity.Chapters.Length);
                foreach (var item in entity.Chapters)
                {
                    if (tokenSource.IsCancellationRequested)
                    {
                        break;
                    }
                    KeepingAction?.Invoke(entity, item, null, null, KeepingActionTypes.BeginStoreChapter);
                    OnBeginStoreChapter(entity, item);
                    try
                    {
                        var cwp = await StoreChapterAsync(entity, item);

                        cwps.Add(cwp);
                    }
                    catch (Exception ex)
                    {
                        KeepingAction?.Invoke(entity, item, null, ex, KeepingActionTypes.StoreChapterException);
                        OnStoreChapterException(entity, item, ex);
                    }
                    KeepingAction?.Invoke(entity, item, null, null, KeepingActionTypes.EndStoreChapter);
                    OnEndStoreChapter(entity, item);
                }
                if (!tokenSource.IsCancellationRequested)
                {
                    var streamManager = AppEngine.GetRequiredService <RecyclableMemoryStreamManager>();
                    var str           = JsonHelper.Serialize(detail);
                    var buffer        = Encoding.UTF8.GetBytes(str);
                    var path          = ComicIndexName;
                    using (var stream = streamManager.GetStream())
                    {
                        stream.Write(buffer, 0, buffer.Length);
                        stream.Seek(0, SeekOrigin.Begin);
                        await storeService.SaveAsync(path, stream);
                    }
                }
                return(detail);
            }
            finally
            {
                KeepingAction?.Invoke(entity, null, null, null, KeepingActionTypes.EndGetEntity);
                OnEndGetEntity(entity);
            }
        }
Ejemplo n.º 8
0
 public void Watch()
 {
     if (!(Condition is null))
     {
         var navSer = AppEngine.GetRequiredService <IComicTurnPageService>();
         navSer.GoSource(this);
     }
 }
Ejemplo n.º 9
0
        public HomePage()
        {
            var setting = AppEngine.GetRequiredService <AnfSettings>();

            vm = new DesktopHomeViewModel(setting);
            InitializeComponent();
            DataContext = vm;
            AppEngine.GetRequiredService <MainWindow>().BindDecorationMargin(this);
        }
Ejemplo n.º 10
0
 public SettingsControlView()
 {
     DataContext        = this;
     AnfSettings        = AppEngine.GetRequiredService <AnfSettings>();
     ThemeSettings      = AnfSettings.Theme;
     ReadingSettings    = AnfSettings.Reading;
     PerformaceSettings = AnfSettings.Performace;
     InitializeComponent();
 }
Ejemplo n.º 11
0
        protected override void OnCurrentComicSnapshotChanged(ComicSnapshotInfo <WithImageStorableComicSourceInfo <ImageBox, ImageBox> > info)
        {
            if (info is WithImageComicSnapshotInfo <ImageBox, ImageBox> sn)
            {
                var navSer = AppEngine.GetRequiredService <UnoNavigationService>();

                navSer.Navigate(typeof(ComicView), sn);
                //var vm = new UnoComicViewModel(info.Snapshot, sn.LogoImage.Image);
                //navSer.Navigate(new ComicView { DataContext = vm });
            }
        }
Ejemplo n.º 12
0
 public BookshelfViewModel()
 {
     StoreService = AppEngine.GetRequiredService <ComicStoreService <TStoreBox> >();
     observableCollectionFactory = AppEngine.GetRequiredService <IObservableCollectionFactory>();
     NextCommand   = new RelayCommand(Next);
     FlushCommand  = new RelayCommand(Load);
     RemoveCommand = new RelayCommand(Remove);
     UpdateCommand = new AsyncRelayCommand(UpdateAsync);
     StoreBoxs     = observableCollectionFactory.Create <TStoreBox>();
     Load();
 }
Ejemplo n.º 13
0
        protected override void OnCurrentComicSnapshotChanged(ComicSnapshotInfo <WithImageStorableComicSourceInfo <Bitmap, Bitmap> > info)
        {
            if (info is WithImageComicSnapshotInfo <Bitmap, Bitmap> sn)
            {
                var vm     = new DesktopComicViewModel(info.Snapshot, sn.LogoImage);
                var navSer = AppEngine.GetRequiredService <MainNavigationService>();

                var c = navSer.Navigate <ComicView>();
                c.DataContext = vm;
            }
        }
Ejemplo n.º 14
0
 public VisitingControlView()
 {
     this.InitializeComponent();
     titleService = AppEngine.GetRequiredService <UnoTtileService>();
     //foreach (var item in Children)
     //{
     //    if (item is Button btn)
     //    {
     //        btn.Bind(TemplatedControl.FontSizeProperty, new Binding(nameof(TitleService.AdviseFontSize)) { Source = titleService });
     //    }
     //}
 }
Ejemplo n.º 15
0
 public StorableComicSourceInfo(ComicSnapshot snapshot,
                                ComicSource source,
                                IComicSourceCondition condition,
                                TStoreBox storeBox)
     : base(snapshot, source, condition)
 {
     StoreBox = storeBox;
     HasBox   = storeBox != null;
     CanStore = condition != null;
     ToggleSuperFavoriteCommand = new RelayCommand(ToggleSuperFavorite);
     AddCommand    = new AsyncRelayCommand(AddAsync);
     RemoveCommand = new RelayCommand(Remove);
     ToggleCommand = new AsyncRelayCommand(ToggleAsync);
     StoreService  = AppEngine.GetRequiredService <ComicStoreService <TStoreBox> >();
 }
Ejemplo n.º 16
0
        public async Task <Stream> StoreStreamAsync(string address)
        {
            var stream = StreamManager.GetStream();
            var zip    = new ZipArchive(stream, ZipArchiveMode.Update, true);

            using (var zipSave = new ZipStoreService(zip))
            {
                var defaultStore = AppEngine.GetRequiredService <IStoreService>();
                var keeper       = ComicKeeper.FromDefault(address, zipSave, defaultStore);
                await keeper.StoreAsync();
            }
            await stream.FlushAsync();

            stream.Seek(0, SeekOrigin.Begin);
            return(stream);
        }
Ejemplo n.º 17
0
        public async Task <TImage> GetAsync(string address)
        {
            if (EnableCache)
            {
                var bitmap = await StoreFetchHelper.GetOrFromCacheAsync <TResource, TImage>(address, () => provider.GetImageStreamAsync(address));

                return(bitmap);
            }
            else
            {
                var convert = AppEngine.GetRequiredService <IStreamImageConverter <TImage> >();
                using (var mem = await provider.GetImageStreamAsync(address))
                {
                    return(await convert.ToImageAsync(mem));
                }
            }
        }
Ejemplo n.º 18
0
        private async void LoadVm(string address)
        {
            vm          = new UnoVisitingViewModel();
            DataContext = vm;
            var titleBar = new VisitingControlView {
                DataContext = vm
            };
            var appBar = AppEngine.GetRequiredService <AppBarService>();

            appBar.GetAsDefault()
            .Lefts.Add(titleBar);

            try
            {
                await vm.InitAsync(address);
            }
            catch (Exception ex)
            {
                vm.ExceptionService.Exception = ex;
            }
        }
Ejemplo n.º 19
0
        internal void RunInitAll()
        {
            navSer = AppEngine.GetRequiredService <MainNavigationService>();
            var titleSer = AppEngine.GetRequiredService <TitleService>();

            exSer = AppEngine.GetRequiredService <ExceptionService>();
            var settings = AppEngine.GetRequiredService <AnfSettings>();

            mainPlan = this.Get <Panel>("MainPlan");
            var titleBar = this.Get <Border>("TitleBar");
            var exBorder = this.Get <Border>("ExcetionBorder");

            mainPlan.Children.Add(navSer.border);

            titleBar.DataContext = titleSer;
            titleBar.Bind(HeightProperty, new Binding(nameof(TitleService.OffsceneHeight))
            {
                Source = titleSer
            });

            exBorder.DataContext = exSer;
            exBorder.KeyDown    += ExBorder_KeyDown;

            this.Bind(MinWidthProperty, new Binding(nameof(WindowSettings.MinWidth))
            {
                Source = settings.Window
            });
            this.Bind(MinHeightProperty, new Binding(nameof(WindowSettings.MinHeight))
            {
                Source = settings.Window
            });
            this.Bind(TopmostProperty, new Binding(nameof(WindowSettings.Topmost))
            {
                Source = settings.Window
            });
            this.Get <Border>("WraperExcetionBorder")
            .DataContext = settings;
        }
Ejemplo n.º 20
0
        public override void OnFrameworkInitializationCompleted()
        {
            if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
            {
                AppEngine.Services.AddSingleton(desktop);
                AppEngine.Services.AddSingleton <MainWindow>();
                AppEngine.Provider.UseKnowEngines();
                var nav      = AppEngine.GetRequiredService <MainNavigationService>();
                var mainWin  = AppEngine.GetRequiredService <MainWindow>();
                var titleSer = AppEngine.GetRequiredService <TitleService>();
                _                  = AppEngine.GetRequiredService <AnfSettings>();
                mainWin.Icon       = new WindowIcon("Anf.ico");
                desktop.MainWindow = mainWin;
                titleSer.Bind(mainWin);
                titleSer.CreateControls();
                mainWin.KeyDown += OnMainWinKeyDown;

                //nav.Navigate(new VisitingView());
                nav.Navigate <HomePage>();
                AppEngine.GetRequiredService <ThemeService>();
                mainWin.RunInitAll();
            }
            base.OnFrameworkInitializationCompleted();
        }
Ejemplo n.º 21
0
        public static async Task <string> PickSaveAsync(this Bitmap bitmap, string name)
        {
            var win = AppEngine.GetRequiredService <MainWindow>();
            var mgr = AppEngine.GetRequiredService <RecyclableMemoryStreamManager>();
            var dig = new SaveFileDialog();

            dig.InitialFileName = name;
            var res = await dig.ShowAsync(win);

            if (res != null)
            {
                using (var stream = mgr.GetStream())
                {
                    bitmap.Save(stream);
                    stream.Seek(0, SeekOrigin.Begin);

                    using (var fs = File.Open(res, FileMode.Create))
                    {
                        await stream.CopyToAsync(fs);
                    }
                }
            }
            return(res);
        }
Ejemplo n.º 22
0
 public ComicView()
 {
     InitializeComponent();
     binder = AppEngine.GetRequiredService <MainWindow>().BindDecorationMargin(this);
 }
Ejemplo n.º 23
0
        private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
        {
            var exSer = AppEngine.GetRequiredService <ExceptionService>();

            exSer.Exception = e.ExceptionObject as Exception;
        }
Ejemplo n.º 24
0
 public void Copy()
 {
     AppEngine.GetRequiredService <IPlatformService>()
     .Copy(Condition.Address.AbsoluteUri);
 }
Ejemplo n.º 25
0
 public async void Open()
 {
     await AppEngine.GetRequiredService <IPlatformService>()
     .OpenAddressAsync(Condition.Address.AbsoluteUri);
 }
Ejemplo n.º 26
0
        protected override ComicSnapshotInfo <WithImageStorableComicSourceInfo <Bitmap, Bitmap> > CreateSnapshotInfo(ComicSnapshot info)
        {
            var httpClient = AppEngine.GetRequiredService <INetworkAdapter>();

            return(new WithImageComicSnapshotInfo <Bitmap, Bitmap>(info, httpClient));
        }
Ejemplo n.º 27
0
 public MAUIHomeViewModel()
 {
     AnfSettings         = AppEngine.GetRequiredService <AnfSettings>();
     this.networkAdapter = AppEngine.GetRequiredService <INetworkAdapter>();
 }
Ejemplo n.º 28
0
        private void BackButton_Click(object sender, RoutedEventArgs e)
        {
            var navSer = AppEngine.GetRequiredService <UnoNavigationService>();

            navSer.GoBack();
        }
Ejemplo n.º 29
0
 private void OnFavoriteButtonClick(object sender, RoutedEventArgs e)
 {
     var navSer = AppEngine.GetRequiredService <UnoNavigationService>();
     //navSer.Navigate<BookshelfView>();
 }
Ejemplo n.º 30
0
 public BookshelfView()
 {
     InitializeComponent();
     DataContext = vm = new DesktopBookshelfViewModel();
     AppEngine.GetRequiredService <MainWindow>().BindDecorationMargin(this);
 }