diff --git a/contrib/mobile/Android/src/org/geuz/onelab/Gmsh.java b/contrib/mobile/Android/src/org/geuz/onelab/Gmsh.java index 4ba89b2a5825e9099ca516555d59e05c5ba0c2d9..1499df3fb7f51a0a72894aadc8ae4312dc143253 100644 --- a/contrib/mobile/Android/src/org/geuz/onelab/Gmsh.java +++ b/contrib/mobile/Android/src/org/geuz/onelab/Gmsh.java @@ -35,7 +35,8 @@ public class Gmsh implements Parcelable { public native int numberOfAnimation(); public native int animationNext(); public native int animationPrev(); - + public native void setAnimation(int animation); + /** Java CLASS **/ private long ptr; private Handler handler; diff --git a/contrib/mobile/Android/src/org/geuz/onelab/ModelFragment.java b/contrib/mobile/Android/src/org/geuz/onelab/ModelFragment.java index b24245bb217d96b2cfbf899f5902b7c1be6123e7..c41922d46d32b8a8d27ff1d6e32d7452145e1d37 100644 --- a/contrib/mobile/Android/src/org/geuz/onelab/ModelFragment.java +++ b/contrib/mobile/Android/src/org/geuz/onelab/ModelFragment.java @@ -37,7 +37,7 @@ public class ModelFragment extends Fragment{ private GestureDetector _gestureDetector; private Timer _animation; private Handler _hideDelay; - private SeekBar _annimationStepper; + private SeekBar _animationStepper; final Runnable hideControlsRunnable = new Runnable() {public void run() {hideControlBar();}}; @@ -118,7 +118,19 @@ public class ModelFragment extends Fragment{ final ImageButton prevButton = (ImageButton)_controlBarLayout.findViewById(R.id.controlPrev); final ImageButton playPauseButton = (ImageButton)_controlBarLayout.findViewById(R.id.controlPlay); final ImageButton nextButton = (ImageButton)_controlBarLayout.findViewById(R.id.controlNext); - _annimationStepper = (SeekBar)_controlBarLayout.findViewById(R.id.controlStepper); + _animationStepper = (SeekBar)_controlBarLayout.findViewById(R.id.controlStepper); + _animationStepper.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { + + public void onStopTrackingTouch(SeekBar seekBar) {} // UNUSED Auto-generated method stub + public void onStartTrackingTouch(SeekBar seekBar) {} // UNUSED Auto-generated method stub + public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { + if(fromUser) { + postDelay(); + _gmsh.setAnimation(progress); + requestRender(); + } + } + }); _controlBarLayout.setEnabled(false); playPauseButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { @@ -126,11 +138,11 @@ public class ModelFragment extends Fragment{ if(((ImageButton)v).getContentDescription().equals("play")) { ((ImageButton)v).setContentDescription("pause"); ((ImageButton)v).setImageResource(android.R.drawable.ic_media_pause); - _annimationStepper.setMax(_gmsh.numberOfAnimation()); + _animationStepper.setMax(_gmsh.numberOfAnimation()); _animation = new Timer(); _animation.schedule(new TimerTask() { public void run() { - _annimationStepper.setProgress(_gmsh.animationNext()); + _animationStepper.setProgress(_gmsh.animationNext()); requestRender(); } }, 0, 500); prevButton.setEnabled(false); @@ -148,14 +160,14 @@ public class ModelFragment extends Fragment{ nextButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { postDelay(); - _annimationStepper.setProgress(_gmsh.animationNext()); + _animationStepper.setProgress(_gmsh.animationNext()); requestRender(); } }); prevButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { postDelay(); - _annimationStepper.setProgress(_gmsh.animationPrev()); + _animationStepper.setProgress(_gmsh.animationPrev()); requestRender(); } }); @@ -176,7 +188,7 @@ public class ModelFragment extends Fragment{ public void showControlBar() { if(getActivity() == null || ((MainActivity)getActivity()).isComputing() || !_gmsh.haveAnimation()) return; _controlBarLayout.setEnabled(true); - _annimationStepper.setMax(_gmsh.numberOfAnimation()); + _animationStepper.setMax(_gmsh.numberOfAnimation()-1); this.postDelay(); Animation bottomUp = AnimationUtils.loadAnimation(getActivity(), android.R.anim.fade_in); _controlBarLayout.setVisibility(View.VISIBLE); diff --git a/contrib/mobile/androidGModel.cpp b/contrib/mobile/androidGModel.cpp index 92ffcf899bc30bf397aee5c7094302774f65f1ae..3382d599b8bea8866f4f044fdaf00fedabb5cb64 100644 --- a/contrib/mobile/androidGModel.cpp +++ b/contrib/mobile/androidGModel.cpp @@ -320,4 +320,9 @@ JNIEXPORT jint JNICALL Java_org_geuz_onelab_Gmsh_animationPrev { return animation_prev(); } +JNIEXPORT void JNICALL Java_org_geuz_onelab_Gmsh_setAnimation + (JNIEnv *, jobject, jint animation) +{ + set_animation(animation); +} } diff --git a/contrib/mobile/androidGModel.h b/contrib/mobile/androidGModel.h index 991a21107160968ca0302dfbe7d4b2b80ea13d3d..4fc0462cfd5ea83be3a88ebab5f0a21d9639d5ea 100644 --- a/contrib/mobile/androidGModel.h +++ b/contrib/mobile/androidGModel.h @@ -161,6 +161,14 @@ JNIEXPORT jint JNICALL Java_org_geuz_onelab_Gmsh_animationNext JNIEXPORT jint JNICALL Java_org_geuz_onelab_Gmsh_animationPrev (JNIEnv *, jobject); +/* + * Class: org_geuz_onelab_Gmsh + * Method: setAnimation + * Signature: (I)V + */ +JNIEXPORT void JNICALL Java_org_geuz_onelab_Gmsh_setAnimation + (JNIEnv *, jobject, jint); + #ifdef __cplusplus } #endif diff --git a/contrib/mobile/drawContext.cpp b/contrib/mobile/drawContext.cpp index 3a158c326e2a070dcb840949bcee0e429cee962d..0399b43219a69f732c404407c76b51acabcff499 100644 --- a/contrib/mobile/drawContext.cpp +++ b/contrib/mobile/drawContext.cpp @@ -694,6 +694,16 @@ int number_of_animation() { return ret; } +void set_animation(int step) { + for(unsigned int i = 0; i < PView::list.size(); i++){ + PView * p = PView::list[i]; + if(p->getOptions()->visible){ + p->getOptions()->timeStep = step; + p->setChanged(true); + } + } +} + int animation_next() { int ret = 0; for(unsigned int i = 0; i < PView::list.size(); i++){ diff --git a/contrib/mobile/drawContext.h b/contrib/mobile/drawContext.h index a42a68757704b4f9ff54befec0a5062d10f1aad9..e800ae3501b51868b9f8a5e150776cd31eb84669 100644 --- a/contrib/mobile/drawContext.h +++ b/contrib/mobile/drawContext.h @@ -24,6 +24,7 @@ int onelab_cb(std::string); int animation_next(); int animation_prev(); int number_of_animation(); +void set_animation(int step); class drawContext{ private: