79 lines
2.3 KiB
Kotlin
79 lines
2.3 KiB
Kotlin
package org.hso.texturesyncclient.controller
|
|
|
|
import javafx.collections.ObservableList
|
|
import org.hso.texturesyncclient.controller.net.Connection
|
|
import org.hso.texturesyncclient.model.Sha256
|
|
import org.hso.texturesyncclient.model.Texture
|
|
import org.hso.texturesyncclient.model.TextureFormat
|
|
import org.hso.texturesyncclient.view.importView.ImportViewController
|
|
import org.hso.texturesyncclient.view.mainView.MainViewController
|
|
import org.hso.texturesyncclient.view.startupView.StartupViewController
|
|
import tornadofx.Controller
|
|
import java.net.InetAddress
|
|
import java.util.Calendar
|
|
import java.io.File
|
|
import javax.imageio.ImageIO
|
|
import java.util.UUID
|
|
import java.nio.file.Files
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class RootController : Controller() {
|
|
|
|
private val mvc: MainViewController by inject()
|
|
private val svc: StartupViewController by inject()
|
|
private val ivc: ImportViewController by inject()
|
|
|
|
private val con = Connection(InetAddress.getByName("127.0.0.1"))
|
|
|
|
init {
|
|
/*var data = Texture()
|
|
var img = con.getTexturePreview(data.textureHash)
|
|
var test = GUIModel(data, img)
|
|
test.exportItem.setOnAction {
|
|
|
|
}
|
|
mvc.addElement(test)
|
|
|
|
data = Texture()
|
|
img = con.getTexturePreview(data.textureHash)
|
|
test = GUIModel(data, img)
|
|
test.exportItem.setOnAction {
|
|
|
|
}
|
|
mvc.addElement(test)*/
|
|
|
|
}
|
|
|
|
/**
|
|
* calculate the resolution, get today's date -> upload to server
|
|
* @param path the absolute path of the file on the client's system
|
|
* @param name the file name
|
|
* @param tags all tags for the file
|
|
*/
|
|
fun importTexture(path: String, name: String, tags: ObservableList<String>) {
|
|
val data = Files.readAllBytes(File(path).toPath()) // this is the image as byte array
|
|
|
|
val uuid = UUID.randomUUID()
|
|
val format = if (File(path).extension.toLowerCase() == "png") TextureFormat.PNG else TextureFormat.JPEG
|
|
val bimg = ImageIO.read(File(path)) //image for obtaining resolution
|
|
val resolution = Pair(bimg.height, bimg.width)
|
|
val cal = Calendar.getInstance() //calendar obj with current time
|
|
val hash = Sha256(data)
|
|
|
|
//Todo free image
|
|
|
|
val newTexture = Texture(uuid, name, tags.toTypedArray(), format, resolution, cal, hash)
|
|
|
|
con.uploadTexture(newTexture, data)
|
|
}
|
|
|
|
|
|
} |