2016-10-04 19:12:55 +03:00
|
|
|
// +build sailfish sailfish_emulator
|
2016-06-19 05:24:38 +03:00
|
|
|
|
|
|
|
package sailfish
|
|
|
|
|
2016-08-23 23:51:01 +03:00
|
|
|
//#include <stdint.h>
|
2016-08-20 00:20:42 +03:00
|
|
|
//#include <stdlib.h>
|
2017-01-11 18:18:44 +03:00
|
|
|
//#include <string.h>
|
2016-06-19 05:24:38 +03:00
|
|
|
//#include "sailfish_sailfish.h"
|
|
|
|
import "C"
|
|
|
|
import (
|
|
|
|
"github.com/therecipe/qt"
|
|
|
|
"github.com/therecipe/qt/core"
|
|
|
|
"github.com/therecipe/qt/gui"
|
|
|
|
"github.com/therecipe/qt/quick"
|
2016-08-20 00:20:42 +03:00
|
|
|
"runtime"
|
2016-06-19 05:24:38 +03:00
|
|
|
"strings"
|
|
|
|
"unsafe"
|
|
|
|
)
|
|
|
|
|
2016-11-09 21:31:25 +03:00
|
|
|
func cGoUnpackString(s C.struct_QtSailfish_PackedString) string {
|
|
|
|
if len := int(s.len); len == -1 {
|
|
|
|
return C.GoString(s.data)
|
|
|
|
}
|
|
|
|
return C.GoStringN(s.data, C.int(s.len))
|
|
|
|
}
|
|
|
|
|
2016-06-19 05:24:38 +03:00
|
|
|
type SailfishApp struct {
|
|
|
|
ptr unsafe.Pointer
|
|
|
|
}
|
|
|
|
|
|
|
|
type SailfishApp_ITF interface {
|
|
|
|
SailfishApp_PTR() *SailfishApp
|
|
|
|
}
|
|
|
|
|
2017-01-14 02:36:20 +03:00
|
|
|
func (ptr *SailfishApp) SailfishApp_PTR() *SailfishApp {
|
|
|
|
return ptr
|
2016-06-19 05:24:38 +03:00
|
|
|
}
|
|
|
|
|
2017-01-14 02:36:20 +03:00
|
|
|
func (ptr *SailfishApp) Pointer() unsafe.Pointer {
|
|
|
|
if ptr != nil {
|
|
|
|
return ptr.ptr
|
2016-06-19 05:24:38 +03:00
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
2017-01-14 02:36:20 +03:00
|
|
|
func (ptr *SailfishApp) SetPointer(p unsafe.Pointer) {
|
|
|
|
if ptr != nil {
|
|
|
|
ptr.ptr = p
|
2016-06-19 05:24:38 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func PointerFromSailfishApp(ptr SailfishApp_ITF) unsafe.Pointer {
|
|
|
|
if ptr != nil {
|
|
|
|
return ptr.SailfishApp_PTR().Pointer()
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func NewSailfishAppFromPointer(ptr unsafe.Pointer) *SailfishApp {
|
|
|
|
var n = new(SailfishApp)
|
|
|
|
n.SetPointer(ptr)
|
|
|
|
return n
|
|
|
|
}
|
|
|
|
|
2016-08-20 00:20:42 +03:00
|
|
|
func (ptr *SailfishApp) DestroySailfishApp() {
|
2017-01-14 02:36:20 +03:00
|
|
|
if ptr != nil {
|
|
|
|
C.free(ptr.Pointer())
|
|
|
|
ptr.SetPointer(nil)
|
2017-06-09 02:47:53 +03:00
|
|
|
runtime.SetFinalizer(ptr, nil)
|
2017-01-14 02:36:20 +03:00
|
|
|
}
|
2016-08-20 00:20:42 +03:00
|
|
|
}
|
|
|
|
|
2016-06-19 05:24:38 +03:00
|
|
|
func SailfishApp_Application(argc int, argv []string) *gui.QGuiApplication {
|
2016-08-20 00:20:42 +03:00
|
|
|
var argvC = C.CString(strings.Join(argv, "|"))
|
|
|
|
defer C.free(unsafe.Pointer(argvC))
|
2016-08-24 18:00:49 +03:00
|
|
|
var tmpValue = gui.NewQGuiApplicationFromPointer(C.SailfishApp_SailfishApp_Application(C.int(int32(argc)), argvC))
|
2017-07-18 01:35:33 +03:00
|
|
|
if !qt.ExistsSignal(tmpValue.Pointer(), "destroyed") {
|
2016-08-26 16:33:11 +03:00
|
|
|
tmpValue.ConnectDestroyed(func(*core.QObject) { tmpValue.SetPointer(nil) })
|
2016-08-24 18:00:49 +03:00
|
|
|
}
|
|
|
|
return tmpValue
|
2016-06-19 05:24:38 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
func (ptr *SailfishApp) Application(argc int, argv []string) *gui.QGuiApplication {
|
2016-08-20 00:20:42 +03:00
|
|
|
var argvC = C.CString(strings.Join(argv, "|"))
|
|
|
|
defer C.free(unsafe.Pointer(argvC))
|
2016-08-24 18:00:49 +03:00
|
|
|
var tmpValue = gui.NewQGuiApplicationFromPointer(C.SailfishApp_SailfishApp_Application(C.int(int32(argc)), argvC))
|
2017-07-18 01:35:33 +03:00
|
|
|
if !qt.ExistsSignal(tmpValue.Pointer(), "destroyed") {
|
2016-08-26 16:33:11 +03:00
|
|
|
tmpValue.ConnectDestroyed(func(*core.QObject) { tmpValue.SetPointer(nil) })
|
2016-08-24 18:00:49 +03:00
|
|
|
}
|
|
|
|
return tmpValue
|
2016-06-19 05:24:38 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
func SailfishApp_Main(argc int, argv []string) int {
|
2016-08-20 00:20:42 +03:00
|
|
|
var argvC = C.CString(strings.Join(argv, "|"))
|
|
|
|
defer C.free(unsafe.Pointer(argvC))
|
2016-08-23 23:51:01 +03:00
|
|
|
return int(int32(C.SailfishApp_SailfishApp_Main(C.int(int32(argc)), argvC)))
|
2016-06-19 05:24:38 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
func (ptr *SailfishApp) Main(argc int, argv []string) int {
|
2016-08-20 00:20:42 +03:00
|
|
|
var argvC = C.CString(strings.Join(argv, "|"))
|
|
|
|
defer C.free(unsafe.Pointer(argvC))
|
2016-08-23 23:51:01 +03:00
|
|
|
return int(int32(C.SailfishApp_SailfishApp_Main(C.int(int32(argc)), argvC)))
|
2016-06-19 05:24:38 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
func SailfishApp_CreateView() *quick.QQuickView {
|
2016-08-24 18:00:49 +03:00
|
|
|
var tmpValue = quick.NewQQuickViewFromPointer(C.SailfishApp_SailfishApp_CreateView())
|
2017-07-18 01:35:33 +03:00
|
|
|
if !qt.ExistsSignal(tmpValue.Pointer(), "destroyed") {
|
2016-08-26 16:33:11 +03:00
|
|
|
tmpValue.ConnectDestroyed(func(*core.QObject) { tmpValue.SetPointer(nil) })
|
2016-08-24 18:00:49 +03:00
|
|
|
}
|
|
|
|
return tmpValue
|
2016-06-19 05:24:38 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
func (ptr *SailfishApp) CreateView() *quick.QQuickView {
|
2016-08-24 18:00:49 +03:00
|
|
|
var tmpValue = quick.NewQQuickViewFromPointer(C.SailfishApp_SailfishApp_CreateView())
|
2017-07-18 01:35:33 +03:00
|
|
|
if !qt.ExistsSignal(tmpValue.Pointer(), "destroyed") {
|
2016-08-26 16:33:11 +03:00
|
|
|
tmpValue.ConnectDestroyed(func(*core.QObject) { tmpValue.SetPointer(nil) })
|
2016-08-24 18:00:49 +03:00
|
|
|
}
|
|
|
|
return tmpValue
|
2016-06-19 05:24:38 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
func SailfishApp_PathTo(filename string) *core.QUrl {
|
2017-02-21 16:13:05 +03:00
|
|
|
var filenameC *C.char
|
|
|
|
if filename != "" {
|
|
|
|
filenameC = C.CString(filename)
|
|
|
|
defer C.free(unsafe.Pointer(filenameC))
|
|
|
|
}
|
2017-06-21 18:32:20 +03:00
|
|
|
var tmpValue = core.NewQUrlFromPointer(C.SailfishApp_SailfishApp_PathTo(C.struct_QtSailfish_PackedString{data: filenameC, len: C.longlong(len(filename))}))
|
2016-08-20 00:20:42 +03:00
|
|
|
runtime.SetFinalizer(tmpValue, (*core.QUrl).DestroyQUrl)
|
|
|
|
return tmpValue
|
2016-06-19 05:24:38 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
func (ptr *SailfishApp) PathTo(filename string) *core.QUrl {
|
2017-02-21 16:13:05 +03:00
|
|
|
var filenameC *C.char
|
|
|
|
if filename != "" {
|
|
|
|
filenameC = C.CString(filename)
|
|
|
|
defer C.free(unsafe.Pointer(filenameC))
|
|
|
|
}
|
2017-06-21 18:32:20 +03:00
|
|
|
var tmpValue = core.NewQUrlFromPointer(C.SailfishApp_SailfishApp_PathTo(C.struct_QtSailfish_PackedString{data: filenameC, len: C.longlong(len(filename))}))
|
2016-08-20 00:20:42 +03:00
|
|
|
runtime.SetFinalizer(tmpValue, (*core.QUrl).DestroyQUrl)
|
|
|
|
return tmpValue
|
2016-06-19 05:24:38 +03:00
|
|
|
}
|