From afc53483d19d4d7fff03e7966e2be6afb669e9df Mon Sep 17 00:00:00 2001 From: Jaap Marsman Date: Sat, 7 Oct 2023 08:17:00 +0800 Subject: [PATCH] moved development over to github --- .gitignore | 2 + COPYRIGHTS.md | 39 +++++ FEATURES.md | 22 +++ LICENSE.md | 1 + PRIVACY.md | 7 + README.md | 42 +++++- data/main_icon_smaller.png | Bin 0 -> 76314 bytes data/wellbeing_cards.csv | 3 + design_files/colour_scheme.png | 3 + design_files/journal_idea.md | 3 + design_files/main_icon.afdesign | 3 + godot/Assets/fonts/NotoSansDisplay-Black.ttf | 3 + .../fonts/NotoSansDisplay-BlackItalic.ttf | 3 + godot/Assets/fonts/NotoSansDisplay-Bold.ttf | 3 + .../fonts/NotoSansDisplay-BoldItalic.ttf | 3 + .../fonts/NotoSansDisplay-ExtraBold.ttf | 3 + .../fonts/NotoSansDisplay-ExtraBoldItalic.ttf | 3 + .../fonts/NotoSansDisplay-ExtraLight.ttf | 3 + .../NotoSansDisplay-ExtraLightItalic.ttf | 3 + godot/Assets/fonts/NotoSansDisplay-Italic.ttf | 3 + godot/Assets/fonts/NotoSansDisplay-Light.ttf | 3 + .../fonts/NotoSansDisplay-LightItalic.ttf | 3 + godot/Assets/fonts/NotoSansDisplay-Medium.ttf | 3 + .../fonts/NotoSansDisplay-MediumItalic.ttf | 3 + .../Assets/fonts/NotoSansDisplay-Regular.ttf | 3 + .../Assets/fonts/NotoSansDisplay-SemiBold.ttf | 3 + .../fonts/NotoSansDisplay-SemiBoldItalic.ttf | 3 + godot/Assets/fonts/NotoSansDisplay-Thin.ttf | 3 + .../fonts/NotoSansDisplay-ThinItalic.ttf | 3 + godot/Assets/fonts/noto_sans_display.ttf | 3 + godot/Assets/fonts/noto_sans_display_bold.ttf | 3 + .../Assets/fonts/noto_sans_display_italic.ttf | 3 + godot/Assets/icons/mac_icon.icns | 3 + godot/Assets/icons/main_icon.png | 3 + .../Assets/icons/main_icon_big_sur_small.png | 3 + godot/Assets/icons/main_icon_smaller.png | 3 + godot/apps/daily_prompts.tscn | 3 + godot/apps/pomodoro.tscn | 5 + godot/birthday_selector.gd | 31 ++++ godot/button_email_feedback.gd | 9 ++ godot/button_name.gd | 8 + godot/button_open_github.gd | 5 + godot/button_user_save.gd | 39 +++++ godot/data/wellbeings_cards.json | 3 + godot/default_env.tres | 7 + godot/main_screen.gd | 33 ++++ godot/node_variables.gd | 16 ++ godot/program_values.gd | 18 +++ godot/project.godot | 46 ++++++ godot/start_menu.gd | 33 ++++ godot/start_menu.tscn | 95 ++++++++++++ godot/start_screen.tscn | 141 ++++++++++++++++++ godot/ui_control.gd | 30 ++++ godot/user_details.tscn | 89 +++++++++++ godot/user_values.gd | 62 ++++++++ godot/wb_theme.tres | 102 +++++++++++++ version_info.csv | 1 + 57 files changed, 975 insertions(+), 1 deletion(-) create mode 100644 COPYRIGHTS.md create mode 100644 FEATURES.md create mode 100644 LICENSE.md create mode 100644 PRIVACY.md create mode 100644 data/main_icon_smaller.png create mode 100644 data/wellbeing_cards.csv create mode 100644 design_files/colour_scheme.png create mode 100644 design_files/journal_idea.md create mode 100644 design_files/main_icon.afdesign create mode 100644 godot/Assets/fonts/NotoSansDisplay-Black.ttf create mode 100644 godot/Assets/fonts/NotoSansDisplay-BlackItalic.ttf create mode 100644 godot/Assets/fonts/NotoSansDisplay-Bold.ttf create mode 100644 godot/Assets/fonts/NotoSansDisplay-BoldItalic.ttf create mode 100644 godot/Assets/fonts/NotoSansDisplay-ExtraBold.ttf create mode 100644 godot/Assets/fonts/NotoSansDisplay-ExtraBoldItalic.ttf create mode 100644 godot/Assets/fonts/NotoSansDisplay-ExtraLight.ttf create mode 100644 godot/Assets/fonts/NotoSansDisplay-ExtraLightItalic.ttf create mode 100644 godot/Assets/fonts/NotoSansDisplay-Italic.ttf create mode 100644 godot/Assets/fonts/NotoSansDisplay-Light.ttf create mode 100644 godot/Assets/fonts/NotoSansDisplay-LightItalic.ttf create mode 100644 godot/Assets/fonts/NotoSansDisplay-Medium.ttf create mode 100644 godot/Assets/fonts/NotoSansDisplay-MediumItalic.ttf create mode 100644 godot/Assets/fonts/NotoSansDisplay-Regular.ttf create mode 100644 godot/Assets/fonts/NotoSansDisplay-SemiBold.ttf create mode 100644 godot/Assets/fonts/NotoSansDisplay-SemiBoldItalic.ttf create mode 100644 godot/Assets/fonts/NotoSansDisplay-Thin.ttf create mode 100644 godot/Assets/fonts/NotoSansDisplay-ThinItalic.ttf create mode 100644 godot/Assets/fonts/noto_sans_display.ttf create mode 100644 godot/Assets/fonts/noto_sans_display_bold.ttf create mode 100644 godot/Assets/fonts/noto_sans_display_italic.ttf create mode 100644 godot/Assets/icons/mac_icon.icns create mode 100644 godot/Assets/icons/main_icon.png create mode 100644 godot/Assets/icons/main_icon_big_sur_small.png create mode 100644 godot/Assets/icons/main_icon_smaller.png create mode 100644 godot/apps/daily_prompts.tscn create mode 100644 godot/apps/pomodoro.tscn create mode 100644 godot/birthday_selector.gd create mode 100644 godot/button_email_feedback.gd create mode 100644 godot/button_name.gd create mode 100644 godot/button_open_github.gd create mode 100644 godot/button_user_save.gd create mode 100644 godot/data/wellbeings_cards.json create mode 100644 godot/default_env.tres create mode 100644 godot/main_screen.gd create mode 100644 godot/node_variables.gd create mode 100644 godot/program_values.gd create mode 100644 godot/project.godot create mode 100644 godot/start_menu.gd create mode 100644 godot/start_menu.tscn create mode 100644 godot/start_screen.tscn create mode 100644 godot/ui_control.gd create mode 100644 godot/user_details.tscn create mode 100644 godot/user_values.gd create mode 100644 godot/wb_theme.tres create mode 100644 version_info.csv diff --git a/.gitignore b/.gitignore index 57eebd1..eb4b3ca 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,8 @@ export.cfg export_presets.cfg *.import .godot/ +godot/.import/ +godot/.godot/ # Imported translations (automatically generated from CSV files) *.translation diff --git a/COPYRIGHTS.md b/COPYRIGHTS.md new file mode 100644 index 0000000..4344f47 --- /dev/null +++ b/COPYRIGHTS.md @@ -0,0 +1,39 @@ +# Copyrights + +This document attributes the different components used to build the Wellbeing App. + +## The engine: Godot + +This app uses Godot Engine, available under the following license: + +Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. Copyright (c) 2014-2022 Godot Engine contributors. + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +## Fonts (as part of Godot) + +Portions of this software are copyright © 2022 The FreeType Project (www.freetype.org). All rights reserved. The app uses the Noto font family, for which the full license is available here. + +## Internet module Mbed TLS (as part of Godot) + +Copyright The Mbed TLS Contributors + +Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +## Multiplayer module ENET (as part of Godot) + +Copyright (c) 2002-2020 Lee Salzman + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/FEATURES.md b/FEATURES.md new file mode 100644 index 0000000..cdab4d4 --- /dev/null +++ b/FEATURES.md @@ -0,0 +1,22 @@ +# A list of features currently implemented + +- Saving & loading of persistent variables to user.ini on the default folder. This should work across all devices. (Currently tested across MacOS and Linux) +- Ability to add your own name. +- Coded several controllers in separate scripts that access different variables and portions of the app, to allow for flexible future development. + +# A list of features "in progress" + +- Working with the system time to present time-related information. +- Bug-testing and a robust "welcome new user" approach to the saving of persistent data. +- A "reset" button to remove the user.ini file from within the app. + +# A list of future features to come before next release + +- Wellbeing Cards (one-a-day) depending on user-selected categories. +- A serviceable GUI. +- A name (and logo, icon, etc). + +# Bucket list of features for future releases + +- White Noise sound section +- Journal section \ No newline at end of file diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..ca3e242 --- /dev/null +++ b/LICENSE.md @@ -0,0 +1 @@ +Creative Commons Licence
This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License. \ No newline at end of file diff --git a/PRIVACY.md b/PRIVACY.md new file mode 100644 index 0000000..a93fe3c --- /dev/null +++ b/PRIVACY.md @@ -0,0 +1,7 @@ +# Privacy Statement + +- As can be seen by inspecting the source code, the app contains no tracking features or advertisement systems of ANY kind. I am not interested in your data. +- Any data entered into the app (your name, birthdate, etc) is stored locally on your device. +- The only internet connectivity that the app employs is to check for app updates online (by checking the file version_stuff.csv here on GitHub). If you're not online, the check fails, simple as that. The code for this function will only trigger if you press the "Check for Updates" button. It can be inspected in start_menu.gd + +Too often "free" apps make you their product. Or are free with a hefty subscription lurking around the corner. I get it, for some people, such apps are their livelihood. For me, it's something I wish to develop and hope other people find useful. There is no monetary gain here. Of course I'm curious to see who uses the app. That's why I offer the option to subscribe to a newsletter, which is different. It's opt-in privacy-by-design stuff. You don't want to sign up? Don't press the button. It's really that simple. :) \ No newline at end of file diff --git a/README.md b/README.md index a8e5200..1ddae26 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,43 @@ +

+ +

+ # Wellbeing App (currently unnamed) -I have moved all code and future development to my self-hosted Gitea: [click here to view this repo there](https://gitea.defiantjc.synology.me/jaap/wellbeingapp). \ No newline at end of file +A freeware and open source wellbeing app. + +## Guiding Principles + +This app is being developed, researched and released using the following guiding principles: + +1. **Research-informed**: Wherever possible, any intervention or activity suggested by the app will be supported by academic research. An up-to-date list of academic references (APA style) will be kept within the app with a very brief description on what segment of the app it informed. A more detailed breakdown may appear on my private website, or here, at some point. +2. **Agile practises**: I will try to adopt agile coding practises as I go through. This means I aim to release useful features as soon as possible and reiterate, refactor and improve based on feedback. Using the in-app feedback button to let me know how things work for you is therefore the best way to gather this information at this stage. +3. **Cross-platform**: The app will (when a first release happens, see the [Features document for an overview](FEATURES.md)) be cross-platform, available initially for Windows, MacOS, Linux & iOS. Android may happen, I currently don't have any Android devices to play with. +4. **Free, Open Source**: Inspired by the likes of the NOBA project, the Linux community and countless other highly successful Free, Open Source Software (FOSS) projects out there, my aim is to offer a wide-ranging wellbeing tool available for free to anyone who seeks to use this. The only exception may be future iOS versions, due to the requirement for a paid Developer account with Apple. This will depend on any changes in my personal financial situation. +5. **Potentially informing my own research**: This guiding principle may develop into something cohesive or fall away completely. I am currently a student at Glasgow University, completing my Master's in Science in Psychology (online conversion). Depending on how successful I am with developing this project, I may end up designing a research project around it to inform my dissertation / thesis. This is an idea I'm toying with. If this pans out, the research project will run separate from this app, but I will seek volunteers to gather anonymous usage data from. I will not build *any* telemetry into this app. Ever. Any sampling and data collection will run through a separate platform (most likely LimeSurvey). + +## Psychological Principles, Definitions and Criteria + +Equally important are the psychological principles that guide decisions about what to include in this app. Since many concepts have varying definitions I will keep an overview here. + +1. All activities and interventions available in the app will be *research-informed*. As explained by Ashman (2018), it is noted where evidence exists and where it does not, with decisions made accordingly. This approach acknowledges that, even where evidence exists, it may have other considerations, e.g. a very small number of participants or participants from a similar background or ethnicity. +2. There is no conclusive definition of *wellbeing*. For the purposes of this app, wellbeing is seen not as a state or fixed endpoint. Similar to work-life balance, it is seen as something we must always strive to maintain. A number of *self-care* interventions can assist with this balancing. +3. The concept of a psychologically rich life, as defined by Oishi & Westgate (2022) which states three related, but distinct aspects of a good life: happiness, meaning and psychological richness. + +## Development Logs + +My aim is to write a development log (or potentially record one on YouTube now and again) whenever I have something meaningful to say. These are hosted on my personal blog. Links to these dev logs are listed below, for easy reference. + +- DevLog #1 + +## License & Attributions + +Creative Commons Licence
This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License. + +For an overview of all underlying licences, copyrights and attributions, please see the [Copyrights document](COPYRIGHTS.md). + +## References + +Ashman, G. (2018). The truth about teaching: An evidence-informed guide for new teachers. SAGE. + +Oishi, S., & Westgate, E. C. (2022). A psychologically rich life: Beyond happiness and meaning. Psychological Review, 129(4), 790–811. [https://doi.org/10.1037/rev0000317](https://doi.org/10.1037/rev0000317) \ No newline at end of file diff --git a/data/main_icon_smaller.png b/data/main_icon_smaller.png new file mode 100644 index 0000000000000000000000000000000000000000..8a86ee785e24ec00aa67220285adc50003351da9 GIT binary patch literal 76314 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 ProgramValues.release_version: + print("There's an update!") + elif ProgramValues.web_release_version == ProgramValues.release_version: + print("There is no update!") diff --git a/godot/start_menu.tscn b/godot/start_menu.tscn new file mode 100644 index 0000000..4ca2790 --- /dev/null +++ b/godot/start_menu.tscn @@ -0,0 +1,95 @@ +[gd_scene load_steps=6 format=3 uid="uid://wp6d880w6h6u"] + +[ext_resource type="Script" path="res://start_menu.gd" id="1"] +[ext_resource type="Script" path="res://button_name.gd" id="2"] +[ext_resource type="Script" path="res://button_email_feedback.gd" id="3"] +[ext_resource type="Script" path="res://button_open_github.gd" id="4"] +[ext_resource type="Theme" uid="uid://cqlpsmjde8oae" path="res://wb_theme.tres" id="5"] + +[node name="start_menu" type="CanvasLayer"] +script = ExtResource("1") + +[node name="welcome_title" type="Label" parent="."] +unique_name_in_owner = true +anchors_preset = 5 +anchor_left = 0.5 +anchor_right = 0.5 +offset_left = -185.0 +offset_top = 2.0 +offset_right = 185.0 +offset_bottom = 36.0 +theme = ExtResource("5") +text = "All your base are belong to us" + +[node name="HTTPRequest" type="HTTPRequest" parent="."] + +[node name="version_label" type="Label" parent="."] +anchors_preset = 2 +anchor_top = 1.0 +anchor_bottom = 1.0 +offset_left = 5.0 +offset_top = -31.0 +offset_right = 1280.0 +offset_bottom = -1.0 +theme = ExtResource("5") +text = "Version" + +[node name="GridContainer" type="HFlowContainer" parent="."] +offset_left = 10.0 +offset_top = 55.0 +offset_right = 1270.0 +offset_bottom = 665.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="button_daily_action" type="Button" parent="GridContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme = ExtResource("5") +text = "Daily Action" + +[node name="button_open_github" type="Button" parent="GridContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme = ExtResource("5") +text = "GitHub" +script = ExtResource("4") + +[node name="button_email_feedback" type="Button" parent="GridContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme = ExtResource("5") +text = "Feedback" +script = ExtResource("3") + +[node name="button_name" type="Button" parent="GridContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme = ExtResource("5") +text = "Name" +script = ExtResource("2") + +[node name="button_update_check" type="Button" parent="GridContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme = ExtResource("5") +text = "Check for Updates" + +[node name="button_journal" type="Button" parent="GridContainer"] +visible = false +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme = ExtResource("5") +text = "Journal" + +[connection signal="request_completed" from="HTTPRequest" to="." method="_on_HTTPRequest_request_completed"] +[connection signal="pressed" from="GridContainer/button_open_github" to="GridContainer/button_open_github" method="_on_button_open_github_pressed"] +[connection signal="pressed" from="GridContainer/button_email_feedback" to="GridContainer/button_email_feedback" method="_on_button_email_feedback_pressed"] +[connection signal="pressed" from="GridContainer/button_name" to="GridContainer/button_name" method="_on_button_name_pressed"] +[connection signal="pressed" from="GridContainer/button_update_check" to="." method="_on_button_update_check_pressed"] diff --git a/godot/start_screen.tscn b/godot/start_screen.tscn new file mode 100644 index 0000000..e6159e1 --- /dev/null +++ b/godot/start_screen.tscn @@ -0,0 +1,141 @@ +[gd_scene load_steps=7 format=3 uid="uid://dqlqsachnxomy"] + +[ext_resource type="Script" path="res://main_screen.gd" id="1"] +[ext_resource type="PackedScene" path="res://user_details.tscn" id="2"] +[ext_resource type="PackedScene" uid="uid://wp6d880w6h6u" path="res://start_menu.tscn" id="3"] +[ext_resource type="PackedScene" path="res://apps/daily_prompts.tscn" id="4"] +[ext_resource type="Theme" uid="uid://cqlpsmjde8oae" path="res://wb_theme.tres" id="5"] +[ext_resource type="PackedScene" path="res://apps/pomodoro.tscn" id="6"] + +[node name="main_screen" type="CanvasLayer"] +script = ExtResource("1") + +[node name="UI" type="CanvasLayer" parent="."] + +[node name="background_light" type="ColorRect" parent="UI"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +color = Color(0.94902, 0.937255, 0.85098, 1) + +[node name="top_bar" type="Panel" parent="UI"] +custom_minimum_size = Vector2(0, 40) +offset_right = 1280.0 +offset_bottom = 40.0 + +[node name="top_container" type="VBoxContainer" parent="UI"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_top = 42.0 +offset_bottom = -48.0 +theme = ExtResource("5") + +[node name="start_menu" parent="UI/top_container" instance=ExtResource("3")] +visible = false + +[node name="welcome_title" parent="UI/top_container/start_menu" index="0"] +anchors_preset = 5 +offset_top = 0.0 +offset_bottom = 34.0 +grow_horizontal = 2 + +[node name="version_label" parent="UI/top_container/start_menu" index="2"] +anchors_preset = 2 +offset_left = 0.0 +offset_top = -30.0 +offset_right = 1275.0 +offset_bottom = 0.0 +grow_vertical = 0 + +[node name="button_daily_action" parent="UI/top_container/start_menu/GridContainer" index="0"] +layout_mode = 2 + +[node name="button_open_github" parent="UI/top_container/start_menu/GridContainer" index="1"] +layout_mode = 2 + +[node name="button_email_feedback" parent="UI/top_container/start_menu/GridContainer" index="2"] +layout_mode = 2 + +[node name="button_name" parent="UI/top_container/start_menu/GridContainer" index="3"] +layout_mode = 2 + +[node name="button_update_check" parent="UI/top_container/start_menu/GridContainer" index="4"] +layout_mode = 2 + +[node name="button_journal" parent="UI/top_container/start_menu/GridContainer" index="5"] +layout_mode = 2 + +[node name="user_details" parent="UI/top_container" instance=ExtResource("2")] +visible = false + +[node name="user_menu" parent="UI/top_container/user_details" index="0"] +anchors_preset = 8 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="green_panel" parent="UI/top_container/user_details/user_menu" index="0"] +layout_mode = 2 + +[node name="label_first_time" parent="UI/top_container/user_details/user_menu/green_panel" index="0"] +layout_mode = 0 +anchor_right = 0.0 +offset_top = 0.0 +offset_right = 1.0 +offset_bottom = 34.0 + +[node name="textbox_user_name" parent="UI/top_container/user_details/user_menu/green_panel" index="1"] +layout_mode = 0 +anchor_left = 0.0 +anchor_right = 0.0 +offset_left = 0.0 +offset_top = 0.0 +offset_right = 700.0 +offset_bottom = 34.0 + +[node name="birthday_selector" parent="UI/top_container/user_details/user_menu/green_panel" index="2"] +layout_mode = 0 +anchor_left = 0.0 +anchor_top = 0.0 +anchor_right = 0.0 +anchor_bottom = 0.0 +offset_left = 0.0 +offset_top = 0.0 +offset_right = 267.0 +offset_bottom = 34.0 + +[node name="button_birth_month" parent="UI/top_container/user_details/user_menu/green_panel/birthday_selector" index="0"] +layout_mode = 2 + +[node name="button_birth_day" parent="UI/top_container/user_details/user_menu/green_panel/birthday_selector" index="1"] +layout_mode = 2 + +[node name="button_user_save" parent="UI/top_container/user_details/user_menu/green_panel" index="3"] +layout_mode = 0 +anchor_left = 0.0 +anchor_top = 0.0 +anchor_right = 0.0 +anchor_bottom = 0.0 +offset_left = 0.0 +offset_top = 0.0 +offset_right = 148.57 +offset_bottom = 34.0 + +[node name="daily_prompts" parent="UI/top_container" instance=ExtResource("4")] +visible = false + +[node name="pomodoro" parent="UI/top_container" instance=ExtResource("6")] +visible = false + +[node name="bottom_bar" type="Panel" parent="UI"] +custom_minimum_size = Vector2(0, 40) +anchors_preset = 12 +anchor_top = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_top = -40.0 + +[editable path="UI/top_container/start_menu"] +[editable path="UI/top_container/user_details"] +[editable path="UI/top_container/daily_prompts"] +[editable path="UI/top_container/pomodoro"] diff --git a/godot/ui_control.gd b/godot/ui_control.gd new file mode 100644 index 0000000..8b1327f --- /dev/null +++ b/godot/ui_control.gd @@ -0,0 +1,30 @@ +extends Node + + +@onready var node_variables = get_node("/root/NodeVariables") +@onready var user_values = get_node("/root/UserValues") + + +func _ready(): + pass + + +func show_start_menu(): + node_variables.main_screen.visible = true + node_variables.start_menu.visible = true + node_variables.user_menu.visible = false + node_variables.daily_prompts.visible = false + + +func show_user_menu(): + node_variables.main_screen.visible = true + node_variables.start_menu.visible = false + node_variables.user_menu.visible = true + node_variables.daily_prompts.visible = false + + +func show_daily_prompts(): + node_variables.main_screen.visible = true + node_variables.start_menu.visible = false + node_variables.user_menu.visible = false + node_variables.daily_prompts.visible = true diff --git a/godot/user_details.tscn b/godot/user_details.tscn new file mode 100644 index 0000000..1bfed46 --- /dev/null +++ b/godot/user_details.tscn @@ -0,0 +1,89 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://button_user_save.gd" type="Script" id=1] +[ext_resource path="res://wb_theme.tres" type="Theme" id=2] +[ext_resource path="res://birthday_selector.gd" type="Script" id=3] + +[node name="user_details" type="CanvasLayer"] + +[node name="user_menu" type="PanelContainer" parent="."] +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -500.0 +offset_top = -300.0 +offset_right = 500.0 +offset_bottom = 300.0 +theme = ExtResource( 2 ) + +[node name="green_panel" type="Panel" parent="user_menu"] +offset_right = 1000.0 +offset_bottom = 600.0 +theme = ExtResource( 2 ) + +[node name="label_first_time" type="Label" parent="user_menu/green_panel"] +unique_name_in_owner = true +anchor_right = 1.0 +offset_top = 3.0 +offset_bottom = 37.0 +theme = ExtResource( 2 ) +text = "First time user: Please fill in your first name below." +align = 1 + +[node name="textbox_user_name" type="LineEdit" parent="user_menu/green_panel"] +unique_name_in_owner = true +anchor_left = 0.5 +anchor_right = 0.5 +offset_left = -350.0 +offset_top = 41.0 +offset_right = 350.0 +offset_bottom = 75.0 +theme = ExtResource( 2 ) +caret_blink = true +caret_blink_interval = 0.5 + +[node name="birthday_selector" type="GridContainer" parent="user_menu/green_panel"] +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -134.0 +offset_top = -150.0 +offset_right = 133.0 +offset_bottom = -116.0 +columns = 2 +script = ExtResource( 3 ) + +[node name="button_birth_month" type="MenuButton" parent="user_menu/green_panel/birthday_selector"] +offset_right = 130.0 +offset_bottom = 34.0 +size_flags_horizontal = 3 +text = "Month" +items = [ "January", null, 0, false, false, 1, 0, null, "", false, "February", null, 0, false, false, 2, 0, null, "", false, "March", null, 0, false, false, 3, 0, null, "", false, "April", null, 0, false, false, 4, 0, null, "", false, "May", null, 0, false, false, 5, 0, null, "", false, "June", null, 0, false, false, 6, 0, null, "", false, "July", null, 0, false, false, 7, 0, null, "", false, "August", null, 0, false, false, 8, 0, null, "", false, "September", null, 0, false, false, 9, 0, null, "", false, "October", null, 0, false, false, 10, 0, null, "", false, "November", null, 0, false, false, 11, 0, null, "", false, "December", null, 0, false, false, 12, 0, null, "", false ] + +[node name="button_birth_day" type="MenuButton" parent="user_menu/green_panel/birthday_selector"] +offset_left = 138.0 +offset_right = 267.0 +offset_bottom = 34.0 +focus_mode = 2 +size_flags_horizontal = 3 +theme = ExtResource( 2 ) +text = "Day" +items = [ "1", null, 0, false, false, 1, 0, null, "", false, "2", null, 0, false, false, 2, 0, null, "", false, "3", null, 0, false, false, 3, 0, null, "", false, "4", null, 0, false, false, 4, 0, null, "", false, "5", null, 0, false, false, 5, 0, null, "", false, "6", null, 0, false, false, 6, 0, null, "", false, "7", null, 0, false, false, 7, 0, null, "", false, "8", null, 0, false, false, 8, 0, null, "", false, "9", null, 0, false, false, 9, 0, null, "", false, "10", null, 0, false, false, 10, 0, null, "", false, "11", null, 0, false, false, 11, 0, null, "", false, "12", null, 0, false, false, 12, 0, null, "", false, "13", null, 0, false, false, 13, 0, null, "", false, "14", null, 0, false, false, 14, 0, null, "", false, "15", null, 0, false, false, 15, 0, null, "", false, "16", null, 0, false, false, 16, 0, null, "", false, "17", null, 0, false, false, 17, 0, null, "", false, "18", null, 0, false, false, 18, 0, null, "", false, "19", null, 0, false, false, 19, 0, null, "", false, "20", null, 0, false, false, 20, 0, null, "", false, "21", null, 0, false, false, 21, 0, null, "", false, "22", null, 0, false, false, 22, 0, null, "", false, "23", null, 0, false, false, 23, 0, null, "", false, "24", null, 0, false, false, 24, 0, null, "", false, "25", null, 0, false, false, 25, 0, null, "", false, "26", null, 0, false, false, 26, 0, null, "", false, "27", null, 0, false, false, 27, 0, null, "", false, "28", null, 0, false, false, 28, 0, null, "", false, "29", null, 0, false, false, 29, 0, null, "", false, "30", null, 0, false, false, 30, 0, null, "", false, "31", null, 0, false, false, 31, 0, null, "", false ] + +[node name="button_user_save" type="Button" parent="user_menu/green_panel"] +anchor_left = 0.5 +anchor_top = 1.0 +anchor_right = 0.5 +anchor_bottom = 1.0 +offset_left = -74.0 +offset_top = -49.0 +offset_right = 74.5701 +offset_bottom = -15.0 +theme = ExtResource( 2 ) +text = "Done" +expand_icon = true +script = ExtResource( 1 ) + +[connection signal="pressed" from="user_menu/green_panel/button_user_save" to="user_menu/green_panel/button_user_save" method="_on_button_user_save_pressed"] diff --git a/godot/user_values.gd b/godot/user_values.gd new file mode 100644 index 0000000..55e60b5 --- /dev/null +++ b/godot/user_values.gd @@ -0,0 +1,62 @@ +extends Node + +# User values + +var user_first_name = " " +var user_birth_month = 0 +var user_birth_day = 0 + +# System time values + +var date +var date_month +var date_day + +var date_time +var date_time_hour + +var welcome_day_part = " " + +# For the login-streak thing + +#var user_login_streak +#var user_last_login_year +#var user_last_login_month +#var user_last_login_day + + +var config = ConfigFile.new() +var err = config.load("user://user.ini") + +# This function can be triggered to update the known system time. +func get_device_time(): + date = Time.get_date_dict_from_system() + date_time = Time.get_time_dict_from_system() + date_time_hour = date_time.hour + date_month = date.month + date_day = date.day + print(date_month) + print(date_day) + print(date_time_hour) + +func set_welcome_day_part(): + if date_time_hour < 24: + welcome_day_part = "Good evening, " + if date_time_hour < 18: + welcome_day_part = "Good afternoon, " + if date_time_hour < 12: + welcome_day_part = "Good morning, " + if date_time_hour < 6: + welcome_day_part = "Good night, " + +func _ready(): + get_device_time() + # Read config file if it exists + # define variables from ini file + if err == OK: + user_first_name = config.get_value("User", "user_name") + user_birth_month = config.get_value("User", "user_birth_month") + user_birth_day = config.get_value("User", "user_birth_day") + + else: + pass diff --git a/godot/wb_theme.tres b/godot/wb_theme.tres new file mode 100644 index 0000000..b2ff36f --- /dev/null +++ b/godot/wb_theme.tres @@ -0,0 +1,102 @@ +[gd_resource type="Theme" load_steps=14 format=3 uid="uid://cqlpsmjde8oae"] + +[ext_resource type="FontFile" uid="uid://xsnm8cium6dl" path="res://Assets/fonts/noto_sans_display_bold.ttf" id="1"] +[ext_resource type="FontFile" uid="uid://cvcedf0p6452r" path="res://Assets/fonts/noto_sans_display.ttf" id="2"] + +[sub_resource type="FontFile" id="1"] +fallbacks = Array[Font]([ExtResource("1")]) +cache/0/16/0/ascent = 0.0 +cache/0/16/0/descent = 0.0 +cache/0/16/0/underline_position = 0.0 +cache/0/16/0/underline_thickness = 0.0 +cache/0/16/0/scale = 1.0 +cache/0/16/0/kerning_overrides/16/0 = Vector2(0, 0) + +[sub_resource type="StyleBoxFlat" id="4"] +bg_color = Color(0.207843, 0.219608, 0.317647, 1) +corner_radius_top_left = 10 +corner_radius_top_right = 10 +corner_radius_bottom_right = 10 +corner_radius_bottom_left = 10 + +[sub_resource type="StyleBoxFlat" id="5"] +bg_color = Color(0.862745, 0.435294, 0.329412, 1) +corner_radius_top_left = 10 +corner_radius_top_right = 10 +corner_radius_bottom_right = 10 +corner_radius_bottom_left = 10 + +[sub_resource type="StyleBoxFlat" id="6"] +bg_color = Color(0.941176, 0.772549, 0.517647, 1) +corner_radius_top_left = 10 +corner_radius_top_right = 10 +corner_radius_bottom_right = 10 +corner_radius_bottom_left = 10 + +[sub_resource type="StyleBoxFlat" id="2"] +bg_color = Color(0.862745, 0.435294, 0.329412, 1) +corner_radius_top_left = 10 +corner_radius_top_right = 10 +corner_radius_bottom_right = 10 +corner_radius_bottom_left = 10 + +[sub_resource type="StyleBoxFlat" id="7"] +bg_color = Color(0.941176, 0.772549, 0.517647, 1) +corner_radius_top_left = 10 +corner_radius_top_right = 10 +corner_radius_bottom_right = 10 +corner_radius_bottom_left = 10 + +[sub_resource type="FontFile" id="3"] +fallbacks = Array[Font]([ExtResource("2")]) +cache/0/16/0/ascent = 0.0 +cache/0/16/0/descent = 0.0 +cache/0/16/0/underline_position = 0.0 +cache/0/16/0/underline_thickness = 0.0 +cache/0/16/0/scale = 1.0 +cache/0/16/0/kerning_overrides/16/0 = Vector2(0, 0) + +[sub_resource type="FontFile" id="8"] +fallbacks = Array[Font]([ExtResource("2")]) +cache/0/16/0/ascent = 0.0 +cache/0/16/0/descent = 0.0 +cache/0/16/0/underline_position = 0.0 +cache/0/16/0/underline_thickness = 0.0 +cache/0/16/0/scale = 1.0 +cache/0/16/0/kerning_overrides/16/0 = Vector2(0, 0) + +[sub_resource type="StyleBoxFlat" id="9"] +content_margin_left = 15.0 +content_margin_right = 5.0 +bg_color = Color(0.207843, 0.219608, 0.317647, 1) +corner_radius_top_left = 10 +corner_radius_top_right = 10 +corner_radius_bottom_right = 10 +corner_radius_bottom_left = 10 + +[sub_resource type="StyleBoxFlat" id="11"] +bg_color = Color(0.462745, 0.662745, 0.560784, 1) +border_width_left = 2 +border_width_top = 2 +border_width_right = 2 +border_width_bottom = 2 +border_color = Color(0.207843, 0.219608, 0.317647, 1) +corner_radius_top_left = 10 +corner_radius_top_right = 10 +corner_radius_bottom_right = 10 +corner_radius_bottom_left = 10 + +[sub_resource type="StyleBoxEmpty" id="12"] + +[resource] +Button/fonts/font = SubResource("1") +Button/styles/disabled = SubResource("4") +Button/styles/focus = SubResource("5") +Button/styles/hover = SubResource("6") +Button/styles/normal = SubResource("2") +Button/styles/pressed = SubResource("7") +Label/fonts/font = SubResource("3") +LineEdit/fonts/font = SubResource("8") +LineEdit/styles/normal = SubResource("9") +Panel/styles/panel = SubResource("11") +PanelContainer/styles/panel = SubResource("12") diff --git a/version_info.csv b/version_info.csv new file mode 100644 index 0000000..56a6051 --- /dev/null +++ b/version_info.csv @@ -0,0 +1 @@ +1 \ No newline at end of file