48 lines
1.6 KiB
QML
48 lines
1.6 KiB
QML
import Quickshell.Io
|
|
|
|
FileViewInternal {
|
|
property bool preload: this.__preload;
|
|
property bool blockLoading: this.__blockLoading;
|
|
property bool blockAllReads: this.__blockAllReads;
|
|
property string path: this.__path;
|
|
|
|
onPreloadChanged: this.__preload = preload;
|
|
onBlockLoadingChanged: this.__blockLoading = this.blockLoading;
|
|
onBlockAllReadsChanged: this.__blockAllReads = this.blockAllReads;
|
|
|
|
// Unfortunately path can't be kept as an empty string until the file loads
|
|
// without using QQmlPropertyValueInterceptor which is private. If we lean fully
|
|
// into using private code in the future, there will be no reason not to do it here.
|
|
|
|
onPathChanged: {
|
|
if (!this.preload) this.__preload = false;
|
|
this.__path = this.path;
|
|
if (this.preload) this.__preload = true;
|
|
}
|
|
|
|
// The C++ side can't force bindings to be resolved in a specific order so
|
|
// its done here. Functions are used to avoid the eager loading aspect of properties.
|
|
|
|
// Preload is set as it is below to avoid starting an async read from a preload
|
|
// if the user wants an initial blocking read.
|
|
|
|
function text(): string {
|
|
if (!this.preload) this.__preload = false;
|
|
this.__blockLoading = this.blockLoading;
|
|
this.__blockAllReads = this.blockAllReads;
|
|
this.__path = this.path;
|
|
const text = this.__text;
|
|
if (this.preload) this.__preload = true;
|
|
return text;
|
|
}
|
|
|
|
function data(): string {
|
|
if (!this.preload) this.__preload = false;
|
|
this.__blockLoading = this.blockLoading;
|
|
this.__blockAllReads = this.blockAllReads;
|
|
this.__path = this.path;
|
|
const data = this.__data;
|
|
if (this.preload) this.__preload = true;
|
|
return data;
|
|
}
|
|
}
|