81 lines
2.3 KiB
GDScript
81 lines
2.3 KiB
GDScript
#
|
|
# © 2024-present https://github.com/cengiz-pz
|
|
#
|
|
|
|
@tool
|
|
class_name Share
|
|
extends Node
|
|
|
|
const PLUGIN_SINGLETON_NAME: String = "SharePlugin"
|
|
const MIME_TYPE_TEXT: String = "text/plain"
|
|
const MIME_TYPE_IMAGE: String = "image/*"
|
|
|
|
@onready var _temp_image_path: String = OS.get_user_data_dir() + "/tmp_share_img_path.png"
|
|
|
|
var _plugin_singleton: Object
|
|
|
|
|
|
func _ready() -> void:
|
|
if OS.get_name() == "Android":
|
|
_update_plugin()
|
|
|
|
|
|
func _notification(a_what: int) -> void:
|
|
if a_what == NOTIFICATION_APPLICATION_RESUMED:
|
|
_update_plugin()
|
|
|
|
|
|
func _update_plugin() -> void:
|
|
if _plugin_singleton == null:
|
|
if Engine.has_singleton(PLUGIN_SINGLETON_NAME):
|
|
_plugin_singleton = Engine.get_singleton(PLUGIN_SINGLETON_NAME)
|
|
else:
|
|
printerr("%s singleton not found!" % PLUGIN_SINGLETON_NAME)
|
|
|
|
|
|
func share_text(a_title: String, a_subject: String, a_content: String) -> void:
|
|
if _plugin_singleton != null:
|
|
_plugin_singleton.share(
|
|
SharedData.new()
|
|
.set_title(a_title)
|
|
.set_subject(a_subject)
|
|
.set_content(a_content)
|
|
.set_mime_type(MIME_TYPE_TEXT)
|
|
.get_raw_data()
|
|
)
|
|
else:
|
|
printerr("%s plugin not initialized" % PLUGIN_SINGLETON_NAME)
|
|
|
|
|
|
func share_image(a_path: String, a_title: String, a_subject: String, a_content: String) -> void:
|
|
share_file(a_path, MIME_TYPE_IMAGE, a_title, a_subject, a_content)
|
|
|
|
|
|
func share_texture(a_texture: Texture2D, a_title: String, a_subject: String, a_content: String) -> void:
|
|
var __image: Image = a_texture.get_image()
|
|
__image.save_png(_temp_image_path)
|
|
share_file(_temp_image_path, MIME_TYPE_IMAGE, a_title, a_subject, a_content)
|
|
|
|
|
|
func share_viewport(a_viewport: Viewport, a_title: String, a_subject: String, a_content: String, a_flip_y: bool = false) -> void:
|
|
var __image: Image = a_viewport.get_texture().get_image()
|
|
if a_flip_y:
|
|
__image.flip_y()
|
|
__image.save_png(_temp_image_path)
|
|
share_file(_temp_image_path, MIME_TYPE_IMAGE, a_title, a_subject, a_content)
|
|
|
|
|
|
func share_file(a_path: String, a_mime_type: String, a_title: String, a_subject: String, a_content: String) -> void:
|
|
if _plugin_singleton != null:
|
|
_plugin_singleton.share(
|
|
SharedData.new()
|
|
.set_title(a_title)
|
|
.set_subject(a_subject)
|
|
.set_content(a_content)
|
|
.set_mime_type(a_mime_type)
|
|
.set_file_path(a_path)
|
|
.get_raw_data()
|
|
)
|
|
else:
|
|
printerr("%s plugin not initialized" % PLUGIN_SINGLETON_NAME)
|