Implementation
Column settingsColumn(
TextEditingController pathController,
TextEditingController startCmdController,
TextEditingController userController,
context,
item,
bool isSyncing,
Function setState) {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(bottom: 8.0),
child: Text('startcommand-text'.i18n()),
),
Tooltip(
message: 'startcommand-text'.i18n(),
child: TextBox(
controller: startCmdController,
placeholder: 'e.g. /bin/bash',
),
),
Padding(
padding: const EdgeInsets.only(bottom: 8.0, top: 8.0),
child: Text('startdirectorypath-text'.i18n()),
),
Tooltip(
message: 'startdirectorypath-text'.i18n(),
child: TextBox(
controller: pathController,
placeholder: '/home/user/project',
),
),
Padding(
padding: const EdgeInsets.only(bottom: 8.0, top: 8.0),
child: Text('startuser-text'.i18n()),
),
Tooltip(
message: 'wsldefaultuser-text'.i18n(),
child: TextBox(
controller: userController,
placeholder: 'root',
),
),
Padding(
padding: const EdgeInsets.only(bottom: 8.0, top: 8.0),
child: Text('emptyfieldsfordefault-text'.i18n()),
),
const SizedBox(
height: 8.0,
),
wslSettings(item, setState),
const SizedBox(
height: 12.0,
),
Sync().hasPath(item)
? MouseRegion(
cursor: SystemMouseCursors.click,
child: Tooltip(
message: 'upload-text'.i18n(),
child: Button(
style: ButtonStyle(
padding: ButtonState.all(const EdgeInsets.only(
left: 15.0, right: 15.0, top: 10.0, bottom: 10.0))),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text('startstopserving-text'.i18n()),
const Icon(FluentIcons.upload),
]),
onPressed: () {
plausible.event(name: "network_uploaded");
Sync sync = Sync.instance(item);
if (!isSyncing) {
isSyncing = true;
sync.startServer();
Notify.message('startedserving-text'.i18n([item]));
} else {
isSyncing = false;
sync.stopServer();
Notify.message('stoppedserving-text'.i18n([item]));
}
},
),
),
)
: Container(),
const SizedBox(height: 8.0),
Sync().hasPath(item)
? MouseRegion(
cursor: SystemMouseCursors.click,
child: Tooltip(
message: 'download-text'.i18n(),
child: Button(
style: ButtonStyle(
padding: ButtonState.all(const EdgeInsets.only(
left: 15.0, right: 15.0, top: 10.0, bottom: 10.0))),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text('downloadoverride-text'.i18n()),
const Icon(FluentIcons.download),
]),
onPressed: () {
plausible.event(name: "network_downloaded");
dialog(
item: item,
title: 'syncfromserver-text'.i18n([distroLabel(item)]),
body: 'syncwarning-text'.i18n([item]),
submitText: 'yesoverride-text'.i18n(),
submitInput: false,
submitStyle: ButtonStyle(
backgroundColor: ButtonState.all(Colors.red),
foregroundColor: ButtonState.all(Colors.white),
),
onSubmit: (inputText) {
Sync sync = Sync.instance(item);
sync.download();
});
},
),
),
)
: Container(),
const SizedBox(height: 8.0),
MouseRegion(
cursor: SystemMouseCursors.click,
child: Tooltip(
message: 'move-text'.i18n(),
child: Button(
style: ButtonStyle(
padding: ButtonState.all(const EdgeInsets.only(
left: 15.0, right: 15.0, top: 10.0, bottom: 10.0))),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text('move-text'.i18n()),
const Icon(FluentIcons.move),
]),
onPressed: () async {
dialog(
item: item,
title: '${'move-text'.i18n()} \'${distroLabel(item)}\'',
body: 'movebody-text'.i18n([distroLabel(item)]),
submitText: 'move-text'.i18n(),
submitStyle: ButtonStyle(
backgroundColor: ButtonState.all(Colors.red),
foregroundColor: ButtonState.all(Colors.white),
),
submitInput: false,
onSubmit: (inputText) async {
Notify.message(
'moving-text'.i18n([distroLabel(item), inputText]),
loading: true);
await WSLApi().move(item, getInstancePath(item).path);
Notify.message(
'moved-text'.i18n([distroLabel(item), inputText]));
});
},
),
),
)
],
);
}