Skip to content

Commit 3a2e5e6

Browse files
committed
implemented page interface
1 parent e292f51 commit 3a2e5e6

9 files changed

Lines changed: 147 additions & 22 deletions

File tree

CutCode/DataBase/DBManager.cs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Text;
5+
using System.Threading.Tasks;
6+
7+
namespace CutCode
8+
{
9+
public class DBManager
10+
{
11+
12+
}
13+
}

CutCode/Helpers/Bootstrapper.cs

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,8 @@ public class Bootstrapper : Bootstrapper<MainViewModel>
77
{
88
protected override void ConfigureIoC(IStyletIoCBuilder builder)
99
{
10-
builder.Bind<IThemeService>().To<ThemeService>();
11-
// Configure the IoC container in here
12-
}
13-
14-
protected override void Configure()
15-
{
16-
// Perform any other configuration before the application starts
10+
builder.Bind<IThemeService>().To<ThemeService>();
11+
builder.Bind<IPageService>().To<PageService>();
1712
}
1813
}
1914
}

CutCode/Interfaces/IPageService.cs

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Text;
5+
using System.Threading.Tasks;
6+
7+
namespace CutCode
8+
{
9+
public interface IPageService
10+
{
11+
event EventHandler PageChanged;
12+
Object Page { get; set; }
13+
event EventHandler PageRemoteChanged;
14+
string remoteChange { get; set; }
15+
16+
}
17+
18+
public class PageService : IPageService
19+
{
20+
public event EventHandler PageChanged;
21+
private Object _Page { get; set; }
22+
public Object Page
23+
{
24+
get => _Page;
25+
set
26+
{
27+
_Page = value;
28+
PageChanged?.Invoke(this, EventArgs.Empty);
29+
}
30+
}
31+
public event EventHandler PageRemoteChanged;
32+
private string _remoteChange;
33+
public string remoteChange
34+
{
35+
get => _remoteChange;
36+
set
37+
{
38+
_remoteChange = value;
39+
PageRemoteChanged?.Invoke(_remoteChange, EventArgs.Empty);
40+
}
41+
}
42+
}
43+
44+
}

CutCode/ViewModels/AddViewModel.cs

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,14 @@ namespace CutCode
1313
public class AddViewModel : Screen
1414
{
1515
private readonly IThemeService themeService;
16-
public AddViewModel(IThemeService _themeService)
16+
private readonly IPageService pageService;
17+
public AddViewModel(IThemeService _themeService, IPageService _pageService)
1718
{
1819
themeService = _themeService;
1920
themeService.ThemeChanged += ThemeChanged;
2021

22+
pageService = _pageService;
23+
2124
AllLangs = new ObservableCollection<string>()
2225
{
2326
"Any languages", "Python", "C++", "C#", "CSS", "Dart", "Golang", "Html", "Java",
@@ -115,7 +118,7 @@ public string CurrentLang
115118
"Java", "Java", "C++", "C++", "C#", "C++","C++", "Java"
116119
};
117120

118-
public void DoneClicked()
121+
public void SaveCommand()
119122
{
120123
if (string.IsNullOrEmpty(title))
121124
{
@@ -127,8 +130,14 @@ public void DoneClicked()
127130
}
128131
else
129132
{
130-
// done lets add the code ...
133+
// done lets add the code and show the code view page ...
131134
}
132135
}
136+
137+
public void CancelCommand()
138+
{
139+
pageService.remoteChange = "Home";
140+
pageService.Page = AllViews.Pages[0];
141+
}
133142
}
134143
}

CutCode/ViewModels/AllViews.cs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Text;
5+
using System.Threading.Tasks;
6+
7+
namespace CutCode
8+
{
9+
public static class AllViews
10+
{
11+
public static List<Object> Pages { get; set; }
12+
}
13+
}

CutCode/ViewModels/HomeViewModel.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,14 @@ namespace CutCode
1313
public class HomeViewModel : Screen
1414
{
1515
private readonly IThemeService themeService;
16-
public HomeViewModel(IThemeService _themeService)
16+
private readonly IPageService pageService;
17+
public HomeViewModel(IThemeService _themeService, IPageService _pageService)
1718
{
1819
themeService = _themeService;
1920
themeService.ThemeChanged += ThemeChanged;
21+
22+
pageService = _pageService;
23+
2024
SetAppearance();
2125
IsSearched = false;
2226

CutCode/ViewModels/MainViewModel.cs

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,18 @@ public class MainViewModel : Screen
2222
//private List<Button> leftBarBtns;
2323
private List<Object> Pages;
2424
private readonly IThemeService _themeService;
25-
private IWindowManager windowManager;
25+
private readonly IPageService pageService;
2626
public ObservableCollection<SideBarBtnModel> sideBarBtns { get; set; }
27-
public MainViewModel(IWindowManager _windowManager, IThemeService themeService)
27+
public MainViewModel(IThemeService themeService, IPageService _pageService)
2828
{
2929
_themeService = themeService;
30-
windowManager = _windowManager;
3130
_themeService.ThemeChanged += ThemeChanged;
3231
_themeService.IsLightTheme = false;
3332

33+
pageService = _pageService;
34+
pageService.PageChanged += PageChanged;
35+
pageService.PageRemoteChanged += PageRemoteChanged;
36+
3437
sideBarBtns = new ObservableCollection<SideBarBtnModel>();
3538

3639
// there should be some kind of condition here
@@ -41,9 +44,14 @@ public MainViewModel(IWindowManager _windowManager, IThemeService themeService)
4144
sideBarBtns[0].background = _themeService.IsLightTheme ? ColorCon.Convert("#FCFCFC") : ColorCon.Convert("#36393F");
4245

4346

44-
Pages = new List<Object>() { new HomeViewModel(themeService), new AddViewModel(themeService), new FavViewModel(themeService), new SettingViewModel(_themeService) };
45-
currentPage = Pages[0];
47+
Pages = new List<Object>() { new HomeViewModel(themeService, pageService),
48+
new AddViewModel(themeService, pageService),
49+
new FavViewModel(themeService),
50+
new SettingViewModel(_themeService) };
51+
AllViews.Pages = Pages;
52+
pageService.Page = Pages[0];
4653
}
54+
4755
private void ThemeChanged(object sender, EventArgs e)
4856
{
4957

@@ -59,6 +67,17 @@ private void ThemeChanged(object sender, EventArgs e)
5967
titlebarBtnsHoverColor = _themeService.IsLightTheme ? ColorCon.Convert("#D0D1D2") : ColorCon.Convert("#373737");
6068
}
6169

70+
private void PageChanged(object sender, EventArgs e)
71+
{
72+
currentPage = pageService.Page;
73+
}
74+
75+
private void PageRemoteChanged(object sender, EventArgs e)
76+
{
77+
var page = sender as string;
78+
ChangePageCommand(page);
79+
}
80+
6281
private Object _currentPage;
6382
public Object currentPage
6483
{
@@ -75,7 +94,7 @@ public void ChangePageCommand(string selected_item)
7594
else ind = sideBarBtns.IndexOf(btn);
7695
}
7796
sideBarBtns[ind].background = _themeService.IsLightTheme ? ColorCon.Convert("#FCFCFC") : ColorCon.Convert("#36393F");
78-
if (currentPage != Pages[ind]) currentPage = Pages[ind];
97+
if (currentPage != Pages[ind]) pageService.Page = Pages[ind];
7998
}
8099

81100
private SolidColorBrush _backgroundColor;

CutCode/Views/AddView.xaml

Lines changed: 33 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
</Setter.Value>
2525
</Setter>
2626
</Style>
27-
27+
2828
</Grid.Resources>
2929

3030
<Grid.RowDefinitions>
@@ -129,14 +129,42 @@
129129
<Grid Grid.Row="3">
130130
<Grid.ColumnDefinitions>
131131
<ColumnDefinition Width="*"/>
132-
<ColumnDefinition Width="*"/>
132+
<ColumnDefinition Width="Auto"/>
133+
<ColumnDefinition Width="Auto"/>
133134
</Grid.ColumnDefinitions>
134135

135136
<Label Grid.Column="0" Content="{Binding leftText}" HorizontalAlignment="Right" Foreground="Red" FontSize="13" FontFamily="{StaticResource poppins_regular}"/>
137+
138+
<Border Grid.Column="1" Background="{Binding richtextBoxBackground}" BorderThickness="0" Width="120" CornerRadius="7" Height="32" HorizontalAlignment="Center" Margin="5,0,10,7">
139+
<Button Content="Cancel" Background="Transparent" BorderThickness="0" FontFamily="{StaticResource poppins_regular}" Foreground="{Binding textBoxForeground}"
140+
FontSize="16" BorderBrush="{Binding textBoxBackground}" Command="{s:Action CancelCommand}">
141+
<Button.Style>
142+
<Style TargetType="Button">
143+
<Setter Property="Background" Value="Transparent"/>
144+
<Setter Property="Template">
145+
<Setter.Value>
146+
<ControlTemplate TargetType="Button">
147+
<Border Name="border" CornerRadius="10" BorderThickness="0" Background="{TemplateBinding Background}">
148+
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
149+
</Border>
150+
151+
<ControlTemplate.Triggers>
152+
<Trigger Property="IsMouseOver" Value="True">
153+
<Setter TargetName="border" Property="Background" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=BorderBrush}"/>
154+
</Trigger>
155+
</ControlTemplate.Triggers>
156+
</ControlTemplate>
157+
</Setter.Value>
158+
</Setter>
159+
160+
</Style>
161+
</Button.Style>
162+
</Button>
163+
</Border>
136164

137-
<Border Grid.Column="1" Background="{Binding textBoxBackground}" BorderThickness="0" Width="120" CornerRadius="7" Height="32" HorizontalAlignment="Center" Margin="5,0,30,7">
138-
<Button Content="Add code" Background="Transparent" BorderThickness="0" FontFamily="{StaticResource poppins_regular}" Foreground="{Binding textBoxForeground}"
139-
FontSize="18" BorderBrush="{Binding richtextBoxBackground}" Command="{s:Action DoneClicked}">
165+
<Border Grid.Column="2" Background="{Binding richtextBoxBackground}" BorderThickness="0" Width="120" CornerRadius="7" Height="32" HorizontalAlignment="Center" Margin="5,0,30,7">
166+
<Button Content="Save" Background="Transparent" BorderThickness="0" FontFamily="{StaticResource poppins_regular}" Foreground="{Binding textBoxForeground}"
167+
FontSize="16" BorderBrush="{Binding textBoxBackground}" Command="{s:Action SaveCommand}">
140168
<Button.Style>
141169
<Style TargetType="Button">
142170
<Setter Property="Background" Value="Transparent"/>

0 commit comments

Comments
 (0)