using System;
using System.Collections.Generic;
using TINK.MultilingualResources;
using Xamarin.Essentials;
namespace TINK.Model
{
/// Holds information about app development (whats new messages) and info whenther AGB have to be shown or not.
public class WhatsNew
{
private static readonly Version AGBMODIFIEDBUILD = new Version(3, 0, 131);
/// Change of of think App.
public static WhatsNewMessages AllFlavorsAndPlatformMessages = new WhatsNewMessages
{
{
new Version(3, 0, 0, 115),
"Benutzeroberfläche verbessert.\r\n\r\n"
},
{
new Version(3, 0, 120),
"Verbesserung: Keine Fehler mehr beim schnellen Tippen.\r\n" +
"Offlineanzeige Stationen/ Räderinfo.\r\n\r\n"
},
{
AGBMODIFIEDBUILD,
"Neue Seiten eingebaut\r\n" +
"-zum erstmaligem Registrieren\r\n" +
"-zur Verwaltung des Benutzerkontos\r\n" +
"-zum Zurücksetzen des Passworts\r\n" +
"\r\n" +
"Anzeige Verbindungsstatus auf den Seiten\r\n" +
"-Kartenansicht Fahrradstandorte\r\n" +
"-Fahrräder an Station\r\n" +
"-Meine Fahrräder\r\n\r\n"
},
{
new Version(3, 0, 137),
"Verschiedene kleine Verbesserungen und Korrekturen.\r\n"
},
{
new Version(3, 0, 141),
"Erste I LOCK IT Unterstützung.\r\n" +
"Erweiterte Optionen: Zwei Schlosssimulationen.\r\n"
},
{
new Version(3, 0, 142),
"Sharee Server verfügbar.\r\n"
},
{
new Version(3, 0, 143),
"Geolocation wird am Gerät abgefragt.\r\n" +
"Erweiterte Optionen: Genauer Standort kann abgefragt werden, Standortsimulation verfügbar.\r\n"
},
{
new Version(3, 0, 144),
"Diverse Fehler behoben.\r\n" +
"Erweiterte Optionen: Texte Auswahlboxen für Copri-Server, Schlosssteuerung und Geolocation verständlicher gemacht.\r\n"
},
{
new Version(3, 0, 145),
"Kleine Fehler behoben.\r\n" +
"Erweiterte Option ein/ ausschalten \"Karte auf aktuelle Position ausrichten\" hinzugefügt.\r\n" +
"Für gemietete Räder ausserhalb der Reichweite wird Knof \"Schloss suchen\" angezeigt."
},
{
new Version(3, 0, 146),
"Fehler behoben: Aktion Schloss schließen wird jetzt durchgeführt.\r\n" +
"Benennung: \"Miete weiterführen\" -> \"Miete fortsetzen\".\r\n"
},
{
new Version(3, 0, 147),
"Erste prototypische Unterstützung des ILOCKIT-Schlosses.\r\n"
},
{
new Version(3, 0, 148),
"Schloss-Guid wird an CORI bei Buchung übermittelt.\r\n"
},
{
new Version(3, 0, 149),
"Schlösser mit neuem Advertisement-Name ISHAREIT+XXXXXXX unterstützt.\r\n"
},
{
new Version(3, 0, 150),
"Verbesserung: Schlossstatus wird nach Öffnen/ Schließen abgefragt.\r\n"
},
{
new Version(3, 0, 151),
"Verbesserungen:\r\n" +
"Erweiterte Optionen: Auswahl, ob log-Dateien auf internem Speicher oder SD-Karte abgelegt werden, ist konfigurierbar.\r\n" +
"Leistung: Suche nach Bluetooth Schlössern deutlich beschleunigt.\r\n" +
"Kleine Textkorrekturen.\r\n." +
"Fehlerbehebung: Schloss kann direkt nach Reservierung geöffnet werden.\r\n"
},
{
new Version(3, 0, 152),
"Verbesserungen: Aufforderung zum Aktivieren von Bluetooth beim Öffnen der Seiten Meine Räder und Räder an Station implementiert.\r\n" +
"Fehlerbehebung: Seite Meine Räder kann auch geöffnet werden, ohne dass Räder reserviert oder gemietet sein müssen.\r\n"
},
{
new Version(3, 0, 153),
"Stabilität erhöht.\r\n"
},
{
new Version(3, 0, 154),
"Stationen in Freiburg werden angezeigt.\r\n"
},
{
new Version(3, 0, 155),
"Schlosssuche verbessert.\r\n"
},
{
new Version(3, 0, 156),
"Abschalten von Sounds und Alarm für offene, reservierte Räder hinzugefügt.\r\n" +
"Kleine Fehler behoben.\r\n"
},
{
new Version(3, 0, 157),
"Versenden von Mail mit Diagnoseinformation funktioniert wieder.\r\n" +
"Stationen werden nicht mehr fälschlicherweise ausgeblendet nach Verlassen von Einstellungsseite.\r\n" +
"Absturz bei minimieren von App behoben.\r\n" +
"Stabilität Bluetoothverbindung bei erstmaligem Verbinden verbessert.\r\n" +
"Stabilität Bluetoothverbindung bei wiederholtem Verbinden verbessert.\r\n" +
"Absturz bei Drehen von Smartdevice behoben.\r\n" +
"Absturz bei minimieren von App behoben.\r\n"
},
{
new Version(3, 0, 158),
"Bugfix: Auf Endgerät mit deutscher Sprache werden Texte wieder auf deutsch angezeigt.\r\n" +
"Erweiterung: Räderinfo für TINK-Räder werden nur noch bei Anmeldung mit TINK-Konto angezeigt.\r\n" +
"Erweiterung: Anwendergruppeninfotext \"TINK\" bzw. \"Konrad\" wird nur noch angezeigt, wenn Konto ein TINK- bzw. Konradrechte hat.\r\n"
},
{
new Version(3, 0, 159),
"Bugfix: Asynchrone Bluetooth Aktualisierung für Android entfernt, da nicht unterstützt.\r\n"
},
{
new Version(3, 0, 162),
"App umbenannt von TINKApp in sharee.bike.\r\n"
},
{
new Version(3, 0, 163),
"Schlossstatus wird an COPRI übermittelt.\r\n"
},
{
new Version(3, 0, 164),
"Wechsel Standard Lock-Umsetzung: GUID-Verbindungsaufbau wird statt Scan benutzt.\r\n" +
"Datenquellen für \"Passwort vergessen\", \"Persönliche Daten Verwalten\", \"Datenschutz\" und \"AGB\" aktualisiert.\r\n"
},
{
new Version(3, 0, 165),
"Menüstruktur überarbeitet.\r\n"
},
{
new Version(3, 0, 167),
"Standardeinstellung geändert: Kartenansicht wird per Default auf aktuelle Position zentriert.\r\n"
},
{
new Version(3, 0, 168),
"Konfigurierbaren Connect Timeout eingebaut.\r\n" +
"Impressum, Radinfo und Tarifinfo wird von Server geladen.\r\n" +
"Adressen für share.bike erweitert.\r\n"
},
{
new Version(3, 0, 169),
"Verschiedene Fehler behoben.\r\n"
},
{
new Version(3, 0, 170),
"Fehler behoben: nach Sequenz Rad Zurückgeben-Resverieren-Mieten ist wieder Verbindung zu Schloss möglich.\r\n" +
"Zielplatform Android 10-Q"
},
{
new Version(3, 0, 171),
"Fehler behoben: nach Sequenz von Homescreen wieder App aktivieren wenn Meine Räder offen ist für nicht mehr zu Crash.\r\n" +
"Fehlermeldung verbessert für den Fall, dass Bluetooth abgeschaltet ist."
},
{
new Version(3, 0, 172),
"Spezielle Fehler Schloss blockiert beim Öffnen/ Schließen und Fahrrad in Bewegung beim Schließen werden in Alert angezeigt.\r\n" +
"Fehlerzustände werden detaillierter in Alerts angezeigt.\r\n" +
"Überprüfung, ob von COPRI gelieferte GUID gültig ist für bekannte Schlösser.\r\n" +
"Überprüfung, dass Seed nur einmalig verwendet werden.\r\n" +
"Verschiedene kleinere Verbesserungen."
},
{
new Version(3, 0, 173),
"Fehlerzustände werden detaillierter in Alerts angezeigt.\r\n" +
"Aktualisierung auf Android 10."
},
{
new Version(3, 0, 174),
"Fehlerkorrketur: GPS-Korrdianten werden länderinvariant übertragen. \r\n" +
"Nutzer mit erweiterten Rechten: Alarm- und Soundeinstellungen können verwaltet werden."
},
{
new Version(3, 0, 175),
"Fehlerkorrektur: Nach Bluetooth-Wiederverbindung kann Schloss wieder geöffnet und geschlossen werden."
},
{
new Version(3, 0, 176),
"Wiederholen-/ Abbrechen-Schleife beim Verbinden mit Schlössern umgesetzt. Beim Wiederholen wird die Timeoutzeit jeweils verdoppelt bis zum Faktor vier.\r\n" +
"Kein Neustart mehr notwendig nach Änderung der Timeouts."
},
{
new Version(3, 0, 177),
"Beim Schließen des Schlosses wird geänderter Zustand an COPRI übermittelt.\r\n" +
"Beim Miete beenden, ohne dass unmittelbar voher das Schloss zu geschlossen wurde, werden keine Koordinaten an COPRI übermittelt.\r\n" +
"Meldungen zu nichkritische Fehlern werden in der Statuszeile angezeigt. "
},
{
new Version(3, 0, 178),
"Bei Fehlern bei Radrückgabe Fehlermeldung verbessert.\r\n" +
"Activity Indicator (Sanduhr) eingebaut.\r\n" +
"Timeout von 3 auf 5 Sekunden erhöht insbesonders für standard Lock-Umsetzung Live-Scan."
},
{
new Version(3, 0, 179),
"Verbesserte Fehlermeldungen bei Statusaktualisierung und Radrückgabe.\r\n" +
"Fehlerbehebung: Alter Geoloationinformation wird korrekt übertragen.\r\n" +
"Optimierung Benutzung Geolocationcache."
},
{
new Version(3, 0, 180),
"Akkufüllstand wir an COPRI übermittelt beim Schloss öffnen."
},
{
new Version(3, 0, 190),
"Erste Version für iOS."
},
{
new Version(3, 0, 191),
"Für Seiten \"Fahrradstandorte\", \"Meine Räder\" und \"Räder an Station\":\r\n" +
"- Activity Indicator (Sanduhr) eingebaut\r\n" +
"- Statusmeldungen eingebaut\r\n" +
"Karte wird initial auf Verleistationen zentriert.\r\n" +
"Geschwindikgeitsverbesserungen und Fehler behoben."
},
{
new Version(3, 0, 192),
"Erweiterung: Benutzerfreundliche Fehlermeldung für Szenario\r\n" +
"-Rückgabe außerhalb von Station\r\n" +
"-Rückgabe ohne GPS-Info\r\n" +
"Standortabfrage bei Radrückgabe von bereits verschlossenem Rad, wenn Schloss in Bluetoothreichweite ist.\r\n" +
"Fehlerbehebung: Passwort-Vergessen Funktionaliät wieder verfügbar.\r\n" +
"Kontakt-Seite aktualisiert (Telefonnummer, Mail, ...)."
},
{
new Version(3, 0, 193),
"Erweiterte Benutzerrechte können selektiv akiviert werden.\r\n" +
"Verschiedene Umbenennungen."
},
{
new Version(3, 0, 194),
"Fehlerkorrektur: Wenn kein Benutzer angemeldet ist werden nur noch öffentliche Stationen angezeigt.\r\n" +
"Master-Detail Elemente werden in sharee.bike- Farbe angezeigt."
},
{
new Version(3, 0, 195),
"Fehlerkorrektur: Android action bar an sharee.bike- Farbenschema angepasst."
},
{
new Version(3, 0, 196),
"Fehlerkorrektur: Registrieren-Link korrigiert.\r\n" +
"\"Kontakt\"-Seite überarbeitet."
},
{
new Version(3, 0, 197),
"Android: App ist nicht mehr verfügbar Geräte ohne BluetoothLE/ ohne GPS.\r\n" +
"iOS:\r\n" +
"- Bugfix: Nicht mehr benötigtes Recht \"Standort im Hintergrund\" entfernt.\r\n" +
"- Schreibfehler behoben.\r\n" +
"Fehlerhandling bei Benutzung von mehr als acht Geräte verbessert."
},
{
new Version(3, 0, 198),
"Fehlermeldungen angepasst.\r\n"
},
{
new Version(3, 0, 199),
"Radbeschreibung auf sharee.bike angepasst.\r\n" +
"iOS: Berechtigungsfehler behoben."
},
{
new Version(3, 0, 200),
"Titel von Seite Fahrradstandort verbessert.\r\n" +
"Statusmeldungen verbessert."
},
{
new Version(3, 0, 201),
"iOS: Darstellung verbessert.\r\n" +
"Weitere Teile der App englischsprachig verfügbar."
},
{
new Version(3, 0, 202),
"Kleinere Verbesserrungen bezüglich Stabilität und Benutzbarkeit.\r\n"
},
{
new Version(3, 0, 203),
AppResources.ChangeLog3_0_203
},
{
new Version(3, 0, 204),
AppResources.ChangeLog3_0_204
},
{
new Version(3, 0, 205),
AppResources.ChangeLog3_0_205
},
{
new Version(3, 0, 206),
AppResources.ChangeLog3_0_206
},
{
new Version(3, 0, 207),
AppResources.ChangeLog3_0_207
},
{
new Version(3, 0, 208),
AppResources.ChangeLog3_0_208 // Minor fixes.
},
{
new Version(3, 0, 209),
AppResources.ChangeLog3_0_209
},
{
new Version(3, 0, 214),
AppResources.ChangeLog3_0_214
},
{
new Version(3, 0, 215),
AppResources.ChangeLog3_0_215
},
{
new Version(3, 0, 216),
AppResources.ChangeLog3_0_216
},
{
new Version(3, 0, 217),
AppResources.ChangeLog3_0_217
},
{
new Version(3, 0, 218),
AppResources.ChangeLog3_0_208
},
{
new Version(3, 0, 219),
AppResources.ChangeLog3_0_219
},
{
new Version(3, 0, 220),
AppResources.ChangeLog3_0_220
},
{
new Version(3, 0, 222),
AppResources.ChangeLog3_0_222
},
{
new Version(3, 0, 223),
AppResources.ChangeLog3_0_208
},
{
new Version(3, 0, 224),
AppResources.ChangeLog3_0_224
},
{
new Version(3, 0, 225),
AppResources.ChangeLog3_0_208
},
{
new Version(3, 0, 226),
AppResources.ChangeLog3_0_226
},
{
new Version(3, 0, 227),
AppResources.ChangeLog3_0_227
},
{
new Version(3, 0, 228),
AppResources.ChangeLog3_0_208
},
{
new Version(3, 0, 231),
AppResources.ChangeLog3_0_231
},
{
new Version(3, 0, 232),
AppResources.ChangeLog3_0_232
},
{
new Version(3, 0, 234),
AppResources.ChangeLog3_0_234
},
{
new Version(3, 0, 235),
AppResources.ChangeLog3_0_235
},
{
new Version(3, 0, 236),
AppResources.ChangeLog3_0_236
},
{
new Version(3, 0, 237),
AppResources.ChangeLog3_0_237
},
{
new Version(3, 0, 238),
AppResources.ChangeLog3_0_231
},
{
new Version(3, 0, 239),
AppResources.ChangeLog3_0_239
},
{
new Version(3, 0, 240),
AppResources.ChangeLog3_0_240
},
{
new Version(3, 0, 241),
AppResources.ChangeLog3_0_241
},
{
new Version(3, 0, 242),
AppResources.ChangeLog3_0_242
},
{
new Version(3, 0, 243),
AppResources.ChangeLog3_0_243
},
{
new Version(3, 0, 244),
AppResources.ChangeLog3_0_231 // Minor improvements.
},
{
new Version(3, 0, 245),
AppResources.ChangeLog3_0_231 // Minor improvements.
},
{
new Version(3, 0, 246),
AppResources.ChangeLog3_0_231 // Minor improvements.
},
{
new Version(3, 0, 247),
AppResources.ChangeLog3_0_231 // Minor improvements.
},
{
new Version(3, 0, 248),
AppResources.ChangeLog3_0_231 // Minor improvements.
},
{
new Version(3, 0, 249),
AppResources.ChangeLog3_0_249 // Third-party components updated.
},
{
new Version(3, 0, 250),
AppResources.ChangeLog3_0_250 // Third-party components updated.
},
{
new Version(3, 0, 260),
// Same info as for version 3.0.251 and 3.0.252
AppResources.ChangeLog3_0_231 // Minor improvements.
},
{
new Version(3, 0, 263),
AppResources.ChangeLog3_0_263
},
{
new Version(3, 0, 264),
AppResources.ChangeLog3_0_264
},
{
new Version(3, 0, 265),
AppResources.ChangeLog3_0_265
},
{
new Version(3, 0, 266),
AppResources.ChangeLog3_0_266
},
{
new Version(3, 0, 276),
AppResources.ChangeLog3_0_276
},
{
new Version(3, 0, 277),
AppResources.ChangeLog3_0_277
},
{
new Version(3, 0, 279),
AppResources.ChangeLog3_0_278 // Addition spelling corrected and missing translation added.
},
{
new Version(3, 0, 280),
AppResources.ChangeLog3_0_280
},
{
new Version(3, 0, 281),
AppResources.ChangeLog3_0_280
},
{
new Version(3, 0, 283),
AppResources.ChangeLog3_0_282
},
{
new Version(3, 0, 284),
AppResources.ChangeLog3_0_284
},
{
new Version(3, 0, 285),
AppResources.ChangeLog3_0_285
},
{
new Version(3, 0, 289),
AppResources.ChangeLog3_0_289
},
{
new Version(3, 0, 290),
AppResources.ChangeLog3_0_290
},
{
new Version(3, 0, 297),
AppResources.ChangeLog3_0_293
},
{
new Version(3, 0, 298),
AppResources.ChangeLog3_0_298
},
{
new Version(3, 0, 299),
AppResources.ChangeLog3_0_299
},
{
new Version(3, 0, 300),
AppResources.ChangeLog3_0_231 // Minor improvements.
},
{
new Version(3, 0, 311),
AppResources.ChangeLog3_0_301
},
{
new Version(3, 0, 312),
AppResources.ChangeLog3_0_312
},
{
new Version(3, 0, 323),
AppResources.ChangeLog3_0_318 // Support for new lock added.
},
{
new Version(3, 0, 324),
AppResources.ChangeLog3_0_324
},
{
new Version(3, 0, 333),
AppResources.ChangeLog3_0_326 // Battery level display and input.
},
{
new Version(3, 0, 335),
AppResources.ChangeLog3_0_326 // Battery level display and input.
},
{
new Version(3, 0, 336),
AppResources.ChangeLog3_0_335 // Sharee.bike design improved.
},
{
new Version(3, 0, 337),
AppResources.ChangeLog3_0_337_SB, // New Design
new List { AppFlavor.ShareeBike }
},
{
new Version(3, 0, 337),
AppResources.ChangeLog3_0_337_MK, // Notice for low battery
new List { AppFlavor.MeinKonrad }
},
{
new Version(3, 0, 337),
AppResources.ChangeLog_MinorBugFixes,
new List { AppFlavor.LastenradBayern }
},
{
new Version(3, 0, 338),
AppResources.ChangeLog3_0_338_LB_MK,
new List { AppFlavor.LastenradBayern, AppFlavor.MeinKonrad }
},
{
new Version(3, 0, 338),
AppResources.ChangeLog3_0_338_SB,
new List { AppFlavor.ShareeBike }
},
{
new Version(3, 0, 339),
AppResources.ChangeLog3_0_339_SB_LB,
new List { AppFlavor.LastenradBayern, AppFlavor.ShareeBike }
},
{
new Version(3, 0, 339),
AppResources.ChangeLog3_0_339_MK,
new List { AppFlavor.MeinKonrad }
},
{
new Version(3, 0, 344),
AppResources.ChangeLog_3_0_343_LB_MK,
new List { AppFlavor.LastenradBayern, AppFlavor.MeinKonrad }
},
{
new Version(3, 0, 344),
AppResources.ChangeLog_MinorBugFixes,
new List { AppFlavor.ShareeBike }
},
{
new Version(3, 0, 345),
AppResources.ChangeLog_3_0_345_SB_MK,
new List { AppFlavor.ShareeBike, AppFlavor.MeinKonrad }
},
{
new Version(3, 0, 345),
AppResources.ChangeLog_3_0_345_LB,
new List { AppFlavor.LastenradBayern }
},
{
new Version(3, 0, 347),
AppResources.ChangeLog_3_0_347_LB_MK,
new List { AppFlavor.LastenradBayern, AppFlavor.MeinKonrad }
},
{
new Version(3, 0, 347),
AppResources.ChangeLog_3_0_347_SB,
new List { AppFlavor.ShareeBike }
},
{
new Version(3, 0, 348),
AppResources.ChangeLog_3_0_348,
new List { AppFlavor.LastenradBayern, AppFlavor.MeinKonrad, AppFlavor.ShareeBike },
new List { DevicePlatform.Android }
},
{
new Version(3, 0, 349),
AppResources.ChangeLog_3_0_349,
new List { AppFlavor.LastenradBayern, AppFlavor.MeinKonrad, AppFlavor.ShareeBike },
new List { DevicePlatform.Android }
},
{
new Version(3, 0, 350),
AppResources.ChangeLog_3_0_350_SB_MK,
new List { AppFlavor.MeinKonrad, AppFlavor.ShareeBike }
},
{
new Version(3, 0, 351),
AppResources.ChangeLog_MinorBugFixes,
new List { AppFlavor.MeinKonrad, AppFlavor.ShareeBike }
},
{
new Version(3, 0, 352),
AppResources.ChangeLog_MinorDesignImprovements,
new List { AppFlavor.MeinKonrad, AppFlavor.ShareeBike }
},
{
new Version(3, 0, 353),
AppResources.ChangeLog_3_0_353_MK_SB,
new List { AppFlavor.MeinKonrad, AppFlavor.ShareeBike }
},
{
new Version(3, 0, 354),
AppResources.ChangeLog_PackageUpdates,
new List { AppFlavor.MeinKonrad, AppFlavor.ShareeBike }
},
{
new Version(3, 0, 355),
AppResources.ChangeLog_3_0_355_MK_SB_iOS,
new List { AppFlavor.MeinKonrad, AppFlavor.ShareeBike },
new List { DevicePlatform.iOS }
},
{
new Version(3, 0, 356),
AppResources.ChangeLog3_0_231
},
{
new Version(3, 0, 360),
AppResources.ChangeLog_3_0_358_MK_SB,
new List { AppFlavor.MeinKonrad, AppFlavor.ShareeBike }
},
{
new Version(3, 0, 361),
AppResources.ChangeLog_3_0_361_MK_SB,
new List { AppFlavor.MeinKonrad, AppFlavor.ShareeBike }
},
{
new Version(3, 0, 362),
AppResources.ChangeLog_3_0_362_MK_SB,
new List { AppFlavor.MeinKonrad, AppFlavor.ShareeBike }
},
};
/// Manges the whats new information.
/// Current version of the app.
/// Version of app which was used before this session, null if app is installed for the first time.
/// Null or version in which whats new dialog was shown last. Used to determine if AGB dialog has to be shown.
/// Flavor of the app, i.e. specified if app is sharee.bike, Lastenrad Bayern, ...
/// Platform on which app is running.
/// Messages to inject for testing.
public WhatsNew(
Version currentVersion,
Version lastVersion,
Version shownInVersion,
AppFlavor flavor,
DevicePlatform platform,
WhatsNewMessages messages = null)
{
WasShownVersion = shownInVersion;
if (currentVersion == null || lastVersion == null)
{
WasShownInCurrentSession = false;
IsShowRequired = false;
WhatsNewText = new Dictionary();
return;
}
WhatsNewText = (messages ?? AllFlavorsAndPlatformMessages).GetFilteredMessages(flavor, platform, WasShownVersion ?? lastVersion, currentVersion);
if (WhatsNewText.Count <= 0)
{
WasShownInCurrentSession = false;
IsShowRequired = false;
return;
}
WasShownInCurrentSession = false;
IsShowRequired = true;
}
/// Gets or sets value whehter whats new was alreay shonw in current settion or not.
public bool WasShownInCurrentSession { get; set; }
/// Holds the information in which version of the app the whats new dialog has been shown.
private Version WasShownVersion { get; }
/// Holds information whether whats new page was already shown or not.
public bool IsShowRequired { get; }
/// True if info about modified agb has to be displayed.
public bool IsShowAgbRequired => (WasShownVersion ?? AGBMODIFIEDBUILD) < AGBMODIFIEDBUILD;
/// Get the whats new text depening of version gap.
/// Messages to process.
public IDictionary WhatsNewText { get; }
}
}