@Override public void onClick(View v) { Puzzle solution = cont.solvedPuzzle; // Next Move Button if (buttonType == 0) { PuzzleEvent event = cont.getNextHint(); cont.solvedPuzzle.setCurrentEvent(event); if (event == null) { AlertDialog alertDialog = new AlertDialog.Builder(mContext).create(); alertDialog.setTitle("Sorry"); alertDialog.setMessage( "There is no more help I can give, but if there is a unique soltuion I do know it (from" + " a quick back tracking search algorithm)"); alertDialog.show(); return; } if (event.isSolveEvent()) { if (cont.showPos) { Button showPos = activity.getShowPosButton(); showPos.performClick(); } for (int i = 0; i < 81; i++) { if (Globals.SHOW_COLOR == cont.puzButtons.getColor(i)) { cont.puzButtons.setColor(i, Globals.SQUARE_COLOR); } } Square solSq = event.getAffectedSquares().get(0); int[] posArr = solSq.getPosition(); int pos = 9 * posArr[0] + posArr[1]; cont.puzButtons.setColor(pos, Globals.SHOW_COLOR); TextView panelBut = cont.panelButtons.getTextView(solSq.value() - 1); panelBut.performClick(); return; } else { for (int i = 0; i < 81; i++) { if (Globals.SHOW_COLOR == cont.puzButtons.getColor(i)) { if (cont.showPos && cont.displayPuzzle.getSquare(i / 9, i % 9).isPossible(cont.numberSet)) { cont.puzButtons.setColor(i, Globals.POSSIBLE_COLOR); } else { cont.puzButtons.setColor(i, Globals.SQUARE_COLOR); } } } if (!cont.delPos) { Button delPos = activity.getDelPosButton(); delPos.performClick(); } List<Square> sqList = event.getAffectedSquares(); List<Integer> nums = event.getNumbers(); for (Square sq : sqList) { int row = sq.getRowNum(); int col = sq.getColNum(); for (int removePos : nums) { if (cont.displayPuzzle.getSquare(row, col).isPossible(removePos)) { cont.puzButtons.setColor((row * 9) + col, Globals.SHOW_COLOR); } } } for (int i : nums) { for (Square solveSq : sqList) { int row = solveSq.getRowNum(); int col = solveSq.getColNum(); Square sq = cont.displayPuzzle.getSquare(row, col); if (sq.isPossible(i)) { TextView panelBut = cont.panelButtons.getTextView(i - 1); panelBut.performClick(); return; } } } return; } } // This means it is the hint button else if (buttonType == 1) { PuzzleEvent event = cont.getNextHint(); cont.solvedPuzzle.setCurrentEvent(event); if (event == null) { AlertDialog alertDialog = new AlertDialog.Builder(mContext).create(); alertDialog.setTitle("Sorry"); alertDialog.setMessage( "There is no more help I can give, but if there is a unique soltuion I do know it (from" + " a quick back tracking search algorithm)"); alertDialog.show(); return; } if (event.isSolveEvent()) { for (int i = 0; i < 81; i++) { if (Globals.SHOW_COLOR == cont.puzButtons.getColor(i)) { if (cont.displayPuzzle.getSquare(i / 9, i % 9).isPossible(cont.numberSet) && cont.showPos) { cont.puzButtons.setColor(i, Globals.POSSIBLE_COLOR); } else { cont.puzButtons.setColor(i, Globals.SQUARE_COLOR); } } } Square solSq = event.getAffectedSquares().get(0); int[] posArr = solSq.getPosition(); int pos = 9 * posArr[0] + posArr[1]; cont.puzButtons.setColor(pos, Globals.SHOW_COLOR); return; } else { for (int i = 0; i < 81; i++) { if (Globals.SHOW_COLOR == cont.puzButtons.getColor(i)) { if (cont.showPos && cont.displayPuzzle.getSquare(i / 9, i % 9).isPossible(cont.numberSet)) { cont.puzButtons.setColor(i, Globals.POSSIBLE_COLOR); } else { cont.puzButtons.setColor(i, Globals.SQUARE_COLOR); } } } List<Square> sqList = event.getAffectedSquares(); List<Integer> nums = event.getNumbers(); for (Square sq : sqList) { int row = sq.getRowNum(); int col = sq.getColNum(); for (int removePos : nums) { if (cont.displayPuzzle.getSquare(row, col).isPossible(removePos)) { cont.puzButtons.setColor((row * 9) + col, Globals.SHOW_COLOR); } } } return; } } // possibles button else if (buttonType == 2) { if (cont.showPos == false) { cont.showPos = true; } else { cont.showPos = false; if (cont.delPos == true) { Button delPos = activity.getDelPosButton(); delPos.performClick(); } } int buttonPush = cont.numberSet; bottom.doClick(buttonPush - 1); } // delete possible button else if (buttonType == 3) { if (cont.delPos == false) { cont.delPos = true; cont.showPos = true; c = v.getBackground(); // savedDeleteView = v; v.setBackgroundColor(Globals.DELETE_COLOR); bottom.doClick(cont.numberSet - 1); AlertDialog alertDialog = new AlertDialog.Builder(mContext).create(); } else { cont.delPos = false; // v = savedDeleteView; v.setBackground(c); // v.setBackgroundColor(Globals.SQUARE_COLOR); AlertDialog alertDialog = new AlertDialog.Builder(mContext).create(); } } }