Skip to content

Commit

Permalink
Merge branch 'main' of https://github.com/tsukinaha/tsukimi into feat…
Browse files Browse the repository at this point in the history
…ure/win
  • Loading branch information
Kosette committed Apr 13, 2024
2 parents 20aefe4 + a6d3cd0 commit 3aa540e
Show file tree
Hide file tree
Showing 7 changed files with 66 additions and 29 deletions.
17 changes: 13 additions & 4 deletions resources/ui/item.ui
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,21 @@
<child>
<object class="GtkOverlay">
<child>
<object class="GtkPicture" id="backdrop">
<object class="GtkRevealer" id="backrevealer">
<property name="transition-type">crossfade</property>
<property name="transition-duration">700</property>
<property name="halign">fill</property>
<property name="valign">fill</property>
<property name="content-fit">cover</property>
<property name="hexpand">true</property>
<property name="height-request">700</property>
<property name="reveal-child">False</property>
<child>
<object class="GtkPicture" id="backdrop">
<property name="halign">fill</property>
<property name="valign">fill</property>
<property name="content-fit">cover</property>
<property name="hexpand">true</property>
<property name="height-request">700</property>
</object>
</child>
</object>
</child>
<child type="overlay">
Expand Down
19 changes: 13 additions & 6 deletions resources/ui/movie.ui
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,21 @@
<child>
<object class="GtkOverlay">
<child>
<object class="GtkPicture" id="backdrop">
<object class="GtkRevealer" id="backrevealer">
<property name="transition-type">crossfade</property>
<property name="transition-duration">700</property>
<property name="halign">fill</property>
<property name="valign">fill</property>
<property name="content-fit">cover</property>
<property name="hexpand">true</property>
<property name="vexpand">true</property>
<property name="opacity">0.7</property>
<property name="height-request">700</property>
<property name="reveal-child">False</property>
<child>
<object class="GtkPicture" id="backdrop">
<property name="halign">fill</property>
<property name="valign">fill</property>
<property name="content-fit">cover</property>
<property name="hexpand">true</property>
<property name="height-request">700</property>
</object>
</child>
</object>
</child>
<child type="overlay">
Expand Down
2 changes: 1 addition & 1 deletion src/ui/mpv/mod.rs
Original file line number Diff line number Diff line change
@@ -1 +1 @@
pub mod event;
pub mod event;
Empty file added src/ui/mpv/window.rs
Empty file.
25 changes: 17 additions & 8 deletions src/ui/new_dropsel.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ use gtk::prelude::*;

pub fn newmediadropsel(
playbackinfo: network::Media,
info: SeriesInfo,
info: &SeriesInfo,
namedropdown: gtk::DropDown,
subdropdown: gtk::DropDown,
playbutton: gtk::Button,
Expand All @@ -37,7 +37,6 @@ pub fn newmediadropsel(
subdropdown.set_model(Some(&sublist));
namedropdown.set_factory(Some(&factory()));
subdropdown.set_factory(Some(&factory()));
let playback_info = playbackinfo.clone();

namedropdown.connect_selected_item_notify(move |dropdown| {
let selected = dropdown.selected_item();
Expand Down Expand Up @@ -73,7 +72,16 @@ pub fn newmediadropsel(
}
}
}
playbutton.connect_clicked(move |button| {
}

pub fn bind_button(
playbackinfo: network::Media,
info: SeriesInfo,
namedropdown: gtk::DropDown,
subdropdown: gtk::DropDown,
playbutton: gtk::Button,
) -> glib::SignalHandlerId {
let handlerid = playbutton.connect_clicked(move |button| {
button.set_label("Playing...");
button.set_sensitive(false);
let nameselected = namedropdown.selected_item();
Expand All @@ -83,14 +91,14 @@ pub fn newmediadropsel(
let nameselected = nameselected.string();
let subselected = subdropdown.selected_item();
if subselected.is_none() {
for media in playback_info.media_sources.clone() {
for media in playbackinfo.media_sources.clone() {
if media.name == nameselected {
let directurl = media.direct_stream_url.clone();
if let Some(userdata) = &info.user_data {
let back = Back {
id: info.id.clone(),
mediasourceid: media.id.clone(),
playsessionid: playback_info.play_session_id.clone(),
playsessionid: playbackinfo.play_session_id.clone(),
tick: userdata.playback_position_ticks.unwrap_or(0),
};
play_event(
Expand All @@ -109,7 +117,7 @@ pub fn newmediadropsel(
}
let subselected = subselected.and_downcast_ref::<gtk::StringObject>().unwrap();
let subselected = subselected.string();
for media in playback_info.media_sources.clone() {
for media in playbackinfo.media_sources.clone() {
if media.name == nameselected {
for mediastream in media.media_streams {
if mediastream.stream_type == "Subtitle" {
Expand All @@ -122,7 +130,7 @@ pub fn newmediadropsel(
let back = Back {
id: info.id.clone(),
mediasourceid: media.id.clone(),
playsessionid: playback_info
playsessionid: playbackinfo
.play_session_id
.clone(),
tick: userdata.playback_position_ticks.unwrap_or(0),
Expand Down Expand Up @@ -154,7 +162,7 @@ pub fn newmediadropsel(
let back = Back {
id: info.id.clone(),
mediasourceid: media.id.clone(),
playsessionid: playback_info.play_session_id.clone(),
playsessionid: playbackinfo.play_session_id.clone(),
tick: userdata.playback_position_ticks.unwrap_or(0),
};
play_event(
Expand All @@ -174,6 +182,7 @@ pub fn newmediadropsel(
}
}
});
handlerid
}

pub fn play_event(
Expand Down
28 changes: 18 additions & 10 deletions src/ui/widgets/item.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ use std::collections::{HashMap, HashSet};
use std::env;

use crate::ui::network::{self, runtime, similar, SeriesInfo};
use crate::ui::new_dropsel::bind_button;

use super::actor::ActorPage;
use super::fix::fix;
Expand All @@ -19,7 +20,7 @@ mod imp {
use glib::subclass::InitializingObject;
use gtk::prelude::*;
use gtk::{glib, CompositeTemplate};
use std::cell::OnceCell;
use std::cell::{OnceCell, RefCell};

// Object holding the state
#[derive(CompositeTemplate, Default, glib::Properties)]
Expand Down Expand Up @@ -102,10 +103,13 @@ mod imp {
pub namedropdown: TemplateChild<gtk::DropDown>,
#[template_child]
pub subdropdown: TemplateChild<gtk::DropDown>,
#[template_child]
pub backrevealer: TemplateChild<gtk::Revealer>,
pub selection: gtk::SingleSelection,
pub seasonselection: gtk::SingleSelection,
pub actorselection: gtk::SingleSelection,
pub recommendselection: gtk::SingleSelection,
pub playbuttonhandlerid: RefCell<Option<glib::SignalHandlerId>>,
}

// The central trait for subclassing a GObject
Expand Down Expand Up @@ -195,6 +199,11 @@ impl ItemPage {
.build()
}

pub fn bind_playbutton(&self, playbackinfo: network::Media, info: network::SeriesInfo) {
let imp = self.imp();
bind_button(playbackinfo, info, imp.namedropdown.get(), imp.subdropdown.get(), imp.playbutton.get());
}

pub fn setup_background(&self) {
let id = self.id();
let id1 = self.id();
Expand All @@ -212,6 +221,7 @@ impl ItemPage {
if pathbuf.exists() {
backdrop.set_file(Some(&gtk::gio::File::for_path(&pathbuf)));
glib::spawn_future_local(glib::clone!(@weak self as obj =>async move {
obj.imp().backrevealer.set_reveal_child(true);
let window = obj.root().and_downcast::<super::window::Window>().unwrap();
window.set_rootpic(gtk::gio::File::for_path(&pathbuf));
}));
Expand Down Expand Up @@ -239,6 +249,7 @@ impl ItemPage {
if pathbuf.exists() {
let file = gtk::gio::File::for_path(&pathbuf);
backdrop.set_file(Some(&file));
obj.imp().backrevealer.set_reveal_child(true);
let window = obj.root().and_downcast::<super::window::Window>().unwrap();
window.set_rootpic(file);
}
Expand Down Expand Up @@ -502,16 +513,13 @@ impl ItemPage {
obj.imp().line1.set_text(&format!("S{}:E{} - {}",info.parent_index_number, info.index_number, info.name));
obj.imp().line1spinner.set_visible(false);
let info = info.clone();
crate::ui::new_dropsel::newmediadropsel(playback.clone(), info, obj.imp().namedropdown.get(), obj.imp().subdropdown.get(), obj.imp().playbutton.get());
if let Some(handlerid) = obj.imp().playbuttonhandlerid.borrow_mut().take() {
obj.imp().playbutton.disconnect(handlerid);
}
crate::ui::new_dropsel::newmediadropsel(playback.clone(), &info, obj.imp().namedropdown.get(), obj.imp().subdropdown.get(), obj.imp().playbutton.get());
let handlerid = bind_button(playback.clone(), info, obj.imp().namedropdown.get(), obj.imp().subdropdown.get(), obj.imp().playbutton.get());
obj.imp().playbuttonhandlerid.replace(Some(handlerid));
obj.imp().playbutton.set_sensitive(true);
//let dropdown = crate::ui::new_dropsel::newmediadropsel(playback.clone(), info);
//dropdownspinner.set_visible(false);
//if let Some(widget) = osdbox.last_child() {
// if widget.is::<gtk::Box>() {
// osdbox.remove(&widget);
// }
//}
//osdbox.append(&dropdown);
}
}));

Expand Down
4 changes: 4 additions & 0 deletions src/ui/widgets/movie.rs
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,8 @@ mod imp {
pub namedropdown: TemplateChild<gtk::DropDown>,
#[template_child]
pub subdropdown: TemplateChild<gtk::DropDown>,
#[template_child]
pub backrevealer: TemplateChild<gtk::Revealer>,
pub selection: gtk::SingleSelection,
pub actorselection: gtk::SingleSelection,
pub recommendselection: gtk::SingleSelection,
Expand Down Expand Up @@ -182,6 +184,7 @@ impl MoviePage {
if pathbuf.exists() {
backdrop.set_file(Some(&gtk::gio::File::for_path(&pathbuf)));
glib::spawn_future_local(glib::clone!(@weak self as obj =>async move {
obj.imp().backrevealer.set_reveal_child(true);
let window = obj.root().and_downcast::<super::window::Window>().unwrap();
window.set_rootpic(gtk::gio::File::for_path(&pathbuf));
}));
Expand All @@ -207,6 +210,7 @@ impl MoviePage {
if pathbuf.exists() {
let file = gtk::gio::File::for_path(&pathbuf);
backdrop.set_file(Some(&file));
obj.imp().backrevealer.set_reveal_child(true);
let window = obj.root().and_downcast::<super::window::Window>().unwrap();
window.set_rootpic(file);
}
Expand Down

0 comments on commit 3aa540e

Please sign in to comment.