Skip to content

Commit bb307c3

Browse files
authored
Merge pull request #2 from S-trace/swipe_page_flip_fixup
Rework swipe length tracking for page flipping
2 parents 4483073 + f4d18c4 commit bb307c3

File tree

4 files changed

+158
-54
lines changed

4 files changed

+158
-54
lines changed

android/res/values-ru/strings.xml

Lines changed: 40 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -600,26 +600,46 @@
600600
<string name="motion_timeout_95min">"95 минут"</string>
601601
<string name="motion_timeout_100min">"100 минут"</string>
602602
<string name="pages_per_full_swipe_off">"Выключено"</string>
603-
<string name="pages_per_full_swipe_1">"1 страница (справа налево)"</string>
604-
<string name="pages_per_full_swipe_2">"2 страницы (отслеживать)"</string>
605-
<string name="pages_per_full_swipe_3">"3 страницы (отслеживать)"</string>
606-
<string name="pages_per_full_swipe_4">"4 страницы (отслеживать)"</string>
607-
<string name="pages_per_full_swipe_5">"5 страниц (отслеживать)"</string>
608-
<string name="pages_per_full_swipe_6">"6 страниц (отслеживать)"</string>
609-
<string name="pages_per_full_swipe_7">"7 страниц (отслеживать)"</string>
610-
<string name="pages_per_full_swipe_8">"8 страниц (отслеживать)"</string>
611-
<string name="pages_per_full_swipe_9">"9 страниц (отслеживать)"</string>
612-
<string name="pages_per_full_swipe_10">"10 страниц (отслеживать)"</string>
613-
<string name="pages_per_full_swipe_11">"11 страниц (отслеживать)"</string>
614-
<string name="pages_per_full_swipe_12">"12 страниц (отслеживать)"</string>
615-
<string name="pages_per_full_swipe_13">"13 страниц (отслеживать)"</string>
616-
<string name="pages_per_full_swipe_14">"14 страниц (отслеживать)"</string>
617-
<string name="pages_per_full_swipe_15">"15 страниц (отслеживать)"</string>
618-
<string name="pages_per_full_swipe_16">"16 страниц (отслеживать)"</string>
619-
<string name="pages_per_full_swipe_17">"17 страниц (отслеживать)"</string>
620-
<string name="pages_per_full_swipe_18">"18 страниц (отслеживать)"</string>
621-
<string name="pages_per_full_swipe_19">"19 страниц (отслеживать)"</string>
622-
<string name="pages_per_full_swipe_20">"20 страниц (отслеживать)"</string>
603+
<string name="pages_per_full_swipe_1">"1 страница (справа налево, не отслеживать)"</string>
604+
<string name="pages_per_full_swipe_2">"2 страницы (справа налево)"</string>
605+
<string name="pages_per_full_swipe_3">"3 страницы (справа налево)"</string>
606+
<string name="pages_per_full_swipe_4">"4 страницы (справа налево)"</string>
607+
<string name="pages_per_full_swipe_5">"5 страниц (справа налево)"</string>
608+
<string name="pages_per_full_swipe_6">"6 страниц (справа налево)"</string>
609+
<string name="pages_per_full_swipe_7">"7 страниц (справа налево)"</string>
610+
<string name="pages_per_full_swipe_8">"8 страниц (справа налево)"</string>
611+
<string name="pages_per_full_swipe_9">"9 страниц (справа налево)"</string>
612+
<string name="pages_per_full_swipe_10">"10 страниц (справа налево)"</string>
613+
<string name="pages_per_full_swipe_11">"11 страниц (справа налево)"</string>
614+
<string name="pages_per_full_swipe_12">"12 страниц (справа налево)"</string>
615+
<string name="pages_per_full_swipe_13">"13 страниц (справа налево)"</string>
616+
<string name="pages_per_full_swipe_14">"14 страниц (справа налево)"</string>
617+
<string name="pages_per_full_swipe_15">"15 страниц (справа налево)"</string>
618+
<string name="pages_per_full_swipe_16">"16 страниц (справа налево)"</string>
619+
<string name="pages_per_full_swipe_17">"17 страниц (справа налево)"</string>
620+
<string name="pages_per_full_swipe_18">"18 страниц (справа налево)"</string>
621+
<string name="pages_per_full_swipe_19">"19 страниц (справа налево)"</string>
622+
<string name="pages_per_full_swipe_20">"20 страниц (справа налево)"</string>
623+
<string name="pages_per_full_swipe_m1">"1 страница (слева направо, не отслеживать)"</string>
624+
<string name="pages_per_full_swipe_m2">"2 страницы (слева направо)"</string>
625+
<string name="pages_per_full_swipe_m3">"3 страницы (слева направо)"</string>
626+
<string name="pages_per_full_swipe_m4">"4 страницы (слева направо)"</string>
627+
<string name="pages_per_full_swipe_m5">"5 страниц (слева направо)"</string>
628+
<string name="pages_per_full_swipe_m6">"6 страниц (слева направо)"</string>
629+
<string name="pages_per_full_swipe_m7">"7 страниц (слева направо)"</string>
630+
<string name="pages_per_full_swipe_m8">"8 страниц (слева направо)"</string>
631+
<string name="pages_per_full_swipe_m9">"9 страниц (слева направо)"</string>
632+
<string name="pages_per_full_swipe_m10">"10 страниц (слева направо)"</string>
633+
<string name="pages_per_full_swipe_m11">"11 страниц (слева направо)"</string>
634+
<string name="pages_per_full_swipe_m12">"12 страниц (слева направо)"</string>
635+
<string name="pages_per_full_swipe_m13">"13 страниц (слева направо)"</string>
636+
<string name="pages_per_full_swipe_m14">"14 страниц (слева направо)"</string>
637+
<string name="pages_per_full_swipe_m15">"15 страниц (слева направо)"</string>
638+
<string name="pages_per_full_swipe_m16">"16 страниц (слева направо)"</string>
639+
<string name="pages_per_full_swipe_m17">"17 страниц (слева направо)"</string>
640+
<string name="pages_per_full_swipe_m18">"18 страниц (слева направо)"</string>
641+
<string name="pages_per_full_swipe_m19">"19 страниц (слева направо)"</string>
642+
<string name="pages_per_full_swipe_m20">"20 страниц (слева направо)"</string>
623643
<string name="options_app_ui_theme_hicontrast1">Контрастная белая</string>
624644
<string name="options_app_ui_theme_hicontrast2">Контрастная черная</string>
625645
<string name="save_settings_to_gd">Сохранить настройки на диск Google One</string>

android/res/values/arrays.xml

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,26 @@
121121
<item>@string/pages_per_full_swipe_18</item>
122122
<item>@string/pages_per_full_swipe_19</item>
123123
<item>@string/pages_per_full_swipe_20</item>
124+
<item>@string/pages_per_full_swipe_m1</item>
125+
<item>@string/pages_per_full_swipe_m2</item>
126+
<item>@string/pages_per_full_swipe_m3</item>
127+
<item>@string/pages_per_full_swipe_m4</item>
128+
<item>@string/pages_per_full_swipe_m5</item>
129+
<item>@string/pages_per_full_swipe_m6</item>
130+
<item>@string/pages_per_full_swipe_m7</item>
131+
<item>@string/pages_per_full_swipe_m8</item>
132+
<item>@string/pages_per_full_swipe_m9</item>
133+
<item>@string/pages_per_full_swipe_m10</item>
134+
<item>@string/pages_per_full_swipe_m11</item>
135+
<item>@string/pages_per_full_swipe_m12</item>
136+
<item>@string/pages_per_full_swipe_m13</item>
137+
<item>@string/pages_per_full_swipe_m14</item>
138+
<item>@string/pages_per_full_swipe_m15</item>
139+
<item>@string/pages_per_full_swipe_m16</item>
140+
<item>@string/pages_per_full_swipe_m17</item>
141+
<item>@string/pages_per_full_swipe_m18</item>
142+
<item>@string/pages_per_full_swipe_m19</item>
143+
<item>@string/pages_per_full_swipe_m20</item>
124144
</string-array>
125145

126146
<integer-array name="pages_per_full_swipe_values">
@@ -145,6 +165,26 @@
145165
<item>18</item>
146166
<item>19</item>
147167
<item>20</item>
168+
<item>-1</item>
169+
<item>-2</item>
170+
<item>-3</item>
171+
<item>-4</item>
172+
<item>-5</item>
173+
<item>-6</item>
174+
<item>-7</item>
175+
<item>-8</item>
176+
<item>-9</item>
177+
<item>-10</item>
178+
<item>-11</item>
179+
<item>-12</item>
180+
<item>-13</item>
181+
<item>-14</item>
182+
<item>-15</item>
183+
<item>-16</item>
184+
<item>-17</item>
185+
<item>-18</item>
186+
<item>-19</item>
187+
<item>-20</item>
148188
</integer-array>
149189

150190
<integer-array name="pages_per_full_swipe_add_infos">
@@ -169,5 +209,25 @@
169209
<item>0</item>
170210
<item>0</item>
171211
<item>0</item>
212+
<item>0</item>
213+
<item>0</item>
214+
<item>0</item>
215+
<item>0</item>
216+
<item>0</item>
217+
<item>0</item>
218+
<item>0</item>
219+
<item>0</item>
220+
<item>0</item>
221+
<item>0</item>
222+
<item>0</item>
223+
<item>0</item>
224+
<item>0</item>
225+
<item>0</item>
226+
<item>0</item>
227+
<item>0</item>
228+
<item>0</item>
229+
<item>0</item>
230+
<item>0</item>
231+
<item>0</item>
172232
</integer-array>
173233
</resources>

android/res/values/strings.xml

Lines changed: 40 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -680,26 +680,46 @@
680680
<string name="option_toolbar_buttons_more_1st">More, in the beginning</string>
681681
<string name="option_toolbar_buttons_both_1st">Both (toolbar and more), in the beginning</string>
682682
<string name="pages_per_full_swipe_off">"Off"</string>
683-
<string name="pages_per_full_swipe_1">"1 page (right to left)"</string>
684-
<string name="pages_per_full_swipe_2">"2 pages (track)"</string>
685-
<string name="pages_per_full_swipe_3">"3 pages (track)"</string>
686-
<string name="pages_per_full_swipe_4">"4 pages (track)"</string>
687-
<string name="pages_per_full_swipe_5">"5 pages (track)"</string>
688-
<string name="pages_per_full_swipe_6">"6 pages (track)"</string>
689-
<string name="pages_per_full_swipe_7">"7 pages (track)"</string>
690-
<string name="pages_per_full_swipe_8">"8 pages (track)"</string>
691-
<string name="pages_per_full_swipe_9">"9 pages (track)"</string>
692-
<string name="pages_per_full_swipe_10">"10 pages (track)"</string>
693-
<string name="pages_per_full_swipe_11">"11 pages (track)"</string>
694-
<string name="pages_per_full_swipe_12">"12 pages (track)"</string>
695-
<string name="pages_per_full_swipe_13">"13 pages (track)"</string>
696-
<string name="pages_per_full_swipe_14">"14 pages (track)"</string>
697-
<string name="pages_per_full_swipe_15">"15 pages (track)"</string>
698-
<string name="pages_per_full_swipe_16">"16 pages (track)"</string>
699-
<string name="pages_per_full_swipe_17">"17 pages (track)"</string>
700-
<string name="pages_per_full_swipe_18">"18 pages (track)"</string>
701-
<string name="pages_per_full_swipe_19">"19 pages (track)"</string>
702-
<string name="pages_per_full_swipe_20">"20 pages (track)"</string>
683+
<string name="pages_per_full_swipe_1">"1 page (right-to-left, don't track)"</string>
684+
<string name="pages_per_full_swipe_2">"2 pages (right-to-left)"</string>
685+
<string name="pages_per_full_swipe_3">"3 pages (right-to-left)"</string>
686+
<string name="pages_per_full_swipe_4">"4 pages (right-to-left)"</string>
687+
<string name="pages_per_full_swipe_5">"5 pages (right-to-left)"</string>
688+
<string name="pages_per_full_swipe_6">"6 pages (right-to-left)"</string>
689+
<string name="pages_per_full_swipe_7">"7 pages (right-to-left)"</string>
690+
<string name="pages_per_full_swipe_8">"8 pages (right-to-left)"</string>
691+
<string name="pages_per_full_swipe_9">"9 pages (right-to-left)"</string>
692+
<string name="pages_per_full_swipe_10">"10 pages (right-to-left)"</string>
693+
<string name="pages_per_full_swipe_11">"11 pages (right-to-left)"</string>
694+
<string name="pages_per_full_swipe_12">"12 pages (right-to-left)"</string>
695+
<string name="pages_per_full_swipe_13">"13 pages (right-to-left)"</string>
696+
<string name="pages_per_full_swipe_14">"14 pages (right-to-left)"</string>
697+
<string name="pages_per_full_swipe_15">"15 pages (right-to-left)"</string>
698+
<string name="pages_per_full_swipe_16">"16 pages (right-to-left)"</string>
699+
<string name="pages_per_full_swipe_17">"17 pages (right-to-left)"</string>
700+
<string name="pages_per_full_swipe_18">"18 pages (right-to-left)"</string>
701+
<string name="pages_per_full_swipe_19">"19 pages (right-to-left)"</string>
702+
<string name="pages_per_full_swipe_20">"20 pages (right-to-left)"</string>
703+
<string name="pages_per_full_swipe_m1">"1 page (left-to-right, don't track)"</string>
704+
<string name="pages_per_full_swipe_m2">"2 pages (left-to-right)"</string>
705+
<string name="pages_per_full_swipe_m3">"3 pages (left-to-right)"</string>
706+
<string name="pages_per_full_swipe_m4">"4 pages (left-to-right)"</string>
707+
<string name="pages_per_full_swipe_m5">"5 pages (left-to-right)"</string>
708+
<string name="pages_per_full_swipe_m6">"6 pages (left-to-right)"</string>
709+
<string name="pages_per_full_swipe_m7">"7 pages (left-to-right)"</string>
710+
<string name="pages_per_full_swipe_m8">"8 pages (left-to-right)"</string>
711+
<string name="pages_per_full_swipe_m9">"9 pages (left-to-right)"</string>
712+
<string name="pages_per_full_swipe_m10">"10 pages (left-to-right)"</string>
713+
<string name="pages_per_full_swipe_m11">"11 pages (left-to-right)"</string>
714+
<string name="pages_per_full_swipe_m12">"12 pages (left-to-right)"</string>
715+
<string name="pages_per_full_swipe_m13">"13 pages (left-to-right)"</string>
716+
<string name="pages_per_full_swipe_m14">"14 pages (left-to-right)"</string>
717+
<string name="pages_per_full_swipe_m15">"15 pages (left-to-right)"</string>
718+
<string name="pages_per_full_swipe_m16">"16 pages (left-to-right)"</string>
719+
<string name="pages_per_full_swipe_m17">"17 pages (left-to-right)"</string>
720+
<string name="pages_per_full_swipe_m18">"18 pages (left-to-right)"</string>
721+
<string name="pages_per_full_swipe_m19">"19 pages (left-to-right)"</string>
722+
<string name="pages_per_full_swipe_m20">"20 pages (left-to-right)"</string>
703723
<string name="txt_seen">seen:</string>
704724

705725
<string name="options_app_locale_add_info">If necessary, allows you to select a language other than the language installed in the system (System is selected by default)</string>

android/src/org/coolreader/crengine/ReaderView.java

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -774,7 +774,6 @@ public void copyToClipboard( String text ) {
774774
// private int selectionEndY = 0;
775775
private boolean doubleTapSelectionEnabled = false;
776776
private int mGesturePageFlipsPerFullSwipe;
777-
private boolean mIsPageMode;
778777
private int secondaryTapActionType = TAP_ACTION_TYPE_LONGPRESS;
779778
private boolean selectionModeActive = false;
780779

@@ -1118,31 +1117,35 @@ private boolean cancel() {
11181117
}
11191118

11201119
private void adjustStartValuesOnDrag(int swipeDistance, int distanceForFlip) {
1121-
if (Math.abs(swipeDistance) < distanceForFlip) {
1120+
if (Math.abs(swipeDistance) < Math.abs(distanceForFlip)) {
11221121
return; // Nothing to do
11231122
}
11241123
int direction = swipeDistance > 0 ? 1 : -1; // Left-to-right or right-to-left swipe?
11251124
int value = direction * distanceForFlip;
1126-
while (Math.abs(swipeDistance) >= distanceForFlip) {
1127-
if (mIsPageMode) {
1125+
Log.i(TAG, "adjustStartValuesOnDrag: initial start_x=" + start_x + ", swipeDistance=" + swipeDistance);
1126+
while (Math.abs(swipeDistance) >= Math.abs(distanceForFlip)) {
1127+
if (distanceForFlip > 0) {
11281128
start_x += value;
1129+
swipeDistance -= value;
11291130
} else {
1130-
start_y += value;
1131+
start_x -= value;
1132+
swipeDistance += value;
11311133
}
1132-
swipeDistance -= value;
1134+
Log.i(TAG, "adjustStartValuesOnDrag: start_x=" + start_x + ", swipeDistance=" + swipeDistance);
11331135
}
11341136
}
1135-
private void updatePageFlipTracking(final int x, final int y) {
1136-
final int swipeDistance = mIsPageMode ? x - start_x : y - start_y;
1137+
private void updatePageFlipTracking(final int x) {
1138+
final int swipeDistance = x - start_x;
11371139
final int distanceForFlip = surface.getWidth() / mGesturePageFlipsPerFullSwipe;
11381140
int pagesToFlip = swipeDistance / distanceForFlip;
11391141
if (pagesToFlip == 0) {
11401142
return; // Nothing to do
11411143
}
11421144
adjustStartValuesOnDrag(swipeDistance, distanceForFlip);
1143-
ReaderAction action = pagesToFlip > 0 ? ReaderAction.PAGE_DOWN : ReaderAction.PAGE_UP;
1145+
ReaderAction action = pagesToFlip > 0 ? ReaderAction.PAGE_UP : ReaderAction.PAGE_DOWN;
11441146
while (pagesToFlip != 0) {
11451147
onAction(action);
1148+
Log.i(TAG, "updatePageFlipTracking: " + action);
11461149
if (pagesToFlip > 0) {
11471150
pagesToFlip--;
11481151
} else {
@@ -1394,7 +1397,7 @@ public boolean onTouchEvent(MotionEvent event) {
13941397
state = STATE_DONE;
13951398
return cancel();
13961399
case STATE_FLIP_TRACKING:
1397-
updatePageFlipTracking(x, y);
1400+
updatePageFlipTracking(x);
13981401
state = STATE_DONE;
13991402
return cancel();
14001403
}
@@ -1451,7 +1454,8 @@ public boolean onTouchEvent(MotionEvent event) {
14511454
}
14521455
boolean isPageMode = mSettings.getInt(PROP_PAGE_VIEW_MODE, 1) == 1;
14531456
int dir = isPageMode ? x - start_x : y - start_y;
1454-
if (mGesturePageFlipsPerFullSwipe == 1) {
1457+
if (Math.abs(mGesturePageFlipsPerFullSwipe) == 1) {
1458+
dir *= mGesturePageFlipsPerFullSwipe; // Change sign of page flip direction according to user setting
14551459
if (pageFlipAnimationSpeedMs == 0 || DeviceInfo.EINK_SCREEN) {
14561460
// no animation
14571461
return performAction(dir < 0 ? ReaderAction.PAGE_DOWN : ReaderAction.PAGE_UP, false);
@@ -1460,9 +1464,9 @@ public boolean onTouchEvent(MotionEvent event) {
14601464
updateAnimation(x, y);
14611465
state = STATE_FLIPPING;
14621466
}
1463-
if (mGesturePageFlipsPerFullSwipe > 1) {
1467+
if (Math.abs(mGesturePageFlipsPerFullSwipe) > 1) {
14641468
state = STATE_FLIP_TRACKING;
1465-
updatePageFlipTracking(start_x, start_y);
1469+
updatePageFlipTracking(start_x);
14661470
}
14671471
return true;
14681472
case STATE_FLIPPING:
@@ -1472,7 +1476,7 @@ public boolean onTouchEvent(MotionEvent event) {
14721476
updateBrightnessControl(x, y);
14731477
return true;
14741478
case STATE_FLIP_TRACKING:
1475-
updatePageFlipTracking(x, y);
1479+
updatePageFlipTracking(x);
14761480
return true;
14771481
case STATE_WAIT_FOR_DOUBLE_CLICK:
14781482
return true;

0 commit comments

Comments
 (0)