| 1270 | } |
| 1271 | |
| 1272 | void onRotateTimer() |
| 1273 | { |
| 1274 | CRPropRef props = CRPocketBookDocView::instance->getProps(); |
| 1275 | int rotate_mode = props->getIntDef(PROP_POCKETBOOK_ROTATE_MODE, PB_ROTATE_MODE_180); |
| 1276 | int rotate_angle = props->getIntDef(PROP_POCKETBOOK_ROTATE_ANGLE, 2); |
| 1277 | _rotatetimerset = false; |
| 1278 | int cn = GetOrientation(); |
| 1279 | int x,y,z,rotatepercent; |
| 1280 | bool turn = false; |
| 1281 | ReadGSensor(&x,&y,&z); |
| 1282 | |
| 1283 | if (rotate_angle < 0) |
| 1284 | rotate_angle = 0; |
| 1285 | else if (rotate_angle > 10) |
| 1286 | rotate_angle = 10; |
| 1287 | rotatepercent = angles_measured[rotate_angle]; |
| 1288 | switch (cn) { |
| 1289 | case ROTATE0: |
| 1290 | case ROTATE180: |
| 1291 | turn = (abs(x) > rotatepercent); |
| 1292 | break; |
| 1293 | case ROTATE90: |
| 1294 | case ROTATE270: |
| 1295 | turn = (abs(y) > rotatepercent); |
| 1296 | break; |
| 1297 | |
| 1298 | } |
| 1299 | CRLog::trace("rotatepercent = %d, x = %d", rotatepercent, x); |
| 1300 | if (_lastturn != turn) { // only one page turn at a time! |
| 1301 | _lastturn = turn; |
| 1302 | if (turn) { |
| 1303 | if (rotate_mode >= PB_ROTATE_MODE_180_FAST_PREV_NEXT) { |
| 1304 | switch (cn) { |
| 1305 | case ROTATE0: |
| 1306 | turn = x < 0; |
| 1307 | break; |
| 1308 | case ROTATE90: |
| 1309 | turn = y < 0; |
| 1310 | break; |
| 1311 | case ROTATE270: |
| 1312 | turn = y > 0; |
| 1313 | break; |
| 1314 | case ROTATE180: |
| 1315 | turn = x > 0; |
| 1316 | break; |
| 1317 | } |
| 1318 | if (rotate_mode == PB_ROTATE_MODE_180_FAST_NEXT_PREV) |
| 1319 | turn = !turn; |
| 1320 | } |
| 1321 | if (turn) |
| 1322 | SendEvent(main_handler, EVT_NEXTPAGE, 0, 0); |
| 1323 | else |
| 1324 | SendEvent(main_handler, EVT_PREVPAGE, 0, 0); |
| 1325 | SetAutoPowerOff(0); |
| 1326 | SetAutoPowerOff(1); // reset auto-power-off timer! |
| 1327 | } |
| 1328 | } |
| 1329 | if (rotate_mode > PB_ROTATE_MODE_180_SLOW_PREV_NEXT) { |
no test coverage detected