Skip to content

Commit 16aa981

Browse files
committed
Avalonia: Track Summaries
1 parent 587b6e5 commit 16aa981

File tree

3 files changed

+70
-7
lines changed

3 files changed

+70
-7
lines changed

VideoDuplicateFinder.gui/MVVM/Converters/NegateBoolConverter.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,10 @@ public class NegateBoolConverter : IValueConverter
1111

1212
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) => !(bool)value;
1313
}
14+
// This was copied from the windows project - Consider Sharing
15+
sealed class SizeToStringConverter : IValueConverter {
16+
public object Convert(object value, Type targetType, object parameter, CultureInfo culture) => DuplicateFinderEngine.Utils.BytesToString((long)value);
17+
18+
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) => throw new NotImplementedException();
19+
}
1420
}

VideoDuplicateFinder.gui/MainWindow.xaml

Lines changed: 40 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
</Window.DataContext>
1414
<Window.Resources>
1515
<mvvm:NegateBoolConverter x:Key="NegateBool" />
16+
<mvvm:SizeToStringConverter x:Key="SizeToString" />
1617
</Window.Resources>
1718
<Grid>
1819
<TabControl>
@@ -436,19 +437,51 @@
436437
</ListBox>
437438
</Grid>
438439

439-
<Grid Grid.Row="3">
440-
<StackPanel Orientation="Horizontal">
440+
<Grid Grid.Row="3" VerticalAlignment="Center" HorizontalAlignment="Stretch">
441+
<Grid.RowDefinitions>
442+
<RowDefinition Height="Auto" />
443+
<RowDefinition Height="Auto" />
444+
</Grid.RowDefinitions>
445+
<Grid.ColumnDefinitions>
446+
<ColumnDefinition Width="Auto" />
447+
<ColumnDefinition Width="Auto" />
448+
<ColumnDefinition Width="Auto" />
449+
<ColumnDefinition Width="Auto" />
450+
<ColumnDefinition Width="Auto" />
451+
<ColumnDefinition />
452+
</Grid.ColumnDefinitions>
453+
<StackPanel Grid.Row="0" Grid.Column="0" Grid.RowSpan="2" VerticalAlignment="Stretch" Grid.ColumnSpan="6" MaxHeight="100">
441454
<ProgressBar
455+
Height="30"
442456
Name="PbScanProgress"
443457
MinWidth="100"
444458
Maximum="{Binding ScanProgressMaxValue, Mode=OneWay}"
445459
Value="{Binding ScanProgressValue, Mode=OneWay}" />
446-
<TextBlock Margin="10,0,0,0" Text="{Binding TimeElapsed, Mode=OneWay, StringFormat=Elapsed time: \{0:hh\}:\{0:mm\}:\{0:ss\}}" />
447-
<Separator />
448-
<TextBlock Margin="10,0,0,0" Text="{Binding RemainingTime, Mode=OneWay, StringFormat=Remaining time: ~\{0:hh\}:\{0:mm\}:\{0:ss\}}" />
449-
<Separator />
450-
<TextBlock Margin="10,0,0,0" Text="{Binding ScanProgressText, Mode=OneWay}" />
451460
</StackPanel>
461+
<TextBlock Grid.Row="0" Grid.Column="0" Margin="0,0,0,0" Text="Dupes" />
462+
<TextBlock Grid.Row="1" Grid.Column="0" Margin="0,0,0,0" Text="{Binding TotalDuplicates, Mode=OneWay}" />
463+
<TextBlock Grid.Row="0" Grid.Column="1" Margin="10,0,0,0" Text="Groups" />
464+
<TextBlock Grid.Row="1" Grid.Column="1" Margin="10,0,0,0" Text="{Binding TotalGroups, Mode=OneWay}" />
465+
466+
<TextBlock Grid.Row="0" Grid.Column="2" Margin="10,0,0,0" Text="Size" />
467+
<TextBlock Grid.Row="1" Grid.Column="2" Margin="10,0,0,0" Text="{Binding TotalSize, Mode=OneWay, Converter={StaticResource SizeToString}}" />
468+
469+
<TextBlock Grid.Row="0" Grid.Column="3" Margin="10,0,0,0" Text="Elapsed" />
470+
<TextBlock Grid.Row="0" Grid.Column="4" Margin="10,0,0,0" Text="Remaining" />
471+
<TextBlock Grid.Row="1" Grid.Column="3" Margin="10,0,0,0" Text="{Binding TimeElapsed, Mode=OneWay, StringFormat=\{0:hh\}:\{0:mm\}:\{0:ss\}}" />
472+
<TextBlock Grid.Row="1" Grid.Column="4" Margin="10,0,0,0" Text="{Binding RemainingTime, Mode=OneWay, StringFormat=~\{0:hh\}:\{0:mm\}:\{0:ss\}}" />
473+
<TextBlock Grid.RowSpan="2" Grid.Row="0" Grid.Column="5" Margin="10,0,0,0" Text="{Binding ScanProgressText, Mode=OneWay}" TextWrapping="Wrap" />
474+
<Grid Grid.Row="0" Grid.Column="0" Grid.RowSpan="2">
475+
<Grid.RowDefinitions>
476+
<RowDefinition />
477+
<RowDefinition />
478+
</Grid.RowDefinitions>
479+
<Grid.ColumnDefinitions>
480+
<ColumnDefinition />
481+
<ColumnDefinition />
482+
<ColumnDefinition />
483+
</Grid.ColumnDefinitions>
484+
</Grid>
452485
</Grid>
453486
</Grid>
454487
</TabItem>

VideoDuplicateFinder.gui/MainWindowVM.cs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,25 @@ public int Thumbnails {
116116
get => _Thumbnails;
117117
set => this.RaiseAndSetIfChanged(ref _Thumbnails, value);
118118
}
119+
120+
int _TotalGroups;
121+
public int TotalGroups {
122+
get => _TotalGroups;
123+
set => this.RaiseAndSetIfChanged(ref _TotalGroups, value);
124+
}
125+
126+
int _TotalDuplicates;
127+
public int TotalDuplicates {
128+
get => _TotalDuplicates;
129+
set => this.RaiseAndSetIfChanged(ref _TotalDuplicates, value);
130+
}
131+
132+
long _TotalSize;
133+
public long TotalSize {
134+
get => _TotalSize;
135+
set => this.RaiseAndSetIfChanged(ref _TotalSize, value);
136+
}
137+
119138
public MainWindowVM() {
120139
var dir = new DirectoryInfo(Utils.ThumbnailDirectory);
121140
if (!dir.Exists)
@@ -234,6 +253,11 @@ private void Instance_LogItemAdded(object sender, EventArgs e) =>
234253
private void Scanner_ScanDone(object sender, EventArgs e) {
235254
Scanner.PopulateDuplicateThumbnails();
236255

256+
//Status bar information
257+
TotalGroups = Scanner.Duplicates.GroupBy(a => a.GroupId).Count();
258+
TotalSize = Scanner.Duplicates.Sum(a => a.SizeLong);
259+
TotalDuplicates = Scanner.Duplicates.Count;
260+
237261
var dupGroupHandled = new HashSet<Guid>();
238262
foreach (var itm in Scanner.Duplicates) {
239263
var dup = new DuplicateItemViewModel(itm);

0 commit comments

Comments
 (0)