diff --git a/dash-frontend/assets/dashboard/donate.svg b/dash-frontend/assets/dashboard/donate.svg
new file mode 100644
index 00000000..fc746fb5
--- /dev/null
+++ b/dash-frontend/assets/dashboard/donate.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/dash-frontend/assets/dashboard/opencollective.svg b/dash-frontend/assets/dashboard/opencollective.svg
new file mode 100644
index 00000000..fa9687af
--- /dev/null
+++ b/dash-frontend/assets/dashboard/opencollective.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/dash-frontend/assets/dashboard/opencollective_logo.svg b/dash-frontend/assets/dashboard/opencollective_logo.svg
new file mode 100644
index 00000000..2972751e
--- /dev/null
+++ b/dash-frontend/assets/dashboard/opencollective_logo.svg
@@ -0,0 +1,54 @@
+
+
diff --git a/dash-frontend/assets/gui/tab/donate.xml b/dash-frontend/assets/gui/tab/donate.xml
new file mode 100644
index 00000000..ffa9ebe6
--- /dev/null
+++ b/dash-frontend/assets/gui/tab/donate.xml
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dash-frontend/assets/gui/tab/home.xml b/dash-frontend/assets/gui/tab/home.xml
index 9f27bd6b..a1015acf 100644
--- a/dash-frontend/assets/gui/tab/home.xml
+++ b/dash-frontend/assets/gui/tab/home.xml
@@ -8,7 +8,7 @@
align_items="center"
flex_grow="1"
gap="24">
-
+
@@ -19,9 +19,15 @@
-
+
+
+
+
+
diff --git a/dash-frontend/assets/gui/tab/welcome_common.xml b/dash-frontend/assets/gui/tab/welcome_common.xml
index ae0e3af1..9963542a 100644
--- a/dash-frontend/assets/gui/tab/welcome_common.xml
+++ b/dash-frontend/assets/gui/tab/welcome_common.xml
@@ -3,17 +3,17 @@
-
+
-
+
-
+
diff --git a/dash-frontend/assets/gui/tab/welcome_page_0.xml b/dash-frontend/assets/gui/tab/welcome_page_0.xml
index d5961ae6..0e9288df 100644
--- a/dash-frontend/assets/gui/tab/welcome_page_0.xml
+++ b/dash-frontend/assets/gui/tab/welcome_page_0.xml
@@ -4,11 +4,16 @@
-
-
+
+
-
-
+
+
+
+
+
+
+
diff --git a/dash-frontend/assets/gui/tab/welcome_page_1.xml b/dash-frontend/assets/gui/tab/welcome_page_1.xml
index de0990e6..412a3846 100644
--- a/dash-frontend/assets/gui/tab/welcome_page_1.xml
+++ b/dash-frontend/assets/gui/tab/welcome_page_1.xml
@@ -5,9 +5,9 @@
diff --git a/dash-frontend/assets/gui/tab/welcome_page_2.xml b/dash-frontend/assets/gui/tab/welcome_page_2.xml
index b748d578..dda5dad2 100644
--- a/dash-frontend/assets/gui/tab/welcome_page_2.xml
+++ b/dash-frontend/assets/gui/tab/welcome_page_2.xml
@@ -4,9 +4,9 @@
diff --git a/dash-frontend/assets/gui/tab/welcome_page_3.xml b/dash-frontend/assets/gui/tab/welcome_page_3.xml
index cc43df4b..fe126f30 100644
--- a/dash-frontend/assets/gui/tab/welcome_page_3.xml
+++ b/dash-frontend/assets/gui/tab/welcome_page_3.xml
@@ -4,14 +4,14 @@
diff --git a/dash-frontend/assets/gui/tab/welcome_page_4.xml b/dash-frontend/assets/gui/tab/welcome_page_4.xml
index 2af62410..71a27fb1 100644
--- a/dash-frontend/assets/gui/tab/welcome_page_4.xml
+++ b/dash-frontend/assets/gui/tab/welcome_page_4.xml
@@ -5,13 +5,13 @@
diff --git a/dash-frontend/assets/lang/en.json b/dash-frontend/assets/lang/en.json
index 139458f4..a73099a9 100644
--- a/dash-frontend/assets/lang/en.json
+++ b/dash-frontend/assets/lang/en.json
@@ -167,7 +167,6 @@
"ENABLE_WATCH": "Enable watch",
"SETS_ON_WATCH": "Sets on watch",
"SHOW_WELCOME_SCREEN": "Show welcome screen",
- "SHOW_WELCOME_SCREEN_HELP": "Show welcome screen on next start",
"SKYBOX": "Skybox",
"SKYMAP_ALREADY_DOWNLOADED": "This skymap is already downloaded. Select desired action.",
"SPACE_DRAG": "Space drag",
@@ -221,7 +220,38 @@
"CREATION_DATE": "Creation date",
"DEBUG_INFO": "Debug info",
"DISPLAY_BRIGHTNESS": "Display brightness",
+ "DONATE": {
+ "SUPPORT_US": "Support us",
+ "DESCRIPTION": "We're a small team of 2 developers building WayVR in our free time. If you enjoy using this software, please consider supporting us - every donation helps us keep going.",
+ "THANK_YOU": "Thank you!",
+ "BUTTON_TOOLTIP": "Donate via Open Collective",
+ "CURRENT_SUPPORTERS": "Current Supporters"
+ },
"DOWNLOADER": "Downloader",
+ "WELCOME": {
+ "GREETING": "Hi there!",
+ "THANKS_FOR_INSTALLING": "Thank you for installing WayVR!",
+ "GUIDE_INTRO": "Let us guide you through your first steps.",
+ "NEXT_BUTTON": "Press \"Next\" button below to get started.",
+ "WATCH": "Watch",
+ "LOOK_AT_LEFT_WRIST": "Look at your left wrist. That's your watch.",
+ "WORKING_SET": "Working Set",
+ "DOUBLE_PRESS_TO_TOGGLE": "Double-press B (on Index) or Y (on Meta) to toggle the visibility of your workspace. Try it now.",
+ "LASER_COLORS": "Laser Colors",
+ "REGULAR_MODE_BLUE_LASER": "— Regular Mode: Blue laser",
+ "REPOSITION_THIS_WINDOW_BY_GRABBING": "Reposition this window using your controller's grip action.",
+ "RIGHT_CLICK_MODE_ORANGE_LASER": "— Right-click Mode: Orange laser",
+ "MIDDLE_CLICK_MODE_PURPLE_LASER": "— Middle-click Mode: Purple laser",
+ "LASER_FUNCTIONALITY": "Much of the functionality in WayVR depends on what color of laser is used to interact with a UI element. You don't need to press these buttons, just touch them!",
+ "MOVING_YOUR_SET": "Moving your set",
+ "GRAB_ONE_HAND": "Grab it with one hand to move your set.",
+ "GRAB_BOTH_HANDS": "Grab it with both hands if you want to move a specific overlay in your set.",
+ "CENTER_MARKER": "Center marker determines the center or your set.",
+ "ALL_SET": "You're all set!",
+ "BASICS": "These basics will allow you to start using WayVR with ease.",
+ "FEATURES_DOCUMENTATION": "There are many other features worth customizing. For more information, check the documentation at",
+ "GO_BACK_HOME": "Go back to Home screen"
+ },
"DOWNLOAD_AGAIN": "Download again",
"DOWNLOADING_FILE": "Downloading file...",
"FAILED_TO_LAUNCH_APPLICATION": "Failed to launch a application:",
diff --git a/dash-frontend/src/frontend.rs b/dash-frontend/src/frontend.rs
index f1ddf3b5..fc10d9ed 100644
--- a/dash-frontend/src/frontend.rs
+++ b/dash-frontend/src/frontend.rs
@@ -29,8 +29,8 @@ use wlx_common::{
use crate::{
assets,
tab::{
- apps::TabApps, games::TabGames, home::TabHome, monado::TabMonado, settings::TabSettings, welcome::TabWelcome, Tab,
- TabType,
+ Tab, TabType, apps::TabApps, donate::TabDonate, games::TabGames, home::TabHome, monado::TabMonado,
+ settings::TabSettings, welcome::TabWelcome,
},
util::{
popup_manager::{MountPopupOnceParams, PopupManager, PopupManagerParams},
@@ -414,6 +414,7 @@ impl Frontend {
TabType::Games => ("GAMES", "dashboard/games.svg"),
TabType::Monado => ("MONADO_RUNTIME", "dashboard/monado.svg"),
TabType::Settings => ("SETTINGS", "dashboard/settings.svg"),
+ TabType::Donate => ("DONATE.SUPPORT_US", "dashboard/opencollective.svg"),
};
self.set_tab_title(tab_translation, icon_path)?;
@@ -425,6 +426,7 @@ impl Frontend {
TabType::Games => Box::new(TabGames::new(self, widget_content.id)?),
TabType::Monado => Box::new(TabMonado::new(self, widget_content.id)?),
TabType::Settings => Box::new(TabSettings::new(self, widget_content.id, data)?),
+ TabType::Donate => Box::new(TabDonate::new(self, widget_content.id, data)?),
};
self.current_tab = Some(tab);
diff --git a/dash-frontend/src/tab/donate.rs b/dash-frontend/src/tab/donate.rs
new file mode 100644
index 00000000..7fb4c843
--- /dev/null
+++ b/dash-frontend/src/tab/donate.rs
@@ -0,0 +1,64 @@
+use std::{marker::PhantomData, rc::Rc};
+
+use wgui::{
+ assets::AssetPath,
+ components::button::ComponentButton,
+ globals::WguiGlobals,
+ layout::{Layout, WidgetID},
+ parser::{Fetchable, ParseDocumentParams, ParserState, TemplateParams},
+ task::Tasks,
+};
+
+use crate::{
+ frontend::{Frontend, FrontendTask, FrontendTasks},
+ tab::{Tab, TabType},
+};
+
+#[derive(Clone)]
+#[allow(clippy::enum_variant_names)]
+enum Task {}
+
+pub struct TabDonate {
+ #[allow(dead_code)]
+ pub state: ParserState,
+ marker: PhantomData,
+ tasks: Tasks,
+ frontend_tasks: FrontendTasks,
+}
+
+impl Tab for TabDonate {
+ fn get_type(&self) -> TabType {
+ TabType::Donate
+ }
+
+ fn update(&mut self, frontend: &mut Frontend, _time_ms: u32, _user_data: &mut T) -> anyhow::Result<()> {
+ for task in self.tasks.drain() {
+ match task {}
+ }
+
+ Ok(())
+ }
+}
+
+fn doc_params(globals: &WguiGlobals) -> ParseDocumentParams<'_> {
+ ParseDocumentParams {
+ globals: globals.clone(),
+ path: AssetPath::BuiltIn("gui/tab/donate.xml"),
+ extra: Default::default(),
+ }
+}
+
+impl TabDonate {
+ pub fn new(frontend: &mut Frontend, parent_id: WidgetID, _data: &mut T) -> anyhow::Result {
+ let state = wgui::parser::parse_from_assets(&doc_params(&frontend.globals), &mut frontend.layout, parent_id)?;
+
+ let tasks = Tasks::::new();
+
+ Ok(Self {
+ state,
+ marker: PhantomData,
+ tasks,
+ frontend_tasks: frontend.tasks.clone(),
+ })
+ }
+}
diff --git a/dash-frontend/src/tab/home.rs b/dash-frontend/src/tab/home.rs
index a3537045..74d2dee7 100644
--- a/dash-frontend/src/tab/home.rs
+++ b/dash-frontend/src/tab/home.rs
@@ -71,6 +71,7 @@ impl TabHome {
let btn_monado = state.fetch_component_as::("btn_monado")?;
let btn_settings = state.fetch_component_as::("btn_settings")?;
let btn_welcome_screen = state.fetch_component_as::("btn_welcome_screen")?;
+ let btn_donate = state.fetch_component_as::("btn_donate")?;
let tasks = &mut frontend.tasks;
tasks.handle_button(&btn_apps, FrontendTask::SetTab(TabType::Apps));
@@ -78,6 +79,7 @@ impl TabHome {
tasks.handle_button(&btn_monado, FrontendTask::SetTab(TabType::Monado));
tasks.handle_button(&btn_settings, FrontendTask::SetTab(TabType::Settings));
tasks.handle_button(&btn_welcome_screen, FrontendTask::SetTab(TabType::Welcome));
+ tasks.handle_button(&btn_donate, FrontendTask::SetTab(TabType::Donate));
Ok(Self {
state,
diff --git a/dash-frontend/src/tab/mod.rs b/dash-frontend/src/tab/mod.rs
index 9418c843..6d8ae8c6 100644
--- a/dash-frontend/src/tab/mod.rs
+++ b/dash-frontend/src/tab/mod.rs
@@ -1,6 +1,7 @@
use crate::frontend::Frontend;
pub mod apps;
+pub mod donate;
pub mod games;
pub mod home;
pub mod monado;
@@ -15,12 +16,13 @@ pub enum TabType {
Monado,
Settings,
Welcome,
+ Donate,
}
impl TabType {
pub fn get_preferred_padding(&self) -> f32 {
match self {
- TabType::Welcome => 0.0,
+ TabType::Welcome | TabType::Donate => 0.0,
_ => 16.0,
}
}