Skip to content
This repository has been archived by the owner on Oct 15, 2022. It is now read-only.

Commit

Permalink
auto switcher
Browse files Browse the repository at this point in the history
  • Loading branch information
Tofixrs committed Aug 29, 2022
1 parent d7595af commit 08226ac
Show file tree
Hide file tree
Showing 7 changed files with 115 additions and 8 deletions.
2 changes: 1 addition & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "discord_presence"
version = "0.6.1"
version = "0.7.0"
edition = "2021"
authors= ["Tofix.rs"]
description = "A cross-platform application for custom presence on discord"
Expand Down
5 changes: 3 additions & 2 deletions build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -30,12 +30,13 @@ Exec=bin/discord_presence
Type=Application
Categories=Utility
Icon=Icon" >> discord_presence.desktop
wget https://cdn.discordapp.com/avatars/436947586788884490/5ec54263e5f8c80ca91674fe5124ffa3.png?size=256
mv 5ec54263e5f8c80ca91674fe5124ffa3.png?size=256 Icon.png
wget https://cdn.discordapp.com/avatars/436947586788884490/477e042f4462076e5c0e4778560cbfcd.webp?size=256
mv 477e042f4462076e5c0e4778560cbfcd.webp?size=256 Icon.png
cp -r ../../assets ./usr/bin/
cd ../
ARCH=x86_64 appimagetool discord_presence.AppDir
mv Discord_Presence-x86_64.AppImage ../output/Discord_Presence-linux.AppImage
cd ../
rm -r temp
rm -r App
unzip ./output/Windows-portable.zip
6 changes: 6 additions & 0 deletions src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,9 @@ impl App {
autoconnect: storage.autoconnect,
darkmode: storage.darkmode,
presets,
preset_switch_1: storage.preset_switch_1,
preset_switch_2: storage.preset_switch_2,
preset_switch_time: storage.preset_switch_time,
..Default::default()
},
client,
Expand Down Expand Up @@ -199,6 +202,9 @@ impl eframe::App for App {
second_btn_url: &self.second_btn.url,
autoconnect: self.menu_bar.autoconnect,
darkmode: self.menu_bar.darkmode,
preset_switch_1: self.menu_bar.preset_switch_1.clone(),
preset_switch_2: self.menu_bar.preset_switch_2.clone(),
preset_switch_time: self.menu_bar.preset_switch_time,
};
let storage_string = match to_string(&save) {
Ok(save) => save,
Expand Down
84 changes: 81 additions & 3 deletions src/menu_bar.rs
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
use crate::preset::{InAppPreset, Preset};
use chrono::Utc;
use derivative::Derivative;
use eframe::{
egui::{self, Layout, Ui},
egui::{self, Layout, RichText, Ui},
emath::Align,
epaint::Vec2,
epaint::{Color32, Vec2},
};
use rfd::FileDialog;
use serde_json::{from_str, to_string};
Expand All @@ -26,6 +27,12 @@ pub struct MenuBar {
pub save_menu: bool,
pub preset_name: String,
pub presets: String,
pub preset_switch_time: u8,
pub preset_switch_1: Option<InAppPreset>,
pub preset_switch_2: Option<InAppPreset>,
pub preset_switch_current: u8,
pub preset_till: i64,
pub run_switcher: bool,
}

impl MenuBar {
Expand All @@ -36,6 +43,7 @@ impl MenuBar {
self.settings(ui);
self.presets(ui);
self.help(ui);
self.switcher(ui);
})
});

Expand All @@ -47,7 +55,7 @@ impl MenuBar {
.show(ctx, |ui| {
ui.with_layout(Layout::top_down(Align::Center), |ui| {
ui.heading("Discord Presence");
ui.label("Version v0.6.1-beta");
ui.label("Version v0.7-beta");
});
});

Expand Down Expand Up @@ -146,6 +154,76 @@ impl MenuBar {
});
}

fn switcher(&mut self, ui: &mut Ui) {
ui.menu_button("Switcher", |ui| {
ui.hyperlink_to(
"Guide",
"https://tofix26.github.io/discord-presence-page/docs/guide/presets",
);
ui.add_space(5.);
let title = match &self.preset_switch_1 {
None => "Pick first preset".to_string(),
Some(preset) => preset.name.clone(),
};
ui.menu_button(title, |ui| {
let presets: Vec<InAppPreset> = match from_str(&self.presets) {
Ok(presets) => presets,
Err(_) => Vec::new(),
};
for preset in presets.iter() {
if ui.button(&preset.name).clicked() {
self.preset_switch_1 = Some(preset.clone());
}
}
});
ui.add_space(5.);

let title = match &self.preset_switch_2 {
None => "Pick second preset".to_string(),
Some(preset) => preset.name.clone(),
};
ui.menu_button(title, |ui| {
let presets: Vec<InAppPreset> = match from_str(&self.presets) {
Ok(presets) => presets,
Err(_) => Vec::new(),
};
for preset in presets.iter() {
if ui.button(&preset.name).clicked() {
self.preset_switch_2 = Some(preset.clone());
}
}
});
ui.add_space(5.);

ui.horizontal(|ui| {
ui.label(RichText::new("Switch every: ").color(Color32::from_rgb(163, 163, 163)));
ui.add(
egui::widgets::DragValue::new(&mut self.preset_switch_time)
.clamp_range(10..=255)
.suffix("s"),
);
});
ui.checkbox(&mut self.run_switcher, "Run Switcher");
});
if (self.preset_till < Utc::now().timestamp())
&& self.run_switcher
&& self.preset_switch_1.is_some()
&& self.preset_switch_2.is_some()
{
self.loaded_preset = match self.preset_switch_current {
1 => Some(self.preset_switch_1.clone().unwrap().to_preset()),
2 => Some(self.preset_switch_2.clone().unwrap().to_preset()),
_ => Some(self.preset_switch_1.clone().unwrap().to_preset()),
};
self.preset_switch_current = match self.preset_switch_current {
1 => 2,
2 => 1,
_ => 1,
};
self.preset_till = Utc::now().timestamp() + 5;
}
}

fn load_preset(&mut self) {
let file = FileDialog::new()
.add_filter("Preset", &["crp"])
Expand Down
19 changes: 19 additions & 0 deletions src/preset.rs
Original file line number Diff line number Diff line change
Expand Up @@ -128,4 +128,23 @@ impl InAppPreset {
Button2URL: Some(app.second_btn.url.clone()),
}
}
pub fn to_preset(self) -> Preset {
Preset {
ID: self.ID,
Details: self.Details,
State: self.State,
PartySize: self.PartySize,
PartyMax: self.PartyMax,
Timestamps: self.Timestamps,
CustomTimestamp: self.CustomTimestamp,
LargeKey: self.LargeKey,
LargeText: self.LargeText,
SmallKey: self.SmallKey,
SmallText: self.SmallText,
Button1Text: self.Button1Text,
Button1URL: self.Button1URL,
Button2Text: self.Button2Text,
Button2URL: self.Button2URL,
}
}
}
5 changes: 4 additions & 1 deletion src/storage.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use serde::{Deserialize, Serialize};

use crate::timestamp::TimestampEnum;
use crate::{preset::InAppPreset, timestamp::TimestampEnum};
use derivative::Derivative;
#[derive(Serialize, Deserialize, Derivative)]
#[derivative(Default)]
Expand All @@ -22,4 +22,7 @@ pub struct Storage<'a> {
pub autoconnect: bool,
#[derivative(Default(value = "true"))]
pub darkmode: bool,
pub preset_switch_1: Option<InAppPreset>,
pub preset_switch_2: Option<InAppPreset>,
pub preset_switch_time: u8,
}

0 comments on commit 08226ac

Please sign in to comment.