Reduce duplication
This commit is contained in:
parent
dc6ae7f8a3
commit
bcdfe0d2a4
|
@ -8,8 +8,8 @@ ADB file manager
|
|||
|
||||
This application is missing a few features before its initial release:
|
||||
|
||||
- Display a confirmation dialog before overwriting a file
|
||||
- Recursive upload/download (only single file upload/download is currently supported)
|
||||
- Display a confirmation dialog before overwriting a file
|
||||
|
||||
## Download
|
||||
|
||||
|
|
199
gui.go
199
gui.go
|
@ -214,6 +214,83 @@ func upload(filePath string) {
|
|||
}
|
||||
}
|
||||
|
||||
func renameFunc(remote bool) func(index int) {
|
||||
return func(index int) {
|
||||
entries := localEntriesShown
|
||||
if remote {
|
||||
entries = remoteEntriesShown
|
||||
}
|
||||
|
||||
if entries[index].Name == ".." {
|
||||
return
|
||||
}
|
||||
|
||||
renameField.SetText(entries[index].Name)
|
||||
|
||||
modalPopup.SetDoneFunc(acceptRename)
|
||||
|
||||
modalPopup.SetText(fmt.Sprintf("%s", entries[index].Name))
|
||||
modalPopup.GetForm().Clear(true)
|
||||
modalPopup.GetForm().AddFormItem(renameField)
|
||||
modalPopup.GetForm().AddButton("Rename", func() {
|
||||
acceptRename(0, "")
|
||||
})
|
||||
|
||||
renameRemote = remote
|
||||
renameItem = index
|
||||
setMode(modeRename)
|
||||
|
||||
app.Draw()
|
||||
}
|
||||
}
|
||||
|
||||
func deleteFunc(remote bool) func(index int) {
|
||||
return func(index int) {
|
||||
entries := localEntriesShown
|
||||
if remote {
|
||||
entries = remoteEntriesShown
|
||||
}
|
||||
|
||||
if entries[index].Name == ".." {
|
||||
return
|
||||
}
|
||||
|
||||
if entries[index].Mode&os.ModeDir != 0 {
|
||||
modalPopup.SetText("Are you sure you want to delete this directory?\n\n" + entries[index].Name)
|
||||
} else {
|
||||
modalPopup.SetText("Are you sure you want to delete this file?\n\n" + entries[index].Name)
|
||||
}
|
||||
modalPopup.GetForm().Clear(true)
|
||||
modalPopup.GetForm().AddButton("No", cancelDelete)
|
||||
modalPopup.GetForm().AddButton("Yes", confirmDelete)
|
||||
|
||||
deleteRemote = remote
|
||||
deleteItem = index
|
||||
setMode(modeDelete)
|
||||
}
|
||||
}
|
||||
|
||||
func newFolderFunc(remote bool) func(index int) {
|
||||
return func(index int) {
|
||||
newFolderField.SetLabel("Folder name")
|
||||
|
||||
modalPopup.SetDoneFunc(acceptNewFolder)
|
||||
|
||||
modalPopup.SetText("Create new folder")
|
||||
modalPopup.GetForm().Clear(true)
|
||||
modalPopup.GetForm().AddFormItem(newFolderField)
|
||||
modalPopup.GetForm().AddButton("Create", func() {
|
||||
acceptNewFolder(0, "")
|
||||
})
|
||||
|
||||
newFolderRemote = remote
|
||||
newFolderItem = index
|
||||
setMode(modeNewFolder)
|
||||
|
||||
app.Draw()
|
||||
}
|
||||
}
|
||||
|
||||
func initTUI() {
|
||||
devices, err := bridge.listDevices()
|
||||
if err != nil {
|
||||
|
@ -347,66 +424,11 @@ func initTUI() {
|
|||
app.Draw()
|
||||
})
|
||||
localBuffer.AddContextItem("", 0, nil)
|
||||
localBuffer.AddContextItem("Delete", 'd', func(index int) {
|
||||
if localEntriesShown[index].Name == ".." {
|
||||
return
|
||||
}
|
||||
|
||||
if localEntriesShown[index].Mode&os.ModeDir != 0 {
|
||||
modalPopup.SetText("Are you sure you want to delete this directory?\n\n" + localEntriesShown[index].Name)
|
||||
} else {
|
||||
modalPopup.SetText("Are you sure you want to delete this file?\n\n" + localEntriesShown[index].Name)
|
||||
}
|
||||
modalPopup.GetForm().Clear(true)
|
||||
modalPopup.GetForm().AddButton("No", cancelDelete)
|
||||
modalPopup.GetForm().AddButton("Yes", confirmDelete)
|
||||
|
||||
deleteRemote = false
|
||||
deleteItem = index
|
||||
setMode(modeDelete)
|
||||
})
|
||||
localBuffer.AddContextItem("Delete", 'd', deleteFunc(false))
|
||||
localBuffer.AddContextItem("", 0, nil)
|
||||
localBuffer.AddContextItem("Rename", 'r', func(index int) {
|
||||
if localEntriesShown[index].Name == ".." {
|
||||
return
|
||||
}
|
||||
|
||||
renameField.SetText(localEntriesShown[index].Name)
|
||||
|
||||
modalPopup.SetDoneFunc(acceptRename)
|
||||
|
||||
modalPopup.SetText(fmt.Sprintf("%s", localEntriesShown[index].Name))
|
||||
modalPopup.GetForm().Clear(true)
|
||||
modalPopup.GetForm().AddFormItem(renameField)
|
||||
modalPopup.GetForm().AddButton("Rename", func() {
|
||||
acceptRename(0, "")
|
||||
})
|
||||
|
||||
renameRemote = false
|
||||
renameItem = index
|
||||
setMode(modeRename)
|
||||
|
||||
app.Draw()
|
||||
})
|
||||
localBuffer.AddContextItem("Rename", 'r', renameFunc(false))
|
||||
localBuffer.AddContextItem("", 0, nil)
|
||||
localBuffer.AddContextItem("New folder", 'f', func(index int) {
|
||||
newFolderField.SetLabel("Folder name")
|
||||
|
||||
modalPopup.SetDoneFunc(acceptNewFolder)
|
||||
|
||||
modalPopup.SetText("Create new folder")
|
||||
modalPopup.GetForm().Clear(true)
|
||||
modalPopup.GetForm().AddFormItem(newFolderField)
|
||||
modalPopup.GetForm().AddButton("Create", func() {
|
||||
acceptNewFolder(0, "")
|
||||
})
|
||||
|
||||
newFolderRemote = false
|
||||
newFolderItem = index
|
||||
setMode(modeNewFolder)
|
||||
|
||||
app.Draw()
|
||||
})
|
||||
localBuffer.AddContextItem("New folder", 'f', newFolderFunc(false))
|
||||
|
||||
localBuffer.SetSelectedFunc(func(i int, item *cview.ListItem) {
|
||||
localLock.Lock()
|
||||
|
@ -564,66 +586,11 @@ func initTUI() {
|
|||
app.Draw()
|
||||
})
|
||||
remoteBuffer.AddContextItem("", 0, nil)
|
||||
remoteBuffer.AddContextItem("Delete", 'd', func(index int) {
|
||||
if remoteEntriesShown[index].Name == ".." {
|
||||
return
|
||||
}
|
||||
|
||||
if remoteEntriesShown[index].Mode&os.ModeDir != 0 {
|
||||
modalPopup.SetText("Are you sure you want to delete this directory?\n\n" + remoteEntriesShown[index].Name)
|
||||
} else {
|
||||
modalPopup.SetText("Are you sure you want to delete this file?\n\n" + remoteEntriesShown[index].Name)
|
||||
}
|
||||
modalPopup.GetForm().Clear(true)
|
||||
modalPopup.GetForm().AddButton("No", cancelDelete)
|
||||
modalPopup.GetForm().AddButton("Yes", confirmDelete)
|
||||
|
||||
deleteRemote = true
|
||||
deleteItem = index
|
||||
setMode(modeDelete)
|
||||
})
|
||||
remoteBuffer.AddContextItem("Delete", 'd', deleteFunc(true))
|
||||
remoteBuffer.AddContextItem("", 0, nil)
|
||||
remoteBuffer.AddContextItem("Rename", 'r', func(index int) {
|
||||
if remoteEntriesShown[index].Name == ".." {
|
||||
return
|
||||
}
|
||||
|
||||
renameField.SetText(remoteEntriesShown[index].Name)
|
||||
|
||||
modalPopup.SetDoneFunc(acceptRename)
|
||||
|
||||
modalPopup.SetText(fmt.Sprintf("%s", remoteEntriesShown[index].Name))
|
||||
modalPopup.GetForm().Clear(true)
|
||||
modalPopup.GetForm().AddFormItem(renameField)
|
||||
modalPopup.GetForm().AddButton("Rename", func() {
|
||||
acceptRename(0, "")
|
||||
})
|
||||
|
||||
renameRemote = true
|
||||
renameItem = index
|
||||
setMode(modeRename)
|
||||
|
||||
app.Draw()
|
||||
})
|
||||
remoteBuffer.AddContextItem("Rename", 'r', renameFunc(true))
|
||||
remoteBuffer.AddContextItem("", 0, nil)
|
||||
remoteBuffer.AddContextItem("New folder", 'f', func(index int) {
|
||||
newFolderField.SetLabel("Folder name")
|
||||
|
||||
modalPopup.SetDoneFunc(acceptNewFolder)
|
||||
|
||||
modalPopup.SetText("Create new folder")
|
||||
modalPopup.GetForm().Clear(true)
|
||||
modalPopup.GetForm().AddFormItem(newFolderField)
|
||||
modalPopup.GetForm().AddButton("Create", func() {
|
||||
acceptNewFolder(0, "")
|
||||
})
|
||||
|
||||
newFolderRemote = true
|
||||
newFolderItem = index
|
||||
setMode(modeNewFolder)
|
||||
|
||||
app.Draw()
|
||||
})
|
||||
remoteBuffer.AddContextItem("New folder", 'f', newFolderFunc(true))
|
||||
|
||||
remoteBuffer.SetSelectedFunc(func(i int, item *cview.ListItem) {
|
||||
remoteLock.Lock()
|
||||
|
|
3
main.go
3
main.go
|
@ -13,7 +13,6 @@ import (
|
|||
|
||||
"github.com/gdamore/tcell/v2"
|
||||
adb "github.com/zach-klippenstein/goadb"
|
||||
goadb "github.com/zach-klippenstein/goadb"
|
||||
"gitlab.com/tslocum/cbind"
|
||||
"gitlab.com/tslocum/cview"
|
||||
)
|
||||
|
@ -96,7 +95,7 @@ func setDefaultKeyBinds() {
|
|||
}
|
||||
}
|
||||
|
||||
func setDeviceFunc(device *goadb.DeviceInfo) func(index int, option *cview.DropDownOption) {
|
||||
func setDeviceFunc(device *adb.DeviceInfo) func(index int, option *cview.DropDownOption) {
|
||||
return func(index int, option *cview.DropDownOption) {
|
||||
go func() {
|
||||
localLock.Lock()
|
||||
|
|
Loading…
Reference in New Issue