mirror of
https://dev.azure.com/TeilRad/sharee.bike%20App/_git/Code
synced 2025-06-22 13:57:28 +02:00
Version 3.0.347
This commit is contained in:
parent
a018f21fea
commit
7f49fb0ac5
41 changed files with 292 additions and 187 deletions
|
@ -1,10 +1,13 @@
|
|||
using TINK.Model;
|
||||
using System.ComponentModel;
|
||||
using TINK.Model;
|
||||
|
||||
namespace TINK.ViewModel.Settings
|
||||
{
|
||||
/// <summary>Holds filter item incluting full state (avaialble, activated, name, ...). </summary>
|
||||
public class FilterItemMutable
|
||||
public class FilterItemMutable : INotifyPropertyChanged
|
||||
{
|
||||
public event PropertyChangedEventHandler PropertyChanged;
|
||||
|
||||
/// <summary> Switch value</summary>
|
||||
private bool m_bIsActivatedSwitch;
|
||||
|
||||
|
@ -42,6 +45,12 @@ namespace TINK.ViewModel.Settings
|
|||
|
||||
set
|
||||
{
|
||||
if (m_bIsActivatedSwitch == value)
|
||||
{
|
||||
// Nothing to do.
|
||||
return;
|
||||
}
|
||||
|
||||
m_bIsActivatedSwitch = value;
|
||||
if (!IsEnabled)
|
||||
{
|
||||
|
@ -50,6 +59,7 @@ namespace TINK.ViewModel.Settings
|
|||
}
|
||||
|
||||
State = m_bIsActivatedSwitch ? FilterState.On : FilterState.Off;
|
||||
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(IsActivated)));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -58,5 +68,6 @@ namespace TINK.ViewModel.Settings
|
|||
|
||||
/// <summary> State of the filter.</summary>
|
||||
public FilterState State { get; private set; }
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
using System.Collections.Generic;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.ComponentModel;
|
||||
using System.Linq;
|
||||
using TINK.Model;
|
||||
using TINK.Model.Connector;
|
||||
|
@ -9,8 +10,10 @@ namespace TINK.ViewModel.Settings
|
|||
{
|
||||
/// <summary> Holds the filters to display..</summary>
|
||||
/// <remarks> Former name: FilterCollectionMutable.</remarks>
|
||||
public class SettingsBikeFilterViewModel : ObservableCollection<FilterItemMutable>
|
||||
public class SettingsBikeFilterViewModel : ObservableCollection<FilterItemMutable>, INotifyPropertyChanged
|
||||
{
|
||||
public new event PropertyChangedEventHandler PropertyChanged;
|
||||
|
||||
/// <summary> Constructs a filter collection object.</summary>
|
||||
/// <param name="filterSettings">All available filters.</param>
|
||||
/// <param name="filterGroupUser">Filters which apply to logged in user.</param>
|
||||
|
@ -22,28 +25,35 @@ namespace TINK.ViewModel.Settings
|
|||
{
|
||||
if (filter.Key == FilterHelper.CARGOBIKE)
|
||||
{
|
||||
Add(new FilterItemMutable(
|
||||
var cargo = new FilterItemMutable(
|
||||
filter.Key,
|
||||
filter.Value,
|
||||
(filterGroupUser != null && filterGroupUser.Count() > 0) ? filterGroupUser.Contains(filter.Key) : true,
|
||||
AppResources.MarkingCargoBike));
|
||||
AppResources.MarkingCargoBike);
|
||||
Add(cargo);
|
||||
|
||||
cargo.PropertyChanged += (sender, ev) => PropertyChanged?.Invoke(sender, ev);
|
||||
continue;
|
||||
}
|
||||
if (filter.Key == FilterHelper.CITYBIKE)
|
||||
{
|
||||
Add(new FilterItemMutable(
|
||||
var city = new FilterItemMutable(
|
||||
filter.Key,
|
||||
filter.Value,
|
||||
(filterGroupUser != null && filterGroupUser.Count() > 0) ? filterGroupUser.Contains(filter.Key) : true,
|
||||
AppResources.MarkingCityBike));
|
||||
AppResources.MarkingCityBike);
|
||||
Add(city);
|
||||
city.PropertyChanged += (sender, ev) => PropertyChanged?.Invoke(sender, ev);
|
||||
continue;
|
||||
}
|
||||
|
||||
Add(new FilterItemMutable(
|
||||
var item = new FilterItemMutable(
|
||||
filter.Key,
|
||||
filter.Value,
|
||||
filterGroupUser != null ? filterGroupUser.Contains(filter.Key) : true,
|
||||
filter.Key));
|
||||
filter.Key);
|
||||
Add(item);
|
||||
item.PropertyChanged += (sender, ev) => PropertyChanged?.Invoke(sender, ev);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -114,6 +114,30 @@ namespace TINK.ViewModel
|
|||
TinkApp.FilterGroupSetting,
|
||||
TinkApp.ActiveUser.IsLoggedIn ? TinkApp.ActiveUser.Group : null);
|
||||
|
||||
GroupFilter.PropertyChanged += (s, e) =>
|
||||
{
|
||||
// Serialize on value changed. On iOS OnDisappearing might not be invoked (when app is directly closed before leaving settings page).
|
||||
try
|
||||
{
|
||||
var filterGroup = GroupFilter.ToDictionary(x => x.Key, x => x.State);
|
||||
TinkApp.FilterGroupSetting = new GroupFilterSettings(filterGroup.Count > 0 ? filterGroup : null);
|
||||
|
||||
// Update map page filter.
|
||||
// Reasons for which map page filter has to be updated:
|
||||
// - user activated/ deactivated a group (cargo/ city bikes)
|
||||
TinkApp.GroupFilterMapPage =
|
||||
GroupFilterMapPageHelper.CreateUpdated(
|
||||
TinkApp.GroupFilterMapPage,
|
||||
TinkApp.ActiveUser.DoFilter(TinkApp.FilterGroupSetting.DoFilter()));
|
||||
|
||||
TinkApp.Save();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.ForContext<SettingsPageViewModel>().Error(ex, "Serializing startup page failed.");
|
||||
}
|
||||
};
|
||||
|
||||
m_oViewUpdateManager = new IdlePollingUpdateTaskManager();
|
||||
|
||||
Polling = new PollingViewModel(TinkApp.Polling);
|
||||
|
@ -166,6 +190,22 @@ namespace TINK.ViewModel
|
|||
{ ViewTypes.FindBikePage.ToString(), AppResources.MarkingFindBike },
|
||||
},
|
||||
tinkApp.StartupSettings.StartupPage.ToString());
|
||||
|
||||
StartupSettings.PropertyChanged += (s, e) =>
|
||||
{
|
||||
// Serialize on value changed. On iOS OnDisappearing might not be invoked (when app is directly closed before leaving settings page).
|
||||
try
|
||||
{
|
||||
TinkApp.StartupSettings.StartupPage = Enum.TryParse(StartupSettings.Active, out ViewTypes startupPage)
|
||||
? startupPage
|
||||
: Model.Settings.StartupSettings.DefaultStartupPage;
|
||||
|
||||
TinkApp.Save();
|
||||
} catch (Exception ex)
|
||||
{
|
||||
Log.ForContext<SettingsPageViewModel>().Error(ex, "Serializing startup page failed.");
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
@ -234,10 +274,7 @@ namespace TINK.ViewModel
|
|||
/// <summary>
|
||||
/// Gets the value of device identifier (for debugging purposes).
|
||||
/// </summary>
|
||||
public string DeviceIdentifier
|
||||
{
|
||||
get { return TinkApp.SmartDevice.Identifier; }
|
||||
}
|
||||
public string DeviceIdentifier => TinkApp.SmartDevice.Identifier;
|
||||
|
||||
/// <summary>
|
||||
/// Invoked when page is shutdown.
|
||||
|
@ -258,22 +295,6 @@ namespace TINK.ViewModel
|
|||
|
||||
TinkApp.ExpiresAfter = TimeSpan.FromSeconds(ExpiresAfterTotalSeconds);
|
||||
|
||||
var filterGroup = GroupFilter.ToDictionary(x => x.Key, x => x.State);
|
||||
TinkApp.FilterGroupSetting = new GroupFilterSettings(filterGroup.Count > 0 ? filterGroup : null);
|
||||
|
||||
// Update map page filter.
|
||||
// Reasons for which map page filter has to be updated:
|
||||
// - user activated/ deactivated a group (TINKCorpi/ TINKSms/ Konrad)
|
||||
// - user logged off
|
||||
TinkApp.GroupFilterMapPage =
|
||||
GroupFilterMapPageHelper.CreateUpdated(
|
||||
TinkApp.GroupFilterMapPage,
|
||||
TinkApp.ActiveUser.DoFilter(TinkApp.FilterGroupSetting.DoFilter()));
|
||||
|
||||
TinkApp.StartupSettings.StartupPage = Enum.TryParse(StartupSettings.Active, out ViewTypes startupPage) ? startupPage : Model.Settings.StartupSettings.DefaultStartupPage;
|
||||
|
||||
TinkApp.CenterMapToCurrentLocation = CenterMapToCurrentLocation;
|
||||
|
||||
if (IsLogToExternalFolderVisible)
|
||||
{
|
||||
// If no external folder is available do not update model value.
|
||||
|
@ -356,7 +377,25 @@ namespace TINK.ViewModel
|
|||
}
|
||||
}
|
||||
|
||||
public bool CenterMapToCurrentLocation { get; set; }
|
||||
bool _CenterMapToCurrentLocation = true;
|
||||
public bool CenterMapToCurrentLocation
|
||||
{
|
||||
get => _CenterMapToCurrentLocation;
|
||||
set
|
||||
{
|
||||
if (value == _CenterMapToCurrentLocation)
|
||||
{
|
||||
// Nothing to do.
|
||||
return;
|
||||
}
|
||||
|
||||
_CenterMapToCurrentLocation = value;
|
||||
|
||||
// Serialize on value changed. On iOS OnDisappearing might not be invoked (when app is directly closed before leaving settings page).
|
||||
TinkApp.CenterMapToCurrentLocation = CenterMapToCurrentLocation;
|
||||
TinkApp.Save();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary> Holds either
|
||||
/// - a value indicating whether to use external folder (e.g. SD card)/ or internal folder for storing log-files or
|
||||
|
@ -408,8 +447,6 @@ namespace TINK.ViewModel
|
|||
public string ExpiresAfterTotalSecondsText
|
||||
{
|
||||
get => expiresAfterTotalSeconds.ToString("0");
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue