Skip to content

Commit 9c90530

Browse files
committed
Add disappearing messages UI
Haven't tested yet
1 parent 8654ae2 commit 9c90530

File tree

4 files changed

+180
-3
lines changed

4 files changed

+180
-3
lines changed

Signal-Windows/Controls/Conversation.xaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,6 @@
101101
<Button.Flyout>
102102
<MenuFlyout>
103103
<MenuFlyoutItem x:Name="ConversationSettingsButton" Text="Conversation settings" Click="ConversationSettingsButton_Click"/>
104-
<MenuFlyoutItem Text="Disappearing messages" IsEnabled="False"/>
105104
<MenuFlyoutItem Text="All media" IsEnabled="False"/>
106105
<ToggleMenuFlyoutItem Text="Mute conversation" IsEnabled="False"/>
107106
<MenuFlyoutItem Text="Reset secure session" IsEnabled="False"/>

Signal-Windows/ViewModels/ConversationSettingsPageViewModel.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,15 @@ internal void ResetContactColor()
123123
FillBrush = Utils.GetBrushFromColor(Utils.CalculateDefaultColor(Contact.ThreadDisplayName));
124124
}
125125

126+
internal async Task SetDisappearingMessagesTime(TimeSpan timeSpan)
127+
{
128+
Contact.ExpiresInSeconds = (uint)timeSpan.TotalSeconds;
129+
await Task.Run(() =>
130+
{
131+
App.Handle.SaveAndDispatchSignalConversation(Contact, null);
132+
});
133+
}
134+
126135
internal void BackButton_Click(object sender, BackRequestedEventArgs e)
127136
{
128137
View.Frame.GoBack();

Signal-Windows/Views/ConversationSettingsPage.xaml

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
<RowDefinition Height="Auto"/>
3232
<RowDefinition Height="Auto"/>
3333
<RowDefinition Height="Auto"/>
34+
<RowDefinition Height="Auto"/>
3435
</Grid.RowDefinitions>
3536
<StackPanel Grid.Row="0" Margin="0,0,0,8" HorizontalAlignment="Left">
3637
<TextBlock Text="Display Name" Margin="0,0,0,4" FontSize="15"/>
@@ -47,6 +48,21 @@
4748
</ComboBox>
4849
</StackPanel>
4950
<StackPanel Grid.Row="3" Margin="0,8" HorizontalAlignment="Left">
51+
<TextBlock Text="Disappering messages" Margin="0,0,0,4"/>
52+
<RadioButton x:Name="DisappearingOffButton" Content="Off" Checked="DisappearingOffButton_Checked"/>
53+
<RadioButton x:Name="Disappearing5sButton" Content="5 seconds" Checked="Disappearing5sButton_Checked"/>
54+
<RadioButton x:Name="Disappearing10sButton" Content="10 seconds" Checked="Disappearing10sButton_Checked"/>
55+
<RadioButton x:Name="Disappearing30sButton" Content="30 seconds" Checked="Disappearing30sButton_Checked"/>
56+
<RadioButton x:Name="Disappearing1mButton" Content="1 minute" Checked="Disappearing1mButton_Checked"/>
57+
<RadioButton x:Name="Disappearing5mButton" Content="5 minutes" Checked="Disappearing5mButton_Checked"/>
58+
<RadioButton x:Name="Disappearing30mButton" Content="30 minutes" Checked="Disappearing30mButton_Checked"/>
59+
<RadioButton x:Name="Disappearing1hButton" Content="1 hour" Checked="Disappearing1hButton_Checked"/>
60+
<RadioButton x:Name="Disappearing6hButton" Content="6 hours" Checked="Disappearing6hButton_Checked"/>
61+
<RadioButton x:Name="Disappearing12hButton" Content="12 hours" Checked="Disappearing12hButton_Checked"/>
62+
<RadioButton x:Name="Disappearing1dButton" Content="1 day" Checked="Disappearing1dButton_Checked"/>
63+
<RadioButton x:Name="Disappearing1wButton" Content="1 week" Checked="Disappearing1wButton_Checked"/>
64+
</StackPanel>
65+
<StackPanel Grid.Row="4" Margin="0,8" HorizontalAlignment="Left">
5066
<TextBlock Text="Color" Margin="0,0,0,4"/>
5167
<Button x:Name="ResetButton" Content="Reset" Margin="0,8" Click="ResetButton_Click"/>
5268
<Grid>
@@ -80,8 +96,8 @@
8096
<Button x:Name="Color14" Background="{x:Bind Vm.Colors[14]}" Width="50" Height="50" Margin="4,4" Grid.Row="4" Grid.Column="2" Click="Color14_Click"/>
8197
</Grid>
8298
</StackPanel>
83-
<Button Grid.Row="4" Content="View safety number" IsEnabled="False" Margin="0,16"/>
84-
<Button x:Name="BlockButton" Grid.Row="5" Content="{x:Bind Vm.BlockedText, Mode=OneWay}" Margin="0,16" Background="#FFEF5350" MinWidth="75" MinHeight="32" Click="BlockButton_Click" />
99+
<Button Grid.Row="5" Content="View safety number" IsEnabled="False" Margin="0,16"/>
100+
<Button x:Name="BlockButton" Grid.Row="6" Content="{x:Bind Vm.BlockedText, Mode=OneWay}" Margin="0,16" Background="#FFEF5350" MinWidth="75" MinHeight="32" Click="BlockButton_Click" />
85101
</Grid>
86102
</ScrollViewer>
87103
</Grid>

Signal-Windows/Views/ConversationSettingsPage.xaml.cs

Lines changed: 153 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ namespace Signal_Windows.Views
2323
/// </summary>
2424
public sealed partial class ConversationSettingsPage : Page
2525
{
26+
private bool loading = true;
27+
2628
public ConversationSettingsPageViewModel Vm
2729
{
2830
get { return (ConversationSettingsPageViewModel)DataContext; }
@@ -36,9 +38,64 @@ public ConversationSettingsPage()
3638

3739
protected override void OnNavigatedTo(NavigationEventArgs e)
3840
{
41+
loading = true;
3942
base.OnNavigatedTo(e);
4043
Utils.EnableBackButton(Vm.BackButton_Click);
4144
Vm.OnNavigatedTo();
45+
SetSelectedDisappearingRadioButton(TimeSpan.FromSeconds(Vm.Contact.ExpiresInSeconds));
46+
loading = false;
47+
}
48+
49+
void SetSelectedDisappearingRadioButton(TimeSpan expiresIn)
50+
{
51+
if (expiresIn == TimeSpan.Zero)
52+
{
53+
DisappearingOffButton.IsChecked = true;
54+
}
55+
else if (expiresIn == TimeSpan.FromSeconds(5))
56+
{
57+
Disappearing5sButton.IsChecked = true;
58+
}
59+
else if (expiresIn == TimeSpan.FromSeconds(10))
60+
{
61+
Disappearing10sButton.IsChecked = true;
62+
}
63+
else if (expiresIn == TimeSpan.FromSeconds(30))
64+
{
65+
Disappearing30sButton.IsChecked = true;
66+
}
67+
else if (expiresIn == TimeSpan.FromMinutes(1))
68+
{
69+
Disappearing1mButton.IsChecked = true;
70+
}
71+
else if (expiresIn == TimeSpan.FromMinutes(5))
72+
{
73+
Disappearing5mButton.IsChecked = true;
74+
}
75+
else if (expiresIn == TimeSpan.FromMinutes(30))
76+
{
77+
Disappearing30mButton.IsChecked = true;
78+
}
79+
else if (expiresIn == TimeSpan.FromHours(1))
80+
{
81+
Disappearing1hButton.IsChecked = true;
82+
}
83+
else if (expiresIn == TimeSpan.FromHours(6))
84+
{
85+
Disappearing6hButton.IsChecked = true;
86+
}
87+
else if (expiresIn == TimeSpan.FromHours(12))
88+
{
89+
Disappearing12hButton.IsChecked = true;
90+
}
91+
else if (expiresIn == TimeSpan.FromDays(1))
92+
{
93+
Disappearing1dButton.IsChecked = true;
94+
}
95+
else if (expiresIn == TimeSpan.FromDays(7))
96+
{
97+
Disappearing1wButton.IsChecked = true;
98+
}
4299
}
43100

44101
protected override async void OnNavigatingFrom(NavigatingCancelEventArgs e)
@@ -167,5 +224,101 @@ private void BlockButton_Click(object sender, RoutedEventArgs e)
167224
{
168225
Vm.BlockButton_Click();
169226
}
227+
228+
private async void DisappearingOffButton_Checked(object sender, RoutedEventArgs e)
229+
{
230+
if (!loading)
231+
{
232+
await Vm.SetDisappearingMessagesTime(TimeSpan.Zero);
233+
}
234+
}
235+
236+
private async void Disappearing5sButton_Checked(object sender, RoutedEventArgs e)
237+
{
238+
if (!loading)
239+
{
240+
await Vm.SetDisappearingMessagesTime(TimeSpan.FromSeconds(5));
241+
}
242+
}
243+
244+
private async void Disappearing10sButton_Checked(object sender, RoutedEventArgs e)
245+
{
246+
if (!loading)
247+
{
248+
await Vm.SetDisappearingMessagesTime(TimeSpan.FromSeconds(10));
249+
}
250+
}
251+
252+
private async void Disappearing30sButton_Checked(object sender, RoutedEventArgs e)
253+
{
254+
if (!loading)
255+
{
256+
await Vm.SetDisappearingMessagesTime(TimeSpan.FromSeconds(30));
257+
}
258+
}
259+
260+
private async void Disappearing1mButton_Checked(object sender, RoutedEventArgs e)
261+
{
262+
if (!loading)
263+
{
264+
await Vm.SetDisappearingMessagesTime(TimeSpan.FromMinutes(1));
265+
}
266+
}
267+
268+
private async void Disappearing5mButton_Checked(object sender, RoutedEventArgs e)
269+
{
270+
if (!loading)
271+
{
272+
await Vm.SetDisappearingMessagesTime(TimeSpan.FromMinutes(5));
273+
}
274+
}
275+
276+
private async void Disappearing30mButton_Checked(object sender, RoutedEventArgs e)
277+
{
278+
if (!loading)
279+
{
280+
await Vm.SetDisappearingMessagesTime(TimeSpan.FromMinutes(30));
281+
}
282+
}
283+
284+
private async void Disappearing1hButton_Checked(object sender, RoutedEventArgs e)
285+
{
286+
if (!loading)
287+
{
288+
await Vm.SetDisappearingMessagesTime(TimeSpan.FromHours(1));
289+
}
290+
}
291+
292+
private async void Disappearing6hButton_Checked(object sender, RoutedEventArgs e)
293+
{
294+
if (!loading)
295+
{
296+
await Vm.SetDisappearingMessagesTime(TimeSpan.FromHours(6));
297+
}
298+
}
299+
300+
private async void Disappearing12hButton_Checked(object sender, RoutedEventArgs e)
301+
{
302+
if (!loading)
303+
{
304+
await Vm.SetDisappearingMessagesTime(TimeSpan.FromHours(12));
305+
}
306+
}
307+
308+
private async void Disappearing1dButton_Checked(object sender, RoutedEventArgs e)
309+
{
310+
if (!loading)
311+
{
312+
await Vm.SetDisappearingMessagesTime(TimeSpan.FromDays(1));
313+
}
314+
}
315+
316+
private async void Disappearing1wButton_Checked(object sender, RoutedEventArgs e)
317+
{
318+
if (!loading)
319+
{
320+
await Vm.SetDisappearingMessagesTime(TimeSpan.FromDays(7));
321+
}
322+
}
170323
}
171324
}

0 commit comments

Comments
 (0)