Merge pull request #1751 from Heap-Hop/file_drivers
file transfer drivers
This commit is contained in:
commit
ee3429176b
@ -107,7 +107,7 @@ class DraggableChatWindow extends StatelessWidget {
|
|||||||
icon: IconFont.close,
|
icon: IconFont.close,
|
||||||
onTap: chatModel.hideChatWindowOverlay,
|
onTap: chatModel.hideChatWindowOverlay,
|
||||||
isClose: true,
|
isClose: true,
|
||||||
size: 32,
|
boxSize: 32,
|
||||||
))
|
))
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
@ -6,6 +6,7 @@ import 'package:desktop_drop/desktop_drop.dart';
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'package:flutter_breadcrumb/flutter_breadcrumb.dart';
|
import 'package:flutter_breadcrumb/flutter_breadcrumb.dart';
|
||||||
|
import 'package:flutter_hbb/desktop/widgets/tabbar_widget.dart';
|
||||||
import 'package:flutter_hbb/models/file_model.dart';
|
import 'package:flutter_hbb/models/file_model.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
@ -47,6 +48,8 @@ class _FileManagerPageState extends State<FileManagerPage>
|
|||||||
final _locationStatusRemote = LocationStatus.bread.obs;
|
final _locationStatusRemote = LocationStatus.bread.obs;
|
||||||
final _locationNodeLocal = FocusNode(debugLabel: "locationNodeLocal");
|
final _locationNodeLocal = FocusNode(debugLabel: "locationNodeLocal");
|
||||||
final _locationNodeRemote = FocusNode(debugLabel: "locationNodeRemote");
|
final _locationNodeRemote = FocusNode(debugLabel: "locationNodeRemote");
|
||||||
|
final _locationBarKeyLocal = GlobalKey(debugLabel: "locationBarKeyLocal");
|
||||||
|
final _locationBarKeyRemote = GlobalKey(debugLabel: "locationBarKeyRemote");
|
||||||
final _searchTextLocal = "".obs;
|
final _searchTextLocal = "".obs;
|
||||||
final _searchTextRemote = "".obs;
|
final _searchTextRemote = "".obs;
|
||||||
final _breadCrumbScrollerLocal = ScrollController();
|
final _breadCrumbScrollerLocal = ScrollController();
|
||||||
@ -62,11 +65,15 @@ class _FileManagerPageState extends State<FileManagerPage>
|
|||||||
return isLocal ? _breadCrumbScrollerLocal : _breadCrumbScrollerRemote;
|
return isLocal ? _breadCrumbScrollerLocal : _breadCrumbScrollerRemote;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GlobalKey getLocationBarKey(bool isLocal) {
|
||||||
|
return isLocal ? _locationBarKeyLocal : _locationBarKeyRemote;
|
||||||
|
}
|
||||||
|
|
||||||
late FFI _ffi;
|
late FFI _ffi;
|
||||||
|
|
||||||
FileModel get model => _ffi.fileModel;
|
FileModel get model => _ffi.fileModel;
|
||||||
|
|
||||||
SelectedItems getSelectedItem(bool isLocal) {
|
SelectedItems getSelectedItems(bool isLocal) {
|
||||||
return isLocal ? _localSelectedItems : _remoteSelectedItems;
|
return isLocal ? _localSelectedItems : _remoteSelectedItems;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -132,7 +139,7 @@ class _FileManagerPageState extends State<FileManagerPage>
|
|||||||
Widget menu({bool isLocal = false}) {
|
Widget menu({bool isLocal = false}) {
|
||||||
var menuPos = RelativeRect.fill;
|
var menuPos = RelativeRect.fill;
|
||||||
|
|
||||||
final items = [
|
final List<MenuEntryBase<String>> items = [
|
||||||
MenuEntrySwitch<String>(
|
MenuEntrySwitch<String>(
|
||||||
switchType: SwitchType.scheckbox,
|
switchType: SwitchType.scheckbox,
|
||||||
text: translate("Show Hidden Files"),
|
text: translate("Show Hidden Files"),
|
||||||
@ -145,6 +152,18 @@ class _FileManagerPageState extends State<FileManagerPage>
|
|||||||
padding: kDesktopMenuPadding,
|
padding: kDesktopMenuPadding,
|
||||||
dismissOnClicked: true,
|
dismissOnClicked: true,
|
||||||
),
|
),
|
||||||
|
MenuEntryButton(
|
||||||
|
childBuilder: (style) => Text(translate("Select All"), style: style),
|
||||||
|
proc: () => setState(() => getSelectedItems(isLocal)
|
||||||
|
.selectAll(model.getCurrentDir(isLocal).entries)),
|
||||||
|
padding: kDesktopMenuPadding,
|
||||||
|
dismissOnClicked: true),
|
||||||
|
MenuEntryButton(
|
||||||
|
childBuilder: (style) =>
|
||||||
|
Text(translate("Unselect All"), style: style),
|
||||||
|
proc: () => setState(() => getSelectedItems(isLocal).clear()),
|
||||||
|
padding: kDesktopMenuPadding,
|
||||||
|
dismissOnClicked: true)
|
||||||
];
|
];
|
||||||
|
|
||||||
return Listener(
|
return Listener(
|
||||||
@ -267,16 +286,16 @@ class _FileManagerPageState extends State<FileManagerPage>
|
|||||||
rows: filteredEntries.map((entry) {
|
rows: filteredEntries.map((entry) {
|
||||||
final sizeStr =
|
final sizeStr =
|
||||||
entry.isFile ? readableFileSize(entry.size.toDouble()) : "";
|
entry.isFile ? readableFileSize(entry.size.toDouble()) : "";
|
||||||
final lastModifiedStr =
|
final lastModifiedStr = entry.isDrive
|
||||||
"${entry.lastModified().toString().replaceAll(".000", "")} ";
|
? " "
|
||||||
|
: "${entry.lastModified().toString().replaceAll(".000", "")} ";
|
||||||
return DataRow(
|
return DataRow(
|
||||||
key: ValueKey(entry.name),
|
key: ValueKey(entry.name),
|
||||||
onSelectChanged: (s) {
|
onSelectChanged: (s) {
|
||||||
_onSelectedChanged(getSelectedItem(isLocal), filteredEntries,
|
_onSelectedChanged(getSelectedItems(isLocal), filteredEntries,
|
||||||
entry, isLocal);
|
entry, isLocal);
|
||||||
setState(() {});
|
|
||||||
},
|
},
|
||||||
selected: getSelectedItem(isLocal).contains(entry),
|
selected: getSelectedItems(isLocal).contains(entry),
|
||||||
cells: [
|
cells: [
|
||||||
DataCell(
|
DataCell(
|
||||||
Container(
|
Container(
|
||||||
@ -286,7 +305,11 @@ class _FileManagerPageState extends State<FileManagerPage>
|
|||||||
message: entry.name,
|
message: entry.name,
|
||||||
child: Row(children: [
|
child: Row(children: [
|
||||||
Icon(
|
Icon(
|
||||||
entry.isFile ? Icons.feed_outlined : Icons.folder,
|
entry.isFile
|
||||||
|
? Icons.feed_outlined
|
||||||
|
: entry.isDrive
|
||||||
|
? Icons.computer
|
||||||
|
: Icons.folder,
|
||||||
size: 20,
|
size: 20,
|
||||||
color: Theme.of(context)
|
color: Theme.of(context)
|
||||||
.iconTheme
|
.iconTheme
|
||||||
@ -299,7 +322,7 @@ class _FileManagerPageState extends State<FileManagerPage>
|
|||||||
]),
|
]),
|
||||||
)),
|
)),
|
||||||
onTap: () {
|
onTap: () {
|
||||||
final items = getSelectedItem(isLocal);
|
final items = getSelectedItems(isLocal);
|
||||||
|
|
||||||
// handle double click
|
// handle double click
|
||||||
if (_checkDoubleClick(entry)) {
|
if (_checkDoubleClick(entry)) {
|
||||||
@ -455,7 +478,7 @@ class _FileManagerPageState extends State<FileManagerPage>
|
|||||||
icon: const Icon(Icons.restart_alt_rounded)),
|
icon: const Icon(Icons.restart_alt_rounded)),
|
||||||
),
|
),
|
||||||
IconButton(
|
IconButton(
|
||||||
icon: const Icon(Icons.delete),
|
icon: const Icon(Icons.delete_forever_outlined),
|
||||||
splashRadius: 20,
|
splashRadius: 20,
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
model.jobTable.removeAt(index);
|
model.jobTable.removeAt(index);
|
||||||
@ -485,6 +508,7 @@ class _FileManagerPageState extends State<FileManagerPage>
|
|||||||
final locationStatus =
|
final locationStatus =
|
||||||
isLocal ? _locationStatusLocal : _locationStatusRemote;
|
isLocal ? _locationStatusLocal : _locationStatusRemote;
|
||||||
final locationFocus = isLocal ? _locationNodeLocal : _locationNodeRemote;
|
final locationFocus = isLocal ? _locationNodeLocal : _locationNodeRemote;
|
||||||
|
final selectedItems = getSelectedItems(isLocal);
|
||||||
return Container(
|
return Container(
|
||||||
child: Column(
|
child: Column(
|
||||||
children: [
|
children: [
|
||||||
@ -533,6 +557,7 @@ class _FileManagerPageState extends State<FileManagerPage>
|
|||||||
icon: const Icon(Icons.arrow_back),
|
icon: const Icon(Icons.arrow_back),
|
||||||
splashRadius: 20,
|
splashRadius: 20,
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
|
selectedItems.clear();
|
||||||
model.goBack(isLocal: isLocal);
|
model.goBack(isLocal: isLocal);
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
@ -540,6 +565,7 @@ class _FileManagerPageState extends State<FileManagerPage>
|
|||||||
icon: const Icon(Icons.arrow_upward),
|
icon: const Icon(Icons.arrow_upward),
|
||||||
splashRadius: 20,
|
splashRadius: 20,
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
|
selectedItems.clear();
|
||||||
model.goToParentDirectory(isLocal: isLocal);
|
model.goToParentDirectory(isLocal: isLocal);
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
@ -608,6 +634,7 @@ class _FileManagerPageState extends State<FileManagerPage>
|
|||||||
}),
|
}),
|
||||||
IconButton(
|
IconButton(
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
|
breadCrumbScrollToEnd(isLocal);
|
||||||
model.refresh(isLocal: isLocal);
|
model.refresh(isLocal: isLocal);
|
||||||
},
|
},
|
||||||
splashRadius: 20,
|
splashRadius: 20,
|
||||||
@ -672,13 +699,13 @@ class _FileManagerPageState extends State<FileManagerPage>
|
|||||||
splashRadius: 20,
|
splashRadius: 20,
|
||||||
icon: const Icon(Icons.create_new_folder_outlined)),
|
icon: const Icon(Icons.create_new_folder_outlined)),
|
||||||
IconButton(
|
IconButton(
|
||||||
onPressed: () async {
|
onPressed: validItems(selectedItems)
|
||||||
final items = isLocal
|
? () async {
|
||||||
? _localSelectedItems
|
await (model.removeAction(selectedItems,
|
||||||
: _remoteSelectedItems;
|
isLocal: isLocal));
|
||||||
await (model.removeAction(items, isLocal: isLocal));
|
selectedItems.clear();
|
||||||
items.clear();
|
}
|
||||||
},
|
: null,
|
||||||
splashRadius: 20,
|
splashRadius: 20,
|
||||||
icon: const Icon(Icons.delete_forever_outlined)),
|
icon: const Icon(Icons.delete_forever_outlined)),
|
||||||
menu(isLocal: isLocal),
|
menu(isLocal: isLocal),
|
||||||
@ -686,11 +713,12 @@ class _FileManagerPageState extends State<FileManagerPage>
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
TextButton.icon(
|
TextButton.icon(
|
||||||
onPressed: () {
|
onPressed: validItems(selectedItems)
|
||||||
final items = getSelectedItem(isLocal);
|
? () {
|
||||||
model.sendFiles(items, isRemote: !isLocal);
|
model.sendFiles(selectedItems, isRemote: !isLocal);
|
||||||
items.clear();
|
selectedItems.clear();
|
||||||
},
|
}
|
||||||
|
: null,
|
||||||
icon: Transform.rotate(
|
icon: Transform.rotate(
|
||||||
angle: isLocal ? 0 : pi,
|
angle: isLocal ? 0 : pi,
|
||||||
child: const Icon(
|
child: const Icon(
|
||||||
@ -706,6 +734,14 @@ class _FileManagerPageState extends State<FileManagerPage>
|
|||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool validItems(SelectedItems items) {
|
||||||
|
if (items.length > 0) {
|
||||||
|
// exclude DirDrive type
|
||||||
|
return items.items.any((item) => !item.isDrive);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
bool get wantKeepAlive => true;
|
bool get wantKeepAlive => true;
|
||||||
|
|
||||||
@ -741,32 +777,98 @@ class _FileManagerPageState extends State<FileManagerPage>
|
|||||||
}
|
}
|
||||||
openDirectory(path, isLocal: isLocal);
|
openDirectory(path, isLocal: isLocal);
|
||||||
});
|
});
|
||||||
breadCrumbScrollToEnd(isLocal);
|
final locationBarKey = getLocationBarKey(isLocal);
|
||||||
|
|
||||||
return items.isEmpty
|
return items.isEmpty
|
||||||
? Offstage()
|
? Offstage()
|
||||||
: Row(mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [
|
: Row(
|
||||||
|
key: locationBarKey,
|
||||||
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
|
children: [
|
||||||
Expanded(
|
Expanded(
|
||||||
child: BreadCrumb(
|
child: BreadCrumb(
|
||||||
items: items,
|
items: items,
|
||||||
divider: Text("/").paddingSymmetric(horizontal: 4.0),
|
divider: Text("/",
|
||||||
|
style: TextStyle(color: Theme.of(context).hintColor))
|
||||||
|
.paddingSymmetric(horizontal: 2.0),
|
||||||
overflow: ScrollableOverflow(
|
overflow: ScrollableOverflow(
|
||||||
controller: getBreadCrumbScrollController(isLocal)),
|
controller: getBreadCrumbScrollController(isLocal)),
|
||||||
)),
|
)),
|
||||||
DropdownButton<String>(
|
ActionIcon(
|
||||||
isDense: true,
|
message: "",
|
||||||
underline: Offstage(),
|
icon: Icons.arrow_drop_down,
|
||||||
items: [
|
onTap: () async {
|
||||||
// TODO: favourite
|
final renderBox = locationBarKey.currentContext
|
||||||
DropdownMenuItem(
|
?.findRenderObject() as RenderBox;
|
||||||
child: Text('/'),
|
locationBarKey.currentContext?.size;
|
||||||
value: '/',
|
|
||||||
)
|
final size = renderBox.size;
|
||||||
],
|
final offset = renderBox.localToGlobal(Offset.zero);
|
||||||
onChanged: (path) {
|
|
||||||
if (path is String && path.isNotEmpty) {
|
final x = offset.dx;
|
||||||
openDirectory(path, isLocal: isLocal);
|
final y = offset.dy + size.height + 1;
|
||||||
|
|
||||||
|
final peerPlatform = (await bind.sessionGetPlatform(
|
||||||
|
id: _ffi.id, isRemote: !isLocal))
|
||||||
|
.toLowerCase();
|
||||||
|
final List<MenuEntryBase> menuItems = [
|
||||||
|
MenuEntryButton(
|
||||||
|
childBuilder: (TextStyle? style) => Text(
|
||||||
|
'/',
|
||||||
|
style: style,
|
||||||
|
),
|
||||||
|
proc: () {
|
||||||
|
openDirectory('/', isLocal: isLocal);
|
||||||
|
},
|
||||||
|
dismissOnClicked: true),
|
||||||
|
MenuEntryDivider()
|
||||||
|
];
|
||||||
|
if (peerPlatform == "windows") {
|
||||||
|
var loadingTag = "";
|
||||||
|
if (!isLocal) {
|
||||||
|
loadingTag = _ffi.dialogManager.showLoading("Waiting");
|
||||||
}
|
}
|
||||||
})
|
try {
|
||||||
|
final fd =
|
||||||
|
await model.fetchDirectory("/", isLocal, isLocal);
|
||||||
|
for (var entry in fd.entries) {
|
||||||
|
menuItems.add(MenuEntryButton(
|
||||||
|
childBuilder: (TextStyle? style) => Text(
|
||||||
|
entry.name,
|
||||||
|
style: style,
|
||||||
|
),
|
||||||
|
proc: () {
|
||||||
|
openDirectory(entry.name, isLocal: isLocal);
|
||||||
|
},
|
||||||
|
dismissOnClicked: true));
|
||||||
|
menuItems.add(MenuEntryDivider());
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
if (!isLocal) {
|
||||||
|
_ffi.dialogManager.dismissByTag(loadingTag);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
mod_menu.showMenu(
|
||||||
|
context: context,
|
||||||
|
position: RelativeRect.fromLTRB(x, y, x, y),
|
||||||
|
elevation: 4,
|
||||||
|
items: menuItems
|
||||||
|
.map((e) => e.build(
|
||||||
|
context,
|
||||||
|
MenuConfig(
|
||||||
|
commonColor:
|
||||||
|
CustomPopupMenuTheme.commonColor,
|
||||||
|
height: CustomPopupMenuTheme.height,
|
||||||
|
dividerHeight:
|
||||||
|
CustomPopupMenuTheme.dividerHeight,
|
||||||
|
boxWidth: size.width)))
|
||||||
|
.expand((i) => i)
|
||||||
|
.toList());
|
||||||
|
},
|
||||||
|
iconSize: 20,
|
||||||
|
)
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -99,12 +99,14 @@ class MenuConfig {
|
|||||||
|
|
||||||
final double height;
|
final double height;
|
||||||
final double dividerHeight;
|
final double dividerHeight;
|
||||||
|
final double? boxWidth;
|
||||||
final Color commonColor;
|
final Color commonColor;
|
||||||
|
|
||||||
const MenuConfig(
|
const MenuConfig(
|
||||||
{required this.commonColor,
|
{required this.commonColor,
|
||||||
this.height = kMinInteractiveDimension,
|
this.height = kMinInteractiveDimension,
|
||||||
this.dividerHeight = 16.0});
|
this.dividerHeight = 16.0,
|
||||||
|
this.boxWidth});
|
||||||
}
|
}
|
||||||
|
|
||||||
abstract class MenuEntryBase<T> {
|
abstract class MenuEntryBase<T> {
|
||||||
@ -190,12 +192,14 @@ class MenuEntryRadios<T> extends MenuEntryBase<T> {
|
|||||||
return mod_menu.PopupMenuItem(
|
return mod_menu.PopupMenuItem(
|
||||||
padding: EdgeInsets.zero,
|
padding: EdgeInsets.zero,
|
||||||
height: conf.height,
|
height: conf.height,
|
||||||
|
child: Container(
|
||||||
|
width: conf.boxWidth,
|
||||||
child: TextButton(
|
child: TextButton(
|
||||||
child: Container(
|
child: Container(
|
||||||
padding: padding,
|
padding: padding,
|
||||||
alignment: AlignmentDirectional.centerStart,
|
alignment: AlignmentDirectional.centerStart,
|
||||||
constraints:
|
constraints: BoxConstraints(
|
||||||
BoxConstraints(minHeight: conf.height, maxHeight: conf.height),
|
minHeight: conf.height, maxHeight: conf.height),
|
||||||
child: Row(
|
child: Row(
|
||||||
children: [
|
children: [
|
||||||
Text(
|
Text(
|
||||||
@ -232,7 +236,7 @@ class MenuEntryRadios<T> extends MenuEntryBase<T> {
|
|||||||
}
|
}
|
||||||
setOption(opt.value);
|
setOption(opt.value);
|
||||||
},
|
},
|
||||||
),
|
)),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -285,12 +289,14 @@ class MenuEntrySubRadios<T> extends MenuEntryBase<T> {
|
|||||||
return mod_menu.PopupMenuItem(
|
return mod_menu.PopupMenuItem(
|
||||||
padding: EdgeInsets.zero,
|
padding: EdgeInsets.zero,
|
||||||
height: conf.height,
|
height: conf.height,
|
||||||
|
child: Container(
|
||||||
|
width: conf.boxWidth,
|
||||||
child: TextButton(
|
child: TextButton(
|
||||||
child: Container(
|
child: Container(
|
||||||
padding: padding,
|
padding: padding,
|
||||||
alignment: AlignmentDirectional.centerStart,
|
alignment: AlignmentDirectional.centerStart,
|
||||||
constraints:
|
constraints: BoxConstraints(
|
||||||
BoxConstraints(minHeight: conf.height, maxHeight: conf.height),
|
minHeight: conf.height, maxHeight: conf.height),
|
||||||
child: Row(
|
child: Row(
|
||||||
children: [
|
children: [
|
||||||
Text(
|
Text(
|
||||||
@ -326,7 +332,7 @@ class MenuEntrySubRadios<T> extends MenuEntryBase<T> {
|
|||||||
}
|
}
|
||||||
setOption(opt.value);
|
setOption(opt.value);
|
||||||
},
|
},
|
||||||
),
|
)),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -401,6 +407,8 @@ abstract class MenuEntrySwitchBase<T> extends MenuEntryBase<T> {
|
|||||||
mod_menu.PopupMenuItem(
|
mod_menu.PopupMenuItem(
|
||||||
padding: EdgeInsets.zero,
|
padding: EdgeInsets.zero,
|
||||||
height: conf.height,
|
height: conf.height,
|
||||||
|
child: Container(
|
||||||
|
width: conf.boxWidth,
|
||||||
child: TextButton(
|
child: TextButton(
|
||||||
child: Container(
|
child: Container(
|
||||||
padding: padding,
|
padding: padding,
|
||||||
@ -449,7 +457,7 @@ abstract class MenuEntrySwitchBase<T> extends MenuEntryBase<T> {
|
|||||||
}
|
}
|
||||||
setOption(!curOption.value);
|
setOption(!curOption.value);
|
||||||
},
|
},
|
||||||
),
|
)),
|
||||||
)
|
)
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
@ -606,7 +614,9 @@ class MenuEntryButton<T> extends MenuEntryBase<T> {
|
|||||||
fontSize: MenuConfig.fontSize,
|
fontSize: MenuConfig.fontSize,
|
||||||
fontWeight: FontWeight.normal);
|
fontWeight: FontWeight.normal);
|
||||||
super.enabled ??= true.obs;
|
super.enabled ??= true.obs;
|
||||||
return Obx(() => TextButton(
|
return Obx(() => Container(
|
||||||
|
width: conf.boxWidth,
|
||||||
|
child: TextButton(
|
||||||
onPressed: super.enabled!.value
|
onPressed: super.enabled!.value
|
||||||
? () {
|
? () {
|
||||||
if (super.dismissOnClicked && Navigator.canPop(context)) {
|
if (super.dismissOnClicked && Navigator.canPop(context)) {
|
||||||
@ -623,7 +633,7 @@ class MenuEntryButton<T> extends MenuEntryBase<T> {
|
|||||||
child: childBuilder(
|
child: childBuilder(
|
||||||
super.enabled!.value ? enabledStyle : disabledStyle),
|
super.enabled!.value ? enabledStyle : disabledStyle),
|
||||||
),
|
),
|
||||||
));
|
)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
@ -811,14 +811,16 @@ class ActionIcon extends StatelessWidget {
|
|||||||
final IconData icon;
|
final IconData icon;
|
||||||
final Function() onTap;
|
final Function() onTap;
|
||||||
final bool isClose;
|
final bool isClose;
|
||||||
final double? size;
|
final double iconSize;
|
||||||
|
final double boxSize;
|
||||||
const ActionIcon(
|
const ActionIcon(
|
||||||
{Key? key,
|
{Key? key,
|
||||||
required this.message,
|
required this.message,
|
||||||
required this.icon,
|
required this.icon,
|
||||||
required this.onTap,
|
required this.onTap,
|
||||||
required this.isClose,
|
this.isClose = false,
|
||||||
this.size})
|
this.iconSize = _kActionIconSize,
|
||||||
|
this.boxSize = _kTabBarHeight - 1})
|
||||||
: super(key: key);
|
: super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@ -834,14 +836,14 @@ class ActionIcon extends StatelessWidget {
|
|||||||
onHover: (value) => hover.value = value,
|
onHover: (value) => hover.value = value,
|
||||||
onTap: onTap,
|
onTap: onTap,
|
||||||
child: SizedBox(
|
child: SizedBox(
|
||||||
height: size ?? (_kTabBarHeight - 1),
|
height: boxSize,
|
||||||
width: size ?? (_kTabBarHeight - 1),
|
width: boxSize,
|
||||||
child: Icon(
|
child: Icon(
|
||||||
icon,
|
icon,
|
||||||
color: hover.value && isClose
|
color: hover.value && isClose
|
||||||
? Colors.white
|
? Colors.white
|
||||||
: MyTheme.tabbar(context).unSelectedIconColor,
|
: MyTheme.tabbar(context).unSelectedIconColor,
|
||||||
size: _kActionIconSize,
|
size: iconSize,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
@ -69,8 +69,14 @@ class _FileManagerPageState extends State<FileManagerPage> {
|
|||||||
title: ToggleSwitch(
|
title: ToggleSwitch(
|
||||||
initialLabelIndex: model.isLocal ? 0 : 1,
|
initialLabelIndex: model.isLocal ? 0 : 1,
|
||||||
activeBgColor: [MyTheme.idColor],
|
activeBgColor: [MyTheme.idColor],
|
||||||
// inactiveBgColor: MyTheme.grayBg,
|
inactiveBgColor:
|
||||||
inactiveFgColor: Colors.black54,
|
Theme.of(context).brightness == Brightness.light
|
||||||
|
? MyTheme.grayBg
|
||||||
|
: null,
|
||||||
|
inactiveFgColor:
|
||||||
|
Theme.of(context).brightness == Brightness.light
|
||||||
|
? Colors.black54
|
||||||
|
: null,
|
||||||
totalSwitches: 2,
|
totalSwitches: 2,
|
||||||
minWidth: 100,
|
minWidth: 100,
|
||||||
fontSize: 15,
|
fontSize: 15,
|
||||||
@ -92,7 +98,8 @@ class _FileManagerPageState extends State<FileManagerPage> {
|
|||||||
PopupMenuItem(
|
PopupMenuItem(
|
||||||
child: Row(
|
child: Row(
|
||||||
children: [
|
children: [
|
||||||
Icon(Icons.refresh, color: Colors.black),
|
Icon(Icons.refresh,
|
||||||
|
color: Theme.of(context).iconTheme.color),
|
||||||
SizedBox(width: 5),
|
SizedBox(width: 5),
|
||||||
Text(translate("Refresh File"))
|
Text(translate("Refresh File"))
|
||||||
],
|
],
|
||||||
@ -102,7 +109,8 @@ class _FileManagerPageState extends State<FileManagerPage> {
|
|||||||
PopupMenuItem(
|
PopupMenuItem(
|
||||||
child: Row(
|
child: Row(
|
||||||
children: [
|
children: [
|
||||||
Icon(Icons.check, color: Colors.black),
|
Icon(Icons.check,
|
||||||
|
color: Theme.of(context).iconTheme.color),
|
||||||
SizedBox(width: 5),
|
SizedBox(width: 5),
|
||||||
Text(translate("Multi Select"))
|
Text(translate("Multi Select"))
|
||||||
],
|
],
|
||||||
@ -113,7 +121,7 @@ class _FileManagerPageState extends State<FileManagerPage> {
|
|||||||
child: Row(
|
child: Row(
|
||||||
children: [
|
children: [
|
||||||
Icon(Icons.folder_outlined,
|
Icon(Icons.folder_outlined,
|
||||||
color: Colors.black),
|
color: Theme.of(context).iconTheme.color),
|
||||||
SizedBox(width: 5),
|
SizedBox(width: 5),
|
||||||
Text(translate("Create Folder"))
|
Text(translate("Create Folder"))
|
||||||
],
|
],
|
||||||
@ -127,7 +135,7 @@ class _FileManagerPageState extends State<FileManagerPage> {
|
|||||||
model.currentShowHidden
|
model.currentShowHidden
|
||||||
? Icons.check_box_outlined
|
? Icons.check_box_outlined
|
||||||
: Icons.check_box_outline_blank,
|
: Icons.check_box_outline_blank,
|
||||||
color: Colors.black),
|
color: Theme.of(context).iconTheme.color),
|
||||||
SizedBox(width: 5),
|
SizedBox(width: 5),
|
||||||
Text(translate("Show Hidden Files"))
|
Text(translate("Show Hidden Files"))
|
||||||
],
|
],
|
||||||
@ -188,7 +196,7 @@ class _FileManagerPageState extends State<FileManagerPage> {
|
|||||||
));
|
));
|
||||||
}));
|
}));
|
||||||
|
|
||||||
bool needShowCheckBox() {
|
bool showCheckBox() {
|
||||||
if (!model.selectMode) {
|
if (!model.selectMode) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -220,20 +228,23 @@ class _FileManagerPageState extends State<FileManagerPage> {
|
|||||||
return Card(
|
return Card(
|
||||||
child: ListTile(
|
child: ListTile(
|
||||||
leading: Icon(
|
leading: Icon(
|
||||||
entries[index].isFile ? Icons.feed_outlined : Icons.folder,
|
entries[index].isFile
|
||||||
|
? Icons.feed_outlined
|
||||||
|
: entries[index].isDrive
|
||||||
|
? Icons.computer
|
||||||
|
: Icons.folder,
|
||||||
size: 40),
|
size: 40),
|
||||||
title: Text(entries[index].name),
|
title: Text(entries[index].name),
|
||||||
selected: selected,
|
selected: selected,
|
||||||
subtitle: Text(
|
subtitle: Text(
|
||||||
entries[index]
|
entries[index].isDrive
|
||||||
.lastModified()
|
? ""
|
||||||
.toString()
|
: "${entries[index].lastModified().toString().replaceAll(".000", "")} $sizeStr",
|
||||||
.replaceAll(".000", "") +
|
|
||||||
" " +
|
|
||||||
sizeStr,
|
|
||||||
style: TextStyle(fontSize: 12, color: MyTheme.darkGray),
|
style: TextStyle(fontSize: 12, color: MyTheme.darkGray),
|
||||||
),
|
),
|
||||||
trailing: needShowCheckBox()
|
trailing: entries[index].isDrive
|
||||||
|
? null
|
||||||
|
: showCheckBox()
|
||||||
? Checkbox(
|
? Checkbox(
|
||||||
value: selected,
|
value: selected,
|
||||||
onChanged: (v) {
|
onChanged: (v) {
|
||||||
@ -284,14 +295,16 @@ class _FileManagerPageState extends State<FileManagerPage> {
|
|||||||
setState(() {});
|
setState(() {});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (entries[index].isDirectory) {
|
if (entries[index].isDirectory || entries[index].isDrive) {
|
||||||
model.openDirectory(entries[index].path);
|
model.openDirectory(entries[index].path);
|
||||||
breadCrumbScrollToEnd();
|
breadCrumbScrollToEnd();
|
||||||
} else {
|
} else {
|
||||||
// Perform file-related tasks.
|
// Perform file-related tasks.
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
onLongPress: () {
|
onLongPress: entries[index].isDrive
|
||||||
|
? null
|
||||||
|
: () {
|
||||||
_selectedItems.clear();
|
_selectedItems.clear();
|
||||||
model.toggleSelectMode();
|
model.toggleSelectMode();
|
||||||
if (model.selectMode) {
|
if (model.selectMode) {
|
||||||
|
@ -402,6 +402,10 @@ class FileModel extends ChangeNotifier {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Future<FileDirectory> fetchDirectory(path, isLocal, showHidden) async {
|
||||||
|
return await _fileFetcher.fetchDirectory(path, isLocal, showHidden);
|
||||||
|
}
|
||||||
|
|
||||||
void pushHistory(bool isLocal) {
|
void pushHistory(bool isLocal) {
|
||||||
final history = isLocal ? localHistory : remoteHistory;
|
final history = isLocal ? localHistory : remoteHistory;
|
||||||
final currPath = isLocal ? currentLocalDir.path : currentRemoteDir.path;
|
final currPath = isLocal ? currentLocalDir.path : currentRemoteDir.path;
|
||||||
@ -1027,7 +1031,9 @@ class Entry {
|
|||||||
|
|
||||||
bool get isFile => entryType > 3;
|
bool get isFile => entryType > 3;
|
||||||
|
|
||||||
bool get isDirectory => entryType <= 3;
|
bool get isDirectory => entryType < 3;
|
||||||
|
|
||||||
|
bool get isDrive => entryType == 3;
|
||||||
|
|
||||||
DateTime lastModified() {
|
DateTime lastModified() {
|
||||||
return DateTime.fromMillisecondsSinceEpoch(modifiedTime * 1000);
|
return DateTime.fromMillisecondsSinceEpoch(modifiedTime * 1000);
|
||||||
@ -1133,6 +1139,7 @@ class SelectedItems {
|
|||||||
bool? get isLocal => _isLocal;
|
bool? get isLocal => _isLocal;
|
||||||
|
|
||||||
add(bool isLocal, Entry e) {
|
add(bool isLocal, Entry e) {
|
||||||
|
if (e.isDrive) return;
|
||||||
_isLocal ??= isLocal;
|
_isLocal ??= isLocal;
|
||||||
if (_isLocal != null && _isLocal != isLocal) {
|
if (_isLocal != null && _isLocal != isLocal) {
|
||||||
return;
|
return;
|
||||||
@ -1165,13 +1172,20 @@ class SelectedItems {
|
|||||||
_items.clear();
|
_items.clear();
|
||||||
_isLocal = null;
|
_isLocal = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void selectAll(List<Entry> entries) {
|
||||||
|
_items.clear();
|
||||||
|
_items.addAll(entries);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// code from file_manager pkg after edit
|
// edited from [https://github.com/DevsOnFlutter/file_manager/blob/c1bf7f0225b15bcb86eba602c60acd5c4da90dd8/lib/file_manager.dart#L22]
|
||||||
List<Entry> _sortList(List<Entry> list, SortBy sortType, bool ascending) {
|
List<Entry> _sortList(List<Entry> list, SortBy sortType, bool ascending) {
|
||||||
if (sortType == SortBy.Name) {
|
if (sortType == SortBy.Name) {
|
||||||
// making list of only folders.
|
// making list of only folders.
|
||||||
final dirs = list.where((element) => element.isDirectory).toList();
|
final dirs = list
|
||||||
|
.where((element) => element.isDirectory || element.isDrive)
|
||||||
|
.toList();
|
||||||
// sorting folder list by name.
|
// sorting folder list by name.
|
||||||
dirs.sort((a, b) => a.name.toLowerCase().compareTo(b.name.toLowerCase()));
|
dirs.sort((a, b) => a.name.toLowerCase().compareTo(b.name.toLowerCase()));
|
||||||
|
|
||||||
|
@ -87,6 +87,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Delete", "删除"),
|
("Delete", "删除"),
|
||||||
("Properties", "属性"),
|
("Properties", "属性"),
|
||||||
("Multi Select", "多选"),
|
("Multi Select", "多选"),
|
||||||
|
("Select All", "全选"),
|
||||||
|
("Unselect All", "取消全选"),
|
||||||
("Empty Directory", "空文件夹"),
|
("Empty Directory", "空文件夹"),
|
||||||
("Not an empty directory", "这不是一个空文件夹"),
|
("Not an empty directory", "这不是一个空文件夹"),
|
||||||
("Are you sure you want to delete this file?", "是否删除此文件?"),
|
("Are you sure you want to delete this file?", "是否删除此文件?"),
|
||||||
|
@ -87,6 +87,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Delete", "Smazat"),
|
("Delete", "Smazat"),
|
||||||
("Properties", "Vlastnosti"),
|
("Properties", "Vlastnosti"),
|
||||||
("Multi Select", "Vícenásobný výběr"),
|
("Multi Select", "Vícenásobný výběr"),
|
||||||
|
("Select All", ""),
|
||||||
|
("Unselect All", ""),
|
||||||
("Empty Directory", "Prázdná složka"),
|
("Empty Directory", "Prázdná složka"),
|
||||||
("Not an empty directory", "Neprázdná složka"),
|
("Not an empty directory", "Neprázdná složka"),
|
||||||
("Are you sure you want to delete this file?", "Opravdu chcete tento soubor vymazat?"),
|
("Are you sure you want to delete this file?", "Opravdu chcete tento soubor vymazat?"),
|
||||||
@ -112,7 +114,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Good image quality", "Dobrá kvalita obrazu"),
|
("Good image quality", "Dobrá kvalita obrazu"),
|
||||||
("Balanced", "Vyvážené"),
|
("Balanced", "Vyvážené"),
|
||||||
("Optimize reaction time", "Optimalizovat pro co nejnižší prodlevu odezvy"),
|
("Optimize reaction time", "Optimalizovat pro co nejnižší prodlevu odezvy"),
|
||||||
("Custom", "Uživatelsky určené"),
|
("Custom", ""),
|
||||||
("Show remote cursor", "Zobrazovat ukazatel myši z protějšku"),
|
("Show remote cursor", "Zobrazovat ukazatel myši z protějšku"),
|
||||||
("Show quality monitor", ""),
|
("Show quality monitor", ""),
|
||||||
("Disable clipboard", "Vypnout schránku"),
|
("Disable clipboard", "Vypnout schránku"),
|
||||||
|
@ -87,6 +87,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Delete", "Slet"),
|
("Delete", "Slet"),
|
||||||
("Properties", "Egenskaber"),
|
("Properties", "Egenskaber"),
|
||||||
("Multi Select", "Flere valg"),
|
("Multi Select", "Flere valg"),
|
||||||
|
("Select All", ""),
|
||||||
|
("Unselect All", ""),
|
||||||
("Empty Directory", "Tom bibliotek"),
|
("Empty Directory", "Tom bibliotek"),
|
||||||
("Not an empty directory", "Intet tomt bibliotek"),
|
("Not an empty directory", "Intet tomt bibliotek"),
|
||||||
("Are you sure you want to delete this file?", "Er du sikker på, at du vil slette denne fil?"),
|
("Are you sure you want to delete this file?", "Er du sikker på, at du vil slette denne fil?"),
|
||||||
@ -112,7 +114,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Good image quality", "God billedkvalitet"),
|
("Good image quality", "God billedkvalitet"),
|
||||||
("Balanced", "Afbalanceret"),
|
("Balanced", "Afbalanceret"),
|
||||||
("Optimize reaction time", "Optimeret responstid"),
|
("Optimize reaction time", "Optimeret responstid"),
|
||||||
("Custom", "Brugerdefineret"),
|
("Custom", ""),
|
||||||
("Show remote cursor", "Vis fjernbetjeningskontrolleret markør"),
|
("Show remote cursor", "Vis fjernbetjeningskontrolleret markør"),
|
||||||
("Show quality monitor", ""),
|
("Show quality monitor", ""),
|
||||||
("Disable clipboard", "Deaktiver udklipsholder"),
|
("Disable clipboard", "Deaktiver udklipsholder"),
|
||||||
@ -193,7 +195,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Reboot required", "Genstart krævet"),
|
("Reboot required", "Genstart krævet"),
|
||||||
("Unsupported display server ", "Ikke-understøttet displayserver"),
|
("Unsupported display server ", "Ikke-understøttet displayserver"),
|
||||||
("x11 expected", "X11 Forventet"),
|
("x11 expected", "X11 Forventet"),
|
||||||
("Port", ""),
|
("Port", "Port"),
|
||||||
("Settings", "Indstillinger"),
|
("Settings", "Indstillinger"),
|
||||||
("Username", " Brugernavn"),
|
("Username", " Brugernavn"),
|
||||||
("Invalid port", "Ugyldig port"),
|
("Invalid port", "Ugyldig port"),
|
||||||
@ -274,7 +276,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("android_stop_service_tip", "Ved at lukke tjenesten lukkes alle fremstillede forbindelser automatisk."),
|
("android_stop_service_tip", "Ved at lukke tjenesten lukkes alle fremstillede forbindelser automatisk."),
|
||||||
("android_version_audio_tip", "Den aktuelle Android -version understøtter ikke lydoptagelse, skal du opdatere om Android 10 eller højere."),
|
("android_version_audio_tip", "Den aktuelle Android -version understøtter ikke lydoptagelse, skal du opdatere om Android 10 eller højere."),
|
||||||
("android_start_service_tip", "Tryk på [Start Service] eller åbn autorisationen [skærmoptagelse] for at starte skærmudgivelsen."),
|
("android_start_service_tip", "Tryk på [Start Service] eller åbn autorisationen [skærmoptagelse] for at starte skærmudgivelsen."),
|
||||||
("Account", ""),
|
("Account", "Konto"),
|
||||||
("Overwrite", "Overskriv"),
|
("Overwrite", "Overskriv"),
|
||||||
("This file exists, skip or overwrite this file?", "Denne fil findes, springer over denne fil eller overskriver?"),
|
("This file exists, skip or overwrite this file?", "Denne fil findes, springer over denne fil eller overskriver?"),
|
||||||
("Quit", "Afslut"),
|
("Quit", "Afslut"),
|
||||||
|
@ -87,6 +87,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Delete", "Löschen"),
|
("Delete", "Löschen"),
|
||||||
("Properties", "Eigenschaften"),
|
("Properties", "Eigenschaften"),
|
||||||
("Multi Select", "Mehrfachauswahl"),
|
("Multi Select", "Mehrfachauswahl"),
|
||||||
|
("Select All", ""),
|
||||||
|
("Unselect All", ""),
|
||||||
("Empty Directory", "Leerer Ordner"),
|
("Empty Directory", "Leerer Ordner"),
|
||||||
("Not an empty directory", "Ordner ist nicht leer"),
|
("Not an empty directory", "Ordner ist nicht leer"),
|
||||||
("Are you sure you want to delete this file?", "Sind Sie sicher, dass Sie diese Datei löschen wollen?"),
|
("Are you sure you want to delete this file?", "Sind Sie sicher, dass Sie diese Datei löschen wollen?"),
|
||||||
@ -112,7 +114,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Good image quality", "Qualität"),
|
("Good image quality", "Qualität"),
|
||||||
("Balanced", "Ausgeglichen"),
|
("Balanced", "Ausgeglichen"),
|
||||||
("Optimize reaction time", "Geschwindigkeit"),
|
("Optimize reaction time", "Geschwindigkeit"),
|
||||||
("Custom", "Benutzerdefiniert"),
|
("Custom", ""),
|
||||||
("Show remote cursor", "Entfernten Cursor anzeigen"),
|
("Show remote cursor", "Entfernten Cursor anzeigen"),
|
||||||
("Show quality monitor", "Qualitätsüberwachung anzeigen"),
|
("Show quality monitor", "Qualitätsüberwachung anzeigen"),
|
||||||
("Disable clipboard", "Zwischenablage deaktivieren"),
|
("Disable clipboard", "Zwischenablage deaktivieren"),
|
||||||
|
@ -87,6 +87,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Delete", ""),
|
("Delete", ""),
|
||||||
("Properties", ""),
|
("Properties", ""),
|
||||||
("Multi Select", ""),
|
("Multi Select", ""),
|
||||||
|
("Select All", ""),
|
||||||
|
("Unselect All", ""),
|
||||||
("Empty Directory", ""),
|
("Empty Directory", ""),
|
||||||
("Not an empty directory", ""),
|
("Not an empty directory", ""),
|
||||||
("Are you sure you want to delete this file?", "Ĉu vi vere volas forigi tiun dosieron?"),
|
("Are you sure you want to delete this file?", "Ĉu vi vere volas forigi tiun dosieron?"),
|
||||||
@ -112,7 +114,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Good image quality", "Bona bilda kvalito"),
|
("Good image quality", "Bona bilda kvalito"),
|
||||||
("Balanced", "Normala bilda kvalito"),
|
("Balanced", "Normala bilda kvalito"),
|
||||||
("Optimize reaction time", "Optimigi reakcia tempo"),
|
("Optimize reaction time", "Optimigi reakcia tempo"),
|
||||||
("Custom", "Personigi bilda kvalito"),
|
("Custom", ""),
|
||||||
("Show remote cursor", "Montri foran kursoron"),
|
("Show remote cursor", "Montri foran kursoron"),
|
||||||
("Show quality monitor", ""),
|
("Show quality monitor", ""),
|
||||||
("Disable clipboard", "Malebligi poŝon"),
|
("Disable clipboard", "Malebligi poŝon"),
|
||||||
|
@ -87,6 +87,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Delete", "Borrar"),
|
("Delete", "Borrar"),
|
||||||
("Properties", "Propiedades"),
|
("Properties", "Propiedades"),
|
||||||
("Multi Select", "Selección múltiple"),
|
("Multi Select", "Selección múltiple"),
|
||||||
|
("Select All", ""),
|
||||||
|
("Unselect All", ""),
|
||||||
("Empty Directory", "Directorio vacío"),
|
("Empty Directory", "Directorio vacío"),
|
||||||
("Not an empty directory", "No es un directorio vacío"),
|
("Not an empty directory", "No es un directorio vacío"),
|
||||||
("Are you sure you want to delete this file?", "Estás seguro de que quieres eliminar este archivo?"),
|
("Are you sure you want to delete this file?", "Estás seguro de que quieres eliminar este archivo?"),
|
||||||
@ -112,7 +114,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Good image quality", "Buena calidad de imagen"),
|
("Good image quality", "Buena calidad de imagen"),
|
||||||
("Balanced", "Equilibrado"),
|
("Balanced", "Equilibrado"),
|
||||||
("Optimize reaction time", "Optimizar el tiempo de reacción"),
|
("Optimize reaction time", "Optimizar el tiempo de reacción"),
|
||||||
("Custom", "Personalizado"),
|
("Custom", ""),
|
||||||
("Show remote cursor", "Mostrar cursor remoto"),
|
("Show remote cursor", "Mostrar cursor remoto"),
|
||||||
("Show quality monitor", "Mostrar calidad del monitor"),
|
("Show quality monitor", "Mostrar calidad del monitor"),
|
||||||
("Disable clipboard", "Deshabilitar portapapeles"),
|
("Disable clipboard", "Deshabilitar portapapeles"),
|
||||||
|
@ -87,6 +87,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Delete", "Supprimer"),
|
("Delete", "Supprimer"),
|
||||||
("Properties", "Propriétés"),
|
("Properties", "Propriétés"),
|
||||||
("Multi Select", "Choix multiple"),
|
("Multi Select", "Choix multiple"),
|
||||||
|
("Select All", ""),
|
||||||
|
("Unselect All", ""),
|
||||||
("Empty Directory", "Répertoire vide"),
|
("Empty Directory", "Répertoire vide"),
|
||||||
("Not an empty directory", "Pas un répertoire vide"),
|
("Not an empty directory", "Pas un répertoire vide"),
|
||||||
("Are you sure you want to delete this file?", "Voulez-vous vraiment supprimer ce fichier?"),
|
("Are you sure you want to delete this file?", "Voulez-vous vraiment supprimer ce fichier?"),
|
||||||
@ -112,7 +114,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Good image quality", "Bonne qualité d'image"),
|
("Good image quality", "Bonne qualité d'image"),
|
||||||
("Balanced", "Qualité d'image normale"),
|
("Balanced", "Qualité d'image normale"),
|
||||||
("Optimize reaction time", "Optimiser le temps de réaction"),
|
("Optimize reaction time", "Optimiser le temps de réaction"),
|
||||||
("Custom", "Qualité d'image personnalisée"),
|
("Custom", ""),
|
||||||
("Show remote cursor", "Afficher le curseur distant"),
|
("Show remote cursor", "Afficher le curseur distant"),
|
||||||
("Show quality monitor", ""),
|
("Show quality monitor", ""),
|
||||||
("Disable clipboard", "Désactiver le presse-papier"),
|
("Disable clipboard", "Désactiver le presse-papier"),
|
||||||
|
@ -87,6 +87,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Delete", "Törlés"),
|
("Delete", "Törlés"),
|
||||||
("Properties", "Tulajdonságok"),
|
("Properties", "Tulajdonságok"),
|
||||||
("Multi Select", "Több fájl kiválasztása"),
|
("Multi Select", "Több fájl kiválasztása"),
|
||||||
|
("Select All", ""),
|
||||||
|
("Unselect All", ""),
|
||||||
("Empty Directory", "Üres Könyvtár"),
|
("Empty Directory", "Üres Könyvtár"),
|
||||||
("Not an empty directory", "Nem egy üres könyvtár"),
|
("Not an empty directory", "Nem egy üres könyvtár"),
|
||||||
("Are you sure you want to delete this file?", "Biztosan törölni szeretnéd ezt a fájlt?"),
|
("Are you sure you want to delete this file?", "Biztosan törölni szeretnéd ezt a fájlt?"),
|
||||||
@ -112,7 +114,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Good image quality", "Jó képminőség"),
|
("Good image quality", "Jó képminőség"),
|
||||||
("Balanced", "Balanszolt"),
|
("Balanced", "Balanszolt"),
|
||||||
("Optimize reaction time", "Válaszidő optimializálása"),
|
("Optimize reaction time", "Válaszidő optimializálása"),
|
||||||
("Custom", "Egyedi"),
|
("Custom", ""),
|
||||||
("Show remote cursor", "Távoli kurzor mutatása"),
|
("Show remote cursor", "Távoli kurzor mutatása"),
|
||||||
("Show quality monitor", "Minőségi monitor mutatása"),
|
("Show quality monitor", "Minőségi monitor mutatása"),
|
||||||
("Disable clipboard", "Vágólap Kikapcsolása"),
|
("Disable clipboard", "Vágólap Kikapcsolása"),
|
||||||
|
@ -87,6 +87,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Delete", "Hapus"),
|
("Delete", "Hapus"),
|
||||||
("Properties", "Properti"),
|
("Properties", "Properti"),
|
||||||
("Multi Select", "Pilih Beberapa"),
|
("Multi Select", "Pilih Beberapa"),
|
||||||
|
("Select All", ""),
|
||||||
|
("Unselect All", ""),
|
||||||
("Empty Directory", "Folder Kosong"),
|
("Empty Directory", "Folder Kosong"),
|
||||||
("Not an empty directory", "Folder tidak kosong"),
|
("Not an empty directory", "Folder tidak kosong"),
|
||||||
("Are you sure you want to delete this file?", "Apakah anda yakin untuk menghapus file ini?"),
|
("Are you sure you want to delete this file?", "Apakah anda yakin untuk menghapus file ini?"),
|
||||||
@ -112,7 +114,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Good image quality", "Kualitas Gambar Baik"),
|
("Good image quality", "Kualitas Gambar Baik"),
|
||||||
("Balanced", "Seimbang"),
|
("Balanced", "Seimbang"),
|
||||||
("Optimize reaction time", "Optimalkan waktu reaksi"),
|
("Optimize reaction time", "Optimalkan waktu reaksi"),
|
||||||
("Custom", "Custom"),
|
("Custom", ""),
|
||||||
("Show remote cursor", "Tampilkan remote kursor"),
|
("Show remote cursor", "Tampilkan remote kursor"),
|
||||||
("Show quality monitor", ""),
|
("Show quality monitor", ""),
|
||||||
("Disable clipboard", "Matikan papan klip"),
|
("Disable clipboard", "Matikan papan klip"),
|
||||||
|
@ -87,6 +87,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Delete", "Eliminare"),
|
("Delete", "Eliminare"),
|
||||||
("Properties", "Proprietà"),
|
("Properties", "Proprietà"),
|
||||||
("Multi Select", "Selezione multipla"),
|
("Multi Select", "Selezione multipla"),
|
||||||
|
("Select All", ""),
|
||||||
|
("Unselect All", ""),
|
||||||
("Empty Directory", "Directory vuota"),
|
("Empty Directory", "Directory vuota"),
|
||||||
("Not an empty directory", "Non una directory vuota"),
|
("Not an empty directory", "Non una directory vuota"),
|
||||||
("Are you sure you want to delete this file?", "Vuoi davvero eliminare questo file?"),
|
("Are you sure you want to delete this file?", "Vuoi davvero eliminare questo file?"),
|
||||||
@ -112,7 +114,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Good image quality", "Buona qualità immagine"),
|
("Good image quality", "Buona qualità immagine"),
|
||||||
("Balanced", "Bilanciato"),
|
("Balanced", "Bilanciato"),
|
||||||
("Optimize reaction time", "Ottimizza il tempo di reazione"),
|
("Optimize reaction time", "Ottimizza il tempo di reazione"),
|
||||||
("Custom", "Personalizzato"),
|
("Custom", ""),
|
||||||
("Show remote cursor", "Mostra il cursore remoto"),
|
("Show remote cursor", "Mostra il cursore remoto"),
|
||||||
("Show quality monitor", ""),
|
("Show quality monitor", ""),
|
||||||
("Disable clipboard", "Disabilita appunti"),
|
("Disable clipboard", "Disabilita appunti"),
|
||||||
|
@ -87,6 +87,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Delete", "削除"),
|
("Delete", "削除"),
|
||||||
("Properties", "プロパティ"),
|
("Properties", "プロパティ"),
|
||||||
("Multi Select", "複数選択"),
|
("Multi Select", "複数選択"),
|
||||||
|
("Select All", ""),
|
||||||
|
("Unselect All", ""),
|
||||||
("Empty Directory", "空のディレクトリ"),
|
("Empty Directory", "空のディレクトリ"),
|
||||||
("Not an empty directory", "空ではないディレクトリ"),
|
("Not an empty directory", "空ではないディレクトリ"),
|
||||||
("Are you sure you want to delete this file?", "本当にこのファイルを削除しますか?"),
|
("Are you sure you want to delete this file?", "本当にこのファイルを削除しますか?"),
|
||||||
@ -112,7 +114,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Good image quality", "画質優先"),
|
("Good image quality", "画質優先"),
|
||||||
("Balanced", "バランス"),
|
("Balanced", "バランス"),
|
||||||
("Optimize reaction time", "速度優先"),
|
("Optimize reaction time", "速度優先"),
|
||||||
("Custom", "カスタム"),
|
("Custom", ""),
|
||||||
("Show remote cursor", "リモート側のカーソルを表示"),
|
("Show remote cursor", "リモート側のカーソルを表示"),
|
||||||
("Show quality monitor", "品質モニターを表示"),
|
("Show quality monitor", "品質モニターを表示"),
|
||||||
("Disable clipboard", "クリップボードを無効化"),
|
("Disable clipboard", "クリップボードを無効化"),
|
||||||
|
@ -87,6 +87,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Delete", "삭제"),
|
("Delete", "삭제"),
|
||||||
("Properties", "속성"),
|
("Properties", "속성"),
|
||||||
("Multi Select", "다중 선택"),
|
("Multi Select", "다중 선택"),
|
||||||
|
("Select All", ""),
|
||||||
|
("Unselect All", ""),
|
||||||
("Empty Directory", "빈 디렉터리"),
|
("Empty Directory", "빈 디렉터리"),
|
||||||
("Not an empty directory", "디렉터리가 비어있지 않습니다"),
|
("Not an empty directory", "디렉터리가 비어있지 않습니다"),
|
||||||
("Are you sure you want to delete this file?", "정말로 해당 파일을 삭제하시겠습니까?"),
|
("Are you sure you want to delete this file?", "정말로 해당 파일을 삭제하시겠습니까?"),
|
||||||
@ -112,7 +114,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Good image quality", "최적 이미지 품질"),
|
("Good image quality", "최적 이미지 품질"),
|
||||||
("Balanced", "균형"),
|
("Balanced", "균형"),
|
||||||
("Optimize reaction time", "반응 시간 최적화"),
|
("Optimize reaction time", "반응 시간 최적화"),
|
||||||
("Custom", "커스텀"),
|
("Custom", ""),
|
||||||
("Show remote cursor", "원격 커서 보이기"),
|
("Show remote cursor", "원격 커서 보이기"),
|
||||||
("Show quality monitor", "품질 모니터 띄우기"),
|
("Show quality monitor", "품질 모니터 띄우기"),
|
||||||
("Disable clipboard", "클립보드 비활성화"),
|
("Disable clipboard", "클립보드 비활성화"),
|
||||||
|
@ -87,6 +87,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Delete", "Жою"),
|
("Delete", "Жою"),
|
||||||
("Properties", "Қасиеттер"),
|
("Properties", "Қасиеттер"),
|
||||||
("Multi Select", "Көптік таңдау"),
|
("Multi Select", "Көптік таңдау"),
|
||||||
|
("Select All", ""),
|
||||||
|
("Unselect All", ""),
|
||||||
("Empty Directory", "Бос Бума"),
|
("Empty Directory", "Бос Бума"),
|
||||||
("Not an empty directory", "Бос бума емес"),
|
("Not an empty directory", "Бос бума емес"),
|
||||||
("Are you sure you want to delete this file?", "Бұл файылды жоюға сенімдісіз бе?"),
|
("Are you sure you want to delete this file?", "Бұл файылды жоюға сенімдісіз бе?"),
|
||||||
@ -112,7 +114,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Good image quality", "Жақсы сурет сапасы"),
|
("Good image quality", "Жақсы сурет сапасы"),
|
||||||
("Balanced", "Теңдестірілген"),
|
("Balanced", "Теңдестірілген"),
|
||||||
("Optimize reaction time", "Реакция уақытын оңтайландыру"),
|
("Optimize reaction time", "Реакция уақытын оңтайландыру"),
|
||||||
("Custom", "Теңшеулі"),
|
("Custom", ""),
|
||||||
("Show remote cursor", "Қашықтағы курсорды көрсету"),
|
("Show remote cursor", "Қашықтағы курсорды көрсету"),
|
||||||
("Show quality monitor", "Сапа мониторын көрсету"),
|
("Show quality monitor", "Сапа мониторын көрсету"),
|
||||||
("Disable clipboard", "Көшіру-тақтасын өшіру"),
|
("Disable clipboard", "Көшіру-тақтасын өшіру"),
|
||||||
|
@ -87,6 +87,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Delete", "Usuń"),
|
("Delete", "Usuń"),
|
||||||
("Properties", "Właściwości"),
|
("Properties", "Właściwości"),
|
||||||
("Multi Select", "Wielokrotny wybór"),
|
("Multi Select", "Wielokrotny wybór"),
|
||||||
|
("Select All", ""),
|
||||||
|
("Unselect All", ""),
|
||||||
("Empty Directory", "Pusty katalog"),
|
("Empty Directory", "Pusty katalog"),
|
||||||
("Not an empty directory", "Katalog nie jest pusty"),
|
("Not an empty directory", "Katalog nie jest pusty"),
|
||||||
("Are you sure you want to delete this file?", "Czy na pewno chcesz usunąć ten plik?"),
|
("Are you sure you want to delete this file?", "Czy na pewno chcesz usunąć ten plik?"),
|
||||||
@ -112,7 +114,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Good image quality", "Dobra jakość obrazu"),
|
("Good image quality", "Dobra jakość obrazu"),
|
||||||
("Balanced", "Zrównoważony"),
|
("Balanced", "Zrównoważony"),
|
||||||
("Optimize reaction time", "Zoptymalizuj czas reakcji"),
|
("Optimize reaction time", "Zoptymalizuj czas reakcji"),
|
||||||
("Custom", "Niestandardowy"),
|
("Custom", ""),
|
||||||
("Show remote cursor", "Pokazuj zdalny kursor"),
|
("Show remote cursor", "Pokazuj zdalny kursor"),
|
||||||
("Show quality monitor", "Pokazuj jakość monitora"),
|
("Show quality monitor", "Pokazuj jakość monitora"),
|
||||||
("Disable clipboard", "Wyłącz schowek"),
|
("Disable clipboard", "Wyłącz schowek"),
|
||||||
|
@ -87,6 +87,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Delete", "Apagar"),
|
("Delete", "Apagar"),
|
||||||
("Properties", "Propriedades"),
|
("Properties", "Propriedades"),
|
||||||
("Multi Select", "Selecção Múltipla"),
|
("Multi Select", "Selecção Múltipla"),
|
||||||
|
("Select All", ""),
|
||||||
|
("Unselect All", ""),
|
||||||
("Empty Directory", "Directório Vazio"),
|
("Empty Directory", "Directório Vazio"),
|
||||||
("Not an empty directory", "Directório não está vazio"),
|
("Not an empty directory", "Directório não está vazio"),
|
||||||
("Are you sure you want to delete this file?", "Tem certeza que deseja apagar este ficheiro?"),
|
("Are you sure you want to delete this file?", "Tem certeza que deseja apagar este ficheiro?"),
|
||||||
@ -112,7 +114,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Good image quality", "Qualidade visual boa"),
|
("Good image quality", "Qualidade visual boa"),
|
||||||
("Balanced", "Equilibrada"),
|
("Balanced", "Equilibrada"),
|
||||||
("Optimize reaction time", "Optimizar tempo de reacção"),
|
("Optimize reaction time", "Optimizar tempo de reacção"),
|
||||||
("Custom", "Personalizado"),
|
("Custom", ""),
|
||||||
("Show remote cursor", "Mostrar cursor remoto"),
|
("Show remote cursor", "Mostrar cursor remoto"),
|
||||||
("Show quality monitor", ""),
|
("Show quality monitor", ""),
|
||||||
("Disable clipboard", "Desabilitar área de transferência"),
|
("Disable clipboard", "Desabilitar área de transferência"),
|
||||||
|
@ -87,6 +87,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Delete", "Apagar"),
|
("Delete", "Apagar"),
|
||||||
("Properties", "Propriedades"),
|
("Properties", "Propriedades"),
|
||||||
("Multi Select", "Seleção Múltipla"),
|
("Multi Select", "Seleção Múltipla"),
|
||||||
|
("Select All", ""),
|
||||||
|
("Unselect All", ""),
|
||||||
("Empty Directory", "Diretório Vazio"),
|
("Empty Directory", "Diretório Vazio"),
|
||||||
("Not an empty directory", "Diretório não está vazio"),
|
("Not an empty directory", "Diretório não está vazio"),
|
||||||
("Are you sure you want to delete this file?", "Tem certeza que deseja apagar este arquivo?"),
|
("Are you sure you want to delete this file?", "Tem certeza que deseja apagar este arquivo?"),
|
||||||
@ -112,7 +114,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Good image quality", "Qualidade visual boa"),
|
("Good image quality", "Qualidade visual boa"),
|
||||||
("Balanced", "Balanceada"),
|
("Balanced", "Balanceada"),
|
||||||
("Optimize reaction time", "Otimizar tempo de reação"),
|
("Optimize reaction time", "Otimizar tempo de reação"),
|
||||||
("Custom", "Personalizado"),
|
("Custom", ""),
|
||||||
("Show remote cursor", "Mostrar cursor remoto"),
|
("Show remote cursor", "Mostrar cursor remoto"),
|
||||||
("Show quality monitor", ""),
|
("Show quality monitor", ""),
|
||||||
("Disable clipboard", "Desabilitar área de transferência"),
|
("Disable clipboard", "Desabilitar área de transferência"),
|
||||||
|
@ -87,6 +87,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Delete", "Удалить"),
|
("Delete", "Удалить"),
|
||||||
("Properties", "Свойства"),
|
("Properties", "Свойства"),
|
||||||
("Multi Select", "Многоэлементный выбор"),
|
("Multi Select", "Многоэлементный выбор"),
|
||||||
|
("Select All", ""),
|
||||||
|
("Unselect All", ""),
|
||||||
("Empty Directory", "Пустая папка"),
|
("Empty Directory", "Пустая папка"),
|
||||||
("Not an empty directory", "Папка не пуста"),
|
("Not an empty directory", "Папка не пуста"),
|
||||||
("Are you sure you want to delete this file?", "Вы уверены, что хотите удалить этот файл?"),
|
("Are you sure you want to delete this file?", "Вы уверены, что хотите удалить этот файл?"),
|
||||||
@ -112,7 +114,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Good image quality", "Хорошее качество изображения"),
|
("Good image quality", "Хорошее качество изображения"),
|
||||||
("Balanced", "Сбалансированный"),
|
("Balanced", "Сбалансированный"),
|
||||||
("Optimize reaction time", "Оптимизировать время реакции"),
|
("Optimize reaction time", "Оптимизировать время реакции"),
|
||||||
("Custom", "Пользовательский"),
|
("Custom", ""),
|
||||||
("Show remote cursor", "Показать удаленный курсор"),
|
("Show remote cursor", "Показать удаленный курсор"),
|
||||||
("Show quality monitor", "Показать качество"),
|
("Show quality monitor", "Показать качество"),
|
||||||
("Disable clipboard", "Отключить буфер обмена"),
|
("Disable clipboard", "Отключить буфер обмена"),
|
||||||
|
@ -87,6 +87,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Delete", "Zmazať"),
|
("Delete", "Zmazať"),
|
||||||
("Properties", "Vlastnosti"),
|
("Properties", "Vlastnosti"),
|
||||||
("Multi Select", "Viacnásobný výber"),
|
("Multi Select", "Viacnásobný výber"),
|
||||||
|
("Select All", ""),
|
||||||
|
("Unselect All", ""),
|
||||||
("Empty Directory", "Prázdny adresár"),
|
("Empty Directory", "Prázdny adresár"),
|
||||||
("Not an empty directory", "Nie prázdny adresár"),
|
("Not an empty directory", "Nie prázdny adresár"),
|
||||||
("Are you sure you want to delete this file?", "Ste si istý, že chcete zmazať tento súbor?"),
|
("Are you sure you want to delete this file?", "Ste si istý, že chcete zmazať tento súbor?"),
|
||||||
@ -112,7 +114,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Good image quality", "Dobrá kvalita obrazu"),
|
("Good image quality", "Dobrá kvalita obrazu"),
|
||||||
("Balanced", "Vyvážené"),
|
("Balanced", "Vyvážené"),
|
||||||
("Optimize reaction time", "Optimalizované pre čas odozvy"),
|
("Optimize reaction time", "Optimalizované pre čas odozvy"),
|
||||||
("Custom", "Vlastné"),
|
("Custom", ""),
|
||||||
("Show remote cursor", "Zobrazovať vzdialený ukazovateľ myši"),
|
("Show remote cursor", "Zobrazovať vzdialený ukazovateľ myši"),
|
||||||
("Show quality monitor", ""),
|
("Show quality monitor", ""),
|
||||||
("Disable clipboard", "Vypnúť schránku"),
|
("Disable clipboard", "Vypnúť schránku"),
|
||||||
|
@ -29,8 +29,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Enable TCP Tunneling", ""),
|
("Enable TCP Tunneling", ""),
|
||||||
("IP Whitelisting", ""),
|
("IP Whitelisting", ""),
|
||||||
("ID/Relay Server", ""),
|
("ID/Relay Server", ""),
|
||||||
("Import server configuration successfully", ""),
|
|
||||||
("Import Server Conf", ""),
|
("Import Server Conf", ""),
|
||||||
|
("Import server configuration successfully", ""),
|
||||||
("Invalid server configuration", ""),
|
("Invalid server configuration", ""),
|
||||||
("Clipboard is empty", ""),
|
("Clipboard is empty", ""),
|
||||||
("Stop service", ""),
|
("Stop service", ""),
|
||||||
@ -87,6 +87,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Delete", ""),
|
("Delete", ""),
|
||||||
("Properties", ""),
|
("Properties", ""),
|
||||||
("Multi Select", ""),
|
("Multi Select", ""),
|
||||||
|
("Select All", ""),
|
||||||
|
("Unselect All", ""),
|
||||||
("Empty Directory", ""),
|
("Empty Directory", ""),
|
||||||
("Not an empty directory", ""),
|
("Not an empty directory", ""),
|
||||||
("Are you sure you want to delete this file?", ""),
|
("Are you sure you want to delete this file?", ""),
|
||||||
|
@ -87,6 +87,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Delete", "Sil"),
|
("Delete", "Sil"),
|
||||||
("Properties", "Özellikler"),
|
("Properties", "Özellikler"),
|
||||||
("Multi Select", "Çoklu Seçim"),
|
("Multi Select", "Çoklu Seçim"),
|
||||||
|
("Select All", ""),
|
||||||
|
("Unselect All", ""),
|
||||||
("Empty Directory", "Boş Klasör"),
|
("Empty Directory", "Boş Klasör"),
|
||||||
("Not an empty directory", "Klasör boş değil"),
|
("Not an empty directory", "Klasör boş değil"),
|
||||||
("Are you sure you want to delete this file?", "Bu dosyayı silmek istediğinize emin misiniz?"),
|
("Are you sure you want to delete this file?", "Bu dosyayı silmek istediğinize emin misiniz?"),
|
||||||
@ -112,7 +114,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Good image quality", "İyi görüntü kalitesi"),
|
("Good image quality", "İyi görüntü kalitesi"),
|
||||||
("Balanced", "Dengelenmiş"),
|
("Balanced", "Dengelenmiş"),
|
||||||
("Optimize reaction time", "Tepki süresini optimize et"),
|
("Optimize reaction time", "Tepki süresini optimize et"),
|
||||||
("Custom", "Özel"),
|
("Custom", ""),
|
||||||
("Show remote cursor", "Uzaktaki fare imlecini göster"),
|
("Show remote cursor", "Uzaktaki fare imlecini göster"),
|
||||||
("Show quality monitor", ""),
|
("Show quality monitor", ""),
|
||||||
("Disable clipboard", "Hafızadaki kopyalanmışları engelle"),
|
("Disable clipboard", "Hafızadaki kopyalanmışları engelle"),
|
||||||
|
@ -87,6 +87,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Delete", "刪除"),
|
("Delete", "刪除"),
|
||||||
("Properties", "屬性"),
|
("Properties", "屬性"),
|
||||||
("Multi Select", "多選"),
|
("Multi Select", "多選"),
|
||||||
|
("Select All", "全選"),
|
||||||
|
("Unselect All", "取消全選"),
|
||||||
("Empty Directory", "空文件夾"),
|
("Empty Directory", "空文件夾"),
|
||||||
("Not an empty directory", "不是一個空文件夾"),
|
("Not an empty directory", "不是一個空文件夾"),
|
||||||
("Are you sure you want to delete this file?", "您確定要刪除此檔案嗎?"),
|
("Are you sure you want to delete this file?", "您確定要刪除此檔案嗎?"),
|
||||||
@ -112,7 +114,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Good image quality", "畫面品質良好"),
|
("Good image quality", "畫面品質良好"),
|
||||||
("Balanced", "平衡"),
|
("Balanced", "平衡"),
|
||||||
("Optimize reaction time", "回應速度最佳化"),
|
("Optimize reaction time", "回應速度最佳化"),
|
||||||
("Custom", "自訂"),
|
("Custom", "自定義"),
|
||||||
("Show remote cursor", "顯示遠端游標"),
|
("Show remote cursor", "顯示遠端游標"),
|
||||||
("Show quality monitor", "顯示質量監測"),
|
("Show quality monitor", "顯示質量監測"),
|
||||||
("Disable clipboard", "停用剪貼簿"),
|
("Disable clipboard", "停用剪貼簿"),
|
||||||
|
@ -87,6 +87,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Delete", "Видалити"),
|
("Delete", "Видалити"),
|
||||||
("Properties", "Властивості"),
|
("Properties", "Властивості"),
|
||||||
("Multi Select", "Багатоелементний вибір"),
|
("Multi Select", "Багатоелементний вибір"),
|
||||||
|
("Select All", ""),
|
||||||
|
("Unselect All", ""),
|
||||||
("Empty Directory", "Порожня папка"),
|
("Empty Directory", "Порожня папка"),
|
||||||
("Not an empty directory", "Папка не порожня"),
|
("Not an empty directory", "Папка не порожня"),
|
||||||
("Are you sure you want to delete this file?", "Ви впевнені, що хочете видалити цей файл?"),
|
("Are you sure you want to delete this file?", "Ви впевнені, що хочете видалити цей файл?"),
|
||||||
@ -112,7 +114,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Good image quality", "Хороша якість зображення"),
|
("Good image quality", "Хороша якість зображення"),
|
||||||
("Balanced", "Збалансований"),
|
("Balanced", "Збалансований"),
|
||||||
("Optimize reaction time", "Оптимізувати час реакції"),
|
("Optimize reaction time", "Оптимізувати час реакції"),
|
||||||
("Custom", "Користувацький"),
|
("Custom", ""),
|
||||||
("Show remote cursor", "Показати віддалений курсор"),
|
("Show remote cursor", "Показати віддалений курсор"),
|
||||||
("Show quality monitor", "Показати якість"),
|
("Show quality monitor", "Показати якість"),
|
||||||
("Disable clipboard", "Відключити буфер обміну"),
|
("Disable clipboard", "Відключити буфер обміну"),
|
||||||
|
@ -87,6 +87,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Delete", "Xóa"),
|
("Delete", "Xóa"),
|
||||||
("Properties", "Thuộc tính"),
|
("Properties", "Thuộc tính"),
|
||||||
("Multi Select", "Chọn nhiều"),
|
("Multi Select", "Chọn nhiều"),
|
||||||
|
("Select All", ""),
|
||||||
|
("Unselect All", ""),
|
||||||
("Empty Directory", "Thư mục rỗng"),
|
("Empty Directory", "Thư mục rỗng"),
|
||||||
("Not an empty directory", "Không phải thư mục rỗng"),
|
("Not an empty directory", "Không phải thư mục rỗng"),
|
||||||
("Are you sure you want to delete this file?", "Bạn chắc bạn có muốn xóa tệp tin này không?"),
|
("Are you sure you want to delete this file?", "Bạn chắc bạn có muốn xóa tệp tin này không?"),
|
||||||
@ -112,7 +114,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("Good image quality", "Chất lượng hình ảnh tốt"),
|
("Good image quality", "Chất lượng hình ảnh tốt"),
|
||||||
("Balanced", "Cân bằng"),
|
("Balanced", "Cân bằng"),
|
||||||
("Optimize reaction time", "Thời gian phản ứng tối ưu"),
|
("Optimize reaction time", "Thời gian phản ứng tối ưu"),
|
||||||
("Custom", "Custom"),
|
("Custom", ""),
|
||||||
("Show remote cursor", "Hiển thị con trỏ từ máy từ xa"),
|
("Show remote cursor", "Hiển thị con trỏ từ máy từ xa"),
|
||||||
("Show quality monitor", "Hiện thị chất lượng của màn hình"),
|
("Show quality monitor", "Hiện thị chất lượng của màn hình"),
|
||||||
("Disable clipboard", "Tắt clipboard"),
|
("Disable clipboard", "Tắt clipboard"),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user