Tweak watched status

This commit is contained in:
Jan Hamal Dvořák 2025-03-09 10:52:34 +01:00
parent 6d09b7d1e7
commit 2472f80111
2 changed files with 29 additions and 19 deletions

View file

@ -153,6 +153,10 @@ class MainWindow(Gtk.ApplicationWindow):
return
position = file_item.load_attribute("position", 0)
duration = file_item.load_attribute("duration", 1) or 1
if (position / duration) >= 0.99:
position = 0
# Start playing the video
full_path = os.path.abspath(file_item.full_path)
@ -235,26 +239,27 @@ class MainWindow(Gtk.ApplicationWindow):
label = cast(Gtk.Label, box.get_last_child())
item = cast(FileItem, list_item.get_item())
# Set appropriate icon
icon.set_opacity(1.0)
if item.file_type == FileType.DIRECTORY:
icon.set_from_icon_name("folder-symbolic")
icon.set_css_classes(["file-icon"])
else:
position = item.load_attribute("position", 0)
duration = item.load_attribute("duration", 1) or 1
if position == 0:
icon.set_from_icon_name("checkbox-symbolic")
icon.set_css_classes(["file-icon", "unwatched"])
elif (position / duration) >= 0.9:
icon.set_from_icon_name("object-select-symbolic")
icon.set_css_classes(["file-icon", "completed"])
def update_icon(*args: object) -> None:
if item.file_type == FileType.DIRECTORY:
icon.set_from_icon_name("folder-symbolic")
icon.set_css_classes(["file-icon"])
else:
icon.set_from_icon_name("media-playback-pause-symbolic")
icon.set_css_classes(["file-icon", "in-progress"])
position = item.load_attribute("position", 0)
duration = item.load_attribute("duration", 1) or 1
if position == 0:
icon.set_from_icon_name("media-playback-start-symbolic")
icon.set_css_classes(["file-icon", "unwatched"])
elif (position / duration) >= 0.99:
icon.set_from_icon_name("object-select-symbolic")
icon.set_css_classes(["file-icon", "completed"])
else:
icon.set_from_icon_name("media-playback-pause-symbolic")
icon.set_css_classes(["file-icon", "in-progress"])
label.set_text(item.name)
item.connect("notify::attrs-changed", update_icon)
update_icon()
def _on_selection_changed(
self,
@ -340,8 +345,8 @@ class MainWindow(Gtk.ApplicationWindow):
position = file_item.load_attribute("position", 0)
duration = file_item.load_attribute("duration", 1) or 1
# If position exists and is >= 90% through, clear it
if position > 0 and (position / duration) >= 0.9:
# If position exists and is >= 99% through, clear it
if position > 0 and (position / duration) >= 0.99:
file_item.save_attribute("position", None)
else:
# Otherwise mark as complete

View file

@ -21,8 +21,11 @@ class FileItem(GObject.Object):
__gtype_name__ = "FileItem"
attrs_changed = GObject.Property(type=int, default=0)
def __init__(self, name: str, file_type: FileType, full_path: str):
super().__init__()
self.attrs_changed = 0
self.name = name
self.file_type = file_type
self.full_path = full_path
@ -62,3 +65,5 @@ class FileItem(GObject.Object):
os.setxattr(self.full_path, f"user.lazy_player.{name}", str(value).encode("utf8"))
except OSError:
pass
self.notify("attrs-changed")