diff --git a/internal/driver/gomobile/driver.go b/internal/driver/gomobile/driver.go index 002ab8ff88..0d8574740c 100644 --- a/internal/driver/gomobile/driver.go +++ b/internal/driver/gomobile/driver.go @@ -414,5 +414,7 @@ func (d *mobileDriver) Device() fyne.Device { func NewGoMobileDriver() fyne.Driver { d := new(mobileDriver) d.animation = &animation.Runner{} + + registerRepository(d) return d } diff --git a/internal/driver/gomobile/file_android.go b/internal/driver/gomobile/file_android.go index 4e049f9abb..05bc8f03ff 100644 --- a/internal/driver/gomobile/file_android.go +++ b/internal/driver/gomobile/file_android.go @@ -18,6 +18,7 @@ import ( "os" "unsafe" + "fyne.io/fyne/storage/repository" "github.com/fyne-io/mobile/app" ) @@ -90,3 +91,9 @@ func nativeFileOpen(f *fileOpen) (io.ReadCloser, error) { stream.stream = ret return stream, nil } + +func registerRepository(d *mobileDriver) { + repo := &mobileFileRepo{driver: d} + repository.Register("file", repo) + repository.Register("content", repo) +} diff --git a/internal/driver/gomobile/file_desktop.go b/internal/driver/gomobile/file_desktop.go index ebbff6fa81..98b74cac49 100644 --- a/internal/driver/gomobile/file_desktop.go +++ b/internal/driver/gomobile/file_desktop.go @@ -6,6 +6,9 @@ import ( "errors" "io" "os" + + intRepo "fyne.io/fyne/internal/repository" + "fyne.io/fyne/storage/repository" ) func nativeFileOpen(f *fileOpen) (io.ReadCloser, error) { @@ -15,3 +18,7 @@ func nativeFileOpen(f *fileOpen) (io.ReadCloser, error) { return os.Open(f.uri.String()[7:]) } + +func registerRepository(d *mobileDriver) { + repository.Register("file", intRepo.NewFileRepository("file")) +} diff --git a/internal/driver/gomobile/file_ios.go b/internal/driver/gomobile/file_ios.go index bc69585190..d76d9cb2bd 100644 --- a/internal/driver/gomobile/file_ios.go +++ b/internal/driver/gomobile/file_ios.go @@ -15,6 +15,8 @@ import "C" import ( "io" "unsafe" + + "fyne.io/fyne/storage/repository" ) type secureReadCloser struct { @@ -74,3 +76,8 @@ func nativeFileOpen(f *fileOpen) (io.ReadCloser, error) { fileStruct := &secureReadCloser{url: url, closer: f.done} return fileStruct, nil } + +func registerRepository(d *mobileDriver) { + repo := &mobileFileRepo{driver: d} + repository.Register("file", repo) +} diff --git a/internal/driver/gomobile/repository.go b/internal/driver/gomobile/repository.go new file mode 100644 index 0000000000..2cf8f2cb9c --- /dev/null +++ b/internal/driver/gomobile/repository.go @@ -0,0 +1,34 @@ +package gomobile + +import ( + "fyne.io/fyne" +) + +type mobileFileRepo struct { + driver *mobileDriver +} + +func (m *mobileFileRepo) Exists(u fyne.URI) (bool, error) { + return true, nil // TODO check a file exists +} + +func (m *mobileFileRepo) Reader(u fyne.URI) (fyne.URIReadCloser, error) { + return m.driver.FileReaderForURI(u) +} + +func (m *mobileFileRepo) CanRead(u fyne.URI) (bool, error) { + return true, nil // TODO check a file can be read +} + +func (m *mobileFileRepo) Destroy(string) { +} + +func (m *mobileFileRepo) CanList(u fyne.URI) (bool, error) { + return canListURI(u), nil +} + +func (m *mobileFileRepo) List(u fyne.URI) ([]fyne.URI, error) { + return listURI(u) +} + +// TODO add write support (not yet supported on mobile)