diff options
author | Felix Lange <fjl@twurst.com> | 2014-10-23 21:01:27 +0800 |
---|---|---|
committer | Felix Lange <fjl@twurst.com> | 2014-10-23 21:01:27 +0800 |
commit | 69baa465ea69ae60eed802445cf0132b9eb69934 (patch) | |
tree | b09da7582b5c4850d4db13aee808f2fef2f97de0 /ui | |
parent | 50fd46924900869e7210217c6a07979b544991c8 (diff) | |
parent | feef194829b07570e91873ed5d1e8cc51e8fa430 (diff) | |
download | go-tangerine-69baa465ea69ae60eed802445cf0132b9eb69934.tar.gz go-tangerine-69baa465ea69ae60eed802445cf0132b9eb69934.tar.zst go-tangerine-69baa465ea69ae60eed802445cf0132b9eb69934.zip |
Merge eth-go repository into go-ethereum
mist, etheruem have been moved to cmd/
Diffstat (limited to 'ui')
-rw-r--r-- | ui/filter.go | 75 | ||||
-rw-r--r-- | ui/qt/filter.go | 38 |
2 files changed, 113 insertions, 0 deletions
diff --git a/ui/filter.go b/ui/filter.go new file mode 100644 index 000000000..ad29abbc5 --- /dev/null +++ b/ui/filter.go @@ -0,0 +1,75 @@ +package ui + +import ( + "github.com/ethereum/go-ethereum/ethchain" + "github.com/ethereum/go-ethereum/ethutil" +) + +func NewFilterFromMap(object map[string]interface{}, eth ethchain.EthManager) *ethchain.Filter { + filter := ethchain.NewFilter(eth) + + if object["earliest"] != nil { + val := ethutil.NewValue(object["earliest"]) + filter.SetEarliestBlock(val.Int()) + } + + if object["latest"] != nil { + val := ethutil.NewValue(object["latest"]) + filter.SetLatestBlock(val.Int()) + } + + if object["to"] != nil { + val := ethutil.NewValue(object["to"]) + filter.AddTo(ethutil.Hex2Bytes(val.Str())) + } + + if object["from"] != nil { + val := ethutil.NewValue(object["from"]) + filter.AddFrom(ethutil.Hex2Bytes(val.Str())) + } + + if object["max"] != nil { + val := ethutil.NewValue(object["max"]) + filter.SetMax(int(val.Uint())) + } + + if object["skip"] != nil { + val := ethutil.NewValue(object["skip"]) + filter.SetSkip(int(val.Uint())) + } + + if object["altered"] != nil { + filter.Altered = makeAltered(object["altered"]) + } + + return filter +} + +// Conversion methodn +func mapToAccountChange(m map[string]interface{}) (d ethchain.AccountChange) { + if str, ok := m["id"].(string); ok { + d.Address = ethutil.Hex2Bytes(str) + } + + if str, ok := m["at"].(string); ok { + d.StateAddress = ethutil.Hex2Bytes(str) + } + + return +} + +// data can come in in the following formats: +// ["aabbccdd", {id: "ccddee", at: "11223344"}], "aabbcc", {id: "ccddee", at: "1122"} +func makeAltered(v interface{}) (d []ethchain.AccountChange) { + if str, ok := v.(string); ok { + d = append(d, ethchain.AccountChange{ethutil.Hex2Bytes(str), nil}) + } else if obj, ok := v.(map[string]interface{}); ok { + d = append(d, mapToAccountChange(obj)) + } else if slice, ok := v.([]interface{}); ok { + for _, item := range slice { + d = append(d, makeAltered(item)...) + } + } + + return +} diff --git a/ui/qt/filter.go b/ui/qt/filter.go new file mode 100644 index 000000000..1fd99e78e --- /dev/null +++ b/ui/qt/filter.go @@ -0,0 +1,38 @@ +package qt + +import ( + "fmt" + + "github.com/ethereum/go-ethereum/ethchain" + "github.com/ethereum/go-ethereum/ui" + "gopkg.in/qml.v1" +) + +func NewFilterFromMap(object map[string]interface{}, eth ethchain.EthManager) *ethchain.Filter { + filter := ui.NewFilterFromMap(object, eth) + + if object["altered"] != nil { + filter.Altered = makeAltered(object["altered"]) + } + + return filter +} + +func makeAltered(v interface{}) (d []ethchain.AccountChange) { + if qList, ok := v.(*qml.List); ok { + var s []interface{} + qList.Convert(&s) + + fmt.Println(s) + + d = makeAltered(s) + } else if qMap, ok := v.(*qml.Map); ok { + var m map[string]interface{} + qMap.Convert(&m) + fmt.Println(m) + + d = makeAltered(m) + } + + return +} |