@@ -57,19 +57,57 @@ public PaginationWidget(HomeScreen homeScreen, float width) {
5757 addListener (new ClickListener (-1 ) {
5858 @ Override
5959 public void clicked (InputEvent event , float x , float y ) {
60- //System.out.println("clicked: " + x + ", y: " + y);
6160 if (y < PAGINATION_BAR_HEIGHT ) {
6261 if (x < ICON_SIZE ) {
6362 homeScreen .keyUp (Keys .PAGE_UP );
6463 }
65- if (x > (width - ICON_SIZE )) {
64+ else if (x > (width - ICON_SIZE )) {
6665 homeScreen .keyUp (Keys .PAGE_DOWN );
6766 }
67+ else {
68+ PagedScrollPane pagedScrollPane = homeScreen .getPagedScrollPane ();
69+ int clickedPageNum = getPageNumberForClick (x , y );
70+ if (clickedPageNum > -1 ) {
71+ if (clickedPageNum != pagedScrollPane .getCurrentPageNumber ()) {
72+ if (clickedPageNum == 0 ) {
73+ homeScreen .keyUp (Keys .HOME );
74+ } else {
75+ int programsPerPage = pagedScrollPane .getProgramsPerPage ();
76+ int programIndex = (programsPerPage * (clickedPageNum - 1 ));
77+ homeScreen .showProgramPage (programIndex , false );
78+ }
79+ }
80+ }
81+ }
6882 }
6983 }
7084 });
7185 }
7286
87+ public int getPageNumberForClick (float x , float y ) {
88+ int clickedPageNum = -1 ;
89+ PagedScrollPane pagedScrollPane = homeScreen .getPagedScrollPane ();
90+ if (pagedScrollPane != null ) {
91+ int numOfPages = pagedScrollPane .getNumOfPages ();
92+ if (numOfPages > 0 ) {
93+ int gapBetweenCircles = Math .min ((width - (PAGINATION_BAR_HEIGHT * 10 )) / numOfPages , 20 );
94+ int totalCirclesWidth = (numOfPages * (CIRCLE_DIAMETER + gapBetweenCircles )) - gapBetweenCircles ;
95+ for (int pageNum =0 ; pageNum < numOfPages ; pageNum ++) {
96+ float circleX =
97+ ((width / 2 ) - (totalCirclesWidth / 2 )) + CIRCLE_RADIUS +
98+ (pageNum * (CIRCLE_DIAMETER + gapBetweenCircles ));
99+ float circleY = PAGINATION_BAR_HEIGHT / 2 ;
100+ float dx = x - circleX ;
101+ float dy = y - circleY ;
102+ if (Math .sqrt ((dx * dx ) + (dy * dy )) <= (CIRCLE_RADIUS + (gapBetweenCircles / 2 ))) {
103+ clickedPageNum = pageNum ;
104+ }
105+ }
106+ }
107+ }
108+ return clickedPageNum ;
109+ }
110+
73111 public void draw (Batch batch , float parentAlpha ) {
74112 validate ();
75113
0 commit comments