Skip to content
This repository was archived by the owner on Oct 3, 2022. It is now read-only.

Commit 51654e1

Browse files
committed
Paging implemented in subtask lists
1 parent e8d66cd commit 51654e1

File tree

5 files changed

+56
-4
lines changed

5 files changed

+56
-4
lines changed
60 Bytes
Binary file not shown.

.vs/TakeMyTime.NETCore/v16/.suo

-512 Bytes
Binary file not shown.

TakeMyTime.WPF/Subtasks/SubtaskList.xaml

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,13 @@
1212
WindowStyle="None"
1313
Title="{x:Static resources:SubtaskList.Title}"
1414
mc:Ignorable="d"
15-
Height="450" Width="800">
15+
Height="600" Width="800">
1616

1717
<Grid>
1818
<Grid.RowDefinitions>
1919
<RowDefinition Height="20"></RowDefinition>
2020
<RowDefinition Height="*"></RowDefinition>
21+
<RowDefinition Height="40"></RowDefinition>
2122
<RowDefinition Height="60"></RowDefinition>
2223
</Grid.RowDefinitions>
2324
<Border x:Name="b_Toolbar"
@@ -151,7 +152,21 @@
151152
</ListView>
152153
</StackPanel>
153154
</Grid>
154-
<StackPanel Grid.Row="2"
155+
<Border Grid.Row="2">
156+
<StackPanel HorizontalAlignment="Center" Orientation="Horizontal">
157+
<Button x:Name="btn_PagingBack" Background="Black" Click="btn_PagingBack_Click">
158+
<materialDesign:PackIcon Kind="ArrowLeft"></materialDesign:PackIcon>
159+
</Button>
160+
<Button x:Name="btn_CurrentPage" IsEnabled="False" Background="Black" Foreground="White">
161+
</Button>
162+
<Button x:Name="btn_PagingForward" Background="Black" Click="btn_PagingForward_Click">
163+
<materialDesign:PackIcon Kind="ArrowRight"></materialDesign:PackIcon>
164+
</Button>
165+
<Button x:Name="btn_allPages" Background="Black" IsEnabled="False">
166+
</Button>
167+
</StackPanel>
168+
</Border>
169+
<StackPanel Grid.Row="3"
155170
Orientation="Horizontal"
156171
HorizontalAlignment="Center"
157172
Width="300"

TakeMyTime.WPF/Subtasks/SubtaskList.xaml.cs

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
using TakeMyTime.BLL.Logic;
1414

1515
using TakeMyTime.Models.Models;
16+
using TakeMyTime.WPF.Utility;
1617

1718
namespace TakeMyTime.WPF.Subtasks
1819
{
@@ -24,15 +25,26 @@ public partial class SubtaskList : Window
2425
public SubtaskList(int assignment_id)
2526
{
2627
InitializeComponent();
28+
this.PagingManager = new PagingManager<SubtaskGridViewModel>(6);
2729
Load(assignment_id);
30+
this.RefreshBindings(1);
31+
}
32+
33+
private void RefreshBindings(int page)
34+
{
35+
this.lv_Subtasks.ItemsSource = this.PagingManager.Page(page);
36+
this.btn_CurrentPage.Content = this.PagingManager.CurrentPage;
37+
this.btn_allPages.Content = this.PagingManager.MaxPage;
38+
this.btn_PagingForward.IsEnabled = this.PagingManager.CanPageForward;
39+
this.btn_PagingBack.IsEnabled = this.PagingManager.CanPageBack;
2840
}
2941

3042
private void Load(int assignment_id)
3143
{
3244
var assignmentLogic = new AssignmentLogic();
3345
this.Assignment = assignmentLogic.GetAssignmentById(assignment_id);
3446
this.GridViewModels = Assignment.Subtasks.Select(s => new SubtaskGridViewModel(s)).ToList();
35-
this.lv_Subtasks.ItemsSource = this.GridViewModels;
47+
this.PagingManager.Data = this.GridViewModels;
3648
assignmentLogic.Dispose();
3749
}
3850

@@ -65,6 +77,7 @@ private void btn_DeleteSubtask_Click(object sender, RoutedEventArgs e)
6577
assignmentLogic.DeleteSubtask(this.Assignment.Id, this.SelectedSubtask.Id);
6678
assignmentLogic.Dispose();
6779
Load(this.Assignment.Id);
80+
RefreshBindings(this.PagingManager.CurrentPage);
6881
}
6982
}
7083

@@ -75,6 +88,7 @@ private void btn_EditSubtask_Click(object sender, RoutedEventArgs e)
7588
var subtaskEditDialog = new AddSubtask(this.SelectedSubtask.Id, this.Assignment.Id);
7689
subtaskEditDialog.ShowDialog();
7790
Load(this.Assignment.Id);
91+
RefreshBindings(this.PagingManager.CurrentPage);
7892
}
7993
}
8094

@@ -83,6 +97,17 @@ private void btn_AddSubtask_Click(object sender, RoutedEventArgs e)
8397
var subtaskAddDialog = new AddSubtask(this.Assignment.Id);
8498
subtaskAddDialog.ShowDialog();
8599
Load(this.Assignment.Id);
100+
RefreshBindings(this.PagingManager.CurrentPage);
101+
}
102+
103+
private void btn_PagingBack_Click(object sender, RoutedEventArgs e)
104+
{
105+
this.RefreshBindings(this.PagingManager.CurrentPage - 1);
106+
}
107+
108+
private void btn_PagingForward_Click(object sender, RoutedEventArgs e)
109+
{
110+
this.RefreshBindings(this.PagingManager.CurrentPage + 1);
86111
}
87112

88113
private void btn_SaveSubtasks_Click(object sender, RoutedEventArgs e)
@@ -95,5 +120,8 @@ private void btn_SaveSubtasks_Click(object sender, RoutedEventArgs e)
95120
public Assignment Assignment { get; set; }
96121
public List<SubtaskGridViewModel> GridViewModels { get; set; }
97122
public SubtaskGridViewModel SelectedSubtask { get; set; }
123+
public PagingManager<SubtaskGridViewModel> PagingManager { get; set; }
124+
125+
98126
}
99127
}

TakeMyTime.WPF/Utility/PagingManager.cs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,16 @@ public IList<T> Page(int page)
3535
public IList<T> Data { get; set; }
3636
public int PageSize { get; private set; }
3737
public int CurrentPage { get; private set; }
38-
public int MaxPage { get => this.GetAllPages(); }
38+
public int MaxPage
39+
{
40+
get
41+
{
42+
int result = 1;
43+
var maxPage = this.GetAllPages();
44+
if (maxPage <= 0) return result;
45+
else return maxPage;
46+
}
47+
}
3948
public bool CanPageBack { get => this.CurrentPage > 1; }
4049
public bool CanPageForward { get => this.CurrentPage < MaxPage; }
4150
}

0 commit comments

Comments
 (0)