Skip to content
This repository was archived by the owner on Apr 7, 2020. It is now read-only.

Commit b4376fa

Browse files
Merge pull request #392 from Integreat/Feature-#388
Feature #388
2 parents 3db21b5 + 7c48c1f commit b4376fa

30 files changed

Lines changed: 642 additions & 536 deletions

Integreat/Integreat.Droid/Integreat.Droid.csproj

Lines changed: 95 additions & 126 deletions
Large diffs are not rendered by default.
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<?xml version="1.0" encoding="utf-8"?>
2-
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="tuerantuer.app.integreat" android:installLocation="auto" android:versionCode="55601" android:versionName="2.2.3">
2+
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="tuerantuer.app.integreat" android:installLocation="auto" android:versionCode="55604" android:versionName="2.2.4">
33
<uses-sdk android:minSdkVersion="15" android:targetSdkVersion="26" />
44
<application android:label="Integreat" android:theme="@style/MyTheme" android:icon="@mipmap/icon" android:largeHeap="true" />
55
</manifest>

Integreat/Integreat.Droid/Resources/values/styles.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,11 @@
88
<item name="android:windowBackground">@color/window_background</item>
99
<item name="drawerArrowStyle">@style/DrawerArrowStyle</item>
1010
<item name="windowActionModeOverlay">true</item>
11+
<item name="android:actionOverflowButtonStyle">@style/MyTheme.OverFlow</item>
12+
</style>
13+
14+
<style name="MyTheme.OverFlow" parent="@style/Widget.AppCompat.ActionButton.Overflow">
15+
<item name="android:tint">@android:color/black</item>
1116
</style>
1217

1318
<style name="DrawerArrowStyle" parent="Widget.AppCompat.DrawerArrowToggle">

Integreat/Integreat.Droid/packages.config

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,18 +10,18 @@
1010
<package id="Microsoft.Win32.Primitives" version="4.3.0" targetFramework="monoandroid71" />
1111
<package id="modernhttpclient" version="2.4.2" targetFramework="monoandroid71" />
1212
<package id="NETStandard.Library" version="2.0.1" targetFramework="monoandroid71" />
13-
<package id="Newtonsoft.Json" version="10.0.3" targetFramework="monoandroid71" />
13+
<package id="Newtonsoft.Json" version="10.0.3" targetFramework="monoandroid80" />
1414
<package id="Plugin.CurrentActivity" version="1.0.1" targetFramework="monoandroid80" />
1515
<package id="Plugin.Share" version="7.1.1" targetFramework="monoandroid80" />
16-
<package id="Refit" version="4.0.1" targetFramework="monoandroid71" />
16+
<package id="Refit" version="4.0.1" targetFramework="monoandroid80" />
1717
<package id="SonarAnalyzer.CSharp" version="6.8.1.4648" targetFramework="monoandroid80" developmentDependency="true" />
1818
<package id="System.AppContext" version="4.3.0" targetFramework="monoandroid71" />
1919
<package id="System.Buffers" version="4.4.0" targetFramework="monoandroid71" />
2020
<package id="System.Collections" version="4.3.0" targetFramework="monoandroid71" />
2121
<package id="System.Collections.Concurrent" version="4.3.0" targetFramework="monoandroid71" />
2222
<package id="System.ComponentModel" version="4.3.0" targetFramework="monoandroid71" />
2323
<package id="System.ComponentModel.TypeConverter" version="4.3.0" targetFramework="monoandroid71" />
24-
<package id="System.Console" version="4.3.0" targetFramework="monoandroid71" />
24+
<package id="System.Console" version="4.3.1" targetFramework="monoandroid80" />
2525
<package id="System.Diagnostics.Debug" version="4.3.0" targetFramework="monoandroid71" />
2626
<package id="System.Diagnostics.Tools" version="4.3.0" targetFramework="monoandroid71" />
2727
<package id="System.Diagnostics.Tracing" version="4.3.0" targetFramework="monoandroid71" />
@@ -65,11 +65,11 @@
6565
<package id="System.Xml.ReaderWriter" version="4.3.1" targetFramework="monoandroid80" />
6666
<package id="System.Xml.XDocument" version="4.3.0" targetFramework="monoandroid71" />
6767
<package id="System.Xml.XmlDocument" version="4.3.0" targetFramework="monoandroid71" />
68-
<package id="Xam.Plugin.Connectivity" version="3.0.3" targetFramework="monoandroid71" />
68+
<package id="Xam.Plugin.Connectivity" version="3.0.3" targetFramework="monoandroid80" />
6969
<package id="Xam.Plugins.Settings" version="3.1.1" targetFramework="monoandroid71" />
7070
<package id="Xamarin.Android.Arch.Core.Common" version="1.0.0" targetFramework="monoandroid80" />
71-
<package id="Xamarin.Android.Arch.Lifecycle.Common" version="1.0.1" targetFramework="monoandroid80" />
72-
<package id="Xamarin.Android.Arch.Lifecycle.Runtime" version="1.0.0" targetFramework="monoandroid80" />
71+
<package id="Xamarin.Android.Arch.Lifecycle.Common" version="26.1.0" targetFramework="monoandroid80" />
72+
<package id="Xamarin.Android.Arch.Lifecycle.Runtime" version="26.1.0" targetFramework="monoandroid80" />
7373
<package id="Xamarin.Android.Support.Animated.Vector.Drawable" version="26.1.0.1" targetFramework="monoandroid80" />
7474
<package id="Xamarin.Android.Support.Annotations" version="26.1.0.1" targetFramework="monoandroid80" />
7575
<package id="Xamarin.Android.Support.Compat" version="26.1.0.1" targetFramework="monoandroid80" />
@@ -93,7 +93,7 @@
9393
<package id="Xamarin.Firebase.AppIndexing" version="60.1142.0" targetFramework="monoandroid80" />
9494
<package id="Xamarin.Firebase.Common" version="60.1142.0" targetFramework="monoandroid80" />
9595
<package id="Xamarin.Firebase.Iid" version="60.1142.0" targetFramework="monoandroid80" />
96-
<package id="Xamarin.Forms" version="2.5.0.122203" targetFramework="monoandroid80" />
96+
<package id="Xamarin.Forms" version="2.5.1.444934" targetFramework="monoandroid80" />
9797
<package id="Xamarin.GooglePlayServices.Ads" version="60.1142.0" targetFramework="monoandroid80" />
9898
<package id="Xamarin.GooglePlayServices.Ads.Lite" version="60.1142.0" targetFramework="monoandroid80" />
9999
<package id="Xamarin.GooglePlayServices.Analytics" version="60.1142.0" targetFramework="monoandroid80" />

Integreat/Integreat.Localization/AppResources.Designer.cs

Lines changed: 12 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Integreat/Integreat.Localization/AppResources.de.resx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -279,4 +279,7 @@
279279
<data name="DisclaimerNotAvailable" xml:space="preserve">
280280
<value>Der Haftungsausschluss ist in dieser Sprache leider nicht verfügbar, versuche bitte eine andere Sprache.</value>
281281
</data>
282+
<data name="ChangeLocation" xml:space="preserve">
283+
<value>Standort ändern</value>
284+
</data>
282285
</root>

Integreat/Integreat.Localization/AppResources.resx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -279,4 +279,7 @@
279279
<data name="DisclaimerNotAvailable" xml:space="preserve">
280280
<value>The disclaimer is not available in this language, please try another.</value>
281281
</data>
282+
<data name="ChangeLocation" xml:space="preserve">
283+
<value>Change location</value>
284+
</data>
282285
</root>

Integreat/Integreat.Shared/ApplicationObjects/AppSetup.cs

Lines changed: 11 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,7 @@ namespace Integreat.ApplicationObject
2121
/// </summary>
2222
public class AppSetup
2323
{
24-
//Initializes Application instance that represents a cross-platform mobile application.
2524
private readonly Application _application;
26-
//Inizializes a ContainerBuilder which is needed to create instances of IContainer.
2725
private readonly ContainerBuilder _cb;
2826

2927
//
@@ -78,59 +76,33 @@ private static void RegisterViews(IViewFactory viewFactory)
7876
private void ConfigureApplication(IComponentContext container)
7977
{
8078
var viewFactory = container.Resolve<IViewFactory>();
81-
82-
#pragma warning disable S125 // Sections of code should not be "commented out"
83-
// THE CODE BELOW IS FOR DEBUGGING POURPOSE
84-
//------------------------------------------------------------------------------
85-
86-
// check whether to start with MainPageViewModel or LocationsViewModel
87-
//var locationId = Preferences.Location();
88-
89-
// clear language selection for testing
90-
//Preferences.SetLocation(new Location() { Id = -1 });
91-
92-
// clear cache
93-
// Cache.ClearCachedResources();
94-
/*
95-
if (locationId >= 0 && !Preferences.Language(locationId).IsNullOrEmpty())
96-
{
97-
mainPage = viewFactory.Resolve<MainPageViewModel>();
98-
}
99-
else
100-
{*/
101-
102-
// mainPage = new NavigationPage(viewFactory.Resolve<LocationsViewModel>()) {BarTextColor = (Color)Application.Current.Resources["secondaryColor"] };
103-
//--------------------------------------------------------------------------------
104-
#pragma warning restore S125 // Sections of code should not be "commented out"
105-
10679
// reset HTML raw view
10780
Preferences.SetHtmlRawView(false);
108-
109-
var mainPage = new MainNavigationPage(viewFactory.Resolve<ContentContainerViewModel>()) { BarTextColor = (Color)Application.Current.Resources["TextColor"], BackgroundColor = (Color)Application.Current.Resources["HighlightColor"] };
110-
111-
#pragma warning disable S125 // Sections of code should not be "commented out"
112-
//--------------------------------------------------------------------------------
113-
114-
// mainPage = new NavigationPage(viewFactory.Resolve<ContentContainerViewModel>());
115-
// }
116-
#pragma warning restore S125 // Sections of code should not be "commented out"
117-
118-
_application.MainPage = mainPage;
81+
82+
_application.MainPage = GetMainPage(viewFactory);
11983

12084
if (Device.RuntimePlatform == Device.iOS)
12185
{
12286
SetStatusBarAndAddToMainPage();
12387
}
12488
}
12589

90+
private static Page GetMainPage(IViewFactory viewFactory)
91+
{
92+
#if __ANDROID__
93+
return new NavigationPage(viewFactory.Resolve<ContentContainerViewModel>());
94+
#endif
95+
return viewFactory.Resolve<ContentContainerViewModel>();
96+
}
97+
12698
private void SetStatusBarAndAddToMainPage()
12799
{
128100
StatusBarEffect.SetBackgroundColor((Color)_application.Resources["StatusBarColor"]);
129101
//add effect to mainpage
130102
_application.MainPage.Effects.Add(new StatusBarEffect());
131103
}
132104

133-
protected virtual void ConfigureContainer(ContainerBuilder cb)
105+
private static void ConfigureContainer(ContainerBuilder cb)
134106
{
135107
// service registration
136108
cb.RegisterType<DialogService>().As<IDialogProvider>().SingleInstance();

Integreat/Integreat.Shared/ApplicationObjects/IntegreatModule.cs

Lines changed: 54 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -24,96 +24,89 @@
2424

2525
namespace Integreat.Shared.ViewFactory
2626
{
27+
/// <inheritdoc />
2728
/// <summary>
2829
/// In the Integreat module we fill the IoC container and create necessary services
2930
/// </summary>
30-
[SecurityCritical]
3131
public class IntegreatModule : Module
3232
{
3333
[SecurityCritical]
34-
public IntegreatModule()
34+
protected override void Load(ContainerBuilder builder)
3535
{
36+
RegisterViewModels(builder);
37+
RegisterMainPages(builder);
38+
RegisterNewsAndExtras(builder);
39+
RegisterGeneralPageTypes(builder);
40+
RegisterPageResolver(builder);
3641
}
3742

38-
[SecurityCritical]
39-
protected override void Load(ContainerBuilder builder)
43+
private static void RegisterPageResolver(ContainerBuilder builder)
44+
{
45+
builder.RegisterInstance<Func<Page>>(Instance);
46+
builder.RegisterInstance(CreateDataLoadService(HttpClientFactory.GetHttpClient(new Uri(Constants.IntegreatReleaseUrl))));
47+
builder.RegisterType<DataLoaderProvider>();
48+
builder.RegisterType<LocationsDataLoader>();
49+
builder.RegisterType<LanguagesDataLoader>();
50+
builder.RegisterType<DisclaimerDataLoader>();
51+
builder.RegisterType<EventPagesDataLoader>();
52+
builder.Register(_ => new BackgroundDownloader(HttpClientFactory.GetHttpClient(new Uri(Constants.IntegreatReleaseUrl)))).AsImplementedInterfaces().SingleInstance();
53+
builder.RegisterType<PagesDataLoader>();
54+
builder.Register(_ => new SprungbrettParser(HttpClientFactory.GetHttpClient(new Uri(Constants.IntegreatReleaseUrl)))).AsImplementedInterfaces().SingleInstance();
55+
}
56+
57+
private static void RegisterGeneralPageTypes(ContainerBuilder builder)
58+
{
59+
builder.RegisterType<GeneralWebViewPage>();
60+
builder.RegisterType<PdfWebViewPage>();
61+
builder.RegisterType<ImageViewPage>();
62+
}
63+
64+
private static void RegisterNewsAndExtras(ContainerBuilder builder)
65+
{
66+
builder.RegisterType<EventsSingleItemDetailViewModel>();
67+
builder.RegisterType<JobOffersPage>();
68+
builder.RegisterType<SprungbrettViewModel>();
69+
}
70+
71+
private static void RegisterMainPages(ContainerBuilder builder)
4072
{
41-
//
42-
// VIEW MODELS
43-
//
73+
builder.RegisterType<LanguagesPage>();
74+
builder.RegisterType<LocationsPage>();
75+
builder.RegisterType<SearchListPage>();
76+
builder.RegisterType<ContentContainerPage>();
77+
builder.RegisterType<MainContentPage>();
78+
builder.RegisterType<ExtrasContentPage>();
79+
builder.RegisterType<EventsContentPage>();
80+
81+
builder.RegisterType<MainTwoLevelPage>();
82+
83+
builder.RegisterType<SettingsPage>();
84+
}
4485

86+
private static void RegisterViewModels(ContainerBuilder builder)
87+
{
4588
builder.RegisterType<PageViewModel>();
4689
builder.RegisterType<EventPageViewModel>();
4790

48-
4991
builder.RegisterType<LocationsViewModel>();
5092
builder.RegisterType<LanguagesViewModel>(); // can have multiple instances
5193

52-
5394
builder.RegisterType<SearchViewModel>();
54-
// redesign
95+
5596
builder.RegisterType<ContentContainerViewModel>();
5697
builder.RegisterType<MainContentPageViewModel>();
5798
builder.RegisterType<ExtrasContentPageViewModel>();
5899
builder.RegisterType<EventsContentPageViewModel>();
59100

60-
// main
61101
builder.RegisterType<MainTwoLevelViewModel>();
62102

63-
// general
64103
builder.RegisterType<GeneralWebViewPageViewModel>();
65104
builder.RegisterType<PdfWebViewPageViewModel>();
66105
builder.RegisterType<ImagePageViewModel>();
67106

68-
// settings
69107
builder.RegisterType<SettingsPageViewModel>();
70-
71-
//
72-
// PAGES
73-
//
74-
75-
// register views
76-
builder.RegisterType<LanguagesPage>();
77-
builder.RegisterType<LocationsPage>();
78-
builder.RegisterType<SearchListPage>();
79-
// redesign
80-
builder.RegisterType<ContentContainerPage>();
81-
builder.RegisterType<MainContentPage>();
82-
builder.RegisterType<ExtrasContentPage>();
83-
builder.RegisterType<EventsContentPage>();
84-
85-
// main
86-
builder.RegisterType<MainTwoLevelPage>();
87-
88-
// events
89-
builder.RegisterType<EventsSingleItemDetailViewModel>();
90-
91-
// extras
92-
builder.RegisterType<JobOffersPage>();
93-
builder.RegisterType<SprungbrettViewModel>();
94-
95-
// general
96-
builder.RegisterType<GeneralWebViewPage>();
97-
builder.RegisterType<PdfWebViewPage>();
98-
builder.RegisterType<ImageViewPage>();
99-
100-
// settings
101-
builder.RegisterType<SettingsPage>();
102-
103-
// current page resolver
104-
builder.RegisterInstance<Func<Page>>(Instance);
105-
builder.RegisterInstance(CreateDataLoadService(HttpClientFactory.GetHttpClient(new Uri(Constants.IntegreatReleaseUrl))));
106-
builder.RegisterType<DataLoaderProvider>();
107-
builder.RegisterType<LocationsDataLoader>();
108-
builder.RegisterType<LanguagesDataLoader>();
109-
builder.RegisterType<DisclaimerDataLoader>();
110-
builder.RegisterType<EventPagesDataLoader>();
111-
builder.Register(_=>new BackgroundDownloader(HttpClientFactory.GetHttpClient(new Uri(Constants.IntegreatReleaseUrl)))).AsImplementedInterfaces().SingleInstance();
112-
builder.RegisterType<PagesDataLoader>();
113-
builder.Register(_ => new SprungbrettParser(HttpClientFactory.GetHttpClient(new Uri(Constants.IntegreatReleaseUrl)))). AsImplementedInterfaces().SingleInstance();
114108
}
115109

116-
[SecurityCritical]
117110
private static IDataLoadService CreateDataLoadService(HttpClient client)
118111
{
119112
var networkServiceSettings = new RefitSettings
@@ -127,7 +120,8 @@ private static IDataLoadService CreateDataLoadService(HttpClient client)
127120
};
128121
return RestService.For<IDataLoadService>(client, networkServiceSettings);
129122
}
130-
[SecurityCritical]
131-
private static Page Instance() => Application.Current.MainPage;
123+
124+
private static Page Instance()
125+
=> Application.Current.MainPage;
132126
}
133127
}

Integreat/Integreat.Shared/CustomRenderer/HtmlImageCell.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
namespace Integreat.Shared.CustomRenderer
55
{
6+
/// <inheritdoc />
67
[SecurityCritical]
78
public class HtmlImageCell : ImageCell
89
{

0 commit comments

Comments
 (0)