From 70fdc10f5021a0a744a48a2e007a0020bf1edb1c Mon Sep 17 00:00:00 2001 From: Mateusz Skoczek Date: Fri, 8 Mar 2024 20:48:31 +0100 Subject: [PATCH] subscriptions page added --- .../Strings/en-US/BaseViewResources.resw | 3 + .../en-US/SubscriptionsViewResources.resw | 123 ++++++++++++++++++ .../BaseViewModel.cs | 9 +- .../Subscriptions/SubscriptionsViewModel.cs | 13 ++ .../Subscriptions/SubscriptionsView.xaml | 15 +++ .../Subscriptions/SubscriptionsView.xaml.cs | 32 +++++ .../VDownload.Core.Views.csproj | 4 + .../ViewModelToViewConverter.cs | 3 + .../StringResourcesService.cs | 3 + VDownload/App.xaml.cs | 4 + .../Assets/BaseView/SubscriptionsDark.png | Bin 0 -> 5417 bytes .../Assets/BaseView/SubscriptionsLight.png | Bin 0 -> 5340 bytes .../Dictionaries/Images/ImagesBaseView.xaml | 2 + VDownload/VDownload.csproj | 6 + 14 files changed, 216 insertions(+), 1 deletion(-) create mode 100644 VDownload.Core/VDownload.Core.Strings/Strings/en-US/SubscriptionsViewResources.resw create mode 100644 VDownload.Core/VDownload.Core.ViewModels/Subscriptions/SubscriptionsViewModel.cs create mode 100644 VDownload.Core/VDownload.Core.Views/Subscriptions/SubscriptionsView.xaml create mode 100644 VDownload.Core/VDownload.Core.Views/Subscriptions/SubscriptionsView.xaml.cs create mode 100644 VDownload/Assets/BaseView/SubscriptionsDark.png create mode 100644 VDownload/Assets/BaseView/SubscriptionsLight.png diff --git a/VDownload.Core/VDownload.Core.Strings/Strings/en-US/BaseViewResources.resw b/VDownload.Core/VDownload.Core.Strings/Strings/en-US/BaseViewResources.resw index 3df704d..749a837 100644 --- a/VDownload.Core/VDownload.Core.Strings/Strings/en-US/BaseViewResources.resw +++ b/VDownload.Core/VDownload.Core.Strings/Strings/en-US/BaseViewResources.resw @@ -126,4 +126,7 @@ Home + + Subscriptions + \ No newline at end of file diff --git a/VDownload.Core/VDownload.Core.Strings/Strings/en-US/SubscriptionsViewResources.resw b/VDownload.Core/VDownload.Core.Strings/Strings/en-US/SubscriptionsViewResources.resw new file mode 100644 index 0000000..8590552 --- /dev/null +++ b/VDownload.Core/VDownload.Core.Strings/Strings/en-US/SubscriptionsViewResources.resw @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Subscriptions + + \ No newline at end of file diff --git a/VDownload.Core/VDownload.Core.ViewModels/BaseViewModel.cs b/VDownload.Core/VDownload.Core.ViewModels/BaseViewModel.cs index 8ec282b..cd7ff21 100644 --- a/VDownload.Core/VDownload.Core.ViewModels/BaseViewModel.cs +++ b/VDownload.Core/VDownload.Core.ViewModels/BaseViewModel.cs @@ -13,6 +13,7 @@ using VDownload.Services.UI.DictionaryResources; using VDownload.Services.UI.StringResources; using SimpleToolkit.UI.Models; using VDownload.Core.ViewModels.About; +using VDownload.Core.ViewModels.Subscriptions; namespace VDownload.Core.ViewModels { @@ -66,7 +67,13 @@ namespace VDownload.Core.ViewModels Name = _stringResourcesService.BaseViewResources.Get("HomeNavigationViewItem"), IconSource = _dictionaryResourcesService.Get("ImageBaseViewHome"), ViewModel = typeof(HomeViewModel), - } + }, + new NavigationViewItem() + { + Name = _stringResourcesService.BaseViewResources.Get("SubscriptionsNavigationViewItem"), + IconSource = _dictionaryResourcesService.Get("ImageBaseViewSubscriptions"), + ViewModel = typeof(SubscriptionsViewModel), + }, } ); FooterItems = new ReadOnlyObservableCollection diff --git a/VDownload.Core/VDownload.Core.ViewModels/Subscriptions/SubscriptionsViewModel.cs b/VDownload.Core/VDownload.Core.ViewModels/Subscriptions/SubscriptionsViewModel.cs new file mode 100644 index 0000000..663b143 --- /dev/null +++ b/VDownload.Core/VDownload.Core.ViewModels/Subscriptions/SubscriptionsViewModel.cs @@ -0,0 +1,13 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace VDownload.Core.ViewModels.Subscriptions +{ + public class SubscriptionsViewModel : ObservableObject + { + } +} diff --git a/VDownload.Core/VDownload.Core.Views/Subscriptions/SubscriptionsView.xaml b/VDownload.Core/VDownload.Core.Views/Subscriptions/SubscriptionsView.xaml new file mode 100644 index 0000000..386316e --- /dev/null +++ b/VDownload.Core/VDownload.Core.Views/Subscriptions/SubscriptionsView.xaml @@ -0,0 +1,15 @@ + + + + + + + diff --git a/VDownload.Core/VDownload.Core.Views/Subscriptions/SubscriptionsView.xaml.cs b/VDownload.Core/VDownload.Core.Views/Subscriptions/SubscriptionsView.xaml.cs new file mode 100644 index 0000000..abf79c5 --- /dev/null +++ b/VDownload.Core/VDownload.Core.Views/Subscriptions/SubscriptionsView.xaml.cs @@ -0,0 +1,32 @@ +using Microsoft.UI.Xaml; +using Microsoft.UI.Xaml.Controls; +using Microsoft.UI.Xaml.Controls.Primitives; +using Microsoft.UI.Xaml.Data; +using Microsoft.UI.Xaml.Input; +using Microsoft.UI.Xaml.Media; +using Microsoft.UI.Xaml.Navigation; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Runtime.InteropServices.WindowsRuntime; +using VDownload.Core.ViewModels.About; +using VDownload.Core.ViewModels.Subscriptions; +using Windows.Foundation; +using Windows.Foundation.Collections; + +namespace VDownload.Core.Views.Subscriptions +{ + public sealed partial class SubscriptionsView : Page + { + #region CONSTRUCTORS + + public SubscriptionsView(SubscriptionsViewModel viewModel) + { + this.InitializeComponent(); + this.DataContext = viewModel; + } + + #endregion + } +} diff --git a/VDownload.Core/VDownload.Core.Views/VDownload.Core.Views.csproj b/VDownload.Core/VDownload.Core.Views/VDownload.Core.Views.csproj index 6928f72..cb2d07a 100644 --- a/VDownload.Core/VDownload.Core.Views/VDownload.Core.Views.csproj +++ b/VDownload.Core/VDownload.Core.Views/VDownload.Core.Views.csproj @@ -11,6 +11,7 @@ + @@ -44,6 +45,9 @@ MSBuild:Compile + + MSBuild:Compile + MSBuild:Compile diff --git a/VDownload.Core/VDownload.Core.Views/ViewModelToViewConverter.cs b/VDownload.Core/VDownload.Core.Views/ViewModelToViewConverter.cs index 33423b9..bcf00dd 100644 --- a/VDownload.Core/VDownload.Core.Views/ViewModelToViewConverter.cs +++ b/VDownload.Core/VDownload.Core.Views/ViewModelToViewConverter.cs @@ -6,10 +6,12 @@ using VDownload.Core.ViewModels.About; using VDownload.Core.ViewModels.Authentication; using VDownload.Core.ViewModels.Home; using VDownload.Core.ViewModels.Settings; +using VDownload.Core.ViewModels.Subscriptions; using VDownload.Core.Views.About; using VDownload.Core.Views.Authentication; using VDownload.Core.Views.Home; using VDownload.Core.Views.Settings; +using VDownload.Core.Views.Subscriptions; namespace VDownload.Core.Views { @@ -23,6 +25,7 @@ namespace VDownload.Core.Views { typeof(HomeDownloadsViewModel), typeof(HomeDownloadsView) }, { typeof(HomeVideoViewModel), typeof(HomeVideoView) }, { typeof(HomeVideoCollectionViewModel), typeof(HomeVideoCollectionView) }, + { typeof(SubscriptionsViewModel), typeof(SubscriptionsView) }, { typeof(SettingsViewModel), typeof(SettingsView) }, { typeof(AboutViewModel), typeof(AboutView) }, { typeof(AuthenticationViewModel), typeof(AuthenticationView) } diff --git a/VDownload.Services/VDownload.Services.UI/VDownload.Services.UI.StringResources/StringResourcesService.cs b/VDownload.Services/VDownload.Services.UI/VDownload.Services.UI.StringResources/StringResourcesService.cs index 62c38bd..e7bf3e0 100644 --- a/VDownload.Services/VDownload.Services.UI/VDownload.Services.UI.StringResources/StringResourcesService.cs +++ b/VDownload.Services/VDownload.Services.UI/VDownload.Services.UI.StringResources/StringResourcesService.cs @@ -18,6 +18,7 @@ namespace VDownload.Services.UI.StringResources StringResources SettingsViewResources { get; } StringResources FilenameTemplateResources { get; } StringResources AboutViewResources { get; } + StringResources SubscriptionsViewResources { get; } } @@ -47,6 +48,7 @@ namespace VDownload.Services.UI.StringResources public StringResources SettingsViewResources { get; protected set; } public StringResources FilenameTemplateResources { get; protected set; } public StringResources AboutViewResources { get; protected set; } + public StringResources SubscriptionsViewResources { get; protected set; } #endregion @@ -71,6 +73,7 @@ namespace VDownload.Services.UI.StringResources SettingsViewResources = BuildResource("SettingsViewResources"); FilenameTemplateResources = BuildResource("FilenameTemplateResources"); AboutViewResources = BuildResource("AboutViewResources"); + SubscriptionsViewResources = BuildResource("SubscriptionsViewResources"); } #endregion diff --git a/VDownload/App.xaml.cs b/VDownload/App.xaml.cs index 4127d09..a91d01c 100644 --- a/VDownload/App.xaml.cs +++ b/VDownload/App.xaml.cs @@ -11,11 +11,13 @@ using VDownload.Core.ViewModels.About; using VDownload.Core.ViewModels.Authentication; using VDownload.Core.ViewModels.Home; using VDownload.Core.ViewModels.Settings; +using VDownload.Core.ViewModels.Subscriptions; using VDownload.Core.Views; using VDownload.Core.Views.About; using VDownload.Core.Views.Authentication; using VDownload.Core.Views.Home; using VDownload.Core.Views.Settings; +using VDownload.Core.Views.Subscriptions; using VDownload.Services.Data.Application; using VDownload.Services.Data.Authentication; using VDownload.Services.Data.Configuration; @@ -156,6 +158,7 @@ namespace VDownload services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); + services.AddSingleton(); services.AddSingleton(); // Views @@ -166,6 +169,7 @@ namespace VDownload services.AddTransient(); services.AddTransient(); services.AddTransient(); + services.AddTransient(); services.AddTransient(); } diff --git a/VDownload/Assets/BaseView/SubscriptionsDark.png b/VDownload/Assets/BaseView/SubscriptionsDark.png new file mode 100644 index 0000000000000000000000000000000000000000..1c34f4ff18b790c2ae04655db4b6b91952608730 GIT binary patch literal 5417 zcmeHKcT^MU7M}o0Q$TSMloBHftfnWBWC<-q2ogm^!L`67nZO7sq>#{DKtNav7ObFx zpzK3wij{Q9y=A6mQeBZsld++a-GhcSl z0>6nS(@X#Wn8@+>4My%k$hF95Jo3-x&M-o5=MzH06v3bhEtN@xa14Z2#7iMGq=tn6 zpuQ&x@-{n%o>0^OBNO!mcuZHkD*h|tS~wcMwe)y;Z2skm#`k-Mj4Mz9wzN=}vfQ8A z8aJLX$%s%3@%L_Q>NR}fzsx4W$BYXAsC1ac3gWO>AL2ox$WPwF^grii+Yr9E z0rO2poJH)#poTi!w@<=K!wgIhmR&Dhd+A{K_2LdPblgYclz* zKu9#b)~7Ug2=6)I-Zb=JKi|t`*M#2e^Tb2bt@_6Ibsst?f9Pa(>}avYe#?c^6y8t# z%A0Vtu{iqN-sZ|J+-sKWvKxY@Hmz*FoEhNGvRxFi@l8g4lgSJ0)z!zZ-Wz;|pI}wJ zeZn1h6DD<*e)eeKbIkfjvP77p9G#9H%W?vqukT7xx6-NnI3eT8uY8GMNd2MQ!S2&WcFk-`H2cTcqx8xs?yP)Heg zyh^3QsmM5qED}$o)9H8u2~Q$n5eck3UaSDsSh0Mj7Gea$7n1X3uv7s{#Aq!h$df1) zObiCuM}P27B;|5H!i(jjEFgT~)u0ql#1Zf!5q_+OT)~b*Kt>(PwZf7+p95J|2pJM2M&yu}b{Rq#uVH^ie}gK_o1a>a-BDKa*6z z!cSy<=9_j$7tUBm5cQ9^pGkj+T_=o4ak&g%316vokK@b4Xzeou5cR|!J+dgAW1-@Vfj=F z9ZM0AiC8*`M#Kt)R2os}22u$Ww=ob4WiV2eV9Z#rv`_*Bibo`XBmy183I#j@mg4G4 z#L@_S9#+UBK}3+o7lPywC;^`_Pa+e6NIGE=7zyE};z*qhE#VCBAPy5l!Vx~L1jT>~ zA)3~E#4s^hr_fr>kK0_Np#-1;^aT|V0!koJ7z8qd zKno!e7!)#tM4Uq)G6-YjB?4F&|G%WQ?Spn7NxDBQN9@PzmPUGNF%&!UHu4$+>zWCT z*0lu#CO!co4oL+2m-jppGWw17Z=HS$IL zex>UxU0=k&7YTo@uCH``5d&W&{I$CNZ*-Y_I!r-g+PTkS=TS>t*0{d|F8 z?TL%*l+=&hjHUj|U*#9 zu1Rv)wvGGY*4sf;BOV3Lj_Stka&~N7Pn?lDtcf_AV6n;G{ip0~$5pi4VEiswi@tsD zArAlMTEmSc&(kk2wTLOozAh4-@G+@!Fb}+v)>G3{aW}c7rl0$;J5Qy0k=)+z(Z5&K zp6q8b3FB*Y614%i;dMh?lJeMVHdABs-l0T)x1#qQ&@~B==qKtI3Q{7obMAUM?;lDt zwL67BRax-q;b-~d%}x^@ZJVMjO1dB(^kcWw)FoVco%iZ`H47JbG5KWbSx(B@pxkiqsuA?@z)u*8mNH1&kRI71>>o~=dKT?&2hkqP;Rxetaetc!{ zl9u%1J-@BW{^O4ejk^xRO|Fe|f&KmoGoN(bNnJN<<Ell+mr;~mSbDr z%}*#54PVMV##A{jIR-pX6c&f`gs}&B?3RUF*W?aF-+xc#H_r=2-HSZRpH#4K+dxoV zwDh*M++7lo6$|bN+o_nP7jw?~*bd_YeK%<1iq~`6>W^&c{yw7BDZuwiTZ(@ggF^`R@k31Gj49CNH#2M zeOXlGx{ErrY&&IN{qe&s(xFMvIVsVJFQCjdWw9QSe5;If4XOqu{#0ieN$y* zVMnkQWLPW)zcTv_>ApsGvR9ht>Eyxh~LJAUuKjd`%L(=hAc9dHh7VBXNu z^p3slxt11kk3cW=Vd}w3*c`a3PApvPwc-uXcJxk}BkD=1ArP9pfS8BLIiGbTv7pSp z=vCJGH!GQ4WsSDA&+6Wa&fD&9H36pE>mT{ILFI{YsM~4!OliS-$Fp|7J7GAI))!UD zW!EzFop_g*4Lq(pbE`M;X6V*^eW-{lPwi=(`Bw~6JYLk6zo-K$9Z-6FjbEH?P0Zkh zq?mekB2B-Vml?pPU%o#s-#|Ps_oR4ggy+7Z2YuEXqf=Zg3oJp+TFre;xXY^5D~@ee z3phRV z&+vZBqu4##K4aygl-&%A2qRi)O~ugFfP{K)mO7+`!|B%$BbMV6pBw<3TC$F}%~q;* zYvMTzOPmu~E%cg$%Z$ik{AG5;Wb1&tmZ6A|+JL{C8`( z)2F5u>9);YlWJXu?JAht z$CNssJ8gb9H+v{HZinG+Ezj@AMmL!n>UHcx_xD*yn_)sUSn!w@X$a0SeH*|!>VFWQpe$) zC@J;1w977{+90{;-GeJr7@weyg} LUf^5q6Or~G;3+ja literal 0 HcmV?d00001 diff --git a/VDownload/Assets/BaseView/SubscriptionsLight.png b/VDownload/Assets/BaseView/SubscriptionsLight.png new file mode 100644 index 0000000000000000000000000000000000000000..9f1e77d0532a6362e5667266e01911b9fe41acd8 GIT binary patch literal 5340 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 literal 0 HcmV?d00001 diff --git a/VDownload/Dictionaries/Images/ImagesBaseView.xaml b/VDownload/Dictionaries/Images/ImagesBaseView.xaml index 1509708..e533eb6 100644 --- a/VDownload/Dictionaries/Images/ImagesBaseView.xaml +++ b/VDownload/Dictionaries/Images/ImagesBaseView.xaml @@ -7,11 +7,13 @@ /Assets/BaseView/AuthenticationDark.png /Assets/BaseView/HomeDark.png /Assets/BaseView/AboutDark.png + /Assets/BaseView/SubscriptionsDark.png /Assets/BaseView/AuthenticationLight.png /Assets/BaseView/HomeLight.png /Assets/BaseView/AboutLight.png + /Assets/BaseView/SubscriptionsLight.png diff --git a/VDownload/VDownload.csproj b/VDownload/VDownload.csproj index 5b1b6cb..d6cbda5 100644 --- a/VDownload/VDownload.csproj +++ b/VDownload/VDownload.csproj @@ -214,6 +214,12 @@ Always + + Always + + + Always + Always