forked from MapComplete/MapComplete
		
	Switch translation mode on Shift+T
This commit is contained in:
		
							parent
							
								
									ef16058249
								
							
						
					
					
						commit
						9b505f33d0
					
				
					 2 changed files with 62 additions and 53 deletions
				
			
		|  | @ -41,6 +41,8 @@ export default class UserRelatedState { | |||
|     public readonly showAllQuestionsAtOnce: UIEventSource<boolean> | ||||
|     public readonly showTags: UIEventSource<"no" | undefined | "always" | "yes" | "full"> | ||||
|     public readonly showCrosshair: UIEventSource<"yes" | "always" | "no" | undefined> | ||||
|     public readonly translationMode: UIEventSource<"false" | "true" | "mobile" | undefined | string> | ||||
| 
 | ||||
|     public readonly fixateNorth: UIEventSource<undefined | "yes"> | ||||
|     public readonly a11y: UIEventSource<undefined | "always" | "never" | "default"> | ||||
|     public readonly homeLocation: FeatureSource | ||||
|  | @ -86,30 +88,11 @@ export default class UserRelatedState { | |||
|     ) { | ||||
|         this.osmConnection = osmConnection | ||||
|         this._mapProperties = mapProperties | ||||
|         { | ||||
|             const translationMode: UIEventSource<undefined | "true" | "false" | "mobile" | string> = | ||||
|                 this.osmConnection.GetPreference("translation-mode", "false") | ||||
|             translationMode.addCallbackAndRunD((mode) => { | ||||
|                 mode = mode.toLowerCase() | ||||
|                 if (mode === "true" || mode === "yes") { | ||||
|                     Locale.showLinkOnMobile.setData(false) | ||||
|                     Locale.showLinkToWeblate.setData(true) | ||||
|                 } else if (mode === "false" || mode === "no") { | ||||
|                     Locale.showLinkToWeblate.setData(false) | ||||
|                 } else if (mode === "mobile") { | ||||
|                     Locale.showLinkOnMobile.setData(true) | ||||
|                     Locale.showLinkToWeblate.setData(true) | ||||
|                 } else { | ||||
|                     Locale.showLinkOnMobile.setData(false) | ||||
|                     Locale.showLinkToWeblate.setData(false) | ||||
|                 } | ||||
|             }) | ||||
|         } | ||||
| 
 | ||||
|         this.showAllQuestionsAtOnce = UIEventSource.asBoolean( | ||||
|             this.osmConnection.GetPreference("show-all-questions", "false", { | ||||
|                 documentation: | ||||
|                     "Either 'true' or 'false'. If set, all questions will be shown all at once", | ||||
|                     "Either 'true' or 'false'. If set, all questions will be shown all at once" | ||||
|             }) | ||||
|         ) | ||||
|         this.language = this.osmConnection.GetPreference("language") | ||||
|  | @ -129,7 +112,7 @@ export default class UserRelatedState { | |||
|             undefined, | ||||
|             { | ||||
|                 documentation: | ||||
|                     "The ID of a layer or layer category that MapComplete uses by default", | ||||
|                     "The ID of a layer or layer category that MapComplete uses by default" | ||||
|             } | ||||
|         ) | ||||
| 
 | ||||
|  | @ -137,15 +120,15 @@ export default class UserRelatedState { | |||
|             "preferences-add-new-mode", | ||||
|             "button_click_right", | ||||
|             { | ||||
|                 documentation: "How adding a new feature is done", | ||||
|                 documentation: "How adding a new feature is done" | ||||
|             } | ||||
|         ) | ||||
| 
 | ||||
|         this.imageLicense = this.osmConnection.GetPreference("pictures-license", "CC0", { | ||||
|             documentation: "The license under which new images are uploaded", | ||||
|             documentation: "The license under which new images are uploaded" | ||||
|         }) | ||||
|         this.installedUserThemes = this.InitInstalledUserThemes() | ||||
| 
 | ||||
|         this.translationMode = this.initTranslationMode() | ||||
|         this.homeLocation = this.initHomeLocation() | ||||
| 
 | ||||
|         this.preferencesAsTags = this.initAmendedPrefs(layout, featureSwitches) | ||||
|  | @ -161,6 +144,29 @@ export default class UserRelatedState { | |||
|         this.language.syncWith(Locale.language) | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|     private initTranslationMode(): UIEventSource<"false" | "true" | "mobile" | undefined | string> { | ||||
|         const translationMode: UIEventSource<undefined | "true" | "false" | "mobile" | string> = | ||||
|             this.osmConnection.GetPreference("translation-mode", "false") | ||||
|         translationMode.addCallbackAndRunD((mode) => { | ||||
|             mode = mode.toLowerCase() | ||||
|             if (mode === "true" || mode === "yes") { | ||||
|                 Locale.showLinkOnMobile.setData(false) | ||||
|                 Locale.showLinkToWeblate.setData(true) | ||||
|             } else if (mode === "false" || mode === "no") { | ||||
|                 Locale.showLinkToWeblate.setData(false) | ||||
|             } else if (mode === "mobile") { | ||||
|                 Locale.showLinkOnMobile.setData(true) | ||||
|                 Locale.showLinkToWeblate.setData(true) | ||||
|             } else { | ||||
|                 Locale.showLinkOnMobile.setData(false) | ||||
|                 Locale.showLinkToWeblate.setData(false) | ||||
|             } | ||||
|         }) | ||||
|         return translationMode | ||||
| 
 | ||||
|     } | ||||
| 
 | ||||
|     private static initUserSettingsState(): LayerConfig { | ||||
|         try { | ||||
|             return new LayerConfig(<LayerConfigJson>usersettings, "userinformationpanel") | ||||
|  | @ -171,13 +177,13 @@ export default class UserRelatedState { | |||
| 
 | ||||
|     public GetUnofficialTheme(id: string): | ||||
|         | { | ||||
|               id: string | ||||
|               icon: string | ||||
|               title: any | ||||
|               shortDescription: any | ||||
|               definition?: any | ||||
|               isOfficial: boolean | ||||
|           } | ||||
|         id: string | ||||
|         icon: string | ||||
|         title: any | ||||
|         shortDescription: any | ||||
|         definition?: any | ||||
|         isOfficial: boolean | ||||
|     } | ||||
|         | undefined { | ||||
|         console.log("GETTING UNOFFICIAL THEME") | ||||
|         const pref = this.osmConnection.GetLongPreference("unofficial-theme-" + id) | ||||
|  | @ -202,8 +208,8 @@ export default class UserRelatedState { | |||
|         } catch (e) { | ||||
|             console.warn( | ||||
|                 "Removing theme " + | ||||
|                     id + | ||||
|                     " as it could not be parsed from the preferences; the content is:", | ||||
|                 id + | ||||
|                 " as it could not be parsed from the preferences; the content is:", | ||||
|                 str | ||||
|             ) | ||||
|             pref.setData(null) | ||||
|  | @ -233,7 +239,7 @@ export default class UserRelatedState { | |||
|                     icon: layout.icon, | ||||
|                     title: layout.title.translations, | ||||
|                     shortDescription: layout.shortDescription.translations, | ||||
|                     definition: layout["definition"], | ||||
|                     definition: layout["definition"] | ||||
|                 }) | ||||
|             ) | ||||
|         } | ||||
|  | @ -273,13 +279,13 @@ export default class UserRelatedState { | |||
|                         id: "home", | ||||
|                         "user:home": "yes", | ||||
|                         _lon: homeLonLat[0], | ||||
|                         _lat: homeLonLat[1], | ||||
|                         _lat: homeLonLat[1] | ||||
|                     }, | ||||
|                     geometry: { | ||||
|                         type: "Point", | ||||
|                         coordinates: homeLonLat, | ||||
|                     }, | ||||
|                 }, | ||||
|                         coordinates: homeLonLat | ||||
|                     } | ||||
|                 } | ||||
|             ] | ||||
|         }) | ||||
|         return new StaticFeatureSource(feature) | ||||
|  | @ -300,7 +306,7 @@ export default class UserRelatedState { | |||
|             _applicationOpened: new Date().toISOString(), | ||||
|             _supports_sharing: | ||||
|                 typeof window === "undefined" ? "no" : window.navigator.share ? "yes" : "no", | ||||
|             _iframe: Utils.isIframe ? "yes" : "no", | ||||
|             _iframe: Utils.isIframe ? "yes" : "no" | ||||
|         }) | ||||
| 
 | ||||
|         for (const key in Constants.userJourney) { | ||||
|  | @ -333,12 +339,10 @@ export default class UserRelatedState { | |||
| 
 | ||||
|             amendedPrefs.ping() | ||||
|         }) | ||||
|         const translationMode = osmConnection.GetPreference("translation-mode") | ||||
| 
 | ||||
|         Locale.language.mapD( | ||||
|             (language) => { | ||||
|                 amendedPrefs.data["_language"] = language | ||||
|                 const trmode = translationMode.data | ||||
|                 const trmode = this.translationMode.data | ||||
|                 if ((trmode === "true" || trmode === "mobile") && layout !== undefined) { | ||||
|                     const extraInspection = UserRelatedState.usersettingsConfig | ||||
|                     const missing = layout.missingTranslations(extraInspection) | ||||
|  | @ -355,18 +359,18 @@ export default class UserRelatedState { | |||
|                     const zenLinks: { link: string; id: string }[] = Utils.NoNull([ | ||||
|                         hasMissingTheme | ||||
|                             ? { | ||||
|                                   id: "theme:" + layout.id, | ||||
|                                   link: LinkToWeblate.hrefToWeblateZen( | ||||
|                                       language, | ||||
|                                       "themes", | ||||
|                                       layout.id | ||||
|                                   ), | ||||
|                               } | ||||
|                                 id: "theme:" + layout.id, | ||||
|                                 link: LinkToWeblate.hrefToWeblateZen( | ||||
|                                     language, | ||||
|                                     "themes", | ||||
|                                     layout.id | ||||
|                                 ) | ||||
|                             } | ||||
|                             : undefined, | ||||
|                         ...missingLayers.map((id) => ({ | ||||
|                             id: "layer:" + id, | ||||
|                             link: LinkToWeblate.hrefToWeblateZen(language, "layers", id), | ||||
|                         })), | ||||
|                             link: LinkToWeblate.hrefToWeblateZen(language, "layers", id) | ||||
|                         })) | ||||
|                     ]) | ||||
|                     const untranslated_count = untranslated.length | ||||
|                     amendedPrefs.data["_translation_total"] = "" + total | ||||
|  | @ -378,7 +382,7 @@ export default class UserRelatedState { | |||
|                 } | ||||
|                 amendedPrefs.ping() | ||||
|             }, | ||||
|             [translationMode] | ||||
|             [this.translationMode] | ||||
|         ) | ||||
| 
 | ||||
|         this.mangroveIdentity.getKeyId().addCallbackAndRun((kid) => { | ||||
|  |  | |||
|  | @ -704,7 +704,12 @@ export default class ThemeViewState implements SpecialVisualizationState { | |||
|             }, | ||||
|             Translations.t.hotkeyDocumentation.translationMode, | ||||
|             () => { | ||||
|                 Locale.showLinkToWeblate.setData(!Locale.showLinkToWeblate.data) | ||||
|                 const tm = this.userRelatedState.translationMode | ||||
|                 if(tm.data === "false"){ | ||||
|                     tm.setData("true") | ||||
|                 } else { | ||||
|                     tm.setData("false") | ||||
|                 } | ||||
|             } | ||||
|         ) | ||||
|     } | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue