Compare commits
58 Commits
numeric-it
...
v3.8
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
065a0e47cf | ||
|
|
f24d95d739 | ||
|
|
0d6c3a10c6 | ||
|
|
38d9c2c06d | ||
|
|
1bdc117c13 | ||
|
|
87499dba50 | ||
|
|
193f53bbf0 | ||
|
|
024b2c727f | ||
|
|
75045b19d9 | ||
|
|
d6e32b777f | ||
|
|
1e17d93310 | ||
|
|
cc53b25508 | ||
|
|
098dc81236 | ||
|
|
5ab8229602 | ||
|
|
8acc450c2c | ||
|
|
1a52a942fd | ||
|
|
d8b82f23e4 | ||
|
|
4943c87edb | ||
|
|
179c4d1bc5 | ||
|
|
6822cbe434 | ||
|
|
fbeadf7ba9 | ||
|
|
b688cec8f6 | ||
|
|
4119665817 | ||
|
|
f0e263ae54 | ||
|
|
abd6552916 | ||
|
|
60f754f3e3 | ||
|
|
bc5a7d04e4 | ||
|
|
643c4aa2e5 | ||
|
|
8360a3e4a2 | ||
|
|
ad83988ade | ||
|
|
cac94fecd4 | ||
|
|
f9253e8cf0 | ||
|
|
3528080ec3 | ||
|
|
cc321899f4 | ||
|
|
5a44765ac9 | ||
|
|
9eb791c68b | ||
|
|
2fca0ef3a3 | ||
|
|
fc0320aef6 | ||
|
|
0d3c76ef2e | ||
|
|
4c946d584a | ||
|
|
6e3cf73ab3 | ||
|
|
14186b7992 | ||
|
|
f64bed5058 | ||
|
|
619671de5d | ||
|
|
6d18406880 | ||
|
|
3a7676f4bf | ||
|
|
f19eb7c276 | ||
|
|
c617d2cad6 | ||
|
|
d1f6f6d9d2 | ||
|
|
35333f4d75 | ||
|
|
a5ddb65512 | ||
|
|
b0fa10b2c1 | ||
|
|
6a0ec34cdb | ||
|
|
2cd171637c | ||
|
|
264b160fdf | ||
|
|
81fa876449 | ||
|
|
b563ab7923 | ||
|
|
2ebf36a445 |
@@ -1,8 +1,8 @@
|
||||
[Home](README.md) | [Switches](examples/Switches.md) | [Actions](examples/Actions.md) | [Templates](examples/Templates.md) | [Glance](examples/Glance.md) | [Background Service](BackgroundService.md) | [Wi-Fi](Wi-Fi.md) | [HTTP Headers](HTTP_Headers.md) | [Trouble Shooting](TroubleShooting.md) | [Version History](HISTORY.md)
|
||||
[Home](README.md) | [Switches](examples/Switches.md) | [Actions](examples/Actions.md) | [Templates](examples/Templates.md) | [Numeric](examples/Numeric.md) | [Glance](examples/Glance.md) | [Background Service](BackgroundService.md) | [Wi-Fi](Wi-Fi.md) | [HTTP Headers](HTTP_Headers.md) | [Trouble Shooting](TroubleShooting.md) | [Version History](HISTORY.md)
|
||||
|
||||
# Background Service
|
||||
|
||||
The background service can report the following statuses from your device to your Home Assistant:
|
||||
The background service can report the following statuses from your device to your HomeAssistant:
|
||||
|
||||
- Battery Level with charging status.
|
||||
- Location and location accuracy.
|
||||
@@ -12,13 +12,13 @@ If your device does not support the background service, the application will cle
|
||||
|
||||
## Limits
|
||||
|
||||
The values are merely samples of your device's current status. They are sent by a single background service at the repetition frequency you chose in the settings. The samples are sent at that one rate only, they _do not vary_ for example on in activity, on charge, time of day. You get one refresh interval and that is it. If you want to change the refresh interval, you change your settings. We do appreciate that may not be what you would ideally like to trigger actions on Home Assistant. Messing with the repeat interval of the background service requires more code, more settings and more complexity. That means older devices using widgets would have to be taken out of support to achieve it.
|
||||
The values are merely samples of your device's current status. They are sent by a single background service at the repetition frequency you chose in the settings. The samples are sent at that one rate only, they _do not vary_ for example on in activity, on charge, time of day. You get one refresh interval and that is it. If you want to change the refresh interval, you change your settings. We do appreciate that may not be what you would ideally like to trigger actions on HomeAssistant. Messing with the repeat interval of the background service requires more code, more settings and more complexity. That means older devices using widgets would have to be taken out of support to achieve it.
|
||||
|
||||
**Please do not ask for these to be made 'events'.** Garmin's [Connect IQ background service](https://developer.garmin.com/connect-iq/api-docs/Toybox/System/ServiceDelegate.html) is limited in that while it does provide an `onActivityCompleted()` method, it does not provide an `onActivityStarted()` method, so you would not have the complete activity life cycle anyway. So we're keeping this implementation simple, you just get a sampling at one refresh rate. This probably limits you to updating a status on a Home Assistant Dashboard only.
|
||||
**Please do not ask for these to be made 'events'.** Garmin's [Connect IQ background service](https://developer.garmin.com/connect-iq/api-docs/Toybox/System/ServiceDelegate.html) is limited in that while it does provide an `onActivityCompleted()` method, it does not provide an `onActivityStarted()` method, so you would not have the complete activity life cycle anyway. So we're keeping this implementation simple, you just get a sampling at one refresh rate. This probably limits you to updating a status on a HomeAssistant Dashboard only.
|
||||
|
||||
## Battery Reporting
|
||||
|
||||
From version 2.1 the application includes a background service to report the current device battery level and charging status back to Home Assistant. This is a feature that Garmin omitted to include with the Bluetooth connection.
|
||||
From version 2.1 the application includes a background service to report the current device battery level and charging status back to HomeAssistant. This is a feature that Garmin omitted to include with the Bluetooth connection.
|
||||
|
||||
## Location Reporting
|
||||
|
||||
@@ -47,7 +47,7 @@ From version 2.6 the application includes reporting your activity. The activity
|
||||
- Activity - This is an integer as defined by [Toybox.Activity `SPORT`](https://developer.garmin.com/connect-iq/api-docs/Toybox/Activity.html#Sport-module)
|
||||
- Sub-activity - This is an integer as defined by [Toybox.Activity `SUB_SPORT`](https://developer.garmin.com/connect-iq/api-docs/Toybox/Activity.html#SubSport-module)
|
||||
|
||||
The application only provides the integers without translation. When using the values in Home Assistant, you will need to provide you own mapping from the `Activity` enumerated type to the human readable text. As developers of the application we are pushing this translation to the server to keep the Garmin application code 'lean'. You will also need to add to both the list of activities (sports) and sub-activities (sub-sports) an interpretation of integer `-1` for no activity/sub-activity at present.
|
||||
The application only provides the integers without translation. When using the values in HomeAssistant, you will need to provide you own mapping from the `Activity` enumerated type to the human readable text. As developers of the application we are pushing this translation to the server to keep the Garmin application code 'lean'. You will also need to add to both the list of activities (sports) and sub-activities (sub-sports) an interpretation of integer `-1` for no activity/sub-activity at present.
|
||||
|
||||
## Start Reporting
|
||||
|
||||
@@ -55,7 +55,7 @@ The main drawback of this solution is that the Garmin application must be run on
|
||||
|
||||
It should be as simple as starting the application (or widget). There should be a new device in the mobile app integration called `Garmin Watch` with the battery level and charging status.
|
||||
|
||||
[](https://my.home-assistant.io/redirect/integration/?domain=mobile_app)
|
||||
[](https://my.home-assistant.io/redirect/integration/?domain=mobile_app)
|
||||
|
||||
If this is not the case, head over to the [troubleshooting page](Troubleshooting.md#watch-battery-level-reporting).
|
||||
|
||||
@@ -67,7 +67,7 @@ To stop the reporting, the option must be turned off in the settings and then th
|
||||
|
||||
When the device is first created, it will be called `Garmin Watch`. This can be changed in the mobile app integration settings (button below).
|
||||
|
||||
[](https://my.home-assistant.io/redirect/integration/?domain=mobile_app)
|
||||
[](https://my.home-assistant.io/redirect/integration/?domain=mobile_app)
|
||||
|
||||
Select the device called `Garmin Watch` and then click on the edit icon in the top right corner. You can then change the name of the device to whatever you like, then press `UPDATE` and then `RENAME`.
|
||||
|
||||
@@ -91,7 +91,7 @@ template:
|
||||
icon: "mdi:battery{% if is_state('binary_sensor.<device>_battery_is_charging', 'on') %}-charging{% endif %}{% if 0 < (states('sensor.<device>_battery_level') | float / 10 ) | round(0) * 10 < 100 %}-{{ (states('sensor.<device>_battery_level') | float / 10 ) | round(0) * 10 }}{% else %}{% if (states('sensor.<device>_battery_level') | float / 10 ) | round(0) * 10 == 0 %}-outline{% else %}{% if is_state('binary_sensor.<device>_battery_is_charging', 'on') %}-100{% endif %}{% endif %}{% endif %}"
|
||||
```
|
||||
|
||||
## Adding a sample Home Assistant UI widget
|
||||
## Adding a sample HomeAssistant UI widget
|
||||
|
||||
A gauge for battery level with a charging icon making use of [mushroom cards](https://github.com/piitaya/lovelace-mushroom), [card_mod](https://github.com/thomasloven/lovelace-card-mod) and [stack-in-card](https://github.com/custom-cards/stack-in-card):
|
||||
|
||||
@@ -161,7 +161,7 @@ N.B. `sensor.<device>_battery_level` will likely need to be changed to `sensor.<
|
||||
|
||||
## Migrating
|
||||
|
||||
You should remove your old template sensors before migrating to the new integration. You can do this by removing the `sensor.<device>_battery_level` and `binary_sensor.<device>_battery_is_charging` entities from `configuration.yaml` and then restarting Home Assistant or reloading the YAML.
|
||||
You should remove your old template sensors before migrating to the new integration. You can do this by removing the `sensor.<device>_battery_level` and `binary_sensor.<device>_battery_is_charging` entities from `configuration.yaml` and then restarting HomeAssistant or reloading the YAML.
|
||||
|
||||
[Here is the old configuration method for reference.](https://github.com/house-of-abbey/GarminHomeAssistant/blob/b51e2aa2a4afbc58ad466f3b81667d1cd252d091/BatteryReporting.md)
|
||||
|
||||
|
||||
194
Devices.md
Normal file
@@ -0,0 +1,194 @@
|
||||
# Device Support & Characterisation
|
||||
|
||||
A page just to note a practical limit on support for some older devices.
|
||||
|
||||
## Application Memory Usage
|
||||
|
||||
On an `instinct2x` device:
|
||||
|
||||
| Version | Free Memory (bytes) on `instinct2x`| Free Memory (bytes) on `venu2`|
|
||||
|:-------:|-----------------------------------:|------------------------------:|
|
||||
| 3.5 | 62,360 | - |
|
||||
| 3.6 | 65,696 | 53,832 |
|
||||
|
||||
A user has reported a maximum of 26 items with Ver 3.5. This measurement has shown that each menu item requires about 1.0~1.2 kB. Using the worked example below it is possible to predict how many menu items your particular device might be able to support by using indicative figures.
|
||||
|
||||
## Worked Example
|
||||
|
||||
As a worked example, for Ver 3.6 working on an `instinct2x` device:
|
||||
|
||||
| Feature | Memory (bytes) | Cost (bytes) |
|
||||
|--------------------------------------|---------------:|-------------:|
|
||||
| Declared available to application | 98,304 | |
|
||||
| Measured available to application | 94,112 | (4,192 less) |
|
||||
| Application used | 65,696 | |
|
||||
| Free before fetching menu definition | 28,416 | |
|
||||
| Free after fetching menu definition | 15,792 | 12,624 |
|
||||
| Free after construction | 936 | 14,856 |
|
||||
|
||||
Our test menu presently contains a mix of 28 items, consisting of nested group, toggle, tap, info and numeric items with templates. So each item requires (12,624 + 14,856) / 28 = 982 bytes.
|
||||
|
||||
## Garmin Devices
|
||||
|
||||
The following table details all the devices as at 1 October 2025 and whether they are supported by Garmin HomeAssistant. The available application memory is also detailed so that it can be compared to an application version listed above. Of particular concern are the 'Instinct' range of devices, being the smallest we currently support. New feature requests are now being vetted against how they might affect our ability to support the 'Instinct' range of devices. At some point support may have to be withdrawn in order to allow the Garmin HomeAssistant application to grow further.
|
||||
|
||||
| Device | Supported | Application Memory |
|
||||
|----------------------------|:---------:|--------------------:|
|
||||
| d2bravo | N | 65,536 |
|
||||
| d2bravo_titanium | N | 65,536 |
|
||||
| fenix3 | N | 65,536 |
|
||||
| fenix3_hr | N | 65,536 |
|
||||
| fr230 | N | 65,536 |
|
||||
| fr235 | N | 65,536 |
|
||||
| fr630 | N | 65,536 |
|
||||
| fr920xt | N | 65,536 |
|
||||
| vivoactive | N | 65,536 |
|
||||
| descentg1 | Y | 98,304 |
|
||||
| instinct2 | Y | 98,304 |
|
||||
| instinct2s | Y | 98,304 |
|
||||
| instinct2x | Y | 98,304 |
|
||||
| instinctcrossover | Y | 98,304 |
|
||||
| approachs60 | N | 131,072 |
|
||||
| enduro | Y | 131,072 |
|
||||
| fenix5 | Y | 131,072 |
|
||||
| fenix5s | Y | 131,072 |
|
||||
| fenix6 | Y | 131,072 |
|
||||
| fenix6s | Y | 131,072 |
|
||||
| fenixchronos | Y | 131,072 |
|
||||
| fr245 | Y | 131,072 |
|
||||
| fr55 | Y | 131,072 |
|
||||
| fr645 | Y | 131,072 |
|
||||
| fr735xt | N | 131,072 |
|
||||
| fr935 | Y | 131,072 |
|
||||
| instinct3solar45mm | Y | 131,072 |
|
||||
| instincte40mm | Y | 131,072 |
|
||||
| instincte45mm | Y | 131,072 |
|
||||
| venusq | Y | 131,072 |
|
||||
| vivoactive3 | Y | 131,072 |
|
||||
| vivoactive3d | N | 131,072 |
|
||||
| vivoactive_hr | N | 131,072 |
|
||||
| edge_520 | N | 262,144 |
|
||||
| fr255 | Y | 524,288 |
|
||||
| fr255s | Y | 524,288 |
|
||||
| approachs50 | Y | 786,432 |
|
||||
| approachs7042mm | Y | 786,432 |
|
||||
| approachs7047mm | Y | 786,432 |
|
||||
| d2airx10 | Y | 786,432 |
|
||||
| d2mach1 | Y | 786,432 |
|
||||
| descentg2 | Y | 786,432 |
|
||||
| descentmk343mm | Y | 786,432 |
|
||||
| descentmk351mm | Y | 786,432 |
|
||||
| enduro3 | Y | 786,432 |
|
||||
| epix2 | Y | 786,432 |
|
||||
| epix2pro42mm | Y | 786,432 |
|
||||
| epix2pro47mm | Y | 786,432 |
|
||||
| epix2pro47mmsystem7preview | Y | 786,432 |
|
||||
| epix2pro51mm | Y | 786,432 |
|
||||
| fenix7 | Y | 786,432 |
|
||||
| fenix7pro | Y | 786,432 |
|
||||
| fenix7pronowifi | Y | 786,432 |
|
||||
| fenix7s | Y | 786,432 |
|
||||
| fenix7spro | Y | 786,432 |
|
||||
| fenix7x | Y | 786,432 |
|
||||
| fenix7xpro | Y | 786,432 |
|
||||
| fenix7xpronowifi | Y | 786,432 |
|
||||
| fenix843mm | Y | 786,432 |
|
||||
| fenix847mm | Y | 786,432 |
|
||||
| fenix8pro47mm | Y | 786,432 |
|
||||
| fenix8solar47mm | Y | 786,432 |
|
||||
| fenix8solar51mm | Y | 786,432 |
|
||||
| fenixe | Y | 786,432 |
|
||||
| fr165 | Y | 786,432 |
|
||||
| fr165m | Y | 786,432 |
|
||||
| fr255m | Y | 786,432 |
|
||||
| fr255sm | Y | 786,432 |
|
||||
| fr265 | Y | 786,432 |
|
||||
| fr265s | Y | 786,432 |
|
||||
| fr57042mm | Y | 786,432 |
|
||||
| fr57047mm | Y | 786,432 |
|
||||
| fr955 | Y | 786,432 |
|
||||
| fr965 | Y | 786,432 |
|
||||
| fr970 | Y | 786,432 |
|
||||
| instinct3amoled45mm | Y | 786,432 |
|
||||
| instinct3amoled50mm | Y | 786,432 |
|
||||
| instinctcrossoveramoled | Y | 786,432 |
|
||||
| marq2 | Y | 786,432 |
|
||||
| marq2aviator | Y | 786,432 |
|
||||
| system8preview | N | 786,432 |
|
||||
| venu2 | Y | 786,432 |
|
||||
| venu2plus | Y | 786,432 |
|
||||
| venu2s | Y | 786,432 |
|
||||
| venu3 | Y | 786,432 |
|
||||
| venu3s | Y | 786,432 |
|
||||
| venu441mm | Y | 786,432 |
|
||||
| venu445mm | Y | 786,432 |
|
||||
| venusq2 | Y | 786,432 |
|
||||
| venusq2m | Y | 786,432 |
|
||||
| venux1 | Y | 786,432 |
|
||||
| vivoactive5 | Y | 786,432 |
|
||||
| vivoactive6 | Y | 786,432 |
|
||||
| approachs62 | N | 1,048,576 |
|
||||
| d2air | Y | 1,048,576 |
|
||||
| edge1030 | Y | 1,048,576 |
|
||||
| edge1030bontrager | Y | 1,048,576 |
|
||||
| edge1030plus | Y | 1,048,576 |
|
||||
| edge1040 | Y | 1,048,576 |
|
||||
| edge1050 | Y | 1,048,576 |
|
||||
| edge520plus | Y | 1,048,576 |
|
||||
| edge530 | Y | 1,048,576 |
|
||||
| edge540 | Y | 1,048,576 |
|
||||
| edge550 | Y | 1,048,576 |
|
||||
| edge820 | Y | 1,048,576 |
|
||||
| edge830 | Y | 1,048,576 |
|
||||
| edge840 | Y | 1,048,576 |
|
||||
| edge850 | Y | 1,048,576 |
|
||||
| edgeexplore | Y | 1,048,576 |
|
||||
| edgeexplore2 | Y | 1,048,576 |
|
||||
| edgemtb | Y | 1,048,576 |
|
||||
| edge_1000 | N | 1,048,576 |
|
||||
| epix | N | 1,048,576 |
|
||||
| fr645m | Y | 1,048,576 |
|
||||
| legacyherocaptainmarvel | Y | 1,048,576 |
|
||||
| legacyherofirstavenger | Y | 1,048,576 |
|
||||
| legacysagadarthvader | Y | 1,048,576 |
|
||||
| legacysagarey | Y | 1,048,576 |
|
||||
| venu | Y | 1,048,576 |
|
||||
| venud | Y | 1,048,576 |
|
||||
| venusqm | Y | 1,048,576 |
|
||||
| vivoactive3m | Y | 1,048,576 |
|
||||
| vivoactive3mlte | Y | 1,048,576 |
|
||||
| vivoactive4 | Y | 1,048,576 |
|
||||
| vivoactive4s | Y | 1,048,576 |
|
||||
| d2charlie | N | 1,310,720 |
|
||||
| d2delta | Y | 1,310,720 |
|
||||
| d2deltapx | Y | 1,310,720 |
|
||||
| d2deltas | Y | 1,310,720 |
|
||||
| descentmk1 | N | 1,310,720 |
|
||||
| descentmk2 | Y | 1,310,720 |
|
||||
| descentmk2s | Y | 1,310,720 |
|
||||
| fenix5plus | Y | 1,310,720 |
|
||||
| fenix5splus | Y | 1,310,720 |
|
||||
| fenix5x | Y | 1,310,720 |
|
||||
| fenix5xplus | Y | 1,310,720 |
|
||||
| fenix6pro | Y | 1,310,720 |
|
||||
| fenix6spro | Y | 1,310,720 |
|
||||
| fenix6xpro | Y | 1,310,720 |
|
||||
| fr245m | Y | 1,310,720 |
|
||||
| fr745 | Y | 1,310,720 |
|
||||
| fr945 | Y | 1,310,720 |
|
||||
| fr945lte | Y | 1,310,720 |
|
||||
| marqadventurer | Y | 1,310,720 |
|
||||
| marqathlete | Y | 1,310,720 |
|
||||
| marqaviator | Y | 1,310,720 |
|
||||
| marqcaptain | Y | 1,310,720 |
|
||||
| marqcommander | Y | 1,310,720 |
|
||||
| marqdriver | Y | 1,310,720 |
|
||||
| marqexpedition | Y | 1,310,720 |
|
||||
| marqgolfer | Y | 1,310,720 |
|
||||
| gpsmap66 | Y | 2,359,296 |
|
||||
| gpsmap67 | Y | 2,359,296 |
|
||||
| gpsmap86 | N | 2,359,296 |
|
||||
| gpsmaph1 | Y | 2,359,296 |
|
||||
| montana7xx | Y | 2,359,296 |
|
||||
| oregon7xx | N | 2,359,296 |
|
||||
| rino7xx | N | 2,359,296 |
|
||||
@@ -1,4 +1,4 @@
|
||||
[Home](README.md) | [Switches](examples/Switches.md) | [Actions](examples/Actions.md) | [Templates](examples/Templates.md) | [Glance](examples/Glance.md) | [Background Service](BackgroundService.md) | [Wi-Fi](Wi-Fi.md) | [HTTP Headers](HTTP_Headers.md) | [Trouble Shooting](TroubleShooting.md) | [Version History](HISTORY.md)
|
||||
[Home](README.md) | [Switches](examples/Switches.md) | [Actions](examples/Actions.md) | [Templates](examples/Templates.md) | [Numeric](examples/Numeric.md) | [Glance](examples/Glance.md) | [Background Service](BackgroundService.md) | [Wi-Fi](Wi-Fi.md) | [HTTP Headers](HTTP_Headers.md) | [Trouble Shooting](TroubleShooting.md) | [Version History](HISTORY.md)
|
||||
|
||||
# Version History
|
||||
|
||||
@@ -49,5 +49,8 @@
|
||||
| 3.1 | Added the ability for users to provide [custom HTTP headers](HTTP_Headers.md) for their HomeAssistant server. Improved German language translations. Thanks to [@tispokes](https://github.com/tispokes) for assisting with both of those. Removed all groups in settings as the SDK is buggy. Fixed a bug with templates in glances causing application crash on startup. |
|
||||
| 3.2 | Only enable or disable sensors on HomeAssistant when the background service options is changed, i.e. do not call the API to enable on start up every time. |
|
||||
| 3.3 | Providing automatic detection for menu definition updates, but still requires an application restart. |
|
||||
| 3.4 | Fixed a bug where templates failed to display in toggle menu items (at least on some devices). Fixed a bug where a menu item requesting to exit on completion appeared to indicate failure when using Wi-Fi or LTE. The fix uses a delay in exiting the application modelled as sufficient for a Venu 2 device, so this might need tweaking for other devices. Attempt to fixed an "Out of Memory" bug caused by v3.3 by making automatic checking for menu updates both optional and automatically turned off when insufficient memory is available. This last bug is device dependent and may require another attempt. Internationalisation improvements with thanks to @krzys_h for a new automated translations script. |
|
||||
| 3.4 | Fixed a bug where templates failed to display in toggle menu items (at least on some devices). Fixed a bug where a menu item requesting to exit on completion appeared to indicate failure when using Wi-Fi or LTE. The fix uses a delay in exiting the application modelled as sufficient for a Venu 2 device, so this might need tweaking for other devices. Attempt to fixed an "Out of Memory" bug caused by v3.3 by making automatic checking for menu updates both optional and automatically turned off when insufficient memory is available. This last bug is device dependent and may require another attempt. Internationalisation improvements with thanks to [@krzys_h](https://github.com/krzys-h) for a new automated translations script. |
|
||||
| 3.5 | Added support for Edge 550, 850 & MTB, Fenix 8 Pro 47mm, GPSMAP H1, Instinct Crossover AMOLED, Venu 4 41mm & 45mm, & Venu X1 devices which also required an SDK update to 8.3.0. The simulation of the Edge 850 device was off, as it failed to update the display and text was the wrong colour, but the buttons menu items operated HA correctly. The assumption is the simulation model is buggy until someone [reports](https://github.com/house-of-abbey/GarminHomeAssistant/issues) otherwise. |
|
||||
| 3.6 | Added `numeric` menu item type thanks to [@thmichel](https://github.com/thmichel). This allows you to select a numeric value to set for an entity. Confirmations can now display a user supplied message. [Schema update](README.md#old-deprecated-formats) to keep pace with HomeAssistant and correct a previous decision. Schema changes for consistency. |
|
||||
| 3.7 | Bug fix for `numeric` menu items not working over Wi-Fi & LTE. |
|
||||
| 3.8 | Added icon for `numeric` menu items and revised icons in general. |
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[Home](README.md) | [Switches](examples/Switches.md) | [Actions](examples/Actions.md) | [Templates](examples/Templates.md) | [Glance](examples/Glance.md) | [Background Service](BackgroundService.md) | [Wi-Fi](Wi-Fi.md) | [HTTP Headers](HTTP_Headers.md) | [Trouble Shooting](TroubleShooting.md) | [Version History](HISTORY.md)
|
||||
[Home](README.md) | [Switches](examples/Switches.md) | [Actions](examples/Actions.md) | [Templates](examples/Templates.md) | [Numeric](examples/Numeric.md) | [Glance](examples/Glance.md) | [Background Service](BackgroundService.md) | [Wi-Fi](Wi-Fi.md) | [HTTP Headers](HTTP_Headers.md) | [Trouble Shooting](TroubleShooting.md) | [Version History](HISTORY.md)
|
||||
|
||||
# User Specified Custom HTTP Headers
|
||||
|
||||
|
||||
141
README.md
@@ -1,4 +1,4 @@
|
||||
[Home](README.md) | [Switches](examples/Switches.md) | [Actions](examples/Actions.md) | [Templates](examples/Templates.md) | [Glance](examples/Glance.md) | [Background Service](BackgroundService.md) | [Wi-Fi](Wi-Fi.md) | [HTTP Headers](HTTP_Headers.md) | [Trouble Shooting](TroubleShooting.md) | [Version History](HISTORY.md)
|
||||
[Home](README.md) | [Switches](examples/Switches.md) | [Actions](examples/Actions.md) | [Templates](examples/Templates.md) | [Numeric](examples/Numeric.md) | [Glance](examples/Glance.md) | [Background Service](BackgroundService.md) | [Wi-Fi](Wi-Fi.md) | [HTTP Headers](HTTP_Headers.md) | [Trouble Shooting](TroubleShooting.md) | [Version History](HISTORY.md)
|
||||
|
||||
# GarminHomeAssistant
|
||||
|
||||
@@ -81,7 +81,7 @@ Example schema:
|
||||
"name": "Food is Ready!",
|
||||
"type": "tap",
|
||||
"tap_action": {
|
||||
"service": "script.turn_on",
|
||||
"action": "script.turn_on",
|
||||
"confirm": true
|
||||
}
|
||||
},
|
||||
@@ -132,7 +132,7 @@ Example schema:
|
||||
"name": "Turn off USBs",
|
||||
"type": "tap",
|
||||
"tap_action": {
|
||||
"service": "automation.trigger"
|
||||
"action": "automation.trigger"
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -140,27 +140,26 @@ Example schema:
|
||||
"name": "TV Lights Scene",
|
||||
"type": "tap",
|
||||
"tap_action": {
|
||||
"service": "scene.turn_on",
|
||||
"action": "scene.turn_on",
|
||||
"pin": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Heating",
|
||||
"content": "{{ ' %.1f' | format(state_attr('climate.myheating','temperature')) }}",
|
||||
"type": "numeric",
|
||||
"entity": "climate.myheating",
|
||||
"tap_action": {
|
||||
"service": "climate.set_temperature",
|
||||
"data": {
|
||||
"step": "0.5",
|
||||
"start": "10",
|
||||
"stop": "30",
|
||||
"valueLabel": "temperature",
|
||||
"formatString": "%.1f"
|
||||
}
|
||||
},
|
||||
"pin": false
|
||||
} ,
|
||||
"name": "Heating",
|
||||
"content": "{{ ' %.1f' | format(state_attr('climate.room','temperature')) }}",
|
||||
"type": "numeric",
|
||||
"entity": "climate.room",
|
||||
"tap_action": {
|
||||
"action": "climate.set_temperature",
|
||||
"picker": {
|
||||
"step": 0.5,
|
||||
"start": 10,
|
||||
"stop": 30,
|
||||
"attribute": "temperature",
|
||||
"data_attribute": "temperature"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
@@ -172,35 +171,47 @@ The example above illustrates how to configure:
|
||||
* Lights or switches (`toggle`), <img src="images/toggle_icon.png" height="20">
|
||||
* Enables for automations (`toggle`), <img src="images/toggle_icon.png" height="20">
|
||||
* Script invocation (`tap`)
|
||||
* Service invocation, e.g. Scene setting, (`tap`)
|
||||
* Action invocation, e.g. Scene setting, (`tap`)
|
||||
* A sub-menu to open (`group`)
|
||||
* A numeric item (`numeric`), which allows you to set a numeric value e.g. for heating or a dimmer. ValueLabel defines the variable to return. You can optionally set the minimum (start) and maximum (stop) value as well as the step to increase/decrease and a tepmlate how to format the value.
|
||||
* A numeric item (`numeric`), which allows you to set a numeric value e.g. for heating or a dimmer. This is [explained more fully](examples/Numeric.md) in its own examples page.
|
||||
* You can also display the status of devices (`info`) which is essentially a `tap` with no action
|
||||
* All menu items can display the results of evaluating [templates](examples/Templates.md).
|
||||
|
||||
The following table indicates how HomeAssistant entity types can map to the Garmin applications menu types. Presently, an automation is the only one that can be either a `tap` or a `toggle`.
|
||||
|
||||
| HA Entity Type | Tap | Toggle | Info (status)|
|
||||
|------------------|:---:|:------:|:------------:|
|
||||
| Switch | ❌ | ✅ | ✅ |
|
||||
| Light | ❌ | ✅ | ✅ |
|
||||
| Automation | ✅ | ✅ | ❌ |
|
||||
| Script | ✅ | ❌ | ❌ |
|
||||
| Scene | ✅ | ❌ | ❌ |
|
||||
| Sensor | ❌ | ❌ | ✅ |
|
||||
| Binary Sensor | ❌ | ❌ | ✅ |
|
||||
| Any other entity | ❌ | ❌ | ✅ |
|
||||
| Any service | ✅ | ❌ | ❌ |
|
||||
| HA Entity Type | Tap | Toggle | Info (status)| Numeric |
|
||||
|------------------|:---:|:------:|:------------:|:-------:|
|
||||
| Switch | ❌ | ✅ | ✅ | ❌ |
|
||||
| Switched Light | ❌ | ✅ | ✅ | ❌ |
|
||||
| Dimmer Light | ❌ | ❌ | ✅ | ✅ |
|
||||
| Automation | ✅ | ✅ | ❌ | ❌ |
|
||||
| Script | ✅ | ❌ | ❌ | ❌ |
|
||||
| Scene | ✅ | ❌ | ❌ | ❌ |
|
||||
| Sensor | ❌ | ❌ | ✅ | ❌ |
|
||||
| Binary Sensor | ❌ | ❌ | ✅ | ❌ |
|
||||
| Thermostat | ❌ | ❌ | ✅ | ✅ |
|
||||
| Amplifier | ❌ | ❌ | ✅ | ✅ |
|
||||
| Any other entity | ❌ | ❌ | ✅ | ❌ |
|
||||
| Any action | ✅ | ❌ | ❌ | ❌ |
|
||||
|
||||
Multiple templates are evaluated in a single HTTP request to update their status. Only the toggle items have the on/off <img src="images/toggle_icon.png" height="20"> icon. NB. All `tap` items must specify a `service` tag in the `tap_action` object (see example below).
|
||||
Multiple templates are evaluated in a single HTTP request to update their status. Only the toggle items have the on/off <img src="images/toggle_icon.png" height="20"> icon. NB. All `tap` and `numeric` items must specify a `action` tag in the `tap_action` object (see example below).
|
||||
|
||||
You can now specify alternative texts to use instead of "On" and "Off", e.g. "Locked" and "Unlocked" or "Open" and "Closed" through the use of a [template menu item](examples/Templates.md). But wouldn't having locks operated from your watch be a security concern ;-) ?
|
||||
|
||||
The [schema](https://raw.githubusercontent.com/house-of-abbey/GarminHomeAssistant/main/config.schema.json) is checked by using a URL directly back to this GitHub source repository, so you do not need to install that file. You can just copy & paste your entity names from the YAML configuration files used to configure HomeAssistant. With a submenu, there's a difference between `title` and `name`. The `name` goes on the menu item, and the `title` at the head of the submenu. If your dashboard definition fails to meet the schema, the application will simply drop items with the wrong field names without warning to protect itself.
|
||||
|
||||
### Old deprecated format
|
||||
### Old Deprecated Formats
|
||||
|
||||
Version 1.5 brought in a change to the JSON schema so the following old format remains useable but is no longer favoured. The schema now marks it as 'deprecated' to nudge people over.
|
||||
There are two reasons for the changes to the schema:
|
||||
|
||||
1. HomeAssistant made changes we feel we should track for consistency.
|
||||
2. Retrospectively we decided there was a better way, just like HomeAssistant did. For these changes we apologise.
|
||||
|
||||
#### Service Field
|
||||
|
||||
Version 1.5 brought in a change to the JSON schema so the following old format remains useable but is no longer favoured.
|
||||
|
||||
> [!IMPORTANT] Deprecated:
|
||||
|
||||
```json
|
||||
{
|
||||
@@ -211,7 +222,9 @@ Version 1.5 brought in a change to the JSON schema so the following old format r
|
||||
}
|
||||
```
|
||||
|
||||
The above should be replaced by the following:
|
||||
Version 3.6 brought another change to the JSON schema to follow HomeAssistant's renaming of `service` to `action`.
|
||||
|
||||
> [!IMPORTANT] Deprecated:
|
||||
|
||||
```json
|
||||
{
|
||||
@@ -224,18 +237,66 @@ The above should be replaced by the following:
|
||||
}
|
||||
```
|
||||
|
||||
This allows the `confirm` and `pin` fields to be accommodated in the `tap_action` along side the `service` tag, and follows the HomeAssistant YAML format more closely.
|
||||
The above should be replaced by the following:
|
||||
|
||||
```json
|
||||
{
|
||||
"entity": "scene.tv_light",
|
||||
"name": "TV Lights Scene",
|
||||
"type": "tap",
|
||||
"tap_action": {
|
||||
"action": "scene.turn_on"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
This allows the `confirm` and `pin` fields to be accommodated in the `tap_action` along side the `action` tag, and follows the HomeAssistant YAML format more closely.
|
||||
|
||||
#### Exit Field
|
||||
|
||||
Version 2.31 added an "exit on tap" feature. In retrospect this field should have been nested inside the `tap_action` object.
|
||||
|
||||
> [!IMPORTANT] Deprecated:
|
||||
|
||||
```json
|
||||
{
|
||||
"entity": "automation.turn_off_stuff",
|
||||
"name": "Turn off Stuff",
|
||||
"type": "tap",
|
||||
"tap_action": {
|
||||
"action": "automation.trigger"
|
||||
},
|
||||
"exit": true
|
||||
}
|
||||
```
|
||||
|
||||
The above should be replaced by the following:
|
||||
|
||||
```json
|
||||
{
|
||||
"entity": "automation.turn_off_stuff",
|
||||
"name": "Turn off Stuff",
|
||||
"type": "tap",
|
||||
"tap_action": {
|
||||
"action": "automation.trigger",
|
||||
"exit": true
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
A future move to v3.x will remove support for all deprecated JSON elements to simplify code. **Please ensure you track the schema changes in readiness.**
|
||||
|
||||
### More Examples
|
||||
|
||||
* [Switches](examples/Switches.md)
|
||||
* [Actions](examples/Actions.md)
|
||||
* [Templates](examples/Templates.md)
|
||||
* [Numeric](examples/Numeric.md)
|
||||
|
||||
## Editing the JSON file
|
||||
|
||||
You have options. The first is what we use.
|
||||
1. **Best!** Use the GarminHomeAssistant [Web-based Editor](https://house-of-abbey.github.io/GarminHomeAssistant/web/) which includes `entity` and `service` name completion and validation by fetching data from your own HomeAssistant instance. _Pretty nifty eh?_ The other method listed below do not add this convenience and checking.
|
||||
1. **Best!** Use the GarminHomeAssistant [Web-based Editor](https://house-of-abbey.github.io/GarminHomeAssistant/web/) which includes `entity` and `action` name completion and validation by fetching data from your own HomeAssistant instance. _Pretty nifty eh?_ The other method listed below do not add this convenience and checking.
|
||||
2. Use the [Studio Code Server](https://community.home-assistant.io/t/home-assistant-community-add-on-visual-studio-code/107863) addon for HomeAssistant. You can then edit your JSON file in place.
|
||||
3. Locally installed VSCode, or if not installed, try
|
||||
4. The on-line version at https://vscode.dev/, which works really well.
|
||||
@@ -382,6 +443,8 @@ Check the latest unresolved [issues](https://github.com/house-of-abbey/GarminHom
|
||||
|
||||
9. When using Wi-Fi or LTE to toggle a light, the `toggle` will fail when the default or current state of the application's menu does not match the state of the light. The same applies to a cover or other thing that can be toggled. This is because the application is unable to initialise the menu with the current state without Bluetooth. Hence the Wi-Fi/LTE functionality is best used with `tap` items only.
|
||||
|
||||
10. There are memory limits, particularly for older devices. Please see the [explanation of the memory limits](Devices.md) and device support.
|
||||
|
||||
# Authors & Contributors
|
||||
|
||||
For an up to date list of all authors and contributors, please check the [contributor's page](https://github.com/house-of-abbey/GarminHomeAssistant/graphs/contributors). Thank you all for improving this application.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[Home](README.md) | [Switches](examples/Switches.md) | [Actions](examples/Actions.md) | [Templates](examples/Templates.md) | [Glance](examples/Glance.md) | [Background Service](BackgroundService.md) | [Wi-Fi](Wi-Fi.md) | [HTTP Headers](HTTP_Headers.md) | [Trouble Shooting](TroubleShooting.md) | [Version History](HISTORY.md)
|
||||
[Home](README.md) | [Switches](examples/Switches.md) | [Actions](examples/Actions.md) | [Templates](examples/Templates.md) | [Numeric](examples/Numeric.md) | [Glance](examples/Glance.md) | [Background Service](BackgroundService.md) | [Wi-Fi](Wi-Fi.md) | [HTTP Headers](HTTP_Headers.md) | [Trouble Shooting](TroubleShooting.md) | [Version History](HISTORY.md)
|
||||
|
||||
# Troubleshooting Guides
|
||||
|
||||
@@ -315,9 +315,15 @@ JSON for copy & paste:
|
||||
|
||||

|
||||
|
||||
When the application persists in reporting "No JSON returned from HTTP request." this might be due to a mismatch between the Webhook ID and the device settings on the HomeAssistant server. We have discovered that the Webhook ID is required for HomeAssistant API calls with templates in order to work in a non-privileged account. The application options include the ability to clear the Webhook ID in the application forcing a new one to be set up. This should prevent the above error being shown on startup.
|
||||
When the application persists in reporting _"No JSON returned from HTTP request"_ this might be due to a mismatch between the Webhook ID and the device settings on the HomeAssistant server. We have discovered that the Webhook ID is required for HomeAssistant API calls with templates in order to work in a non-privileged account. The application options include the ability to clear the Webhook ID in the application forcing a new one to be set up. This should prevent the above error being shown on startup.
|
||||
|
||||
Look for this option in the application settings:
|
||||

|
||||
|
||||
We now also have reports of an [HTTP 410](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status/410) error occurring after an application update. With thanks to [@Aaroneisele55](https://github.com/Aaroneisele55) for resolving this issue also by the clearing of the Webhook ID. The cause of the problem remains unknown as updates do not generally require this correction between the Home Assistant server and the watch settings.
|
||||
|
||||
**Therefore, when the URL is known to work, any failure to return the JSON menu definition from an HTTPS request should try resetting the Webhook ID used with Home Assistant.**
|
||||
|
||||
To reset the Webhook ID look for this option in the application settings:
|
||||
|
||||

|
||||
|
||||
|
||||
2
Wi-Fi.md
@@ -1,4 +1,4 @@
|
||||
[Home](README.md) | [Switches](examples/Switches.md) | [Actions](examples/Actions.md) | [Templates](examples/Templates.md) | [Glance](examples/Glance.md) | [Background Service](BackgroundService.md) | [Wi-Fi](Wi-Fi.md) | [HTTP Headers](HTTP_Headers.md) | [Trouble Shooting](TroubleShooting.md) | [Version History](HISTORY.md)
|
||||
[Home](README.md) | [Switches](examples/Switches.md) | [Actions](examples/Actions.md) | [Templates](examples/Templates.md) | [Numeric](examples/Numeric.md) | [Glance](examples/Glance.md) | [Background Service](BackgroundService.md) | [Wi-Fi](Wi-Fi.md) | [HTTP Headers](HTTP_Headers.md) | [Trouble Shooting](TroubleShooting.md) | [Version History](HISTORY.md)
|
||||
|
||||
# Wi-Fi & LTE
|
||||
|
||||
|
||||
@@ -47,7 +47,8 @@
|
||||
"$ref": "#/$defs/enabled"
|
||||
},
|
||||
"exit": {
|
||||
"$ref": "#/$defs/exit"
|
||||
"$ref": "#/$defs/exit",
|
||||
"deprecated": true
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
@@ -58,6 +59,7 @@
|
||||
"additionalProperties": false
|
||||
},
|
||||
"template": {
|
||||
"deprecated": true,
|
||||
"oneOf": [
|
||||
{
|
||||
"type": "object",
|
||||
@@ -112,26 +114,14 @@
|
||||
"description": "Use 'info' or 'tap' instead."
|
||||
},
|
||||
"tap_action": {
|
||||
"$ref": "#/$defs/tap_action",
|
||||
"properties": {
|
||||
"service": {
|
||||
"$ref": "#/$defs/service"
|
||||
},
|
||||
"data": {
|
||||
"type": "object",
|
||||
"title": "Your services's parameters",
|
||||
"description": "The object containing the parameters and their values to be passed to the entity. No schema checking can be done here, you are on your own! On application crash, remove the parameters."
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"service"
|
||||
]
|
||||
"$ref": "#/$defs/tap_action_tap"
|
||||
},
|
||||
"enabled": {
|
||||
"$ref": "#/$defs/enabled"
|
||||
},
|
||||
"exit": {
|
||||
"$ref": "#/$defs/exit"
|
||||
"$ref": "#/$defs/exit",
|
||||
"deprecated": true
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
@@ -185,32 +175,20 @@
|
||||
"$ref": "#/$defs/content"
|
||||
},
|
||||
"service": {
|
||||
"$ref": "#/$defs/service",
|
||||
"$ref": "#/$defs/action",
|
||||
"deprecated": true,
|
||||
"title": "Schema change:",
|
||||
"description": "Use 'tap_action' instead to mirror Home Assistant."
|
||||
},
|
||||
"tap_action": {
|
||||
"$ref": "#/$defs/tap_action",
|
||||
"properties": {
|
||||
"service": {
|
||||
"$ref": "#/$defs/service"
|
||||
},
|
||||
"data": {
|
||||
"type": "object",
|
||||
"title": "Your services's parameters",
|
||||
"description": "The object containing the parameters and their values to be passed to the entity. No schema checking can be done here, you are on your own! On application crash, remove the parameters."
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"service"
|
||||
]
|
||||
"$ref": "#/$defs/tap_action_tap"
|
||||
},
|
||||
"enabled": {
|
||||
"$ref": "#/$defs/enabled"
|
||||
},
|
||||
"exit": {
|
||||
"$ref": "#/$defs/exit"
|
||||
"$ref": "#/$defs/exit",
|
||||
"deprecated": true
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
@@ -275,7 +253,51 @@
|
||||
"$ref": "#/$defs/content"
|
||||
},
|
||||
"tap_action": {
|
||||
"$ref": "#/$defs/tap_action"
|
||||
"$ref": "#/$defs/tap_action",
|
||||
"properties": {
|
||||
"action": {
|
||||
"$ref": "#/$defs/action"
|
||||
},
|
||||
"picker": {
|
||||
"type": "object",
|
||||
"title": "Number picker configuration",
|
||||
"description": "'attribute' field is optional.",
|
||||
"properties": {
|
||||
"min": {
|
||||
"type": "number",
|
||||
"title": "Minimum Value"
|
||||
},
|
||||
"max": {
|
||||
"type": "number",
|
||||
"title": "Maximum Value"
|
||||
},
|
||||
"step": {
|
||||
"type": "number",
|
||||
"title": "Step Size"
|
||||
},
|
||||
"attribute": {
|
||||
"type": "string",
|
||||
"title": "Attribute on the entity",
|
||||
"description": "Attribute on the entity with the current numeric value. To use the state of the entity, do not specify."
|
||||
},
|
||||
"data_attribute": {
|
||||
"type": "string",
|
||||
"title": "Attribute on the action data",
|
||||
"description": "Attribute on the action data for the value to set."
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"min",
|
||||
"max",
|
||||
"step",
|
||||
"data_attribute"
|
||||
]
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"action",
|
||||
"picker"
|
||||
]
|
||||
},
|
||||
"enabled": {
|
||||
"$ref": "#/$defs/enabled"
|
||||
@@ -283,50 +305,15 @@
|
||||
"exit": {
|
||||
"$ref": "#/$defs/exit"
|
||||
},
|
||||
"min": {
|
||||
"type": "number",
|
||||
"title": "Minimum Value"
|
||||
},
|
||||
"max": {
|
||||
"type": "number",
|
||||
"title": "Maximum Value"
|
||||
},
|
||||
"step": {
|
||||
"type": "number",
|
||||
"title": "Step Size"
|
||||
},
|
||||
"display_format": {
|
||||
"type": "string",
|
||||
"title": "Display Format",
|
||||
"description": "A C-Style format string for displaying the value in the UI. https://developer.garmin.com/connect-iq/api-docs/Toybox/Lang/Number.html#format-instance_function",
|
||||
"default": "%.1f"
|
||||
},
|
||||
"entity": {
|
||||
"$ref": "#/$defs/entity"
|
||||
},
|
||||
"attribute": {
|
||||
"type": "string",
|
||||
"title": "Attribute on the entity",
|
||||
"description": "Attribute on the entity with the current numeric value. To use the state of the entity, do not specify."
|
||||
},
|
||||
"service": {
|
||||
"$ref": "#/$defs/service"
|
||||
},
|
||||
"data_attribute": {
|
||||
"type": "string",
|
||||
"title": "Attribute on the service data",
|
||||
"description": "Attribute on the service data for the value to set."
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"name",
|
||||
"type",
|
||||
"min",
|
||||
"max",
|
||||
"step",
|
||||
"entity",
|
||||
"service",
|
||||
"data_attribute"
|
||||
"tap_action"
|
||||
],
|
||||
"additionalProperties": false
|
||||
},
|
||||
@@ -345,21 +332,31 @@
|
||||
},
|
||||
"then": {
|
||||
"properties": {
|
||||
"attribute": {
|
||||
"const": "brightness"
|
||||
},
|
||||
"service": {
|
||||
"const": "light.turn_on"
|
||||
},
|
||||
"data_attribute": {
|
||||
"const": "brightness"
|
||||
},
|
||||
"min": {
|
||||
"const": 0
|
||||
},
|
||||
"max": {
|
||||
"const": 255,
|
||||
"description": "Lights are not a percentage."
|
||||
"tap_action": {
|
||||
"properties": {
|
||||
"action": {
|
||||
"const": "light.turn_on"
|
||||
},
|
||||
"picker": {
|
||||
"properties": {
|
||||
"attribute": {
|
||||
"const": "brightness"
|
||||
},
|
||||
"data_attribute": {
|
||||
"const": "brightness"
|
||||
},
|
||||
"min": {
|
||||
"type": "integer",
|
||||
"minimum": 0
|
||||
},
|
||||
"max": {
|
||||
"type": "integer",
|
||||
"max": 255,
|
||||
"description": "Lights are not a percentage."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -373,20 +370,25 @@
|
||||
},
|
||||
"then": {
|
||||
"properties": {
|
||||
"attribute": {
|
||||
"const": "value"
|
||||
},
|
||||
"service": {
|
||||
"const": "input_number.set_value"
|
||||
},
|
||||
"data_attribute": {
|
||||
"const": "value"
|
||||
"tap_action": {
|
||||
"properties": {
|
||||
"action": {
|
||||
"const": "input_number.set_value"
|
||||
},
|
||||
"picker": {
|
||||
"properties": {
|
||||
"data_attribute": {
|
||||
"const": "value"
|
||||
}
|
||||
},
|
||||
"not": {
|
||||
"required": [
|
||||
"attribute"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"not": {
|
||||
"required": [
|
||||
"attribute"
|
||||
]
|
||||
}
|
||||
},
|
||||
"else": {
|
||||
@@ -399,20 +401,25 @@
|
||||
},
|
||||
"then": {
|
||||
"properties": {
|
||||
"attribute": {
|
||||
"const": "value"
|
||||
},
|
||||
"service": {
|
||||
"const": "number.set_value"
|
||||
},
|
||||
"data_attribute": {
|
||||
"const": "value"
|
||||
"tap_action": {
|
||||
"properties": {
|
||||
"action": {
|
||||
"const": "number.set_value"
|
||||
},
|
||||
"picker": {
|
||||
"properties": {
|
||||
"data_attribute": {
|
||||
"const": "value"
|
||||
}
|
||||
},
|
||||
"not": {
|
||||
"required": [
|
||||
"attribute"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"not": {
|
||||
"required": [
|
||||
"attribute"
|
||||
]
|
||||
}
|
||||
},
|
||||
"else": {
|
||||
@@ -425,20 +432,30 @@
|
||||
},
|
||||
"then": {
|
||||
"properties": {
|
||||
"attribute": {
|
||||
"const": "percentage"
|
||||
},
|
||||
"service": {
|
||||
"const": "fan.set_percentage"
|
||||
},
|
||||
"data_attribute": {
|
||||
"const": "percentage"
|
||||
},
|
||||
"min": {
|
||||
"const": 0
|
||||
},
|
||||
"max": {
|
||||
"const": 100
|
||||
"tap_action": {
|
||||
"properties": {
|
||||
"action": {
|
||||
"const": "fan.set_percentage"
|
||||
},
|
||||
"picker": {
|
||||
"properties": {
|
||||
"attribute": {
|
||||
"const": "percentage"
|
||||
},
|
||||
"data_attribute": {
|
||||
"const": "percentage"
|
||||
},
|
||||
"min": {
|
||||
"type": "integer",
|
||||
"minimum": 0
|
||||
},
|
||||
"max": {
|
||||
"type": "integer",
|
||||
"maximum": 100
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -452,20 +469,30 @@
|
||||
},
|
||||
"then": {
|
||||
"properties": {
|
||||
"attribute": {
|
||||
"const": "position"
|
||||
},
|
||||
"service": {
|
||||
"const": "valve.set_valve_position"
|
||||
},
|
||||
"data_attribute": {
|
||||
"const": "position"
|
||||
},
|
||||
"min": {
|
||||
"const": 0
|
||||
},
|
||||
"max": {
|
||||
"const": 100
|
||||
"tap_action": {
|
||||
"properties": {
|
||||
"action": {
|
||||
"const": "valve.set_valve_position"
|
||||
},
|
||||
"picker": {
|
||||
"properties": {
|
||||
"attribute": {
|
||||
"const": "position"
|
||||
},
|
||||
"data_attribute": {
|
||||
"const": "position"
|
||||
},
|
||||
"min": {
|
||||
"type": "integer",
|
||||
"minimum": 0
|
||||
},
|
||||
"max": {
|
||||
"type": "integer",
|
||||
"maximum": 100
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -478,48 +505,129 @@
|
||||
}
|
||||
},
|
||||
"then": {
|
||||
"properties": {
|
||||
"attribute": {
|
||||
"const": "position"
|
||||
"allOf": [
|
||||
{
|
||||
"properties": {
|
||||
"tap_action": {
|
||||
"properties": {
|
||||
"action": {
|
||||
"enum": [
|
||||
"cover.set_position",
|
||||
"cover.set_tilt_position"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"service": {
|
||||
"const": "cover.set_position"
|
||||
},
|
||||
"data_attribute": {
|
||||
"const": "position"
|
||||
},
|
||||
"min": {
|
||||
"const": 0
|
||||
},
|
||||
"max": {
|
||||
"const": 100
|
||||
{
|
||||
"if": {
|
||||
"properties": {
|
||||
"tap_action": {
|
||||
"properties": {
|
||||
"action": {
|
||||
"const": "cover.set_tilt_position"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"then": {
|
||||
"properties": {
|
||||
"tap_action": {
|
||||
"properties": {
|
||||
"action": {
|
||||
"const": "cover.set_tilt_position"
|
||||
},
|
||||
"picker": {
|
||||
"properties": {
|
||||
"attribute": {
|
||||
"const": "tilt_position"
|
||||
},
|
||||
"data_attribute": {
|
||||
"const": "tilt_position"
|
||||
},
|
||||
"min": {
|
||||
"type": "integer",
|
||||
"minimum": 0
|
||||
},
|
||||
"max": {
|
||||
"type": "integer",
|
||||
"maximum": 100
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"else": {
|
||||
"properties": {
|
||||
"tap_action": {
|
||||
"properties": {
|
||||
"action": {
|
||||
"const": "cover.set_position"
|
||||
},
|
||||
"picker": {
|
||||
"properties": {
|
||||
"attribute": {
|
||||
"const": "position"
|
||||
},
|
||||
"data_attribute": {
|
||||
"const": "position"
|
||||
},
|
||||
"min": {
|
||||
"type": "integer",
|
||||
"minimum": 0
|
||||
},
|
||||
"max": {
|
||||
"type": "integer",
|
||||
"maximum": 100
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"else": {
|
||||
"if": {
|
||||
"properties": {
|
||||
"entity": {
|
||||
"pattern": "^cover\\.[^.]+$"
|
||||
"pattern": "^media_player\\.[^.]+$"
|
||||
}
|
||||
}
|
||||
},
|
||||
"then": {
|
||||
"properties": {
|
||||
"attribute": {
|
||||
"const": "tilt_position"
|
||||
},
|
||||
"service": {
|
||||
"const": "cover.set_tilt_position"
|
||||
},
|
||||
"data_attribute": {
|
||||
"const": "tilt_position"
|
||||
},
|
||||
"min": {
|
||||
"const": 0
|
||||
},
|
||||
"max": {
|
||||
"const": 100
|
||||
"tap_action": {
|
||||
"properties": {
|
||||
"action": {
|
||||
"const": "media_player.volume_set"
|
||||
},
|
||||
"picker": {
|
||||
"properties": {
|
||||
"attribute": {
|
||||
"const": "volume_level"
|
||||
},
|
||||
"data_attribute": {
|
||||
"const": "volume_level"
|
||||
},
|
||||
"min": {
|
||||
"type": "number",
|
||||
"minimum": 0
|
||||
},
|
||||
"max": {
|
||||
"type": "number",
|
||||
"maximum": 1,
|
||||
"description": "Fraction [0,1], not percentage."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -527,47 +635,32 @@
|
||||
"if": {
|
||||
"properties": {
|
||||
"entity": {
|
||||
"pattern": "^media_player\\.[^.]+$"
|
||||
"pattern": "^climate\\.[^.]+$"
|
||||
}
|
||||
}
|
||||
},
|
||||
"then": {
|
||||
"properties": {
|
||||
"attribute": {
|
||||
"const": "volume_level"
|
||||
},
|
||||
"service": {
|
||||
"const": "media_player.volume_set"
|
||||
},
|
||||
"data_attribute": {
|
||||
"const": "volume_level"
|
||||
},
|
||||
"min": {
|
||||
"const": 0
|
||||
},
|
||||
"max": {
|
||||
"const": 1
|
||||
}
|
||||
}
|
||||
},
|
||||
"else": {
|
||||
"if": {
|
||||
"tap_action": {
|
||||
"properties": {
|
||||
"entity": {
|
||||
"pattern": "^climate\\.[^.]+$"
|
||||
}
|
||||
}
|
||||
},
|
||||
"then": {
|
||||
"properties": {
|
||||
"attribute": {
|
||||
"const": "temperature"
|
||||
},
|
||||
"service": {
|
||||
"const": "climate.set_temperature"
|
||||
},
|
||||
"data_attribute": {
|
||||
"const": "temperature"
|
||||
"properties": {
|
||||
"action": {
|
||||
"const": "climate.set_temperature"
|
||||
},
|
||||
"picker": {
|
||||
"properties": {
|
||||
"attribute": {
|
||||
"const": "temperature"
|
||||
},
|
||||
"data_attribute": {
|
||||
"const": "temperature"
|
||||
}
|
||||
},
|
||||
"not": {
|
||||
"required": [
|
||||
"attribute"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -584,7 +677,7 @@
|
||||
},
|
||||
"type": {
|
||||
"title": "Menu item type",
|
||||
"description": "One of 'info', 'tap', 'toggle' or 'group'."
|
||||
"description": "One of 'info', 'tap', 'toggle', 'group' or 'numeric'."
|
||||
},
|
||||
"items": {
|
||||
"type": "array",
|
||||
@@ -594,7 +687,7 @@
|
||||
"type": "tap",
|
||||
"name": "Example",
|
||||
"tap_action": {
|
||||
"service": "notify.notify",
|
||||
"action": "notify.notify",
|
||||
"data": {
|
||||
"message": "Example"
|
||||
}
|
||||
@@ -615,96 +708,131 @@
|
||||
"type": "numeric",
|
||||
"name": "Example",
|
||||
"entity": "light.example",
|
||||
"attribute": "brightness",
|
||||
"service": "light.turn_on",
|
||||
"data_attribute": "brightness",
|
||||
"min": 0,
|
||||
"max": 255,
|
||||
"step": 1
|
||||
"tap_action": {
|
||||
"action": "light.turn_on",
|
||||
"picker": {
|
||||
"attribute": "brightness",
|
||||
"data_attribute": "brightness",
|
||||
"min": 0,
|
||||
"max": 255,
|
||||
"step": 1
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "numeric",
|
||||
"name": "Example",
|
||||
"entity": "input_number.example",
|
||||
"service": "input_number.set_value",
|
||||
"data_attribute": "value",
|
||||
"min": 0,
|
||||
"max": 100,
|
||||
"step": 1
|
||||
"tap_action": {
|
||||
"action": "input_number.set_value",
|
||||
"picker": {
|
||||
"data_attribute": "value",
|
||||
"min": 0,
|
||||
"max": 100,
|
||||
"step": 1
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "numeric",
|
||||
"name": "Example",
|
||||
"entity": "number.example",
|
||||
"service": "number.set_value",
|
||||
"data_attribute": "value",
|
||||
"min": 0,
|
||||
"max": 100,
|
||||
"step": 1
|
||||
"tap_action": {
|
||||
"action": "number.set_value",
|
||||
"picker": {
|
||||
"data_attribute": "value",
|
||||
"min": 0,
|
||||
"max": 100,
|
||||
"step": 1
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "numeric",
|
||||
"name": "Example",
|
||||
"entity": "fan.example",
|
||||
"attribute": "percentage",
|
||||
"service": "fan.set_percentage",
|
||||
"data_attribute": "percentage",
|
||||
"min": 0,
|
||||
"max": 100,
|
||||
"step": 1,
|
||||
"display_format": "%.0f%%"
|
||||
"tap_action": {
|
||||
"action": "fan.set_percentage",
|
||||
"picker": {
|
||||
"attribute": "percentage",
|
||||
"data_attribute": "percentage",
|
||||
"min": 0,
|
||||
"max": 100,
|
||||
"step": 1
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "numeric",
|
||||
"name": "Example",
|
||||
"entity": "valve.example",
|
||||
"attribute": "position",
|
||||
"service": "valve.set_valve_position",
|
||||
"data_attribute": "position",
|
||||
"min": 0,
|
||||
"max": 100,
|
||||
"step": 1
|
||||
"tap_action": {
|
||||
"action": "valve.set_valve_position",
|
||||
"picker": {
|
||||
"attribute": "position",
|
||||
"data_attribute": "position",
|
||||
"min": 0,
|
||||
"max": 100,
|
||||
"step": 1
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "numeric",
|
||||
"name": "Example",
|
||||
"entity": "cover.example",
|
||||
"attribute": "position",
|
||||
"service": "cover.set_position",
|
||||
"data_attribute": "position",
|
||||
"min": 0,
|
||||
"max": 100,
|
||||
"step": 1
|
||||
"tap_action": {
|
||||
"action": "cover.set_position",
|
||||
"picker": {
|
||||
"attribute": "position",
|
||||
"data_attribute": "position",
|
||||
"min": 0,
|
||||
"max": 100,
|
||||
"step": 1
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "numeric",
|
||||
"name": "Example",
|
||||
"entity": "cover.example",
|
||||
"attribute": "tilt_position",
|
||||
"service": "cover.set_tilt_position",
|
||||
"data_attribute": "tilt_position",
|
||||
"min": 0,
|
||||
"max": 100,
|
||||
"step": 1
|
||||
"tap_action": {
|
||||
"action": "cover.set_tilt_position",
|
||||
"picker": {
|
||||
"attribute": "tilt_position",
|
||||
"data_attribute": "tilt_position",
|
||||
"min": 0,
|
||||
"max": 100,
|
||||
"step": 1
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "numeric",
|
||||
"name": "Example",
|
||||
"entity": "media_player.example",
|
||||
"attribute": "volume_level",
|
||||
"service": "media_player.volume_set",
|
||||
"data_attribute": "volume_level",
|
||||
"min": 0,
|
||||
"max": 1,
|
||||
"step": 0.01
|
||||
"tap_action": {
|
||||
"action": "media_player.volume_set",
|
||||
"picker": {
|
||||
"attribute": "volume_level",
|
||||
"data_attribute": "volume_level",
|
||||
"min": 0,
|
||||
"max": 1,
|
||||
"step": 0.01
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "numeric",
|
||||
"name": "Example",
|
||||
"entity": "climate.example",
|
||||
"attribute": "temperature",
|
||||
"service": "climate.set_temperature",
|
||||
"data_attribute": "temperature"
|
||||
"tap_action": {
|
||||
"action": "climate.set_temperature",
|
||||
"picker": {
|
||||
"attribute": "temperature",
|
||||
"data_attribute": "temperature"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"allOf": [
|
||||
@@ -806,34 +934,82 @@
|
||||
"title": "Home Assistant entity name",
|
||||
"pattern": "^[^.]+\\.[^.]+$"
|
||||
},
|
||||
"service": {
|
||||
"action": {
|
||||
"type": "string",
|
||||
"title": "Home Assistant service name",
|
||||
"title": "Home Assistant action name",
|
||||
"pattern": "^[^.]+\\.[^.]+$"
|
||||
},
|
||||
"tap_action_tap": {
|
||||
"allOf": [
|
||||
{
|
||||
"title": "Tap Action",
|
||||
"description": "'confirm' and 'pin' fields are optional. 'action' is required.",
|
||||
"properties": {
|
||||
"service": {
|
||||
"$ref": "#/$defs/action",
|
||||
"deprecated": true
|
||||
},
|
||||
"action": {
|
||||
"$ref": "#/$defs/action"
|
||||
},
|
||||
"data": {
|
||||
"type": "object",
|
||||
"title": "Your actions's parameters",
|
||||
"description": "The object containing the parameters and their values to be passed to the entity. No schema checking can be done here, you are on your own! On application crash, remove the parameters."
|
||||
}
|
||||
},
|
||||
"oneOf": [
|
||||
{
|
||||
"required": [
|
||||
"action"
|
||||
],
|
||||
"not": {
|
||||
"required": [
|
||||
"service"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"required": [
|
||||
"service"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"$ref": "#/$defs/tap_action"
|
||||
}
|
||||
]
|
||||
},
|
||||
"tap_action": {
|
||||
"type": "object",
|
||||
"title": "Action",
|
||||
"description": "'confirm' field is optional.",
|
||||
"title": "Tap Action",
|
||||
"description": "'confirm' and 'pin' fields are optional.",
|
||||
"properties": {
|
||||
"confirm": {
|
||||
"$ref": "#/$defs/confirm"
|
||||
},
|
||||
"pin": {
|
||||
"$ref": "#/$defs/pin"
|
||||
},
|
||||
"exit": {
|
||||
"$ref": "#/$defs/exit"
|
||||
}
|
||||
}
|
||||
},
|
||||
"content": {
|
||||
"title": "Home Assistant Template",
|
||||
"description": "Jinja2 template defining the text to display. Must be included in an 'info'. Optional in a 'toggle', 'tap' and 'group'. Special characters may not render in the glance context.",
|
||||
"description": "Jinja2 template defining the text to display. Must be included in an 'info'. Optional in a 'toggle', 'tap', 'numeric' and 'group'. Special characters may not render in the glance context.",
|
||||
"type": "string"
|
||||
},
|
||||
"confirm": {
|
||||
"type": "boolean",
|
||||
"type": [
|
||||
"boolean",
|
||||
"string"
|
||||
],
|
||||
"default": false,
|
||||
"title": "Confirmation",
|
||||
"description": "Optional confirmation of the action before execution as a precaution."
|
||||
"description": "Optional confirmation of the action before execution as a precaution. Use a Boolean for the default message. Specify a string to display a specific confirmation message."
|
||||
},
|
||||
"pin": {
|
||||
"type": "boolean",
|
||||
@@ -888,4 +1064,4 @@
|
||||
"description": "Choose to exit the application after this item has been selected. Disabled (false) by default. N.B. Only actionable menu items can have this field added."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[Home](../README.md) | [Switches](Switches.md) | [Actions](Actions.md) | [Templates](Templates.md) | [Glance](Glance.md) | [Background Service](../BackgroundService.md) | [Wi-Fi](../Wi-Fi.md) | [HTTP Headers](../HTTP_Headers.md) | [Trouble Shooting](../TroubleShooting.md) | [Version History](../HISTORY.md)
|
||||
[Home](../README.md) | [Switches](Switches.md) | [Actions](Actions.md) | [Templates](Templates.md) | [Numeric](Numeric.md) | [Glance](Glance.md) | [Background Service](../BackgroundService.md) | [Wi-Fi](../Wi-Fi.md) | [HTTP Headers](../HTTP_Headers.md) | [Trouble Shooting](../TroubleShooting.md) | [Version History](../HISTORY.md)
|
||||
|
||||
|
||||
# Actions
|
||||
@@ -11,7 +11,7 @@ A simple example using a scene as a `tap` menu item.
|
||||
"name": "Telly Scene",
|
||||
"type": "tap",
|
||||
"tap_action": {
|
||||
"service": "scene.turn_on"
|
||||
"action": "scene.turn_on"
|
||||
}
|
||||
},
|
||||
```
|
||||
@@ -37,6 +37,14 @@ For example:
|
||||
"confirm": true
|
||||
}
|
||||
}
|
||||
|
||||
```
|
||||
The `confirm` field may contain a string instead of a Boolean in order to provide a custom message to display instead of the default "Sure?" text.
|
||||
|
||||
```json
|
||||
"tap_action": {
|
||||
"confirm": "Toggle the cover?"
|
||||
}
|
||||
```
|
||||
|
||||
**The authors do not advise the use of this application for security sensitive devices. But we suspect users are taking that risk anyway, hence a PIN confirmation is provided that can be used for additional menu item security.**
|
||||
@@ -62,7 +70,7 @@ Note that for notify events, you _must_ not supply an `entity_id` or the API cal
|
||||
"name": "Message",
|
||||
"type": "tap",
|
||||
"tap_action": {
|
||||
"service": "notify.mobile_app_on_phone",
|
||||
"action": "notify.mobile_app_on_phone",
|
||||
"data": {
|
||||
"title": "This is a title",
|
||||
"message": "This is the message"
|
||||
@@ -73,9 +81,9 @@ Note that for notify events, you _must_ not supply an `entity_id` or the API cal
|
||||
```
|
||||
|
||||
> [!IMPORTANT]
|
||||
> Be careful with the value of the `service` field.
|
||||
> Be careful with the value of the `action` field.
|
||||
|
||||
Note that the `service` field will need to be a locally custom `script.<something>` as soon as any `data` fields are populated and not something more generic like `script.turn_on`. If the `service` field is wrong, the application will fail with a [`Communications.INVALID_HTTP_BODY_IN_NETWORK_RESPONSE`](https://developer.garmin.com/connect-iq/api-docs/Toybox/Communications.html) error in the response from your HomeAssistant and show the error message as _"No JSON returned from HTTP request"_ on your device. In the [web-based editor](https://house-of-abbey.github.io/GarminHomeAssistant/web/) you can use the standard developer tools to observe an `HTTP 400` error which the application does not see. Here we are limited by the [Garmin Connect IQ](https://developer.garmin.com/connect-iq/overview/) software development kit (SDK). We do not have enough information at the point of execution in the application to determine the cause of the error. Nor is there an immediately obvious way of identifying this issue using the JSON schema checks.
|
||||
Note that the `action` field will need to be a locally custom `script.<something>` as soon as any `data` fields are populated and not something more generic like `script.turn_on`. If the `action` field is wrong, the application will fail with a [`Communications.INVALID_HTTP_BODY_IN_NETWORK_RESPONSE`](https://developer.garmin.com/connect-iq/api-docs/Toybox/Communications.html) error in the response from your HomeAssistant and show the error message as _"No JSON returned from HTTP request"_ on your device. In the [web-based editor](https://house-of-abbey.github.io/GarminHomeAssistant/web/) you can use the standard developer tools to observe an `HTTP 400` error which the application does not see. Here we are limited by the [Garmin Connect IQ](https://developer.garmin.com/connect-iq/overview/) software development kit (SDK). We do not have enough information at the point of execution in the application to determine the cause of the error. Nor is there an immediately obvious way of identifying this issue using the JSON schema checks.
|
||||
|
||||
## Exit on Tap
|
||||
|
||||
@@ -87,9 +95,9 @@ You can choose individual items that will quit after they have completed their a
|
||||
"name": "Turn off Stuff",
|
||||
"type": "tap",
|
||||
"tap_action": {
|
||||
"service": "automation.trigger"
|
||||
"action": "automation.trigger",
|
||||
"exit": true
|
||||
},
|
||||
"exit": true
|
||||
}
|
||||
```
|
||||
|
||||
@@ -103,8 +111,69 @@ If you would like to temporarily disable an item in your menu, e.g. for seasonal
|
||||
"name": "Turn off Stuff",
|
||||
"type": "tap",
|
||||
"tap_action": {
|
||||
"service": "automation.trigger"
|
||||
"action": "automation.trigger"
|
||||
},
|
||||
"enabled": false
|
||||
}
|
||||
```
|
||||
|
||||
# Selects
|
||||
|
||||
Here is an example of how to make a light effect selector:
|
||||
|
||||
```json
|
||||
{
|
||||
"type": "group",
|
||||
"name": "Example",
|
||||
"title": "Light Effect",
|
||||
"content": "{{ state_attr('light.moon', 'effect') }}",
|
||||
"items": [
|
||||
{
|
||||
"type": "tap",
|
||||
"name": "None",
|
||||
"entity": "light.example",
|
||||
"tap_action": {
|
||||
"service": "light.turn_on",
|
||||
"data": {
|
||||
"effect": "None"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "tap",
|
||||
"name": "Rainbow",
|
||||
"entity": "light.example",
|
||||
"tap_action": {
|
||||
"service": "light.turn_on",
|
||||
"data": {
|
||||
"effect": "Rainbow"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "tap",
|
||||
"name": "Glimmer",
|
||||
"entity": "light.example",
|
||||
"tap_action": {
|
||||
"service": "light.turn_on",
|
||||
"data": {
|
||||
"effect": "Glimmer"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "tap",
|
||||
"name": "Twinkle",
|
||||
"entity": "light.example",
|
||||
"tap_action": {
|
||||
"service": "light.turn_on",
|
||||
"data": {
|
||||
"effect": "Twinkle"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
The same pattern works for any selector (`input_select.*`, `select.*`, `climate.*` mode).
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[Home](../README.md) | [Switches](Switches.md) | [Actions](Actions.md) | [Templates](Templates.md) | [Glance](Glance.md) | [Background Service](../BackgroundService.md) | [Wi-Fi](../Wi-Fi.md) | [HTTP Headers](../HTTP_Headers.md) | [Trouble Shooting](../TroubleShooting.md) | [Version History](../HISTORY.md)
|
||||
[Home](../README.md) | [Switches](Switches.md) | [Actions](Actions.md) | [Templates](Templates.md) | [Numeric](Numeric.md) | [Glance](Glance.md) | [Background Service](../BackgroundService.md) | [Wi-Fi](../Wi-Fi.md) | [HTTP Headers](../HTTP_Headers.md) | [Trouble Shooting](../TroubleShooting.md) | [Version History](../HISTORY.md)
|
||||
|
||||
# Glance
|
||||
|
||||
@@ -75,6 +75,6 @@ The following shows the default glance when the menu file is not available at th
|
||||
|
||||
<img src="../images/Venu2_glance_no_menu.png" width="200" title="Venu 2 Glance showing errors"/>
|
||||
|
||||
Once the custom glance template has been retrieved and evaluated the display will change. Should the connectivity to your Home Assistant then be lost, e.g. you move out of range of your phone, the glance reflects this in the colour of the residual two rectangles. The top one remains an indicator for the API, and the bottom rectangle remains an indicator for the menu availability, reflecting the original placement in the default glance view that has now been replaced.
|
||||
Once the custom glance template has been retrieved and evaluated the display will change. Should the connectivity to your HomeAssistant then be lost, e.g. you move out of range of your phone, the glance reflects this in the colour of the residual two rectangles. The top one remains an indicator for the API, and the bottom rectangle remains an indicator for the menu availability, reflecting the original placement in the default glance view that has now been replaced.
|
||||
|
||||
<img src="../images/Venu2_glance_no_bt.png" width="200" title="Venu 2 Glance showing lost connectivity"/>
|
||||
|
||||
167
examples/Numeric.md
Normal file
@@ -0,0 +1,167 @@
|
||||
[Home](../README.md) | [Switches](Switches.md) | [Actions](Actions.md) | [Templates](Templates.md) | [Numeric](Numeric.md) | [Glance](Glance.md) | [Background Service](../BackgroundService.md) | [Wi-Fi](../Wi-Fi.md) | [HTTP Headers](../HTTP_Headers.md) | [Trouble Shooting](../TroubleShooting.md) | [Version History](../HISTORY.md)
|
||||
|
||||
# Numeric
|
||||
|
||||
Provides a number picker in order to adjust a numeric value of an entity.
|
||||
|
||||
## Thermostat
|
||||
|
||||
An example using a thermostat as a `numeric` menu item.
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "Heating",
|
||||
"content": "{{ ' %.1f' | format(state_attr('climate.room','temperature')) }}",
|
||||
"type": "numeric",
|
||||
"entity": "climate.room",
|
||||
"tap_action": {
|
||||
"action": "climate.set_temperature",
|
||||
"picker": {
|
||||
"step": 0.5,
|
||||
"min": 10,
|
||||
"max": 30,
|
||||
"attribute": "temperature",
|
||||
"data_attribute": "temperature"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
This needs some explanation. The `tap_action` object needs a `picker` object to specify the numeric menu item's behaviour. The `picker` object is described in the table below.
|
||||
|
||||
Field | Purpose | Mandatory |
|
||||
-----------------|----------------------------------------------------------------|-----------|
|
||||
`step` | The increment or decrement step size. | Yes |
|
||||
`min` | The minimum value the numeric entity can take. | Yes |
|
||||
`max` | The maximum value the numeric entity can take. | Yes |
|
||||
`attribute` | The attribute on the `entity` that holds the state to be read. | No |
|
||||
`data_attribute` | The attribute on the `action` call that sets the state. | Yes |
|
||||
|
||||
It may well be the case that often `attribute` and `data_attribute` are the same attribute, as with this example.
|
||||
|
||||
## Helper
|
||||
|
||||
You might define a "helper" entity as follows in HomeAssistant:
|
||||
|
||||
<img src="../images/my_float.png" width="400" title="HomeAssistant Helper definition for an 'input_number'." style="margin:5px"/>
|
||||
|
||||
In this case, the state is the actual value, so the template uses `states(..)` instead of `state_attr(..)`, you must not set the optional `attribute` value in the JSON definition so that the application uses the correct template internally for querying the HA server for its present value. Your own template definition in the `content` field will need to follow suit too. The `data_attribute` must be set to `value` for the `action` call that sets the chosen value from the number carousel.
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "My Float",
|
||||
"content": "Currently {{ states('input_number.my_float') }}",
|
||||
"type": "numeric",
|
||||
"entity": "input_number.my_float",
|
||||
"tap_action": {
|
||||
"action": "input_number.set_value",
|
||||
"picker": {
|
||||
"step": 0.5,
|
||||
"min": -10.0,
|
||||
"max": 10.0,
|
||||
"data_attribute": "value"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Amplifier
|
||||
|
||||
The complication here is this amplifier uses one scale for changing the value, a range 0.0 to 1.0, and another to render the volume on the display, dB. So the template does some scale conversion, but the number picker has to use the 0.0 to 1.0 range which is annoying.
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "Amplifer Volume",
|
||||
"content": "{{ '%.1f' | format(state_attr('media_player.amplifier','volume_level') * 100 -80) }} dB ({{ state_attr('media_player.amplifier','volume_level') }})",
|
||||
"type": "numeric",
|
||||
"entity": "media_player.amplifier",
|
||||
"tap_action": {
|
||||
"action": "media_player.volume_set",
|
||||
"picker": {
|
||||
"step": 0.005,
|
||||
"min": 0.2,
|
||||
"max": 0.6,
|
||||
"attribute": "volume_level",
|
||||
"data_attribute": "volume_level"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
<img src="../images/number_picker_raw.bmp" width="200" title="HomeAssistant Helper definition for an 'input_number'." style="margin:5px"/>
|
||||
|
||||
The above is a little awkward to change the volume as the picker's scale is unfamiliar. To make life easier you might choose to implement a "Template number" in HomeAssistant as defined in the following dialogue box.
|
||||
|
||||
<img src="../images/template_number.png" width="500" title="HomeAssistant Helper definition for an 'input_number'." style="margin:5px"/>
|
||||
|
||||
For copy and paste, the Jinja2 fields are as follows:
|
||||
|
||||
1. Template rendering with conversion to dB:
|
||||
|
||||
```jinja
|
||||
{{ state_attr('media_player.amplifier','volume_level') * 100 -80 }}
|
||||
```
|
||||
|
||||
2. Conversion from dB to range 0.0 to 1.0:
|
||||
|
||||
```jinja
|
||||
{{ (value+80)/100 }}
|
||||
```
|
||||
|
||||
3. Availability template:
|
||||
|
||||
```jinja
|
||||
{{ not is_state('media_player.amplifier','unavailable') }}
|
||||
```
|
||||
|
||||
<img src="../images/number_picker_db.bmp" width="200" title="HomeAssistant Helper definition for an 'input_number'." style="margin:5px"/>
|
||||
|
||||
As an alternative to using the GUI, the following can be pasted into HomeAssistant's `configuration.yaml`:
|
||||
|
||||
```yaml
|
||||
template:
|
||||
- number:
|
||||
- name: "Amplifier dB"
|
||||
unique_id: "<Generate Unique ID>"
|
||||
unit_of_measurement: "dB"
|
||||
state: "{{ state_attr('media_player.amplifier','volume_level') * 100 -80 }}"
|
||||
availability: "{{ not is_state('media_player.amplifier','unavailable') }}"
|
||||
set_value:
|
||||
- action: media_player.volume_set
|
||||
target:
|
||||
entity_id: media_player.amplifier
|
||||
data:
|
||||
volume_level: "{{ (value+80)/100 }}"
|
||||
step: 0.5
|
||||
min: -60
|
||||
max: -15
|
||||
icon: mdi:audio-video
|
||||
```
|
||||
|
||||
We noticed some schema checking errors when we tried this, but the YAML above is consistent with the HA [Template](https://www.home-assistant.io/integrations/template/#number) support pages, and this code does correctly create the number template as required.
|
||||
|
||||
The JSON menu definition can now use dB with the new template number as follows.
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "Amplifier Volume",
|
||||
"content": "{% if is_state('media_player.amplifier','unavailable') %}Off{% else %}{{ '%.1f' | format(states('number.amplifier_db') | float) }} dB{% endif %}",
|
||||
"type": "numeric",
|
||||
"entity": "number.amplifier_db",
|
||||
"tap_action": {
|
||||
"action": "number.set_value",
|
||||
"picker": {
|
||||
"step": 0.5,
|
||||
"min": -60.0,
|
||||
"max": -15.0,
|
||||
"data_attribute": "value"
|
||||
}
|
||||
}
|
||||
},
|
||||
```
|
||||
|
||||
## Trouble Shooting
|
||||
|
||||
Specific to this menu item:
|
||||
|
||||
1. If the number picker does not initialise with the correct value, amend the `attribute` field. Just because your template renders does not mean the application has extracted the numeric value as the `content` template is rendered on the HomeAssistant server.
|
||||
@@ -1,4 +1,4 @@
|
||||
[Home](../README.md) | [Switches](Switches.md) | [Actions](Actions.md) | [Templates](Templates.md) | [Glance](Glance.md) | [Background Service](../BackgroundService.md) | [Wi-Fi](../Wi-Fi.md) | [HTTP Headers](../HTTP_Headers.md) | [Trouble Shooting](../TroubleShooting.md) | [Version History](../HISTORY.md)
|
||||
[Home](../README.md) | [Switches](Switches.md) | [Actions](Actions.md) | [Templates](Templates.md) | [Numeric](Numeric.md) | [Glance](Glance.md) | [Background Service](../BackgroundService.md) | [Wi-Fi](../Wi-Fi.md) | [HTTP Headers](../HTTP_Headers.md) | [Trouble Shooting](../TroubleShooting.md) | [Version History](../HISTORY.md)
|
||||
|
||||
# Switches
|
||||
|
||||
@@ -48,12 +48,12 @@ switch:
|
||||
friendly_name: <name>
|
||||
value_template: <value>
|
||||
turn_on:
|
||||
service: <service>
|
||||
action: <action>
|
||||
data:
|
||||
entity_id: <entity>
|
||||
<attribute>: <value>
|
||||
turn_off:
|
||||
service: <service>
|
||||
action: <action>
|
||||
data:
|
||||
entity_id: <entity>
|
||||
<attribute>: <value>
|
||||
@@ -90,11 +90,11 @@ switch:
|
||||
friendly_name: Cover
|
||||
value_template: "{{ is_state('cover.cover', 'open') }}"
|
||||
turn_on:
|
||||
service: cover.open_cover
|
||||
action: cover.open_cover
|
||||
data:
|
||||
entity_id: cover.cover
|
||||
turn_off:
|
||||
service: cover.close_cover
|
||||
action: cover.close_cover
|
||||
data:
|
||||
entity_id: cover.cover
|
||||
```
|
||||
@@ -118,7 +118,9 @@ You can choose individual items that will quit after they have completed their a
|
||||
"entity": "light.hall_light",
|
||||
"name": "Hall Light & Quit",
|
||||
"type": "toggle",
|
||||
"exit": true
|
||||
"tap_action" {
|
||||
"exit": true
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[Home](../README.md) | [Switches](Switches.md) | [Actions](Actions.md) | [Templates](Templates.md) | [Glance](Glance.md) | [Background Service](../BackgroundService.md) | [Wi-Fi](../Wi-Fi.md) | [HTTP Headers](../HTTP_Headers.md) | [Trouble Shooting](../TroubleShooting.md) | [Version History](../HISTORY.md)
|
||||
[Home](../README.md) | [Switches](Switches.md) | [Actions](Actions.md) | [Templates](Templates.md) | [Numeric](Numeric.md) | [Glance](Glance.md) | [Background Service](../BackgroundService.md) | [Wi-Fi](../Wi-Fi.md) | [HTTP Headers](../HTTP_Headers.md) | [Trouble Shooting](../TroubleShooting.md) | [Version History](../HISTORY.md)
|
||||
|
||||
# Templates
|
||||
|
||||
@@ -116,7 +116,7 @@ Note: Only when you use the `tap_action` field do you also need to include the `
|
||||
"type": "tap",
|
||||
"content": "{% if is_state('binary_sensor.garage_connected', 'on') %}{{state_translated('cover.garage_door')}} - {{state_attr('cover.garage_door', 'current_position')}}%{%else%}Unconnected{% endif %}",
|
||||
"tap_action": {
|
||||
"service": "cover.toggle",
|
||||
"action": "cover.toggle",
|
||||
"pin": true
|
||||
}
|
||||
}
|
||||
@@ -173,7 +173,7 @@ An example of a dimmer light with 4 brightness settings 0..3. Here our light wor
|
||||
"type": "tap",
|
||||
"content": "{% if not (is_state('light.green_house', 'off') or is_state('light.green_house', 'unavailable')) %}{{ (((state_attr('light.green_house', 'brightness') | float) / 255 * 100) | round(0)) | int }}%{% else %}Off{% endif %}",
|
||||
"tap_action": {
|
||||
"service": "light.turn_on",
|
||||
"action": "light.turn_on",
|
||||
"data": {
|
||||
"brightness_pct": 12
|
||||
}
|
||||
@@ -184,7 +184,7 @@ An example of a dimmer light with 4 brightness settings 0..3. Here our light wor
|
||||
"name": "LEDs 1",
|
||||
"type": "tap",
|
||||
"tap_action": {
|
||||
"service": "light.turn_on",
|
||||
"action": "light.turn_on",
|
||||
"data": {
|
||||
"brightness_pct": 37
|
||||
}
|
||||
@@ -196,7 +196,7 @@ An example of a dimmer light with 4 brightness settings 0..3. Here our light wor
|
||||
"type": "tap",
|
||||
"content": "{% if not (is_state('light.green_house', 'off') or is_state('light.green_house', 'unavailable')) %}{{ (((state_attr('light.green_house', 'brightness') | float) / 255 * 100) | round(0)) | int }}%{% else %}Off{% endif %}",
|
||||
"tap_action": {
|
||||
"service": "light.turn_on",
|
||||
"action": "light.turn_on",
|
||||
"data": {
|
||||
"brightness_pct": 62
|
||||
}
|
||||
@@ -208,7 +208,7 @@ An example of a dimmer light with 4 brightness settings 0..3. Here our light wor
|
||||
"type": "tap",
|
||||
"content": "{% if not (is_state('light.green_house', 'off') or is_state('light.green_house', 'unavailable')) %}{{ (((state_attr('light.green_house', 'brightness') | float) / 255 * 100) | round(0))| int }}%{% else %}Off{% endif %}",
|
||||
"tap_action": {
|
||||
"service": "light.turn_on",
|
||||
"action": "light.turn_on",
|
||||
"data": {
|
||||
"brightness_pct": 87
|
||||
}
|
||||
|
||||
23
iconResize.cmd
Normal file
@@ -0,0 +1,23 @@
|
||||
@echo off
|
||||
rem -----------------------------------------------------------------------------------
|
||||
rem
|
||||
rem Distributed under MIT Licence
|
||||
rem See https://github.com/house-of-abbey/GarminHomeAssistant/blob/main/LICENSE.
|
||||
rem
|
||||
rem -----------------------------------------------------------------------------------
|
||||
rem
|
||||
rem GarminHomeAssistant is a Garmin IQ application written in Monkey C and routinely
|
||||
rem tested on a Venu 2 device. The source code is provided at:
|
||||
rem https://github.com/house-of-abbey/GarminHomeAssistant.
|
||||
rem
|
||||
rem J D Abbey & P A Abbey, 11 November 2025
|
||||
rem
|
||||
rem Run the icon generation Python scripts
|
||||
rem
|
||||
rem -----------------------------------------------------------------------------------
|
||||
|
||||
REM change the current directory to the batch file's location
|
||||
cd /d %~dp0
|
||||
python iconResize.py
|
||||
python launcherIconResize.py
|
||||
pause
|
||||
@@ -30,37 +30,32 @@
|
||||
#
|
||||
####################################################################################
|
||||
|
||||
from bs4 import BeautifulSoup, Comment
|
||||
from bs4 import BeautifulSoup
|
||||
import os
|
||||
import shutil
|
||||
|
||||
output_dir_prefix = 'resources-icons-'
|
||||
input_dir = output_dir_prefix + '48'
|
||||
|
||||
Doub = 0
|
||||
Sing = 1
|
||||
Half = 2
|
||||
|
||||
# Original icons for 416x416 screen size with 48x48 icons
|
||||
original = (96, 48, 24)
|
||||
|
||||
# Convert icons to different screen sizes by these parameters
|
||||
lookup = {
|
||||
# Doub Sing Half
|
||||
# 0 1 2
|
||||
454: (106, 53, 27),
|
||||
# 416: ( 96, 48, 24),
|
||||
390: ( 90, 46, 23),
|
||||
360: ( 84, 42, 21),
|
||||
320: ( 74, 38, 19),
|
||||
280: ( 64, 32, 16),
|
||||
260: ( 60, 30, 15),
|
||||
240: ( 56, 28, 14),
|
||||
218: ( 50, 26, 13),
|
||||
208: ( 48, 24, 12),
|
||||
176: ( 42, 21, 11),
|
||||
156: ( 36, 18, 9)
|
||||
}
|
||||
lookup = [
|
||||
55,
|
||||
53,
|
||||
# 48,
|
||||
46,
|
||||
42,
|
||||
38,
|
||||
34, # Especially for the instinct3amoled50mm device that clip the icons
|
||||
32,
|
||||
30,
|
||||
28,
|
||||
26,
|
||||
24,
|
||||
"21-w",
|
||||
21,
|
||||
"18-w",
|
||||
18
|
||||
]
|
||||
|
||||
# Delete all but the original 48x48 icon directories
|
||||
for entry in os.listdir("."):
|
||||
@@ -68,8 +63,12 @@ for entry in os.listdir("."):
|
||||
shutil.rmtree(entry)
|
||||
|
||||
# (Re-)Create the resized icon directories
|
||||
for screen_size, icon_sizes in lookup.items():
|
||||
output_dir = output_dir_prefix + str(icon_sizes[Sing])
|
||||
for icon_size in lookup:
|
||||
output_dir = output_dir_prefix + str(icon_size)
|
||||
white = False
|
||||
if isinstance(icon_size, str):
|
||||
white = True
|
||||
icon_size = int(icon_size.split("-")[0])
|
||||
print("\nCreate directory:", output_dir)
|
||||
if os.path.exists(output_dir) and os.path.isdir(output_dir):
|
||||
shutil.rmtree(output_dir)
|
||||
@@ -80,16 +79,14 @@ for screen_size, icon_sizes in lookup.items():
|
||||
with open(input_dir + "/" + entry, "r") as f:
|
||||
soup = BeautifulSoup(f.read(), features="xml")
|
||||
svg: BeautifulSoup = list(soup.children)[0]
|
||||
h = int(svg.attrs["height"])
|
||||
if (h == original[Doub]):
|
||||
svg.attrs["width"] = lookup[screen_size][Doub]
|
||||
svg.attrs["height"] = lookup[screen_size][Doub]
|
||||
elif (h == original[Sing]):
|
||||
svg.attrs["width"] = lookup[screen_size][Sing]
|
||||
svg.attrs["height"] = lookup[screen_size][Sing]
|
||||
elif (h == original[Half]):
|
||||
svg.attrs["width"] = lookup[screen_size][Half]
|
||||
svg.attrs["height"] = lookup[screen_size][Half]
|
||||
svg.attrs["width"] = icon_size
|
||||
svg.attrs["height"] = icon_size
|
||||
if white:
|
||||
# Add white colour style
|
||||
svg.find("style", id="colours").string = """
|
||||
.colour1 { color: #dddddd; }
|
||||
.colour2 { color: #ffffff; }
|
||||
"""
|
||||
with open(output_dir + "/" + entry, "wb") as o:
|
||||
o.write(svg.encode("utf-8") + b"\n")
|
||||
elif entry.endswith(".xml"):
|
||||
|
||||
BIN
images/http_410_error.jpg
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
images/my_float.png
Normal file
|
After Width: | Height: | Size: 64 KiB |
BIN
images/number_picker_db.bmp
Normal file
|
After Width: | Height: | Size: 338 KiB |
BIN
images/number_picker_raw.bmp
Normal file
|
After Width: | Height: | Size: 338 KiB |
BIN
images/template_number.png
Normal file
|
After Width: | Height: | Size: 159 KiB |
@@ -40,9 +40,9 @@ output_dir_prefix = 'resources-launcher-'
|
||||
input_dir = output_dir_prefix + '70-70'
|
||||
|
||||
# Convert icons to different screen sizes by these parameters
|
||||
lookup = [26, 30, 33, 35, 36, 40, 54, 60, 61, 62, 65, 80]
|
||||
lookup = [26, 30, 33, 35, 36, 38, 40, 52, 54, 56, 60, 61, 62, 65, 68, 80]
|
||||
|
||||
# Delete all but the original 48x48 icon directories
|
||||
# Delete all but the original 70x70 icon directories
|
||||
for entry in os.listdir("."):
|
||||
if entry.startswith(output_dir_prefix) and entry != input_dir:
|
||||
shutil.rmtree(entry)
|
||||
|
||||
60
manifest.xml
@@ -1,37 +1,37 @@
|
||||
<?xml version="1.0"?>
|
||||
<!--
|
||||
|
||||
Distributed under MIT Licence
|
||||
See https://github.com/house-of-abbey/GarminHomeAssistant/blob/main/LICENSE.
|
||||
Distributed under MIT Licence
|
||||
See https://github.com/house-of-abbey/GarminHomeAssistant/blob/main/LICENSE.
|
||||
|
||||
|
||||
GarminHomeAssistant is a Garmin IQ application written in Monkey C and routinely
|
||||
tested on a Venu 2 device. The source code is provided at:
|
||||
https://github.com/house-of-abbey/GarminHomeAssistant.
|
||||
GarminHomeAssistant is a Garmin IQ application written in Monkey C and routinely
|
||||
tested on a Venu 2 device. The source code is provided at:
|
||||
https://github.com/house-of-abbey/GarminHomeAssistant.
|
||||
|
||||
P A Abbey & J D Abbey & Someone0nEarth, 31 October 2023
|
||||
P A Abbey & J D Abbey & Someone0nEarth, 31 October 2023
|
||||
|
||||
Device Information & References:
|
||||
* https://developer.garmin.com/connect-iq/compatible-devices/
|
||||
* https://developer.garmin.com/connect-iq/device-reference/
|
||||
Device Information & References:
|
||||
* https://developer.garmin.com/connect-iq/compatible-devices/
|
||||
* https://developer.garmin.com/connect-iq/device-reference/
|
||||
|
||||
philipabbey's Test App id="98c36259-498a-4458-9cef-74a273ad2bc3" type="watch-app"
|
||||
Live Application id="40131e87-31ff-454b-a8e2-92276ee399d6" type="watch-app"
|
||||
philipabbey's Test App id="98c36259-498a-4458-9cef-74a273ad2bc3" type="watch-app"
|
||||
Live Application id="40131e87-31ff-454b-a8e2-92276ee399d6" type="watch-app"
|
||||
|
||||
-->
|
||||
<iq:manifest version="3" xmlns:iq="http://www.garmin.com/xml/connectiq">
|
||||
<!--
|
||||
Use "Monkey C: Edit Application" from the Visual Studio Code command palette
|
||||
to update the application attributes.
|
||||
-->
|
||||
<iq:application id="971834c4-e4fc-4825-801f-7ac9db0e3044" type="watch-app" name="@Strings.AppName" entry="HomeAssistantApp" launcherIcon="@Drawables.LauncherIcon" minApiLevel="3.1.0">
|
||||
<!--
|
||||
Use the following from the Visual Studio Code command palette to edit
|
||||
the build targets:
|
||||
"Monkey C: Set Products by Product Category" - Lets you add all products
|
||||
that belong to the same product category
|
||||
"Monkey C: Edit Products" - Lets you add or remove any product
|
||||
Use "Monkey C: Edit Application" from the Visual Studio Code command palette
|
||||
to update the application attributes.
|
||||
-->
|
||||
<iq:application id="98c36259-498a-4458-9cef-74a273ad2bc3" type="watch-app" name="@Strings.AppName" entry="HomeAssistantApp" launcherIcon="@Drawables.LauncherIcon" minApiLevel="3.1.0">
|
||||
<!--
|
||||
Use the following from the Visual Studio Code command palette to edit
|
||||
the build targets:
|
||||
"Monkey C: Set Products by Product Category" - Lets you add all products
|
||||
that belong to the same product category
|
||||
"Monkey C: Edit Products" - Lets you add or remove any product
|
||||
-->
|
||||
<iq:products>
|
||||
<iq:product id="approachs50"/>
|
||||
<iq:product id="approachs7042mm"/>
|
||||
@@ -170,9 +170,9 @@
|
||||
<iq:product id="vivoactive6"/>
|
||||
</iq:products>
|
||||
<!--
|
||||
Use "Monkey C: Edit Permissions" from the Visual Studio Code command
|
||||
palette to update permissions.
|
||||
-->
|
||||
Use "Monkey C: Edit Permissions" from the Visual Studio Code command
|
||||
palette to update permissions.
|
||||
-->
|
||||
<iq:permissions>
|
||||
<iq:uses-permission id="Background"/>
|
||||
<iq:uses-permission id="BluetoothLowEnergy"/>
|
||||
@@ -180,9 +180,9 @@
|
||||
<iq:uses-permission id="Positioning"/>
|
||||
</iq:permissions>
|
||||
<!--
|
||||
Use "Monkey C: Edit Languages" from the Visual Studio Code command
|
||||
palette to edit your compatible language list.
|
||||
-->
|
||||
Use "Monkey C: Edit Languages" from the Visual Studio Code command
|
||||
palette to edit your compatible language list.
|
||||
-->
|
||||
<iq:languages>
|
||||
<iq:language>ara</iq:language>
|
||||
<iq:language>bul</iq:language>
|
||||
@@ -222,9 +222,9 @@
|
||||
<iq:language>zsm</iq:language>
|
||||
</iq:languages>
|
||||
<!--
|
||||
Use "Monkey C: Configure Monkey Barrel" from the Visual Studio Code
|
||||
command palette to edit the included barrels.
|
||||
-->
|
||||
Use "Monkey C: Configure Monkey Barrel" from the Visual Studio Code
|
||||
command palette to edit the included barrels.
|
||||
-->
|
||||
<iq:barrels/>
|
||||
</iq:application>
|
||||
</iq:manifest>
|
||||
|
||||
@@ -143,7 +143,7 @@ fenix8solar51mm.resourcePath = $(fenix8solar51mm.resourcePath);resources-launche
|
||||
fenixchronos.resourcePath = $(fenixchronos.resourcePath);resources-launcher-36-36;resources-icons-26
|
||||
# Screen Size 416x416 launcher icon size 60x60
|
||||
fenixe.resourcePath = $(fenixe.resourcePath);resources-launcher-60-60;resources-icons-48
|
||||
# Screen Size 390 x 390 launcher icon size 54x54
|
||||
# Screen Size 390x390 launcher icon size 54x54
|
||||
fr165.resourcePath = $(descentmk2s.resourcePath);resources-launcher-54-54;resources-icons-46
|
||||
fr165m.resourcePath = $(descentmk2s.resourcePath);resources-launcher-54-54;resources-icons-46
|
||||
# Screen Size 240x240 launcher icon size 40x40
|
||||
|
||||
@@ -20,4 +20,5 @@
|
||||
<bitmap id="GroupTypeIcon" filename="group_type.svg"/>
|
||||
<bitmap id="TapTypeIcon" filename="tap_type.svg"/>
|
||||
<bitmap id="InfoTypeIcon" filename="info_type.svg"/>
|
||||
<bitmap id="NumericTypeIcon" filename="numeric_type.svg"/>
|
||||
</drawables>
|
||||
|
||||
@@ -1 +1,16 @@
|
||||
<svg height="18" viewBox="0 0 48 48" width="18" xmlns="http://www.w3.org/2000/svg"><path d="M24 34q.7 0 1.175-.475.475-.475.475-1.175 0-.7-.475-1.175Q24.7 30.7 24 30.7q-.7 0-1.175.475-.475.475-.475 1.175 0 .7.475 1.175Q23.3 34 24 34Zm-1.35-7.65h3V13.7h-3ZM24 44q-4.1 0-7.75-1.575-3.65-1.575-6.375-4.3-2.725-2.725-4.3-6.375Q4 28.1 4 23.95q0-4.1 1.575-7.75 1.575-3.65 4.3-6.35 2.725-2.7 6.375-4.275Q19.9 4 24.05 4q4.1 0 7.75 1.575 3.65 1.575 6.35 4.275 2.7 2.7 4.275 6.35Q44 19.85 44 24q0 4.1-1.575 7.75-1.575 3.65-4.275 6.375t-6.35 4.3Q28.15 44 24 44Zm.05-3q7.05 0 12-4.975T41 23.95q0-7.05-4.95-12T24 7q-7.05 0-12.025 4.95Q7 16.9 7 24q0 7.05 4.975 12.025Q16.95 41 24.05 41ZM24 24Z" fill="white" stroke="white"/></svg>
|
||||
<svg height="18" viewBox="0 0 960 960" width="18" xmlns="http://www.w3.org/2000/svg">
|
||||
<style id="colours">
|
||||
.colour1 { color: #dddddd; }
|
||||
.colour2 { color: #ffffff; }
|
||||
</style>
|
||||
<style>
|
||||
.colour1 { stroke: currentColor; }
|
||||
.colour2 { fill: currentColor; }
|
||||
text.large { font: bold 600px sans-serif; }
|
||||
</style>
|
||||
<circle class="colour1" cx="480" cy="480" fill-opacity="0.0" r="400" stroke-width="60"/>
|
||||
<g class="colour2">
|
||||
<rect height="360" rx="40" ry="40" width="120" x="420" y="220"/>
|
||||
<circle cx="480" cy="710" r="60"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 716 B After Width: | Height: | Size: 546 B |
@@ -1,7 +1,15 @@
|
||||
<svg height="18" viewBox="0 0 200 500" width="18" xmlns="http://www.w3.org/2000/svg">
|
||||
<g transform="matrix(1, 0, 0, 1, 0, 0)">
|
||||
<rect fill="white" height="100" rx="40" ry="40" width="200" x="0" y="0"/>
|
||||
<rect fill="white" height="100" rx="40" ry="40" width="200" x="0" y="200"/>
|
||||
<rect fill="white" height="100" rx="40" ry="40" width="200" x="0" y="400"/>
|
||||
</g>
|
||||
</svg>
|
||||
<svg height="18" viewBox="0 0 960 960" width="18" xmlns="http://www.w3.org/2000/svg">
|
||||
<style id="colours">
|
||||
.colour1 { color: #dddddd; }
|
||||
.colour2 { color: #ffffff; }
|
||||
</style>
|
||||
<style>
|
||||
.colour1, .colour2 { fill: currentColor; }
|
||||
</style>
|
||||
<rect class="colour1" height="160" rx="20" ry="20" width="560" x="300" y="160"/>
|
||||
<rect class="colour1" height="160" rx="20" ry="20" width="560" x="300" y="400"/>
|
||||
<rect class="colour1" height="160" rx="20" ry="20" width="560" x="300" y="640"/>
|
||||
<circle class="colour2" cx="120" cy="240" r="80"/>
|
||||
<circle class="colour2" cx="120" cy="480" r="80"/>
|
||||
<circle class="colour2" cx="120" cy="720" r="80"/>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 364 B After Width: | Height: | Size: 651 B |
@@ -1 +1,15 @@
|
||||
<svg height="18" viewBox="0 -960 960 960" width="18" xmlns="http://www.w3.org/2000/svg"><path d="M440-280h80v-240h-80v240Zm40-320q17 0 28.5-11.5T520-640q0-17-11.5-28.5T480-680q-17 0-28.5 11.5T440-640q0 17 11.5 28.5T480-600Zm0 520q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-80q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z" fill="white" stroke="white"/></svg>
|
||||
<svg height="18" viewBox="0 0 960 960" width="18" xmlns="http://www.w3.org/2000/svg">
|
||||
<style id="colours">
|
||||
.colour1 { color: #dddddd; }
|
||||
.colour2 { color: #ffffff; }
|
||||
</style>
|
||||
<style>
|
||||
.colour1 { stroke: currentColor; }
|
||||
.colour2 { fill: currentColor; }
|
||||
</style>
|
||||
<circle class="colour1" cx="480" cy="480" fill-opacity="0.0" r="400" stroke-width="60"/>
|
||||
<g class="colour2">
|
||||
<circle cx="480" cy="280" r="60"/>
|
||||
<rect height="360" rx="40" ry="40" width="120" x="420" y="410"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 545 B After Width: | Height: | Size: 498 B |
16
resources-icons-18-w/numeric_type.svg
Normal file
@@ -0,0 +1,16 @@
|
||||
<svg height="18" viewBox="0 0 960 960" width="18" xmlns="http://www.w3.org/2000/svg">
|
||||
<style id="colours">
|
||||
.colour1 { color: #dddddd; }
|
||||
.colour2 { color: #ffffff; }
|
||||
</style>
|
||||
<style>
|
||||
text.small { font: bold 400px sans-serif; }
|
||||
text.large { font: bold 500px sans-serif; }
|
||||
.colour1, .colour2 { fill: currentColor; }
|
||||
rect.colour2 { stroke: currentColor; }
|
||||
</style>
|
||||
<rect class="colour2" fill-opacity="0.0" height="700" rx="100" ry="100" stroke-width="60" width="900" x="30" y="130"/>
|
||||
<text class="small colour1" x="110" y="610">1</text>
|
||||
<text class="large colour2" x="350" y="640">2</text>
|
||||
<text class="small colour1" x="650" y="610">3</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 673 B |
@@ -1 +1,13 @@
|
||||
<svg height="18" viewBox="0 -960 960 960" width="18" xmlns="http://www.w3.org/2000/svg"><path d="M445-80q-29 0-56-12t-45-35L127-403l21-23q14-15 34.5-18.5T221-438l99 53v-365q0-12.75 8.675-21.375 8.676-8.625 21.5-8.625 12.825 0 21.325 8.625T380-750v465l-144-77 156 198q10 12 23.76 18 13.76 6 29.24 6h205q38 0 64-26t26-64v-170q0-25.5-17.25-42.75T680-460H460v-60h219.646q50.148 0 85.251 35T800-400v170q0 63-43.5 106.5T650-80H445ZM203-665q-11.074-18.754-17.037-40.492Q180-727.229 180-750.246 180-821 229.725-870.5T350-920q70.55 0 120.275 49.738Q520-820.524 520-749.956q0 22.956-5.963 44.614Q508.074-683.685 497-665l-52-30q7-12 11-26t4-29.478Q460-796 427.882-828q-32.117-32-78-32Q304-860 272-827.917 240-795.833 240-750q0 15 4 29t11 26l-52 30Zm285 335Z" fill="white" stroke="white"/></svg>
|
||||
<svg height="18" viewBox="0 0 960 960" width="18" xmlns="http://www.w3.org/2000/svg">
|
||||
<style id="colours">
|
||||
.colour1 { color: #dddddd; }
|
||||
.colour2 { color: #ffffff; }
|
||||
</style>
|
||||
<style>
|
||||
.colour1, .colour2 { fill: currentColor; }
|
||||
</style>
|
||||
<g>
|
||||
<path class="colour1" d="m463.2,216.48c58.5,0 94.47,43.11 97.5,103.57l0,8l0,93.79l96.2,18.22c3.9,0.44 7.37,1.33 11.26,2.22c72.37,20 116.57,94.67 101.39,168.91l-1.73,8l-45.5,174.69c-9.53,36 -37.7,63.56 -73.23,71.56l-6.94,1.33l-104.86,15.56c-40.3,5.78 -79.3,-14.22 -98.8,-49.79l-3.47,-7.11l-1.3,-2.66c-10.4,-22.67 -25.57,-42.22 -44.64,-56.9l-8.24,-6.22l-81.47,-56.01l-4.34,-2.66l0,0l-4.34,-2.22l-102.26,-52.01c-10.83,-5.78 -17.77,-16.89 -17.77,-29.34c-1.3,-49.33 19.93,-87.12 61.1,-108.46c30.76,-15.56 71.06,-14.67 122.63,0.89l11.26,3.56l0,-185.35c0,-64.45 36.4,-111.57 97.5,-111.57l0.02,-0.01zm0,66.67c-19.93,0 -30.76,12 -32.5,38.67l0,6.22l0,232.91c0,24 -23.4,40.01 -45.07,31.11c-63.27,-27.12 -105.73,-33.34 -124.36,-23.56c-11.26,5.78 -18.2,12.89 -22.1,23.11l-1.73,5.33l82.33,42.22l7.8,4.45l0,0l7.8,4.45l81.47,56.01c29.46,20 53.73,47.56 70.63,79.57l5.2,11.11l1.3,2.66c5.2,12 16.9,19.11 29.46,19.11l4.34,0l104.86,-15.56c11.26,-1.77 20.8,-9.34 25.14,-20l1.73,-4.45l45.5,-174.24c10.83,-41.78 -13.43,-84.45 -53.73,-95.56l-3.03,-0.44l0,0l-125.66,-23.56c-14.3,-2.66 -24.7,-14.22 -26.44,-28l-0.43,-4.89l0,-121.79c0,-30.67 -10.83,-44.9 -32.5,-44.9l0,0.02z"/>
|
||||
<path class="colour2" d="m463.81,60.98c137.36,0 249.16,114.24 249.16,255.58c0,31.11 -5.64,61.34 -15.6,88.9l-6.07,-2.22c-6.5,-2.22 -15.16,-5.33 -26.44,-8c-10.4,-2.22 -20.8,-4 -31.63,-4.89c9.53,-22.67 14.73,-47.56 14.73,-73.79c0,-104.46 -82.33,-188.9 -184.17,-188.9c-101.83,0 -184.17,84.45 -184.17,188.9c0,46.23 16.03,88.9 43.34,121.79c-13.86,1.33 -26,3.12 -35.53,5.33c-15.6,4 -25.57,7.55 -32.93,12c-25.14,-40.01 -39.87,-88.01 -39.87,-139.13c0,-141.35 111.37,-255.58 249.16,-255.58l0.01,0.01z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 783 B After Width: | Height: | Size: 1.9 KiB |
@@ -20,4 +20,5 @@
|
||||
<bitmap id="GroupTypeIcon" filename="group_type.svg"/>
|
||||
<bitmap id="TapTypeIcon" filename="tap_type.svg"/>
|
||||
<bitmap id="InfoTypeIcon" filename="info_type.svg"/>
|
||||
<bitmap id="NumericTypeIcon" filename="numeric_type.svg"/>
|
||||
</drawables>
|
||||
|
||||
@@ -1 +1,16 @@
|
||||
<svg height="18" viewBox="0 0 48 48" width="18" xmlns="http://www.w3.org/2000/svg"><path d="M24 34q.7 0 1.175-.475.475-.475.475-1.175 0-.7-.475-1.175Q24.7 30.7 24 30.7q-.7 0-1.175.475-.475.475-.475 1.175 0 .7.475 1.175Q23.3 34 24 34Zm-1.35-7.65h3V13.7h-3ZM24 44q-4.1 0-7.75-1.575-3.65-1.575-6.375-4.3-2.725-2.725-4.3-6.375Q4 28.1 4 23.95q0-4.1 1.575-7.75 1.575-3.65 4.3-6.35 2.725-2.7 6.375-4.275Q19.9 4 24.05 4q4.1 0 7.75 1.575 3.65 1.575 6.35 4.275 2.7 2.7 4.275 6.35Q44 19.85 44 24q0 4.1-1.575 7.75-1.575 3.65-4.275 6.375t-6.35 4.3Q28.15 44 24 44Zm.05-3q7.05 0 12-4.975T41 23.95q0-7.05-4.95-12T24 7q-7.05 0-12.025 4.95Q7 16.9 7 24q0 7.05 4.975 12.025Q16.95 41 24.05 41ZM24 24Z" fill="red" stroke="red"/></svg>
|
||||
<svg height="18" viewBox="0 0 960 960" width="18" xmlns="http://www.w3.org/2000/svg">
|
||||
<style id="colours">
|
||||
.colour1 { color: #aa0000; }
|
||||
.colour2 { color: #ff1111; }
|
||||
</style>
|
||||
<style>
|
||||
.colour1 { stroke: currentColor; }
|
||||
.colour2 { fill: currentColor; }
|
||||
text.large { font: bold 600px sans-serif; }
|
||||
</style>
|
||||
<circle class="colour1" cx="480" cy="480" fill-opacity="0.0" r="400" stroke-width="60"/>
|
||||
<g class="colour2">
|
||||
<rect height="360" rx="40" ry="40" width="120" x="420" y="220"/>
|
||||
<circle cx="480" cy="710" r="60"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 712 B After Width: | Height: | Size: 548 B |
@@ -1,7 +1,15 @@
|
||||
<svg height="18" viewBox="0 0 200 500" width="18" xmlns="http://www.w3.org/2000/svg">
|
||||
<g transform="matrix(1, 0, 0, 1, 0, 0)">
|
||||
<rect fill="blue" height="100" rx="40" ry="40" width="200" x="0" y="0"/>
|
||||
<rect fill="blue" height="100" rx="40" ry="40" width="200" x="0" y="200"/>
|
||||
<rect fill="blue" height="100" rx="40" ry="40" width="200" x="0" y="400"/>
|
||||
</g>
|
||||
</svg>
|
||||
<svg height="18" viewBox="0 0 960 960" width="18" xmlns="http://www.w3.org/2000/svg">
|
||||
<style id="colours">
|
||||
.colour1 { color: #0091ff; }
|
||||
.colour2 { color: #00ccff; }
|
||||
</style>
|
||||
<style>
|
||||
.colour1, .colour2 { fill: currentColor; }
|
||||
</style>
|
||||
<rect class="colour1" height="160" rx="20" ry="20" width="560" x="300" y="160"/>
|
||||
<rect class="colour1" height="160" rx="20" ry="20" width="560" x="300" y="400"/>
|
||||
<rect class="colour1" height="160" rx="20" ry="20" width="560" x="300" y="640"/>
|
||||
<circle class="colour2" cx="120" cy="240" r="80"/>
|
||||
<circle class="colour2" cx="120" cy="480" r="80"/>
|
||||
<circle class="colour2" cx="120" cy="720" r="80"/>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 361 B After Width: | Height: | Size: 653 B |
@@ -1 +1,15 @@
|
||||
<svg height="18" viewBox="0 -960 960 960" width="18" xmlns="http://www.w3.org/2000/svg"><path d="M440-280h80v-240h-80v240Zm40-320q17 0 28.5-11.5T520-640q0-17-11.5-28.5T480-680q-17 0-28.5 11.5T440-640q0 17 11.5 28.5T480-600Zm0 520q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-80q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z" fill="blue" stroke="blue"/></svg>
|
||||
<svg height="18" viewBox="0 0 960 960" width="18" xmlns="http://www.w3.org/2000/svg">
|
||||
<style id="colours">
|
||||
.colour1 { color: #0091ff; }
|
||||
.colour2 { color: #00ccff; }
|
||||
</style>
|
||||
<style>
|
||||
.colour1 { stroke: currentColor; }
|
||||
.colour2 { fill: currentColor; }
|
||||
</style>
|
||||
<circle class="colour1" cx="480" cy="480" fill-opacity="0.0" r="400" stroke-width="60"/>
|
||||
<g class="colour2">
|
||||
<circle cx="480" cy="280" r="60"/>
|
||||
<rect height="360" rx="40" ry="40" width="120" x="420" y="410"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 543 B After Width: | Height: | Size: 500 B |
16
resources-icons-18/numeric_type.svg
Normal file
@@ -0,0 +1,16 @@
|
||||
<svg height="18" viewBox="0 0 960 960" width="18" xmlns="http://www.w3.org/2000/svg">
|
||||
<style id="colours">
|
||||
.colour1 { color: #0091ff; }
|
||||
.colour2 { color: #00ccff; }
|
||||
</style>
|
||||
<style>
|
||||
text.small { font: bold 400px sans-serif; }
|
||||
text.large { font: bold 500px sans-serif; }
|
||||
.colour1, .colour2 { fill: currentColor; }
|
||||
rect.colour2 { stroke: currentColor; }
|
||||
</style>
|
||||
<rect class="colour2" fill-opacity="0.0" height="700" rx="100" ry="100" stroke-width="60" width="900" x="30" y="130"/>
|
||||
<text class="small colour1" x="110" y="610">1</text>
|
||||
<text class="large colour2" x="350" y="640">2</text>
|
||||
<text class="small colour1" x="650" y="610">3</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 675 B |
@@ -1 +1,13 @@
|
||||
<svg height="18" viewBox="0 -960 960 960" width="18" xmlns="http://www.w3.org/2000/svg"><path d="M445-80q-29 0-56-12t-45-35L127-403l21-23q14-15 34.5-18.5T221-438l99 53v-365q0-12.75 8.675-21.375 8.676-8.625 21.5-8.625 12.825 0 21.325 8.625T380-750v465l-144-77 156 198q10 12 23.76 18 13.76 6 29.24 6h205q38 0 64-26t26-64v-170q0-25.5-17.25-42.75T680-460H460v-60h219.646q50.148 0 85.251 35T800-400v170q0 63-43.5 106.5T650-80H445ZM203-665q-11.074-18.754-17.037-40.492Q180-727.229 180-750.246 180-821 229.725-870.5T350-920q70.55 0 120.275 49.738Q520-820.524 520-749.956q0 22.956-5.963 44.614Q508.074-683.685 497-665l-52-30q7-12 11-26t4-29.478Q460-796 427.882-828q-32.117-32-78-32Q304-860 272-827.917 240-795.833 240-750q0 15 4 29t11 26l-52 30Zm285 335Z" fill="blue" stroke="blue"/></svg>
|
||||
<svg height="18" viewBox="0 0 960 960" width="18" xmlns="http://www.w3.org/2000/svg">
|
||||
<style id="colours">
|
||||
.colour1 { color: #0091ff; }
|
||||
.colour2 { color: #00ccff; }
|
||||
</style>
|
||||
<style>
|
||||
.colour1, .colour2 { fill: currentColor; }
|
||||
</style>
|
||||
<g>
|
||||
<path class="colour1" d="m463.2,216.48c58.5,0 94.47,43.11 97.5,103.57l0,8l0,93.79l96.2,18.22c3.9,0.44 7.37,1.33 11.26,2.22c72.37,20 116.57,94.67 101.39,168.91l-1.73,8l-45.5,174.69c-9.53,36 -37.7,63.56 -73.23,71.56l-6.94,1.33l-104.86,15.56c-40.3,5.78 -79.3,-14.22 -98.8,-49.79l-3.47,-7.11l-1.3,-2.66c-10.4,-22.67 -25.57,-42.22 -44.64,-56.9l-8.24,-6.22l-81.47,-56.01l-4.34,-2.66l0,0l-4.34,-2.22l-102.26,-52.01c-10.83,-5.78 -17.77,-16.89 -17.77,-29.34c-1.3,-49.33 19.93,-87.12 61.1,-108.46c30.76,-15.56 71.06,-14.67 122.63,0.89l11.26,3.56l0,-185.35c0,-64.45 36.4,-111.57 97.5,-111.57l0.02,-0.01zm0,66.67c-19.93,0 -30.76,12 -32.5,38.67l0,6.22l0,232.91c0,24 -23.4,40.01 -45.07,31.11c-63.27,-27.12 -105.73,-33.34 -124.36,-23.56c-11.26,5.78 -18.2,12.89 -22.1,23.11l-1.73,5.33l82.33,42.22l7.8,4.45l0,0l7.8,4.45l81.47,56.01c29.46,20 53.73,47.56 70.63,79.57l5.2,11.11l1.3,2.66c5.2,12 16.9,19.11 29.46,19.11l4.34,0l104.86,-15.56c11.26,-1.77 20.8,-9.34 25.14,-20l1.73,-4.45l45.5,-174.24c10.83,-41.78 -13.43,-84.45 -53.73,-95.56l-3.03,-0.44l0,0l-125.66,-23.56c-14.3,-2.66 -24.7,-14.22 -26.44,-28l-0.43,-4.89l0,-121.79c0,-30.67 -10.83,-44.9 -32.5,-44.9l0,0.02z"/>
|
||||
<path class="colour2" d="m463.81,60.98c137.36,0 249.16,114.24 249.16,255.58c0,31.11 -5.64,61.34 -15.6,88.9l-6.07,-2.22c-6.5,-2.22 -15.16,-5.33 -26.44,-8c-10.4,-2.22 -20.8,-4 -31.63,-4.89c9.53,-22.67 14.73,-47.56 14.73,-73.79c0,-104.46 -82.33,-188.9 -184.17,-188.9c-101.83,0 -184.17,84.45 -184.17,188.9c0,46.23 16.03,88.9 43.34,121.79c-13.86,1.33 -26,3.12 -35.53,5.33c-15.6,4 -25.57,7.55 -32.93,12c-25.14,-40.01 -39.87,-88.01 -39.87,-139.13c0,-141.35 111.37,-255.58 249.16,-255.58l0.01,0.01z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 781 B After Width: | Height: | Size: 1.9 KiB |
@@ -20,4 +20,5 @@
|
||||
<bitmap id="GroupTypeIcon" filename="group_type.svg"/>
|
||||
<bitmap id="TapTypeIcon" filename="tap_type.svg"/>
|
||||
<bitmap id="InfoTypeIcon" filename="info_type.svg"/>
|
||||
<bitmap id="NumericTypeIcon" filename="numeric_type.svg"/>
|
||||
</drawables>
|
||||
|
||||
@@ -1 +1,16 @@
|
||||
<svg height="21" viewBox="0 0 48 48" width="21" xmlns="http://www.w3.org/2000/svg"><path d="M24 34q.7 0 1.175-.475.475-.475.475-1.175 0-.7-.475-1.175Q24.7 30.7 24 30.7q-.7 0-1.175.475-.475.475-.475 1.175 0 .7.475 1.175Q23.3 34 24 34Zm-1.35-7.65h3V13.7h-3ZM24 44q-4.1 0-7.75-1.575-3.65-1.575-6.375-4.3-2.725-2.725-4.3-6.375Q4 28.1 4 23.95q0-4.1 1.575-7.75 1.575-3.65 4.3-6.35 2.725-2.7 6.375-4.275Q19.9 4 24.05 4q4.1 0 7.75 1.575 3.65 1.575 6.35 4.275 2.7 2.7 4.275 6.35Q44 19.85 44 24q0 4.1-1.575 7.75-1.575 3.65-4.275 6.375t-6.35 4.3Q28.15 44 24 44Zm.05-3q7.05 0 12-4.975T41 23.95q0-7.05-4.95-12T24 7q-7.05 0-12.025 4.95Q7 16.9 7 24q0 7.05 4.975 12.025Q16.95 41 24.05 41ZM24 24Z" fill="white" stroke="white"/></svg>
|
||||
<svg height="21" viewBox="0 0 960 960" width="21" xmlns="http://www.w3.org/2000/svg">
|
||||
<style id="colours">
|
||||
.colour1 { color: #dddddd; }
|
||||
.colour2 { color: #ffffff; }
|
||||
</style>
|
||||
<style>
|
||||
.colour1 { stroke: currentColor; }
|
||||
.colour2 { fill: currentColor; }
|
||||
text.large { font: bold 600px sans-serif; }
|
||||
</style>
|
||||
<circle class="colour1" cx="480" cy="480" fill-opacity="0.0" r="400" stroke-width="60"/>
|
||||
<g class="colour2">
|
||||
<rect height="360" rx="40" ry="40" width="120" x="420" y="220"/>
|
||||
<circle cx="480" cy="710" r="60"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 716 B After Width: | Height: | Size: 546 B |
@@ -1,7 +1,15 @@
|
||||
<svg height="21" viewBox="0 0 200 500" width="21" xmlns="http://www.w3.org/2000/svg">
|
||||
<g transform="matrix(1, 0, 0, 1, 0, 0)">
|
||||
<rect fill="white" height="100" rx="40" ry="40" width="200" x="0" y="0"/>
|
||||
<rect fill="white" height="100" rx="40" ry="40" width="200" x="0" y="200"/>
|
||||
<rect fill="white" height="100" rx="40" ry="40" width="200" x="0" y="400"/>
|
||||
</g>
|
||||
</svg>
|
||||
<svg height="21" viewBox="0 0 960 960" width="21" xmlns="http://www.w3.org/2000/svg">
|
||||
<style id="colours">
|
||||
.colour1 { color: #dddddd; }
|
||||
.colour2 { color: #ffffff; }
|
||||
</style>
|
||||
<style>
|
||||
.colour1, .colour2 { fill: currentColor; }
|
||||
</style>
|
||||
<rect class="colour1" height="160" rx="20" ry="20" width="560" x="300" y="160"/>
|
||||
<rect class="colour1" height="160" rx="20" ry="20" width="560" x="300" y="400"/>
|
||||
<rect class="colour1" height="160" rx="20" ry="20" width="560" x="300" y="640"/>
|
||||
<circle class="colour2" cx="120" cy="240" r="80"/>
|
||||
<circle class="colour2" cx="120" cy="480" r="80"/>
|
||||
<circle class="colour2" cx="120" cy="720" r="80"/>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 364 B After Width: | Height: | Size: 651 B |
@@ -1 +1,15 @@
|
||||
<svg height="21" viewBox="0 -960 960 960" width="21" xmlns="http://www.w3.org/2000/svg"><path d="M440-280h80v-240h-80v240Zm40-320q17 0 28.5-11.5T520-640q0-17-11.5-28.5T480-680q-17 0-28.5 11.5T440-640q0 17 11.5 28.5T480-600Zm0 520q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-80q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z" fill="white" stroke="white"/></svg>
|
||||
<svg height="21" viewBox="0 0 960 960" width="21" xmlns="http://www.w3.org/2000/svg">
|
||||
<style id="colours">
|
||||
.colour1 { color: #dddddd; }
|
||||
.colour2 { color: #ffffff; }
|
||||
</style>
|
||||
<style>
|
||||
.colour1 { stroke: currentColor; }
|
||||
.colour2 { fill: currentColor; }
|
||||
</style>
|
||||
<circle class="colour1" cx="480" cy="480" fill-opacity="0.0" r="400" stroke-width="60"/>
|
||||
<g class="colour2">
|
||||
<circle cx="480" cy="280" r="60"/>
|
||||
<rect height="360" rx="40" ry="40" width="120" x="420" y="410"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 545 B After Width: | Height: | Size: 498 B |
16
resources-icons-21-w/numeric_type.svg
Normal file
@@ -0,0 +1,16 @@
|
||||
<svg height="21" viewBox="0 0 960 960" width="21" xmlns="http://www.w3.org/2000/svg">
|
||||
<style id="colours">
|
||||
.colour1 { color: #dddddd; }
|
||||
.colour2 { color: #ffffff; }
|
||||
</style>
|
||||
<style>
|
||||
text.small { font: bold 400px sans-serif; }
|
||||
text.large { font: bold 500px sans-serif; }
|
||||
.colour1, .colour2 { fill: currentColor; }
|
||||
rect.colour2 { stroke: currentColor; }
|
||||
</style>
|
||||
<rect class="colour2" fill-opacity="0.0" height="700" rx="100" ry="100" stroke-width="60" width="900" x="30" y="130"/>
|
||||
<text class="small colour1" x="110" y="610">1</text>
|
||||
<text class="large colour2" x="350" y="640">2</text>
|
||||
<text class="small colour1" x="650" y="610">3</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 673 B |
@@ -1 +1,13 @@
|
||||
<svg height="21" viewBox="0 -960 960 960" width="21" xmlns="http://www.w3.org/2000/svg"><path d="M445-80q-29 0-56-12t-45-35L127-403l21-23q14-15 34.5-18.5T221-438l99 53v-365q0-12.75 8.675-21.375 8.676-8.625 21.5-8.625 12.825 0 21.325 8.625T380-750v465l-144-77 156 198q10 12 23.76 18 13.76 6 29.24 6h205q38 0 64-26t26-64v-170q0-25.5-17.25-42.75T680-460H460v-60h219.646q50.148 0 85.251 35T800-400v170q0 63-43.5 106.5T650-80H445ZM203-665q-11.074-18.754-17.037-40.492Q180-727.229 180-750.246 180-821 229.725-870.5T350-920q70.55 0 120.275 49.738Q520-820.524 520-749.956q0 22.956-5.963 44.614Q508.074-683.685 497-665l-52-30q7-12 11-26t4-29.478Q460-796 427.882-828q-32.117-32-78-32Q304-860 272-827.917 240-795.833 240-750q0 15 4 29t11 26l-52 30Zm285 335Z" fill="white" stroke="white"/></svg>
|
||||
<svg height="21" viewBox="0 0 960 960" width="21" xmlns="http://www.w3.org/2000/svg">
|
||||
<style id="colours">
|
||||
.colour1 { color: #dddddd; }
|
||||
.colour2 { color: #ffffff; }
|
||||
</style>
|
||||
<style>
|
||||
.colour1, .colour2 { fill: currentColor; }
|
||||
</style>
|
||||
<g>
|
||||
<path class="colour1" d="m463.2,216.48c58.5,0 94.47,43.11 97.5,103.57l0,8l0,93.79l96.2,18.22c3.9,0.44 7.37,1.33 11.26,2.22c72.37,20 116.57,94.67 101.39,168.91l-1.73,8l-45.5,174.69c-9.53,36 -37.7,63.56 -73.23,71.56l-6.94,1.33l-104.86,15.56c-40.3,5.78 -79.3,-14.22 -98.8,-49.79l-3.47,-7.11l-1.3,-2.66c-10.4,-22.67 -25.57,-42.22 -44.64,-56.9l-8.24,-6.22l-81.47,-56.01l-4.34,-2.66l0,0l-4.34,-2.22l-102.26,-52.01c-10.83,-5.78 -17.77,-16.89 -17.77,-29.34c-1.3,-49.33 19.93,-87.12 61.1,-108.46c30.76,-15.56 71.06,-14.67 122.63,0.89l11.26,3.56l0,-185.35c0,-64.45 36.4,-111.57 97.5,-111.57l0.02,-0.01zm0,66.67c-19.93,0 -30.76,12 -32.5,38.67l0,6.22l0,232.91c0,24 -23.4,40.01 -45.07,31.11c-63.27,-27.12 -105.73,-33.34 -124.36,-23.56c-11.26,5.78 -18.2,12.89 -22.1,23.11l-1.73,5.33l82.33,42.22l7.8,4.45l0,0l7.8,4.45l81.47,56.01c29.46,20 53.73,47.56 70.63,79.57l5.2,11.11l1.3,2.66c5.2,12 16.9,19.11 29.46,19.11l4.34,0l104.86,-15.56c11.26,-1.77 20.8,-9.34 25.14,-20l1.73,-4.45l45.5,-174.24c10.83,-41.78 -13.43,-84.45 -53.73,-95.56l-3.03,-0.44l0,0l-125.66,-23.56c-14.3,-2.66 -24.7,-14.22 -26.44,-28l-0.43,-4.89l0,-121.79c0,-30.67 -10.83,-44.9 -32.5,-44.9l0,0.02z"/>
|
||||
<path class="colour2" d="m463.81,60.98c137.36,0 249.16,114.24 249.16,255.58c0,31.11 -5.64,61.34 -15.6,88.9l-6.07,-2.22c-6.5,-2.22 -15.16,-5.33 -26.44,-8c-10.4,-2.22 -20.8,-4 -31.63,-4.89c9.53,-22.67 14.73,-47.56 14.73,-73.79c0,-104.46 -82.33,-188.9 -184.17,-188.9c-101.83,0 -184.17,84.45 -184.17,188.9c0,46.23 16.03,88.9 43.34,121.79c-13.86,1.33 -26,3.12 -35.53,5.33c-15.6,4 -25.57,7.55 -32.93,12c-25.14,-40.01 -39.87,-88.01 -39.87,-139.13c0,-141.35 111.37,-255.58 249.16,-255.58l0.01,0.01z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 783 B After Width: | Height: | Size: 1.9 KiB |
@@ -20,4 +20,5 @@
|
||||
<bitmap id="GroupTypeIcon" filename="group_type.svg"/>
|
||||
<bitmap id="TapTypeIcon" filename="tap_type.svg"/>
|
||||
<bitmap id="InfoTypeIcon" filename="info_type.svg"/>
|
||||
<bitmap id="NumericTypeIcon" filename="numeric_type.svg"/>
|
||||
</drawables>
|
||||
|
||||
@@ -1 +1,16 @@
|
||||
<svg height="21" viewBox="0 0 48 48" width="21" xmlns="http://www.w3.org/2000/svg"><path d="M24 34q.7 0 1.175-.475.475-.475.475-1.175 0-.7-.475-1.175Q24.7 30.7 24 30.7q-.7 0-1.175.475-.475.475-.475 1.175 0 .7.475 1.175Q23.3 34 24 34Zm-1.35-7.65h3V13.7h-3ZM24 44q-4.1 0-7.75-1.575-3.65-1.575-6.375-4.3-2.725-2.725-4.3-6.375Q4 28.1 4 23.95q0-4.1 1.575-7.75 1.575-3.65 4.3-6.35 2.725-2.7 6.375-4.275Q19.9 4 24.05 4q4.1 0 7.75 1.575 3.65 1.575 6.35 4.275 2.7 2.7 4.275 6.35Q44 19.85 44 24q0 4.1-1.575 7.75-1.575 3.65-4.275 6.375t-6.35 4.3Q28.15 44 24 44Zm.05-3q7.05 0 12-4.975T41 23.95q0-7.05-4.95-12T24 7q-7.05 0-12.025 4.95Q7 16.9 7 24q0 7.05 4.975 12.025Q16.95 41 24.05 41ZM24 24Z" fill="red" stroke="red"/></svg>
|
||||
<svg height="21" viewBox="0 0 960 960" width="21" xmlns="http://www.w3.org/2000/svg">
|
||||
<style id="colours">
|
||||
.colour1 { color: #aa0000; }
|
||||
.colour2 { color: #ff1111; }
|
||||
</style>
|
||||
<style>
|
||||
.colour1 { stroke: currentColor; }
|
||||
.colour2 { fill: currentColor; }
|
||||
text.large { font: bold 600px sans-serif; }
|
||||
</style>
|
||||
<circle class="colour1" cx="480" cy="480" fill-opacity="0.0" r="400" stroke-width="60"/>
|
||||
<g class="colour2">
|
||||
<rect height="360" rx="40" ry="40" width="120" x="420" y="220"/>
|
||||
<circle cx="480" cy="710" r="60"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 712 B After Width: | Height: | Size: 548 B |
@@ -1,7 +1,15 @@
|
||||
<svg height="21" viewBox="0 0 200 500" width="21" xmlns="http://www.w3.org/2000/svg">
|
||||
<g transform="matrix(1, 0, 0, 1, 0, 0)">
|
||||
<rect fill="blue" height="100" rx="40" ry="40" width="200" x="0" y="0"/>
|
||||
<rect fill="blue" height="100" rx="40" ry="40" width="200" x="0" y="200"/>
|
||||
<rect fill="blue" height="100" rx="40" ry="40" width="200" x="0" y="400"/>
|
||||
</g>
|
||||
</svg>
|
||||
<svg height="21" viewBox="0 0 960 960" width="21" xmlns="http://www.w3.org/2000/svg">
|
||||
<style id="colours">
|
||||
.colour1 { color: #0091ff; }
|
||||
.colour2 { color: #00ccff; }
|
||||
</style>
|
||||
<style>
|
||||
.colour1, .colour2 { fill: currentColor; }
|
||||
</style>
|
||||
<rect class="colour1" height="160" rx="20" ry="20" width="560" x="300" y="160"/>
|
||||
<rect class="colour1" height="160" rx="20" ry="20" width="560" x="300" y="400"/>
|
||||
<rect class="colour1" height="160" rx="20" ry="20" width="560" x="300" y="640"/>
|
||||
<circle class="colour2" cx="120" cy="240" r="80"/>
|
||||
<circle class="colour2" cx="120" cy="480" r="80"/>
|
||||
<circle class="colour2" cx="120" cy="720" r="80"/>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 361 B After Width: | Height: | Size: 653 B |
@@ -1 +1,15 @@
|
||||
<svg height="21" viewBox="0 -960 960 960" width="21" xmlns="http://www.w3.org/2000/svg"><path d="M440-280h80v-240h-80v240Zm40-320q17 0 28.5-11.5T520-640q0-17-11.5-28.5T480-680q-17 0-28.5 11.5T440-640q0 17 11.5 28.5T480-600Zm0 520q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-80q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z" fill="blue" stroke="blue"/></svg>
|
||||
<svg height="21" viewBox="0 0 960 960" width="21" xmlns="http://www.w3.org/2000/svg">
|
||||
<style id="colours">
|
||||
.colour1 { color: #0091ff; }
|
||||
.colour2 { color: #00ccff; }
|
||||
</style>
|
||||
<style>
|
||||
.colour1 { stroke: currentColor; }
|
||||
.colour2 { fill: currentColor; }
|
||||
</style>
|
||||
<circle class="colour1" cx="480" cy="480" fill-opacity="0.0" r="400" stroke-width="60"/>
|
||||
<g class="colour2">
|
||||
<circle cx="480" cy="280" r="60"/>
|
||||
<rect height="360" rx="40" ry="40" width="120" x="420" y="410"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 543 B After Width: | Height: | Size: 500 B |
16
resources-icons-21/numeric_type.svg
Normal file
@@ -0,0 +1,16 @@
|
||||
<svg height="21" viewBox="0 0 960 960" width="21" xmlns="http://www.w3.org/2000/svg">
|
||||
<style id="colours">
|
||||
.colour1 { color: #0091ff; }
|
||||
.colour2 { color: #00ccff; }
|
||||
</style>
|
||||
<style>
|
||||
text.small { font: bold 400px sans-serif; }
|
||||
text.large { font: bold 500px sans-serif; }
|
||||
.colour1, .colour2 { fill: currentColor; }
|
||||
rect.colour2 { stroke: currentColor; }
|
||||
</style>
|
||||
<rect class="colour2" fill-opacity="0.0" height="700" rx="100" ry="100" stroke-width="60" width="900" x="30" y="130"/>
|
||||
<text class="small colour1" x="110" y="610">1</text>
|
||||
<text class="large colour2" x="350" y="640">2</text>
|
||||
<text class="small colour1" x="650" y="610">3</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 675 B |
@@ -1 +1,13 @@
|
||||
<svg height="21" viewBox="0 -960 960 960" width="21" xmlns="http://www.w3.org/2000/svg"><path d="M445-80q-29 0-56-12t-45-35L127-403l21-23q14-15 34.5-18.5T221-438l99 53v-365q0-12.75 8.675-21.375 8.676-8.625 21.5-8.625 12.825 0 21.325 8.625T380-750v465l-144-77 156 198q10 12 23.76 18 13.76 6 29.24 6h205q38 0 64-26t26-64v-170q0-25.5-17.25-42.75T680-460H460v-60h219.646q50.148 0 85.251 35T800-400v170q0 63-43.5 106.5T650-80H445ZM203-665q-11.074-18.754-17.037-40.492Q180-727.229 180-750.246 180-821 229.725-870.5T350-920q70.55 0 120.275 49.738Q520-820.524 520-749.956q0 22.956-5.963 44.614Q508.074-683.685 497-665l-52-30q7-12 11-26t4-29.478Q460-796 427.882-828q-32.117-32-78-32Q304-860 272-827.917 240-795.833 240-750q0 15 4 29t11 26l-52 30Zm285 335Z" fill="blue" stroke="blue"/></svg>
|
||||
<svg height="21" viewBox="0 0 960 960" width="21" xmlns="http://www.w3.org/2000/svg">
|
||||
<style id="colours">
|
||||
.colour1 { color: #0091ff; }
|
||||
.colour2 { color: #00ccff; }
|
||||
</style>
|
||||
<style>
|
||||
.colour1, .colour2 { fill: currentColor; }
|
||||
</style>
|
||||
<g>
|
||||
<path class="colour1" d="m463.2,216.48c58.5,0 94.47,43.11 97.5,103.57l0,8l0,93.79l96.2,18.22c3.9,0.44 7.37,1.33 11.26,2.22c72.37,20 116.57,94.67 101.39,168.91l-1.73,8l-45.5,174.69c-9.53,36 -37.7,63.56 -73.23,71.56l-6.94,1.33l-104.86,15.56c-40.3,5.78 -79.3,-14.22 -98.8,-49.79l-3.47,-7.11l-1.3,-2.66c-10.4,-22.67 -25.57,-42.22 -44.64,-56.9l-8.24,-6.22l-81.47,-56.01l-4.34,-2.66l0,0l-4.34,-2.22l-102.26,-52.01c-10.83,-5.78 -17.77,-16.89 -17.77,-29.34c-1.3,-49.33 19.93,-87.12 61.1,-108.46c30.76,-15.56 71.06,-14.67 122.63,0.89l11.26,3.56l0,-185.35c0,-64.45 36.4,-111.57 97.5,-111.57l0.02,-0.01zm0,66.67c-19.93,0 -30.76,12 -32.5,38.67l0,6.22l0,232.91c0,24 -23.4,40.01 -45.07,31.11c-63.27,-27.12 -105.73,-33.34 -124.36,-23.56c-11.26,5.78 -18.2,12.89 -22.1,23.11l-1.73,5.33l82.33,42.22l7.8,4.45l0,0l7.8,4.45l81.47,56.01c29.46,20 53.73,47.56 70.63,79.57l5.2,11.11l1.3,2.66c5.2,12 16.9,19.11 29.46,19.11l4.34,0l104.86,-15.56c11.26,-1.77 20.8,-9.34 25.14,-20l1.73,-4.45l45.5,-174.24c10.83,-41.78 -13.43,-84.45 -53.73,-95.56l-3.03,-0.44l0,0l-125.66,-23.56c-14.3,-2.66 -24.7,-14.22 -26.44,-28l-0.43,-4.89l0,-121.79c0,-30.67 -10.83,-44.9 -32.5,-44.9l0,0.02z"/>
|
||||
<path class="colour2" d="m463.81,60.98c137.36,0 249.16,114.24 249.16,255.58c0,31.11 -5.64,61.34 -15.6,88.9l-6.07,-2.22c-6.5,-2.22 -15.16,-5.33 -26.44,-8c-10.4,-2.22 -20.8,-4 -31.63,-4.89c9.53,-22.67 14.73,-47.56 14.73,-73.79c0,-104.46 -82.33,-188.9 -184.17,-188.9c-101.83,0 -184.17,84.45 -184.17,188.9c0,46.23 16.03,88.9 43.34,121.79c-13.86,1.33 -26,3.12 -35.53,5.33c-15.6,4 -25.57,7.55 -32.93,12c-25.14,-40.01 -39.87,-88.01 -39.87,-139.13c0,-141.35 111.37,-255.58 249.16,-255.58l0.01,0.01z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 781 B After Width: | Height: | Size: 1.9 KiB |
@@ -20,4 +20,5 @@
|
||||
<bitmap id="GroupTypeIcon" filename="group_type.svg"/>
|
||||
<bitmap id="TapTypeIcon" filename="tap_type.svg"/>
|
||||
<bitmap id="InfoTypeIcon" filename="info_type.svg"/>
|
||||
<bitmap id="NumericTypeIcon" filename="numeric_type.svg"/>
|
||||
</drawables>
|
||||
|
||||
@@ -1 +1,16 @@
|
||||
<svg height="24" viewBox="0 0 48 48" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M24 34q.7 0 1.175-.475.475-.475.475-1.175 0-.7-.475-1.175Q24.7 30.7 24 30.7q-.7 0-1.175.475-.475.475-.475 1.175 0 .7.475 1.175Q23.3 34 24 34Zm-1.35-7.65h3V13.7h-3ZM24 44q-4.1 0-7.75-1.575-3.65-1.575-6.375-4.3-2.725-2.725-4.3-6.375Q4 28.1 4 23.95q0-4.1 1.575-7.75 1.575-3.65 4.3-6.35 2.725-2.7 6.375-4.275Q19.9 4 24.05 4q4.1 0 7.75 1.575 3.65 1.575 6.35 4.275 2.7 2.7 4.275 6.35Q44 19.85 44 24q0 4.1-1.575 7.75-1.575 3.65-4.275 6.375t-6.35 4.3Q28.15 44 24 44Zm.05-3q7.05 0 12-4.975T41 23.95q0-7.05-4.95-12T24 7q-7.05 0-12.025 4.95Q7 16.9 7 24q0 7.05 4.975 12.025Q16.95 41 24.05 41ZM24 24Z" fill="red" stroke="red"/></svg>
|
||||
<svg height="24" viewBox="0 0 960 960" width="24" xmlns="http://www.w3.org/2000/svg">
|
||||
<style id="colours">
|
||||
.colour1 { color: #aa0000; }
|
||||
.colour2 { color: #ff1111; }
|
||||
</style>
|
||||
<style>
|
||||
.colour1 { stroke: currentColor; }
|
||||
.colour2 { fill: currentColor; }
|
||||
text.large { font: bold 600px sans-serif; }
|
||||
</style>
|
||||
<circle class="colour1" cx="480" cy="480" fill-opacity="0.0" r="400" stroke-width="60"/>
|
||||
<g class="colour2">
|
||||
<rect height="360" rx="40" ry="40" width="120" x="420" y="220"/>
|
||||
<circle cx="480" cy="710" r="60"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 712 B After Width: | Height: | Size: 548 B |
@@ -1,7 +1,15 @@
|
||||
<svg height="24" viewBox="0 0 200 500" width="24" xmlns="http://www.w3.org/2000/svg">
|
||||
<g transform="matrix(1, 0, 0, 1, 0, 0)">
|
||||
<rect fill="blue" height="100" rx="40" ry="40" width="200" x="0" y="0"/>
|
||||
<rect fill="blue" height="100" rx="40" ry="40" width="200" x="0" y="200"/>
|
||||
<rect fill="blue" height="100" rx="40" ry="40" width="200" x="0" y="400"/>
|
||||
</g>
|
||||
</svg>
|
||||
<svg height="24" viewBox="0 0 960 960" width="24" xmlns="http://www.w3.org/2000/svg">
|
||||
<style id="colours">
|
||||
.colour1 { color: #0091ff; }
|
||||
.colour2 { color: #00ccff; }
|
||||
</style>
|
||||
<style>
|
||||
.colour1, .colour2 { fill: currentColor; }
|
||||
</style>
|
||||
<rect class="colour1" height="160" rx="20" ry="20" width="560" x="300" y="160"/>
|
||||
<rect class="colour1" height="160" rx="20" ry="20" width="560" x="300" y="400"/>
|
||||
<rect class="colour1" height="160" rx="20" ry="20" width="560" x="300" y="640"/>
|
||||
<circle class="colour2" cx="120" cy="240" r="80"/>
|
||||
<circle class="colour2" cx="120" cy="480" r="80"/>
|
||||
<circle class="colour2" cx="120" cy="720" r="80"/>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 361 B After Width: | Height: | Size: 653 B |
@@ -1 +1,15 @@
|
||||
<svg height="24" viewBox="0 -960 960 960" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M440-280h80v-240h-80v240Zm40-320q17 0 28.5-11.5T520-640q0-17-11.5-28.5T480-680q-17 0-28.5 11.5T440-640q0 17 11.5 28.5T480-600Zm0 520q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-80q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z" fill="blue" stroke="blue"/></svg>
|
||||
<svg height="24" viewBox="0 0 960 960" width="24" xmlns="http://www.w3.org/2000/svg">
|
||||
<style id="colours">
|
||||
.colour1 { color: #0091ff; }
|
||||
.colour2 { color: #00ccff; }
|
||||
</style>
|
||||
<style>
|
||||
.colour1 { stroke: currentColor; }
|
||||
.colour2 { fill: currentColor; }
|
||||
</style>
|
||||
<circle class="colour1" cx="480" cy="480" fill-opacity="0.0" r="400" stroke-width="60"/>
|
||||
<g class="colour2">
|
||||
<circle cx="480" cy="280" r="60"/>
|
||||
<rect height="360" rx="40" ry="40" width="120" x="420" y="410"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 543 B After Width: | Height: | Size: 500 B |
16
resources-icons-24/numeric_type.svg
Normal file
@@ -0,0 +1,16 @@
|
||||
<svg height="24" viewBox="0 0 960 960" width="24" xmlns="http://www.w3.org/2000/svg">
|
||||
<style id="colours">
|
||||
.colour1 { color: #0091ff; }
|
||||
.colour2 { color: #00ccff; }
|
||||
</style>
|
||||
<style>
|
||||
text.small { font: bold 400px sans-serif; }
|
||||
text.large { font: bold 500px sans-serif; }
|
||||
.colour1, .colour2 { fill: currentColor; }
|
||||
rect.colour2 { stroke: currentColor; }
|
||||
</style>
|
||||
<rect class="colour2" fill-opacity="0.0" height="700" rx="100" ry="100" stroke-width="60" width="900" x="30" y="130"/>
|
||||
<text class="small colour1" x="110" y="610">1</text>
|
||||
<text class="large colour2" x="350" y="640">2</text>
|
||||
<text class="small colour1" x="650" y="610">3</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 675 B |
@@ -1 +1,13 @@
|
||||
<svg height="24" viewBox="0 -960 960 960" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M445-80q-29 0-56-12t-45-35L127-403l21-23q14-15 34.5-18.5T221-438l99 53v-365q0-12.75 8.675-21.375 8.676-8.625 21.5-8.625 12.825 0 21.325 8.625T380-750v465l-144-77 156 198q10 12 23.76 18 13.76 6 29.24 6h205q38 0 64-26t26-64v-170q0-25.5-17.25-42.75T680-460H460v-60h219.646q50.148 0 85.251 35T800-400v170q0 63-43.5 106.5T650-80H445ZM203-665q-11.074-18.754-17.037-40.492Q180-727.229 180-750.246 180-821 229.725-870.5T350-920q70.55 0 120.275 49.738Q520-820.524 520-749.956q0 22.956-5.963 44.614Q508.074-683.685 497-665l-52-30q7-12 11-26t4-29.478Q460-796 427.882-828q-32.117-32-78-32Q304-860 272-827.917 240-795.833 240-750q0 15 4 29t11 26l-52 30Zm285 335Z" fill="blue" stroke="blue"/></svg>
|
||||
<svg height="24" viewBox="0 0 960 960" width="24" xmlns="http://www.w3.org/2000/svg">
|
||||
<style id="colours">
|
||||
.colour1 { color: #0091ff; }
|
||||
.colour2 { color: #00ccff; }
|
||||
</style>
|
||||
<style>
|
||||
.colour1, .colour2 { fill: currentColor; }
|
||||
</style>
|
||||
<g>
|
||||
<path class="colour1" d="m463.2,216.48c58.5,0 94.47,43.11 97.5,103.57l0,8l0,93.79l96.2,18.22c3.9,0.44 7.37,1.33 11.26,2.22c72.37,20 116.57,94.67 101.39,168.91l-1.73,8l-45.5,174.69c-9.53,36 -37.7,63.56 -73.23,71.56l-6.94,1.33l-104.86,15.56c-40.3,5.78 -79.3,-14.22 -98.8,-49.79l-3.47,-7.11l-1.3,-2.66c-10.4,-22.67 -25.57,-42.22 -44.64,-56.9l-8.24,-6.22l-81.47,-56.01l-4.34,-2.66l0,0l-4.34,-2.22l-102.26,-52.01c-10.83,-5.78 -17.77,-16.89 -17.77,-29.34c-1.3,-49.33 19.93,-87.12 61.1,-108.46c30.76,-15.56 71.06,-14.67 122.63,0.89l11.26,3.56l0,-185.35c0,-64.45 36.4,-111.57 97.5,-111.57l0.02,-0.01zm0,66.67c-19.93,0 -30.76,12 -32.5,38.67l0,6.22l0,232.91c0,24 -23.4,40.01 -45.07,31.11c-63.27,-27.12 -105.73,-33.34 -124.36,-23.56c-11.26,5.78 -18.2,12.89 -22.1,23.11l-1.73,5.33l82.33,42.22l7.8,4.45l0,0l7.8,4.45l81.47,56.01c29.46,20 53.73,47.56 70.63,79.57l5.2,11.11l1.3,2.66c5.2,12 16.9,19.11 29.46,19.11l4.34,0l104.86,-15.56c11.26,-1.77 20.8,-9.34 25.14,-20l1.73,-4.45l45.5,-174.24c10.83,-41.78 -13.43,-84.45 -53.73,-95.56l-3.03,-0.44l0,0l-125.66,-23.56c-14.3,-2.66 -24.7,-14.22 -26.44,-28l-0.43,-4.89l0,-121.79c0,-30.67 -10.83,-44.9 -32.5,-44.9l0,0.02z"/>
|
||||
<path class="colour2" d="m463.81,60.98c137.36,0 249.16,114.24 249.16,255.58c0,31.11 -5.64,61.34 -15.6,88.9l-6.07,-2.22c-6.5,-2.22 -15.16,-5.33 -26.44,-8c-10.4,-2.22 -20.8,-4 -31.63,-4.89c9.53,-22.67 14.73,-47.56 14.73,-73.79c0,-104.46 -82.33,-188.9 -184.17,-188.9c-101.83,0 -184.17,84.45 -184.17,188.9c0,46.23 16.03,88.9 43.34,121.79c-13.86,1.33 -26,3.12 -35.53,5.33c-15.6,4 -25.57,7.55 -32.93,12c-25.14,-40.01 -39.87,-88.01 -39.87,-139.13c0,-141.35 111.37,-255.58 249.16,-255.58l0.01,0.01z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 781 B After Width: | Height: | Size: 1.9 KiB |
@@ -20,4 +20,5 @@
|
||||
<bitmap id="GroupTypeIcon" filename="group_type.svg"/>
|
||||
<bitmap id="TapTypeIcon" filename="tap_type.svg"/>
|
||||
<bitmap id="InfoTypeIcon" filename="info_type.svg"/>
|
||||
<bitmap id="NumericTypeIcon" filename="numeric_type.svg"/>
|
||||
</drawables>
|
||||
|
||||
@@ -1 +1,16 @@
|
||||
<svg height="26" viewBox="0 0 48 48" width="26" xmlns="http://www.w3.org/2000/svg"><path d="M24 34q.7 0 1.175-.475.475-.475.475-1.175 0-.7-.475-1.175Q24.7 30.7 24 30.7q-.7 0-1.175.475-.475.475-.475 1.175 0 .7.475 1.175Q23.3 34 24 34Zm-1.35-7.65h3V13.7h-3ZM24 44q-4.1 0-7.75-1.575-3.65-1.575-6.375-4.3-2.725-2.725-4.3-6.375Q4 28.1 4 23.95q0-4.1 1.575-7.75 1.575-3.65 4.3-6.35 2.725-2.7 6.375-4.275Q19.9 4 24.05 4q4.1 0 7.75 1.575 3.65 1.575 6.35 4.275 2.7 2.7 4.275 6.35Q44 19.85 44 24q0 4.1-1.575 7.75-1.575 3.65-4.275 6.375t-6.35 4.3Q28.15 44 24 44Zm.05-3q7.05 0 12-4.975T41 23.95q0-7.05-4.95-12T24 7q-7.05 0-12.025 4.95Q7 16.9 7 24q0 7.05 4.975 12.025Q16.95 41 24.05 41ZM24 24Z" fill="red" stroke="red"/></svg>
|
||||
<svg height="26" viewBox="0 0 960 960" width="26" xmlns="http://www.w3.org/2000/svg">
|
||||
<style id="colours">
|
||||
.colour1 { color: #aa0000; }
|
||||
.colour2 { color: #ff1111; }
|
||||
</style>
|
||||
<style>
|
||||
.colour1 { stroke: currentColor; }
|
||||
.colour2 { fill: currentColor; }
|
||||
text.large { font: bold 600px sans-serif; }
|
||||
</style>
|
||||
<circle class="colour1" cx="480" cy="480" fill-opacity="0.0" r="400" stroke-width="60"/>
|
||||
<g class="colour2">
|
||||
<rect height="360" rx="40" ry="40" width="120" x="420" y="220"/>
|
||||
<circle cx="480" cy="710" r="60"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 712 B After Width: | Height: | Size: 548 B |
@@ -1,7 +1,15 @@
|
||||
<svg height="26" viewBox="0 0 200 500" width="26" xmlns="http://www.w3.org/2000/svg">
|
||||
<g transform="matrix(1, 0, 0, 1, 0, 0)">
|
||||
<rect fill="blue" height="100" rx="40" ry="40" width="200" x="0" y="0"/>
|
||||
<rect fill="blue" height="100" rx="40" ry="40" width="200" x="0" y="200"/>
|
||||
<rect fill="blue" height="100" rx="40" ry="40" width="200" x="0" y="400"/>
|
||||
</g>
|
||||
</svg>
|
||||
<svg height="26" viewBox="0 0 960 960" width="26" xmlns="http://www.w3.org/2000/svg">
|
||||
<style id="colours">
|
||||
.colour1 { color: #0091ff; }
|
||||
.colour2 { color: #00ccff; }
|
||||
</style>
|
||||
<style>
|
||||
.colour1, .colour2 { fill: currentColor; }
|
||||
</style>
|
||||
<rect class="colour1" height="160" rx="20" ry="20" width="560" x="300" y="160"/>
|
||||
<rect class="colour1" height="160" rx="20" ry="20" width="560" x="300" y="400"/>
|
||||
<rect class="colour1" height="160" rx="20" ry="20" width="560" x="300" y="640"/>
|
||||
<circle class="colour2" cx="120" cy="240" r="80"/>
|
||||
<circle class="colour2" cx="120" cy="480" r="80"/>
|
||||
<circle class="colour2" cx="120" cy="720" r="80"/>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 361 B After Width: | Height: | Size: 653 B |
@@ -1 +1,15 @@
|
||||
<svg height="26" viewBox="0 -960 960 960" width="26" xmlns="http://www.w3.org/2000/svg"><path d="M440-280h80v-240h-80v240Zm40-320q17 0 28.5-11.5T520-640q0-17-11.5-28.5T480-680q-17 0-28.5 11.5T440-640q0 17 11.5 28.5T480-600Zm0 520q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-80q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z" fill="blue" stroke="blue"/></svg>
|
||||
<svg height="26" viewBox="0 0 960 960" width="26" xmlns="http://www.w3.org/2000/svg">
|
||||
<style id="colours">
|
||||
.colour1 { color: #0091ff; }
|
||||
.colour2 { color: #00ccff; }
|
||||
</style>
|
||||
<style>
|
||||
.colour1 { stroke: currentColor; }
|
||||
.colour2 { fill: currentColor; }
|
||||
</style>
|
||||
<circle class="colour1" cx="480" cy="480" fill-opacity="0.0" r="400" stroke-width="60"/>
|
||||
<g class="colour2">
|
||||
<circle cx="480" cy="280" r="60"/>
|
||||
<rect height="360" rx="40" ry="40" width="120" x="420" y="410"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 543 B After Width: | Height: | Size: 500 B |
16
resources-icons-26/numeric_type.svg
Normal file
@@ -0,0 +1,16 @@
|
||||
<svg height="26" viewBox="0 0 960 960" width="26" xmlns="http://www.w3.org/2000/svg">
|
||||
<style id="colours">
|
||||
.colour1 { color: #0091ff; }
|
||||
.colour2 { color: #00ccff; }
|
||||
</style>
|
||||
<style>
|
||||
text.small { font: bold 400px sans-serif; }
|
||||
text.large { font: bold 500px sans-serif; }
|
||||
.colour1, .colour2 { fill: currentColor; }
|
||||
rect.colour2 { stroke: currentColor; }
|
||||
</style>
|
||||
<rect class="colour2" fill-opacity="0.0" height="700" rx="100" ry="100" stroke-width="60" width="900" x="30" y="130"/>
|
||||
<text class="small colour1" x="110" y="610">1</text>
|
||||
<text class="large colour2" x="350" y="640">2</text>
|
||||
<text class="small colour1" x="650" y="610">3</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 675 B |
@@ -1 +1,13 @@
|
||||
<svg height="26" viewBox="0 -960 960 960" width="26" xmlns="http://www.w3.org/2000/svg"><path d="M445-80q-29 0-56-12t-45-35L127-403l21-23q14-15 34.5-18.5T221-438l99 53v-365q0-12.75 8.675-21.375 8.676-8.625 21.5-8.625 12.825 0 21.325 8.625T380-750v465l-144-77 156 198q10 12 23.76 18 13.76 6 29.24 6h205q38 0 64-26t26-64v-170q0-25.5-17.25-42.75T680-460H460v-60h219.646q50.148 0 85.251 35T800-400v170q0 63-43.5 106.5T650-80H445ZM203-665q-11.074-18.754-17.037-40.492Q180-727.229 180-750.246 180-821 229.725-870.5T350-920q70.55 0 120.275 49.738Q520-820.524 520-749.956q0 22.956-5.963 44.614Q508.074-683.685 497-665l-52-30q7-12 11-26t4-29.478Q460-796 427.882-828q-32.117-32-78-32Q304-860 272-827.917 240-795.833 240-750q0 15 4 29t11 26l-52 30Zm285 335Z" fill="blue" stroke="blue"/></svg>
|
||||
<svg height="26" viewBox="0 0 960 960" width="26" xmlns="http://www.w3.org/2000/svg">
|
||||
<style id="colours">
|
||||
.colour1 { color: #0091ff; }
|
||||
.colour2 { color: #00ccff; }
|
||||
</style>
|
||||
<style>
|
||||
.colour1, .colour2 { fill: currentColor; }
|
||||
</style>
|
||||
<g>
|
||||
<path class="colour1" d="m463.2,216.48c58.5,0 94.47,43.11 97.5,103.57l0,8l0,93.79l96.2,18.22c3.9,0.44 7.37,1.33 11.26,2.22c72.37,20 116.57,94.67 101.39,168.91l-1.73,8l-45.5,174.69c-9.53,36 -37.7,63.56 -73.23,71.56l-6.94,1.33l-104.86,15.56c-40.3,5.78 -79.3,-14.22 -98.8,-49.79l-3.47,-7.11l-1.3,-2.66c-10.4,-22.67 -25.57,-42.22 -44.64,-56.9l-8.24,-6.22l-81.47,-56.01l-4.34,-2.66l0,0l-4.34,-2.22l-102.26,-52.01c-10.83,-5.78 -17.77,-16.89 -17.77,-29.34c-1.3,-49.33 19.93,-87.12 61.1,-108.46c30.76,-15.56 71.06,-14.67 122.63,0.89l11.26,3.56l0,-185.35c0,-64.45 36.4,-111.57 97.5,-111.57l0.02,-0.01zm0,66.67c-19.93,0 -30.76,12 -32.5,38.67l0,6.22l0,232.91c0,24 -23.4,40.01 -45.07,31.11c-63.27,-27.12 -105.73,-33.34 -124.36,-23.56c-11.26,5.78 -18.2,12.89 -22.1,23.11l-1.73,5.33l82.33,42.22l7.8,4.45l0,0l7.8,4.45l81.47,56.01c29.46,20 53.73,47.56 70.63,79.57l5.2,11.11l1.3,2.66c5.2,12 16.9,19.11 29.46,19.11l4.34,0l104.86,-15.56c11.26,-1.77 20.8,-9.34 25.14,-20l1.73,-4.45l45.5,-174.24c10.83,-41.78 -13.43,-84.45 -53.73,-95.56l-3.03,-0.44l0,0l-125.66,-23.56c-14.3,-2.66 -24.7,-14.22 -26.44,-28l-0.43,-4.89l0,-121.79c0,-30.67 -10.83,-44.9 -32.5,-44.9l0,0.02z"/>
|
||||
<path class="colour2" d="m463.81,60.98c137.36,0 249.16,114.24 249.16,255.58c0,31.11 -5.64,61.34 -15.6,88.9l-6.07,-2.22c-6.5,-2.22 -15.16,-5.33 -26.44,-8c-10.4,-2.22 -20.8,-4 -31.63,-4.89c9.53,-22.67 14.73,-47.56 14.73,-73.79c0,-104.46 -82.33,-188.9 -184.17,-188.9c-101.83,0 -184.17,84.45 -184.17,188.9c0,46.23 16.03,88.9 43.34,121.79c-13.86,1.33 -26,3.12 -35.53,5.33c-15.6,4 -25.57,7.55 -32.93,12c-25.14,-40.01 -39.87,-88.01 -39.87,-139.13c0,-141.35 111.37,-255.58 249.16,-255.58l0.01,0.01z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 781 B After Width: | Height: | Size: 1.9 KiB |
@@ -20,4 +20,5 @@
|
||||
<bitmap id="GroupTypeIcon" filename="group_type.svg"/>
|
||||
<bitmap id="TapTypeIcon" filename="tap_type.svg"/>
|
||||
<bitmap id="InfoTypeIcon" filename="info_type.svg"/>
|
||||
<bitmap id="NumericTypeIcon" filename="numeric_type.svg"/>
|
||||
</drawables>
|
||||
|
||||
@@ -1 +1,16 @@
|
||||
<svg height="28" viewBox="0 0 48 48" width="28" xmlns="http://www.w3.org/2000/svg"><path d="M24 34q.7 0 1.175-.475.475-.475.475-1.175 0-.7-.475-1.175Q24.7 30.7 24 30.7q-.7 0-1.175.475-.475.475-.475 1.175 0 .7.475 1.175Q23.3 34 24 34Zm-1.35-7.65h3V13.7h-3ZM24 44q-4.1 0-7.75-1.575-3.65-1.575-6.375-4.3-2.725-2.725-4.3-6.375Q4 28.1 4 23.95q0-4.1 1.575-7.75 1.575-3.65 4.3-6.35 2.725-2.7 6.375-4.275Q19.9 4 24.05 4q4.1 0 7.75 1.575 3.65 1.575 6.35 4.275 2.7 2.7 4.275 6.35Q44 19.85 44 24q0 4.1-1.575 7.75-1.575 3.65-4.275 6.375t-6.35 4.3Q28.15 44 24 44Zm.05-3q7.05 0 12-4.975T41 23.95q0-7.05-4.95-12T24 7q-7.05 0-12.025 4.95Q7 16.9 7 24q0 7.05 4.975 12.025Q16.95 41 24.05 41ZM24 24Z" fill="red" stroke="red"/></svg>
|
||||
<svg height="28" viewBox="0 0 960 960" width="28" xmlns="http://www.w3.org/2000/svg">
|
||||
<style id="colours">
|
||||
.colour1 { color: #aa0000; }
|
||||
.colour2 { color: #ff1111; }
|
||||
</style>
|
||||
<style>
|
||||
.colour1 { stroke: currentColor; }
|
||||
.colour2 { fill: currentColor; }
|
||||
text.large { font: bold 600px sans-serif; }
|
||||
</style>
|
||||
<circle class="colour1" cx="480" cy="480" fill-opacity="0.0" r="400" stroke-width="60"/>
|
||||
<g class="colour2">
|
||||
<rect height="360" rx="40" ry="40" width="120" x="420" y="220"/>
|
||||
<circle cx="480" cy="710" r="60"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 712 B After Width: | Height: | Size: 548 B |
@@ -1,7 +1,15 @@
|
||||
<svg height="28" viewBox="0 0 200 500" width="28" xmlns="http://www.w3.org/2000/svg">
|
||||
<g transform="matrix(1, 0, 0, 1, 0, 0)">
|
||||
<rect fill="blue" height="100" rx="40" ry="40" width="200" x="0" y="0"/>
|
||||
<rect fill="blue" height="100" rx="40" ry="40" width="200" x="0" y="200"/>
|
||||
<rect fill="blue" height="100" rx="40" ry="40" width="200" x="0" y="400"/>
|
||||
</g>
|
||||
</svg>
|
||||
<svg height="28" viewBox="0 0 960 960" width="28" xmlns="http://www.w3.org/2000/svg">
|
||||
<style id="colours">
|
||||
.colour1 { color: #0091ff; }
|
||||
.colour2 { color: #00ccff; }
|
||||
</style>
|
||||
<style>
|
||||
.colour1, .colour2 { fill: currentColor; }
|
||||
</style>
|
||||
<rect class="colour1" height="160" rx="20" ry="20" width="560" x="300" y="160"/>
|
||||
<rect class="colour1" height="160" rx="20" ry="20" width="560" x="300" y="400"/>
|
||||
<rect class="colour1" height="160" rx="20" ry="20" width="560" x="300" y="640"/>
|
||||
<circle class="colour2" cx="120" cy="240" r="80"/>
|
||||
<circle class="colour2" cx="120" cy="480" r="80"/>
|
||||
<circle class="colour2" cx="120" cy="720" r="80"/>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 361 B After Width: | Height: | Size: 653 B |
@@ -1 +1,15 @@
|
||||
<svg height="28" viewBox="0 -960 960 960" width="28" xmlns="http://www.w3.org/2000/svg"><path d="M440-280h80v-240h-80v240Zm40-320q17 0 28.5-11.5T520-640q0-17-11.5-28.5T480-680q-17 0-28.5 11.5T440-640q0 17 11.5 28.5T480-600Zm0 520q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-80q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z" fill="blue" stroke="blue"/></svg>
|
||||
<svg height="28" viewBox="0 0 960 960" width="28" xmlns="http://www.w3.org/2000/svg">
|
||||
<style id="colours">
|
||||
.colour1 { color: #0091ff; }
|
||||
.colour2 { color: #00ccff; }
|
||||
</style>
|
||||
<style>
|
||||
.colour1 { stroke: currentColor; }
|
||||
.colour2 { fill: currentColor; }
|
||||
</style>
|
||||
<circle class="colour1" cx="480" cy="480" fill-opacity="0.0" r="400" stroke-width="60"/>
|
||||
<g class="colour2">
|
||||
<circle cx="480" cy="280" r="60"/>
|
||||
<rect height="360" rx="40" ry="40" width="120" x="420" y="410"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 543 B After Width: | Height: | Size: 500 B |
16
resources-icons-28/numeric_type.svg
Normal file
@@ -0,0 +1,16 @@
|
||||
<svg height="28" viewBox="0 0 960 960" width="28" xmlns="http://www.w3.org/2000/svg">
|
||||
<style id="colours">
|
||||
.colour1 { color: #0091ff; }
|
||||
.colour2 { color: #00ccff; }
|
||||
</style>
|
||||
<style>
|
||||
text.small { font: bold 400px sans-serif; }
|
||||
text.large { font: bold 500px sans-serif; }
|
||||
.colour1, .colour2 { fill: currentColor; }
|
||||
rect.colour2 { stroke: currentColor; }
|
||||
</style>
|
||||
<rect class="colour2" fill-opacity="0.0" height="700" rx="100" ry="100" stroke-width="60" width="900" x="30" y="130"/>
|
||||
<text class="small colour1" x="110" y="610">1</text>
|
||||
<text class="large colour2" x="350" y="640">2</text>
|
||||
<text class="small colour1" x="650" y="610">3</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 675 B |
@@ -1 +1,13 @@
|
||||
<svg height="28" viewBox="0 -960 960 960" width="28" xmlns="http://www.w3.org/2000/svg"><path d="M445-80q-29 0-56-12t-45-35L127-403l21-23q14-15 34.5-18.5T221-438l99 53v-365q0-12.75 8.675-21.375 8.676-8.625 21.5-8.625 12.825 0 21.325 8.625T380-750v465l-144-77 156 198q10 12 23.76 18 13.76 6 29.24 6h205q38 0 64-26t26-64v-170q0-25.5-17.25-42.75T680-460H460v-60h219.646q50.148 0 85.251 35T800-400v170q0 63-43.5 106.5T650-80H445ZM203-665q-11.074-18.754-17.037-40.492Q180-727.229 180-750.246 180-821 229.725-870.5T350-920q70.55 0 120.275 49.738Q520-820.524 520-749.956q0 22.956-5.963 44.614Q508.074-683.685 497-665l-52-30q7-12 11-26t4-29.478Q460-796 427.882-828q-32.117-32-78-32Q304-860 272-827.917 240-795.833 240-750q0 15 4 29t11 26l-52 30Zm285 335Z" fill="blue" stroke="blue"/></svg>
|
||||
<svg height="28" viewBox="0 0 960 960" width="28" xmlns="http://www.w3.org/2000/svg">
|
||||
<style id="colours">
|
||||
.colour1 { color: #0091ff; }
|
||||
.colour2 { color: #00ccff; }
|
||||
</style>
|
||||
<style>
|
||||
.colour1, .colour2 { fill: currentColor; }
|
||||
</style>
|
||||
<g>
|
||||
<path class="colour1" d="m463.2,216.48c58.5,0 94.47,43.11 97.5,103.57l0,8l0,93.79l96.2,18.22c3.9,0.44 7.37,1.33 11.26,2.22c72.37,20 116.57,94.67 101.39,168.91l-1.73,8l-45.5,174.69c-9.53,36 -37.7,63.56 -73.23,71.56l-6.94,1.33l-104.86,15.56c-40.3,5.78 -79.3,-14.22 -98.8,-49.79l-3.47,-7.11l-1.3,-2.66c-10.4,-22.67 -25.57,-42.22 -44.64,-56.9l-8.24,-6.22l-81.47,-56.01l-4.34,-2.66l0,0l-4.34,-2.22l-102.26,-52.01c-10.83,-5.78 -17.77,-16.89 -17.77,-29.34c-1.3,-49.33 19.93,-87.12 61.1,-108.46c30.76,-15.56 71.06,-14.67 122.63,0.89l11.26,3.56l0,-185.35c0,-64.45 36.4,-111.57 97.5,-111.57l0.02,-0.01zm0,66.67c-19.93,0 -30.76,12 -32.5,38.67l0,6.22l0,232.91c0,24 -23.4,40.01 -45.07,31.11c-63.27,-27.12 -105.73,-33.34 -124.36,-23.56c-11.26,5.78 -18.2,12.89 -22.1,23.11l-1.73,5.33l82.33,42.22l7.8,4.45l0,0l7.8,4.45l81.47,56.01c29.46,20 53.73,47.56 70.63,79.57l5.2,11.11l1.3,2.66c5.2,12 16.9,19.11 29.46,19.11l4.34,0l104.86,-15.56c11.26,-1.77 20.8,-9.34 25.14,-20l1.73,-4.45l45.5,-174.24c10.83,-41.78 -13.43,-84.45 -53.73,-95.56l-3.03,-0.44l0,0l-125.66,-23.56c-14.3,-2.66 -24.7,-14.22 -26.44,-28l-0.43,-4.89l0,-121.79c0,-30.67 -10.83,-44.9 -32.5,-44.9l0,0.02z"/>
|
||||
<path class="colour2" d="m463.81,60.98c137.36,0 249.16,114.24 249.16,255.58c0,31.11 -5.64,61.34 -15.6,88.9l-6.07,-2.22c-6.5,-2.22 -15.16,-5.33 -26.44,-8c-10.4,-2.22 -20.8,-4 -31.63,-4.89c9.53,-22.67 14.73,-47.56 14.73,-73.79c0,-104.46 -82.33,-188.9 -184.17,-188.9c-101.83,0 -184.17,84.45 -184.17,188.9c0,46.23 16.03,88.9 43.34,121.79c-13.86,1.33 -26,3.12 -35.53,5.33c-15.6,4 -25.57,7.55 -32.93,12c-25.14,-40.01 -39.87,-88.01 -39.87,-139.13c0,-141.35 111.37,-255.58 249.16,-255.58l0.01,0.01z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 781 B After Width: | Height: | Size: 1.9 KiB |
@@ -20,4 +20,5 @@
|
||||
<bitmap id="GroupTypeIcon" filename="group_type.svg"/>
|
||||
<bitmap id="TapTypeIcon" filename="tap_type.svg"/>
|
||||
<bitmap id="InfoTypeIcon" filename="info_type.svg"/>
|
||||
<bitmap id="NumericTypeIcon" filename="numeric_type.svg"/>
|
||||
</drawables>
|
||||
|
||||
@@ -1 +1,16 @@
|
||||
<svg height="30" viewBox="0 0 48 48" width="30" xmlns="http://www.w3.org/2000/svg"><path d="M24 34q.7 0 1.175-.475.475-.475.475-1.175 0-.7-.475-1.175Q24.7 30.7 24 30.7q-.7 0-1.175.475-.475.475-.475 1.175 0 .7.475 1.175Q23.3 34 24 34Zm-1.35-7.65h3V13.7h-3ZM24 44q-4.1 0-7.75-1.575-3.65-1.575-6.375-4.3-2.725-2.725-4.3-6.375Q4 28.1 4 23.95q0-4.1 1.575-7.75 1.575-3.65 4.3-6.35 2.725-2.7 6.375-4.275Q19.9 4 24.05 4q4.1 0 7.75 1.575 3.65 1.575 6.35 4.275 2.7 2.7 4.275 6.35Q44 19.85 44 24q0 4.1-1.575 7.75-1.575 3.65-4.275 6.375t-6.35 4.3Q28.15 44 24 44Zm.05-3q7.05 0 12-4.975T41 23.95q0-7.05-4.95-12T24 7q-7.05 0-12.025 4.95Q7 16.9 7 24q0 7.05 4.975 12.025Q16.95 41 24.05 41ZM24 24Z" fill="red" stroke="red"/></svg>
|
||||
<svg height="30" viewBox="0 0 960 960" width="30" xmlns="http://www.w3.org/2000/svg">
|
||||
<style id="colours">
|
||||
.colour1 { color: #aa0000; }
|
||||
.colour2 { color: #ff1111; }
|
||||
</style>
|
||||
<style>
|
||||
.colour1 { stroke: currentColor; }
|
||||
.colour2 { fill: currentColor; }
|
||||
text.large { font: bold 600px sans-serif; }
|
||||
</style>
|
||||
<circle class="colour1" cx="480" cy="480" fill-opacity="0.0" r="400" stroke-width="60"/>
|
||||
<g class="colour2">
|
||||
<rect height="360" rx="40" ry="40" width="120" x="420" y="220"/>
|
||||
<circle cx="480" cy="710" r="60"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 712 B After Width: | Height: | Size: 548 B |
@@ -1,7 +1,15 @@
|
||||
<svg height="30" viewBox="0 0 200 500" width="30" xmlns="http://www.w3.org/2000/svg">
|
||||
<g transform="matrix(1, 0, 0, 1, 0, 0)">
|
||||
<rect fill="blue" height="100" rx="40" ry="40" width="200" x="0" y="0"/>
|
||||
<rect fill="blue" height="100" rx="40" ry="40" width="200" x="0" y="200"/>
|
||||
<rect fill="blue" height="100" rx="40" ry="40" width="200" x="0" y="400"/>
|
||||
</g>
|
||||
</svg>
|
||||
<svg height="30" viewBox="0 0 960 960" width="30" xmlns="http://www.w3.org/2000/svg">
|
||||
<style id="colours">
|
||||
.colour1 { color: #0091ff; }
|
||||
.colour2 { color: #00ccff; }
|
||||
</style>
|
||||
<style>
|
||||
.colour1, .colour2 { fill: currentColor; }
|
||||
</style>
|
||||
<rect class="colour1" height="160" rx="20" ry="20" width="560" x="300" y="160"/>
|
||||
<rect class="colour1" height="160" rx="20" ry="20" width="560" x="300" y="400"/>
|
||||
<rect class="colour1" height="160" rx="20" ry="20" width="560" x="300" y="640"/>
|
||||
<circle class="colour2" cx="120" cy="240" r="80"/>
|
||||
<circle class="colour2" cx="120" cy="480" r="80"/>
|
||||
<circle class="colour2" cx="120" cy="720" r="80"/>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 361 B After Width: | Height: | Size: 653 B |
@@ -1 +1,15 @@
|
||||
<svg height="30" viewBox="0 -960 960 960" width="30" xmlns="http://www.w3.org/2000/svg"><path d="M440-280h80v-240h-80v240Zm40-320q17 0 28.5-11.5T520-640q0-17-11.5-28.5T480-680q-17 0-28.5 11.5T440-640q0 17 11.5 28.5T480-600Zm0 520q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-80q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z" fill="blue" stroke="blue"/></svg>
|
||||
<svg height="30" viewBox="0 0 960 960" width="30" xmlns="http://www.w3.org/2000/svg">
|
||||
<style id="colours">
|
||||
.colour1 { color: #0091ff; }
|
||||
.colour2 { color: #00ccff; }
|
||||
</style>
|
||||
<style>
|
||||
.colour1 { stroke: currentColor; }
|
||||
.colour2 { fill: currentColor; }
|
||||
</style>
|
||||
<circle class="colour1" cx="480" cy="480" fill-opacity="0.0" r="400" stroke-width="60"/>
|
||||
<g class="colour2">
|
||||
<circle cx="480" cy="280" r="60"/>
|
||||
<rect height="360" rx="40" ry="40" width="120" x="420" y="410"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 543 B After Width: | Height: | Size: 500 B |
16
resources-icons-30/numeric_type.svg
Normal file
@@ -0,0 +1,16 @@
|
||||
<svg height="30" viewBox="0 0 960 960" width="30" xmlns="http://www.w3.org/2000/svg">
|
||||
<style id="colours">
|
||||
.colour1 { color: #0091ff; }
|
||||
.colour2 { color: #00ccff; }
|
||||
</style>
|
||||
<style>
|
||||
text.small { font: bold 400px sans-serif; }
|
||||
text.large { font: bold 500px sans-serif; }
|
||||
.colour1, .colour2 { fill: currentColor; }
|
||||
rect.colour2 { stroke: currentColor; }
|
||||
</style>
|
||||
<rect class="colour2" fill-opacity="0.0" height="700" rx="100" ry="100" stroke-width="60" width="900" x="30" y="130"/>
|
||||
<text class="small colour1" x="110" y="610">1</text>
|
||||
<text class="large colour2" x="350" y="640">2</text>
|
||||
<text class="small colour1" x="650" y="610">3</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 675 B |
@@ -1 +1,13 @@
|
||||
<svg height="30" viewBox="0 -960 960 960" width="30" xmlns="http://www.w3.org/2000/svg"><path d="M445-80q-29 0-56-12t-45-35L127-403l21-23q14-15 34.5-18.5T221-438l99 53v-365q0-12.75 8.675-21.375 8.676-8.625 21.5-8.625 12.825 0 21.325 8.625T380-750v465l-144-77 156 198q10 12 23.76 18 13.76 6 29.24 6h205q38 0 64-26t26-64v-170q0-25.5-17.25-42.75T680-460H460v-60h219.646q50.148 0 85.251 35T800-400v170q0 63-43.5 106.5T650-80H445ZM203-665q-11.074-18.754-17.037-40.492Q180-727.229 180-750.246 180-821 229.725-870.5T350-920q70.55 0 120.275 49.738Q520-820.524 520-749.956q0 22.956-5.963 44.614Q508.074-683.685 497-665l-52-30q7-12 11-26t4-29.478Q460-796 427.882-828q-32.117-32-78-32Q304-860 272-827.917 240-795.833 240-750q0 15 4 29t11 26l-52 30Zm285 335Z" fill="blue" stroke="blue"/></svg>
|
||||
<svg height="30" viewBox="0 0 960 960" width="30" xmlns="http://www.w3.org/2000/svg">
|
||||
<style id="colours">
|
||||
.colour1 { color: #0091ff; }
|
||||
.colour2 { color: #00ccff; }
|
||||
</style>
|
||||
<style>
|
||||
.colour1, .colour2 { fill: currentColor; }
|
||||
</style>
|
||||
<g>
|
||||
<path class="colour1" d="m463.2,216.48c58.5,0 94.47,43.11 97.5,103.57l0,8l0,93.79l96.2,18.22c3.9,0.44 7.37,1.33 11.26,2.22c72.37,20 116.57,94.67 101.39,168.91l-1.73,8l-45.5,174.69c-9.53,36 -37.7,63.56 -73.23,71.56l-6.94,1.33l-104.86,15.56c-40.3,5.78 -79.3,-14.22 -98.8,-49.79l-3.47,-7.11l-1.3,-2.66c-10.4,-22.67 -25.57,-42.22 -44.64,-56.9l-8.24,-6.22l-81.47,-56.01l-4.34,-2.66l0,0l-4.34,-2.22l-102.26,-52.01c-10.83,-5.78 -17.77,-16.89 -17.77,-29.34c-1.3,-49.33 19.93,-87.12 61.1,-108.46c30.76,-15.56 71.06,-14.67 122.63,0.89l11.26,3.56l0,-185.35c0,-64.45 36.4,-111.57 97.5,-111.57l0.02,-0.01zm0,66.67c-19.93,0 -30.76,12 -32.5,38.67l0,6.22l0,232.91c0,24 -23.4,40.01 -45.07,31.11c-63.27,-27.12 -105.73,-33.34 -124.36,-23.56c-11.26,5.78 -18.2,12.89 -22.1,23.11l-1.73,5.33l82.33,42.22l7.8,4.45l0,0l7.8,4.45l81.47,56.01c29.46,20 53.73,47.56 70.63,79.57l5.2,11.11l1.3,2.66c5.2,12 16.9,19.11 29.46,19.11l4.34,0l104.86,-15.56c11.26,-1.77 20.8,-9.34 25.14,-20l1.73,-4.45l45.5,-174.24c10.83,-41.78 -13.43,-84.45 -53.73,-95.56l-3.03,-0.44l0,0l-125.66,-23.56c-14.3,-2.66 -24.7,-14.22 -26.44,-28l-0.43,-4.89l0,-121.79c0,-30.67 -10.83,-44.9 -32.5,-44.9l0,0.02z"/>
|
||||
<path class="colour2" d="m463.81,60.98c137.36,0 249.16,114.24 249.16,255.58c0,31.11 -5.64,61.34 -15.6,88.9l-6.07,-2.22c-6.5,-2.22 -15.16,-5.33 -26.44,-8c-10.4,-2.22 -20.8,-4 -31.63,-4.89c9.53,-22.67 14.73,-47.56 14.73,-73.79c0,-104.46 -82.33,-188.9 -184.17,-188.9c-101.83,0 -184.17,84.45 -184.17,188.9c0,46.23 16.03,88.9 43.34,121.79c-13.86,1.33 -26,3.12 -35.53,5.33c-15.6,4 -25.57,7.55 -32.93,12c-25.14,-40.01 -39.87,-88.01 -39.87,-139.13c0,-141.35 111.37,-255.58 249.16,-255.58l0.01,0.01z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 781 B After Width: | Height: | Size: 1.9 KiB |
@@ -20,4 +20,5 @@
|
||||
<bitmap id="GroupTypeIcon" filename="group_type.svg"/>
|
||||
<bitmap id="TapTypeIcon" filename="tap_type.svg"/>
|
||||
<bitmap id="InfoTypeIcon" filename="info_type.svg"/>
|
||||
<bitmap id="NumericTypeIcon" filename="numeric_type.svg"/>
|
||||
</drawables>
|
||||
|
||||
@@ -1 +1,16 @@
|
||||
<svg height="32" viewBox="0 0 48 48" width="32" xmlns="http://www.w3.org/2000/svg"><path d="M24 34q.7 0 1.175-.475.475-.475.475-1.175 0-.7-.475-1.175Q24.7 30.7 24 30.7q-.7 0-1.175.475-.475.475-.475 1.175 0 .7.475 1.175Q23.3 34 24 34Zm-1.35-7.65h3V13.7h-3ZM24 44q-4.1 0-7.75-1.575-3.65-1.575-6.375-4.3-2.725-2.725-4.3-6.375Q4 28.1 4 23.95q0-4.1 1.575-7.75 1.575-3.65 4.3-6.35 2.725-2.7 6.375-4.275Q19.9 4 24.05 4q4.1 0 7.75 1.575 3.65 1.575 6.35 4.275 2.7 2.7 4.275 6.35Q44 19.85 44 24q0 4.1-1.575 7.75-1.575 3.65-4.275 6.375t-6.35 4.3Q28.15 44 24 44Zm.05-3q7.05 0 12-4.975T41 23.95q0-7.05-4.95-12T24 7q-7.05 0-12.025 4.95Q7 16.9 7 24q0 7.05 4.975 12.025Q16.95 41 24.05 41ZM24 24Z" fill="red" stroke="red"/></svg>
|
||||
<svg height="32" viewBox="0 0 960 960" width="32" xmlns="http://www.w3.org/2000/svg">
|
||||
<style id="colours">
|
||||
.colour1 { color: #aa0000; }
|
||||
.colour2 { color: #ff1111; }
|
||||
</style>
|
||||
<style>
|
||||
.colour1 { stroke: currentColor; }
|
||||
.colour2 { fill: currentColor; }
|
||||
text.large { font: bold 600px sans-serif; }
|
||||
</style>
|
||||
<circle class="colour1" cx="480" cy="480" fill-opacity="0.0" r="400" stroke-width="60"/>
|
||||
<g class="colour2">
|
||||
<rect height="360" rx="40" ry="40" width="120" x="420" y="220"/>
|
||||
<circle cx="480" cy="710" r="60"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 712 B After Width: | Height: | Size: 548 B |
@@ -1,7 +1,15 @@
|
||||
<svg height="32" viewBox="0 0 200 500" width="32" xmlns="http://www.w3.org/2000/svg">
|
||||
<g transform="matrix(1, 0, 0, 1, 0, 0)">
|
||||
<rect fill="blue" height="100" rx="40" ry="40" width="200" x="0" y="0"/>
|
||||
<rect fill="blue" height="100" rx="40" ry="40" width="200" x="0" y="200"/>
|
||||
<rect fill="blue" height="100" rx="40" ry="40" width="200" x="0" y="400"/>
|
||||
</g>
|
||||
</svg>
|
||||
<svg height="32" viewBox="0 0 960 960" width="32" xmlns="http://www.w3.org/2000/svg">
|
||||
<style id="colours">
|
||||
.colour1 { color: #0091ff; }
|
||||
.colour2 { color: #00ccff; }
|
||||
</style>
|
||||
<style>
|
||||
.colour1, .colour2 { fill: currentColor; }
|
||||
</style>
|
||||
<rect class="colour1" height="160" rx="20" ry="20" width="560" x="300" y="160"/>
|
||||
<rect class="colour1" height="160" rx="20" ry="20" width="560" x="300" y="400"/>
|
||||
<rect class="colour1" height="160" rx="20" ry="20" width="560" x="300" y="640"/>
|
||||
<circle class="colour2" cx="120" cy="240" r="80"/>
|
||||
<circle class="colour2" cx="120" cy="480" r="80"/>
|
||||
<circle class="colour2" cx="120" cy="720" r="80"/>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 361 B After Width: | Height: | Size: 653 B |
@@ -1 +1,15 @@
|
||||
<svg height="32" viewBox="0 -960 960 960" width="32" xmlns="http://www.w3.org/2000/svg"><path d="M440-280h80v-240h-80v240Zm40-320q17 0 28.5-11.5T520-640q0-17-11.5-28.5T480-680q-17 0-28.5 11.5T440-640q0 17 11.5 28.5T480-600Zm0 520q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-80q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z" fill="blue" stroke="blue"/></svg>
|
||||
<svg height="32" viewBox="0 0 960 960" width="32" xmlns="http://www.w3.org/2000/svg">
|
||||
<style id="colours">
|
||||
.colour1 { color: #0091ff; }
|
||||
.colour2 { color: #00ccff; }
|
||||
</style>
|
||||
<style>
|
||||
.colour1 { stroke: currentColor; }
|
||||
.colour2 { fill: currentColor; }
|
||||
</style>
|
||||
<circle class="colour1" cx="480" cy="480" fill-opacity="0.0" r="400" stroke-width="60"/>
|
||||
<g class="colour2">
|
||||
<circle cx="480" cy="280" r="60"/>
|
||||
<rect height="360" rx="40" ry="40" width="120" x="420" y="410"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 543 B After Width: | Height: | Size: 500 B |
16
resources-icons-32/numeric_type.svg
Normal file
@@ -0,0 +1,16 @@
|
||||
<svg height="32" viewBox="0 0 960 960" width="32" xmlns="http://www.w3.org/2000/svg">
|
||||
<style id="colours">
|
||||
.colour1 { color: #0091ff; }
|
||||
.colour2 { color: #00ccff; }
|
||||
</style>
|
||||
<style>
|
||||
text.small { font: bold 400px sans-serif; }
|
||||
text.large { font: bold 500px sans-serif; }
|
||||
.colour1, .colour2 { fill: currentColor; }
|
||||
rect.colour2 { stroke: currentColor; }
|
||||
</style>
|
||||
<rect class="colour2" fill-opacity="0.0" height="700" rx="100" ry="100" stroke-width="60" width="900" x="30" y="130"/>
|
||||
<text class="small colour1" x="110" y="610">1</text>
|
||||
<text class="large colour2" x="350" y="640">2</text>
|
||||
<text class="small colour1" x="650" y="610">3</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 675 B |
@@ -1 +1,13 @@
|
||||
<svg height="32" viewBox="0 -960 960 960" width="32" xmlns="http://www.w3.org/2000/svg"><path d="M445-80q-29 0-56-12t-45-35L127-403l21-23q14-15 34.5-18.5T221-438l99 53v-365q0-12.75 8.675-21.375 8.676-8.625 21.5-8.625 12.825 0 21.325 8.625T380-750v465l-144-77 156 198q10 12 23.76 18 13.76 6 29.24 6h205q38 0 64-26t26-64v-170q0-25.5-17.25-42.75T680-460H460v-60h219.646q50.148 0 85.251 35T800-400v170q0 63-43.5 106.5T650-80H445ZM203-665q-11.074-18.754-17.037-40.492Q180-727.229 180-750.246 180-821 229.725-870.5T350-920q70.55 0 120.275 49.738Q520-820.524 520-749.956q0 22.956-5.963 44.614Q508.074-683.685 497-665l-52-30q7-12 11-26t4-29.478Q460-796 427.882-828q-32.117-32-78-32Q304-860 272-827.917 240-795.833 240-750q0 15 4 29t11 26l-52 30Zm285 335Z" fill="blue" stroke="blue"/></svg>
|
||||
<svg height="32" viewBox="0 0 960 960" width="32" xmlns="http://www.w3.org/2000/svg">
|
||||
<style id="colours">
|
||||
.colour1 { color: #0091ff; }
|
||||
.colour2 { color: #00ccff; }
|
||||
</style>
|
||||
<style>
|
||||
.colour1, .colour2 { fill: currentColor; }
|
||||
</style>
|
||||
<g>
|
||||
<path class="colour1" d="m463.2,216.48c58.5,0 94.47,43.11 97.5,103.57l0,8l0,93.79l96.2,18.22c3.9,0.44 7.37,1.33 11.26,2.22c72.37,20 116.57,94.67 101.39,168.91l-1.73,8l-45.5,174.69c-9.53,36 -37.7,63.56 -73.23,71.56l-6.94,1.33l-104.86,15.56c-40.3,5.78 -79.3,-14.22 -98.8,-49.79l-3.47,-7.11l-1.3,-2.66c-10.4,-22.67 -25.57,-42.22 -44.64,-56.9l-8.24,-6.22l-81.47,-56.01l-4.34,-2.66l0,0l-4.34,-2.22l-102.26,-52.01c-10.83,-5.78 -17.77,-16.89 -17.77,-29.34c-1.3,-49.33 19.93,-87.12 61.1,-108.46c30.76,-15.56 71.06,-14.67 122.63,0.89l11.26,3.56l0,-185.35c0,-64.45 36.4,-111.57 97.5,-111.57l0.02,-0.01zm0,66.67c-19.93,0 -30.76,12 -32.5,38.67l0,6.22l0,232.91c0,24 -23.4,40.01 -45.07,31.11c-63.27,-27.12 -105.73,-33.34 -124.36,-23.56c-11.26,5.78 -18.2,12.89 -22.1,23.11l-1.73,5.33l82.33,42.22l7.8,4.45l0,0l7.8,4.45l81.47,56.01c29.46,20 53.73,47.56 70.63,79.57l5.2,11.11l1.3,2.66c5.2,12 16.9,19.11 29.46,19.11l4.34,0l104.86,-15.56c11.26,-1.77 20.8,-9.34 25.14,-20l1.73,-4.45l45.5,-174.24c10.83,-41.78 -13.43,-84.45 -53.73,-95.56l-3.03,-0.44l0,0l-125.66,-23.56c-14.3,-2.66 -24.7,-14.22 -26.44,-28l-0.43,-4.89l0,-121.79c0,-30.67 -10.83,-44.9 -32.5,-44.9l0,0.02z"/>
|
||||
<path class="colour2" d="m463.81,60.98c137.36,0 249.16,114.24 249.16,255.58c0,31.11 -5.64,61.34 -15.6,88.9l-6.07,-2.22c-6.5,-2.22 -15.16,-5.33 -26.44,-8c-10.4,-2.22 -20.8,-4 -31.63,-4.89c9.53,-22.67 14.73,-47.56 14.73,-73.79c0,-104.46 -82.33,-188.9 -184.17,-188.9c-101.83,0 -184.17,84.45 -184.17,188.9c0,46.23 16.03,88.9 43.34,121.79c-13.86,1.33 -26,3.12 -35.53,5.33c-15.6,4 -25.57,7.55 -32.93,12c-25.14,-40.01 -39.87,-88.01 -39.87,-139.13c0,-141.35 111.37,-255.58 249.16,-255.58l0.01,0.01z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 781 B After Width: | Height: | Size: 1.9 KiB |
@@ -20,4 +20,5 @@
|
||||
<bitmap id="GroupTypeIcon" filename="group_type.svg"/>
|
||||
<bitmap id="TapTypeIcon" filename="tap_type.svg"/>
|
||||
<bitmap id="InfoTypeIcon" filename="info_type.svg"/>
|
||||
<bitmap id="NumericTypeIcon" filename="numeric_type.svg"/>
|
||||
</drawables>
|
||||
|
||||
@@ -1 +1,16 @@
|
||||
<svg height="34" viewBox="0 0 48 48" width="34" xmlns="http://www.w3.org/2000/svg"><path d="M24 34q.7 0 1.175-.475.475-.475.475-1.175 0-.7-.475-1.175Q24.7 30.7 24 30.7q-.7 0-1.175.475-.475.475-.475 1.175 0 .7.475 1.175Q23.3 34 24 34Zm-1.35-7.65h3V13.7h-3ZM24 44q-4.1 0-7.75-1.575-3.65-1.575-6.375-4.3-2.725-2.725-4.3-6.375Q4 28.1 4 23.95q0-4.1 1.575-7.75 1.575-3.65 4.3-6.35 2.725-2.7 6.375-4.275Q19.9 4 24.05 4q4.1 0 7.75 1.575 3.65 1.575 6.35 4.275 2.7 2.7 4.275 6.35Q44 19.85 44 24q0 4.1-1.575 7.75-1.575 3.65-4.275 6.375t-6.35 4.3Q28.15 44 24 44Zm.05-3q7.05 0 12-4.975T41 23.95q0-7.05-4.95-12T24 7q-7.05 0-12.025 4.95Q7 16.9 7 24q0 7.05 4.975 12.025Q16.95 41 24.05 41ZM24 24Z" fill="red" stroke="red"/></svg>
|
||||
<svg height="34" viewBox="0 0 960 960" width="34" xmlns="http://www.w3.org/2000/svg">
|
||||
<style id="colours">
|
||||
.colour1 { color: #aa0000; }
|
||||
.colour2 { color: #ff1111; }
|
||||
</style>
|
||||
<style>
|
||||
.colour1 { stroke: currentColor; }
|
||||
.colour2 { fill: currentColor; }
|
||||
text.large { font: bold 600px sans-serif; }
|
||||
</style>
|
||||
<circle class="colour1" cx="480" cy="480" fill-opacity="0.0" r="400" stroke-width="60"/>
|
||||
<g class="colour2">
|
||||
<rect height="360" rx="40" ry="40" width="120" x="420" y="220"/>
|
||||
<circle cx="480" cy="710" r="60"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 712 B After Width: | Height: | Size: 548 B |
@@ -1,7 +1,15 @@
|
||||
<svg height="34" viewBox="0 0 200 500" width="34" xmlns="http://www.w3.org/2000/svg">
|
||||
<g transform="matrix(1, 0, 0, 1, 0, 0)">
|
||||
<rect fill="blue" height="100" rx="40" ry="40" width="200" x="0" y="0"/>
|
||||
<rect fill="blue" height="100" rx="40" ry="40" width="200" x="0" y="200"/>
|
||||
<rect fill="blue" height="100" rx="40" ry="40" width="200" x="0" y="400"/>
|
||||
</g>
|
||||
</svg>
|
||||
<svg height="34" viewBox="0 0 960 960" width="34" xmlns="http://www.w3.org/2000/svg">
|
||||
<style id="colours">
|
||||
.colour1 { color: #0091ff; }
|
||||
.colour2 { color: #00ccff; }
|
||||
</style>
|
||||
<style>
|
||||
.colour1, .colour2 { fill: currentColor; }
|
||||
</style>
|
||||
<rect class="colour1" height="160" rx="20" ry="20" width="560" x="300" y="160"/>
|
||||
<rect class="colour1" height="160" rx="20" ry="20" width="560" x="300" y="400"/>
|
||||
<rect class="colour1" height="160" rx="20" ry="20" width="560" x="300" y="640"/>
|
||||
<circle class="colour2" cx="120" cy="240" r="80"/>
|
||||
<circle class="colour2" cx="120" cy="480" r="80"/>
|
||||
<circle class="colour2" cx="120" cy="720" r="80"/>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 361 B After Width: | Height: | Size: 653 B |
@@ -1 +1,15 @@
|
||||
<svg height="34" viewBox="0 -960 960 960" width="34" xmlns="http://www.w3.org/2000/svg"><path d="M440-280h80v-240h-80v240Zm40-320q17 0 28.5-11.5T520-640q0-17-11.5-28.5T480-680q-17 0-28.5 11.5T440-640q0 17 11.5 28.5T480-600Zm0 520q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-80q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z" fill="blue" stroke="blue"/></svg>
|
||||
<svg height="34" viewBox="0 0 960 960" width="34" xmlns="http://www.w3.org/2000/svg">
|
||||
<style id="colours">
|
||||
.colour1 { color: #0091ff; }
|
||||
.colour2 { color: #00ccff; }
|
||||
</style>
|
||||
<style>
|
||||
.colour1 { stroke: currentColor; }
|
||||
.colour2 { fill: currentColor; }
|
||||
</style>
|
||||
<circle class="colour1" cx="480" cy="480" fill-opacity="0.0" r="400" stroke-width="60"/>
|
||||
<g class="colour2">
|
||||
<circle cx="480" cy="280" r="60"/>
|
||||
<rect height="360" rx="40" ry="40" width="120" x="420" y="410"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 543 B After Width: | Height: | Size: 500 B |
16
resources-icons-34/numeric_type.svg
Normal file
@@ -0,0 +1,16 @@
|
||||
<svg height="34" viewBox="0 0 960 960" width="34" xmlns="http://www.w3.org/2000/svg">
|
||||
<style id="colours">
|
||||
.colour1 { color: #0091ff; }
|
||||
.colour2 { color: #00ccff; }
|
||||
</style>
|
||||
<style>
|
||||
text.small { font: bold 400px sans-serif; }
|
||||
text.large { font: bold 500px sans-serif; }
|
||||
.colour1, .colour2 { fill: currentColor; }
|
||||
rect.colour2 { stroke: currentColor; }
|
||||
</style>
|
||||
<rect class="colour2" fill-opacity="0.0" height="700" rx="100" ry="100" stroke-width="60" width="900" x="30" y="130"/>
|
||||
<text class="small colour1" x="110" y="610">1</text>
|
||||
<text class="large colour2" x="350" y="640">2</text>
|
||||
<text class="small colour1" x="650" y="610">3</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 675 B |
@@ -1 +1,13 @@
|
||||
<svg height="34" viewBox="0 -960 960 960" width="34" xmlns="http://www.w3.org/2000/svg"><path d="M445-80q-29 0-56-12t-45-35L127-403l21-23q14-15 34.5-18.5T221-438l99 53v-365q0-12.75 8.675-21.375 8.676-8.625 21.5-8.625 12.825 0 21.325 8.625T380-750v465l-144-77 156 198q10 12 23.76 18 13.76 6 29.24 6h205q38 0 64-26t26-64v-170q0-25.5-17.25-42.75T680-460H460v-60h219.646q50.148 0 85.251 35T800-400v170q0 63-43.5 106.5T650-80H445ZM203-665q-11.074-18.754-17.037-40.492Q180-727.229 180-750.246 180-821 229.725-870.5T350-920q70.55 0 120.275 49.738Q520-820.524 520-749.956q0 22.956-5.963 44.614Q508.074-683.685 497-665l-52-30q7-12 11-26t4-29.478Q460-796 427.882-828q-32.117-32-78-32Q304-860 272-827.917 240-795.833 240-750q0 15 4 29t11 26l-52 30Zm285 335Z" fill="blue" stroke="blue"/></svg>
|
||||
<svg height="34" viewBox="0 0 960 960" width="34" xmlns="http://www.w3.org/2000/svg">
|
||||
<style id="colours">
|
||||
.colour1 { color: #0091ff; }
|
||||
.colour2 { color: #00ccff; }
|
||||
</style>
|
||||
<style>
|
||||
.colour1, .colour2 { fill: currentColor; }
|
||||
</style>
|
||||
<g>
|
||||
<path class="colour1" d="m463.2,216.48c58.5,0 94.47,43.11 97.5,103.57l0,8l0,93.79l96.2,18.22c3.9,0.44 7.37,1.33 11.26,2.22c72.37,20 116.57,94.67 101.39,168.91l-1.73,8l-45.5,174.69c-9.53,36 -37.7,63.56 -73.23,71.56l-6.94,1.33l-104.86,15.56c-40.3,5.78 -79.3,-14.22 -98.8,-49.79l-3.47,-7.11l-1.3,-2.66c-10.4,-22.67 -25.57,-42.22 -44.64,-56.9l-8.24,-6.22l-81.47,-56.01l-4.34,-2.66l0,0l-4.34,-2.22l-102.26,-52.01c-10.83,-5.78 -17.77,-16.89 -17.77,-29.34c-1.3,-49.33 19.93,-87.12 61.1,-108.46c30.76,-15.56 71.06,-14.67 122.63,0.89l11.26,3.56l0,-185.35c0,-64.45 36.4,-111.57 97.5,-111.57l0.02,-0.01zm0,66.67c-19.93,0 -30.76,12 -32.5,38.67l0,6.22l0,232.91c0,24 -23.4,40.01 -45.07,31.11c-63.27,-27.12 -105.73,-33.34 -124.36,-23.56c-11.26,5.78 -18.2,12.89 -22.1,23.11l-1.73,5.33l82.33,42.22l7.8,4.45l0,0l7.8,4.45l81.47,56.01c29.46,20 53.73,47.56 70.63,79.57l5.2,11.11l1.3,2.66c5.2,12 16.9,19.11 29.46,19.11l4.34,0l104.86,-15.56c11.26,-1.77 20.8,-9.34 25.14,-20l1.73,-4.45l45.5,-174.24c10.83,-41.78 -13.43,-84.45 -53.73,-95.56l-3.03,-0.44l0,0l-125.66,-23.56c-14.3,-2.66 -24.7,-14.22 -26.44,-28l-0.43,-4.89l0,-121.79c0,-30.67 -10.83,-44.9 -32.5,-44.9l0,0.02z"/>
|
||||
<path class="colour2" d="m463.81,60.98c137.36,0 249.16,114.24 249.16,255.58c0,31.11 -5.64,61.34 -15.6,88.9l-6.07,-2.22c-6.5,-2.22 -15.16,-5.33 -26.44,-8c-10.4,-2.22 -20.8,-4 -31.63,-4.89c9.53,-22.67 14.73,-47.56 14.73,-73.79c0,-104.46 -82.33,-188.9 -184.17,-188.9c-101.83,0 -184.17,84.45 -184.17,188.9c0,46.23 16.03,88.9 43.34,121.79c-13.86,1.33 -26,3.12 -35.53,5.33c-15.6,4 -25.57,7.55 -32.93,12c-25.14,-40.01 -39.87,-88.01 -39.87,-139.13c0,-141.35 111.37,-255.58 249.16,-255.58l0.01,0.01z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 781 B After Width: | Height: | Size: 1.9 KiB |
@@ -20,4 +20,5 @@
|
||||
<bitmap id="GroupTypeIcon" filename="group_type.svg"/>
|
||||
<bitmap id="TapTypeIcon" filename="tap_type.svg"/>
|
||||
<bitmap id="InfoTypeIcon" filename="info_type.svg"/>
|
||||
<bitmap id="NumericTypeIcon" filename="numeric_type.svg"/>
|
||||
</drawables>
|
||||
|
||||
@@ -1 +1,16 @@
|
||||
<svg height="38" viewBox="0 0 48 48" width="38" xmlns="http://www.w3.org/2000/svg"><path d="M24 34q.7 0 1.175-.475.475-.475.475-1.175 0-.7-.475-1.175Q24.7 30.7 24 30.7q-.7 0-1.175.475-.475.475-.475 1.175 0 .7.475 1.175Q23.3 34 24 34Zm-1.35-7.65h3V13.7h-3ZM24 44q-4.1 0-7.75-1.575-3.65-1.575-6.375-4.3-2.725-2.725-4.3-6.375Q4 28.1 4 23.95q0-4.1 1.575-7.75 1.575-3.65 4.3-6.35 2.725-2.7 6.375-4.275Q19.9 4 24.05 4q4.1 0 7.75 1.575 3.65 1.575 6.35 4.275 2.7 2.7 4.275 6.35Q44 19.85 44 24q0 4.1-1.575 7.75-1.575 3.65-4.275 6.375t-6.35 4.3Q28.15 44 24 44Zm.05-3q7.05 0 12-4.975T41 23.95q0-7.05-4.95-12T24 7q-7.05 0-12.025 4.95Q7 16.9 7 24q0 7.05 4.975 12.025Q16.95 41 24.05 41ZM24 24Z" fill="red" stroke="red"/></svg>
|
||||
<svg height="38" viewBox="0 0 960 960" width="38" xmlns="http://www.w3.org/2000/svg">
|
||||
<style id="colours">
|
||||
.colour1 { color: #aa0000; }
|
||||
.colour2 { color: #ff1111; }
|
||||
</style>
|
||||
<style>
|
||||
.colour1 { stroke: currentColor; }
|
||||
.colour2 { fill: currentColor; }
|
||||
text.large { font: bold 600px sans-serif; }
|
||||
</style>
|
||||
<circle class="colour1" cx="480" cy="480" fill-opacity="0.0" r="400" stroke-width="60"/>
|
||||
<g class="colour2">
|
||||
<rect height="360" rx="40" ry="40" width="120" x="420" y="220"/>
|
||||
<circle cx="480" cy="710" r="60"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 712 B After Width: | Height: | Size: 548 B |
@@ -1,7 +1,15 @@
|
||||
<svg height="38" viewBox="0 0 200 500" width="38" xmlns="http://www.w3.org/2000/svg">
|
||||
<g transform="matrix(1, 0, 0, 1, 0, 0)">
|
||||
<rect fill="blue" height="100" rx="40" ry="40" width="200" x="0" y="0"/>
|
||||
<rect fill="blue" height="100" rx="40" ry="40" width="200" x="0" y="200"/>
|
||||
<rect fill="blue" height="100" rx="40" ry="40" width="200" x="0" y="400"/>
|
||||
</g>
|
||||
</svg>
|
||||
<svg height="38" viewBox="0 0 960 960" width="38" xmlns="http://www.w3.org/2000/svg">
|
||||
<style id="colours">
|
||||
.colour1 { color: #0091ff; }
|
||||
.colour2 { color: #00ccff; }
|
||||
</style>
|
||||
<style>
|
||||
.colour1, .colour2 { fill: currentColor; }
|
||||
</style>
|
||||
<rect class="colour1" height="160" rx="20" ry="20" width="560" x="300" y="160"/>
|
||||
<rect class="colour1" height="160" rx="20" ry="20" width="560" x="300" y="400"/>
|
||||
<rect class="colour1" height="160" rx="20" ry="20" width="560" x="300" y="640"/>
|
||||
<circle class="colour2" cx="120" cy="240" r="80"/>
|
||||
<circle class="colour2" cx="120" cy="480" r="80"/>
|
||||
<circle class="colour2" cx="120" cy="720" r="80"/>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 361 B After Width: | Height: | Size: 653 B |
@@ -1 +1,15 @@
|
||||
<svg height="38" viewBox="0 -960 960 960" width="38" xmlns="http://www.w3.org/2000/svg"><path d="M440-280h80v-240h-80v240Zm40-320q17 0 28.5-11.5T520-640q0-17-11.5-28.5T480-680q-17 0-28.5 11.5T440-640q0 17 11.5 28.5T480-600Zm0 520q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-80q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z" fill="blue" stroke="blue"/></svg>
|
||||
<svg height="38" viewBox="0 0 960 960" width="38" xmlns="http://www.w3.org/2000/svg">
|
||||
<style id="colours">
|
||||
.colour1 { color: #0091ff; }
|
||||
.colour2 { color: #00ccff; }
|
||||
</style>
|
||||
<style>
|
||||
.colour1 { stroke: currentColor; }
|
||||
.colour2 { fill: currentColor; }
|
||||
</style>
|
||||
<circle class="colour1" cx="480" cy="480" fill-opacity="0.0" r="400" stroke-width="60"/>
|
||||
<g class="colour2">
|
||||
<circle cx="480" cy="280" r="60"/>
|
||||
<rect height="360" rx="40" ry="40" width="120" x="420" y="410"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 543 B After Width: | Height: | Size: 500 B |
16
resources-icons-38/numeric_type.svg
Normal file
@@ -0,0 +1,16 @@
|
||||
<svg height="38" viewBox="0 0 960 960" width="38" xmlns="http://www.w3.org/2000/svg">
|
||||
<style id="colours">
|
||||
.colour1 { color: #0091ff; }
|
||||
.colour2 { color: #00ccff; }
|
||||
</style>
|
||||
<style>
|
||||
text.small { font: bold 400px sans-serif; }
|
||||
text.large { font: bold 500px sans-serif; }
|
||||
.colour1, .colour2 { fill: currentColor; }
|
||||
rect.colour2 { stroke: currentColor; }
|
||||
</style>
|
||||
<rect class="colour2" fill-opacity="0.0" height="700" rx="100" ry="100" stroke-width="60" width="900" x="30" y="130"/>
|
||||
<text class="small colour1" x="110" y="610">1</text>
|
||||
<text class="large colour2" x="350" y="640">2</text>
|
||||
<text class="small colour1" x="650" y="610">3</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 675 B |
@@ -1 +1,13 @@
|
||||
<svg height="38" viewBox="0 -960 960 960" width="38" xmlns="http://www.w3.org/2000/svg"><path d="M445-80q-29 0-56-12t-45-35L127-403l21-23q14-15 34.5-18.5T221-438l99 53v-365q0-12.75 8.675-21.375 8.676-8.625 21.5-8.625 12.825 0 21.325 8.625T380-750v465l-144-77 156 198q10 12 23.76 18 13.76 6 29.24 6h205q38 0 64-26t26-64v-170q0-25.5-17.25-42.75T680-460H460v-60h219.646q50.148 0 85.251 35T800-400v170q0 63-43.5 106.5T650-80H445ZM203-665q-11.074-18.754-17.037-40.492Q180-727.229 180-750.246 180-821 229.725-870.5T350-920q70.55 0 120.275 49.738Q520-820.524 520-749.956q0 22.956-5.963 44.614Q508.074-683.685 497-665l-52-30q7-12 11-26t4-29.478Q460-796 427.882-828q-32.117-32-78-32Q304-860 272-827.917 240-795.833 240-750q0 15 4 29t11 26l-52 30Zm285 335Z" fill="blue" stroke="blue"/></svg>
|
||||
<svg height="38" viewBox="0 0 960 960" width="38" xmlns="http://www.w3.org/2000/svg">
|
||||
<style id="colours">
|
||||
.colour1 { color: #0091ff; }
|
||||
.colour2 { color: #00ccff; }
|
||||
</style>
|
||||
<style>
|
||||
.colour1, .colour2 { fill: currentColor; }
|
||||
</style>
|
||||
<g>
|
||||
<path class="colour1" d="m463.2,216.48c58.5,0 94.47,43.11 97.5,103.57l0,8l0,93.79l96.2,18.22c3.9,0.44 7.37,1.33 11.26,2.22c72.37,20 116.57,94.67 101.39,168.91l-1.73,8l-45.5,174.69c-9.53,36 -37.7,63.56 -73.23,71.56l-6.94,1.33l-104.86,15.56c-40.3,5.78 -79.3,-14.22 -98.8,-49.79l-3.47,-7.11l-1.3,-2.66c-10.4,-22.67 -25.57,-42.22 -44.64,-56.9l-8.24,-6.22l-81.47,-56.01l-4.34,-2.66l0,0l-4.34,-2.22l-102.26,-52.01c-10.83,-5.78 -17.77,-16.89 -17.77,-29.34c-1.3,-49.33 19.93,-87.12 61.1,-108.46c30.76,-15.56 71.06,-14.67 122.63,0.89l11.26,3.56l0,-185.35c0,-64.45 36.4,-111.57 97.5,-111.57l0.02,-0.01zm0,66.67c-19.93,0 -30.76,12 -32.5,38.67l0,6.22l0,232.91c0,24 -23.4,40.01 -45.07,31.11c-63.27,-27.12 -105.73,-33.34 -124.36,-23.56c-11.26,5.78 -18.2,12.89 -22.1,23.11l-1.73,5.33l82.33,42.22l7.8,4.45l0,0l7.8,4.45l81.47,56.01c29.46,20 53.73,47.56 70.63,79.57l5.2,11.11l1.3,2.66c5.2,12 16.9,19.11 29.46,19.11l4.34,0l104.86,-15.56c11.26,-1.77 20.8,-9.34 25.14,-20l1.73,-4.45l45.5,-174.24c10.83,-41.78 -13.43,-84.45 -53.73,-95.56l-3.03,-0.44l0,0l-125.66,-23.56c-14.3,-2.66 -24.7,-14.22 -26.44,-28l-0.43,-4.89l0,-121.79c0,-30.67 -10.83,-44.9 -32.5,-44.9l0,0.02z"/>
|
||||
<path class="colour2" d="m463.81,60.98c137.36,0 249.16,114.24 249.16,255.58c0,31.11 -5.64,61.34 -15.6,88.9l-6.07,-2.22c-6.5,-2.22 -15.16,-5.33 -26.44,-8c-10.4,-2.22 -20.8,-4 -31.63,-4.89c9.53,-22.67 14.73,-47.56 14.73,-73.79c0,-104.46 -82.33,-188.9 -184.17,-188.9c-101.83,0 -184.17,84.45 -184.17,188.9c0,46.23 16.03,88.9 43.34,121.79c-13.86,1.33 -26,3.12 -35.53,5.33c-15.6,4 -25.57,7.55 -32.93,12c-25.14,-40.01 -39.87,-88.01 -39.87,-139.13c0,-141.35 111.37,-255.58 249.16,-255.58l0.01,0.01z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 781 B After Width: | Height: | Size: 1.9 KiB |
@@ -20,4 +20,5 @@
|
||||
<bitmap id="GroupTypeIcon" filename="group_type.svg"/>
|
||||
<bitmap id="TapTypeIcon" filename="tap_type.svg"/>
|
||||
<bitmap id="InfoTypeIcon" filename="info_type.svg"/>
|
||||
<bitmap id="NumericTypeIcon" filename="numeric_type.svg"/>
|
||||
</drawables>
|
||||
|
||||
@@ -1 +1,16 @@
|
||||
<svg height="42" viewBox="0 0 48 48" width="42" xmlns="http://www.w3.org/2000/svg"><path d="M24 34q.7 0 1.175-.475.475-.475.475-1.175 0-.7-.475-1.175Q24.7 30.7 24 30.7q-.7 0-1.175.475-.475.475-.475 1.175 0 .7.475 1.175Q23.3 34 24 34Zm-1.35-7.65h3V13.7h-3ZM24 44q-4.1 0-7.75-1.575-3.65-1.575-6.375-4.3-2.725-2.725-4.3-6.375Q4 28.1 4 23.95q0-4.1 1.575-7.75 1.575-3.65 4.3-6.35 2.725-2.7 6.375-4.275Q19.9 4 24.05 4q4.1 0 7.75 1.575 3.65 1.575 6.35 4.275 2.7 2.7 4.275 6.35Q44 19.85 44 24q0 4.1-1.575 7.75-1.575 3.65-4.275 6.375t-6.35 4.3Q28.15 44 24 44Zm.05-3q7.05 0 12-4.975T41 23.95q0-7.05-4.95-12T24 7q-7.05 0-12.025 4.95Q7 16.9 7 24q0 7.05 4.975 12.025Q16.95 41 24.05 41ZM24 24Z" fill="red" stroke="red"/></svg>
|
||||
<svg height="42" viewBox="0 0 960 960" width="42" xmlns="http://www.w3.org/2000/svg">
|
||||
<style id="colours">
|
||||
.colour1 { color: #aa0000; }
|
||||
.colour2 { color: #ff1111; }
|
||||
</style>
|
||||
<style>
|
||||
.colour1 { stroke: currentColor; }
|
||||
.colour2 { fill: currentColor; }
|
||||
text.large { font: bold 600px sans-serif; }
|
||||
</style>
|
||||
<circle class="colour1" cx="480" cy="480" fill-opacity="0.0" r="400" stroke-width="60"/>
|
||||
<g class="colour2">
|
||||
<rect height="360" rx="40" ry="40" width="120" x="420" y="220"/>
|
||||
<circle cx="480" cy="710" r="60"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 712 B After Width: | Height: | Size: 548 B |
@@ -1,7 +1,15 @@
|
||||
<svg height="42" viewBox="0 0 200 500" width="42" xmlns="http://www.w3.org/2000/svg">
|
||||
<g transform="matrix(1, 0, 0, 1, 0, 0)">
|
||||
<rect fill="blue" height="100" rx="40" ry="40" width="200" x="0" y="0"/>
|
||||
<rect fill="blue" height="100" rx="40" ry="40" width="200" x="0" y="200"/>
|
||||
<rect fill="blue" height="100" rx="40" ry="40" width="200" x="0" y="400"/>
|
||||
</g>
|
||||
</svg>
|
||||
<svg height="42" viewBox="0 0 960 960" width="42" xmlns="http://www.w3.org/2000/svg">
|
||||
<style id="colours">
|
||||
.colour1 { color: #0091ff; }
|
||||
.colour2 { color: #00ccff; }
|
||||
</style>
|
||||
<style>
|
||||
.colour1, .colour2 { fill: currentColor; }
|
||||
</style>
|
||||
<rect class="colour1" height="160" rx="20" ry="20" width="560" x="300" y="160"/>
|
||||
<rect class="colour1" height="160" rx="20" ry="20" width="560" x="300" y="400"/>
|
||||
<rect class="colour1" height="160" rx="20" ry="20" width="560" x="300" y="640"/>
|
||||
<circle class="colour2" cx="120" cy="240" r="80"/>
|
||||
<circle class="colour2" cx="120" cy="480" r="80"/>
|
||||
<circle class="colour2" cx="120" cy="720" r="80"/>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 361 B After Width: | Height: | Size: 653 B |
@@ -1 +1,15 @@
|
||||
<svg height="42" viewBox="0 -960 960 960" width="42" xmlns="http://www.w3.org/2000/svg"><path d="M440-280h80v-240h-80v240Zm40-320q17 0 28.5-11.5T520-640q0-17-11.5-28.5T480-680q-17 0-28.5 11.5T440-640q0 17 11.5 28.5T480-600Zm0 520q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-80q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z" fill="blue" stroke="blue"/></svg>
|
||||
<svg height="42" viewBox="0 0 960 960" width="42" xmlns="http://www.w3.org/2000/svg">
|
||||
<style id="colours">
|
||||
.colour1 { color: #0091ff; }
|
||||
.colour2 { color: #00ccff; }
|
||||
</style>
|
||||
<style>
|
||||
.colour1 { stroke: currentColor; }
|
||||
.colour2 { fill: currentColor; }
|
||||
</style>
|
||||
<circle class="colour1" cx="480" cy="480" fill-opacity="0.0" r="400" stroke-width="60"/>
|
||||
<g class="colour2">
|
||||
<circle cx="480" cy="280" r="60"/>
|
||||
<rect height="360" rx="40" ry="40" width="120" x="420" y="410"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 543 B After Width: | Height: | Size: 500 B |
16
resources-icons-42/numeric_type.svg
Normal file
@@ -0,0 +1,16 @@
|
||||
<svg height="42" viewBox="0 0 960 960" width="42" xmlns="http://www.w3.org/2000/svg">
|
||||
<style id="colours">
|
||||
.colour1 { color: #0091ff; }
|
||||
.colour2 { color: #00ccff; }
|
||||
</style>
|
||||
<style>
|
||||
text.small { font: bold 400px sans-serif; }
|
||||
text.large { font: bold 500px sans-serif; }
|
||||
.colour1, .colour2 { fill: currentColor; }
|
||||
rect.colour2 { stroke: currentColor; }
|
||||
</style>
|
||||
<rect class="colour2" fill-opacity="0.0" height="700" rx="100" ry="100" stroke-width="60" width="900" x="30" y="130"/>
|
||||
<text class="small colour1" x="110" y="610">1</text>
|
||||
<text class="large colour2" x="350" y="640">2</text>
|
||||
<text class="small colour1" x="650" y="610">3</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 675 B |
@@ -1 +1,13 @@
|
||||
<svg height="42" viewBox="0 -960 960 960" width="42" xmlns="http://www.w3.org/2000/svg"><path d="M445-80q-29 0-56-12t-45-35L127-403l21-23q14-15 34.5-18.5T221-438l99 53v-365q0-12.75 8.675-21.375 8.676-8.625 21.5-8.625 12.825 0 21.325 8.625T380-750v465l-144-77 156 198q10 12 23.76 18 13.76 6 29.24 6h205q38 0 64-26t26-64v-170q0-25.5-17.25-42.75T680-460H460v-60h219.646q50.148 0 85.251 35T800-400v170q0 63-43.5 106.5T650-80H445ZM203-665q-11.074-18.754-17.037-40.492Q180-727.229 180-750.246 180-821 229.725-870.5T350-920q70.55 0 120.275 49.738Q520-820.524 520-749.956q0 22.956-5.963 44.614Q508.074-683.685 497-665l-52-30q7-12 11-26t4-29.478Q460-796 427.882-828q-32.117-32-78-32Q304-860 272-827.917 240-795.833 240-750q0 15 4 29t11 26l-52 30Zm285 335Z" fill="blue" stroke="blue"/></svg>
|
||||
<svg height="42" viewBox="0 0 960 960" width="42" xmlns="http://www.w3.org/2000/svg">
|
||||
<style id="colours">
|
||||
.colour1 { color: #0091ff; }
|
||||
.colour2 { color: #00ccff; }
|
||||
</style>
|
||||
<style>
|
||||
.colour1, .colour2 { fill: currentColor; }
|
||||
</style>
|
||||
<g>
|
||||
<path class="colour1" d="m463.2,216.48c58.5,0 94.47,43.11 97.5,103.57l0,8l0,93.79l96.2,18.22c3.9,0.44 7.37,1.33 11.26,2.22c72.37,20 116.57,94.67 101.39,168.91l-1.73,8l-45.5,174.69c-9.53,36 -37.7,63.56 -73.23,71.56l-6.94,1.33l-104.86,15.56c-40.3,5.78 -79.3,-14.22 -98.8,-49.79l-3.47,-7.11l-1.3,-2.66c-10.4,-22.67 -25.57,-42.22 -44.64,-56.9l-8.24,-6.22l-81.47,-56.01l-4.34,-2.66l0,0l-4.34,-2.22l-102.26,-52.01c-10.83,-5.78 -17.77,-16.89 -17.77,-29.34c-1.3,-49.33 19.93,-87.12 61.1,-108.46c30.76,-15.56 71.06,-14.67 122.63,0.89l11.26,3.56l0,-185.35c0,-64.45 36.4,-111.57 97.5,-111.57l0.02,-0.01zm0,66.67c-19.93,0 -30.76,12 -32.5,38.67l0,6.22l0,232.91c0,24 -23.4,40.01 -45.07,31.11c-63.27,-27.12 -105.73,-33.34 -124.36,-23.56c-11.26,5.78 -18.2,12.89 -22.1,23.11l-1.73,5.33l82.33,42.22l7.8,4.45l0,0l7.8,4.45l81.47,56.01c29.46,20 53.73,47.56 70.63,79.57l5.2,11.11l1.3,2.66c5.2,12 16.9,19.11 29.46,19.11l4.34,0l104.86,-15.56c11.26,-1.77 20.8,-9.34 25.14,-20l1.73,-4.45l45.5,-174.24c10.83,-41.78 -13.43,-84.45 -53.73,-95.56l-3.03,-0.44l0,0l-125.66,-23.56c-14.3,-2.66 -24.7,-14.22 -26.44,-28l-0.43,-4.89l0,-121.79c0,-30.67 -10.83,-44.9 -32.5,-44.9l0,0.02z"/>
|
||||
<path class="colour2" d="m463.81,60.98c137.36,0 249.16,114.24 249.16,255.58c0,31.11 -5.64,61.34 -15.6,88.9l-6.07,-2.22c-6.5,-2.22 -15.16,-5.33 -26.44,-8c-10.4,-2.22 -20.8,-4 -31.63,-4.89c9.53,-22.67 14.73,-47.56 14.73,-73.79c0,-104.46 -82.33,-188.9 -184.17,-188.9c-101.83,0 -184.17,84.45 -184.17,188.9c0,46.23 16.03,88.9 43.34,121.79c-13.86,1.33 -26,3.12 -35.53,5.33c-15.6,4 -25.57,7.55 -32.93,12c-25.14,-40.01 -39.87,-88.01 -39.87,-139.13c0,-141.35 111.37,-255.58 249.16,-255.58l0.01,0.01z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 781 B After Width: | Height: | Size: 1.9 KiB |
@@ -20,4 +20,5 @@
|
||||
<bitmap id="GroupTypeIcon" filename="group_type.svg"/>
|
||||
<bitmap id="TapTypeIcon" filename="tap_type.svg"/>
|
||||
<bitmap id="InfoTypeIcon" filename="info_type.svg"/>
|
||||
<bitmap id="NumericTypeIcon" filename="numeric_type.svg"/>
|
||||
</drawables>
|
||||
|
||||
@@ -1 +1,16 @@
|
||||
<svg height="46" viewBox="0 0 48 48" width="46" xmlns="http://www.w3.org/2000/svg"><path d="M24 34q.7 0 1.175-.475.475-.475.475-1.175 0-.7-.475-1.175Q24.7 30.7 24 30.7q-.7 0-1.175.475-.475.475-.475 1.175 0 .7.475 1.175Q23.3 34 24 34Zm-1.35-7.65h3V13.7h-3ZM24 44q-4.1 0-7.75-1.575-3.65-1.575-6.375-4.3-2.725-2.725-4.3-6.375Q4 28.1 4 23.95q0-4.1 1.575-7.75 1.575-3.65 4.3-6.35 2.725-2.7 6.375-4.275Q19.9 4 24.05 4q4.1 0 7.75 1.575 3.65 1.575 6.35 4.275 2.7 2.7 4.275 6.35Q44 19.85 44 24q0 4.1-1.575 7.75-1.575 3.65-4.275 6.375t-6.35 4.3Q28.15 44 24 44Zm.05-3q7.05 0 12-4.975T41 23.95q0-7.05-4.95-12T24 7q-7.05 0-12.025 4.95Q7 16.9 7 24q0 7.05 4.975 12.025Q16.95 41 24.05 41ZM24 24Z" fill="red" stroke="red"/></svg>
|
||||
<svg height="46" viewBox="0 0 960 960" width="46" xmlns="http://www.w3.org/2000/svg">
|
||||
<style id="colours">
|
||||
.colour1 { color: #aa0000; }
|
||||
.colour2 { color: #ff1111; }
|
||||
</style>
|
||||
<style>
|
||||
.colour1 { stroke: currentColor; }
|
||||
.colour2 { fill: currentColor; }
|
||||
text.large { font: bold 600px sans-serif; }
|
||||
</style>
|
||||
<circle class="colour1" cx="480" cy="480" fill-opacity="0.0" r="400" stroke-width="60"/>
|
||||
<g class="colour2">
|
||||
<rect height="360" rx="40" ry="40" width="120" x="420" y="220"/>
|
||||
<circle cx="480" cy="710" r="60"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 712 B After Width: | Height: | Size: 548 B |
@@ -1,7 +1,15 @@
|
||||
<svg height="46" viewBox="0 0 200 500" width="46" xmlns="http://www.w3.org/2000/svg">
|
||||
<g transform="matrix(1, 0, 0, 1, 0, 0)">
|
||||
<rect fill="blue" height="100" rx="40" ry="40" width="200" x="0" y="0"/>
|
||||
<rect fill="blue" height="100" rx="40" ry="40" width="200" x="0" y="200"/>
|
||||
<rect fill="blue" height="100" rx="40" ry="40" width="200" x="0" y="400"/>
|
||||
</g>
|
||||
</svg>
|
||||
<svg height="46" viewBox="0 0 960 960" width="46" xmlns="http://www.w3.org/2000/svg">
|
||||
<style id="colours">
|
||||
.colour1 { color: #0091ff; }
|
||||
.colour2 { color: #00ccff; }
|
||||
</style>
|
||||
<style>
|
||||
.colour1, .colour2 { fill: currentColor; }
|
||||
</style>
|
||||
<rect class="colour1" height="160" rx="20" ry="20" width="560" x="300" y="160"/>
|
||||
<rect class="colour1" height="160" rx="20" ry="20" width="560" x="300" y="400"/>
|
||||
<rect class="colour1" height="160" rx="20" ry="20" width="560" x="300" y="640"/>
|
||||
<circle class="colour2" cx="120" cy="240" r="80"/>
|
||||
<circle class="colour2" cx="120" cy="480" r="80"/>
|
||||
<circle class="colour2" cx="120" cy="720" r="80"/>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 361 B After Width: | Height: | Size: 653 B |
@@ -1 +1,15 @@
|
||||
<svg height="46" viewBox="0 -960 960 960" width="46" xmlns="http://www.w3.org/2000/svg"><path d="M440-280h80v-240h-80v240Zm40-320q17 0 28.5-11.5T520-640q0-17-11.5-28.5T480-680q-17 0-28.5 11.5T440-640q0 17 11.5 28.5T480-600Zm0 520q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-80q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z" fill="blue" stroke="blue"/></svg>
|
||||
<svg height="46" viewBox="0 0 960 960" width="46" xmlns="http://www.w3.org/2000/svg">
|
||||
<style id="colours">
|
||||
.colour1 { color: #0091ff; }
|
||||
.colour2 { color: #00ccff; }
|
||||
</style>
|
||||
<style>
|
||||
.colour1 { stroke: currentColor; }
|
||||
.colour2 { fill: currentColor; }
|
||||
</style>
|
||||
<circle class="colour1" cx="480" cy="480" fill-opacity="0.0" r="400" stroke-width="60"/>
|
||||
<g class="colour2">
|
||||
<circle cx="480" cy="280" r="60"/>
|
||||
<rect height="360" rx="40" ry="40" width="120" x="420" y="410"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 543 B After Width: | Height: | Size: 500 B |
16
resources-icons-46/numeric_type.svg
Normal file
@@ -0,0 +1,16 @@
|
||||
<svg height="46" viewBox="0 0 960 960" width="46" xmlns="http://www.w3.org/2000/svg">
|
||||
<style id="colours">
|
||||
.colour1 { color: #0091ff; }
|
||||
.colour2 { color: #00ccff; }
|
||||
</style>
|
||||
<style>
|
||||
text.small { font: bold 400px sans-serif; }
|
||||
text.large { font: bold 500px sans-serif; }
|
||||
.colour1, .colour2 { fill: currentColor; }
|
||||
rect.colour2 { stroke: currentColor; }
|
||||
</style>
|
||||
<rect class="colour2" fill-opacity="0.0" height="700" rx="100" ry="100" stroke-width="60" width="900" x="30" y="130"/>
|
||||
<text class="small colour1" x="110" y="610">1</text>
|
||||
<text class="large colour2" x="350" y="640">2</text>
|
||||
<text class="small colour1" x="650" y="610">3</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 675 B |