Better song selection

This commit is contained in:
notdraimdev
2024-10-27 12:59:09 +01:00
parent 99d4b8dfcc
commit c418b417ec
11 changed files with 228 additions and 32 deletions
+15 -12
View File
@@ -1,4 +1,4 @@
[gd_scene load_steps=67 format=3 uid="uid://b2sygl55s6fng"]
[gd_scene load_steps=69 format=3 uid="uid://b2sygl55s6fng"]
[ext_resource type="Script" path="res://main.gd" id="1_ubs1p"]
[ext_resource type="Texture2D" uid="uid://b8on1case224h" path="res://LoopPressed.png" id="2_iolk5"]
@@ -30,6 +30,8 @@
[ext_resource type="Script" path="res://Spinning.gd" id="14_rhw4k"]
[ext_resource type="Script" path="res://yt_tab_button.gd" id="16_2t15p"]
[ext_resource type="Script" path="res://help_button.gd" id="17_4b8oh"]
[ext_resource type="Script" path="res://songs_menu.gd" id="27_f8wx0"]
[ext_resource type="PackedScene" uid="uid://bel6i6wdbexw4" path="res://search_results.tscn" id="27_g8wmp"]
[ext_resource type="Texture2D" uid="uid://bmbxyma4ra46p" path="res://Download.png" id="29_v44vi"]
[ext_resource type="Script" path="res://update_checker.gd" id="30_byc5i"]
[ext_resource type="Script" path="res://patch_notes_button.gd" id="31_hjsj1"]
@@ -764,7 +766,7 @@ alignment = 1
caret_blink = true
script = ExtResource("12_mr42x")
[node name="SongsMenu" type="MenuButton" parent="."]
[node name="SongsMenu" type="Button" parent="."]
layout_mode = 1
anchors_preset = -1
anchor_right = 1.0
@@ -774,15 +776,17 @@ offset_right = -328.0
offset_bottom = 80.0
grow_horizontal = 2
text = "Select Songs"
flat = false
script = ExtResource("27_f8wx0")
[node name="SearchResults" type="PopupMenu" parent="."]
handle_input_locally = false
position = Vector2i(265, 80)
size = Vector2i(623, 300)
wrap_controls = false
max_size = Vector2i(625, 300)
allow_search = false
[node name="SearchResults" parent="." instance=ExtResource("27_g8wmp")]
layout_mode = 1
anchors_preset = -1
anchor_left = 0.0
anchor_right = 1.0
offset_left = 264.5
offset_top = 84.225
offset_right = -264.5
offset_bottom = 384.225
[node name="VolumeButton" type="Button" parent="."]
texture_filter = 1
@@ -843,7 +847,7 @@ offset_left = -64.0
offset_top = -23.0
grow_horizontal = 0
grow_vertical = 0
text = "v1.4.6h1"
text = "v1.4.7"
horizontal_alignment = 2
[node name="SettingsButton" type="Button" parent="."]
@@ -1123,7 +1127,6 @@ horizontal_alignment = 1
[connection signal="pressed" from="CreatePlaylistsMenu/CloseButton" to="CreatePlaylistsMenu" method="_on_close_button_pressed"]
[connection signal="toggled" from="SearchToggle" to="SearchToggle" method="_on_toggled"]
[connection signal="text_submitted" from="SearchBar" to="SearchBar" method="_on_text_submitted"]
[connection signal="index_pressed" from="SearchResults" to="SearchBar" method="_on_search_results_index_pressed"]
[connection signal="toggled" from="VolumeButton" to="VolumeButton" method="_on_toggled"]
[connection signal="toggled" from="SettingsButton" to="SettingsButton" method="_on_toggled"]
[connection signal="request_completed" from="UpdateChecker/HTTPRequest" to="UpdateChecker" method="_on_http_request_completed"]
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

+34
View File
@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cm5ps3a716wr0"
path="res://.godot/imported/XSmall.png-2fa29ed3d6c0476862944f7e0885c6ed.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://XSmall.png"
dest_files=["res://.godot/imported/XSmall.png-2fa29ed3d6c0476862944f7e0885c6ed.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
+9 -8
View File
@@ -18,7 +18,7 @@ extends Control
@onready var yt_link: LineEdit = $"YoutubeMenuHolder/Youtube menu/YTLink"
@onready var yt_download: Button = $"YoutubeMenuHolder/Youtube menu/YTDownload"
@onready var loading_img: Sprite2D = $"YoutubeMenuHolder/Youtube menu/LoadingIMG"
@onready var songs_menu: MenuButton = $SongsMenu
@onready var songs_menu: Button = $SongsMenu
@onready var version: Label = $Version
@onready var paused_indicator: TextureRect = $PausedIndicator
@onready var settings_menu_child: Settings = $SettingsHolder/SettingsPopup/SettingsMenuChild
@@ -28,6 +28,7 @@ extends Control
@onready var play_all: Button = $PlaylistPanelHolder/PlaylistsPanel/PlaylistsContainer/VBoxContainer/HBoxContainer/PlayAll
@onready var album_name: Label = $Album
@onready var playlist_or_song: ConfirmationDialog = $PlaylistOrSong
@onready var search_results: SearchResults = $SearchResults
@@ -75,7 +76,7 @@ func _ready() -> void:
volume_slider.value_changed.connect(SetVolume)
skip.pressed.connect(Skip)
go_back.pressed.connect(GoBack)
songs_menu.get_popup().index_pressed.connect(SetSong)
search_results.index_pressed.connect(SetSong)
var Strin:String
for Arg in OS.get_cmdline_args():
if Arg.to_lower().ends_with(".mp3") or Arg.to_lower().ends_with(".wav"):
@@ -357,11 +358,11 @@ func GetSongs(dir:String):
wav_disclaimer.show()
SeenWAVDisclaimer = true
#print(songs)
songs_menu.get_popup().clear(true)
search_results.clear()
textSongs = songs
for song in textSongs:
var nam = song.replace(".mp3", "")
songs_menu.get_popup().add_item(nam)
var nam = song
search_results.add_item(nam)
func Randomize():
if textSongs.size() != 0:
@@ -380,10 +381,10 @@ func Randomize():
Randomized = true
songs_menu.get_popup().clear(true)
search_results.clear()
for song in textSongs:
var nam = song.replace(".mp3", "")
songs_menu.get_popup().add_item(nam)
var nam = song
search_results.add_item(nam)
#print(textSongs)
func PlaylistSelected(Playlist:String,PlaylistLocation:String):
+4 -11
View File
@@ -1,5 +1,5 @@
extends LineEdit
@onready var search_results: PopupMenu = $"../SearchResults"
@onready var search_results: SearchResults = $"../SearchResults"
var values:Dictionary = {}
var ErrorMargin:float = 0.9
@@ -8,8 +8,7 @@ var currentTime:float
var TextChanged:bool
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
search_results.popup_window = false
search_results.unfocusable = true
pass
# Called every frame. 'delta' is the elapsed time since the previous frame.
@@ -19,7 +18,7 @@ func _process(delta: float) -> void:
if currentTime < 0:
release_focus()
TextChanged = false
search_results.clear(true)
search_results.clear()
values.clear()
currentTime = updatetime
var _i:int = 0
@@ -41,7 +40,7 @@ func _process(delta: float) -> void:
margin = float(amountOfFrags) / fragments.size()
if margin > ErrorMargin:
search_results.add_item(song.replace(".mp3","") )
search_results.add_item(song)
values[_i] = _s
_i += 1
_s += 1
@@ -51,12 +50,6 @@ func _on_search_results_index_pressed(index: int) -> void:
owner.SetSong(values[index])
func _input(event):
if (event is InputEventMouseButton) and event.pressed:
var evLocal = make_input_local(event)
if !Rect2(Vector2(0,0),Vector2(search_results.size.y+ size.y,size.x)).has_point(evLocal.position):
search_results.hide()
func _on_text_submitted(new_text: String) -> void:
TextChanged = true
if !search_results.visible:
+21
View File
@@ -0,0 +1,21 @@
extends Control
var SongName:String
var CurrentlyPlaying:bool
var idx:int
@onready var songname: Button = $HBoxContainer/Songname
signal PlayPressed
signal DeletePressed
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
songname.text = SongName
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void:
pass
func _on_songname_pressed() -> void:
PlayPressed.emit(idx)
+45
View File
@@ -0,0 +1,45 @@
[gd_scene load_steps=3 format=3 uid="uid://ctqcbjrmxaqsk"]
[ext_resource type="Texture2D" uid="uid://cm5ps3a716wr0" path="res://XSmall.png" id="1_6wgd5"]
[ext_resource type="Script" path="res://search_item.gd" id="1_j4126"]
[node name="SearchItem" type="Control"]
custom_minimum_size = Vector2(0, 30)
layout_mode = 3
anchors_preset = 14
anchor_top = 0.5
anchor_right = 1.0
anchor_bottom = 0.5
grow_horizontal = 2
grow_vertical = 2
size_flags_horizontal = 3
size_flags_vertical = 4
script = ExtResource("1_j4126")
[node name="HBoxContainer" type="HBoxContainer" parent="."]
custom_minimum_size = Vector2(700, 0)
layout_mode = 1
anchors_preset = 4
anchor_top = 0.5
anchor_bottom = 0.5
offset_top = -19.0
offset_right = 50.0
offset_bottom = 19.0
grow_vertical = 2
[node name="delete" type="Button" parent="HBoxContainer"]
modulate = Color(0.553478, 0.101429, 4.81308e-08, 1)
layout_mode = 2
tooltip_text = "delete song from hard-drive"
focus_mode = 0
icon = ExtResource("1_6wgd5")
flat = true
[node name="Songname" type="Button" parent="HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
focus_mode = 0
flat = true
alignment = 0
[connection signal="pressed" from="HBoxContainer/Songname" to="." method="_on_songname_pressed"]
+42
View File
@@ -0,0 +1,42 @@
class_name SearchResults
extends Control
signal index_pressed
const SEARCH_ITEM = preload("res://search_item.tscn")
@onready var item_container: VBoxContainer = $Control/ItemContainer
var SongsAmount:int
@onready var parent:MainScene = owner
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
pass # Replace with function body.
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void:
pass
func add_item(text:String):
var child = SEARCH_ITEM.instantiate()
child.SongName = text.replace(".mp3", "")
child.idx = parent.textSongs.find(text)
SongsAmount+=1
child.PlayPressed.connect(songSelected)
item_container.add_child(child)
func clear():
for child in item_container.get_children():
child.queue_free()
func songSelected(idx:int):
index_pressed.emit(idx)
func _input(event):
if (event is InputEventMouseButton) and event.pressed:
var evLocal = make_input_local(event)
if !Rect2(Vector2(0,0),Vector2(size.x,size.y)).has_point(evLocal.position):
hide()
+42
View File
@@ -0,0 +1,42 @@
[gd_scene load_steps=2 format=3 uid="uid://bel6i6wdbexw4"]
[ext_resource type="Script" path="res://search_results.gd" id="1_mcn1o"]
[node name="SearchResults" type="Control"]
layout_mode = 3
anchors_preset = 5
anchor_left = 0.5
anchor_right = 0.5
offset_left = -311.5
offset_right = 311.5
offset_bottom = 300.0
grow_horizontal = 2
script = ExtResource("1_mcn1o")
[node name="ColorRect" type="ColorRect" parent="."]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
size_flags_horizontal = 3
size_flags_vertical = 3
color = Color(0.14902, 0.14902, 0.14902, 1)
[node name="Control" type="ScrollContainer" parent="."]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
size_flags_horizontal = 3
size_flags_vertical = 3
follow_focus = true
horizontal_scroll_mode = 0
[node name="ItemContainer" type="VBoxContainer" parent="Control"]
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 3
+1 -1
View File
@@ -1,7 +1,7 @@
extends Button
@onready var search_bar: LineEdit = $"../SearchBar"
@onready var songs_menu: MenuButton = $"../SongsMenu"
@onready var songs_menu: Button = $"../SongsMenu"
@export var PressedIcon:Texture2D
@export var NotPressedIcon:Texture2D
+15
View File
@@ -0,0 +1,15 @@
extends Button
@onready var search_results: SearchResults = $"../SearchResults"
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
pass # Replace with function body.
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void:
pass
func _pressed() -> void:
search_results.show()