InfiniTime.git

commit 25b3e2461db0b27de9546452c45921983e4b8d35

Author: Jean-François Milants <jf@codingfield.com>

CMake watch faces selection

Improve wording and replace "watchface" by "watch face" in Apps.md.
Improve CMake readability regarding watch face selection

Co-authored-by: Reinhold Gschweicher <pyro4hell@gmail.com>

 doc/code/Apps.md | 25 +++++++++++++------------
 src/displayapp/apps/CMakeLists.txt | 8 +++++++-


diff --git a/doc/code/Apps.md b/doc/code/Apps.md
index ca7d8bc22912bc62c5a0865bcff0c71b8fae997d..d97eff4b3bf84ccf1233fc3d05972231e097308c 100644
--- a/doc/code/Apps.md
+++ b/doc/code/Apps.md
@@ -35,20 +35,20 @@ that will call the method `Refresh()` periodically.
 
 ## App types
 
-There are basically 3 types of applications : **system** apps and **user** apps and **watchfaces**.
+There are basically 3 types of applications : **system** apps and **user** apps and **watch faces**.
 
 **System** applications are always built into InfiniTime, and InfiniTime cannot work properly without those apps.
-The watchfaces, settings, notifications and the application launcher are examples of such system applications.
+The watch faces, settings, notifications and the application launcher are examples of such system applications.
 
 **User** applications are optionally built into the firmware. They extend the functionalities of the system.
 
-**Watchfaces** are very similar to the **user** apps, they are optional, but at least one must be built into the firmware.
+**Watch faces** are very similar to the **user** apps, they are optional, but at least one must be built into the firmware.
 
-The distinction between **system** apps,  **user** apps and watchfaces allows for more flexibility and customization.
-This allows to easily select which user applications and watchfaces must be built into the firmware
+The distinction between **system** apps,  **user** apps and watch faces allows for more flexibility and customization.
+This allows to easily select which user applications and watch faces must be built into the firmware
 without overflowing the system memory.
 
-## Apps and watchfaces initialization
+## Apps and watch faces initialization
 
 Apps are created by `DisplayApp` in `DisplayApp::LoadScreen()`.
 This method simply call the creates an instance of the class that corresponds to the app specified in parameters.
@@ -57,7 +57,7 @@ The constructor of **system** apps is called directly. If the application is a **user** app,
 the corresponding `AppDescription` is first retrieved from `userApps`
 and then the function `create` is called to create an instance of the app.
 
-Watchfaces are handled in a very similar way than the **user** apps : they are created by `DisplayApp` in the method `DisplayApp::LoadScreen()` when the application type is `Apps::Clock`.
+Watch faces are handled in a very similar way as the **user** apps : they are created by `DisplayApp` in the method `DisplayApp::LoadScreen()` when the application type is `Apps::Clock`.
 
 ## User application selection at build time
 
@@ -89,11 +89,11 @@
 This array `userApps` is used by `DisplayApp` to create the applications and the `AppLauncher`
 to list all available applications.
 
-## Watchface selection at build time
+## Watch face selection at build time
 
-The list of available watchface is also generated at build time by the `consteval`
+The list of available watch faces is also generated at build time by the `consteval`
 function `CreateWatchFaceDescriptions()` in `UserApps.h` in the same way as the **user** apps.
-Watchfaces must declare a `WatchFaceTraits` so that the corresponding `WatchFaceDescription` can be generated.
+Watch faces must declare a `WatchFaceTraits` so that the corresponding `WatchFaceDescription` can be generated.
 Here is an example of `WatchFaceTraits`:
 ```c++
     template <>
@@ -198,9 +198,10 @@ ```cmake
 $ cmake ... -DENABLE_USERAPPS="Apps::Alarm, Apps::Timer, Apps::MyApp" ... 
 ```
 
-Similarly, the list of watchfaces is also generated by CMake, so you need to add the variable `ENABLE_WATCHFACES` to the command line of CMake. It must be set with the list of watchfaces that will be built into the firmware.
+Similarly, the list of watch faces is also generated by CMake, so you need to add the variable `ENABLE_WATCHFACES` to the command line of CMake.
+It must be set with the comma separated list of watch faces that will be built into the firmware.
 
-Ex: build the firmware with 3 watchfaces : Analog, PineTimeStyle and Infineat:
+Ex: build the firmware with 3 watch faces : Analog, PineTimeStyle and Infineat:
 
 ```cmake
 $ cmake ... -DENABLE_WATCHFACES="WatchFace::Analog,WatchFace::PineTimeStyle,WatchFace::Infineat" ...




diff --git a/src/displayapp/apps/CMakeLists.txt b/src/displayapp/apps/CMakeLists.txt
index 4f0e4c4953994c4af3c3ab620e08d5f24f13a7fb..a531bdfff50f23313134e4e1fdaee420cd16f2c3 100644
--- a/src/displayapp/apps/CMakeLists.txt
+++ b/src/displayapp/apps/CMakeLists.txt
@@ -20,7 +20,13 @@
 if(DEFINED ENABLE_WATCHFACES)
     set(WATCHFACE_TYPES ${ENABLE_WATCHFACES} CACHE STRING "List of watch faces to build into the firmware")
 else()
-    set(WATCHFACE_TYPES "WatchFace::Digital, WatchFace::Analog, WatchFace::PineTimeStyle, WatchFace::Terminal, WatchFace::Infineat, WatchFace::CasioStyleG7710" CACHE STRING "List of watch faces to build into the firmware")
+    set(DEFAULT_WATCHFACE_TYPES "WatchFace::Digital")
+    set(DEFAULT_WATCHFACE_TYPES "${DEFAULT_WATCHFACE_TYPES}, WatchFace::Analog")
+    set(DEFAULT_WATCHFACE_TYPES "${DEFAULT_WATCHFACE_TYPES}, WatchFace::PineTimeStyle")
+    set(DEFAULT_WATCHFACE_TYPES "${DEFAULT_WATCHFACE_TYPES}, WatchFace::Terminal")
+    set(DEFAULT_WATCHFACE_TYPES "${DEFAULT_WATCHFACE_TYPES}, WatchFace::Infineat")
+    set(DEFAULT_WATCHFACE_TYPES "${DEFAULT_WATCHFACE_TYPES}, WatchFace::CasioStyleG7710")
+    set(WATCHFACE_TYPES "${DEFAULT_WATCHFACE_TYPES}" CACHE STRING "List of watch faces to build into the firmware")
 endif()
 
 add_library(infinitime_apps INTERFACE)