Fix RadioBrowser crashes if no internet connection
This commit is contained in:
parent
7fdf349c28
commit
67315f90b0
@ -117,7 +117,7 @@
|
|||||||
<TextBlock x:Name="SnapcastText" Text="{x:Static properties:Resources.StartSnapcast}" Margin="5, 0, 0, 0"/>
|
<TextBlock x:Name="SnapcastText" Text="{x:Static properties:Resources.StartSnapcast}" Margin="5, 0, 0, 0"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</Button>
|
</Button>
|
||||||
<Button x:Name="Radio" Padding="5, 2" HorizontalAlignment="Left" Click="Radios_Clicked" Margin="5,0,10,0" Background="{DynamicResource {x:Static SystemColors.ControlBrushKey}}" FocusVisualStyle="{x:Null}">
|
<Button x:Name="Radio" Padding="5, 2" HorizontalAlignment="Left" Click="Radios_Clicked" Margin="5,0,10,0" Background="{DynamicResource {x:Static SystemColors.ControlBrushKey}}" FocusVisualStyle="{x:Null}" IsEnabled="False">
|
||||||
<StackPanel Orientation="Horizontal">
|
<StackPanel Orientation="Horizontal">
|
||||||
<emoji:TextBlock Text="📻" Padding="0,0,0,2"/>
|
<emoji:TextBlock Text="📻" Padding="0,0,0,2"/>
|
||||||
<TextBlock Text="{x:Static properties:Resources.Radios}" Margin="5, 0, 0, 0"/>
|
<TextBlock Text="{x:Static properties:Resources.Radios}" Margin="5, 0, 0, 0"/>
|
||||||
|
@ -188,6 +188,11 @@ namespace unison
|
|||||||
SnapcastText.Text = unison.Resources.Resources.StartSnapcast;
|
SnapcastText.Text = unison.Resources.Resources.StartSnapcast;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void OnRadioBrowserConnected()
|
||||||
|
{
|
||||||
|
Radio.IsEnabled = true;
|
||||||
|
}
|
||||||
|
|
||||||
public void UpdateButton(ref Border border, bool b)
|
public void UpdateButton(ref Border border, bool b)
|
||||||
{
|
{
|
||||||
border.Style = b ? (Style)Resources["SelectedButton"] : (Style)Resources["UnselectedButton"];
|
border.Style = b ? (Style)Resources["SelectedButton"] : (Style)Resources["UnselectedButton"];
|
||||||
|
@ -59,8 +59,21 @@ namespace unison
|
|||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
|
|
||||||
_radioBrowser = new RadioBrowserClient();
|
try
|
||||||
Initialize();
|
{
|
||||||
|
_radioBrowser = new RadioBrowserClient();
|
||||||
|
Initialize();
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
Debug.WriteLine("Exception while connecting to RadioBrowser: " + e.Message);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Application.Current.Dispatcher.Invoke(() =>
|
||||||
|
{
|
||||||
|
MainWindow MainWin = (MainWindow)Application.Current.MainWindow;
|
||||||
|
MainWin.OnRadioBrowserConnected();
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public async void Initialize()
|
public async void Initialize()
|
||||||
@ -85,35 +98,42 @@ namespace unison
|
|||||||
|
|
||||||
public async Task SearchAdvanced(string name, string country, string tags)
|
public async Task SearchAdvanced(string name, string country, string tags)
|
||||||
{
|
{
|
||||||
SearchStatus.Text = unison.Resources.Resources.Radio_Loading;
|
try
|
||||||
|
|
||||||
List<StationInfo> advancedSearch = await _radioBrowser.Search.AdvancedAsync(new AdvancedSearchOptions
|
|
||||||
{
|
{
|
||||||
Name = name,
|
SearchStatus.Text = unison.Resources.Resources.Radio_Loading;
|
||||||
Country = country,
|
|
||||||
TagList = tags
|
|
||||||
});
|
|
||||||
|
|
||||||
RadioListGrid.Items.Clear();
|
List<StationInfo> advancedSearch = await _radioBrowser.Search.AdvancedAsync(new AdvancedSearchOptions
|
||||||
if (advancedSearch.Count > 0)
|
|
||||||
{
|
|
||||||
SearchStatus.Text = "";
|
|
||||||
foreach (StationInfo station in advancedSearch)
|
|
||||||
{
|
{
|
||||||
RadioListGrid.Items.Add(new StationListItem
|
Name = name,
|
||||||
|
Country = country,
|
||||||
|
TagList = tags
|
||||||
|
});
|
||||||
|
|
||||||
|
RadioListGrid.Items.Clear();
|
||||||
|
if (advancedSearch.Count > 0)
|
||||||
|
{
|
||||||
|
SearchStatus.Text = "";
|
||||||
|
foreach (StationInfo station in advancedSearch)
|
||||||
{
|
{
|
||||||
Name = CleanString(station.Name),
|
RadioListGrid.Items.Add(new StationListItem
|
||||||
Country = station.CountryCode,
|
{
|
||||||
Codec = station.Codec,
|
Name = CleanString(station.Name),
|
||||||
Bitrate = station.Bitrate,
|
Country = station.CountryCode,
|
||||||
Url = station.Url,
|
Codec = station.Codec,
|
||||||
Tags = string.Join(", ", station.Tags)
|
Bitrate = station.Bitrate,
|
||||||
});
|
Url = station.Url,
|
||||||
|
Tags = string.Join(", ", station.Tags)
|
||||||
|
});
|
||||||
|
}
|
||||||
|
FitToContent();
|
||||||
}
|
}
|
||||||
FitToContent();
|
else
|
||||||
|
SearchStatus.Text = unison.Resources.Resources.Radio_NotFound;
|
||||||
|
}
|
||||||
|
catch (Exception except)
|
||||||
|
{
|
||||||
|
Debug.WriteLine("Error on RadioBrowser search advanced: " + except.Message);
|
||||||
}
|
}
|
||||||
else
|
|
||||||
SearchStatus.Text = unison.Resources.Resources.Radio_NotFound;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void FitToContent()
|
private void FitToContent()
|
||||||
@ -148,8 +168,15 @@ namespace unison
|
|||||||
|
|
||||||
private async void Search_Clicked(object sender, RoutedEventArgs e)
|
private async void Search_Clicked(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
CountryListItem a = (CountryListItem)CountryList.SelectedItem;
|
try
|
||||||
await SearchAdvanced(NameSearch.Text, a?.Name, TagSearch.Text);
|
{
|
||||||
|
CountryListItem a = (CountryListItem)CountryList.SelectedItem;
|
||||||
|
await SearchAdvanced(NameSearch.Text, a?.Name, TagSearch.Text);
|
||||||
|
}
|
||||||
|
catch (Exception except)
|
||||||
|
{
|
||||||
|
Debug.WriteLine("Error on RadioBrowser search: " + except.Message);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Reset_Clicked(object sender, RoutedEventArgs e)
|
private void Reset_Clicked(object sender, RoutedEventArgs e)
|
||||||
|
Loading…
Reference in New Issue
Block a user