Commit missing SharePlugin source
I seem to have forgotten to add my patched version of the SharePlugin in
commit 7f06f39f7e
, so here it is.
This commit is contained in:
parent
3ab6348084
commit
529dee2577
|
@ -0,0 +1,80 @@
|
|||
#
|
||||
# © 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)
|
|
@ -0,0 +1,65 @@
|
|||
#
|
||||
# © 2024-present https://github.com/cengiz-pz
|
||||
#
|
||||
|
||||
@tool
|
||||
extends EditorPlugin
|
||||
|
||||
const PLUGIN_NODE_TYPE_NAME = "Share"
|
||||
const PLUGIN_PARENT_NODE_TYPE = "Node"
|
||||
const PLUGIN_NAME: String = "SharePlugin"
|
||||
const PLUGIN_VERSION: String = "3.0"
|
||||
const PLUGIN_PACKAGE: String = "org.godotengine.plugin.android.share"
|
||||
const PLUGIN_DEPENDENCIES: Array = [ "androidx.appcompat:appcompat:1.7.0" ]
|
||||
|
||||
const PROVIDER_TAG = """
|
||||
<provider android:name="%s.ShareFileProvider"
|
||||
android:exported="false"
|
||||
android:authorities="%s.sharefileprovider"
|
||||
android:grantUriPermissions="true">
|
||||
<meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_provider_paths"/>
|
||||
</provider>
|
||||
"""
|
||||
|
||||
var export_plugin: AndroidExportPlugin
|
||||
|
||||
|
||||
func _enter_tree() -> void:
|
||||
add_custom_type(PLUGIN_NODE_TYPE_NAME, PLUGIN_PARENT_NODE_TYPE, preload("Share.gd"), preload("icon.png"))
|
||||
export_plugin = AndroidExportPlugin.new()
|
||||
add_export_plugin(export_plugin)
|
||||
|
||||
|
||||
func _exit_tree() -> void:
|
||||
remove_custom_type(PLUGIN_NODE_TYPE_NAME)
|
||||
remove_export_plugin(export_plugin)
|
||||
export_plugin = null
|
||||
|
||||
|
||||
class AndroidExportPlugin extends EditorExportPlugin:
|
||||
var _plugin_name = PLUGIN_NAME
|
||||
|
||||
|
||||
func _supports_platform(platform: EditorExportPlatform) -> bool:
|
||||
if platform is EditorExportPlatformAndroid:
|
||||
return true
|
||||
return false
|
||||
|
||||
|
||||
func _get_android_libraries(platform: EditorExportPlatform, debug: bool) -> PackedStringArray:
|
||||
if debug:
|
||||
return PackedStringArray(["%s/bin/debug/%s-%s-debug.aar" % [_plugin_name, _plugin_name, PLUGIN_VERSION]])
|
||||
else:
|
||||
return PackedStringArray(["%s/bin/release/%s-%s-release.aar" % [_plugin_name, _plugin_name, PLUGIN_VERSION]])
|
||||
|
||||
|
||||
func _get_name() -> String:
|
||||
return _plugin_name
|
||||
|
||||
|
||||
func _get_android_dependencies(platform: EditorExportPlatform, debug: bool) -> PackedStringArray:
|
||||
return PackedStringArray(PLUGIN_DEPENDENCIES)
|
||||
|
||||
|
||||
func _get_android_manifest_application_element_contents(platform: EditorExportPlatform, debug: bool) -> String:
|
||||
return PROVIDER_TAG % [PLUGIN_PACKAGE, get_option("package/unique_name")]
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cm4eejjdmpyec"
|
||||
path="res://.godot/imported/icon.png-cbd45f0ce843eb69e82e7474c8559974.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/SharePlugin/icon.png"
|
||||
dest_files=["res://.godot/imported/icon.png-cbd45f0ce843eb69e82e7474c8559974.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
|
|
@ -0,0 +1,47 @@
|
|||
#
|
||||
# © 2024-present https://github.com/cengiz-pz
|
||||
#
|
||||
|
||||
class_name SharedData
|
||||
extends RefCounted
|
||||
|
||||
const DATA_KEY_TITLE = "title"
|
||||
const DATA_KEY_SUBJECT = "subject"
|
||||
const DATA_KEY_CONTENT = "content"
|
||||
const DATA_KEY_FILE_PATH = "file_path"
|
||||
const DATA_KEY_MIME_TYPE = "mime_type"
|
||||
|
||||
var _data: Dictionary
|
||||
|
||||
|
||||
func _init() -> void:
|
||||
_data = {}
|
||||
|
||||
|
||||
func set_title(a_title: String) -> SharedData:
|
||||
_data[DATA_KEY_TITLE] = a_title
|
||||
return self
|
||||
|
||||
|
||||
func set_subject(a_subject: String) -> SharedData:
|
||||
_data[DATA_KEY_SUBJECT] = a_subject
|
||||
return self
|
||||
|
||||
|
||||
func set_content(a_content: String) -> SharedData:
|
||||
_data[DATA_KEY_CONTENT] = a_content
|
||||
return self
|
||||
|
||||
|
||||
func set_file_path(a_file_path: String) -> SharedData:
|
||||
_data[DATA_KEY_FILE_PATH] = a_file_path
|
||||
return self
|
||||
|
||||
|
||||
func set_mime_type(a_mime_type: String) -> SharedData:
|
||||
_data[DATA_KEY_MIME_TYPE] = a_mime_type
|
||||
return self
|
||||
|
||||
|
||||
func get_raw_data() -> Dictionary:
|
||||
return _data
|
|
@ -0,0 +1,10 @@
|
|||
;
|
||||
; © 2024-present https://github.com/cengiz-pz
|
||||
;
|
||||
[plugin]
|
||||
|
||||
name="Share"
|
||||
description="Allow sharing of text or images with other apps"
|
||||
author="Cengiz"
|
||||
version="3.0"
|
||||
script="ShareExportPlugin.gd"
|
Loading…
Reference in New Issue