mLegalTimesTree = new Node(); if (mIs24HourMode) { Node minuteFirstDigit = new Node(k0, k1, k2, k3, k4, k5); Node minuteSecondDigit = new Node(k0, k1, k2, k3, k4, k5, k6, k7, k8, k9); minuteFirstDigit.addChild(minuteSecondDigit); Node firstDigit = new Node(k0, k1); mLegalTimesTree.addChild(firstDigit); Node secondDigit = new Node(k0, k1, k2, k3, k4, k5); firstDigit.addChild(secondDigit); secondDigit.addChild(minuteFirstDigit); Node thirdDigit = new Node(k6, k7, k8, k9); secondDigit.addChild(thirdDigit); secondDigit = new Node(k6, k7, k8, k9); firstDigit.addChild(secondDigit); secondDigit.addChild(minuteFirstDigit); firstDigit = new Node(k2); mLegalTimesTree.addChild(firstDigit); secondDigit = new Node(k0, k1, k2, k3);
/** * Traverse the tree to see if the keys that have been typed so far are legal as is, * or may become legal as more keys are typed (excluding backspace). */ private boolean isTypedTimeLegalSoFar() { Node node = mLegalTimesTree; for (int keyCode : mTypedTimes) { node = node.canReach(keyCode); if (node == null) { return false; } } return true; }
public Node canReach(int key) { if (mChildren == null) { return null; } for (Node child : mChildren) { if (child.containsKey(key)) { return child; } } return null; } }
mLegalTimesTree = new Node(); if (mIs24HourMode) { Node minuteFirstDigit = new Node(k0, k1, k2, k3, k4, k5); Node minuteSecondDigit = new Node(k0, k1, k2, k3, k4, k5, k6, k7, k8, k9); minuteFirstDigit.addChild(minuteSecondDigit); Node firstDigit = new Node(k0, k1); mLegalTimesTree.addChild(firstDigit); Node secondDigit = new Node(k0, k1, k2, k3, k4, k5); firstDigit.addChild(secondDigit); secondDigit.addChild(minuteFirstDigit); Node thirdDigit = new Node(k6, k7, k8, k9); secondDigit.addChild(thirdDigit); secondDigit = new Node(k6, k7, k8, k9); firstDigit.addChild(secondDigit); secondDigit.addChild(minuteFirstDigit); firstDigit = new Node(k2); mLegalTimesTree.addChild(firstDigit); secondDigit = new Node(k0, k1, k2, k3);
/** * Traverse the tree to see if the keys that have been typed so far are legal as is, * or may become legal as more keys are typed (excluding backspace). */ private boolean isTypedTimeLegalSoFar() { Node node = mLegalTimesTree; for (int keyCode : mTypedTimes) { node = node.canReach(keyCode); if (node == null) { return false; } } return true; }
public Node canReach(int key) { if (mChildren == null) { return null; } for (Node child : mChildren) { if (child.containsKey(key)) { return child; } } return null; } }