feat: layout containers for chat view

This commit is contained in:
tiger tiger tiger 2026-03-20 14:40:17 +01:00
parent 7ba13a9093
commit 64c6ae5a40
13 changed files with 429 additions and 126 deletions

BIN
src/logic-scenes/chat_view/avatar-dummy.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dekaqj10p8rqk"
path="res://.godot/imported/avatar-dummy.png-65800fc5bc4cfb43587691e9aaed86f6.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://logic-scenes/chat_view/avatar-dummy.png"
dest_files=["res://.godot/imported/avatar-dummy.png-65800fc5bc4cfb43587691e9aaed86f6.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
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/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
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

View File

@ -1,126 +0,0 @@
[gd_scene format=3 uid="uid://b1pv7j1hag5m3"]
[ext_resource type="FontFile" uid="uid://bdkb43smt08c0" path="res://import/fonts/Ubuntu-B.ttf" id="1_1f64j"]
[ext_resource type="FontFile" uid="uid://bmh8v44f6txfo" path="res://import/fonts/Ubuntu-RI.ttf" id="2_n65mw"]
[ext_resource type="FontFile" uid="uid://b0i5ipn75noh6" path="res://import/fonts/Ubuntu-R.ttf" id="3_1hd2w"]
[ext_resource type="Script" uid="uid://db7t2kqbsskoq" path="res://logic-scenes/chat_view/chat-view.gd" id="4_n65mw"]
[ext_resource type="Script" uid="uid://be16bo6mf4kqu" path="res://logic-scenes/chat_view/chat-bubble.gd" id="5_1hd2w"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_iwd5k"]
content_margin_left = 12.0
content_margin_top = 8.0
content_margin_right = 12.0
content_margin_bottom = 8.0
bg_color = Color(0.757003, 0.509749, 0.667446, 1)
border_color = Color(0.8, 0.8, 0.8, 0)
corner_radius_top_left = 20
corner_radius_top_right = 20
corner_radius_bottom_right = 20
[sub_resource type="Theme" id="Theme_w8y7q"]
default_font = ExtResource("3_1hd2w")
default_font_size = 24
RichTextLabel/fonts/bold_font = ExtResource("1_1f64j")
RichTextLabel/fonts/italics_font = ExtResource("2_n65mw")
RichTextLabel/styles/normal = SubResource("StyleBoxFlat_iwd5k")
VBoxContainer/constants/separation = 9
[sub_resource type="Resource" id="Resource_iwd5k"]
script = ExtResource("5_1hd2w")
text = "Sorry"
time_string = "This is smol."
metadata/_custom_type_script = "uid://be16bo6mf4kqu"
[sub_resource type="Resource" id="Resource_1hd2w"]
script = ExtResource("5_1hd2w")
text = "I never knew what to say. Can I write instead?"
metadata/_custom_type_script = "uid://be16bo6mf4kqu"
[sub_resource type="Resource" id="Resource_w8y7q"]
script = ExtResource("5_1hd2w")
text = "🙄"
is_own_message = true
metadata/_custom_type_script = "uid://be16bo6mf4kqu"
[node name="Control" type="Control" unique_id=306300003]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme = SubResource("Theme_w8y7q")
[node name="ScrollContainer" type="ScrollContainer" parent="." unique_id=124411261]
layout_mode = 0
offset_right = 582.0
offset_bottom = 1082.0
theme = SubResource("Theme_w8y7q")
script = ExtResource("4_n65mw")
messages = Array[ExtResource("5_1hd2w")]([SubResource("Resource_iwd5k"), SubResource("Resource_1hd2w"), SubResource("Resource_w8y7q")])
[node name="Template" type="ScrollContainer" parent="." unique_id=1981714851]
layout_mode = 0
offset_left = 1061.0
offset_top = 78.0
offset_right = 1643.0
offset_bottom = 702.0
[node name="VBoxContainer" type="VBoxContainer" parent="Template" unique_id=1303301180]
layout_mode = 2
size_flags_horizontal = 3
[node name="RichTextLabel2" type="RichTextLabel" parent="Template/VBoxContainer" unique_id=1558665125]
layout_mode = 2
size_flags_horizontal = 0
theme = SubResource("Theme_w8y7q")
bbcode_enabled = true
text = "Dies ist eine Telegram-Message.
Ich schreibe mal etwas länger, ob zu sehen,
ob der Bums irgendwann umbricht.
[i]8:12 PM[/i]"
fit_content = true
scroll_active = false
autowrap_mode = 0
[node name="RichTextLabel3" type="RichTextLabel" parent="Template/VBoxContainer" unique_id=1220988641]
layout_mode = 2
theme = SubResource("Theme_w8y7q")
bbcode_enabled = true
text = "Dies ist eine Telegram-Message
[i]8:12 PM[/i]"
fit_content = true
[node name="RichTextLabel4" type="RichTextLabel" parent="Template/VBoxContainer" unique_id=443052553]
layout_mode = 2
theme = SubResource("Theme_w8y7q")
bbcode_enabled = true
text = "Dies ist eine Telegram-Message
[i]8:12 PM[/i]"
fit_content = true
[node name="RichTextLabel5" type="RichTextLabel" parent="Template/VBoxContainer" unique_id=1955305073]
layout_mode = 2
theme = SubResource("Theme_w8y7q")
bbcode_enabled = true
text = "Dies ist eine Telegram-Message
[i]8:12 PM[/i]"
fit_content = true
horizontal_alignment = 2
[node name="RichTextLabel6" type="RichTextLabel" parent="Template/VBoxContainer" unique_id=1577640143]
layout_mode = 2
theme = SubResource("Theme_w8y7q")
bbcode_enabled = true
text = "Dies ist eine Telegram-Message
[i]8:12 PM[/i]"
fit_content = true
[node name="RichTextLabel" type="RichTextLabel" parent="Template/VBoxContainer" unique_id=1513469081]
layout_mode = 2
size_flags_horizontal = 3
theme = SubResource("Theme_w8y7q")
bbcode_enabled = true
text = "Dies ist eine Telegram-Message, die deutlich länger ist, als die vorherige, um das mal abzuschätzen.
[i]8:12 PM[/i]"
fit_content = true

View File

@ -0,0 +1,219 @@
[gd_scene format=3 uid="uid://dgb7x8na0ek57"]
[ext_resource type="Theme" uid="uid://bhw3jbbrt3m1k" path="res://logic-scenes/chat_view/theme-smartphone.tres" id="1_6hmi7"]
[ext_resource type="LabelSettings" uid="uid://dy1l6fcsy54od" path="res://logic-scenes/chat_view/labe-top-bar.tres" id="2_xckgu"]
[ext_resource type="Texture2D" uid="uid://dhecdhucnu7sq" path="res://logic-scenes/chat_view/phone-notifications.png" id="3_myhe7"]
[ext_resource type="Script" uid="uid://db7t2kqbsskoq" path="res://logic-scenes/chat_view/chat-view.gd" id="4_myhe7"]
[ext_resource type="Texture2D" uid="uid://cv58eu35ra1ku" path="res://logic-scenes/chat_view/phone-dot.png" id="4_vvup7"]
[ext_resource type="Texture2D" uid="uid://bng2qbusdg7dj" path="res://logic-scenes/chat_view/phone-signal.png" id="4_xckgu"]
[ext_resource type="Script" uid="uid://be16bo6mf4kqu" path="res://logic-scenes/chat_view/chat-bubble.gd" id="5_xckgu"]
[ext_resource type="Texture2D" uid="uid://dekaqj10p8rqk" path="res://logic-scenes/chat_view/avatar-dummy.png" id="6_bvmqu"]
[ext_resource type="LabelSettings" uid="uid://mh8uu4rlqmv5" path="res://logic-scenes/chat_view/label-timestamp.tres" id="9_xckgu"]
[sub_resource type="Resource" id="Resource_iwd5k"]
script = ExtResource("5_xckgu")
text = "Sorry"
time_string = "This is smol."
metadata/_custom_type_script = "uid://be16bo6mf4kqu"
[sub_resource type="Resource" id="Resource_1hd2w"]
script = ExtResource("5_xckgu")
text = "I never knew what to say. Can I write instead?"
metadata/_custom_type_script = "uid://be16bo6mf4kqu"
[sub_resource type="Resource" id="Resource_w8y7q"]
script = ExtResource("5_xckgu")
text = "🙄"
is_own_message = true
metadata/_custom_type_script = "uid://be16bo6mf4kqu"
[node name="PhoneScreen" type="VBoxContainer" unique_id=1207866359]
custom_minimum_size = Vector2(800, 1280)
offset_right = 830.0
offset_bottom = 1300.0
theme = ExtResource("1_6hmi7")
[node name="TopBar" type="HBoxContainer" parent="." unique_id=715115340]
layout_mode = 2
alignment = 1
[node name="Time" type="Label" parent="TopBar" unique_id=538973152]
layout_mode = 2
text = "08:12 PM"
label_settings = ExtResource("2_xckgu")
horizontal_alignment = 1
vertical_alignment = 1
[node name="Notifcations" type="TextureRect" parent="TopBar" unique_id=164400921]
layout_mode = 2
texture = ExtResource("3_myhe7")
[node name="Dot1" type="TextureRect" parent="TopBar" unique_id=1306078406]
layout_mode = 2
texture = ExtResource("4_vvup7")
[node name="Dot2" type="TextureRect" parent="TopBar" unique_id=256206201]
layout_mode = 2
texture = ExtResource("4_vvup7")
[node name="Control2" type="Control" parent="TopBar" unique_id=209916177]
layout_mode = 2
size_flags_horizontal = 3
[node name="SignalStrength" type="TextureRect" parent="TopBar" unique_id=416104296]
layout_mode = 2
texture = ExtResource("4_xckgu")
[node name="Carrier" type="Label" parent="TopBar" unique_id=61022698]
layout_mode = 2
text = "HRT-Mobile"
label_settings = ExtResource("2_xckgu")
horizontal_alignment = 1
vertical_alignment = 1
[node name="ScrollContainer" type="ScrollContainer" parent="." unique_id=124411261]
custom_minimum_size = Vector2(800, 1280)
layout_mode = 2
size_flags_horizontal = 4
horizontal_scroll_mode = 0
vertical_scroll_mode = 2
script = ExtResource("4_myhe7")
messages = Array[ExtResource("5_xckgu")]([SubResource("Resource_iwd5k"), SubResource("Resource_1hd2w"), SubResource("Resource_w8y7q")])
[node name="VBoxContainer" type="VBoxContainer" parent="ScrollContainer" unique_id=1303301180]
layout_mode = 2
size_flags_horizontal = 3
[node name="PanelContainer" type="PanelContainer" parent="ScrollContainer/VBoxContainer" unique_id=1212868765]
layout_mode = 2
[node name="HBoxContainer" type="HBoxContainer" parent="ScrollContainer/VBoxContainer/PanelContainer" unique_id=872807975]
layout_mode = 2
size_flags_horizontal = 3
alignment = 2
[node name="TextureRect" type="TextureRect" parent="ScrollContainer/VBoxContainer/PanelContainer/HBoxContainer" unique_id=1340018572]
layout_mode = 2
size_flags_vertical = 8
texture = ExtResource("6_bvmqu")
stretch_mode = 2
[node name="VBoxContainer" type="VBoxContainer" parent="ScrollContainer/VBoxContainer/PanelContainer/HBoxContainer" unique_id=1464038635]
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 9
[node name="RichTextLabel" type="RichTextLabel" parent="ScrollContainer/VBoxContainer/PanelContainer/HBoxContainer/VBoxContainer" unique_id=765887203]
layout_mode = 2
size_flags_horizontal = 3
bbcode_enabled = true
text = "Dies ist eine Telegram-Message.
Ich schreibe mal etwas länger, ob zu sehen,
ob der Bums irgendwann umbricht.
lalle back, lalle back, lalle-lalle-back ... dies ist ein test
"
fit_content = true
scroll_active = false
vertical_alignment = 1
[node name="Label" type="Label" parent="ScrollContainer/VBoxContainer/PanelContainer/HBoxContainer/VBoxContainer" unique_id=1782456747]
layout_mode = 2
text = "8:12 PM"
label_settings = ExtResource("9_xckgu")
horizontal_alignment = 2
[node name="Control" type="Control" parent="ScrollContainer/VBoxContainer/PanelContainer/HBoxContainer" unique_id=1910496415]
custom_minimum_size = Vector2(128, 128)
layout_mode = 2
[node name="PanelContainer2" type="PanelContainer" parent="ScrollContainer/VBoxContainer" unique_id=890417687]
layout_mode = 2
[node name="HBoxContainer2" type="HBoxContainer" parent="ScrollContainer/VBoxContainer/PanelContainer2" unique_id=202362927]
layout_mode = 2
[node name="Control" type="Control" parent="ScrollContainer/VBoxContainer/PanelContainer2/HBoxContainer2" unique_id=1066349528]
custom_minimum_size = Vector2(128, 128)
layout_mode = 2
[node name="VBoxContainer" type="VBoxContainer" parent="ScrollContainer/VBoxContainer/PanelContainer2/HBoxContainer2" unique_id=1812968932]
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 9
[node name="RichTextLabel" type="RichTextLabel" parent="ScrollContainer/VBoxContainer/PanelContainer2/HBoxContainer2/VBoxContainer" unique_id=200296370]
layout_mode = 2
size_flags_horizontal = 3
bbcode_enabled = true
text = "Dies ist eine Telegram-Message.
Ich schreibe mal etwas länger, ob zu sehen,
ob der Bums irgendwann umbricht.
lalle back, lalle back, lalle-lalle-back ... dies ist ein test"
fit_content = true
scroll_active = false
vertical_alignment = 1
[node name="Label" type="Label" parent="ScrollContainer/VBoxContainer/PanelContainer2/HBoxContainer2/VBoxContainer" unique_id=357886658]
layout_mode = 2
text = "8:12 PM"
label_settings = ExtResource("9_xckgu")
horizontal_alignment = 2
[node name="TextureRect2" type="TextureRect" parent="ScrollContainer/VBoxContainer/PanelContainer2/HBoxContainer2" unique_id=554303455]
layout_mode = 2
size_flags_horizontal = 8
size_flags_vertical = 8
texture = ExtResource("6_bvmqu")
stretch_mode = 2
[node name="PanelContainer3" type="PanelContainer" parent="ScrollContainer/VBoxContainer" unique_id=150017241]
layout_mode = 2
[node name="HBoxContainer2" type="HBoxContainer" parent="ScrollContainer/VBoxContainer/PanelContainer3" unique_id=165650096]
layout_mode = 2
[node name="Control" type="Control" parent="ScrollContainer/VBoxContainer/PanelContainer3/HBoxContainer2" unique_id=1455939211]
custom_minimum_size = Vector2(128, 128)
layout_mode = 2
[node name="VBoxContainer" type="VBoxContainer" parent="ScrollContainer/VBoxContainer/PanelContainer3/HBoxContainer2" unique_id=335599198]
layout_mode = 2
size_flags_horizontal = 10
size_flags_vertical = 8
[node name="RichTextLabel" type="RichTextLabel" parent="ScrollContainer/VBoxContainer/PanelContainer3/HBoxContainer2/VBoxContainer" unique_id=1556001986]
layout_mode = 2
size_flags_horizontal = 3
bbcode_enabled = true
text = "Kasse dich Furz"
fit_content = true
scroll_active = false
autowrap_mode = 0
vertical_alignment = 1
[node name="Label" type="Label" parent="ScrollContainer/VBoxContainer/PanelContainer3/HBoxContainer2/VBoxContainer" unique_id=1608122043]
layout_mode = 2
text = "8:12 PM"
label_settings = ExtResource("9_xckgu")
horizontal_alignment = 2
[node name="TextureRect2" type="TextureRect" parent="ScrollContainer/VBoxContainer/PanelContainer3/HBoxContainer2" unique_id=844484991]
layout_mode = 2
size_flags_horizontal = 8
size_flags_vertical = 8
texture = ExtResource("6_bvmqu")
stretch_mode = 2
[node name="NavBar" type="HBoxContainer" parent="." unique_id=1214154460]
layout_mode = 2
alignment = 1
[node name="Dot1" type="TextureRect" parent="NavBar" unique_id=721203980]
layout_mode = 2
texture = ExtResource("4_vvup7")
[node name="Dot2" type="TextureRect" parent="NavBar" unique_id=1265715350]
layout_mode = 2
texture = ExtResource("4_vvup7")

View File

@ -0,0 +1,7 @@
[gd_resource type="LabelSettings" format=3 uid="uid://dy1l6fcsy54od"]
[ext_resource type="FontFile" uid="uid://bdkb43smt08c0" path="res://import/fonts/Ubuntu-B.ttf" id="1_tvq1w"]
[resource]
font = ExtResource("1_tvq1w")
font_size = 18

View File

@ -0,0 +1,7 @@
[gd_resource type="LabelSettings" format=3 uid="uid://mh8uu4rlqmv5"]
[ext_resource type="FontFile" uid="uid://b0i5ipn75noh6" path="res://import/fonts/Ubuntu-R.ttf" id="1_f4p0e"]
[resource]
font = ExtResource("1_f4p0e")
font_size = 12

BIN
src/logic-scenes/chat_view/phone-dot.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cv58eu35ra1ku"
path="res://.godot/imported/phone-dot.png-2758efc6f7ccb6f5a32a65b4f7cfdc54.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://logic-scenes/chat_view/phone-dot.png"
dest_files=["res://.godot/imported/phone-dot.png-2758efc6f7ccb6f5a32a65b4f7cfdc54.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
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/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
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

BIN
src/logic-scenes/chat_view/phone-notifications.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dhecdhucnu7sq"
path="res://.godot/imported/phone-notifications.png-2e4c4652e368365f11a8fcd5429d7863.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://logic-scenes/chat_view/phone-notifications.png"
dest_files=["res://.godot/imported/phone-notifications.png-2e4c4652e368365f11a8fcd5429d7863.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
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/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
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

BIN
src/logic-scenes/chat_view/phone-signal.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bng2qbusdg7dj"
path="res://.godot/imported/phone-signal.png-dd1931ca7afeae37c8c6215bd5a99a82.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://logic-scenes/chat_view/phone-signal.png"
dest_files=["res://.godot/imported/phone-signal.png-dd1931ca7afeae37c8c6215bd5a99a82.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
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/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
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

View File

@ -0,0 +1,24 @@
[gd_resource type="Theme" format=3 uid="uid://bhw3jbbrt3m1k"]
[ext_resource type="FontFile" uid="uid://bdkb43smt08c0" path="res://import/fonts/Ubuntu-B.ttf" id="1_k35rd"]
[ext_resource type="FontFile" uid="uid://bmh8v44f6txfo" path="res://import/fonts/Ubuntu-RI.ttf" id="2_btmtg"]
[ext_resource type="FontFile" uid="uid://b0i5ipn75noh6" path="res://import/fonts/Ubuntu-R.ttf" id="3_vup8s"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_iwd5k"]
content_margin_left = 12.0
content_margin_top = 8.0
content_margin_right = 12.0
content_margin_bottom = 8.0
bg_color = Color(0.757003, 0.509749, 0.667446, 1)
border_color = Color(0.8, 0.8, 0.8, 0)
corner_radius_top_left = 20
corner_radius_top_right = 20
corner_radius_bottom_right = 20
[resource]
default_font = ExtResource("3_vup8s")
default_font_size = 24
RichTextLabel/fonts/bold_font = ExtResource("1_k35rd")
RichTextLabel/fonts/italics_font = ExtResource("2_btmtg")
RichTextLabel/styles/normal = SubResource("StyleBoxFlat_iwd5k")
VBoxContainer/constants/separation = 9