Android: fixed fl_beep to plat different sound for differen beep types, testing Doxygen to generate driver developer documentation

git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12965 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
This commit is contained in:
Matthias Melcher
2018-06-23 10:06:04 +00:00
parent 1690585b49
commit f827a9eaf3
2 changed files with 65 additions and 30 deletions
@@ -16,7 +16,7 @@
*/ */
#include "../../test/unittests.cxx" #include "../../test/button.cxx"
/* /*
@@ -43,20 +43,6 @@
- no support for dead-key entry - no support for dead-key entry
- no Shift-Tab - no Shift-Tab
test/unittest_simple_terminal.cxx
test/unittest_points.cxx
test/unittest_schemes.cxx
test/unittest_scrollbarsize.cxx
test/unittest_rects.cxx
test/unittest_lines.cxx
test/unittest_about.cxx
test/unittest_images.cxx
test/unittest_circles.cxx
test/unittest_symbol.cxx
test/unittest_text.cxx
test/unittest_viewport.cxx
test/unittests.cxx
* test/CubeMain.cxx : UNSUPPROTED - needs OpenGL * test/CubeMain.cxx : UNSUPPROTED - needs OpenGL
* test/CubeView.cxx : UNSUPPROTED - needs OpenGL * test/CubeView.cxx : UNSUPPROTED - needs OpenGL
* test/shape.cxx : UNSUPPROTED - needs OpenGL * test/shape.cxx : UNSUPPROTED - needs OpenGL
@@ -68,6 +54,17 @@ test/unittests.cxx
* test/glpuzzle.cxx : UNSUPPROTED - needs OpenGL * test/glpuzzle.cxx : UNSUPPROTED - needs OpenGL
* test/mandelbrot.cxx : UNSUPPORTED - needs Fluid * test/mandelbrot.cxx : UNSUPPORTED - needs Fluid
* test/keyboard.cxx : UNSUPPORTED - needs Fluid * test/keyboard.cxx : UNSUPPORTED - needs Fluid
* test/CubeViewUI.fl
* test/keyboard_ui.fl
* test/radio.fl
* test/tree.fl
* test/fast_slow.fl
* test/mandelbrot_ui.fl
* test/resize.fl
* test/valuators.fl
* test/inactive.fl
* test/preferences.fl
* test/tabs.fl
* test/cairo_test.cxx : UNSUPPORTED - needs Cairo * test/cairo_test.cxx : UNSUPPORTED - needs Cairo
* test/connect.cxx : UNSUPPORTED - Android is not Linux * test/connect.cxx : UNSUPPORTED - Android is not Linux
* test/tiled_image.cxx : UNSUPPORTED - X11 only * test/tiled_image.cxx : UNSUPPORTED - X11 only
@@ -31,6 +31,22 @@
#include <math.h> #include <math.h>
/**
* \cond AndroidDev
* \defgroup AndroidDeveloper Android Develoer Documentation
* @{
*/
/**
* \class Fl_Android_Screen_Driver
*
* Handle Android screen devices.
*
* \todo This calss is in an early development stage
*/
static void nothing() {} static void nothing() {}
void (*fl_unlock_function)() = nothing; void (*fl_unlock_function)() = nothing;
void (*fl_lock_function)() = nothing; void (*fl_lock_function)() = nothing;
@@ -147,16 +163,16 @@ int Fl_Android_Screen_Driver::handle_mouse_event(AInputQueue *queue, AInputEvent
if (AMotionEvent_getAction(event) == AMOTION_EVENT_ACTION_DOWN) { if (AMotionEvent_getAction(event) == AMOTION_EVENT_ACTION_DOWN) {
AInputQueue_finishEvent(queue, event, 1); AInputQueue_finishEvent(queue, event, 1);
Fl::e_is_click = 1; Fl::e_is_click = 1;
Fl_Android_Application::log_i("Mouse push %x %d at %d, %d", win, Fl::event_button(), Fl::event_x(), Fl::event_y()); // Fl_Android_Application::log_i("Mouse push %x %d at %d, %d", win, Fl::event_button(), Fl::event_x(), Fl::event_y());
if (win) Fl::handle(FL_PUSH, win); // do NOT send a push event into the "Desktop" if (win) Fl::handle(FL_PUSH, win); // do NOT send a push event into the "Desktop"
} else if (AMotionEvent_getAction(event) == AMOTION_EVENT_ACTION_MOVE) { } else if (AMotionEvent_getAction(event) == AMOTION_EVENT_ACTION_MOVE) {
AInputQueue_finishEvent(queue, event, 1); AInputQueue_finishEvent(queue, event, 1);
Fl_Android_Application::log_i("Mouse drag %x %d at %d, %d", win, Fl::event_button(), Fl::event_x(), Fl::event_y()); // Fl_Android_Application::log_i("Mouse drag %x %d at %d, %d", win, Fl::event_button(), Fl::event_x(), Fl::event_y());
if (win) Fl::handle(FL_DRAG, win); if (win) Fl::handle(FL_DRAG, win);
} else if (AMotionEvent_getAction(event) == AMOTION_EVENT_ACTION_UP) { } else if (AMotionEvent_getAction(event) == AMOTION_EVENT_ACTION_UP) {
AInputQueue_finishEvent(queue, event, 1); AInputQueue_finishEvent(queue, event, 1);
Fl::e_state = 0; Fl::e_state = 0;
Fl_Android_Application::log_i("Mouse release %x %d at %d, %d", win, Fl::event_button(), Fl::event_x(), Fl::event_y()); // Fl_Android_Application::log_i("Mouse release %x %d at %d, %d", win, Fl::event_button(), Fl::event_x(), Fl::event_y());
if (win) Fl::handle(FL_RELEASE, win); if (win) Fl::handle(FL_RELEASE, win);
} else { } else {
AInputQueue_finishEvent(queue, event, 0); AInputQueue_finishEvent(queue, event, 0);
@@ -283,9 +299,12 @@ double Fl_Android_Screen_Driver::wait(double time_to_wait)
return 0.0; return 0.0;
} }
/** /**
* On Android, we currently write into a memory buffer and copy * On Android, we currently write into a memory buffer and copy
* the content to the screen. * the content to the screen.
*
* @see Fl_Screen_Driver::flush()
*/ */
void Fl_Android_Screen_Driver::flush() void Fl_Android_Screen_Driver::flush()
{ {
@@ -297,6 +316,7 @@ void Fl_Android_Screen_Driver::flush()
} }
} }
// ---- timers ----------------------------------------------------------------- // ---- timers -----------------------------------------------------------------
@@ -383,7 +403,7 @@ void Fl_Android_Screen_Driver::repeat_timeout(double time, Fl_Timeout_Handler cb
timerIndex = nTimerData++; timerIndex = nTimerData++;
} }
// if that didn;t work either, we ran out of timers // if that didn't work either, we ran out of timers
if (timerIndex==-1) { if (timerIndex==-1) {
Fl::error("FLTK ran out of timer slots."); Fl::error("FLTK ran out of timer slots.");
return; return;
@@ -444,16 +464,25 @@ void Fl_Android_Screen_Driver::remove_timeout(Fl_Timeout_Handler cb, void *data)
} }
/**
* Play some system sound.
*
* This function plays some rather arbitrary system sounds.
*
* @param type
*
* @see Fl_Screen_Driver::beep(int)
* @see fl_beep(int)
*/
void Fl_Android_Screen_Driver::beep(int type) void Fl_Android_Screen_Driver::beep(int type)
{ {
// TODO: map FLTK sounds to Android sounds at https://developer.android.com/reference/android/media/ToneGenerator int androidSoundID = 93; // default to TONE_CDMA_ALERT_CALL_GUARD
int androidSoundID = 93; // TONE_CDMA_ALERT_CALL_GUARD
switch (type) { switch (type) {
case FL_BEEP_DEFAULT: case FL_BEEP_DEFAULT: androidSoundID = 92; break;
case FL_BEEP_MESSAGE: case FL_BEEP_MESSAGE: androidSoundID = 86; break;
case FL_BEEP_ERROR: case FL_BEEP_ERROR: androidSoundID = 87; break;
case FL_BEEP_QUESTION: case FL_BEEP_QUESTION: androidSoundID = 91; break;
case FL_BEEP_PASSWORD: case FL_BEEP_PASSWORD: androidSoundID = 95; break;
case FL_BEEP_NOTIFICATION: androidSoundID = 93; break; case FL_BEEP_NOTIFICATION: androidSoundID = 93; break;
} }
Fl_Android_Java java; Fl_Android_Java java;
@@ -473,11 +502,12 @@ void Fl_Android_Screen_Driver::beep(int type)
jmethodID method_start_tone = java.env()->GetMethodID( jmethodID method_start_tone = java.env()->GetMethodID(
class_tone_generator, class_tone_generator,
"startTone", "startTone",
"(I)Z"); "(II)Z");
java.env()->CallBooleanMethod( java.env()->CallBooleanMethod(
toneGeneratorObj, method_start_tone, toneGeneratorObj, method_start_tone,
androidSoundID); androidSoundID,
1000);
java.env()->DeleteLocalRef(class_tone_generator); java.env()->DeleteLocalRef(class_tone_generator);
java.env()->DeleteLocalRef(toneGeneratorObj); java.env()->DeleteLocalRef(toneGeneratorObj);
@@ -485,6 +515,7 @@ void Fl_Android_Screen_Driver::beep(int type)
} }
/** /**
* Get the current mouse coordinates. * Get the current mouse coordinates.
* *
@@ -493,7 +524,8 @@ void Fl_Android_Screen_Driver::beep(int type)
* touch screen, this makes no sense at all, which is why we return the center * touch screen, this makes no sense at all, which is why we return the center
* of the screen for now. * of the screen for now.
* *
* TODO: rethink the dialog positioning scheme for touch devices. * \todo rethink the dialog positioning scheme for touch devices.
* \fixme this method assumes a fixed screen resolution
* *
* @param [out] x * @param [out] x
* @param [out] y * @param [out] y
@@ -522,6 +554,12 @@ void Fl_Android_Screen_Driver::grab(Fl_Window* win)
} }
/**
* \}
* \endcond AndroidDev
*/
// //
// End of "$Id$". // End of "$Id$".
// //