Skip to content

Commit 7d2dfef

Browse files
authored
Merge pull request #247 from RustCastLabs/opt-out-cbhist
add ability to opt out of clipboard history
2 parents 3d02e23 + 08086a0 commit 7d2dfef

4 files changed

Lines changed: 41 additions & 4 deletions

File tree

src/app.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,7 @@ pub enum SetConfigFields {
124124
ClipboardHotkey(String),
125125
PlaceHolder(String),
126126
SearchUrl(String),
127+
ClipboardHistory(bool),
127128
HapticFeedback(bool),
128129
ShowMenubarIcon(bool),
129130
SetPage(MainPage),

src/app/pages/settings.rs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,23 @@ pub fn settings_page(config: Config) -> Element<'static, Message> {
8383
notice_item(theme.clone(), "Which search engine to use (%s = query)"),
8484
]);
8585

86+
let theme_clone = theme.clone();
87+
let clipboard_history = Row::from_iter([
88+
settings_hint_text(theme.clone(), "Enable Clipboard history"),
89+
checkbox(config.clone().cbhist)
90+
.style(move |_, _| settings_checkbox_style(&theme_clone))
91+
.on_toggle(|input| Message::SetConfig(SetConfigFields::ClipboardHistory(input)))
92+
.into(),
93+
notice_item(
94+
theme.clone(),
95+
"If you want your clipboard history to be stored",
96+
),
97+
])
98+
.align_y(Alignment::Center)
99+
.spacing(SETTINGS_ITEM_COL_SPACING * 2)
100+
.padding(SETTINGS_ITEM_PADDING)
101+
.height(SETTINGS_ITEM_HEIGHT);
102+
86103
let theme_clone = theme.clone();
87104
let current_delay = config.debounce_delay;
88105
let debounce = settings_item_column([
@@ -396,6 +413,7 @@ pub fn settings_page(config: Config) -> Element<'static, Message> {
396413
debounce.into(),
397414
haptic.into(),
398415
tray_icon.into(),
416+
clipboard_history.into(),
399417
auto_suggest.into(),
400418
show_scrollbar.into(),
401419
clear_on_hide.into(),

src/app/tile/update.rs

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -345,9 +345,20 @@ pub fn handle_update(tile: &mut Tile, message: Message) -> Task<Message> {
345345
}
346346

347347
Message::SwitchToPage(page) => {
348-
tile.page = page;
349-
let task = match tile.page {
350-
Page::ClipboardHistory | Page::Settings => window::latest().map(|x| {
348+
let task = match &page {
349+
Page::ClipboardHistory => {
350+
if !tile.config.cbhist {
351+
return Task::none();
352+
}
353+
window::latest().map(|x| {
354+
let id = x.unwrap();
355+
Message::ResizeWindow(
356+
id,
357+
((7 * 55) + 35 + DEFAULT_WINDOW_HEIGHT as usize) as f32,
358+
)
359+
})
360+
}
361+
Page::Settings => window::latest().map(|x| {
351362
let id = x.unwrap();
352363
Message::ResizeWindow(
353364
id,
@@ -357,6 +368,8 @@ pub fn handle_update(tile: &mut Tile, message: Message) -> Task<Message> {
357368
_ => Task::none(),
358369
};
359370

371+
tile.page = page;
372+
360373
let refresh_empty_main_query = if tile.page == Page::Main {
361374
window::latest()
362375
.map(|x| x.unwrap())
@@ -477,6 +490,9 @@ pub fn handle_update(tile: &mut Tile, message: Message) -> Task<Message> {
477490
}
478491

479492
Message::EditClipboardHistory(action) => {
493+
if !tile.config.cbhist {
494+
return Task::none();
495+
}
480496
match action {
481497
Editable::Create(content) => {
482498
if !tile.clipboard_content.contains(&content) {
@@ -606,6 +622,7 @@ pub fn handle_update(tile: &mut Tile, message: Message) -> Task<Message> {
606622
match config {
607623
SetConfigFields::ToggleHotkey(hk) => final_config.toggle_hotkey = hk,
608624
SetConfigFields::ClipboardHotkey(hk) => final_config.clipboard_hotkey = hk,
625+
SetConfigFields::ClipboardHistory(cbhist) => final_config.cbhist = cbhist,
609626
SetConfigFields::Modes(Editable::Create((key, value))) => {
610627
final_config.modes.insert(key, value);
611628
}
@@ -935,7 +952,6 @@ fn execute_query(tile: &mut Tile, id: Id) -> Task<Message> {
935952
}
936953
"cbhist" => {
937954
task = task.chain(Task::done(Message::SwitchToPage(Page::ClipboardHistory)));
938-
tile.page = Page::ClipboardHistory;
939955
}
940956
"main" => {
941957
if tile.page != Page::Main {

src/config.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ pub struct Config {
2525
pub placeholder: String,
2626
pub search_url: String,
2727
pub haptic_feedback: bool,
28+
pub cbhist: bool,
2829
pub show_trayicon: bool,
2930
pub shells: Vec<Shelly>,
3031
pub modes: HashMap<String, String>,
@@ -44,6 +45,7 @@ impl Default for Config {
4445
theme: Theme::default(),
4546
placeholder: String::from("Time to be productive!"),
4647
search_url: "https://duckduckgo.com/search?q=%s".to_string(),
48+
cbhist: true,
4749
haptic_feedback: false,
4850
show_trayicon: true,
4951
main_page: MainPage::default(),

0 commit comments

Comments
 (0)