Reduce duplication

This commit is contained in:
Trevor Slocum 2020-12-08 18:33:14 -08:00
parent dc6ae7f8a3
commit bcdfe0d2a4
3 changed files with 85 additions and 119 deletions

View File

@ -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
View File

@ -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()

View File

@ -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()