desktop file transfer, all columns respond to tap, add right click item border (#9153)
When right click selected item, the border is not obvious but can feel some change. Signed-off-by: 21pages <sunboeasy@gmail.com>
This commit is contained in:
parent
5931af460e
commit
50aa8e12ad
@ -930,6 +930,7 @@ class _FileManagerViewState extends State<FileManagerView> {
|
|||||||
BuildContext context, ScrollController scrollController) {
|
BuildContext context, ScrollController scrollController) {
|
||||||
final fd = controller.directory.value;
|
final fd = controller.directory.value;
|
||||||
final entries = fd.entries;
|
final entries = fd.entries;
|
||||||
|
Rx<Entry?> rightClickEntry = Rx(null);
|
||||||
|
|
||||||
return ListSearchActionListener(
|
return ListSearchActionListener(
|
||||||
node: _keyboardNode,
|
node: _keyboardNode,
|
||||||
@ -989,6 +990,53 @@ class _FileManagerViewState extends State<FileManagerView> {
|
|||||||
? " "
|
? " "
|
||||||
: "${entry.lastModified().toString().replaceAll(".000", "")} ";
|
: "${entry.lastModified().toString().replaceAll(".000", "")} ";
|
||||||
var secondaryPosition = RelativeRect.fromLTRB(0, 0, 0, 0);
|
var secondaryPosition = RelativeRect.fromLTRB(0, 0, 0, 0);
|
||||||
|
onTap() {
|
||||||
|
final items = selectedItems;
|
||||||
|
// handle double click
|
||||||
|
if (_checkDoubleClick(entry)) {
|
||||||
|
controller.openDirectory(entry.path);
|
||||||
|
items.clear();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
_onSelectedChanged(items, filteredEntries, entry, isLocal);
|
||||||
|
}
|
||||||
|
|
||||||
|
onSecondaryTap() {
|
||||||
|
final items = [
|
||||||
|
if (!entry.isDrive &&
|
||||||
|
versionCmp(_ffi.ffiModel.pi.version, "1.3.0") >= 0)
|
||||||
|
mod_menu.PopupMenuItem(
|
||||||
|
child: Text("Rename"),
|
||||||
|
height: CustomPopupMenuTheme.height,
|
||||||
|
onTap: () {
|
||||||
|
controller.renameAction(entry, isLocal);
|
||||||
|
},
|
||||||
|
)
|
||||||
|
];
|
||||||
|
if (items.isNotEmpty) {
|
||||||
|
rightClickEntry.value = entry;
|
||||||
|
final future = mod_menu.showMenu(
|
||||||
|
context: context,
|
||||||
|
position: secondaryPosition,
|
||||||
|
items: items,
|
||||||
|
);
|
||||||
|
future.then((value) {
|
||||||
|
rightClickEntry.value = null;
|
||||||
|
});
|
||||||
|
future.onError((error, stackTrace) {
|
||||||
|
rightClickEntry.value = null;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
onSecondaryTapDown(details) {
|
||||||
|
secondaryPosition = RelativeRect.fromLTRB(
|
||||||
|
details.globalPosition.dx,
|
||||||
|
details.globalPosition.dy,
|
||||||
|
details.globalPosition.dx,
|
||||||
|
details.globalPosition.dy);
|
||||||
|
}
|
||||||
|
|
||||||
return Padding(
|
return Padding(
|
||||||
padding: EdgeInsets.symmetric(vertical: 1),
|
padding: EdgeInsets.symmetric(vertical: 1),
|
||||||
child: Obx(() => Container(
|
child: Obx(() => Container(
|
||||||
@ -999,6 +1047,12 @@ class _FileManagerViewState extends State<FileManagerView> {
|
|||||||
borderRadius: BorderRadius.all(
|
borderRadius: BorderRadius.all(
|
||||||
Radius.circular(5.0),
|
Radius.circular(5.0),
|
||||||
),
|
),
|
||||||
|
border: rightClickEntry.value == entry
|
||||||
|
? Border.all(
|
||||||
|
color: MyTheme.button,
|
||||||
|
width: 1.0,
|
||||||
|
)
|
||||||
|
: null,
|
||||||
),
|
),
|
||||||
key: ValueKey(entry.name),
|
key: ValueKey(entry.name),
|
||||||
height: kDesktopFileTransferRowHeight,
|
height: kDesktopFileTransferRowHeight,
|
||||||
@ -1047,46 +1101,9 @@ class _FileManagerViewState extends State<FileManagerView> {
|
|||||||
]),
|
]),
|
||||||
)),
|
)),
|
||||||
),
|
),
|
||||||
onTap: () {
|
onTap: onTap,
|
||||||
final items = selectedItems;
|
onSecondaryTap: onSecondaryTap,
|
||||||
// handle double click
|
onSecondaryTapDown: onSecondaryTapDown,
|
||||||
if (_checkDoubleClick(entry)) {
|
|
||||||
controller.openDirectory(entry.path);
|
|
||||||
items.clear();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
_onSelectedChanged(
|
|
||||||
items, filteredEntries, entry, isLocal);
|
|
||||||
},
|
|
||||||
onSecondaryTap: () {
|
|
||||||
final items = [
|
|
||||||
if (!entry.isDrive &&
|
|
||||||
versionCmp(_ffi.ffiModel.pi.version,
|
|
||||||
"1.3.0") >=
|
|
||||||
0)
|
|
||||||
mod_menu.PopupMenuItem(
|
|
||||||
child: Text("Rename"),
|
|
||||||
height: CustomPopupMenuTheme.height,
|
|
||||||
onTap: () {
|
|
||||||
controller.renameAction(entry, isLocal);
|
|
||||||
},
|
|
||||||
)
|
|
||||||
];
|
|
||||||
if (items.isNotEmpty) {
|
|
||||||
mod_menu.showMenu(
|
|
||||||
context: context,
|
|
||||||
position: secondaryPosition,
|
|
||||||
items: items,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
onSecondaryTapDown: (details) {
|
|
||||||
secondaryPosition = RelativeRect.fromLTRB(
|
|
||||||
details.globalPosition.dx,
|
|
||||||
details.globalPosition.dy,
|
|
||||||
details.globalPosition.dx,
|
|
||||||
details.globalPosition.dy);
|
|
||||||
},
|
|
||||||
),
|
),
|
||||||
SizedBox(
|
SizedBox(
|
||||||
width: 2.0,
|
width: 2.0,
|
||||||
@ -1111,6 +1128,9 @@ class _FileManagerViewState extends State<FileManagerView> {
|
|||||||
)),
|
)),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
onTap: onTap,
|
||||||
|
onSecondaryTap: onSecondaryTap,
|
||||||
|
onSecondaryTapDown: onSecondaryTapDown,
|
||||||
),
|
),
|
||||||
// Divider from header.
|
// Divider from header.
|
||||||
SizedBox(
|
SizedBox(
|
||||||
@ -1133,6 +1153,9 @@ class _FileManagerViewState extends State<FileManagerView> {
|
|||||||
: MyTheme.darkGray),
|
: MyTheme.darkGray),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
onTap: onTap,
|
||||||
|
onSecondaryTap: onSecondaryTap,
|
||||||
|
onSecondaryTapDown: onSecondaryTapDown,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
Loading…
x
Reference in New Issue
Block a user