Headerbar: Try to improve the add button behavior.
This commit is contained in:
parent
cc9fc80328
commit
67ab54f820
@ -64,11 +64,15 @@ struct AddPopover {
|
|||||||
impl AddPopover {
|
impl AddPopover {
|
||||||
// FIXME: THIS ALSO SUCKS!
|
// FIXME: THIS ALSO SUCKS!
|
||||||
fn on_add_clicked(&self, sender: &Sender<Action>) -> Result<(), Error> {
|
fn on_add_clicked(&self, sender: &Sender<Action>) -> Result<(), Error> {
|
||||||
let url = self
|
let mut url = self
|
||||||
.entry
|
.entry
|
||||||
.get_text()
|
.get_text()
|
||||||
.ok_or_else(|| format_err!("GtkEntry blew up somehow."))?;
|
.ok_or_else(|| format_err!("GtkEntry blew up somehow."))?;
|
||||||
|
|
||||||
|
if !(url.starts_with("https://") || url.starts_with("http://")) {
|
||||||
|
url = format!("http://{}", url);
|
||||||
|
};
|
||||||
|
|
||||||
debug!("Url: {}", url);
|
debug!("Url: {}", url);
|
||||||
let url = if url.contains("itunes.com") || url.contains("apple.com") {
|
let url = if url.contains("itunes.com") || url.contains("apple.com") {
|
||||||
info!("Detected itunes url.");
|
info!("Detected itunes url.");
|
||||||
@ -79,8 +83,6 @@ impl AddPopover {
|
|||||||
url.to_owned()
|
url.to_owned()
|
||||||
};
|
};
|
||||||
|
|
||||||
self.entry.set_text("");
|
|
||||||
|
|
||||||
rayon::spawn(clone!(sender => move || {
|
rayon::spawn(clone!(sender => move || {
|
||||||
if let Ok(source) = Source::from_url(&url) {
|
if let Ok(source) = Source::from_url(&url) {
|
||||||
refresh(Some(vec![source]), sender.clone());
|
refresh(Some(vec![source]), sender.clone());
|
||||||
@ -95,15 +97,19 @@ impl AddPopover {
|
|||||||
|
|
||||||
// FIXME: THIS SUCKS! REFACTOR ME.
|
// FIXME: THIS SUCKS! REFACTOR ME.
|
||||||
fn on_entry_changed(&self) -> Result<(), Error> {
|
fn on_entry_changed(&self) -> Result<(), Error> {
|
||||||
let uri = self
|
let mut url = self
|
||||||
.entry
|
.entry
|
||||||
.get_text()
|
.get_text()
|
||||||
.ok_or_else(|| format_err!("GtkEntry blew up somehow."))?;
|
.ok_or_else(|| format_err!("GtkEntry blew up somehow."))?;
|
||||||
debug!("Url: {}", uri);
|
debug!("Url: {}", url);
|
||||||
|
|
||||||
let url = Url::parse(&uri);
|
if !(url.starts_with("https://") || url.starts_with("http://")) {
|
||||||
|
url = format!("http://{}", url);
|
||||||
|
};
|
||||||
|
|
||||||
|
debug!("Url: {}", url);
|
||||||
// TODO: refactor to avoid duplication
|
// TODO: refactor to avoid duplication
|
||||||
match url {
|
match Url::parse(&url) {
|
||||||
Ok(u) => {
|
Ok(u) => {
|
||||||
if !dbqueries::source_exists(u.as_str())? {
|
if !dbqueries::source_exists(u.as_str())? {
|
||||||
self.add.set_sensitive(true);
|
self.add.set_sensitive(true);
|
||||||
@ -111,15 +117,16 @@ impl AddPopover {
|
|||||||
self.result.set_label("");
|
self.result.set_label("");
|
||||||
} else {
|
} else {
|
||||||
self.add.set_sensitive(false);
|
self.add.set_sensitive(false);
|
||||||
self.result.set_label("Show already exists.");
|
self.result
|
||||||
|
.set_label("You are already subscribed to this Show");
|
||||||
self.result.show();
|
self.result.show();
|
||||||
}
|
}
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
self.add.set_sensitive(false);
|
self.add.set_sensitive(false);
|
||||||
if !uri.is_empty() {
|
if !url.is_empty() {
|
||||||
self.result.set_label("Invalid url.");
|
self.result.set_label("Invalid url");
|
||||||
self.result.show();
|
self.result.show();
|
||||||
error!("Error: {}", err);
|
error!("Error: {}", err);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user