Skip to content

Commit 0612516

Browse files
Add demo project
1 parent 31079e0 commit 0612516

14 files changed

+405
-2
lines changed

.github/FUNDING.yml

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
github: syntaxerror247

README.md

+9-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
1-
# DateTimePicker Plugin
1+
<p align="center">
2+
<img width="200" src="icon.png?raw=true" alt="plugin icon">
3+
</p>
4+
5+
# DateTimePicker Plugin [![](https://img.shields.io/static/v1?label=Sponsor&message=%E2%9D%A4&logo=GitHub&color=%23fe8e86)](https://github.com/sponsors/syntaxerror247)
26

37
**DateTimePicker** is a Godot Android plugin that provides native Android **Date Picker**, **Time Picker**, and **DateTime Picker**
48

@@ -31,7 +35,10 @@
3135
- year: Selected year
3236
- hour: Selected hour (0–23)
3337
- minute: Selected minute (0–59)
34-
38+
39+
## Demo Project
40+
***You can try this plugin using [Demo Project](demo)***
41+
3542
## Screenshots
3643
![1000187047](https://github.com/user-attachments/assets/80120b77-ee07-4a36-993a-bd97931059f4)
3744
![1000187048](https://github.com/user-attachments/assets/44217d6a-cdd1-4cb9-8938-4d1b9799ed21)

demo/.gitattributes

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# Normalize EOL for all files that Git considers text files.
2+
* text=auto eol=lf

demo/.gitignore

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
# Godot 4+ specific ignores
2+
.godot/
3+
*.import
4+
/android/
Binary file not shown.
Binary file not shown.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
@tool
2+
extends EditorPlugin
3+
4+
# A class member to hold the editor export plugin during its lifecycle.
5+
var export_plugin : AndroidExportPlugin
6+
7+
func _enter_tree():
8+
# Initialization of the plugin goes here.
9+
export_plugin = AndroidExportPlugin.new()
10+
add_export_plugin(export_plugin)
11+
12+
13+
func _exit_tree():
14+
# Clean-up of the plugin goes here.
15+
remove_export_plugin(export_plugin)
16+
export_plugin = null
17+
18+
19+
class AndroidExportPlugin extends EditorExportPlugin:
20+
var _plugin_name = "DateTimePicker"
21+
22+
func _supports_platform(platform):
23+
if platform is EditorExportPlatformAndroid:
24+
return true
25+
return false
26+
27+
func _get_android_libraries(platform, debug):
28+
if debug:
29+
return PackedStringArray([_plugin_name + "/bin/debug/" + _plugin_name + "-debug.aar"])
30+
else:
31+
return PackedStringArray([_plugin_name + "/bin/release/" + _plugin_name + "-release.aar"])
32+
33+
func _get_name():
34+
return _plugin_name

demo/addons/DateTimePicker/plugin.cfg

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
[plugin]
2+
3+
name="DateTimePicker"
4+
description="A simple Godot Android plugin to pick date and time."
5+
author="Anish Mishra"
6+
version="1.0"
7+
script="export_plugin.gd"

demo/export_presets.cfg

+207
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,207 @@
1+
[preset.0]
2+
3+
name="Android"
4+
platform="Android"
5+
runnable=true
6+
advanced_options=false
7+
dedicated_server=false
8+
custom_features=""
9+
export_filter="all_resources"
10+
include_filter=""
11+
exclude_filter=""
12+
export_path=""
13+
encryption_include_filters=""
14+
encryption_exclude_filters=""
15+
encrypt_pck=false
16+
encrypt_directory=false
17+
script_export_mode=2
18+
19+
[preset.0.options]
20+
21+
custom_template/debug=""
22+
custom_template/release=""
23+
gradle_build/use_gradle_build=true
24+
gradle_build/gradle_build_directory=""
25+
gradle_build/android_source_template=""
26+
gradle_build/compress_native_libraries=false
27+
gradle_build/export_format=0
28+
gradle_build/min_sdk=""
29+
gradle_build/target_sdk=""
30+
architectures/armeabi-v7a=false
31+
architectures/arm64-v8a=true
32+
architectures/x86=false
33+
architectures/x86_64=false
34+
version/code=1
35+
version/name=""
36+
package/unique_name="com.mishragames.godot.plugin.datetimepicker"
37+
package/name="DateTimePicker Demo"
38+
package/signed=true
39+
package/app_category=2
40+
package/retain_data_on_uninstall=false
41+
package/exclude_from_recents=false
42+
package/show_in_android_tv=false
43+
package/show_in_app_library=true
44+
package/show_as_launcher_app=false
45+
launcher_icons/main_192x192=""
46+
launcher_icons/adaptive_foreground_432x432=""
47+
launcher_icons/adaptive_background_432x432=""
48+
graphics/opengl_debug=false
49+
xr_features/xr_mode=0
50+
screen/immersive_mode=true
51+
screen/support_small=true
52+
screen/support_normal=true
53+
screen/support_large=true
54+
screen/support_xlarge=true
55+
user_data_backup/allow=false
56+
command_line/extra_args=""
57+
apk_expansion/enable=false
58+
apk_expansion/SALT=""
59+
apk_expansion/public_key=""
60+
permissions/custom_permissions=PackedStringArray()
61+
permissions/access_checkin_properties=false
62+
permissions/access_coarse_location=false
63+
permissions/access_fine_location=false
64+
permissions/access_location_extra_commands=false
65+
permissions/access_mock_location=false
66+
permissions/access_network_state=false
67+
permissions/access_surface_flinger=false
68+
permissions/access_wifi_state=false
69+
permissions/account_manager=false
70+
permissions/add_voicemail=false
71+
permissions/authenticate_accounts=false
72+
permissions/battery_stats=false
73+
permissions/bind_accessibility_service=false
74+
permissions/bind_appwidget=false
75+
permissions/bind_device_admin=false
76+
permissions/bind_input_method=false
77+
permissions/bind_nfc_service=false
78+
permissions/bind_notification_listener_service=false
79+
permissions/bind_print_service=false
80+
permissions/bind_remoteviews=false
81+
permissions/bind_text_service=false
82+
permissions/bind_vpn_service=false
83+
permissions/bind_wallpaper=false
84+
permissions/bluetooth=false
85+
permissions/bluetooth_admin=false
86+
permissions/bluetooth_privileged=false
87+
permissions/brick=false
88+
permissions/broadcast_package_removed=false
89+
permissions/broadcast_sms=false
90+
permissions/broadcast_sticky=false
91+
permissions/broadcast_wap_push=false
92+
permissions/call_phone=false
93+
permissions/call_privileged=false
94+
permissions/camera=false
95+
permissions/capture_audio_output=false
96+
permissions/capture_secure_video_output=false
97+
permissions/capture_video_output=false
98+
permissions/change_component_enabled_state=false
99+
permissions/change_configuration=false
100+
permissions/change_network_state=false
101+
permissions/change_wifi_multicast_state=false
102+
permissions/change_wifi_state=false
103+
permissions/clear_app_cache=false
104+
permissions/clear_app_user_data=false
105+
permissions/control_location_updates=false
106+
permissions/delete_cache_files=false
107+
permissions/delete_packages=false
108+
permissions/device_power=false
109+
permissions/diagnostic=false
110+
permissions/disable_keyguard=false
111+
permissions/dump=false
112+
permissions/expand_status_bar=false
113+
permissions/factory_test=false
114+
permissions/flashlight=false
115+
permissions/force_back=false
116+
permissions/get_accounts=false
117+
permissions/get_package_size=false
118+
permissions/get_tasks=false
119+
permissions/get_top_activity_info=false
120+
permissions/global_search=false
121+
permissions/hardware_test=false
122+
permissions/inject_events=false
123+
permissions/install_location_provider=false
124+
permissions/install_packages=false
125+
permissions/install_shortcut=false
126+
permissions/internal_system_window=false
127+
permissions/internet=false
128+
permissions/kill_background_processes=false
129+
permissions/location_hardware=false
130+
permissions/manage_accounts=false
131+
permissions/manage_app_tokens=false
132+
permissions/manage_documents=false
133+
permissions/manage_external_storage=false
134+
permissions/master_clear=false
135+
permissions/media_content_control=false
136+
permissions/modify_audio_settings=false
137+
permissions/modify_phone_state=false
138+
permissions/mount_format_filesystems=false
139+
permissions/mount_unmount_filesystems=false
140+
permissions/nfc=false
141+
permissions/persistent_activity=false
142+
permissions/post_notifications=false
143+
permissions/process_outgoing_calls=false
144+
permissions/read_calendar=false
145+
permissions/read_call_log=false
146+
permissions/read_contacts=false
147+
permissions/read_external_storage=false
148+
permissions/read_frame_buffer=false
149+
permissions/read_history_bookmarks=false
150+
permissions/read_input_state=false
151+
permissions/read_logs=false
152+
permissions/read_phone_state=false
153+
permissions/read_profile=false
154+
permissions/read_sms=false
155+
permissions/read_social_stream=false
156+
permissions/read_sync_settings=false
157+
permissions/read_sync_stats=false
158+
permissions/read_user_dictionary=false
159+
permissions/reboot=false
160+
permissions/receive_boot_completed=false
161+
permissions/receive_mms=false
162+
permissions/receive_sms=false
163+
permissions/receive_wap_push=false
164+
permissions/record_audio=false
165+
permissions/reorder_tasks=false
166+
permissions/restart_packages=false
167+
permissions/send_respond_via_message=false
168+
permissions/send_sms=false
169+
permissions/set_activity_watcher=false
170+
permissions/set_alarm=false
171+
permissions/set_always_finish=false
172+
permissions/set_animation_scale=false
173+
permissions/set_debug_app=false
174+
permissions/set_orientation=false
175+
permissions/set_pointer_speed=false
176+
permissions/set_preferred_applications=false
177+
permissions/set_process_limit=false
178+
permissions/set_time=false
179+
permissions/set_time_zone=false
180+
permissions/set_wallpaper=false
181+
permissions/set_wallpaper_hints=false
182+
permissions/signal_persistent_processes=false
183+
permissions/status_bar=false
184+
permissions/subscribed_feeds_read=false
185+
permissions/subscribed_feeds_write=false
186+
permissions/system_alert_window=false
187+
permissions/transmit_ir=false
188+
permissions/uninstall_shortcut=false
189+
permissions/update_device_stats=false
190+
permissions/use_credentials=false
191+
permissions/use_sip=false
192+
permissions/vibrate=false
193+
permissions/wake_lock=false
194+
permissions/write_apn_settings=false
195+
permissions/write_calendar=false
196+
permissions/write_call_log=false
197+
permissions/write_contacts=false
198+
permissions/write_external_storage=false
199+
permissions/write_gservices=false
200+
permissions/write_history_bookmarks=false
201+
permissions/write_profile=false
202+
permissions/write_secure_settings=false
203+
permissions/write_settings=false
204+
permissions/write_sms=false
205+
permissions/write_social_stream=false
206+
permissions/write_sync_settings=false
207+
permissions/write_user_dictionary=false

demo/icon.png

23.3 KB
Loading

demo/icon.svg

+1
Loading

demo/main.gd

+32
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
extends Control
2+
3+
var _plugin_name = "DateTimePicker"
4+
var _android_plugin
5+
6+
var is24HourView = true
7+
8+
func _ready():
9+
if Engine.has_singleton(_plugin_name):
10+
_android_plugin = Engine.get_singleton(_plugin_name)
11+
_android_plugin.connect("onDateTimePicked",date_time_picked)
12+
_android_plugin.connect("onDatePicked",date_time_picked)
13+
_android_plugin.connect("onTimePicked",date_time_picked)
14+
else:
15+
printerr("Couldn't find plugin " + _plugin_name)
16+
17+
func date_time_picked(dict: Dictionary) -> void:
18+
$VBoxContainer/console.text += str(dict) + "\n"
19+
20+
func _on_datetime_picker_pressed() -> void:
21+
if _android_plugin:
22+
_android_plugin.pickDateTime(is24HourView)
23+
24+
25+
func _on_date_picker_pressed() -> void:
26+
if _android_plugin:
27+
_android_plugin.pickDate()
28+
29+
30+
func _on_time_picker_pressed() -> void:
31+
if _android_plugin:
32+
_android_plugin.pickTime(is24HourView)

demo/main.tscn

+72
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
[gd_scene load_steps=4 format=3 uid="uid://cg3hylang5fxn"]
2+
3+
[ext_resource type="Script" path="res://main.gd" id="1_j0gfq"]
4+
[ext_resource type="Texture2D" uid="uid://b3hbt6hh5dykq" path="res://icon.png" id="2_o6582"]
5+
6+
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_pihwh"]
7+
content_margin_left = 20.0
8+
content_margin_right = 20.0
9+
bg_color = Color(0.111197, 0.111197, 0.111197, 1)
10+
border_width_left = 5
11+
border_width_top = 5
12+
border_width_right = 5
13+
border_width_bottom = 5
14+
15+
[node name="Main" type="Control"]
16+
layout_mode = 3
17+
anchors_preset = 15
18+
anchor_right = 1.0
19+
anchor_bottom = 1.0
20+
grow_horizontal = 2
21+
grow_vertical = 2
22+
script = ExtResource("1_j0gfq")
23+
24+
[node name="VBoxContainer" type="VBoxContainer" parent="."]
25+
layout_mode = 1
26+
anchors_preset = 15
27+
anchor_right = 1.0
28+
anchor_bottom = 1.0
29+
grow_horizontal = 2
30+
grow_vertical = 2
31+
theme_override_constants/separation = 30
32+
33+
[node name="TextureRect" type="TextureRect" parent="VBoxContainer"]
34+
layout_mode = 2
35+
texture = ExtResource("2_o6582")
36+
stretch_mode = 5
37+
38+
[node name="datetime_picker" type="Button" parent="VBoxContainer"]
39+
custom_minimum_size = Vector2(400, 100)
40+
layout_mode = 2
41+
size_flags_horizontal = 4
42+
theme_override_font_sizes/font_size = 32
43+
text = "show DateTime picker"
44+
45+
[node name="date_picker" type="Button" parent="VBoxContainer"]
46+
custom_minimum_size = Vector2(400, 100)
47+
layout_mode = 2
48+
size_flags_horizontal = 4
49+
theme_override_font_sizes/font_size = 32
50+
text = "show Date picker"
51+
52+
[node name="time_picker" type="Button" parent="VBoxContainer"]
53+
custom_minimum_size = Vector2(400, 100)
54+
layout_mode = 2
55+
size_flags_horizontal = 4
56+
theme_override_font_sizes/font_size = 32
57+
text = "show Time picker"
58+
59+
[node name="Label" type="Label" parent="VBoxContainer"]
60+
layout_mode = 2
61+
theme_override_font_sizes/font_size = 32
62+
text = "-----Console Log-----"
63+
horizontal_alignment = 1
64+
65+
[node name="console" type="Label" parent="VBoxContainer"]
66+
custom_minimum_size = Vector2(0, 300)
67+
layout_mode = 2
68+
theme_override_styles/normal = SubResource("StyleBoxFlat_pihwh")
69+
70+
[connection signal="pressed" from="VBoxContainer/datetime_picker" to="." method="_on_datetime_picker_pressed"]
71+
[connection signal="pressed" from="VBoxContainer/date_picker" to="." method="_on_date_picker_pressed"]
72+
[connection signal="pressed" from="VBoxContainer/time_picker" to="." method="_on_time_picker_pressed"]

0 commit comments

Comments
 (0)