From 64d69b910177675b3cbce398a18b605d14928be0 Mon Sep 17 00:00:00 2001
From: Vladimir Vaskov
Date: Wed, 10 Jul 2024 12:49:09 +0300
Subject: [PATCH 001/167] fix: fix categories
---
data/io.github.Rirusha.Cassette-Devel.desktop.in | 2 +-
data/io.github.Rirusha.Cassette.desktop.in | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/data/io.github.Rirusha.Cassette-Devel.desktop.in b/data/io.github.Rirusha.Cassette-Devel.desktop.in
index 2f314b9..9317dc4 100644
--- a/data/io.github.Rirusha.Cassette-Devel.desktop.in
+++ b/data/io.github.Rirusha.Cassette-Devel.desktop.in
@@ -8,7 +8,7 @@ Exec=cassette %U
Icon=io.github.Rirusha.Cassette-Devel
Terminal=false
Type=Application
-Categories=Audio
+Categories=GNOME;GTK;Music;Audio;AudioVideo;
StartupNotify=true
MimeType=x-scheme-handler/yandexmusic;
X-GNOME-UsesNotifications=true
\ No newline at end of file
diff --git a/data/io.github.Rirusha.Cassette.desktop.in b/data/io.github.Rirusha.Cassette.desktop.in
index d9c77b1..51f931e 100644
--- a/data/io.github.Rirusha.Cassette.desktop.in
+++ b/data/io.github.Rirusha.Cassette.desktop.in
@@ -8,7 +8,7 @@ Exec=cassette %U
Icon=io.github.Rirusha.Cassette
Terminal=false
Type=Application
-Categories=Audio
+Categories=GNOME;GTK;Music;Audio;AudioVideo;
StartupNotify=true
MimeType=x-scheme-handler/yandexmusic;
X-GNOME-UsesNotifications=true
\ No newline at end of file
From 3f29ea880ae4a7442a6e69efaffd9b83eb98fbf8 Mon Sep 17 00:00:00 2001
From: Vladimir Vaskov
Date: Wed, 10 Jul 2024 22:45:03 +0300
Subject: [PATCH 002/167] fix: change action group name
source: https://t.me/CassetteGNOME_Discussion/17845
---
src/widgets/buttons/menu/abstract-menu-button.vala | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/widgets/buttons/menu/abstract-menu-button.vala b/src/widgets/buttons/menu/abstract-menu-button.vala
index 387331f..e1b723e 100644
--- a/src/widgets/buttons/menu/abstract-menu-button.vala
+++ b/src/widgets/buttons/menu/abstract-menu-button.vala
@@ -218,7 +218,7 @@ public abstract class Cassette.CustomMenuButton : ShrinkableBin {
content_height = 294
};
- dialog.insert_action_group ("track", actions);
+ dialog.insert_action_group ("actions", actions);
real_button.active = false;
From 6c12b87aa6706609882325081686bd9ab95cba42 Mon Sep 17 00:00:00 2001
From: AveryanAlex
Date: Thu, 11 Jul 2024 21:54:03 +0300
Subject: [PATCH 003/167] feat: add devel nix package and devshell
---
.envrc | 1 +
.gitignore | 4 ++++
README.md | 5 ++++
flake.lock | 61 +++++++++++++++++++++++++++++++++++++++++++++++
flake.nix | 69 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
5 files changed, 140 insertions(+)
create mode 100644 .envrc
create mode 100644 flake.lock
create mode 100644 flake.nix
diff --git a/.envrc b/.envrc
new file mode 100644
index 0000000..3550a30
--- /dev/null
+++ b/.envrc
@@ -0,0 +1 @@
+use flake
diff --git a/.gitignore b/.gitignore
index 09de341..150df2a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,10 @@
# build dir
builddir*
+# nix
+result
+.direnv
+
# Workspaces
*.code-workspace
diff --git a/README.md b/README.md
index 9739e5d..82b691f 100644
--- a/README.md
+++ b/README.md
@@ -123,6 +123,11 @@ yay -S cassette-git
pamac install cassette-git
```
+### NixOS
+```shell
+nix run github:Rirusha/Cassette
+```
+
## Установка в Windows
Способы установки приложения в Windows описаны [здесь](docs/INSTALLATION_ON_WINDOWS.md).
diff --git a/flake.lock b/flake.lock
new file mode 100644
index 0000000..9eadad2
--- /dev/null
+++ b/flake.lock
@@ -0,0 +1,61 @@
+{
+ "nodes": {
+ "flake-utils": {
+ "inputs": {
+ "systems": "systems"
+ },
+ "locked": {
+ "lastModified": 1710146030,
+ "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "nixpkgs": {
+ "locked": {
+ "lastModified": 1720542800,
+ "narHash": "sha256-ZgnNHuKV6h2+fQ5LuqnUaqZey1Lqqt5dTUAiAnqH0QQ=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "feb2849fdeb70028c70d73b848214b00d324a497",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "root": {
+ "inputs": {
+ "flake-utils": "flake-utils",
+ "nixpkgs": "nixpkgs"
+ }
+ },
+ "systems": {
+ "locked": {
+ "lastModified": 1681028828,
+ "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
+ "owner": "nix-systems",
+ "repo": "default",
+ "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-systems",
+ "repo": "default",
+ "type": "github"
+ }
+ }
+ },
+ "root": "root",
+ "version": 7
+}
diff --git a/flake.nix b/flake.nix
new file mode 100644
index 0000000..ff1f084
--- /dev/null
+++ b/flake.nix
@@ -0,0 +1,69 @@
+{
+ description = "GTK4/Adwaita application that allows you to use Yandex Music service on Linux operating systems";
+
+ inputs = {
+ nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
+ flake-utils.url = "github:numtide/flake-utils";
+ };
+
+ outputs = {
+ self,
+ nixpkgs,
+ flake-utils,
+ ...
+ }:
+ flake-utils.lib.eachDefaultSystem
+ (
+ system: let
+ pkgs = import nixpkgs {inherit system;};
+
+ nativeBuildInputs = with pkgs; [
+ blueprint-compiler
+ desktop-file-utils
+ meson
+ ninja
+ pkg-config
+ vala
+ ];
+
+ buildInputs = with pkgs; [
+ glib-networking
+ gst_all_1.gst-plugins-bad
+ gst_all_1.gst-plugins-base
+ gst_all_1.gst-plugins-good
+ gst_all_1.gstreamer
+ gtk4
+ json-glib
+ libadwaita
+ libgee
+ libsoup_3
+ libxml2
+ sqlite
+ webkitgtk_6_0
+ ];
+ in {
+ packages.default = pkgs.stdenv.mkDerivation {
+ name = "cassette";
+ src = self;
+
+ mesonFlags = [
+ "-Dprofile=development"
+ ];
+
+ nativeBuildInputs = with pkgs;
+ [
+ wrapGAppsHook4
+ git
+ ]
+ ++ nativeBuildInputs;
+
+ inherit buildInputs;
+
+ strictDeps = true;
+ };
+ devShells.default = pkgs.mkShell {
+ packages = with pkgs; [alejandra] ++ nativeBuildInputs ++ buildInputs;
+ };
+ }
+ );
+}
From 27858157a0db31dc3c6bc2f64d224a377b6bf114 Mon Sep 17 00:00:00 2001
From: Vladimir Vaskov
Date: Tue, 23 Jul 2024 22:58:35 +0300
Subject: [PATCH 004/167] fix: actualize milestones amount and description
---
README.md | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/README.md b/README.md
index 82b691f..0530bef 100644
--- a/README.md
+++ b/README.md
@@ -36,10 +36,7 @@
## План основных версий
[](https://github.com/Rirusha/Cassette/milestone/2) \
-[](https://github.com/Rirusha/Cassette/milestone/5) \
-[](https://github.com/Rirusha/Cassette/milestone/4) \
-[](https://github.com/Rirusha/Cassette/milestone/6) \
-[](https://github.com/Rirusha/Cassette/milestone/7)
+[](https://github.com/Rirusha/Cassette/milestone/8)
Все запланированные фичи можете [посмотреть в бэклоге](https://github.com/users/Rirusha/projects/2)
From b1a54a37f9c3e8471037f45599237989992f8862 Mon Sep 17 00:00:00 2001
From: Vladimir Vaskov
Date: Tue, 23 Jul 2024 23:02:15 +0300
Subject: [PATCH 005/167] docs: fix title
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 0530bef..6615b2c 100644
--- a/README.md
+++ b/README.md
@@ -34,7 +34,7 @@
-## План основных версий
+## Ход текущей разработки
[](https://github.com/Rirusha/Cassette/milestone/2) \
[](https://github.com/Rirusha/Cassette/milestone/8)
From 4ad3d9db120ba2dcd711e2e28a114f23dd5193ba Mon Sep 17 00:00:00 2001
From: Vladimir Vaskov
Date: Tue, 23 Jul 2024 23:04:46 +0300
Subject: [PATCH 006/167] about: update sponsors
---
src/about.vala | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/src/about.vala b/src/about.vala
index e95a420..7d22eb5 100644
--- a/src/about.vala
+++ b/src/about.vala
@@ -95,6 +95,11 @@ namespace Cassette {
"Vasily Biryukov",
"werlock",
"Zellrus",
+ "Alex Gluck",
+ "AveryanAlex",
+ "Dmitry M.",
+ "Shakhrutdin Z.",
+ "Ivan A.",
});
return about;
From d7457302ce90149cdeed9fba9b90de020bad9e61 Mon Sep 17 00:00:00 2001
From: Vladimir Vaskov
Date: Tue, 23 Jul 2024 23:13:12 +0300
Subject: [PATCH 007/167] fix: sort alphabetically
---
src/about.vala | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/src/about.vala b/src/about.vala
index 7d22eb5..46ce47f 100644
--- a/src/about.vala
+++ b/src/about.vala
@@ -69,15 +69,20 @@ namespace Cassette {
about.add_link (_("Financial support (Tinkoff)"), TINKOFF_SUPPORT_LINK);
about.add_link (_("Financial support (Boosty)"), BOOSTY_SUPPORT_LINK);
+ // Please keep alphabetical
about.add_acknowledgement_section (_("Sponsors"), {
+ "Alex Gluck",
"Amper Shiz",
+ "AveryanAlex",
"belovmv",
"dant4ick",
+ "Dmitry M.",
"Do6pblu_Jyk",
"eugene_t",
"Fiersik",
"Fissium",
"gen1s",
+ "Ivan A.",
"IQQator",
"katze_942",
"khaustovdn",
@@ -90,16 +95,12 @@ namespace Cassette {
"Roman Aysin",
"Semen Fomchenkov",
"Sergey P.",
+ "Shakhrutdin Z.",
"Spp595",
"Toxblh",
"Vasily Biryukov",
"werlock",
"Zellrus",
- "Alex Gluck",
- "AveryanAlex",
- "Dmitry M.",
- "Shakhrutdin Z.",
- "Ivan A.",
});
return about;
From 8f571b667d44e0530067c0a230dfa949783cfe79 Mon Sep 17 00:00:00 2001
From: Vladimir Vaskov
Date: Thu, 25 Jul 2024 19:09:25 +0300
Subject: [PATCH 008/167] fix: centerize track name
closes: #125
---
src/widgets/track-info-panel.vala | 15 +++++++--------
1 file changed, 7 insertions(+), 8 deletions(-)
diff --git a/src/widgets/track-info-panel.vala b/src/widgets/track-info-panel.vala
index a7d234a..68eded9 100644
--- a/src/widgets/track-info-panel.vala
+++ b/src/widgets/track-info-panel.vala
@@ -80,6 +80,8 @@ public class Cassette.TrackInfoPanel : Adw.Bin, Gtk.Orientable {
play_mark_track.init_content (value.id);
}
+
+ update_labels_visibility ();
}
}
@@ -211,19 +213,16 @@ public class Cassette.TrackInfoPanel : Adw.Bin, Gtk.Orientable {
}
construct {
- track_version_label.notify["label"].connect (() => {
- track_version_label.visible = track_version_label.label != "";
- });
-
- track_authors_label.notify["label"].connect (() => {
- track_authors_label.visible = track_authors_label.label != "";
- });
-
notify["position"].connect (() => {
position_label.label = position.to_string ();
});
}
+ void update_labels_visibility () {
+ track_version_label.visible = track_version_label.label != "";
+ track_authors_label.visible = track_authors_label.label != "";
+ }
+
public PlayMarkTrack get_play_mark_track () {
return play_mark_track;
}
From 74e83a507f23822c0e87a4bde2eede1cf8c318f3 Mon Sep 17 00:00:00 2001
From: Vladimir Vaskov
Date: Sat, 27 Jul 2024 21:38:06 +0300
Subject: [PATCH 009/167] fix: fix redirect redirect url
---
src/widgets/begin/begin-view.vala | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/widgets/begin/begin-view.vala b/src/widgets/begin/begin-view.vala
index 3b29bfb..8b52d85 100644
--- a/src/widgets/begin/begin-view.vala
+++ b/src/widgets/begin/begin-view.vala
@@ -72,7 +72,7 @@ namespace Cassette {
insert_action_group ("auth", action_group);
webview.load_changed.connect ((event) => {
- if (("https://music.yandex.ru/" in webview.uri) && event != LoadEvent.STARTED) {
+ if (("https://music.yandex." in webview.uri) && event != LoadEvent.STARTED) {
online_complete ();
}
@@ -108,7 +108,7 @@ namespace Cassette {
start_loading ();
webview.load_uri (
- "https://oauth.yandex.ru/authorize?response_type=token&client_id=23cabbbdc6cd418abb4b39c32c41195d&https://music.yandex.ru" // vala-lint=line-length
+ "https://oauth.yandex.ru/authorize?response_type=token&client_id=23cabbbdc6cd418abb4b39c32c41195d" // vala-lint=line-length
);
}
From 5c21a4caf781d6a64eb2d39e81984be0a1d0c17d Mon Sep 17 00:00:00 2001
From: Vladimir Vaskov
Date: Sun, 28 Jul 2024 17:42:47 +0300
Subject: [PATCH 010/167] docs: remove comment
---
po/meson.build | 1 -
1 file changed, 1 deletion(-)
diff --git a/po/meson.build b/po/meson.build
index 2f24eda..e9b77d7 100644
--- a/po/meson.build
+++ b/po/meson.build
@@ -1,2 +1 @@
-# add_project_arguments('-DGETTEXT_PACKAGE="cassette"', language:'c')
i18n.gettext(meson.project_name(), preset: 'glib')
From da69278875a1b7ae7430fe798ec927e60d4d7750 Mon Sep 17 00:00:00 2001
From: Vladimir Vaskov
Date: Sun, 28 Jul 2024 17:43:16 +0300
Subject: [PATCH 011/167] build: replace 'profile' option with 'is_devel' flag
---
.../nightly/io.github.Rirusha.Cassette-Devel.json | 2 +-
meson.build | 6 ++----
meson_options.txt | 11 +++--------
src/application.vala | 2 +-
src/config.vapi | 2 +-
5 files changed, 8 insertions(+), 15 deletions(-)
diff --git a/build-aux/flatpak/nightly/io.github.Rirusha.Cassette-Devel.json b/build-aux/flatpak/nightly/io.github.Rirusha.Cassette-Devel.json
index 0b296b2..d05d266 100644
--- a/build-aux/flatpak/nightly/io.github.Rirusha.Cassette-Devel.json
+++ b/build-aux/flatpak/nightly/io.github.Rirusha.Cassette-Devel.json
@@ -49,7 +49,7 @@
"name" : "cassette",
"builddir" : true,
"buildsystem" : "meson",
- "config-opts": [ "-Dprofile=development" ],
+ "config-opts": [ "-Dis_devel=true" ],
"sources" : [
{
"type" : "dir",
diff --git a/meson.build b/meson.build
index 5521206..f3a712e 100644
--- a/meson.build
+++ b/meson.build
@@ -24,19 +24,17 @@ gio = dependency('gio-2.0', version: '>= 2.72')
app_id = 'io.github.Rirusha.Cassette'
-if get_option('profile') == 'development'
+if get_option('is_devel')
find_program('git', required: true)
name_postfix = ' (Devel)'
app_id_dyn = '@0@-Devel'.format(app_id)
app_identity_dyn = 'Cassette (Devel)'
- profile = 'Devel'
vcs_tag = run_command('git', 'rev-parse', '--short', 'HEAD').stdout().strip()
version_suffix = '-dev.@0@'.format (vcs_tag)
else
name_postfix = ''
app_id_dyn = app_id
app_identity_dyn = 'Cassette'
- profile = ''
version_suffix = ''
endif
@@ -46,7 +44,7 @@ conf.set_quoted('APP_NAME', 'Cassette@0@'.format (name_postfix))
conf.set_quoted('APP_ID_DYN', app_id_dyn)
conf.set_quoted('APP_IDENTITY_DYN', app_identity_dyn)
conf.set_quoted('G_LOG_DOMAIN', app_id)
-conf.set_quoted('PROFILE', profile)
+conf.set10('IS_DEVEL', get_option('is_devel'))
conf.set_quoted('VERSION', meson.project_version() + version_suffix)
conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
conf.set_quoted('DATADIR', join_paths(get_option('prefix'), get_option('datadir')))
diff --git a/meson_options.txt b/meson_options.txt
index cfad4f7..b02baa5 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -1,10 +1,5 @@
option(
- 'profile',
- type: 'combo',
- choices: [
- 'default',
- 'development',
- ],
- value: 'default',
- description: 'The build profile for app. One of "default" or "development".'
+ 'is_devel',
+ type: 'boolean',
+ value: false
)
diff --git a/src/application.vala b/src/application.vala
index 6776346..6cbdd24 100644
--- a/src/application.vala
+++ b/src/application.vala
@@ -90,7 +90,7 @@ namespace Cassette {
public bool is_devel {
get {
- return Config.PROFILE == "Devel";
+ return Config.IS_DEVEL;
}
}
diff --git a/src/config.vapi b/src/config.vapi
index a78685d..15cf070 100644
--- a/src/config.vapi
+++ b/src/config.vapi
@@ -4,7 +4,7 @@ namespace Config {
public const string APP_ID_DYN;
public const string APP_IDENTITY_DYN;
public const string VERSION;
- public const string PROFILE;
+ public const bool IS_DEVEL;
public const string GETTEXT_PACKAGE;
public const string GNOMELOCALEDIR;
public const string DATADIR;
From 19477c9bdac78db72f22014e3b99ecf51f5d24ea Mon Sep 17 00:00:00 2001
From: Vladimir Vaskov
Date: Sun, 28 Jul 2024 17:51:07 +0300
Subject: [PATCH 012/167] build: minor meson.build changes
---
meson.build | 21 ++++++++++-----------
src/client/player/mpris.vala | 2 +-
2 files changed, 11 insertions(+), 12 deletions(-)
diff --git a/meson.build b/meson.build
index f3a712e..22f0438 100644
--- a/meson.build
+++ b/meson.build
@@ -24,28 +24,27 @@ gio = dependency('gio-2.0', version: '>= 2.72')
app_id = 'io.github.Rirusha.Cassette'
+name_suffix = ''
+version_suffix = ''
+
if get_option('is_devel')
+ name_suffix = ' (Devel)'
+ app_id_suffix = '-Devel'
+
find_program('git', required: true)
- name_postfix = ' (Devel)'
- app_id_dyn = '@0@-Devel'.format(app_id)
- app_identity_dyn = 'Cassette (Devel)'
vcs_tag = run_command('git', 'rev-parse', '--short', 'HEAD').stdout().strip()
version_suffix = '-dev.@0@'.format (vcs_tag)
-else
- name_postfix = ''
- app_id_dyn = app_id
- app_identity_dyn = 'Cassette'
- version_suffix = ''
endif
+app_id_dyn = '@0@@1@'.format (app_id, app_id_suffix)
+
conf = configuration_data()
conf.set_quoted('APP_ID', app_id)
-conf.set_quoted('APP_NAME', 'Cassette@0@'.format (name_postfix))
conf.set_quoted('APP_ID_DYN', app_id_dyn)
-conf.set_quoted('APP_IDENTITY_DYN', app_identity_dyn)
+conf.set_quoted('APP_NAME', 'Cassette@0@'.format (name_suffix))
conf.set_quoted('G_LOG_DOMAIN', app_id)
conf.set10('IS_DEVEL', get_option('is_devel'))
-conf.set_quoted('VERSION', meson.project_version() + version_suffix)
+conf.set_quoted('VERSION', '@0@@1@'.format (meson.project_version(), version_suffix))
conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
conf.set_quoted('DATADIR', join_paths(get_option('prefix'), get_option('datadir')))
conf.set_quoted('GNOMELOCALEDIR', join_paths(get_option('prefix'), get_option('localedir')))
diff --git a/src/client/player/mpris.vala b/src/client/player/mpris.vala
index 4ff92f7..71e2659 100644
--- a/src/client/player/mpris.vala
+++ b/src/client/player/mpris.vala
@@ -48,7 +48,7 @@ public class Mpris : Object {
public bool can_quit { get; set; default = true; }
public bool can_raise { get; set; default = true; }
public string desktop_entry { get; set; default = Config.APP_ID_DYN; }
- public string identity { get; set; default = Config.APP_IDENTITY_DYN; }
+ public string identity { get; set; default = Config.APP_NAME; }
public signal void quit_triggered ();
public signal void raise_triggered ();
From 3b15be4b38787c31a2da6ee67b1b6eff9fcd5ab0 Mon Sep 17 00:00:00 2001
From: Vladimir Vaskov
Date: Sun, 28 Jul 2024 17:55:35 +0300
Subject: [PATCH 013/167] flake: replace option profile with is_devel
---
flake.nix | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/flake.nix b/flake.nix
index ff1f084..ccda263 100644
--- a/flake.nix
+++ b/flake.nix
@@ -47,7 +47,7 @@
src = self;
mesonFlags = [
- "-Dprofile=development"
+ "-Dis_devel=true"
];
nativeBuildInputs = with pkgs;
From 1cfefc999d9b5a0dec0b0559768ba99fba20ff35 Mon Sep 17 00:00:00 2001
From: Vladimir Vaskov
Date: Sun, 28 Jul 2024 20:56:52 +0300
Subject: [PATCH 014/167] refactor: remove old const
---
src/config.vapi | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/config.vapi b/src/config.vapi
index 15cf070..aad4d30 100644
--- a/src/config.vapi
+++ b/src/config.vapi
@@ -2,11 +2,11 @@
namespace Config {
public const string APP_ID;
public const string APP_ID_DYN;
- public const string APP_IDENTITY_DYN;
+ public const string APP_NAME;
public const string VERSION;
public const bool IS_DEVEL;
+ public const string G_LOG_DOMAIN;
public const string GETTEXT_PACKAGE;
public const string GNOMELOCALEDIR;
public const string DATADIR;
- public const string APP_NAME;
}
From 53778fec5755f4df4a5ffc8d08f496807eb5e6fb Mon Sep 17 00:00:00 2001
From: Vladimir Vaskov
Date: Sun, 28 Jul 2024 20:57:13 +0300
Subject: [PATCH 015/167] build: change literal name to meson method
---
src/meson.build | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/meson.build b/src/meson.build
index d0efcc5..a0defcb 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -139,7 +139,7 @@ cassette_c_args += [
# END GCC14
executable(
- 'cassette',
+ meson.project_name(),
cassette_sources,
include_directories: config_h_dir,
vala_args: cassette_vala_args,
From b07742a674b7893e67c2d40fba150a50a5013f70 Mon Sep 17 00:00:00 2001
From: Vladimir Vaskov
Date: Sun, 11 Aug 2024 17:11:18 +0300
Subject: [PATCH 016/167] feat: use Adw.ButtonRow instead of pill buttons
---
data/style.css | 2 +-
data/ui/account-info-dialog.blp | 40 +++++++-----------
data/ui/no-plus-dialog.blp | 75 +++++++++++++++++++++------------
src/application.vala | 10 +++++
4 files changed, 73 insertions(+), 54 deletions(-)
diff --git a/data/style.css b/data/style.css
index d598243..3b995c3 100644
--- a/data/style.css
+++ b/data/style.css
@@ -65,7 +65,7 @@ frame {
background-color: rgba(0, 0, 0, 0);
}
-.plus-background {
+.plus-button {
color: white;
background-image: linear-gradient(90deg,#ff5c4d,#eb469f 30%,#8341ef 75%,#3f68f9);
}
diff --git a/data/ui/account-info-dialog.blp b/data/ui/account-info-dialog.blp
index b527b87..529a8cb 100644
--- a/data/ui/account-info-dialog.blp
+++ b/data/ui/account-info-dialog.blp
@@ -21,10 +21,10 @@ template $CassetteAccountInfoDialog: Adw.Dialog {
margin-bottom: 12;
margin-start: 12;
margin-end: 12;
- maximum-size: 450;
+ maximum-size: 360;
Box {
- spacing: 24;
+ spacing: 12;
orientation: vertical;
Adw.Avatar avatar {}
@@ -39,45 +39,35 @@ template $CassetteAccountInfoDialog: Adw.Dialog {
wrap: true;
}
- Box {
- orientation: vertical;
- halign: center;
- spacing: 8;
+ ListBox {
+ styles [
+ "boxed-list-separate"
+ ]
- Button user_button {
- styles [
- "pill"
- ]
+ margin-top: 12;
+ selection-mode: none;
+ Adw.ButtonRow user_button {
action-name: "app.open-account";
- label: _("Open in browser");
- hexpand: true;
- can-shrink: true;
+ title: _("Open in browser");
}
- Button plus_button {
+ Adw.ButtonRow plus_button {
styles [
- "pill",
- "plus-background"
+ "plus-button"
]
action-name: "app.open-plus";
- label: _("Plus");
- hexpand: true;
- can-shrink: true;
+ title: _("Plus");
}
- Button logout_button {
+ Adw.ButtonRow logout_button {
styles [
- "pill",
"destructive-action"
]
- margin-top: 24;
action-name: "app.log-out";
- label: _("Log out");
- hexpand: true;
- can-shrink: true;
+ title: _("Log out");
}
}
}
diff --git a/data/ui/no-plus-dialog.blp b/data/ui/no-plus-dialog.blp
index eede007..5d06bb6 100644
--- a/data/ui/no-plus-dialog.blp
+++ b/data/ui/no-plus-dialog.blp
@@ -2,37 +2,56 @@ using Gtk 4.0;
using Adw 1;
template $CassetteNoPlusDialog: Adw.Dialog {
- width-request: 360;
- content-width: 360;
+ width-request: 360;
+ content-width: 360;
- Adw.ToolbarView {
- top-bar-style: flat;
+ Adw.ToolbarView {
+ top-bar-style: flat;
- [top]
- Adw.HeaderBar {}
+ [top]
+ Adw.HeaderBar {}
- content: Adw.StatusPage {
- margin-top: 24;
- margin-bottom: 12;
- margin-start: 12;
- margin-end: 12;
- icon-name: "dialog-warning-symbolic";
- title: _("No Plus Subscription");
- description: _("To avoid problems with Yandex, the online functions of the application are not available without a Yandex.Plus subscription. Thanks for understanding.");
+ content: Box {
+ orientation: vertical;
- Button logout_button {
- styles [
- "pill",
- "destructive-action"
- ]
+ Adw.StatusPage {
+ vexpand: true;
+ icon-name: "dialog-warning-symbolic";
+ title: _("No Plus Subscription");
+ description: _("To avoid problems with Yandex, the online functions of the application are not available without a Yandex.Plus subscription. Thanks for understanding.");
+ }
- visible: bind template.log-out-button-visible;
- margin-top: 24;
- action-name: "app.log-out";
- label: _("Log out");
- hexpand: true;
- can-shrink: true;
- }
- };
- }
+ ListBox {
+ styles [
+ "boxed-list-separate"
+ ]
+
+ margin-top: 12;
+ margin-bottom: 12;
+ margin-start: 12;
+ margin-end: 12;
+ selection-mode: none;
+
+ Adw.ButtonRow get_plus_button {
+ styles [
+ "plus-button",
+ ]
+
+ action-name: "app.get-plus";
+ title: _("Get Plus");
+ hexpand: true;
+ }
+
+ Adw.ButtonRow logout_button {
+ styles [
+ "destructive-action"
+ ]
+
+ action-name: "app.log-out";
+ title: _("Log out");
+ hexpand: true;
+ }
+ }
+ };
+ }
}
diff --git a/src/application.vala b/src/application.vala
index 6cbdd24..f57d469 100644
--- a/src/application.vala
+++ b/src/application.vala
@@ -54,6 +54,7 @@ namespace Cassette {
{ "parse-url", on_parse_url_action },
{ "open-account", on_open_account_action },
{ "open-plus", on_open_plus_action },
+ { "get-plus", on_get_plus_action },
{ "mute", on_mute_action },
};
@@ -454,6 +455,15 @@ namespace Cassette {
}
}
+ void on_get_plus_action () {
+ try {
+ Process.spawn_command_line_async ("xdg-open https://plus.yandex.ru/getplus");
+
+ } catch (SpawnError e) {
+ Logger.warning (_("Error while opening uri: %s").printf (e.message));
+ }
+ }
+
void on_mute_action () {
player.mute = !player.mute;
}
From b2c0a3788f420ae697b1d2399e4f944f04af4758 Mon Sep 17 00:00:00 2001
From: Vladimir Vaskov
Date: Sun, 11 Aug 2024 17:19:13 +0300
Subject: [PATCH 017/167] style: fix .blp
---
data/ui/no-plus-dialog.blp | 84 +++++++++++++++++++-------------------
1 file changed, 42 insertions(+), 42 deletions(-)
diff --git a/data/ui/no-plus-dialog.blp b/data/ui/no-plus-dialog.blp
index 5d06bb6..0cd49d1 100644
--- a/data/ui/no-plus-dialog.blp
+++ b/data/ui/no-plus-dialog.blp
@@ -2,56 +2,56 @@ using Gtk 4.0;
using Adw 1;
template $CassetteNoPlusDialog: Adw.Dialog {
- width-request: 360;
- content-width: 360;
+ width-request: 360;
+ content-width: 360;
- Adw.ToolbarView {
- top-bar-style: flat;
+ Adw.ToolbarView {
+ top-bar-style: flat;
- [top]
- Adw.HeaderBar {}
+ [top]
+ Adw.HeaderBar {}
- content: Box {
- orientation: vertical;
+ content: Box {
+ orientation: vertical;
- Adw.StatusPage {
- vexpand: true;
- icon-name: "dialog-warning-symbolic";
- title: _("No Plus Subscription");
- description: _("To avoid problems with Yandex, the online functions of the application are not available without a Yandex.Plus subscription. Thanks for understanding.");
- }
+ Adw.StatusPage {
+ vexpand: true;
+ icon-name: "dialog-warning-symbolic";
+ title: _("No Plus Subscription");
+ description: _("To avoid problems with Yandex, the online functions of the application are not available without a Yandex.Plus subscription. Thanks for understanding.");
+ }
- ListBox {
- styles [
- "boxed-list-separate"
- ]
+ ListBox {
+ styles [
+ "boxed-list-separate"
+ ]
- margin-top: 12;
- margin-bottom: 12;
- margin-start: 12;
- margin-end: 12;
- selection-mode: none;
+ margin-top: 12;
+ margin-bottom: 12;
+ margin-start: 12;
+ margin-end: 12;
+ selection-mode: none;
- Adw.ButtonRow get_plus_button {
- styles [
- "plus-button",
- ]
+ Adw.ButtonRow get_plus_button {
+ styles [
+ "plus-button",
+ ]
- action-name: "app.get-plus";
- title: _("Get Plus");
- hexpand: true;
- }
+ action-name: "app.get-plus";
+ title: _("Get Plus");
+ hexpand: true;
+ }
- Adw.ButtonRow logout_button {
- styles [
- "destructive-action"
- ]
+ Adw.ButtonRow logout_button {
+ styles [
+ "destructive-action"
+ ]
- action-name: "app.log-out";
- title: _("Log out");
- hexpand: true;
- }
- }
- };
- }
+ action-name: "app.log-out";
+ title: _("Log out");
+ hexpand: true;
+ }
+ }
+ };
+ }
}
From 0237f6174004469be14984253ab4e28298e7a4e3 Mon Sep 17 00:00:00 2001
From: Vladimir Vaskov
Date: Sun, 11 Aug 2024 21:08:23 +0300
Subject: [PATCH 018/167] build: dump requared libadwaita and gtk version
---
meson.build | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/meson.build b/meson.build
index 22f0438..74e6fea 100644
--- a/meson.build
+++ b/meson.build
@@ -9,8 +9,8 @@ project(
i18n = import('i18n')
gnome = import('gnome')
-gtk = dependency('gtk4', version: '>= 4.14')
-libadwaita = dependency('libadwaita-1', version: '>= 1.5')
+gtk = dependency('gtk4', version: '>= 4.16')
+libadwaita = dependency('libadwaita-1', version: '>= 1.6')
threads = dependency('threads')
libsoup = dependency('libsoup-3.0')
gdkpixbuf = dependency('gdk-pixbuf-2.0')
From 03ff77eccb1d9c7ea76874d249cc4d512179e512 Mon Sep 17 00:00:00 2001
From: Vladimir Vaskov
Date: Sun, 11 Aug 2024 21:33:58 +0300
Subject: [PATCH 019/167] build: fix gtk version
---
meson.build | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/meson.build b/meson.build
index 74e6fea..59f4d4f 100644
--- a/meson.build
+++ b/meson.build
@@ -9,7 +9,7 @@ project(
i18n = import('i18n')
gnome = import('gnome')
-gtk = dependency('gtk4', version: '>= 4.16')
+gtk = dependency('gtk4', version: '>= 4.15')
libadwaita = dependency('libadwaita-1', version: '>= 1.6')
threads = dependency('threads')
libsoup = dependency('libsoup-3.0')
@@ -77,4 +77,4 @@ gnome.post_install(
glib_compile_schemas: true,
gtk_update_icon_cache: true,
update_desktop_database: true,
-)
\ No newline at end of file
+)
From 70721cb8bca414c432538ede2190dd1e0e546b64 Mon Sep 17 00:00:00 2001
From: Vladimir Vaskov
Date: Sat, 17 Aug 2024 12:39:02 +0300
Subject: [PATCH 020/167] feat: use `Gtk.UriLauncher` instead of `Process`
---
src/application.vala | 21 +++------------------
1 file changed, 3 insertions(+), 18 deletions(-)
diff --git a/src/application.vala b/src/application.vala
index f57d469..c70526a 100644
--- a/src/application.vala
+++ b/src/application.vala
@@ -438,30 +438,15 @@ namespace Cassette {
}
void on_open_account_action () {
- try {
- Process.spawn_command_line_async ("xdg-open https://id.yandex.ru/");
-
- } catch (SpawnError e) {
- Logger.warning (_("Error while opening uri: %s").printf (e.message));
- }
+ new Gtk.UriLauncher ("https://id.yandex.ru/").launch.begin (null, null);
}
void on_open_plus_action () {
- try {
- Process.spawn_command_line_async ("xdg-open https://plus.yandex.ru/");
-
- } catch (SpawnError e) {
- Logger.warning (_("Error while opening uri: %s").printf (e.message));
- }
+ new Gtk.UriLauncher ("https://plus.yandex.ru/").launch.begin (null, null);
}
void on_get_plus_action () {
- try {
- Process.spawn_command_line_async ("xdg-open https://plus.yandex.ru/getplus");
-
- } catch (SpawnError e) {
- Logger.warning (_("Error while opening uri: %s").printf (e.message));
- }
+ new Gtk.UriLauncher ("https://plus.yandex.ru/getplus/").launch.begin (null, null);
}
void on_mute_action () {
From 4c1ddb7124b76d9ff03181908051213ab7fa0de7 Mon Sep 17 00:00:00 2001
From: Vladimir Vaskov
Date: Wed, 21 Aug 2024 08:01:29 +0300
Subject: [PATCH 021/167] fix: change widget blocking behavior
closes: #130
---
data/ui/header-bar.blp | 2 +-
src/utils.vala | 2 +-
src/widgets/header-bar.vala | 1 +
3 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/data/ui/header-bar.blp b/data/ui/header-bar.blp
index 490abc0..785de03 100644
--- a/data/ui/header-bar.blp
+++ b/data/ui/header-bar.blp
@@ -26,7 +26,7 @@ template $CassetteHeaderBar: $CassetteShrinkableBin {
icon-name: "edit-find-symbolic";
visible: false;
tooltip-text: _("Yandex.Music search");
- sensitive: bind template.interactive;
+ // sensitive: bind template.interactive;
}
title-widget: Adw.ViewSwitcher switcher_title {
diff --git a/src/utils.vala b/src/utils.vala
index 9ca1830..de493a0 100644
--- a/src/utils.vala
+++ b/src/utils.vala
@@ -67,7 +67,7 @@ namespace Cassette {
switch (reason) {
case BlockReason.NOT_IMPLEMENTED:
widget.tooltip_text = _("Not implemented yet");
- if (get_debug_mode ()) {
+ if (application.is_devel) {
widget.sensitive = true;
}
break;
diff --git a/src/widgets/header-bar.vala b/src/widgets/header-bar.vala
index 84c10bb..a1d6d93 100644
--- a/src/widgets/header-bar.vala
+++ b/src/widgets/header-bar.vala
@@ -105,6 +105,7 @@ public class Cassette.HeaderBar : ShrinkableBin {
}
});
+ // Also https://github.com/Rirusha/Cassette/blob/master/data/ui/header-bar.blp#L29
block_widget (search_button, BlockReason.NOT_IMPLEMENTED);
}
From bd0e6d7eac903fb1884ab2f995ce70ca11ff06fe Mon Sep 17 00:00:00 2001
From: Vladimir Vaskov
Date: Fri, 23 Aug 2024 11:48:37 +0300
Subject: [PATCH 022/167] ci: change main branch name
---
.github/workflows/{CI-master.yml => CI-main.yml} | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
rename .github/workflows/{CI-master.yml => CI-main.yml} (98%)
diff --git a/.github/workflows/CI-master.yml b/.github/workflows/CI-main.yml
similarity index 98%
rename from .github/workflows/CI-master.yml
rename to .github/workflows/CI-main.yml
index 77ff3e7..fdc5058 100644
--- a/.github/workflows/CI-master.yml
+++ b/.github/workflows/CI-main.yml
@@ -4,7 +4,7 @@ on:
workflow_dispatch:
push:
branches:
- - 'master'
+ - 'main'
jobs:
lint-vala:
From 747ca19aa65759dbed8323fde5f9cb38a69f5e33 Mon Sep 17 00:00:00 2001
From: Rafael Fontenelle
Date: Thu, 29 Aug 2024 14:15:47 -0300
Subject: [PATCH 023/167] Fix misspellings
---
data/ui/playlists-view.ui | 2 +-
data/ui/track-list.ui | 2 +-
docs/CONTRIBUTING.md | 2 +-
src/client/cachier/info-db.vala | 2 +-
src/client/player/mods/abstract-mode.vala | 4 ++--
src/client/player/player.vala | 6 +++---
src/pager.vala | 4 ++--
src/widgets/views/abstract-cachiable.vala | 2 +-
8 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/data/ui/playlists-view.ui b/data/ui/playlists-view.ui
index 8800a03..340038d 100644
--- a/data/ui/playlists-view.ui
+++ b/data/ui/playlists-view.ui
@@ -36,7 +36,7 @@
- Also you liked this playlists
+ Also you liked these playlists
diff --git a/data/ui/track-list.ui b/data/ui/track-list.ui
index 636651b..3546517 100644
--- a/data/ui/track-list.ui
+++ b/data/ui/track-list.ui
@@ -17,7 +17,7 @@
900
true
-
+
Search track
diff --git a/docs/CONTRIBUTING.md b/docs/CONTRIBUTING.md
index 32f2da9..056d865 100644
--- a/docs/CONTRIBUTING.md
+++ b/docs/CONTRIBUTING.md
@@ -1,7 +1,7 @@
## Как внести вклад
Если вы не знаете, чем занятся, то:
-* Все запланированные задачи лежат в разделе issue и имеют ярлык "enchancement".
+* Все запланированные задачи лежат в разделе issue и имеют ярлык "enhancement".
* Все известные проблемы лежат там же и имеют ярлык "bug".
Выбирайте задачи из ближайших версией. Их список вы можете найти [здесь](https://github.com/Rirusha/Cassette/milestones). Это как ускорит выход следующей версии, так и облегчит ревью, так так не нужно будет переключаться с одной глобальной проблемы на другую.
diff --git a/src/client/cachier/info-db.vala b/src/client/cachier/info-db.vala
index 1a44960..f47aca5 100644
--- a/src/client/cachier/info-db.vala
+++ b/src/client/cachier/info-db.vala
@@ -211,7 +211,7 @@ namespace Cassette.Client.Cachier {
int error_code = statement.step ();
if (error_code != Sqlite.ROW) {
- Logger.error ("Error while geting ref for %s in %s, Sqlite error code: %s, message: %s".printf (
+ Logger.error ("Error while getting ref for %s in %s, Sqlite error code: %s, message: %s".printf (
what_id, db_path, db.errcode ().to_string (), db.errmsg ()
));
}
diff --git a/src/client/player/mods/abstract-mode.vala b/src/client/player/mods/abstract-mode.vala
index e05d7c7..b09ad05 100644
--- a/src/client/player/mods/abstract-mode.vala
+++ b/src/client/player/mods/abstract-mode.vala
@@ -64,7 +64,7 @@ public abstract class Cassette.Client.Player.Mode : Object {
* Get previous track index in queue.
* Track list and Flow have different rules for this.
*
- * @return new index. Returns -1 if theres no previous track
+ * @return new index. Returns -1 if there's no previous track
*/
public abstract int get_prev_index ();
@@ -118,7 +118,7 @@ public abstract class Cassette.Client.Player.Mode : Object {
*
* @param consider_repeat_mode some mode ignore this.
*
- * @return new index. Returns -1 if theres no next track
+ * @return new index. Returns -1 if there's no next track
*/
public abstract int get_next_index (bool consider_repeat_mode);
diff --git a/src/client/player/player.vala b/src/client/player/player.vala
index e32a7e3..dec0b3d 100644
--- a/src/client/player/player.vala
+++ b/src/client/player/player.vala
@@ -180,19 +180,19 @@ public class Cassette.Client.Player.Player : Object {
/**
* Triggers when previous track in queue finish loading.
- * For next track show posibility.
+ * For next track show possibility.
*/
public signal void next_track_loaded (YaMAPI.Track? next_track);
/**
* Current track started loaded.
- * Inteface should block for interaction.
+ * Interface should block for interaction.
*/
public signal void current_track_start_loading ();
/**
* Current track started loaded.
- * Inteface can be released from block.
+ * Interface can be released from block.
*/
public signal void current_track_finish_loading (YaMAPI.Track track_info);
diff --git a/src/pager.vala b/src/pager.vala
index 11ef6e6..a6a168a 100644
--- a/src/pager.vala
+++ b/src/pager.vala
@@ -308,7 +308,7 @@ namespace Cassette {
}
} catch (Error e) {
- Logger.warning (_("Can't read pages file. Messsage: %s").printf (e.message));
+ Logger.warning (_("Can't read pages file. Message: %s").printf (e.message));
}
}
@@ -328,7 +328,7 @@ namespace Cassette {
FileUtils.set_contents (pages_file.peek_path (), content_str, content_str.length);
} catch (Error e) {
- Logger.warning (_("Can't create pages file. Messsage: %s").printf (e.message));
+ Logger.warning (_("Can't create pages file. Message: %s").printf (e.message));
}
}
diff --git a/src/widgets/views/abstract-cachiable.vala b/src/widgets/views/abstract-cachiable.vala
index 30822aa..acfdf38 100644
--- a/src/widgets/views/abstract-cachiable.vala
+++ b/src/widgets/views/abstract-cachiable.vala
@@ -189,7 +189,7 @@ namespace Cassette {
if (yell_status) {
var content_info = get_content_name (object_info, false, false);
// Translators: first %s - content type (Playlist), second - name
- application.show_message (_("Cacheing of %s%s started").printf (content_info[0], content_info[1]));
+ application.show_message (_("Caching of %s%s started").printf (content_info[0], content_info[1]));
}
}
From d45febabb88c5d9c321fe7c3ea20b456d346c8fe Mon Sep 17 00:00:00 2001
From: Rafael Fontenelle
Date: Fri, 30 Aug 2024 13:07:03 -0300
Subject: [PATCH 024/167] Moved -> Move in cache-deletion-preferences.vala
---
src/widgets/preferences/cache-deletion-preferences.vala | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/widgets/preferences/cache-deletion-preferences.vala b/src/widgets/preferences/cache-deletion-preferences.vala
index 9d7473f..1426e8b 100644
--- a/src/widgets/preferences/cache-deletion-preferences.vala
+++ b/src/widgets/preferences/cache-deletion-preferences.vala
@@ -86,7 +86,7 @@ namespace Cassette {
void ask_about_deletion (bool is_tmp) {
var dialog = new Adw.AlertDialog (
is_tmp ? _("Delete cache files?") :
- _("Moved saved files?"),
+ _("Move saved files?"),
is_tmp ? _("All cache will be deleted. This doesn't affect on saved playlists or albums") :
_("All saved playlists and albums will be moved to cache files. This could take a while.")
);
From 343ef1b591553b4cba2dfc1279b3cbea87430492 Mon Sep 17 00:00:00 2001
From: Vladimir Vaskov
Date: Fri, 30 Aug 2024 20:18:53 +0300
Subject: [PATCH 025/167] translate: fix gettext string for other languages
---
src/widgets/cache-indicator/job-info-badge.vala | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/src/widgets/cache-indicator/job-info-badge.vala b/src/widgets/cache-indicator/job-info-badge.vala
index a1e4aa9..4449b09 100644
--- a/src/widgets/cache-indicator/job-info-badge.vala
+++ b/src/widgets/cache-indicator/job-info-badge.vala
@@ -73,7 +73,11 @@ namespace Cassette {
void update_info (int saved, int total, int now) {
// Translators: n track from n tracks saved
- progress_label.label = _("%d / %d saved%s").printf (
+ progress_label.label = ngettext (
+ "%d / %d saved%s",
+ "%d / %d saved%s",
+ saved
+ ).printf (
saved,
total,
(now != 0? ngettext (
From ceeaa0a52a959f2598014de2aa92b87368c4f2ee Mon Sep 17 00:00:00 2001
From: Rafael Fontenelle
Date: Fri, 30 Aug 2024 14:38:27 -0300
Subject: [PATCH 026/167] Set check to true in run_command
---
meson.build | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/meson.build b/meson.build
index 59f4d4f..ec429f1 100644
--- a/meson.build
+++ b/meson.build
@@ -32,7 +32,7 @@ if get_option('is_devel')
app_id_suffix = '-Devel'
find_program('git', required: true)
- vcs_tag = run_command('git', 'rev-parse', '--short', 'HEAD').stdout().strip()
+ vcs_tag = run_command('git', 'rev-parse', '--short', 'HEAD', check: true).stdout().strip()
version_suffix = '-dev.@0@'.format (vcs_tag)
endif
From 61f53b7cd9d59ab0da9352fb6eb255c949266ea9 Mon Sep 17 00:00:00 2001
From: Vladimir Vaskov
Date: Sat, 31 Aug 2024 11:35:35 +0300
Subject: [PATCH 027/167] translate: devide ". " from sequence the convenience
of translators
---
src/widgets/cache-indicator/job-info-badge.vala | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/widgets/cache-indicator/job-info-badge.vala b/src/widgets/cache-indicator/job-info-badge.vala
index 4449b09..6f1e9bd 100644
--- a/src/widgets/cache-indicator/job-info-badge.vala
+++ b/src/widgets/cache-indicator/job-info-badge.vala
@@ -80,9 +80,9 @@ namespace Cassette {
).printf (
saved,
total,
- (now != 0? ngettext (
- ". %d track saving now",
- ". %d tracks saving now",
+ (now != 0? ". " + ngettext (
+ "%d track saving now",
+ "%d tracks saving now",
now
).printf (
now
From 0ceb499e57cf8e22e7ddcb45d95439aa55086f4e Mon Sep 17 00:00:00 2001
From: Vladimir Vaskov
Date: Fri, 30 Aug 2024 20:18:53 +0300
Subject: [PATCH 028/167] translate: fix gettext string for other languages
---
src/widgets/cache-indicator/job-info-badge.vala | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/src/widgets/cache-indicator/job-info-badge.vala b/src/widgets/cache-indicator/job-info-badge.vala
index a1e4aa9..4449b09 100644
--- a/src/widgets/cache-indicator/job-info-badge.vala
+++ b/src/widgets/cache-indicator/job-info-badge.vala
@@ -73,7 +73,11 @@ namespace Cassette {
void update_info (int saved, int total, int now) {
// Translators: n track from n tracks saved
- progress_label.label = _("%d / %d saved%s").printf (
+ progress_label.label = ngettext (
+ "%d / %d saved%s",
+ "%d / %d saved%s",
+ saved
+ ).printf (
saved,
total,
(now != 0? ngettext (
From 8ffbee4b5ae81066ac5acba52bba0c97b634722d Mon Sep 17 00:00:00 2001
From: Vladimir Vaskov
Date: Sat, 31 Aug 2024 12:24:45 +0300
Subject: [PATCH 029/167] translation: change n gettext to context gettext for
genders
closes #138
---
src/widgets/views/playlist.vala | 16 ++++++++++------
1 file changed, 10 insertions(+), 6 deletions(-)
diff --git a/src/widgets/views/playlist.vala b/src/widgets/views/playlist.vala
index e685afc..2c406d3 100644
--- a/src/widgets/views/playlist.vala
+++ b/src/widgets/views/playlist.vala
@@ -241,12 +241,16 @@ namespace Cassette {
playlist_status.label = _("Owner: %s").printf (playlist_info.owner.name);
}
} else {
- // Translators: 0 - female, 1 - male (different gender endings)
- string format_string = ngettext (
- "%s updated playlist %s",
- "%s updated playlist %s",
- playlist_info.owner.sex == "female"? 0 : 1
- );
+ string format_string;
+ if (playlist_info.owner.sex == "female") {
+ // Translators: %s is female person
+ format_string = C_ ("female person", "%s updated playlist %s");
+
+ } else {
+ // Translators: %s is male person
+ format_string = C_ ("male person", "%s updated playlist %s");
+ }
+
playlist_status.label = format_string.printf (playlist_info.owner.name, get_when (playlist_info.modified));
}
From e21f3ff7e0af5b697f0722cd40aa5e4104bf9e79 Mon Sep 17 00:00:00 2001
From: Vladimir Vaskov
Date: Sat, 31 Aug 2024 18:20:27 +0300
Subject: [PATCH 030/167] style: change func name
---
src/widgets/views/abstract-cachiable.vala | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/src/widgets/views/abstract-cachiable.vala b/src/widgets/views/abstract-cachiable.vala
index acfdf38..4db6b5d 100644
--- a/src/widgets/views/abstract-cachiable.vala
+++ b/src/widgets/views/abstract-cachiable.vala
@@ -66,7 +66,7 @@ namespace Cassette {
_job.job_done.connect ((obj, status) => {
switch (status) {
case Cachier.JobDoneStatus.SUCCESS:
- var content_info = get_content_name (object_info, true, true);
+ var content_info = get_content_info (object_info, true, true);
// Translators: first %s - content type (Playlist), second - name
if (yell_status) {
application.show_message (_("%s%s successfully cached").printf (
@@ -78,7 +78,7 @@ namespace Cassette {
break;
case Cachier.JobDoneStatus.FAILED:
- var content_info = get_content_name (object_info, false, true);
+ var content_info = get_content_info (object_info, false, true);
// Translators: first %s - content type (Playlist), second - name
application.show_message (_("Caching of %s%s was canceled, due to network error")
.printf (
@@ -89,7 +89,7 @@ namespace Cassette {
break;
case Cachier.JobDoneStatus.ABORTED:
- var content_info = get_content_name (object_info, false, true);
+ var content_info = get_content_info (object_info, false, true);
// Translators: first %s - content type (Playlist), second - name
application.show_message (_("Caching of %s%s was aborted").printf (
content_info[0],
@@ -153,7 +153,7 @@ namespace Cassette {
}
}
- string[] get_content_name (HasTrackList obj_info, bool first_big, bool with_title) {
+ string[] get_content_info (HasTrackList obj_info, bool first_big, bool with_title) {
string content_name = "";
string content_title = "";
@@ -187,7 +187,7 @@ namespace Cassette {
job = cachier.start_cache (object_info);
if (yell_status) {
- var content_info = get_content_name (object_info, false, false);
+ var content_info = get_content_info (object_info, false, false);
// Translators: first %s - content type (Playlist), second - name
application.show_message (_("Caching of %s%s started").printf (content_info[0], content_info[1]));
}
@@ -223,7 +223,7 @@ namespace Cassette {
download_stack.sensitive = true;
if (yell_status) {
- var content_info = get_content_name (object_info, true, true);
+ var content_info = get_content_info (object_info, true, true);
// Translators: first %s - content type (Playlist), second - name
application.show_message (_("%s%s was removed from cache folder").printf (
content_info[0],
@@ -233,7 +233,7 @@ namespace Cassette {
});
if (yell_status) {
- var content_info = get_content_name (object_info, true, false);
+ var content_info = get_content_info (object_info, true, false);
// Translators: first %s - content type (Playlist), second - name
application.show_message (_("%s%s is removing, please do not close the app").printf (
content_info[0],
From c2a94d50fe66febfdec544e844834cf65668aada Mon Sep 17 00:00:00 2001
From: Vladimir Vaskov
Date: Sat, 31 Aug 2024 19:09:07 +0300
Subject: [PATCH 031/167] feat: improve content_info
---
src/widgets/views/abstract-cachiable.vala | 84 +++++++++++------------
1 file changed, 42 insertions(+), 42 deletions(-)
diff --git a/src/widgets/views/abstract-cachiable.vala b/src/widgets/views/abstract-cachiable.vala
index 4db6b5d..3f670bd 100644
--- a/src/widgets/views/abstract-cachiable.vala
+++ b/src/widgets/views/abstract-cachiable.vala
@@ -20,6 +20,12 @@ using Cassette.Client;
namespace Cassette {
public abstract class CachiableView : HasTracksView {
+
+ internal struct ContentInfo {
+ public string content_name;
+ public string content_title;
+ }
+
public Gtk.Stack download_stack { get; set; }
Gtk.Overlay overlay { get; default = new Gtk.Overlay (); }
public Gtk.ProgressBar saving_progress_bar { get; default = new Gtk.ProgressBar (); }
@@ -66,34 +72,33 @@ namespace Cassette {
_job.job_done.connect ((obj, status) => {
switch (status) {
case Cachier.JobDoneStatus.SUCCESS:
- var content_info = get_content_info (object_info, true, true);
+ var content_info = get_content_info (object_info);
// Translators: first %s - content type (Playlist), second - name
if (yell_status) {
- application.show_message (_("%s%s successfully cached").printf (
- content_info[0],
- content_info[1]
+ application.show_message (_("%s '%s' saved successfully").printf (
+ content_info.content_name,
+ content_info.content_title
));
}
download_stack.visible_child_name = "delete";
break;
case Cachier.JobDoneStatus.FAILED:
- var content_info = get_content_info (object_info, false, true);
+ var content_info = get_content_info (object_info);
// Translators: first %s - content type (Playlist), second - name
- application.show_message (_("Caching of %s%s was canceled, due to network error")
- .printf (
- content_info[0],
- content_info[1]
- ));
+ application.show_message (_("%s '%s' saving was stopped, due to network error").printf (
+ content_info.content_name,
+ content_info.content_title
+ ));
download_stack.visible_child_name = "save";
break;
case Cachier.JobDoneStatus.ABORTED:
- var content_info = get_content_info (object_info, false, true);
+ var content_info = get_content_info (object_info);
// Translators: first %s - content type (Playlist), second - name
- application.show_message (_("Caching of %s%s was aborted").printf (
- content_info[0],
- content_info[1]
+ application.show_message (_("%s '%s' saving was aborted").printf (
+ content_info.content_name,
+ content_info.content_title
));
download_stack.visible_child_name = "save";
break;
@@ -153,28 +158,22 @@ namespace Cassette {
}
}
- string[] get_content_info (HasTrackList obj_info, bool first_big, bool with_title) {
+ ContentInfo get_content_info (HasTrackList obj_info) {
string content_name = "";
string content_title = "";
- var playlist_info = obj_info as YaMAPI.Playlist;
- if (playlist_info != null) {
+ if (obj_info is YaMAPI.Playlist) {
+ var playlist_info = obj_info as YaMAPI.Playlist;
content_name = _("Playlist");
- content_name = first_big? content_name : content_name.down ();
- if (with_title) {
- content_title = " '%s'".printf (playlist_info.title);
- }
- } else {
+ content_title = playlist_info.title;
+
+ } else if (obj_info is YaMAPI.Album) {
var album_info = obj_info as YaMAPI.Album;
- if (album_info != null) {
- content_name = _("Album");
- content_name = first_big? content_name : content_name.down ();
- if (with_title) {
- content_title += " '%s'".printf (album_info.title);
- }
- } else {
- assert_not_reached ();
- }
+ content_name = _("Album");
+ content_title = album_info.title;
+
+ } else {
+ assert_not_reached ();
}
return {content_name, content_title};
@@ -187,9 +186,11 @@ namespace Cassette {
job = cachier.start_cache (object_info);
if (yell_status) {
- var content_info = get_content_info (object_info, false, false);
- // Translators: first %s - content type (Playlist), second - name
- application.show_message (_("Caching of %s%s started").printf (content_info[0], content_info[1]));
+ var content_info = get_content_info (object_info);
+ // Translators: %s - content type (e.g. "Playlist")
+ application.show_message (_("%s saving has started").printf (
+ content_info.content_name
+ ));
}
}
@@ -223,21 +224,20 @@ namespace Cassette {
download_stack.sensitive = true;
if (yell_status) {
- var content_info = get_content_info (object_info, true, true);
+ var content_info = get_content_info (object_info);
// Translators: first %s - content type (Playlist), second - name
- application.show_message (_("%s%s was removed from cache folder").printf (
- content_info[0],
- content_info[1]
+ application.show_message (_("%s '%s' was moved from data to cache").printf (
+ content_info.content_name,
+ content_info.content_title
));
}
});
if (yell_status) {
- var content_info = get_content_info (object_info, true, false);
+ var content_info = get_content_info (object_info);
// Translators: first %s - content type (Playlist), second - name
- application.show_message (_("%s%s is removing, please do not close the app").printf (
- content_info[0],
- content_info[1]
+ application.show_message (_("%s removing has started. Please do not close the app").printf (
+ content_info.content_name
));
}
}
From 77ae8fad044b0155f87b80333859aabc79f0a95d Mon Sep 17 00:00:00 2001
From: filmsi
Date: Mon, 2 Sep 2024 21:15:34 +0200
Subject: [PATCH 032/167] Update LINGUAS - add Slovenian
Add Slovenian l10n to Cassette
---
po/LINGUAS | 1 +
1 file changed, 1 insertion(+)
diff --git a/po/LINGUAS b/po/LINGUAS
index 0c04321..8dd11a9 100644
--- a/po/LINGUAS
+++ b/po/LINGUAS
@@ -2,3 +2,4 @@
be
es
ru
+sl
From d8e71b5d61facd90c1b3db3a4e972e75b7a47608 Mon Sep 17 00:00:00 2001
From: filmsi
Date: Mon, 2 Sep 2024 21:18:10 +0200
Subject: [PATCH 033/167] Create sl.po
Created sl.po, fully localized
---
po/sl.po | 1354 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 1354 insertions(+)
create mode 100644 po/sl.po
diff --git a/po/sl.po b/po/sl.po
new file mode 100644
index 0000000..cd54842
--- /dev/null
+++ b/po/sl.po
@@ -0,0 +1,1354 @@
+# Slovenian translation for cassette.
+# Copyright (C) 2024 cassette's COPYRIGHT HOLDER
+# This file is distributed under the same license as the cassette package.
+#
+# Martin Srebotnjak , 2024.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: cassette main\n"
+"Report-Msgid-Bugs-To: https://github.com/Rirusha/Cassette/issues\n"
+"POT-Creation-Date: 2024-09-02 15:24+0000\n"
+"PO-Revision-Date: 2024-09-02 21:10+0200\n"
+"Last-Translator: Martin Srebotnjak \n"
+"Language-Team: Slovenian GNOME Translation Team \n"
+"Language: sl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n"
+"%100==4 ? 3 : 0);\n"
+"X-Generator: Poedit 2.2.1\n"
+"X-Poedit-SourceCharset: UTF-8\n"
+
+#. Translators: app name should be translated
+#: data/io.github.Rirusha.Cassette.appdata.xml.in:3
+#: data/io.github.Rirusha.Cassette.desktop.in:4 src/main.vala:23
+msgid "Cassette"
+msgstr "Kaseta"
+
+#: data/io.github.Rirusha.Cassette.appdata.xml.in:8
+msgid ""
+"GTK/Adwaita application that allows to use Yandex Music service on Linux "
+"operating systems."
+msgstr ""
+"Program GTK / Adwaita, ki omogoča uporabo storitve Yandex Music v "
+"operacijskih sistemih Linux."
+
+#: data/io.github.Rirusha.Cassette.appdata.xml.in:12
+msgid "Features:"
+msgstr "Zmožnosti:"
+
+#: data/io.github.Rirusha.Cassette.appdata.xml.in:16
+msgid "Allows you to save playlists and albums for offline listening"
+msgstr ""
+"Omogoča shranjevanje seznamov predvajanja in albumov za poslušanje brez "
+"povezave"
+
+#: data/io.github.Rirusha.Cassette.appdata.xml.in:19
+msgid "Has a dynamic \"karaoke mode\" right in the track information panel"
+msgstr ""
+"Ima dinamičen način »karaoke« neposredno na informacijski plošči posnetka"
+
+#: data/io.github.Rirusha.Cassette.appdata.xml.in:22
+msgid ""
+"Allows you to more precisely customize the display and playback of special "
+"content, such as explicit or suitable for children."
+msgstr ""
+"Omogoča natančnejše prilagajanje prikaza in predvajanja posebnih vsebin, na "
+"primer eksplicitnih ali primernih za otroke."
+
+#: data/io.github.Rirusha.Cassette.appdata.xml.in:26
+msgid "Displays tracks that are currently unavailable in the service"
+msgstr "Prikaže posnetke, ki trenutno niso na voljo v storitvi"
+
+#: data/io.github.Rirusha.Cassette.appdata.xml.in:29
+msgid "Shows which tracks have been replaced and by what"
+msgstr "Pokaže, kateri posnetki so bili nadomeščeni in s čim"
+
+#: data/io.github.Rirusha.Cassette.appdata.xml.in:33
+msgid ""
+"Cassette is an unofficial client and is not associated with or endorsed by "
+"Yandex."
+msgstr "Kaseta je neuradni odjemalec in ni povezana z Yandexom ali ga podpira."
+
+#: data/io.github.Rirusha.Cassette.appdata.xml.in:68
+msgid "Unofficial Yandex.Music client"
+msgstr "Neuradni odjemalec za Yandex.Music"
+
+#: data/io.github.Rirusha.Cassette.appdata.xml.in:138
+msgid "Rirusha"
+msgstr "Rirusha"
+
+#: data/io.github.Rirusha.Cassette.desktop.in:5
+msgid "Unofficial Yandex.Music client for GNOME"
+msgstr "Neuradni odjemalec Yandex.Music za GNOME"
+
+#. Translators: keep number of ';'
+#: data/io.github.Rirusha.Cassette.desktop.in:7
+#: data/io.github.Rirusha.Cassette-Devel.desktop.in:7
+msgid "yandex;yandex music;yam;music;"
+msgstr "yandex;glasba yandex;yandex music;yam;glasba;music;"
+
+#. Translators: app name should be translated
+#: data/io.github.Rirusha.Cassette-Devel.desktop.in:4
+msgid "Cassette (Devel)"
+msgstr "Kaseta (razvojna različica)"
+
+#: data/io.github.Rirusha.Cassette-Devel.desktop.in:5
+msgid "Unofficial Yandex.Music client for GNOME (Development)"
+msgstr "Neuradni odjemalec Yandex.Music za GNOME (razvojna različica)"
+
+#: data/ui/account-info-dialog.blp:5
+msgid "Account information"
+msgstr "Podatki o računu"
+
+#: data/ui/account-info-dialog.blp:52
+msgid "Open in browser"
+msgstr "Odpri v brskalniku"
+
+#: data/ui/account-info-dialog.blp:61
+msgid "Plus"
+msgstr "Plus"
+
+#: data/ui/account-info-dialog.blp:70 data/ui/no-plus-dialog.blp:51
+#: src/authenticator.vala:51
+msgid "Log out"
+msgstr "Odjavi"
+
+#. Translators: usage mode of application. Online mode or Local mode available
+#: data/ui/begin-view.ui:11
+msgid "Usage mode"
+msgstr "Način uporabe"
+
+#. Translators: usage mode of application. Online mode or Local mode available
+#: data/ui/begin-view.ui:40
+msgctxt "auth window"
+msgid "Choose usage mode"
+msgstr "Izberite način uporabe"
+
+#: data/ui/begin-view.ui:50
+msgctxt "auth window"
+msgid ""
+"If you select the \"Online mode\", you can access local music by enabling "
+"the display of the corresponding pages in the pages preferences, as well as "
+"log in later when selecting \"Local mode\""
+msgstr ""
+"Če izberete »Spletni način«, lahko dostopate do krajevne glasbe tako, da "
+"omogočite prikaz ustreznih strani v nastavitvah strani, kot tudi pozneje, ko "
+"izberete »Krajevni način«"
+
+#. Translators: usage mode of application. Online mode or Local mode available
+#: data/ui/begin-view.ui:75
+msgctxt "auth window"
+msgid "Online mode"
+msgstr "Spletni način"
+
+#. Translators: usage mode of application. Online mode or Local mode available
+#: data/ui/begin-view.ui:85
+msgctxt "auth window"
+msgid "Local mode"
+msgstr "Krajevni način"
+
+#. Translators: "Close" window button label
+#: data/ui/begin-view.ui:97
+msgctxt "auth window"
+msgid "Close"
+msgstr "Zapri"
+
+#: data/ui/begin-view.ui:112
+msgid "Authorization"
+msgstr "Overitev"
+
+#. Translators: size of cache dirs
+#: data/ui/cache-deletion-preferences.ui:21
+msgid "Dirs size:"
+msgstr "Velikost map:"
+
+#. Translators: tempprary cache folder
+#: data/ui/cache-deletion-preferences.ui:35
+msgid "Cache"
+msgstr "Predpomnilnik"
+
+#: data/ui/cache-deletion-preferences.ui:88
+msgid "Clear"
+msgstr "Počisti"
+
+#. Translators: temparence cache folder
+#: data/ui/cache-deletion-preferences.ui:109
+msgid "Data"
+msgstr "Podatki"
+
+#: data/ui/cache-deletion-preferences.ui:159
+msgid "Move to cache"
+msgstr "Premakni v predpomnilnik"
+
+#: data/ui/cache-deletion-preferences.ui:163
+msgid "Move"
+msgstr "Premakni"
+
+#: data/ui/cache-indicator.blp:35
+msgid "Show all cache jobs"
+msgstr "Pokaži vsa opravila predpomnilnika"
+
+#: data/ui/custom-page-preferences.ui:17
+msgid "Title: "
+msgstr "Naslov: "
+
+#: data/ui/custom-page-preferences.ui:38
+msgid "Icon: "
+msgstr "Ikona: "
+
+#: data/ui/custom-page-preferences.ui:75
+msgid "Save page"
+msgstr "Shrani stran"
+
+#: data/ui/custom-page-preferences.ui:92
+msgid "Remove page"
+msgstr "Odstrani stran"
+
+#. Translators: title of preference group
+#: data/ui/custom-pages-preferences.ui:7
+msgctxt "preference window"
+msgid "Custom pages"
+msgstr "Strani po meri"
+
+#. Translators: description of preference group
+#: data/ui/custom-pages-preferences.ui:9
+msgctxt "preference window"
+msgid "Here you can control custom pages."
+msgstr "Tukaj lahko nadzirate strani po meri."
+
+#: data/ui/disliked-tracks-view.ui:23
+#: src/widgets/buttons/menu/primary-menu-button.vala:31
+msgid "Disliked tracks"
+msgstr "Posnetki, ki ne ugajajo"
+
+#: data/ui/header-bar.blp:12
+msgid "Go back"
+msgstr "Skoči nazaj"
+
+#: data/ui/header-bar.blp:20
+msgid "Refresh"
+msgstr "Osveži"
+
+#: data/ui/header-bar.blp:28
+msgid "Yandex.Music search"
+msgstr "Iskanje Yandex.Music"
+
+#: data/ui/help-overlay.blp:11
+msgid "Main Actions"
+msgstr "Glavna dejanja"
+
+#: data/ui/help-overlay.blp:14
+msgid "Show Shortcuts"
+msgstr "Pokaži tipkovne bližnjice"
+
+#: data/ui/help-overlay.blp:19
+msgid "Quit"
+msgstr "Izhod"
+
+#: data/ui/help-overlay.blp:25
+msgid "Playback Control"
+msgstr "Nadzor predvajanja"
+
+#: data/ui/help-overlay.blp:28
+msgid "Play/Pause playback"
+msgstr "Predvajaj/zaustavi predvajanje"
+
+#: data/ui/help-overlay.blp:33 data/ui/player-bar.blp:87
+msgid "Play previous track"
+msgstr "Predvajaj prejšnji posnetek"
+
+#: data/ui/help-overlay.blp:38 data/ui/player-bar.blp:119
+msgid "Play next track"
+msgstr "Predvajaj naslednji posnetek"
+
+#: data/ui/help-overlay.blp:43
+msgid "Mute app"
+msgstr "Utišaj program"
+
+#: data/ui/help-overlay.blp:49
+msgid "Queue control"
+msgstr "Nadzor čakalne vrste"
+
+#: data/ui/help-overlay.blp:52 data/ui/player-bar.blp:141
+msgid "Change shuffle mode"
+msgstr "Spremeni način naključnega predvajanja"
+
+#: data/ui/help-overlay.blp:57 data/ui/player-bar.blp:65
+msgid "Change repeat mode"
+msgstr "Spremeni način ponavljanja"
+
+#: data/ui/help-overlay.blp:63
+msgid "Other"
+msgstr "Drugo"
+
+#: data/ui/help-overlay.blp:66
+msgid "Share current track"
+msgstr "Trenutni posnetek v skupno rabo"
+
+#: data/ui/help-overlay.blp:71
+msgid "Parse url from clipboard"
+msgstr "Razčleni URL iz odložišča"
+
+#: data/ui/info-marks.ui:23
+msgid "Explicit content"
+msgstr "Eksplicitna vsebina"
+
+#: data/ui/info-marks.ui:32
+msgid "Child content"
+msgstr "Vsebina za otroke"
+
+#: data/ui/main-view.blp:6
+msgid "Page under construction"
+msgstr "Stran v gradnji"
+
+#: data/ui/main-view.blp:20
+msgid "All stations"
+msgstr "Vse postaje"
+
+#: data/ui/no-plus-dialog.blp:20
+msgid "No Plus Subscription"
+msgstr "Brez naročnine Plus"
+
+#: data/ui/no-plus-dialog.blp:21
+msgid ""
+"To avoid problems with Yandex, the online functions of the application are "
+"not available without a Yandex.Plus subscription. Thanks for understanding."
+msgstr ""
+"Da bi se izognili težavam z Yandexom, spletne funkcije programa niso na "
+"voljo brez naročnine na Yandex.Plus. Hvala za razumevanje."
+
+#: data/ui/no-plus-dialog.blp:41
+msgid "Get Plus"
+msgstr "Pridobi Plus"
+
+#: data/ui/player-bar.blp:22
+msgid "Show track info"
+msgstr "Pokaži podatke o posnetku"
+
+#: data/ui/player-bar.blp:206
+msgid "Show wave settings"
+msgstr "Pokaži nastavitve signalne oblike"
+
+#: data/ui/player-bar.blp:216
+msgid "Show playback queue"
+msgstr "Pokaži čakalno vrsto za predvajanje"
+
+#: data/ui/player-bar.blp:229
+msgid "Change volume"
+msgstr "Spremeni glasnost"
+
+#: data/ui/player-queue.blp:5 src/application.vala:271
+msgid "Playing now"
+msgstr "Zdaj se predvaja"
+
+#: data/ui/playlist-choose-dialog.ui:8
+msgid "Choose playlist to add"
+msgstr "Izberite seznam predvajanja, ki ga želite dodati"
+
+#: data/ui/playlist-create-button.ui:36
+msgid "Create playlist"
+msgstr "Ustvari seznam predvajanja"
+
+#: data/ui/playlist-micro.ui:39 data/ui/playlist-view.ui:56
+#: src/widgets/cache-indicator/job-info-badge.vala:42
+#: src/widgets/save-stack.vala:56 src/widgets/views/abstract-cachiable.vala:167
+msgid "Playlist"
+msgstr "Seznam predvajanja"
+
+#: data/ui/playlist-row.ui:40
+msgid "Empty"
+msgstr "Prazno"
+
+#: data/ui/playlists-view.ui:23
+msgid "Your playlists"
+msgstr "Vaši seznami predvajanja"
+
+#: data/ui/playlists-view.ui:39
+msgid "Also you liked these playlists"
+msgstr "Všeč so vam bili naslednji seznami predvajanja"
+
+#: data/ui/playlist-view.ui:187
+msgid "Change playlist visibility"
+msgstr "Spremeni vidnost seznama predvajanja"
+
+#: data/ui/playlist-view.ui:211
+msgid "Add page to header"
+msgstr "Dodaj stran v glavo"
+
+#. Translators: tooltip of "save" button
+#: data/ui/playlist-view.ui:233 data/ui/playlist-view.ui:237
+#: src/widgets/buttons/menu/track-options-button.vala:82
+#: src/widgets/buttons/menu/track-options-button.vala:107
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:38
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:49
+#: src/widgets/buttons/menu/track-queue-options-button.vala:72
+#: src/widgets/buttons/menu/track-queue-options-button.vala:102
+msgid "Save"
+msgstr "Shrani"
+
+#. Translators: tooltip of "delete" button
+#: data/ui/playlist-view.ui:256 data/ui/playlist-view.ui:260
+#: src/widgets/preferences/cache-deletion-preferences.vala:96
+#: src/widgets/preferences/preferences-dialog.vala:140
+#: src/widgets/views/playlist.vala:90
+msgid "Delete"
+msgstr "Izbriši"
+
+#. Translators: tooltip of "abort" button
+#: data/ui/playlist-view.ui:276
+msgid "Abort"
+msgstr "Prekliči"
+
+#: data/ui/playlist-view.ui:280
+msgid "Stop"
+msgstr "Ustavi"
+
+#: data/ui/preferences-dialog.ui:8
+msgctxt "preference dialog"
+msgid "Main"
+msgstr "Glavno"
+
+#: data/ui/preferences-dialog.ui:12
+msgctxt "preference dialog"
+msgid "General"
+msgstr "Splošno"
+
+#: data/ui/preferences-dialog.ui:15
+msgctxt "preference dialog"
+msgid "Enable high quality audio"
+msgstr "Omogoči visokokakovostni zvok"
+
+#: data/ui/preferences-dialog.ui:16
+msgctxt "preference dialog"
+msgid ""
+"Attention! If the track was downloaded in low quality, and after the "
+"download is enabled in high quality, the audio will not be reloaded"
+msgstr ""
+"Pozor! Če je bil posnetek prenesen v nizki kakovosti in je kasneje prenos "
+"omogočen v visoki kakovosti, zvok ne bo ponovno naložen"
+
+#: data/ui/preferences-dialog.ui:21
+msgctxt "preference dialog"
+msgid "Add track on top of playlist"
+msgstr "Dodaj posnetek na vrh seznama predvajanja"
+
+#: data/ui/preferences-dialog.ui:22
+msgctxt "preference dialog"
+msgid "Will the track be added to the playlist as the first or as the last"
+msgstr "Ali bo posnetek dodan na seznam predvajanja kot prvi ali zadnji"
+
+#: data/ui/preferences-dialog.ui:27
+msgctxt "preference dialog"
+msgid "Show 'Playing now' notification"
+msgstr "Pokaži obvestilo »Zdaj se predvaja«"
+
+#: data/ui/preferences-dialog.ui:28
+msgctxt "preference dialog"
+msgid "Show a notification when switching a track"
+msgstr "Pokaži obvestilo pri preklapljanju med posnetki"
+
+#: data/ui/preferences-dialog.ui:35
+msgctxt "preference dialog"
+msgid "Show additional marks"
+msgstr "Pokaži dodatne oznake"
+
+#: data/ui/preferences-dialog.ui:36
+msgctxt "preference dialog"
+msgid "Additional marks display additional information about the track"
+msgstr "Dodatne oznake prikazujejo dodatne informacije o posnetku"
+
+#: data/ui/preferences-dialog.ui:39
+msgctxt "preference dialog"
+msgid "Show save mark"
+msgstr "Pokaži oznako za shranjevanje"
+
+#: data/ui/preferences-dialog.ui:40
+msgctxt "preference dialog"
+msgid "Show a label with information about the caching status of the track"
+msgstr "Pokaži oznako z informacijami o stanju predpomnjenja posnetka"
+
+#: data/ui/preferences-dialog.ui:45
+msgctxt "preference dialog"
+msgid "Show cache mark"
+msgstr "Pokaži oznako predpomnjenja"
+
+#: data/ui/preferences-dialog.ui:46
+msgctxt "preference dialog"
+msgid "Show a mark about saving a track to the cache"
+msgstr "Pokaži oznako za shranjevanje posnetka v predpomnilnik"
+
+#: data/ui/preferences-dialog.ui:51
+msgctxt "preference dialog"
+msgid "Show replaced mark"
+msgstr "Pokaži zamenjano oznako"
+
+#: data/ui/preferences-dialog.ui:52
+msgctxt "preference dialog"
+msgid "Show a mark that shows that the track has been replaced"
+msgstr "Pokaži oznako, ki označuje, da je bil posnetek zamenjan"
+
+#: data/ui/preferences-dialog.ui:59
+msgctxt "preference dialog"
+msgid "Tracks visibility"
+msgstr "Vidnost posnetkov"
+
+#: data/ui/preferences-dialog.ui:60
+msgctxt "preference dialog"
+msgid ""
+"Show special tracks in track lists. Filter doesn't work when searching in "
+"track list"
+msgstr ""
+"Pokaži posebne posnetke na seznamih posnetkov. Filter ne deluje pri iskanju "
+"po seznamu posnetkov"
+
+#: data/ui/preferences-dialog.ui:63
+msgctxt "preference dialog"
+msgid "Show unavailable content"
+msgstr "Pokaži vsebine, ki niso na voljo"
+
+#: data/ui/preferences-dialog.ui:64
+msgctxt "preference dialog"
+msgid ""
+"Show tracks that are not available in the service. You can't listen to them"
+msgstr "Pokaži posnetke, ki niso na voljo v storitvi. Ne morete jih poslušati"
+
+#: data/ui/preferences-dialog.ui:69
+msgctxt "preference dialog"
+msgid "Show content suitable for children"
+msgstr "Pokaži vsebino, primerno za otroke"
+
+#: data/ui/preferences-dialog.ui:70
+msgctxt "preference dialog"
+msgid "Show content that is specific to children"
+msgstr "Pokaži vsebine, ki so posebej primerne za otroke"
+
+#: data/ui/preferences-dialog.ui:75
+msgctxt "preference dialog"
+msgid "Show explicit content"
+msgstr "Pokaži vsebine za odrasle"
+
+#: data/ui/preferences-dialog.ui:76
+msgctxt "preference dialog"
+msgid "Show content that has age restrictions"
+msgstr "Pokaži vsebine, za katero veljajo starostne omejitve"
+
+#: data/ui/preferences-dialog.ui:83
+msgctxt "preference dialog"
+msgid "Other"
+msgstr "Drugo"
+
+#: data/ui/preferences-dialog.ui:86
+msgctxt "preference dialog"
+msgid "Enable Debug-Mode"
+msgstr "Omogoči način odpravljanja napak"
+
+#: data/ui/preferences-dialog.ui:87
+msgctxt "preference dialog"
+msgid "Enable logging of additional information useful for error detection"
+msgstr ""
+"Omogoči pisanje zapisnika dodatnih informacij, uporabnih za zaznavanje napak"
+
+#: data/ui/preferences-dialog.ui:94
+msgctxt "preference dialog"
+msgid "Experimental"
+msgstr "Poskusno"
+
+#: data/ui/preferences-dialog.ui:95
+msgctxt "preference dialog"
+msgid "Parameters that test anything and may be removed in future releases"
+msgstr ""
+"Parametri, ki preizkušajo karkoli, in bodo morda odstranjeni v prihodnjih "
+"izdajah"
+
+#: data/ui/preferences-dialog.ui:98
+msgctxt "preference dialog"
+msgid "Use only bottom sheet menus"
+msgstr "Uporabi samo menije na spodnjih zavihkih"
+
+#: data/ui/preferences-dialog.ui:99
+msgctxt "preference dialog"
+msgid "Test preference for bottom sheet menu"
+msgstr "Preskusna nastavitev za meni spodnjih zavihkov"
+
+#: data/ui/preferences-dialog.ui:108
+msgctxt "preference dialog"
+msgid "Pages"
+msgstr "Strani"
+
+#: data/ui/preferences-dialog.ui:112
+msgctxt "preference dialog"
+msgid "Static pages"
+msgstr "Statične strani"
+
+#: data/ui/preferences-dialog.ui:113
+msgctxt "preference dialog"
+msgid ""
+"Here you can show or hide static pages. They will always be displayed on the "
+"left side of the header."
+msgstr ""
+"Tukaj lahko prikažete ali skrijete statične strani. Vedno bodo prikazane na "
+"levi strani glave."
+
+#: data/ui/preferences-dialog.ui:116
+msgctxt "preference dialog"
+msgid "Show 'Main' page"
+msgstr "Pokaži »Glavno« stran"
+
+#: data/ui/preferences-dialog.ui:121
+msgctxt "preference dialog"
+msgid "Show 'Liked' page"
+msgstr "Pokaži stran »Všeč mi je«"
+
+#: data/ui/preferences-dialog.ui:126
+msgctxt "preference dialog"
+msgid "Show 'Playlists' page"
+msgstr "Pokaži stran »Seznami predvajanja«"
+
+#: data/ui/preferences-dialog.ui:138
+msgctxt "preference dialog"
+msgid "Cache"
+msgstr "Predpomnilnik"
+
+#: data/ui/preferences-dialog.ui:142
+msgctxt "preference dialog"
+msgid "Cache managing"
+msgstr "Upravljanje predpomnilnika"
+
+#: data/ui/preferences-dialog.ui:143
+msgctxt "preference dialog"
+msgid ""
+"Here you can see application memory usage, delete all cache from cache "
+"folder and control downloading cache to disk"
+msgstr ""
+"Tukaj si lahko ogledate porabo pomnilnika programa, izbrišete ves "
+"predpomnilnik iz mape predpomnilnika in nadzirate prenos predpomnilnika na "
+"disk"
+
+#: data/ui/preferences-dialog.ui:146
+msgctxt "preference dialog"
+msgid "Cache content"
+msgstr "Vsebina predpomnilnika"
+
+#: data/ui/preferences-dialog.ui:147
+msgctxt "preference dialog"
+msgid ""
+"For better performance. Over time, it starts to take up a lot of space. So "
+"far, manual cleaning is required. If enabled, the application will cache all "
+"content to cache dir for better performance, otherwise, the application will "
+"load content only when caching objects (such as playlists or albums). "
+"Disabling the parameter does not delete already downloaded content"
+msgstr ""
+"Za boljše delovanje. Sčasoma začne zavzemati veliko prostora. Zaenkrat je "
+"potrebno ročno čiščenje. Če je omogočeno, bo program predpomnil vso vsebino "
+"v predpomnilno mapo za boljše delovanje, sicer bo program naložilavsebino "
+"samo pri predpomnjenju predmetov (kot so seznami predvajanja ali albumi). Če "
+"onemogočite parameter, ne izbrišete že prenesene vsebine"
+
+#: data/ui/save-stack.ui:25
+msgid "Content saving…"
+msgstr "Shranjevanje vsebine ..."
+
+#: data/ui/save-stack.ui:42
+msgid "Content cached"
+msgstr "Vsebina predpomnjena"
+
+#: data/ui/save-stack.ui:56
+msgid "Content saved"
+msgstr "Vsebina shranjena"
+
+#: data/ui/stations-view.blp:22
+msgid "Stations dashboard"
+msgstr "Nadzorna plošča postaj"
+
+#: data/ui/stations-view.blp:58
+msgid "Searching for station…"
+msgstr "Iskanje postaje ..."
+
+#: data/ui/stations-view.blp:77
+msgid "By genre…"
+msgstr "Po zvrsti …"
+
+#: data/ui/stations-view.blp:99 data/ui/wave-settings.blp:60
+msgid "By mood…"
+msgstr "Po razpoloženju …"
+
+#: data/ui/stations-view.blp:121 data/ui/wave-settings.blp:25
+msgid "By activity…"
+msgstr "Po aktivnosti …"
+
+#: data/ui/stations-view.blp:143
+msgid "By epoch…"
+msgstr "Po dobi …"
+
+#: data/ui/stations-view.blp:165
+msgid "Other…"
+msgstr "Drugo …"
+
+#: data/ui/stations-view.blp:209
+msgid "No stations with that name were found"
+msgstr "Postaje s tem imenom ni moč najti"
+
+#: data/ui/track-info.blp:103
+msgid "Track lyrics"
+msgstr "Besedilo posnetka"
+
+#: data/ui/track-info.blp:117
+msgid "Authors"
+msgstr "Avtorji"
+
+#: data/ui/track-info.blp:135
+msgid "Source"
+msgstr "Vir"
+
+#: data/ui/track-info.blp:158
+msgid "Similar tracks"
+msgstr "Podobni posnetki"
+
+#. Translators: placeholder of "search" entry. Local track search (inside of track list)
+#: data/ui/track-list.ui:21
+msgid "Search track"
+msgstr "Poišči posnetek"
+
+#. Translators: part of sort by
+#: data/ui/track-list.ui:30
+msgid "Sort by"
+msgstr "Razvrsti po"
+
+#: data/ui/track-list.ui:77
+msgid "No tracks to display"
+msgstr "Ni posnetkov za prikaz"
+
+#: data/ui/track-list.ui:88
+msgid "name"
+msgstr "name"
+
+#: data/ui/track-list.ui:92
+msgid "artist"
+msgstr "izvajalec"
+
+#: data/ui/track-list.ui:96
+msgid "album"
+msgstr "album"
+
+#: data/ui/track-list.ui:100
+msgid "duration"
+msgstr "trajanje"
+
+#: data/ui/track-placeholder.ui:9 src/widgets/pages/loading-page.vala:37
+msgid "Loading…"
+msgstr "Poteka nalaganje …"
+
+#: data/ui/wave-settings.blp:42
+msgid "By diversity…"
+msgstr "Po raznolikosti ..."
+
+#: data/ui/wave-settings.blp:78
+msgid "By language…"
+msgstr "Po jeziku ..."
+
+#: data/ui/wave-settings.blp:93
+msgid "Can't get wave settings"
+msgstr "Nastavitev signalne oblike ni mogoče pridobiti"
+
+#: data/ui/window.blp:57 src/window.vala:252
+msgid "Reconnect"
+msgstr "Ponovno se poveži"
+
+#: data/ui/window.blp:58 src/application.vala:151
+msgid "Connection problems"
+msgstr "Težave s povezavo"
+
+#. Translators: NAME /n NAME
+#: src/about.vala:60
+msgid "translator-credits"
+msgstr "Martin Srebotnjak "
+
+#: src/about.vala:68
+msgid "Telegram channel"
+msgstr "Kanal Telegram"
+
+#: src/about.vala:69
+msgid "Financial support (Tinkoff)"
+msgstr "Finančna podpora (Tinkoff)"
+
+#: src/about.vala:70
+msgid "Financial support (Boosty)"
+msgstr "Finančna podpora (Boosty)"
+
+#. Please keep alphabetical
+#: src/about.vala:73
+msgid "Sponsors"
+msgstr "Sponzorji"
+
+#: src/application.vala:62
+msgid "Print version information and exit"
+msgstr "Izpiši podatke o različici in končaj"
+
+#: src/application.vala:145
+msgid "Connection restored"
+msgstr "Povezava je bila obnovljena"
+
+#: src/application.vala:273
+msgid "Previous"
+msgstr "Prejšnje"
+
+#: src/application.vala:274
+msgid "Next"
+msgstr "Naslednje"
+
+#: src/application.vala:357
+msgid "Current track can not be copied to the clipboard"
+msgstr "Trenutnega posnetka ni mogoče kopirati v odložišče"
+
+#: src/application.vala:371 src/application.vala:378 src/application.vala:435
+msgid "Can't parse clipboard content"
+msgstr "Vsebine odložišča ni mogoče razčleniti"
+
+#: src/application.vala:389
+msgid "Users view not implemented yet"
+msgstr "Pogled uporabnikov še ni implementiran"
+
+#: src/application.vala:405 src/application.vala:419
+msgid "Albums view not implemented yet"
+msgstr "Pogled albumov še ni implementiran"
+
+#: src/authenticator.vala:46
+msgid "Log out?"
+msgstr "Se želite odjaviti?"
+
+#: src/authenticator.vala:47
+msgid "You will need to log in again to use the app"
+msgstr "Če želite uporabljati program, se boste morali znova prijaviti"
+
+#. Translators: cancel of deleting playlist
+#: src/authenticator.vala:50
+#: src/widgets/preferences/cache-deletion-preferences.vala:95
+#: src/widgets/preferences/preferences-dialog.vala:139
+#: src/widgets/views/playlist.vala:89
+msgid "Cancel"
+msgstr "Prekliči"
+
+#: src/authenticator.vala:97
+#: src/widgets/preferences/cache-deletion-preferences.vala:129
+msgid "Moving…"
+msgstr "Premikanje …"
+
+#. Translators: Playlist with liked tracks
+#: src/client/api/objects/playlist/playlist.vala:49
+#: src/client/api/objects/playlist/playlist.vala:99 src/pager.vala:276
+msgid "Liked"
+msgstr "Všeč"
+
+#. Translators: Playlist that updates every day
+#: src/client/api/objects/playlist/playlist.vala:53
+msgid "Daily"
+msgstr "Dnevno"
+
+#. Translators: Unknown playlist
+#: src/client/api/objects/playlist/playlist.vala:57
+msgid "Unknown"
+msgstr "Neznano"
+
+#: src/client/cachier/storager.vala:124
+#, c-format
+msgid "Database was initialized, loc - %s"
+msgstr "Zbirka podatkov je bila inicializirana, loc - %s"
+
+#: src/client/cachier/storager.vala:801
+#, c-format
+msgid "Can't save object %s"
+msgstr "Predmeta %s ni mogoče shraniti"
+
+#: src/client/cachier/storager.vala:818
+msgid "Byte"
+msgid_plural "Bytes"
+msgstr[0] "bajtov"
+msgstr[1] "bajt"
+msgstr[2] "bajta"
+msgstr[3] "bajte"
+
+#: src/client/cachier/storager.vala:821
+msgid "Kilobyte"
+msgid_plural "Kilobytes"
+msgstr[0] "kilobajte"
+msgstr[1] "kilobajt"
+msgstr[2] "kilobajta"
+msgstr[3] "kilobajte"
+
+#: src/client/cachier/storager.vala:824
+msgid "Megabyte"
+msgid_plural "Megabytes"
+msgstr[0] "megabajtov"
+msgstr[1] "megabajt"
+msgstr[2] "megabajta"
+msgstr[3] "megabajte"
+
+#: src/client/cachier/storager.vala:827
+msgid "Gigabyte"
+msgid_plural "Gigabytes"
+msgstr[0] "gigabajtov"
+msgstr[1] "gigabajt"
+msgstr[2] "gigabajta"
+msgstr[3] "gigabajte"
+
+#: src/client/cachier/storager.vala:830
+msgid "Terabyte"
+msgid_plural "Terabytes"
+msgstr[0] "terabajtov"
+msgstr[1] "terabajt"
+msgstr[2] "terabajta"
+msgstr[3] "terabajte"
+
+#: src/client/cachier/storager.vala:859
+#, c-format
+msgid "Error while getting cache directory size. Message %s"
+msgstr "Napaka pri pridobivanju velikosti mape predpomnilnika. Sporočilo %s"
+
+#: src/client/cachier/storager.vala:894
+#, c-format
+msgid "Error while getting permanent directory size. Message %s"
+msgstr "Napaka pri pridobivanju velikosti trajne mape. Sporočilo %s"
+
+#: src/client/jsoner.vala:358 src/client/jsoner.vala:419
+#: src/client/jsoner.vala:526 src/client/jsoner.vala:550
+#, c-format
+msgid "Wrong type: expected %s, got %s"
+msgstr "Napačna vrsta: pričakovano %s, prejeto %s"
+
+#: src/client/player/mods/abstract-mode.vala:91
+msgid "Problems with queue"
+msgstr "Težave s čakalno vrsto"
+
+#. Translators: name of new created playlist
+#: src/client/talkers/yam-talker.vala:627
+msgid "New Playlist"
+msgstr "Nov seznam predvajanja"
+
+#: src/pager.vala:162
+#, c-format
+msgid "Can't set title \"%s\" to page"
+msgstr "Strani ni mogoče nastaviti naslova »%s«"
+
+#: src/pager.vala:173
+#, c-format
+msgid "Can't set icon with name \"%s\" to page"
+msgstr "Strani ni mogoče nastaviti ikone z imenom »%s«"
+
+#: src/pager.vala:199
+msgid "Reached max page count"
+msgstr "Doseženo največje število strani"
+
+#: src/pager.vala:205
+#, c-format
+msgid "Page '%s' already added"
+msgstr "Stran »%s« je že dodana"
+
+#: src/pager.vala:267
+msgid "Main"
+msgstr "Glavno"
+
+#: src/pager.vala:286
+msgid "Playlists"
+msgstr "Seznami predvajanja"
+
+#: src/pager.vala:311
+#, c-format
+msgid "Can't read pages file. Message: %s"
+msgstr "Datoteke strani ni mogoče prebrati. Sporočilo: %s"
+
+#: src/pager.vala:331
+#, c-format
+msgid "Can't create pages file. Message: %s"
+msgstr "Ni mogoče ustvariti datoteke strani. Sporočilo: %s"
+
+#: src/utils.vala:69
+msgid "Not implemented yet"
+msgstr "Še ni izvedeno"
+
+#: src/utils.vala:76
+msgid "Need authorization"
+msgstr "Potrebna je overitev"
+
+#: src/utils.vala:80
+msgid "Need Bookmate subscription"
+msgstr "Potrebujete naročnino na Bookmate"
+
+#: src/utils.vala:176 src/utils.vala:192
+msgid "Link copied to clipboard"
+msgstr "Povezava je kopirana v odložišče"
+
+#: src/utils.vala:241
+#, c-format
+msgid "Duration: %s h. %s min."
+msgstr "Trajanje: %s u. %s min."
+
+#: src/utils.vala:243
+#, c-format
+msgid "Duration: %s min."
+msgstr "Trajanje: %s min."
+
+#: src/utils.vala:357
+msgid "today"
+msgstr "danes"
+
+#: src/utils.vala:359
+msgid "yesterday"
+msgstr "včeraj"
+
+#: src/widgets/buttons/just/dislike-button.vala:37
+msgid "Remove dislike"
+msgstr "Odstrani neugajanje"
+
+#: src/widgets/buttons/just/dislike-button.vala:40
+msgid "Set dislike"
+msgstr "Nastavi neugajanje"
+
+#: src/widgets/buttons/just/like-button.vala:41
+msgid "Remove like"
+msgstr "Odstrani všeček"
+
+#: src/widgets/buttons/just/like-button.vala:48
+msgid "Set like"
+msgstr "Nastavi všeček"
+
+#: src/widgets/buttons/just/play-buttons/abstract-play-button.vala:37
+#: src/widgets/buttons/just/play-buttons/abstract-play-button.vala:40
+msgid "Pause"
+msgstr "Premor"
+
+#: src/widgets/buttons/just/play-buttons/abstract-play-button.vala:44
+#: src/widgets/buttons/just/play-buttons/abstract-play-button.vala:47
+msgid "Play"
+msgstr "Predvajaj"
+
+#: src/widgets/buttons/menu/playlist-options-button.vala:48
+#, c-format
+msgid "Playlist '%s'"
+msgstr "Seznam predvajanja »%s«"
+
+#: src/widgets/buttons/menu/playlist-options-button.vala:53
+#: src/widgets/buttons/menu/playlist-options-button.vala:66
+msgid "My Vibe by playlist"
+msgstr "My Vibe po seznamu predvajanja"
+
+#: src/widgets/buttons/menu/playlist-options-button.vala:54
+#: src/widgets/buttons/menu/playlist-options-button.vala:76
+#: src/widgets/buttons/menu/track-options-button.vala:80
+#: src/widgets/buttons/menu/track-options-button.vala:105
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:35
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:46
+#: src/widgets/buttons/menu/track-queue-options-button.vala:69
+#: src/widgets/buttons/menu/track-queue-options-button.vala:99
+msgid "Add to queue"
+msgstr "Dodaj v vrsto predvajanja"
+
+#: src/widgets/buttons/menu/playlist-options-button.vala:55
+#: src/widgets/buttons/menu/playlist-options-button.vala:77
+#: src/widgets/buttons/menu/track-options-button.vala:83
+#: src/widgets/buttons/menu/track-options-button.vala:108
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:39
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:50
+#: src/widgets/buttons/menu/track-queue-options-button.vala:73
+#: src/widgets/buttons/menu/track-queue-options-button.vala:103
+msgid "Share"
+msgstr "Deli"
+
+#: src/widgets/buttons/menu/primary-menu-button.vala:26
+msgid "Primary menu"
+msgstr "Osnovni meni"
+
+#: src/widgets/buttons/menu/primary-menu-button.vala:32
+msgid "Parse URL from clipboard"
+msgstr "Razčleni URL iz odložišča"
+
+#: src/widgets/buttons/menu/primary-menu-button.vala:33
+msgid "Preferences"
+msgstr "Nastavitve"
+
+#: src/widgets/buttons/menu/primary-menu-button.vala:34
+msgid "Keyboard Shortcuts"
+msgstr "Tipkovne bližnjice"
+
+#: src/widgets/buttons/menu/primary-menu-button.vala:35
+msgid "About Cassette"
+msgstr "O programu Kaseta"
+
+#: src/widgets/buttons/menu/track-options-button.vala:77
+#: src/widgets/buttons/menu/track-options-button.vala:94
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:32
+#: src/widgets/buttons/menu/track-queue-options-button.vala:66
+#: src/widgets/buttons/menu/track-queue-options-button.vala:87
+msgid "My Vibe by track"
+msgstr "My Vibe po posnetku"
+
+#: src/widgets/buttons/menu/track-options-button.vala:78
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:33
+#: src/widgets/buttons/menu/track-queue-options-button.vala:67
+msgid "Show info"
+msgstr "Pokaži podatke"
+
+#: src/widgets/buttons/menu/track-options-button.vala:79
+#: src/widgets/buttons/menu/track-options-button.vala:104
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:34
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:45
+#: src/widgets/buttons/menu/track-queue-options-button.vala:68
+#: src/widgets/buttons/menu/track-queue-options-button.vala:98
+msgid "Play next"
+msgstr "Predvajaj naslednje"
+
+#: src/widgets/buttons/menu/track-options-button.vala:81
+#: src/widgets/buttons/menu/track-options-button.vala:106
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:36
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:47
+#: src/widgets/buttons/menu/track-queue-options-button.vala:70
+#: src/widgets/buttons/menu/track-queue-options-button.vala:100
+msgid "Add to playlist"
+msgstr "Dodaj na seznam predvajanja"
+
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:37
+#: src/widgets/buttons/menu/track-playlist-options-button.vala:48
+msgid "Remove from playlist"
+msgstr "Odstrani s seznama predvajanja"
+
+#: src/widgets/buttons/menu/track-queue-options-button.vala:71
+#: src/widgets/buttons/menu/track-queue-options-button.vala:101
+msgid "Remove from queue"
+msgstr "Odstrani iz čakalne vrste"
+
+#: src/widgets/buttons/menu/volume-button.vala:121
+msgid "Volume control"
+msgstr "Nadzor glasnosti"
+
+#: src/widgets/buttons/menu/volume-button.vala:261
+msgid "Unmute"
+msgstr "Vklopi zvok"
+
+#: src/widgets/buttons/menu/volume-button.vala:261
+msgid "Mute"
+msgstr "Nemo"
+
+#: src/widgets/cache-indicator/job-info-badge.vala:44
+#: src/widgets/save-stack.vala:52 src/widgets/views/abstract-cachiable.vala:172
+msgid "Album"
+msgstr "Album"
+
+#. Translators: n track from n tracks saved
+#: src/widgets/cache-indicator/job-info-badge.vala:77
+#, c-format
+msgid "%d / %d saved%s"
+msgid_plural "%d / %d saved%s"
+msgstr[0] "%d / %d shranjenih%s"
+msgstr[1] "%d / %d shranjen%s"
+msgstr[2] "%d / %d shranjena%s"
+msgstr[3] "%d / %d shranjeni%s"
+
+#: src/widgets/cache-indicator/job-info-badge.vala:84
+#, c-format
+msgid "%d track saving now"
+msgid_plural "%d tracks saving now"
+msgstr[0] "Shranjevanje %d posnetkov je v teku"
+msgstr[1] "Shranjevanje %d posnetka je v teku"
+msgstr[2] "Shranjevanje %d posnetkov je v teku"
+msgstr[3] "Shranjevanje %d posnetkov je v teku"
+
+#: src/widgets/info-marks.vala:41
+#, c-format
+msgid "Track was replaced. Original version: %s, %s"
+msgstr "Posnetek je bil zamenjan. Izvirna različica: %s, %s"
+
+#: src/widgets/playlist-micro.vala:157 src/widgets/views/playlist.vala:241
+#, c-format
+msgid "Owner: %s"
+msgstr "Lastnik: %s"
+
+#: src/widgets/playlist-row.vala:85
+#, c-format
+msgid "Track count: %s"
+msgstr "Število posnetkov: %s"
+
+#: src/widgets/preferences/cache-deletion-preferences.vala:88
+#: src/widgets/preferences/preferences-dialog.vala:134
+msgid "Delete cache files?"
+msgstr "Želite izbrisati predpomnilniške datoteke?"
+
+#: src/widgets/preferences/cache-deletion-preferences.vala:89
+msgid "Move saved files?"
+msgstr "Ali želite premakniti shranjene datoteke?"
+
+#: src/widgets/preferences/cache-deletion-preferences.vala:90
+#: src/widgets/preferences/preferences-dialog.vala:135
+msgid ""
+"All cache will be deleted. This doesn't affect on saved playlists or albums"
+msgstr ""
+"Ves predpomnilnik bo izbrisan. To ne vpliva na shranjene sezname predvajanja "
+"ali albume"
+
+#: src/widgets/preferences/cache-deletion-preferences.vala:91
+msgid ""
+"All saved playlists and albums will be moved to cache files. This could take "
+"a while."
+msgstr ""
+"Vsi shranjeni seznami predvajanja in albumi bodo premaknjeni v "
+"predpomnilniške datoteke. To lahko traja nekaj časa."
+
+#: src/widgets/preferences/cache-deletion-preferences.vala:129
+msgid "Deleting…"
+msgstr "Poteka brisanje …"
+
+#: src/widgets/save-stack.vala:54
+msgid "Image"
+msgstr "Slika"
+
+#: src/widgets/save-stack.vala:58
+msgid "Track"
+msgstr "Steza"
+
+#: src/widgets/save-stack.vala:75
+#, c-format
+msgid "%s saving…"
+msgstr "Shranjevanje %s ..."
+
+#: src/widgets/save-stack.vala:76
+#, c-format
+msgid "%s cached"
+msgstr "%s predpomnjeno"
+
+#: src/widgets/save-stack.vala:77
+#, c-format
+msgid "%s saved"
+msgstr "%s shranjeno"
+
+#: src/widgets/sidebar/childs/player-queue.vala:66
+#, c-format
+msgid "Playlist \"%s\""
+msgstr "Seznam predvajanja »%s«"
+
+#: src/widgets/sidebar/childs/player-queue.vala:70
+#, c-format
+msgid "Album \"%s\""
+msgstr "Album »%s«"
+
+#: src/widgets/sidebar/childs/player-queue.vala:74
+#, c-format
+msgid "By search results \"%s\""
+msgstr "Po rezultatih iskanja »%s«"
+
+#: src/widgets/sidebar/childs/player-queue.vala:78
+msgid "Track list"
+msgstr "Seznam posnetkov"
+
+#: src/widgets/sidebar/childs/track-info.vala:68
+msgid "Your music track"
+msgstr "Vaš glasbeni posnetek"
+
+#: src/widgets/sidebar/childs/track-info.vala:84
+msgid "Music track"
+msgstr "Glasbeni posnetek"
+
+#: src/widgets/sidebar/childs/wave-settings.vala:39
+msgid "Wave settings"
+msgstr "Nastavitve signalne oblike"
+
+#: src/widgets/track-rows/base.vala:79 src/widgets/track-rows/default.vala:100
+msgid "Track is not available"
+msgstr "Posnetek ni na voljo"
+
+#. Translators: first %s - content type (Playlist), second - name
+#: src/widgets/views/abstract-cachiable.vala:78
+#, c-format
+msgid "%s '%s' saved successfully"
+msgstr "%s »%s« uspešno shranjen(a)"
+
+#. Translators: first %s - content type (Playlist), second - name
+#: src/widgets/views/abstract-cachiable.vala:89
+#, c-format
+msgid "%s '%s' saving was stopped, due to network error"
+msgstr "Shranjevanje (%s) »%s« je bilo preklicano zaradi napake v omrežju"
+
+#. Translators: first %s - content type (Playlist), second - name
+#: src/widgets/views/abstract-cachiable.vala:99
+#, c-format
+msgid "%s '%s' saving was aborted"
+msgstr "Shranjevanje (%s) »%s« je bilo prekinjeno"
+
+#. Translators: %s - content type (e.g. "Playlist")
+#: src/widgets/views/abstract-cachiable.vala:191
+#, c-format
+msgid "%s saving has started"
+msgstr "Začelo se je shranjevanje %s"
+
+#. Translators: first %s - content type (Playlist), second - name
+#: src/widgets/views/abstract-cachiable.vala:229
+#, c-format
+msgid "%s '%s' was moved from data to cache"
+msgstr "%s »%s« je bil(a) premaknjen(a) iz podatkov v predpomnilnik"
+
+#. Translators: first %s - content type (Playlist), second - name
+#: src/widgets/views/abstract-cachiable.vala:239
+#, c-format
+msgid "%s removing has started. Please do not close the app"
+msgstr "%s se odstranjuje. Ne zaprite programa"
+
+#: src/widgets/views/cant-show.vala:37
+#, c-format
+msgid "Error %d"
+msgstr "Napaka %d"
+
+#: src/widgets/views/cant-show.vala:41
+msgid "Can't load page"
+msgstr "Strani ni mogoče naložiti"
+
+#: src/widgets/views/cant-show.vala:44
+msgid "Can't find desired content"
+msgstr "Želene vsebine ni mogoče najti"
+
+#: src/widgets/views/playlist.vala:84
+msgid "Delete playlist?"
+msgstr "Želite izbrisati seznam predvajanja?"
+
+#: src/widgets/views/playlist.vala:85
+#, c-format
+msgid "Playlist '%s' will be permanently deleted."
+msgstr "Seznam predvajanja »%s« bo trajno izbrisan."
+
+#: src/widgets/views/playlist.vala:104
+#, c-format
+msgid "Playlist '%s' was deleted"
+msgstr "Seznam predvajanja »%s« je bil izbrisan"
+
+#. Translators: %s is female person
+#: src/widgets/views/playlist.vala:247
+#, c-format
+msgctxt "female person"
+msgid "%s updated playlist %s"
+msgstr "%s je posodobila seznam predvajanja %s"
+
+#. Translators: %s is male person
+#: src/widgets/views/playlist.vala:251
+#, c-format
+msgctxt "male person"
+msgid "%s updated playlist %s"
+msgstr "%s je posodobil seznam predvajanja %s"
+
+#: src/widgets/views/playlist.vala:281
+#, c-format
+msgid "Can't change visibility of '%s'"
+msgstr "Vidnosti »%s« ni mogoče spremeniti"
+
+#: src/widgets/views/playlist.vala:287
+#, c-format
+msgid "Playlist '%s' is public now"
+msgstr "Seznam predvajanja »%s« je zdaj javen"
+
+#: src/widgets/views/playlist.vala:290
+#, c-format
+msgid "Playlist '%s' is private now"
+msgstr "Seznam predvajanja »%s« je zdaj zaseben"
+
+#: src/window.vala:235
+#, c-format
+msgid "Window info message: %s"
+msgstr "Sporočilo informacijskega okna: %s"
From fd453e75e435d8580d0ba17c59092544cccc9c01 Mon Sep 17 00:00:00 2001
From: Vladimir Vaskov
Date: Tue, 3 Sep 2024 20:06:35 +0300
Subject: [PATCH 034/167] gitignore: remove unnecessary
---
.gitignore | 3 ---
1 file changed, 3 deletions(-)
diff --git a/.gitignore b/.gitignore
index 150df2a..daa0cbb 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,9 +8,6 @@ result
# Workspaces
*.code-workspace
-# Personal scripts
-my.*
-
# Po
*.mo
po/cassette.pot
From 72d76e03d73936439143fefdf6b630fabe2100c1 Mon Sep 17 00:00:00 2001
From: Vladimir Vaskov
Date: Sun, 15 Sep 2024 14:29:32 +0300
Subject: [PATCH 035/167] metainfo: rename apddata with metainfo
---
....xml.in => io.github.Rirusha.Cassette.metainfo.xml.in} | 4 ++--
data/meson.build | 8 ++++----
po/POTFILES.in | 2 +-
po/update_potfiles.sh | 2 +-
4 files changed, 8 insertions(+), 8 deletions(-)
rename data/{io.github.Rirusha.Cassette.appdata.xml.in => io.github.Rirusha.Cassette.metainfo.xml.in} (97%)
diff --git a/data/io.github.Rirusha.Cassette.appdata.xml.in b/data/io.github.Rirusha.Cassette.metainfo.xml.in
similarity index 97%
rename from data/io.github.Rirusha.Cassette.appdata.xml.in
rename to data/io.github.Rirusha.Cassette.metainfo.xml.in
index bbf33ff..af390f8 100644
--- a/data/io.github.Rirusha.Cassette.appdata.xml.in
+++ b/data/io.github.Rirusha.Cassette.metainfo.xml.in
@@ -40,8 +40,8 @@
touch
- #c0c0c0
- #303030
+ #fee372
+ #dd624b
mild
diff --git a/data/meson.build b/data/meson.build
index 65b85eb..3a2c81c 100644
--- a/data/meson.build
+++ b/data/meson.build
@@ -13,11 +13,11 @@ if desktop_utils.found()
endif
appstream_file = i18n.merge_file(
- input: '@0@.appdata.xml.in'.format(app_id),
- output: '@0@.appdata.xml'.format(app_id),
+ input: '@0@.metainfo.xml.in'.format(app_id),
+ output: '@0@.metainfo.xml'.format(app_id),
po_dir: '../po',
install: true,
- install_dir: join_paths(get_option('datadir'), 'appdata')
+ install_dir: join_paths(get_option('datadir'), 'metainfo')
)
appstreamcli = find_program('appstreamcli', required: false)
@@ -81,4 +81,4 @@ resources = gnome.compile_resources(
c_name: 'cassette'
)
-subdir('icons')
\ No newline at end of file
+subdir('icons')
diff --git a/po/POTFILES.in b/po/POTFILES.in
index b7312ee..f816343 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -1,6 +1,6 @@
-data/io.github.Rirusha.Cassette.appdata.xml.in
data/io.github.Rirusha.Cassette.desktop.in
data/io.github.Rirusha.Cassette-Devel.desktop.in
+data/io.github.Rirusha.Cassette.metainfo.xml.in
data/ui/account-info-dialog.blp
data/ui/begin-view.ui
data/ui/cache-deletion-preferences.ui
diff --git a/po/update_potfiles.sh b/po/update_potfiles.sh
index 59454fe..c50d273 100644
--- a/po/update_potfiles.sh
+++ b/po/update_potfiles.sh
@@ -7,7 +7,7 @@ find ./data/ui -iname "*.ui" -type f -exec grep -l "translatable" {} + | while r
find ./data/ui -iname "*.blp" -type f -exec grep -lrE '_\(|C_|ngettext' {} + | while read file; do echo "${file#./}" >> ./po/unsort-POTFILES.in; done
find ./src -iname "*.vala" -type f -exec grep -lrE '_\(|C_|ngettext' {} + | while read file; do echo "${file#./}" >> ./po/unsort-POTFILES.in; done
find ./data/ -iname "*.desktop.in" | while read file; do echo "${file#./}" >> ./po/unsort-POTFILES.in; done
-find ./data/ -iname "*.appdata.xml.in" | while read file; do echo "${file#./}" >> ./po/unsort-POTFILES.in; done
+find ./data/ -iname "*.metainfo.xml.in" | while read file; do echo "${file#./}" >> ./po/unsort-POTFILES.in; done
cat ./po/unsort-POTFILES.in | sort | uniq > ./po/POTFILES.in
From bd13d27ba8b5b87c85b587013824e3536321cadf Mon Sep 17 00:00:00 2001
From: Vladimir Vaskov
Date: Sun, 15 Sep 2024 14:33:04 +0300
Subject: [PATCH 036/167] submodules: add vala-checkers
---
.gitmodules | 3 +++
checkers/empty_lines_checker.py | 48 ---------------------------------
checkers/indentation_checker.py | 47 --------------------------------
vala-checkers | 1 +
4 files changed, 4 insertions(+), 95 deletions(-)
delete mode 100644 checkers/empty_lines_checker.py
delete mode 100644 checkers/indentation_checker.py
create mode 160000 vala-checkers
diff --git a/.gitmodules b/.gitmodules
index e925535..7cb660c 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,3 +1,6 @@
[submodule "build-aux/flatpak/stable"]
path = build-aux/flatpak/stable
url = git@github.com:flathub/io.github.Rirusha.Cassette.git
+[submodule "vala-checkers"]
+ path = vala-checkers
+ url = git@ssh.gitlab.gnome.org:Rirusha/vala-checkers.git
diff --git a/checkers/empty_lines_checker.py b/checkers/empty_lines_checker.py
deleted file mode 100644
index 775da39..0000000
--- a/checkers/empty_lines_checker.py
+++ /dev/null
@@ -1,48 +0,0 @@
-#!/bin/bash
-
-import sys
-import os
-import re
-
-def check_indentation (file_path, root_dir) -> list[str]:
- file_err_list = []
-
- with open (file_path, 'r') as file:
- lines = file.readlines ()
-
- empty_lines_count = 0
- for i, line in enumerate (lines):
- if line.strip () == "":
- empty_line_count += 1
- else:
- empty_line_count = 0
-
- if empty_line_count > 1:
- file_err_list.append (f"To mant empty lines in file '{file_path.replace (root_dir, "", 1)}' at line {i + 1}: \"{line.rstrip ()}\".")
-
- return file_err_list
-
-def scan_directory (directory) -> list[str]:
- err_list = []
-
- for root, dirs, files in os.walk (directory):
- for file in files:
- if (file.endswith ('.vala') or file.endswith ('.blp')) and (("/data/ui" in root or "/src" in root or "/tests" in root) and "/.flatpak/" not in root):
- file_path = os.path.join (root, file)
-
- file_err_list = check_indentation (file_path, directory)
-
- if (file_err_list):
- err_list += file_err_list
-
- return err_list
-
-
-if __name__ == "__main__":
- err_list = scan_directory (sys.argv[1])
-
- print (*err_list, sep="\n", end="\n\n")
- print (f"Total errors: {len (err_list)}")
-
- if (len (err_list) != 0):
- sys.exit (1)
diff --git a/checkers/indentation_checker.py b/checkers/indentation_checker.py
deleted file mode 100644
index 5a4a28c..0000000
--- a/checkers/indentation_checker.py
+++ /dev/null
@@ -1,47 +0,0 @@
-#!/bin/bash
-
-import sys
-import os
-import re
-
-def check_indentation (file_path, root_dir) -> list[str]:
- file_err_list = []
-
- with open (file_path, 'r') as file:
- lines = file.readlines ()
-
- for i, line in enumerate (lines):
- if "ind-check=skip-file" in line:
- return
-
- if re.match (r'^(?!.*(?:new|if|else| => |try|catch|switch|}|get |set |while|namespace|class|foreach|throws|ind-check=ignore| = {))(?=(?:.*?\s+\w+\s+\w+.*?){1}).*{', line):
- indentation = len (re.match(r'^(\s*)', line).group(1))
- if indentation != 4:
- file_err_list.append (f"Indentation error in file '{file_path.replace (root_dir, "", 1)}' at line {i + 1}: \"{line.rstrip ()}\". {indentation} spaces instead of 4.")
-
- return file_err_list
-
-def scan_directory (directory) -> list[str]:
- err_list = []
-
- for root, dirs, files in os.walk (directory):
- for file in files:
- if file.endswith ('.vala'):
- file_path = os.path.join (root, file)
-
- file_err_list = check_indentation (file_path, directory)
-
- if (file_err_list):
- err_list += file_err_list
-
- return err_list
-
-
-if __name__ == "__main__":
- err_list = scan_directory (sys.argv[1])
-
- print (*err_list, sep="\n", end="\n\n")
- print (f"Total errors: {len (err_list)}")
-
- if (len (err_list) != 0):
- sys.exit (1)
diff --git a/vala-checkers b/vala-checkers
new file mode 160000
index 0000000..421f9c2
--- /dev/null
+++ b/vala-checkers
@@ -0,0 +1 @@
+Subproject commit 421f9c29a62f970b4dadfcc84831beea3f0efd6a
From 0d14e16beab00c65db6eb8ea286c896b95c9a1e1 Mon Sep 17 00:00:00 2001
From: Vladimir Vaskov
Date: Sun, 15 Sep 2024 14:50:29 +0300
Subject: [PATCH 037/167] flatpak: update manifests
---
.../flatpak/nightly/io.github.Rirusha.Cassette-Devel.json | 4 ++--
.../nightly/io.github.Rirusha.Cassette-PreRelease.json | 6 +++---
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/build-aux/flatpak/nightly/io.github.Rirusha.Cassette-Devel.json b/build-aux/flatpak/nightly/io.github.Rirusha.Cassette-Devel.json
index d05d266..8d03d3b 100644
--- a/build-aux/flatpak/nightly/io.github.Rirusha.Cassette-Devel.json
+++ b/build-aux/flatpak/nightly/io.github.Rirusha.Cassette-Devel.json
@@ -40,8 +40,8 @@
{
"type": "git",
"url": "https://gitlab.gnome.org/jwestman/blueprint-compiler",
- "tag": "v0.12.0",
- "commit": "66b43c36cf1017c878762007373964a096b3d2a5"
+ "tag": "v0.14.0",
+ "commit": "8e10fcf8692108b9d4ab78f41086c5d7773ef864"
}
]
},
diff --git a/build-aux/flatpak/nightly/io.github.Rirusha.Cassette-PreRelease.json b/build-aux/flatpak/nightly/io.github.Rirusha.Cassette-PreRelease.json
index ab0fd94..de3f0ad 100644
--- a/build-aux/flatpak/nightly/io.github.Rirusha.Cassette-PreRelease.json
+++ b/build-aux/flatpak/nightly/io.github.Rirusha.Cassette-PreRelease.json
@@ -1,7 +1,7 @@
{
"id" : "io.github.Rirusha.Cassette",
"runtime" : "org.gnome.Platform",
- "runtime-version" : "46",
+ "runtime-version" : "47",
"sdk" : "org.gnome.Sdk",
"command" : "cassette",
"finish-args" : [
@@ -40,8 +40,8 @@
{
"type": "git",
"url": "https://gitlab.gnome.org/jwestman/blueprint-compiler",
- "tag": "v0.12.0",
- "commit": "66b43c36cf1017c878762007373964a096b3d2a5"
+ "tag": "v0.14.0",
+ "commit": "8e10fcf8692108b9d4ab78f41086c5d7773ef864"
}
]
},
From 529f0f968eb688a671856bfa04fe5b15e69be6b0 Mon Sep 17 00:00:00 2001
From: Vladimir Vaskov
Date: Sun, 15 Sep 2024 14:50:41 +0300
Subject: [PATCH 038/167] submodule: update stable manifest
---
build-aux/flatpak/stable | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/build-aux/flatpak/stable b/build-aux/flatpak/stable
index 4e75fdf..ed180ad 160000
--- a/build-aux/flatpak/stable
+++ b/build-aux/flatpak/stable
@@ -1 +1 @@
-Subproject commit 4e75fdfec4b810aa091a1365da824c904a7554d5
+Subproject commit ed180ad6338a6906f72711e88fbfc99e6c211b2d
From 7338123de28db39295263a3fdb2e99970c7a1513 Mon Sep 17 00:00:00 2001
From: Vladimir Vaskov
Date: Sun, 15 Sep 2024 14:59:28 +0300
Subject: [PATCH 039/167] update links
---
cassette.doap | 8 ++++----
data/io.github.Rirusha.Cassette.metainfo.xml.in | 14 +++++++-------
src/about.vala | 4 ++--
3 files changed, 13 insertions(+), 13 deletions(-)
diff --git a/cassette.doap b/cassette.doap
index 5d0a36a..e5dcca5 100644
--- a/cassette.doap
+++ b/cassette.doap
@@ -56,9 +56,9 @@
GTK/Adwaita application that allows you to use Yandex Music service on Linux operating systems
-
-
-
+
+
+
Vala
GTK 4
@@ -70,7 +70,7 @@
-
+
Rirusha
diff --git a/data/io.github.Rirusha.Cassette.metainfo.xml.in b/data/io.github.Rirusha.Cassette.metainfo.xml.in
index af390f8..688614e 100644
--- a/data/io.github.Rirusha.Cassette.metainfo.xml.in
+++ b/data/io.github.Rirusha.Cassette.metainfo.xml.in
@@ -50,19 +50,19 @@
- https://github.com/Rirusha/Cassette/blob/master/data/images/1-liked.png?raw=true
+ https://gitlab.gnome.org/Rirusha/Cassette/-/raw/main/data/images/1-liked.png
- https://github.com/Rirusha/Cassette/blob/master/data/images/2-playlists.png?raw=true
+ https://gitlab.gnome.org/Rirusha/Cassette/-/raw/main/data/images/2-playlists.png
- https://github.com/Rirusha/Cassette/blob/master/data/images/3-lyrics.png?raw=true
+ https://gitlab.gnome.org/Rirusha/Cassette/-/raw/main/data/images/3-lyrics.png
- https://github.com/Rirusha/Cassette/blob/master/data/images/4-queue.png?raw=true
+ https://gitlab.gnome.org/Rirusha/Cassette/-/raw/main/data/images/4-queue.png
- https://github.com/Rirusha/Cassette/blob/master/data/images/5-main-settings.png?raw=true
+ https://gitlab.gnome.org/Rirusha/Cassette/-/raw/main/data/images/5-main-settings.png
Unofficial Yandex.Music client
@@ -132,8 +132,8 @@
- https://github.com/Rirusha/Cassette
- https://github.com/Rirusha/Cassette/issues
+ https://gitlab.gnome.org/Rirusha/Cassette
+ https://gitlab.gnome.org/Rirusha/Cassette/-/issues
https://t.me/CassetteGNOME_Discussion
Rirusha
diff --git a/src/about.vala b/src/about.vala
index 46ce47f..6c8e9c1 100644
--- a/src/about.vala
+++ b/src/about.vala
@@ -18,10 +18,10 @@
namespace Cassette {
public Adw.AboutDialog build_about_dialog () {
- const string RIRUSHA = "Rirusha https://github.com/Rirusha";
+ const string RIRUSHA = "Rirusha https://gitlab.gnome.org/Rirusha";
const string TELEGRAM_CHAT = "https://t.me/CassetteGNOME_Discussion";
const string TELEGRAM_CHANNEL = "https://t.me/CassetteGNOME_Devlog";
- const string ISSUE_LINK = "https://github.com/Rirusha/Cassette/issues/new";
+ const string ISSUE_LINK = "https://gitlab.gnome.org/Rirusha/Cassette/-/issues";
const string TINKOFF_SUPPORT_LINK = "https://www.tinkoff.ru/cf/21GCxLuFuE9";
const string BOOSTY_SUPPORT_LINK = "https://boosty.to/rirusha/donate";
From f710f8443d3b3a7d5a95f67d63977e13302def2b Mon Sep 17 00:00:00 2001
From: Vladimir Vaskov
Date: Sun, 15 Sep 2024 15:02:58 +0300
Subject: [PATCH 040/167] vscode: update .vscode
---
.vscode/gdb.sh | 3 ---
.vscode/launch.json | 19 -------------------
.vscode/tasks.json | 14 ++++----------
3 files changed, 4 insertions(+), 32 deletions(-)
delete mode 100755 .vscode/gdb.sh
delete mode 100644 .vscode/launch.json
diff --git a/.vscode/gdb.sh b/.vscode/gdb.sh
deleted file mode 100755
index d07f490..0000000
--- a/.vscode/gdb.sh
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-
-flatpak build --with-appdir --allow=devel --bind-mount=/run/user/1000/doc=/run/user/1000/doc/by-app/io.github.Rirusha.Cassette-Devel --share=network --share=ipc --socket=fallback-x11 --socket=wayland --device=dri --socket=pulseaudio --filesystem=xdg-music:ro --filesystem=xdg-download:ro --talk-name=org.mpris.MediaPlayer2.Player --own-name=org.mpris.MediaPlayer2.cassette .flatpak/repo gdb "$@"
\ No newline at end of file
diff --git a/.vscode/launch.json b/.vscode/launch.json
deleted file mode 100644
index efdf0ba..0000000
--- a/.vscode/launch.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- // Use IntelliSense to learn about possible attributes.
- // Hover to view descriptions of existing attributes.
- // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
- "version": "0.2.0",
- "configurations": [
- {
- "name": "Debug",
- "type": "gdb",
- "request": "launch",
- "preLaunchTask": "Flatpak launch build",
- "gdbpath": "${workspaceRoot}/.vscode/gdb.sh",
- "target": "${workspaceRoot}/_build/src/cassette",
- "arguments": "",
- "cwd": "${workspaceRoot}",
- "valuesFormatting": "parseText"
- },
- ]
-}
\ No newline at end of file
diff --git a/.vscode/tasks.json b/.vscode/tasks.json
index fd1e1af..f72ddf2 100644
--- a/.vscode/tasks.json
+++ b/.vscode/tasks.json
@@ -12,19 +12,19 @@
{
"label": "Empty lines check",
"type": "shell",
- "command": "python3 ${workspaceFolder}/checkers/empty_lines_checker.py .",
+ "command": "python3 ${workspaceFolder}/vala-checkers/empty_lines_checker.py .",
"problemMatcher": []
},
{
"label": "Indentation check",
"type": "shell",
- "command": "python3 ${workspaceFolder}/checkers/indentation_checker.py .",
+ "command": "python3 ${workspaceFolder}/vala-checkers/indentation_checker.py .",
"problemMatcher": []
},
{
"label": "Full check",
"type": "shell",
- "command": "io.elementary.vala-lint -d . -c vala-lint.conf && python3 ${workspaceFolder}/checkers/empty_lines_checker.py . && python3 ${workspaceFolder}/checkers/indentation_checker.py .",
+ "command": "io.elementary.vala-lint -d . -c vala-lint.conf && python3 ${workspaceFolder}/vala-checkers/empty_lines_checker.py . && python3 ${workspaceFolder}/vala-checkers/indentation_checker.py .",
"problemMatcher": []
},
{
@@ -39,12 +39,6 @@
"command": "blueprint-compiler format -f -s 2 data/ui/*.blp",
"problemMatcher": []
},
- {
- "label": "Generate .pot",
- "type": "shell",
- "command": "sh po/update_potfiles.sh && flatpak run --command=meson --filesystem=host org.gnome.Sdk compile -C _build cassette-pot",
- "problemMatcher": []
- },
{
"label": "Run tests",
"type": "shell",
@@ -56,4 +50,4 @@
"problemMatcher": []
}
]
-}
\ No newline at end of file
+}
From 01792186a4851434c2d7f80b89327f16ad41df01 Mon Sep 17 00:00:00 2001
From: Vladimir Vaskov
Date: Sun, 15 Sep 2024 15:05:23 +0300
Subject: [PATCH 041/167] gitignore: update
---
.gitignore | 9 +++------
1 file changed, 3 insertions(+), 6 deletions(-)
diff --git a/.gitignore b/.gitignore
index daa0cbb..1549e4c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,12 +1,13 @@
# build dir
-builddir*
+_build
# nix
result
.direnv
-# Workspaces
+# Codium
*.code-workspace
+.vscode/settings.json
# Po
*.mo
@@ -17,7 +18,3 @@ po/cassette.pot
build-dir
repo
.flatpak
-_build
-
-# gh
-settings.json
\ No newline at end of file
From 1e80c6ca5fba6c39e7c8783863b0409ef67781cd Mon Sep 17 00:00:00 2001
From: Vladimir Vaskov
Date: Sun, 15 Sep 2024 15:45:45 +0300
Subject: [PATCH 042/167] readme: add multilanguage
---
README.md | 217 +---------------------------------------
docs/README-ru.md | 247 ++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 250 insertions(+), 214 deletions(-)
create mode 100644 docs/README-ru.md
diff --git a/README.md b/README.md
index 6615b2c..30549d8 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,5 @@
+[](docs/README-ru.md)
+
@@ -5,7 +7,7 @@
- GTK4/Adwaita приложение, которое позволит вам использовать Я.Музыку на Linux.
+ GTK4/Adwaita application that allows you to use Yandex Music service on Linux operating systems.
@@ -32,216 +34,3 @@
-
-
-## Ход текущей разработки
-[](https://github.com/Rirusha/Cassette/milestone/2) \
-[](https://github.com/Rirusha/Cassette/milestone/8)
-
-Все запланированные фичи можете [посмотреть в бэклоге](https://github.com/users/Rirusha/projects/2)
-
-
-## Установка из репозитория
-
-Приложение Cassette доступно здесь:
-
-[](https://repology.org/project/cassette/versions)
-
-### ALT Sisyphus
-```shell
-su -
-apt-get install cassette
-```
-
-### Arch Linux
-
-> [!NOTE]
-> Большинство AUR Helper'ов поддерживает Pacman-style флаги, например, yay.
-
-#### yay
-```shell
-yay -S cassette
-```
-
-#### pamac
-```shell
-pamac install cassette
-```
-
-
-## Установка c помощью Flatpak
-
-Вы можете скачать по [ссылке](https://flathub.org/apps/details/io.github.Rirusha.Cassette) или используя терминал
-
-```shell
-flatpak install io.github.Rirusha.Cassette
-```
-
-
-## Nightly версия
-
-> [!WARNING]
-> Данная версия собирается и обновляется при каждом изменение в коде, поэтому может оказаться нестабильной.
-
-### Flatpak
-
-#### Подключаем репозиторий `gnome-nightly` и устанавливаем GNOME Platform:
-```shell
-flatpak remote-add --if-not-exists gnome-nightly https://nightly.gnome.org/gnome-nightly.flatpakrepo
-flatpak install gnome-nightly org.gnome.Platform//master
-```
-
-#### Подключаем Nightly репозиторий и устанавливаем приложение:
-```shell
-flatpak remote-add --if-not-exists cassette-nightly https://rirusha.github.io/Cassette/index.flatpakrepo
-flatpak install cassette-nightly io.github.Rirusha.Cassette-Devel
-```
-
-#### Для удаления репозитория нужно выполнить:
-```shell
-flatpak remote-delete cassette-nightly
-```
-
-### Arch Linux
-
-> [!NOTE]
-> При необходимости, в arch-подобных системах можно установить Nightly версию из репозитория AUR.
-> По возможности рекомендуется использовать Flatpak версию.
->
-> Большинство AUR Helper'ов поддерживает Pacman-style флаги, например, yay.
-
-#### yay
-```shell
-yay -S cassette-git
-```
-
-#### pamac
-```shell
-pamac install cassette-git
-```
-
-### NixOS
-```shell
-nix run github:Rirusha/Cassette
-```
-
-## Установка в Windows
-
-Способы установки приложения в Windows описаны [здесь](docs/INSTALLATION_ON_WINDOWS.md).
-
-
-## Сборка из исходного кода
-
-#### Зависимости:
-* `gtk4`, version: `>= 4.14`
-* `libadwaita-1`, version: `>= 1.5`
-* `libsoup-3.0`
-* `gdk-pixbuf-2.0`
-* `json-glib-1.0`
-* `sqlite3`
-* `gee-0.8`
-* `libxml-2.0`
-* `gstreamer-1.0`
-* `webkitgtk-6.0`
-* `gio-2.0`, version: `>= 2.72`
-* `git`, только для `devel`
-
-#### Утилиты для сборки:
-* `meson`
-* `ninja`
-* `cmake`
-* `blueprint-compiler`
-* `gcc`
-* `valac`
-* `pkg`
-* `appstream-utils`
-
-### Сборка:
-
-#### latest
-> [!NOTE]
-> В данной версии будут недоступны нестабильные функции, находящиеся в разработке.
-```shell
-meson setup builddir
-```
-
-#### devel
-> [!WARNING]
-> В данной версии будут доступны все devel функции, приложение может работать нестабильно.
-```shell
-meson setup builddir
-meson configure -Dprofile=development builddir
-```
-
-### Тестирование
-```shell
-ninja -C builddir test
-```
-
-### Установка:
-```shell
-sudo ninja -C builddir install
-```
-
-### Удаление:
-```shell
-sudo ninja -C builddir uninstall
-```
-
-
-## Решение проблем
-
-Решение известных проблем описано на странице Cassette на [ALT Gnome Wiki](https://alt-gnome.wiki/cassette.html#решение-проблем).
-
-Также загляните во вкладку [issues](https://github.com/Rirusha/Cassette/issues), если вашей проблемы нет и там, расскажите о ней, заведя новый [issue](https://github.com/Rirusha/Cassette/issues/new).
-
-
-## Для разработчиков
-
-### Использование Visual Studio Code
-Репозиторий имеет рекомендуемые расширения для проверки и запуска приложения с gdb.
-
-### Зависимости
-
-#### репозиторий [gnome-nightly](https://wiki.gnome.org/Apps/Nightly):
-```shell
-flatpak remote-add --if-not-exists gnome-nightly https://nightly.gnome.org/gnome-nightly.flatpakrepo
-```
-
-#### Для запуска
-`org.gnome.Platform//master`
-```shell
-flatpak install org.gnome.Platform//master
-```
-
-#### Для сборки
-`org.gnome.Sdk//master` \
-`org.freedesktop.Sdk.Extension.vala//23.08beta`
-```shell
-flatpak install org.gnome.Sdk//master org.freedesktop.Sdk.Extension.vala//23.08beta
-```
-
-
-## Поддержка
-Вы можете поддержать несколькими способами:
-- Создать ишью с проблемой или предложением по улучшению
-- Отправить pull request с фиксом или добавлением функционала
-- Поддержать рублём (Просьба указывать в "Сообщении получателю" свой никнейм при отправлении через Тинькофф):
-
-
-
-
-
-
-
-
-
-
-
-
-
-## Благодарность
-Спасибо [MarshalX](https://github.com/MarshalX). Библиотека [yandex-music-api](https://github.com/MarshalX/yandex-music-api) была использована в качестве документации к api.
-
-> [!NOTE]
-Cassette - неофициальный клиент, не связан с компанией Яндекс и не одобрен ей.
diff --git a/docs/README-ru.md b/docs/README-ru.md
new file mode 100644
index 0000000..9c0bf93
--- /dev/null
+++ b/docs/README-ru.md
@@ -0,0 +1,247 @@
+
+
+
+ Cassette
+
+
+
+ GTK4/Adwaita приложение, которое позволит вам использовать Я.Музыку на Linux.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+## Ход текущей разработки
+[](https://github.com/Rirusha/Cassette/milestone/2) \
+[](https://github.com/Rirusha/Cassette/milestone/8)
+
+Все запланированные фичи можете [посмотреть в бэклоге](https://github.com/users/Rirusha/projects/2)
+
+
+## Установка из репозитория
+
+Приложение Cassette доступно здесь:
+
+[](https://repology.org/project/cassette/versions)
+
+### ALT Sisyphus
+```shell
+su -
+apt-get install cassette
+```
+
+### Arch Linux
+
+> [!NOTE]
+> Большинство AUR Helper'ов поддерживает Pacman-style флаги, например, yay.
+
+#### yay
+```shell
+yay -S cassette
+```
+
+#### pamac
+```shell
+pamac install cassette
+```
+
+
+## Установка c помощью Flatpak
+
+Вы можете скачать по [ссылке](https://flathub.org/apps/details/io.github.Rirusha.Cassette) или используя терминал
+
+```shell
+flatpak install io.github.Rirusha.Cassette
+```
+
+
+## Nightly версия
+
+> [!WARNING]
+> Данная версия собирается и обновляется при каждом изменение в коде, поэтому может оказаться нестабильной.
+
+### Flatpak
+
+#### Подключаем репозиторий `gnome-nightly` и устанавливаем GNOME Platform:
+```shell
+flatpak remote-add --if-not-exists gnome-nightly https://nightly.gnome.org/gnome-nightly.flatpakrepo
+flatpak install gnome-nightly org.gnome.Platform//master
+```
+
+#### Подключаем Nightly репозиторий и устанавливаем приложение:
+```shell
+flatpak remote-add --if-not-exists cassette-nightly https://rirusha.github.io/Cassette/index.flatpakrepo
+flatpak install cassette-nightly io.github.Rirusha.Cassette-Devel
+```
+
+#### Для удаления репозитория нужно выполнить:
+```shell
+flatpak remote-delete cassette-nightly
+```
+
+### Arch Linux
+
+> [!NOTE]
+> При необходимости, в arch-подобных системах можно установить Nightly версию из репозитория AUR.
+> По возможности рекомендуется использовать Flatpak версию.
+>
+> Большинство AUR Helper'ов поддерживает Pacman-style флаги, например, yay.
+
+#### yay
+```shell
+yay -S cassette-git
+```
+
+#### pamac
+```shell
+pamac install cassette-git
+```
+
+### NixOS
+```shell
+nix run github:Rirusha/Cassette
+```
+
+## Установка в Windows
+
+Способы установки приложения в Windows описаны [здесь](INSTALLATION_ON_WINDOWS.md).
+
+
+## Сборка из исходного кода
+
+#### Зависимости:
+* `gtk4`, version: `>= 4.14`
+* `libadwaita-1`, version: `>= 1.5`
+* `libsoup-3.0`
+* `gdk-pixbuf-2.0`
+* `json-glib-1.0`
+* `sqlite3`
+* `gee-0.8`
+* `libxml-2.0`
+* `gstreamer-1.0`
+* `webkitgtk-6.0`
+* `gio-2.0`, version: `>= 2.72`
+* `git`, только для `devel`
+
+#### Утилиты для сборки:
+* `meson`
+* `ninja`
+* `cmake`
+* `blueprint-compiler`
+* `gcc`
+* `valac`
+* `pkg`
+* `appstream-utils`
+
+### Сборка:
+
+#### latest
+> [!NOTE]
+> В данной версии будут недоступны нестабильные функции, находящиеся в разработке.
+```shell
+meson setup builddir
+```
+
+#### devel
+> [!WARNING]
+> В данной версии будут доступны все devel функции, приложение может работать нестабильно.
+```shell
+meson setup builddir
+meson configure -Dprofile=development builddir
+```
+
+### Тестирование
+```shell
+ninja -C builddir test
+```
+
+### Установка:
+```shell
+sudo ninja -C builddir install
+```
+
+### Удаление:
+```shell
+sudo ninja -C builddir uninstall
+```
+
+
+## Решение проблем
+
+Решение известных проблем описано на странице Cassette на [ALT Gnome Wiki](https://alt-gnome.wiki/cassette.html#решение-проблем).
+
+Также загляните во вкладку [issues](https://github.com/Rirusha/Cassette/issues), если вашей проблемы нет и там, расскажите о ней, заведя новый [issue](https://github.com/Rirusha/Cassette/issues/new).
+
+
+## Для разработчиков
+
+### Использование Visual Studio Code
+Репозиторий имеет рекомендуемые расширения для проверки и запуска приложения с gdb.
+
+### Зависимости
+
+#### репозиторий [gnome-nightly](https://wiki.gnome.org/Apps/Nightly):
+```shell
+flatpak remote-add --if-not-exists gnome-nightly https://nightly.gnome.org/gnome-nightly.flatpakrepo
+```
+
+#### Для запуска
+`org.gnome.Platform//master`
+```shell
+flatpak install org.gnome.Platform//master
+```
+
+#### Для сборки
+`org.gnome.Sdk//master` \
+`org.freedesktop.Sdk.Extension.vala//23.08beta`
+```shell
+flatpak install org.gnome.Sdk//master org.freedesktop.Sdk.Extension.vala//23.08beta
+```
+
+
+## Поддержка
+Вы можете поддержать несколькими способами:
+- Создать ишью с проблемой или предложением по улучшению
+- Отправить pull request с фиксом или добавлением функционала
+- Поддержать рублём (Просьба указывать в "Сообщении получателю" свой никнейм при отправлении через Тинькофф):
+
+
+
+
+
+
+
+
+
+
+
+
+
+## Благодарность
+Спасибо [MarshalX](https://github.com/MarshalX). Библиотека [yandex-music-api](https://github.com/MarshalX/yandex-music-api) была использована в качестве документации к api.
+
+> [!NOTE]
+Cassette - неофициальный клиент, не связан с компанией Яндекс и не одобрен ей.
From 24bcbb0f323ad410ef61a8ba4e277f1ae1d57e59 Mon Sep 17 00:00:00 2001
From: Vladimir Vaskov
Date: Sun, 15 Sep 2024 15:48:07 +0300
Subject: [PATCH 043/167] docs: update README
---
README.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/README.md b/README.md
index 30549d8..fc55b3b 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,4 @@
+README in other languages: \
[](docs/README-ru.md)
From bb09169f65c67c361360c4890a669b978eef5273 Mon Sep 17 00:00:00 2001
From: Vladimir Vaskov
Date: Tue, 17 Sep 2024 10:00:18 +0300
Subject: [PATCH 044/167] change my name
---
data/io.github.Rirusha.Cassette.metainfo.xml.in | 2 +-
src/about.vala | 16 ++++++++--------
src/application.vala | 2 +-
src/authenticator.vala | 2 +-
src/client/api/difference-builder.vala | 2 +-
src/client/api/objects/account/about.vala | 2 +-
.../objects/additional-info/lyrics-major.vala | 2 +-
.../api/objects/additional-info/lyrics.vala | 2 +-
.../objects/additional-info/similar-tracks.vala | 2 +-
src/client/api/objects/album/album.vala | 2 +-
src/client/api/objects/album/label.vala | 2 +-
src/client/api/objects/album/volume.vala | 2 +-
src/client/api/objects/api-error.vala | 2 +-
src/client/api/objects/artist/artist.vala | 2 +-
src/client/api/objects/artist/counts.vala | 2 +-
src/client/api/objects/artist/link.vala | 2 +-
src/client/api/objects/artist/ratings.vala | 2 +-
src/client/api/objects/cover.vala | 2 +-
src/client/api/objects/download-info.vala | 2 +-
src/client/api/objects/icon.vala | 2 +-
src/client/api/objects/library/all-ids.vala | 2 +-
src/client/api/objects/playlist/case-forms.vala | 2 +-
.../api/objects/playlist/liked-playlist.vala | 2 +-
src/client/api/objects/playlist/made-for.vala | 2 +-
.../api/objects/playlist/play-counter.vala | 2 +-
.../api/objects/playlist/playlist-absence.vala | 2 +-
.../playlist/playlist-recommendations.vala | 2 +-
src/client/api/objects/playlist/playlist.vala | 2 +-
src/client/api/objects/playlist/user.vala | 2 +-
src/client/api/objects/plays.vala | 2 +-
src/client/api/objects/rotor/block.vala | 2 +-
src/client/api/objects/rotor/dashboard.vala | 2 +-
src/client/api/objects/rotor/event.vala | 2 +-
src/client/api/objects/rotor/feedback.vala | 2 +-
src/client/api/objects/rotor/id.vala | 2 +-
src/client/api/objects/rotor/queue.vala | 2 +-
src/client/api/objects/rotor/restrictions.vala | 2 +-
src/client/api/objects/rotor/seed.vala | 2 +-
src/client/api/objects/rotor/sequence.vala | 2 +-
src/client/api/objects/rotor/session-new.vala | 2 +-
src/client/api/objects/rotor/settings.vala | 2 +-
src/client/api/objects/rotor/station-info.vala | 2 +-
src/client/api/objects/rotor/station-tracks.vala | 2 +-
src/client/api/objects/rotor/station.vala | 2 +-
.../api/objects/rotor/track-parameters.vala | 2 +-
src/client/api/objects/rotor/value-heap.vala | 2 +-
src/client/api/objects/rotor/value.vala | 2 +-
src/client/api/objects/rotor/wave.vala | 2 +-
src/client/api/objects/track-heap.vala | 2 +-
src/client/api/objects/track-short.vala | 2 +-
src/client/api/objects/track/chart.vala | 2 +-
src/client/api/objects/track/lyrics-info.vala | 2 +-
src/client/api/objects/track/meta-data.vala | 2 +-
src/client/api/objects/track/track.vala | 2 +-
src/client/api/yam-client.vala | 2 +-
src/client/cachier/cachier.vala | 2 +-
src/client/cachier/controller.vala | 2 +-
src/client/cachier/info-db.vala | 2 +-
src/client/cachier/job.vala | 2 +-
src/client/cachier/storager.vala | 2 +-
src/client/jsoner.vala | 2 +-
src/client/likes-controller.vala | 2 +-
src/client/logger.vala | 2 +-
src/client/player/mods/abstract-mode.vala | 2 +-
src/client/player/mods/abstract-shufflable.vala | 2 +-
src/client/player/mods/empty.vala | 2 +-
src/client/player/mods/flow.vala | 2 +-
src/client/player/mods/local.vala | 2 +-
src/client/player/mods/track-list.vala | 2 +-
src/client/player/mpris.vala | 2 +-
src/client/player/player.vala | 2 +-
src/client/soup-wrapper.vala | 2 +-
src/client/talkers/abstract-talker.vala | 2 +-
src/client/talkers/yam-talker.vala | 2 +-
src/client/threader.vala | 2 +-
src/client/utils.vala | 2 +-
src/client/yam-object.vala | 2 +-
src/main.vala | 2 +-
src/pager.vala | 2 +-
src/utils.vala | 2 +-
src/widgets/abstract-reactable.vala | 2 +-
src/widgets/account-info-dialog.vala | 2 +-
src/widgets/action-cards/custom.vala | 2 +-
src/widgets/action-cards/station.vala | 2 +-
src/widgets/begin/begin-dialog.vala | 2 +-
src/widgets/begin/begin-view.vala | 2 +-
.../buttons/just/abstract-custom-button.vala | 2 +-
src/widgets/buttons/just/dislike-button.vala | 2 +-
src/widgets/buttons/just/like-button.vala | 2 +-
.../abstract-play-button-default.vala | 2 +-
.../just/play-buttons/abstract-play-button.vala | 2 +-
.../just/play-buttons/play-button-action.vala | 2 +-
.../just/play-buttons/play-button-context.vala | 2 +-
.../just/play-buttons/play-button-track.vala | 2 +-
src/widgets/buttons/label-button.vala | 2 +-
.../buttons/menu/abstract-menu-button.vala | 2 +-
src/widgets/buttons/menu/menu-dialog.vala | 2 +-
.../buttons/menu/playlist-options-button.vala | 2 +-
.../buttons/menu/primary-menu-button.vala | 2 +-
.../buttons/menu/track-options-button.vala | 2 +-
.../menu/track-playlist-options-button.vala | 2 +-
.../buttons/menu/track-queue-options-button.vala | 2 +-
src/widgets/buttons/menu/volume-button.vala | 2 +-
src/widgets/buttons/playlist-create-button.vala | 2 +-
src/widgets/cache-indicator/cache-indicator.vala | 2 +-
src/widgets/cache-indicator/job-info-badge.vala | 2 +-
src/widgets/cover-image.vala | 2 +-
src/widgets/equalaizer.vala | 2 +-
src/widgets/header-bar.vala | 2 +-
src/widgets/headered-scrolled-window.vala | 2 +-
src/widgets/info-marks.vala | 2 +-
src/widgets/loadable-widget.vala | 2 +-
src/widgets/loading-spinner.vala | 2 +-
src/widgets/lyrics/lyrics-line.vala | 2 +-
src/widgets/lyrics/lyrics-panel.vala | 2 +-
src/widgets/narrow-toggle-button.vala | 2 +-
src/widgets/no-plus-dialog.vala | 2 +-
src/widgets/page-root.vala | 2 +-
src/widgets/pages/abstract-loadable-page.vala | 2 +-
src/widgets/pages/loading-page.vala | 2 +-
.../play-mark/abstract-play-mark-default.vala | 2 +-
src/widgets/play-mark/abstract-play-mark.vala | 2 +-
src/widgets/play-mark/play-mark-context.vala | 2 +-
src/widgets/play-mark/play-mark-global.vala | 2 +-
src/widgets/play-mark/play-mark-track.vala | 2 +-
src/widgets/player-bar.vala | 2 +-
src/widgets/playlist-choose-dialog.vala | 2 +-
src/widgets/playlist-micro.vala | 2 +-
src/widgets/playlist-row.vala | 2 +-
.../preferences/cache-deletion-preferences.vala | 2 +-
.../preferences/custom-page-preferences.vala | 2 +-
.../preferences/custom-pages-preferences.vala | 2 +-
src/widgets/preferences/preferences-dialog.vala | 2 +-
src/widgets/save-stack.vala | 2 +-
src/widgets/shrinkable/application-window.vala | 2 +-
src/widgets/shrinkable/bin.vala | 2 +-
src/widgets/sidebar/childs/player-queue.vala | 2 +-
src/widgets/sidebar/childs/track-info.vala | 2 +-
src/widgets/sidebar/childs/wave-settings.vala | 2 +-
src/widgets/sidebar/sidebar-child-bin.vala | 2 +-
src/widgets/sidebar/sidebar.vala | 2 +-
src/widgets/track-carousel.vala | 2 +-
src/widgets/track-info-panel.vala | 2 +-
src/widgets/track-list/track-list.vala | 2 +-
src/widgets/track-list/track-row-base.vala | 2 +-
src/widgets/track-list/tracks-model.vala | 2 +-
src/widgets/track-list/tracks-view.vala | 2 +-
src/widgets/track-rows/base.vala | 2 +-
src/widgets/track-rows/default.vala | 2 +-
src/widgets/track-rows/placeholder.vala | 2 +-
src/widgets/track-rows/queue.vala | 2 +-
src/widgets/track-rows/track-row.vala | 2 +-
src/widgets/views/abstract-base.vala | 2 +-
src/widgets/views/abstract-cachiable.vala | 2 +-
src/widgets/views/abstract-with-tracks.vala | 2 +-
src/widgets/views/cant-show.vala | 2 +-
src/widgets/views/devel.vala | 2 +-
src/widgets/views/disliked.vala | 2 +-
src/widgets/views/main.vala | 2 +-
src/widgets/views/playlist.vala | 2 +-
src/widgets/views/playlists.vala | 2 +-
src/widgets/views/stations.vala | 2 +-
src/window.vala | 2 +-
163 files changed, 170 insertions(+), 170 deletions(-)
diff --git a/data/io.github.Rirusha.Cassette.metainfo.xml.in b/data/io.github.Rirusha.Cassette.metainfo.xml.in
index 688614e..28f89e4 100644
--- a/data/io.github.Rirusha.Cassette.metainfo.xml.in
+++ b/data/io.github.Rirusha.Cassette.metainfo.xml.in
@@ -135,5 +135,5 @@
https://gitlab.gnome.org/Rirusha/Cassette
https://gitlab.gnome.org/Rirusha/Cassette/-/issues
https://t.me/CassetteGNOME_Discussion
- Rirusha
+ Vladimir Vaskov
diff --git a/src/about.vala b/src/about.vala
index 6c8e9c1..a657cf7 100644
--- a/src/about.vala
+++ b/src/about.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -18,7 +18,7 @@
namespace Cassette {
public Adw.AboutDialog build_about_dialog () {
- const string RIRUSHA = "Rirusha https://gitlab.gnome.org/Rirusha";
+ const string ME = "Vladimir Vaskov https://gitlab.gnome.org/Rirusha";
const string TELEGRAM_CHAT = "https://t.me/CassetteGNOME_Discussion";
const string TELEGRAM_CHANNEL = "https://t.me/CassetteGNOME_Devlog";
const string ISSUE_LINK = "https://gitlab.gnome.org/Rirusha/Cassette/-/issues";
@@ -26,22 +26,22 @@ namespace Cassette {
const string BOOSTY_SUPPORT_LINK = "https://boosty.to/rirusha/donate";
string[] developers = {
- RIRUSHA,
+ ME,
"KseBooka https://github.com/KseBooka"
};
string[] designers = {
- RIRUSHA
+ ME
};
string[] artists = {
- RIRUSHA,
+ ME,
"Arseniy Nechkin ",
"NaumovSN",
};
string[] documenters = {
- RIRUSHA,
+ ME,
"Armatik https://github.com/Armatik",
"Fiersik https://github.com/fiersik",
"Mikazil https://github.com/Mikazil",
@@ -50,7 +50,7 @@ namespace Cassette {
var about = new Adw.AboutDialog () {
application_name = Config.APP_NAME,
application_icon = Config.APP_ID_DYN,
- developer_name = "Rirusha",
+ developer_name = "Vladimir Vaskov",
version = Config.VERSION,
developers = developers,
designers = designers,
@@ -59,7 +59,7 @@ namespace Cassette {
// Translators: NAME /n NAME
translator_credits = _("translator-credits"),
license_type = Gtk.License.GPL_3_0_ONLY,
- copyright = "© 2023-2024 Rirusha",
+ copyright = "© 2023-2024 Vladimir Vaskov",
support_url = TELEGRAM_CHAT,
issue_url = ISSUE_LINK,
release_notes_version = Config.VERSION
diff --git a/src/application.vala b/src/application.vala
index c70526a..ba1034f 100644
--- a/src/application.vala
+++ b/src/application.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/authenticator.vala b/src/authenticator.vala
index dfa4d6a..95aa20f 100644
--- a/src/authenticator.vala
+++ b/src/authenticator.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/client/api/difference-builder.vala b/src/client/api/difference-builder.vala
index 8fc4974..339648f 100644
--- a/src/client/api/difference-builder.vala
+++ b/src/client/api/difference-builder.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/client/api/objects/account/about.vala b/src/client/api/objects/account/about.vala
index f693123..c425d31 100644
--- a/src/client/api/objects/account/about.vala
+++ b/src/client/api/objects/account/about.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/client/api/objects/additional-info/lyrics-major.vala b/src/client/api/objects/additional-info/lyrics-major.vala
index 879852b..ed23a37 100644
--- a/src/client/api/objects/additional-info/lyrics-major.vala
+++ b/src/client/api/objects/additional-info/lyrics-major.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/client/api/objects/additional-info/lyrics.vala b/src/client/api/objects/additional-info/lyrics.vala
index dfd4802..8069c85 100644
--- a/src/client/api/objects/additional-info/lyrics.vala
+++ b/src/client/api/objects/additional-info/lyrics.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/client/api/objects/additional-info/similar-tracks.vala b/src/client/api/objects/additional-info/similar-tracks.vala
index 6161c0d..081df87 100644
--- a/src/client/api/objects/additional-info/similar-tracks.vala
+++ b/src/client/api/objects/additional-info/similar-tracks.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/client/api/objects/album/album.vala b/src/client/api/objects/album/album.vala
index c8ca6d6..6e2fc58 100644
--- a/src/client/api/objects/album/album.vala
+++ b/src/client/api/objects/album/album.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/client/api/objects/album/label.vala b/src/client/api/objects/album/label.vala
index c8048b3..2727898 100644
--- a/src/client/api/objects/album/label.vala
+++ b/src/client/api/objects/album/label.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/client/api/objects/album/volume.vala b/src/client/api/objects/album/volume.vala
index ab59e25..eea984d 100644
--- a/src/client/api/objects/album/volume.vala
+++ b/src/client/api/objects/album/volume.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/client/api/objects/api-error.vala b/src/client/api/objects/api-error.vala
index c4fd783..5141275 100644
--- a/src/client/api/objects/api-error.vala
+++ b/src/client/api/objects/api-error.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/client/api/objects/artist/artist.vala b/src/client/api/objects/artist/artist.vala
index 75982e8..af4b009 100644
--- a/src/client/api/objects/artist/artist.vala
+++ b/src/client/api/objects/artist/artist.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/client/api/objects/artist/counts.vala b/src/client/api/objects/artist/counts.vala
index 6fb56a1..c1f18cc 100644
--- a/src/client/api/objects/artist/counts.vala
+++ b/src/client/api/objects/artist/counts.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/client/api/objects/artist/link.vala b/src/client/api/objects/artist/link.vala
index 16caf84..eb6caf6 100644
--- a/src/client/api/objects/artist/link.vala
+++ b/src/client/api/objects/artist/link.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/client/api/objects/artist/ratings.vala b/src/client/api/objects/artist/ratings.vala
index cfe1aa6..97bd829 100644
--- a/src/client/api/objects/artist/ratings.vala
+++ b/src/client/api/objects/artist/ratings.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/client/api/objects/cover.vala b/src/client/api/objects/cover.vala
index 4f45e9d..6f57615 100644
--- a/src/client/api/objects/cover.vala
+++ b/src/client/api/objects/cover.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/client/api/objects/download-info.vala b/src/client/api/objects/download-info.vala
index 2636f2b..7a63162 100644
--- a/src/client/api/objects/download-info.vala
+++ b/src/client/api/objects/download-info.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/client/api/objects/icon.vala b/src/client/api/objects/icon.vala
index a1dfa3f..6d5513d 100644
--- a/src/client/api/objects/icon.vala
+++ b/src/client/api/objects/icon.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/client/api/objects/library/all-ids.vala b/src/client/api/objects/library/all-ids.vala
index 559181b..9da36b9 100644
--- a/src/client/api/objects/library/all-ids.vala
+++ b/src/client/api/objects/library/all-ids.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/client/api/objects/playlist/case-forms.vala b/src/client/api/objects/playlist/case-forms.vala
index f8d7e7d..297eaa3 100644
--- a/src/client/api/objects/playlist/case-forms.vala
+++ b/src/client/api/objects/playlist/case-forms.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/client/api/objects/playlist/liked-playlist.vala b/src/client/api/objects/playlist/liked-playlist.vala
index e8483fd..a0fc780 100644
--- a/src/client/api/objects/playlist/liked-playlist.vala
+++ b/src/client/api/objects/playlist/liked-playlist.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/client/api/objects/playlist/made-for.vala b/src/client/api/objects/playlist/made-for.vala
index 4119c33..beee199 100644
--- a/src/client/api/objects/playlist/made-for.vala
+++ b/src/client/api/objects/playlist/made-for.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/client/api/objects/playlist/play-counter.vala b/src/client/api/objects/playlist/play-counter.vala
index 438eb5d..dec6c3a 100644
--- a/src/client/api/objects/playlist/play-counter.vala
+++ b/src/client/api/objects/playlist/play-counter.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/client/api/objects/playlist/playlist-absence.vala b/src/client/api/objects/playlist/playlist-absence.vala
index 92c68c1..6901434 100644
--- a/src/client/api/objects/playlist/playlist-absence.vala
+++ b/src/client/api/objects/playlist/playlist-absence.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/client/api/objects/playlist/playlist-recommendations.vala b/src/client/api/objects/playlist/playlist-recommendations.vala
index 7220d22..86a63b2 100644
--- a/src/client/api/objects/playlist/playlist-recommendations.vala
+++ b/src/client/api/objects/playlist/playlist-recommendations.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/client/api/objects/playlist/playlist.vala b/src/client/api/objects/playlist/playlist.vala
index 4a4ed5c..a00bb1d 100644
--- a/src/client/api/objects/playlist/playlist.vala
+++ b/src/client/api/objects/playlist/playlist.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/client/api/objects/playlist/user.vala b/src/client/api/objects/playlist/user.vala
index b6885ab..d0060fe 100644
--- a/src/client/api/objects/playlist/user.vala
+++ b/src/client/api/objects/playlist/user.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/client/api/objects/plays.vala b/src/client/api/objects/plays.vala
index 6687968..193bdbe 100644
--- a/src/client/api/objects/plays.vala
+++ b/src/client/api/objects/plays.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/client/api/objects/rotor/block.vala b/src/client/api/objects/rotor/block.vala
index 0ceb932..36a59d6 100644
--- a/src/client/api/objects/rotor/block.vala
+++ b/src/client/api/objects/rotor/block.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/client/api/objects/rotor/dashboard.vala b/src/client/api/objects/rotor/dashboard.vala
index 8606e1a..2436567 100644
--- a/src/client/api/objects/rotor/dashboard.vala
+++ b/src/client/api/objects/rotor/dashboard.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/client/api/objects/rotor/event.vala b/src/client/api/objects/rotor/event.vala
index df3a1fe..f24618d 100644
--- a/src/client/api/objects/rotor/event.vala
+++ b/src/client/api/objects/rotor/event.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/client/api/objects/rotor/feedback.vala b/src/client/api/objects/rotor/feedback.vala
index f1f7a11..67471ea 100644
--- a/src/client/api/objects/rotor/feedback.vala
+++ b/src/client/api/objects/rotor/feedback.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/client/api/objects/rotor/id.vala b/src/client/api/objects/rotor/id.vala
index 729ca08..b00414f 100644
--- a/src/client/api/objects/rotor/id.vala
+++ b/src/client/api/objects/rotor/id.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/client/api/objects/rotor/queue.vala b/src/client/api/objects/rotor/queue.vala
index 8745c3a..ef4f2cb 100644
--- a/src/client/api/objects/rotor/queue.vala
+++ b/src/client/api/objects/rotor/queue.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/client/api/objects/rotor/restrictions.vala b/src/client/api/objects/rotor/restrictions.vala
index cbdb750..6db7ba2 100644
--- a/src/client/api/objects/rotor/restrictions.vala
+++ b/src/client/api/objects/rotor/restrictions.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/client/api/objects/rotor/seed.vala b/src/client/api/objects/rotor/seed.vala
index 8362356..b122f05 100644
--- a/src/client/api/objects/rotor/seed.vala
+++ b/src/client/api/objects/rotor/seed.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/client/api/objects/rotor/sequence.vala b/src/client/api/objects/rotor/sequence.vala
index 3d2e316..2512b35 100644
--- a/src/client/api/objects/rotor/sequence.vala
+++ b/src/client/api/objects/rotor/sequence.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/client/api/objects/rotor/session-new.vala b/src/client/api/objects/rotor/session-new.vala
index 0c766d1..f56a3c8 100644
--- a/src/client/api/objects/rotor/session-new.vala
+++ b/src/client/api/objects/rotor/session-new.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/client/api/objects/rotor/settings.vala b/src/client/api/objects/rotor/settings.vala
index e82b0ad..dc9002d 100644
--- a/src/client/api/objects/rotor/settings.vala
+++ b/src/client/api/objects/rotor/settings.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/client/api/objects/rotor/station-info.vala b/src/client/api/objects/rotor/station-info.vala
index 4122e86..9fabc37 100644
--- a/src/client/api/objects/rotor/station-info.vala
+++ b/src/client/api/objects/rotor/station-info.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/client/api/objects/rotor/station-tracks.vala b/src/client/api/objects/rotor/station-tracks.vala
index 72006f7..25c6a9c 100644
--- a/src/client/api/objects/rotor/station-tracks.vala
+++ b/src/client/api/objects/rotor/station-tracks.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/client/api/objects/rotor/station.vala b/src/client/api/objects/rotor/station.vala
index 65c678a..930979d 100644
--- a/src/client/api/objects/rotor/station.vala
+++ b/src/client/api/objects/rotor/station.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/client/api/objects/rotor/track-parameters.vala b/src/client/api/objects/rotor/track-parameters.vala
index ffd2381..d0e552c 100644
--- a/src/client/api/objects/rotor/track-parameters.vala
+++ b/src/client/api/objects/rotor/track-parameters.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/client/api/objects/rotor/value-heap.vala b/src/client/api/objects/rotor/value-heap.vala
index c492c8c..e9b71fd 100644
--- a/src/client/api/objects/rotor/value-heap.vala
+++ b/src/client/api/objects/rotor/value-heap.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/client/api/objects/rotor/value.vala b/src/client/api/objects/rotor/value.vala
index cd66c2a..58df3e8 100644
--- a/src/client/api/objects/rotor/value.vala
+++ b/src/client/api/objects/rotor/value.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/client/api/objects/rotor/wave.vala b/src/client/api/objects/rotor/wave.vala
index 29e2314..c1d861d 100644
--- a/src/client/api/objects/rotor/wave.vala
+++ b/src/client/api/objects/rotor/wave.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/client/api/objects/track-heap.vala b/src/client/api/objects/track-heap.vala
index 831874d..f11ad15 100644
--- a/src/client/api/objects/track-heap.vala
+++ b/src/client/api/objects/track-heap.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/client/api/objects/track-short.vala b/src/client/api/objects/track-short.vala
index 3556217..f87ebfb 100644
--- a/src/client/api/objects/track-short.vala
+++ b/src/client/api/objects/track-short.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/client/api/objects/track/chart.vala b/src/client/api/objects/track/chart.vala
index cec0144..ec5ebe5 100644
--- a/src/client/api/objects/track/chart.vala
+++ b/src/client/api/objects/track/chart.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/client/api/objects/track/lyrics-info.vala b/src/client/api/objects/track/lyrics-info.vala
index 788d977..d32b315 100644
--- a/src/client/api/objects/track/lyrics-info.vala
+++ b/src/client/api/objects/track/lyrics-info.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/client/api/objects/track/meta-data.vala b/src/client/api/objects/track/meta-data.vala
index 2158ebd..9ae6c02 100644
--- a/src/client/api/objects/track/meta-data.vala
+++ b/src/client/api/objects/track/meta-data.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/client/api/objects/track/track.vala b/src/client/api/objects/track/track.vala
index 0acfb18..5e204bd 100644
--- a/src/client/api/objects/track/track.vala
+++ b/src/client/api/objects/track/track.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/client/api/yam-client.vala b/src/client/api/yam-client.vala
index 409b221..ccaa290 100644
--- a/src/client/api/yam-client.vala
+++ b/src/client/api/yam-client.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/client/cachier/cachier.vala b/src/client/cachier/cachier.vala
index 8c9bc8d..002744d 100644
--- a/src/client/cachier/cachier.vala
+++ b/src/client/cachier/cachier.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/client/cachier/controller.vala b/src/client/cachier/controller.vala
index 976a235..6cffe77 100644
--- a/src/client/cachier/controller.vala
+++ b/src/client/cachier/controller.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/client/cachier/info-db.vala b/src/client/cachier/info-db.vala
index f47aca5..46191d7 100644
--- a/src/client/cachier/info-db.vala
+++ b/src/client/cachier/info-db.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/client/cachier/job.vala b/src/client/cachier/job.vala
index 61763cd..a326623 100644
--- a/src/client/cachier/job.vala
+++ b/src/client/cachier/job.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/client/cachier/storager.vala b/src/client/cachier/storager.vala
index 98e7d61..05253e0 100644
--- a/src/client/cachier/storager.vala
+++ b/src/client/cachier/storager.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/client/jsoner.vala b/src/client/jsoner.vala
index 87d873e..07c5c4e 100644
--- a/src/client/jsoner.vala
+++ b/src/client/jsoner.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/client/likes-controller.vala b/src/client/likes-controller.vala
index 3b4c041..dee134c 100644
--- a/src/client/likes-controller.vala
+++ b/src/client/likes-controller.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/client/logger.vala b/src/client/logger.vala
index fdbcd06..230e56d 100644
--- a/src/client/logger.vala
+++ b/src/client/logger.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/client/player/mods/abstract-mode.vala b/src/client/player/mods/abstract-mode.vala
index b09ad05..83f3c5c 100644
--- a/src/client/player/mods/abstract-mode.vala
+++ b/src/client/player/mods/abstract-mode.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/client/player/mods/abstract-shufflable.vala b/src/client/player/mods/abstract-shufflable.vala
index 13b1782..1ad77f2 100644
--- a/src/client/player/mods/abstract-shufflable.vala
+++ b/src/client/player/mods/abstract-shufflable.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/client/player/mods/empty.vala b/src/client/player/mods/empty.vala
index 9318094..aa50da7 100644
--- a/src/client/player/mods/empty.vala
+++ b/src/client/player/mods/empty.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/client/player/mods/flow.vala b/src/client/player/mods/flow.vala
index 38b4917..f3f1be3 100644
--- a/src/client/player/mods/flow.vala
+++ b/src/client/player/mods/flow.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/client/player/mods/local.vala b/src/client/player/mods/local.vala
index 8f35724..ee0bb97 100644
--- a/src/client/player/mods/local.vala
+++ b/src/client/player/mods/local.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/client/player/mods/track-list.vala b/src/client/player/mods/track-list.vala
index 3daada4..79b6beb 100644
--- a/src/client/player/mods/track-list.vala
+++ b/src/client/player/mods/track-list.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/client/player/mpris.vala b/src/client/player/mpris.vala
index 71e2659..2d1b247 100644
--- a/src/client/player/mpris.vala
+++ b/src/client/player/mpris.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/client/player/player.vala b/src/client/player/player.vala
index dec0b3d..d1729e5 100644
--- a/src/client/player/player.vala
+++ b/src/client/player/player.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/client/soup-wrapper.vala b/src/client/soup-wrapper.vala
index adcedde..4f55f51 100644
--- a/src/client/soup-wrapper.vala
+++ b/src/client/soup-wrapper.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/client/talkers/abstract-talker.vala b/src/client/talkers/abstract-talker.vala
index 2d2cf59..2bb4773 100644
--- a/src/client/talkers/abstract-talker.vala
+++ b/src/client/talkers/abstract-talker.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/client/talkers/yam-talker.vala b/src/client/talkers/yam-talker.vala
index d53b8e7..46ce52a 100644
--- a/src/client/talkers/yam-talker.vala
+++ b/src/client/talkers/yam-talker.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/client/threader.vala b/src/client/threader.vala
index ab10978..f7f2ec5 100644
--- a/src/client/threader.vala
+++ b/src/client/threader.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/client/utils.vala b/src/client/utils.vala
index 4f8fc51..ecf5359 100644
--- a/src/client/utils.vala
+++ b/src/client/utils.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/client/yam-object.vala b/src/client/yam-object.vala
index a049ebe..1db54fd 100644
--- a/src/client/yam-object.vala
+++ b/src/client/yam-object.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/main.vala b/src/main.vala
index 91fc71a..08035bd 100644
--- a/src/main.vala
+++ b/src/main.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/pager.vala b/src/pager.vala
index a6a168a..c763eb4 100644
--- a/src/pager.vala
+++ b/src/pager.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/utils.vala b/src/utils.vala
index de493a0..e3d6c3b 100644
--- a/src/utils.vala
+++ b/src/utils.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/abstract-reactable.vala b/src/widgets/abstract-reactable.vala
index d0061eb..c32e224 100644
--- a/src/widgets/abstract-reactable.vala
+++ b/src/widgets/abstract-reactable.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/account-info-dialog.vala b/src/widgets/account-info-dialog.vala
index d884310..ae7fcf2 100644
--- a/src/widgets/account-info-dialog.vala
+++ b/src/widgets/account-info-dialog.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/action-cards/custom.vala b/src/widgets/action-cards/custom.vala
index 3c504af..e50b488 100644
--- a/src/widgets/action-cards/custom.vala
+++ b/src/widgets/action-cards/custom.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/action-cards/station.vala b/src/widgets/action-cards/station.vala
index 8da728a..877ee00 100644
--- a/src/widgets/action-cards/station.vala
+++ b/src/widgets/action-cards/station.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/begin/begin-dialog.vala b/src/widgets/begin/begin-dialog.vala
index 93b61af..c276b39 100644
--- a/src/widgets/begin/begin-dialog.vala
+++ b/src/widgets/begin/begin-dialog.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/begin/begin-view.vala b/src/widgets/begin/begin-view.vala
index 8b52d85..dc75d09 100644
--- a/src/widgets/begin/begin-view.vala
+++ b/src/widgets/begin/begin-view.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/buttons/just/abstract-custom-button.vala b/src/widgets/buttons/just/abstract-custom-button.vala
index 7815090..fa02a3d 100644
--- a/src/widgets/buttons/just/abstract-custom-button.vala
+++ b/src/widgets/buttons/just/abstract-custom-button.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/buttons/just/dislike-button.vala b/src/widgets/buttons/just/dislike-button.vala
index f635daf..ce7944d 100644
--- a/src/widgets/buttons/just/dislike-button.vala
+++ b/src/widgets/buttons/just/dislike-button.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/buttons/just/like-button.vala b/src/widgets/buttons/just/like-button.vala
index 4648d64..c2dce49 100644
--- a/src/widgets/buttons/just/like-button.vala
+++ b/src/widgets/buttons/just/like-button.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/buttons/just/play-buttons/abstract-play-button-default.vala b/src/widgets/buttons/just/play-buttons/abstract-play-button-default.vala
index 8436f3b..03b97c5 100644
--- a/src/widgets/buttons/just/play-buttons/abstract-play-button-default.vala
+++ b/src/widgets/buttons/just/play-buttons/abstract-play-button-default.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/buttons/just/play-buttons/abstract-play-button.vala b/src/widgets/buttons/just/play-buttons/abstract-play-button.vala
index 7f7ba35..45f6352 100644
--- a/src/widgets/buttons/just/play-buttons/abstract-play-button.vala
+++ b/src/widgets/buttons/just/play-buttons/abstract-play-button.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/buttons/just/play-buttons/play-button-action.vala b/src/widgets/buttons/just/play-buttons/play-button-action.vala
index 5ebfb1a..d937328 100644
--- a/src/widgets/buttons/just/play-buttons/play-button-action.vala
+++ b/src/widgets/buttons/just/play-buttons/play-button-action.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/buttons/just/play-buttons/play-button-context.vala b/src/widgets/buttons/just/play-buttons/play-button-context.vala
index d9c503b..a56ef15 100644
--- a/src/widgets/buttons/just/play-buttons/play-button-context.vala
+++ b/src/widgets/buttons/just/play-buttons/play-button-context.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/buttons/just/play-buttons/play-button-track.vala b/src/widgets/buttons/just/play-buttons/play-button-track.vala
index 87a24e6..a239c4f 100644
--- a/src/widgets/buttons/just/play-buttons/play-button-track.vala
+++ b/src/widgets/buttons/just/play-buttons/play-button-track.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/buttons/label-button.vala b/src/widgets/buttons/label-button.vala
index 19328ae..c909d19 100644
--- a/src/widgets/buttons/label-button.vala
+++ b/src/widgets/buttons/label-button.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/buttons/menu/abstract-menu-button.vala b/src/widgets/buttons/menu/abstract-menu-button.vala
index e1b723e..57ea9e8 100644
--- a/src/widgets/buttons/menu/abstract-menu-button.vala
+++ b/src/widgets/buttons/menu/abstract-menu-button.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/buttons/menu/menu-dialog.vala b/src/widgets/buttons/menu/menu-dialog.vala
index 8349d4d..88ac9c3 100644
--- a/src/widgets/buttons/menu/menu-dialog.vala
+++ b/src/widgets/buttons/menu/menu-dialog.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/buttons/menu/playlist-options-button.vala b/src/widgets/buttons/menu/playlist-options-button.vala
index 5885365..93b53c3 100644
--- a/src/widgets/buttons/menu/playlist-options-button.vala
+++ b/src/widgets/buttons/menu/playlist-options-button.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/buttons/menu/primary-menu-button.vala b/src/widgets/buttons/menu/primary-menu-button.vala
index bf5285d..a01495f 100644
--- a/src/widgets/buttons/menu/primary-menu-button.vala
+++ b/src/widgets/buttons/menu/primary-menu-button.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/buttons/menu/track-options-button.vala b/src/widgets/buttons/menu/track-options-button.vala
index 44a41b5..fb12b50 100644
--- a/src/widgets/buttons/menu/track-options-button.vala
+++ b/src/widgets/buttons/menu/track-options-button.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/buttons/menu/track-playlist-options-button.vala b/src/widgets/buttons/menu/track-playlist-options-button.vala
index 04c9844..ef8ad01 100644
--- a/src/widgets/buttons/menu/track-playlist-options-button.vala
+++ b/src/widgets/buttons/menu/track-playlist-options-button.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/buttons/menu/track-queue-options-button.vala b/src/widgets/buttons/menu/track-queue-options-button.vala
index f8e3ea7..a8430db 100644
--- a/src/widgets/buttons/menu/track-queue-options-button.vala
+++ b/src/widgets/buttons/menu/track-queue-options-button.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/buttons/menu/volume-button.vala b/src/widgets/buttons/menu/volume-button.vala
index aad99aa..7eeb6b3 100644
--- a/src/widgets/buttons/menu/volume-button.vala
+++ b/src/widgets/buttons/menu/volume-button.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/buttons/playlist-create-button.vala b/src/widgets/buttons/playlist-create-button.vala
index f49bc5c..0c8f700 100644
--- a/src/widgets/buttons/playlist-create-button.vala
+++ b/src/widgets/buttons/playlist-create-button.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/cache-indicator/cache-indicator.vala b/src/widgets/cache-indicator/cache-indicator.vala
index 95ef011..e14eb74 100644
--- a/src/widgets/cache-indicator/cache-indicator.vala
+++ b/src/widgets/cache-indicator/cache-indicator.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/cache-indicator/job-info-badge.vala b/src/widgets/cache-indicator/job-info-badge.vala
index 6f1e9bd..22da7a7 100644
--- a/src/widgets/cache-indicator/job-info-badge.vala
+++ b/src/widgets/cache-indicator/job-info-badge.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/cover-image.vala b/src/widgets/cover-image.vala
index 12f6733..c99b055 100644
--- a/src/widgets/cover-image.vala
+++ b/src/widgets/cover-image.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/equalaizer.vala b/src/widgets/equalaizer.vala
index 1375ebc..e55c935 100644
--- a/src/widgets/equalaizer.vala
+++ b/src/widgets/equalaizer.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/header-bar.vala b/src/widgets/header-bar.vala
index a1d6d93..372bbab 100644
--- a/src/widgets/header-bar.vala
+++ b/src/widgets/header-bar.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/headered-scrolled-window.vala b/src/widgets/headered-scrolled-window.vala
index 3dcb4bc..ccca9fc 100644
--- a/src/widgets/headered-scrolled-window.vala
+++ b/src/widgets/headered-scrolled-window.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/info-marks.vala b/src/widgets/info-marks.vala
index 993cb0f..af36438 100644
--- a/src/widgets/info-marks.vala
+++ b/src/widgets/info-marks.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/loadable-widget.vala b/src/widgets/loadable-widget.vala
index 0f41b13..362b480 100644
--- a/src/widgets/loadable-widget.vala
+++ b/src/widgets/loadable-widget.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/loading-spinner.vala b/src/widgets/loading-spinner.vala
index 3069818..d305d34 100644
--- a/src/widgets/loading-spinner.vala
+++ b/src/widgets/loading-spinner.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/lyrics/lyrics-line.vala b/src/widgets/lyrics/lyrics-line.vala
index 02fe74c..9440ff1 100644
--- a/src/widgets/lyrics/lyrics-line.vala
+++ b/src/widgets/lyrics/lyrics-line.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/lyrics/lyrics-panel.vala b/src/widgets/lyrics/lyrics-panel.vala
index 24fc574..91eaa96 100644
--- a/src/widgets/lyrics/lyrics-panel.vala
+++ b/src/widgets/lyrics/lyrics-panel.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/narrow-toggle-button.vala b/src/widgets/narrow-toggle-button.vala
index 85fede0..e8a24f2 100644
--- a/src/widgets/narrow-toggle-button.vala
+++ b/src/widgets/narrow-toggle-button.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/no-plus-dialog.vala b/src/widgets/no-plus-dialog.vala
index 458ffc6..58b115d 100644
--- a/src/widgets/no-plus-dialog.vala
+++ b/src/widgets/no-plus-dialog.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/page-root.vala b/src/widgets/page-root.vala
index 36402f1..a59183b 100644
--- a/src/widgets/page-root.vala
+++ b/src/widgets/page-root.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/pages/abstract-loadable-page.vala b/src/widgets/pages/abstract-loadable-page.vala
index c03787b..666a327 100644
--- a/src/widgets/pages/abstract-loadable-page.vala
+++ b/src/widgets/pages/abstract-loadable-page.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/pages/loading-page.vala b/src/widgets/pages/loading-page.vala
index f1eb29f..974ceb4 100644
--- a/src/widgets/pages/loading-page.vala
+++ b/src/widgets/pages/loading-page.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/play-mark/abstract-play-mark-default.vala b/src/widgets/play-mark/abstract-play-mark-default.vala
index 5a30ea1..1695263 100644
--- a/src/widgets/play-mark/abstract-play-mark-default.vala
+++ b/src/widgets/play-mark/abstract-play-mark-default.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/play-mark/abstract-play-mark.vala b/src/widgets/play-mark/abstract-play-mark.vala
index c22df09..7e95230 100644
--- a/src/widgets/play-mark/abstract-play-mark.vala
+++ b/src/widgets/play-mark/abstract-play-mark.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/play-mark/play-mark-context.vala b/src/widgets/play-mark/play-mark-context.vala
index ff9215d..1c2cc6c 100644
--- a/src/widgets/play-mark/play-mark-context.vala
+++ b/src/widgets/play-mark/play-mark-context.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/play-mark/play-mark-global.vala b/src/widgets/play-mark/play-mark-global.vala
index 79f37c6..a540d2f 100644
--- a/src/widgets/play-mark/play-mark-global.vala
+++ b/src/widgets/play-mark/play-mark-global.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/play-mark/play-mark-track.vala b/src/widgets/play-mark/play-mark-track.vala
index e345f76..448eefa 100644
--- a/src/widgets/play-mark/play-mark-track.vala
+++ b/src/widgets/play-mark/play-mark-track.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/player-bar.vala b/src/widgets/player-bar.vala
index 05fa75f..fe1ead2 100644
--- a/src/widgets/player-bar.vala
+++ b/src/widgets/player-bar.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/playlist-choose-dialog.vala b/src/widgets/playlist-choose-dialog.vala
index 04b1e41..7dc5ed6 100644
--- a/src/widgets/playlist-choose-dialog.vala
+++ b/src/widgets/playlist-choose-dialog.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/playlist-micro.vala b/src/widgets/playlist-micro.vala
index 3036d76..fe7d1e8 100644
--- a/src/widgets/playlist-micro.vala
+++ b/src/widgets/playlist-micro.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/playlist-row.vala b/src/widgets/playlist-row.vala
index 6473f3e..248f0a6 100644
--- a/src/widgets/playlist-row.vala
+++ b/src/widgets/playlist-row.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/preferences/cache-deletion-preferences.vala b/src/widgets/preferences/cache-deletion-preferences.vala
index 1426e8b..614d475 100644
--- a/src/widgets/preferences/cache-deletion-preferences.vala
+++ b/src/widgets/preferences/cache-deletion-preferences.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/preferences/custom-page-preferences.vala b/src/widgets/preferences/custom-page-preferences.vala
index dca7a2b..5f2059a 100644
--- a/src/widgets/preferences/custom-page-preferences.vala
+++ b/src/widgets/preferences/custom-page-preferences.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/preferences/custom-pages-preferences.vala b/src/widgets/preferences/custom-pages-preferences.vala
index 3689d7a..ce8435f 100644
--- a/src/widgets/preferences/custom-pages-preferences.vala
+++ b/src/widgets/preferences/custom-pages-preferences.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/preferences/preferences-dialog.vala b/src/widgets/preferences/preferences-dialog.vala
index af036a0..6eb4275 100644
--- a/src/widgets/preferences/preferences-dialog.vala
+++ b/src/widgets/preferences/preferences-dialog.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/save-stack.vala b/src/widgets/save-stack.vala
index b3c499e..af0cc02 100644
--- a/src/widgets/save-stack.vala
+++ b/src/widgets/save-stack.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/shrinkable/application-window.vala b/src/widgets/shrinkable/application-window.vala
index 8b20167..439de25 100644
--- a/src/widgets/shrinkable/application-window.vala
+++ b/src/widgets/shrinkable/application-window.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/shrinkable/bin.vala b/src/widgets/shrinkable/bin.vala
index dc6d72d..4fcc1d2 100644
--- a/src/widgets/shrinkable/bin.vala
+++ b/src/widgets/shrinkable/bin.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/sidebar/childs/player-queue.vala b/src/widgets/sidebar/childs/player-queue.vala
index ad06c2c..3ca83e4 100644
--- a/src/widgets/sidebar/childs/player-queue.vala
+++ b/src/widgets/sidebar/childs/player-queue.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/sidebar/childs/track-info.vala b/src/widgets/sidebar/childs/track-info.vala
index 59eceac..6c542d7 100644
--- a/src/widgets/sidebar/childs/track-info.vala
+++ b/src/widgets/sidebar/childs/track-info.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/sidebar/childs/wave-settings.vala b/src/widgets/sidebar/childs/wave-settings.vala
index a32a76f..3d00067 100644
--- a/src/widgets/sidebar/childs/wave-settings.vala
+++ b/src/widgets/sidebar/childs/wave-settings.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/sidebar/sidebar-child-bin.vala b/src/widgets/sidebar/sidebar-child-bin.vala
index 3559823..fd342b0 100644
--- a/src/widgets/sidebar/sidebar-child-bin.vala
+++ b/src/widgets/sidebar/sidebar-child-bin.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/sidebar/sidebar.vala b/src/widgets/sidebar/sidebar.vala
index 01c7537..ef87512 100644
--- a/src/widgets/sidebar/sidebar.vala
+++ b/src/widgets/sidebar/sidebar.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/track-carousel.vala b/src/widgets/track-carousel.vala
index 0a3a6a1..cd2e84a 100644
--- a/src/widgets/track-carousel.vala
+++ b/src/widgets/track-carousel.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/track-info-panel.vala b/src/widgets/track-info-panel.vala
index 68eded9..bc38a30 100644
--- a/src/widgets/track-info-panel.vala
+++ b/src/widgets/track-info-panel.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/track-list/track-list.vala b/src/widgets/track-list/track-list.vala
index 3a7c3f2..72cdc0b 100644
--- a/src/widgets/track-list/track-list.vala
+++ b/src/widgets/track-list/track-list.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/track-list/track-row-base.vala b/src/widgets/track-list/track-row-base.vala
index d8adcd6..856f4c6 100644
--- a/src/widgets/track-list/track-row-base.vala
+++ b/src/widgets/track-list/track-row-base.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/track-list/tracks-model.vala b/src/widgets/track-list/tracks-model.vala
index d8adcd6..856f4c6 100644
--- a/src/widgets/track-list/tracks-model.vala
+++ b/src/widgets/track-list/tracks-model.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/track-list/tracks-view.vala b/src/widgets/track-list/tracks-view.vala
index d8adcd6..856f4c6 100644
--- a/src/widgets/track-list/tracks-view.vala
+++ b/src/widgets/track-list/tracks-view.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/track-rows/base.vala b/src/widgets/track-rows/base.vala
index 9121969..42e8b5d 100644
--- a/src/widgets/track-rows/base.vala
+++ b/src/widgets/track-rows/base.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/track-rows/default.vala b/src/widgets/track-rows/default.vala
index dd3d678..8116cd9 100644
--- a/src/widgets/track-rows/default.vala
+++ b/src/widgets/track-rows/default.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/track-rows/placeholder.vala b/src/widgets/track-rows/placeholder.vala
index 19f1dc9..a6f5c4c 100644
--- a/src/widgets/track-rows/placeholder.vala
+++ b/src/widgets/track-rows/placeholder.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/track-rows/queue.vala b/src/widgets/track-rows/queue.vala
index ddf4bff..e659985 100644
--- a/src/widgets/track-rows/queue.vala
+++ b/src/widgets/track-rows/queue.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/track-rows/track-row.vala b/src/widgets/track-rows/track-row.vala
index f528624..e9e73cf 100644
--- a/src/widgets/track-rows/track-row.vala
+++ b/src/widgets/track-rows/track-row.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/views/abstract-base.vala b/src/widgets/views/abstract-base.vala
index 52c6127..f105824 100644
--- a/src/widgets/views/abstract-base.vala
+++ b/src/widgets/views/abstract-base.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/views/abstract-cachiable.vala b/src/widgets/views/abstract-cachiable.vala
index 3f670bd..efc013b 100644
--- a/src/widgets/views/abstract-cachiable.vala
+++ b/src/widgets/views/abstract-cachiable.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/views/abstract-with-tracks.vala b/src/widgets/views/abstract-with-tracks.vala
index d2d895c..896e427 100644
--- a/src/widgets/views/abstract-with-tracks.vala
+++ b/src/widgets/views/abstract-with-tracks.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/views/cant-show.vala b/src/widgets/views/cant-show.vala
index 53c5626..ea11811 100644
--- a/src/widgets/views/cant-show.vala
+++ b/src/widgets/views/cant-show.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/views/devel.vala b/src/widgets/views/devel.vala
index 6ea1254..68ec1ef 100644
--- a/src/widgets/views/devel.vala
+++ b/src/widgets/views/devel.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/views/disliked.vala b/src/widgets/views/disliked.vala
index f4c5e2a..625dd88 100644
--- a/src/widgets/views/disliked.vala
+++ b/src/widgets/views/disliked.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/views/main.vala b/src/widgets/views/main.vala
index bd3464b..d0b8084 100644
--- a/src/widgets/views/main.vala
+++ b/src/widgets/views/main.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/views/playlist.vala b/src/widgets/views/playlist.vala
index 2c406d3..0ffb9c2 100644
--- a/src/widgets/views/playlist.vala
+++ b/src/widgets/views/playlist.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/views/playlists.vala b/src/widgets/views/playlists.vala
index d8dd532..04e1131 100644
--- a/src/widgets/views/playlists.vala
+++ b/src/widgets/views/playlists.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/widgets/views/stations.vala b/src/widgets/views/stations.vala
index d3dc493..b183014 100644
--- a/src/widgets/views/stations.vala
+++ b/src/widgets/views/stations.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/window.vala b/src/window.vala
index 94c4644..6add3a7 100644
--- a/src/window.vala
+++ b/src/window.vala
@@ -1,4 +1,4 @@
-/* Copyright 2023-2024 Rirusha
+/* Copyright 2023-2024 Vladimir Vaskov
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
From 37d65de374254c440496aa81d49458c95f68fa9c Mon Sep 17 00:00:00 2001
From: Kirill Unitsaev
Date: Thu, 19 Sep 2024 23:39:16 +0400
Subject: [PATCH 045/167] docs: updated README files EN - added content RU -
updated under gitlab md
---
README.md | 203 ++++++++++++++++++++++++++++++++++-------
data/assets/boosty.png | Bin 0 -> 154354 bytes
data/assets/tbank.png | Bin 0 -> 263730 bytes
docs/README-ru.md | 188 ++++++++++++--------------------------
4 files changed, 232 insertions(+), 159 deletions(-)
create mode 100644 data/assets/boosty.png
create mode 100644 data/assets/tbank.png
diff --git a/README.md b/README.md
index fc55b3b..47c14db 100644
--- a/README.md
+++ b/README.md
@@ -1,37 +1,178 @@
-README in other languages: \
-[](docs/README-ru.md)
+README language: \
+[](README.md)
+[](docs/README-ru.md)
-
-
-
- Cassette
-
+
+
+
+ Cassette
+
-
- GTK4/Adwaita application that allows you to use Yandex Music service on Linux operating systems.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+GTK4/Adwaita application that allows you to use Yandex Music service on Linux operating systems.
+
+
+

+
+
+## Install
+
+**Flathub**
+
+
+
+
+
+```shell
+flatpak install io.github.Rirusha.Cassette
+```
+
+**Distribution repositories**
+
+[](https://repology.org/project/cassette/versions)
+
+### ALT Linux
+```shell
+su -
+apt-get install cassette
+```
+
+### Arch Linux
+
+> Most AUR Helpers support Pacman-style flags, for example, yay.
+
+#### yay
+```shell
+yay -S cassette
+```
+
+#### pamac
+```shell
+pamac install cassette
+```
+
+### NixOS Unstable
+```shell
+nix-shell -p cassette
+```
+
+## Building
+
+#### Dependencies:
+
+* `gtk4`, version: `>= 4.14`
+* `libadwaita-1`, version: `>= 1.5`
+* `libsoup-3.0`
+* `gdk-pixbuf-2.0`
+* `json-glib-1.0`
+* `sqlite3`
+* `gee-0.8`
+* `libxml-2.0`
+* `gstreamer-1.0`
+* `webkitgtk-6.0`
+* `gio-2.0`, version: `>= 2.72`
+* `git`, only for `devel`
+
+#### Building utilities:
+
+* `meson`
+* `ninja`
+* `cmake`
+* `blueprint-compiler`
+* `gcc`
+* `valac`
+* `pkg`
+* `appstream-utils`
+
+#### latest
+
+> Unstable features under development will not be available in this version.
+```shell
+meson setup builddir
+```
+
+#### devel
+
+> In this version, all devel functions will be available, the application may work unstable.
+```shell
+meson setup builddir
+meson configure -Dprofile=development builddir
+```
+
+### Testing
+```shell
+ninja -C builddir test
+```
+
+### Installation:
+```shell
+sudo ninja -C builddir install
+```
+
+### Delete:
+```shell
+sudo ninja -C builddir uninstall
+```
+
+## For developers
+
+### Using Visual Studio Code
+The repository has recommended extensions for checking and running the application with gdb.
+
+### Dependencies
+
+#### repository [gnome-nightly](https://wiki.gnome.org/Apps/Nightly):
+```shell
+flatpak remote-add --if-not-exists gnome-nightly https://nightly.gnome.org/gnome-nightly.flatpakrepo
+```
+
+#### To run
+`org.gnome.Platform//master`
+```shell
+flatpak install org.gnome.Platform//master
+```
+
+#### To build
+`org.gnome.Sdk//master` \
+`org.freedesktop.Sdk.Extension.vala//23.08beta`
+```shell
+flatpak install org.gnome.Sdk//master org.freedesktop.Sdk.Extension.vala//23.08beta
+```
+
+## Support
+
+You can support in several ways:
+- Create an issue with a problem or a suggestion for improvement
+- Submit a merge request with a fix or new functionality
+- Support financially (Please include your nickname in the "Message to the recipient" when sending via T-Bank)
+
+
+
+
+
+## Gratitude
+Thank you [MarshalX](https://github.com/MarshalX ). The [yandex-music-api](https://github.com/MarshalX/yandex-music-api) library was used as api documentation.
+
+> Cassette is an unofficial client, not affiliated with Yandex and not approved by it.
diff --git a/data/assets/boosty.png b/data/assets/boosty.png
new file mode 100644
index 0000000000000000000000000000000000000000..e669a846804368251ad4132a90d12cf83482dcbf
GIT binary patch
literal 154354
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