﻿B4J=true
Group=Default Group
ModulesStructureVersion=1
Type=Class
Version=10
@EndOfDesignText@
#Region VERSIONS 
'	1.0.0.	01/26/2025
#End Region

Sub Class_Globals
	#IF B4J
		Private fx As JFX
	#ELSE IF B4I
		Private iClipboard As Clipboard
	#End If
	#If B4A or B4J
	Private mBitmap As B4XBitmap
	#End If
End Sub

'Initializes the object. You can add parameters to this method if needed.
Public Sub Initialize
End Sub

Public Sub setText(Text As String)
	#IF B4A
		Dim r As Reflector
		Dim jo As JavaObject
		jo = Me
		jo.RunMethod("SetTextToClipboard", Array As Object(Text, r.GetContext))
	#ELSE IF B4J
		fx.Clipboard.SetString(Text)
	#ELSE IF B4I
		iClipboard.StringItem = Text
	#End If
End Sub

Public Sub getText As String
	#IF B4A
		Dim r As Reflector
		Dim jo As JavaObject
		jo = Me
		Return jo.RunMethod("GetTextFromClipboard", Array As Object(r.GetContext))
	#ELSE IF B4J
		Return IIf(fx.Clipboard.HasString, fx.Clipboard.GetString, "")
	#ELSE IF B4I
		Return iClipboard.StringItem
	#End If
End Sub

Public Sub setImage(Img As B4XBitmap)
	#If B4I
	iClipboard.ImageItem = Img
	#Else
	mBitmap = Img
	#End If
End Sub
Public Sub getImage As B4XBitmap
	#If B4I
	Return iClipboard.ImageItem
	#Else
	Return mBitmap
	#End If
End Sub
Public Sub hasImage As Boolean
	#If B4I
	Return (iClipboard.ImageItem.IsInitialized And iClipboard.ImageItem <> Null)
	#Else
	Return (mBitmap.IsInitialized And mBitmap <> Null)
	#End If
End Sub

#IF B4A
	Dim jo As JavaObject
	Dim r As Reflector
	jo = Me
	Dim bOk As Boolean
	bOk = jo.RunMethod("HasTextCopied", Array As Object(r.GetContext))
	Return bOk
#ELSE IF B4j
	Public Sub HasText As Boolean
		Return fx.Clipboard.HasString
	End Sub
#End If

#IF B4A
#IF JAVA

import android.content.ClipboardManager;
import android.content.ClipData;
import android.content.ClipDescription;
import android.content.Context; 

public Boolean SetTextToClipboard(Object objtxt, Object mObjContext) {
	try{
		String txt = (String) objtxt;
		Context mContext = (Context) mObjContext;
		ClipboardManager myClipboard = (ClipboardManager) mContext.getSystemService("clipboard"); 
		ClipData myClip;
		myClip = ClipData.newPlainText("text", txt);
		myClipboard.setPrimaryClip(myClip);
		return true;
	}	
	catch(Exception ex){
		return false;
	}
};

public String GetTextFromClipboard(Object mObjContext) {
	Context mContext = (Context) mObjContext;
	ClipboardManager myClipboard = (ClipboardManager) mContext.getSystemService("clipboard"); 
	ClipData myClip = myClipboard.getPrimaryClip();
	ClipData.Item item = myClip.getItemAt(0);
	String txt = item.getText().toString();
	return txt;
};


public Boolean HasTextCopied(Object mObjContext) {
Context mContext = (Context) mObjContext;
ClipboardManager myClipboard = (ClipboardManager) mContext.getSystemService("clipboard");
if (!(myClipboard.hasPrimaryClip())) {
	return false;
} else if (!(myClipboard.getPrimaryClipDescription().hasMimeType("text/plain"))) {
	return false;
} else {
	return true;
}
};
#End If
#End If

