[Libreoffice-commits] core.git: android/sdremote

Ota Chasák chasak.ota at gmail.com
Wed Apr 24 08:45:45 PDT 2013


 android/sdremote/Makefile                                                    |    2 
 android/sdremote/res/layout/presentation_clockbar.xml                        |   17 -
 android/sdremote/res/values/strings.xml                                      |   10 
 android/sdremote/src/org/libreoffice/impressremote/PresentationActivity.java |  136 +++++-----
 4 files changed, 97 insertions(+), 68 deletions(-)

New commits:
commit b6ab91d55e1bfb487abba2b15589a1988178ee88
Author: Ota Chasák <chasak.ota at gmail.com>
Date:   Wed Apr 24 15:59:20 2013 +0100

    fdo#60791 - fix android remote count-down / clock.

diff --git a/android/sdremote/Makefile b/android/sdremote/Makefile
index 26acfd8..78b89eb 100644
--- a/android/sdremote/Makefile
+++ b/android/sdremote/Makefile
@@ -13,7 +13,7 @@ endif
 all: properties translations.done
 	mkdir -p ../abs-lib/libs
 	cp $(ANDROID_SDK_HOME)/extras/android/support/v4/android-support-v4.jar ../abs-lib/libs
-	$(ANT) -quiet debug
+	$(ANT) debug
 
 properties:
 	echo sdk.dir=$(ANDROID_SDK_HOME) >local.properties
diff --git a/android/sdremote/res/layout/presentation_clockbar.xml b/android/sdremote/res/layout/presentation_clockbar.xml
index 4d5d028..98b913c 100644
--- a/android/sdremote/res/layout/presentation_clockbar.xml
+++ b/android/sdremote/res/layout/presentation_clockbar.xml
@@ -73,15 +73,20 @@
         android:background="#DD4D4D4D"
         android:orientation="horizontal" >
 
-        <EditText
-            android:id="@+id/clockbar_countdown_time"
+        <AutoCompleteTextView android:id="@+id/countdown_time"
+            android:layout_width="wrap_content"
+	    android:layout_height="match_parent"
+	    android:layout_weight="1"
+	    android:completionThreshold="1" />
+
+	<Button
+            android:id="@+id/clockbar_countdown_reset"
             android:layout_width="0dip"
             android:layout_height="match_parent"
             android:layout_weight="1"
-            android:ems="10"
-            android:inputType="time"
-            android:text="03:00" >
-        </EditText>
+            android:background="#00000000"
+            android:text="@string/clock_timer_reset"
+            android:textColor="#FFFFFF" />
 
         <Button
             android:id="@+id/clockbar_countdown_button"
diff --git a/android/sdremote/res/values/strings.xml b/android/sdremote/res/values/strings.xml
index 84edffc..3500aee 100644
--- a/android/sdremote/res/values/strings.xml
+++ b/android/sdremote/res/values/strings.xml
@@ -54,5 +54,13 @@
     <string name="reconnect_description1">Your connection has been dropped.</string>
     <string name="reconnect_description2">Please try to reconnect</string>
     <string name="wifiAlertMsg">This is still an experimental feature. You need to \"enable experimental features\" in \"Preference\"-\"LibreOffice\"-\"Advanced\" on your computer. \nThe use over Bluetooth is recommanded.</string>
-
+    <string-array name="countdown_values">
+        <item >5:00</item>
+        <item >10:00</item>
+        <item >15:00</item>
+        <item >20:00</item>
+        <item >30:00</item>
+        <item >45:00</item>
+    </string-array>
+    <string name="wrong_time_format">You have entered wrong time format</string>
 </resources>
diff --git a/android/sdremote/src/org/libreoffice/impressremote/PresentationActivity.java b/android/sdremote/src/org/libreoffice/impressremote/PresentationActivity.java
index 51e590f..ab081df 100644
--- a/android/sdremote/src/org/libreoffice/impressremote/PresentationActivity.java
+++ b/android/sdremote/src/org/libreoffice/impressremote/PresentationActivity.java
@@ -23,6 +23,7 @@ import android.content.Intent;
 import android.content.IntentFilter;
 import android.content.ServiceConnection;
 import android.content.SharedPreferences;
+import android.content.SharedPreferences.Editor;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.IBinder;
@@ -37,10 +38,11 @@ import android.view.LayoutInflater;
 import android.view.MotionEvent;
 import android.view.View;
 import android.view.View.OnClickListener;
+import android.widget.ArrayAdapter;
+import android.widget.AutoCompleteTextView;
 import android.widget.Button;
-import android.widget.EditText;
 import android.widget.FrameLayout;
-import android.widget.TextView;
+import android.widget.Toast;
 import android.widget.ToggleButton;
 
 import com.actionbarsherlock.app.ActionBar;
@@ -205,8 +207,7 @@ public class PresentationActivity extends SherlockFragmentActivity {
     }
 
     private class ActionBarManager implements OnClickListener,
-                    FragmentManager.OnBackStackChangedListener,
-                    TextView.OnEditorActionListener {
+                    FragmentManager.OnBackStackChangedListener {
 
         private Handler timerHandler = new Handler();
 
@@ -226,8 +227,12 @@ public class PresentationActivity extends SherlockFragmentActivity {
 
         // ------- COUNTDOWN BAR
         private View mCountdownBar;
-        private EditText mCountdownEntry;
         private Button mCountdownButton;
+        private Button mCountdownButtonReset;
+        private AutoCompleteTextView mCountDownTime;
+
+        private SharedPreferences prefs;
+        private static final String COUNTDOWN_KEY = "countdownTime";
 
         private String aTimeFormat = getResources().getString(
                         R.string.actionbar_timeformat);
@@ -305,13 +310,22 @@ public class PresentationActivity extends SherlockFragmentActivity {
             // Countdown bar
             mCountdownBar = mOuterLayout
                             .findViewById(R.id.clockbar_countdownbar);
-
-            mCountdownEntry = (EditText) mCountdownBar
-                            .findViewById(R.id.clockbar_countdown_time);
             mCountdownButton = (Button) mCountdownBar
                             .findViewById(R.id.clockbar_countdown_button);
+            mCountdownButton.setTag(Boolean.valueOf(false));
+            mCountdownButtonReset = (Button) mCountdownBar.findViewById(R.id.clockbar_countdown_reset);
+            mCountdownButtonReset.setTag(Boolean.valueOf(false));
+
+            prefs = PreferenceManager.getDefaultSharedPreferences(mCountdownBar.getContext());
+
+            String[] entries = getResources().getStringArray(R.array.countdown_values);
+            String savedTime = prefs.getString(COUNTDOWN_KEY, entries[0]);
+            mCountDownTime = (AutoCompleteTextView) mCountdownBar.findViewById(R.id.countdown_time);
+            mCountDownTime.setAdapter(new ArrayAdapter<String>(mCountdownBar.getContext(), android.R.layout.simple_dropdown_item_1line, entries));
+            mCountDownTime.setText(savedTime);
+
             mCountdownButton.setOnClickListener(this);
-            mCountdownEntry.setOnEditorActionListener(this);
+            mCountdownButtonReset.setOnClickListener(this);
 
             updateClockBar();
             hidePopups();
@@ -324,23 +338,6 @@ public class PresentationActivity extends SherlockFragmentActivity {
             }
             mClockBar_clockButton.setChecked(!mTimerOn);
 
-            //            FrameLayout.LayoutParams aParams = (LayoutParams) mCountdownBar
-            //                            .getLayoutParams();
-            //            aParams.topMargin = mClockBar.getBottom();
-            //            //            aParams.height = mClockBar.getHeight();
-            //            //            aParams.bottomMargin = aParams.topMargin + aParams.height;
-            //            //            aParams.leftMargin = 100;
-            //            mCountdownBar.setLayoutParams(aParams);
-            //            mCountdownBar.setPadding(0, mClockBar.getBottom(), 0, 0);
-            //            mStopwatchBar.setPadding(0, mClockBar.getBottom(), 0, 0);
-            //            //            mCountdownBar.requestLayout();
-            //            //            mOuterLayout.requestLayout();
-            //            //            mOuterLayout.invalidate();
-            //            //            aParams = (LayoutParams) mStopwatchBar.getLayoutParams();
-            //            //            aParams.topMargin = mClockBar.getHeight();
-            //            //            mOuterLayout.invalidate();
-            //            //            mStopwatchBar.setY(mClockBar.getHeight());
-
             boolean aIsCountdown = mCommunicationService.getSlideShow()
                             .getTimer().isCountdown();
             // Stopwatch
@@ -368,13 +365,23 @@ public class PresentationActivity extends SherlockFragmentActivity {
             mCountdownBar.bringToFront();
             if (aCountdownMode) {
                 Timer aTimer = mCommunicationService.getSlideShow().getTimer();
-                if (aTimer.isRunning()) {
+                boolean resetClicked = (Boolean) mCountdownButtonReset.getTag();
+                boolean countdownButtonClicked = (Boolean) mCountdownButton.getTag();
+                if (aTimer.isRunning() && countdownButtonClicked) {//start or resume clicked
                     mCountdownButton.setText(R.string.clock_timer_pause);
-                } else {
+                    mCountdownButton.setTag(Boolean.valueOf(false));
+                }else if(resetClicked){//reset clicked
+                    mCountdownButton.setText(R.string.clock_timer_start);
+                    mCountdownButtonReset.setTag(Boolean.valueOf(false));
+                } else if(!aTimer.isRunning() && countdownButtonClicked){//pause clicked
                     mCountdownButton.setText(R.string.clock_timer_resume);
+                    mCountdownButton.setTag(Boolean.valueOf(false));
+                }else if(!aTimer.isRunning()){
+                    mCountdownButton.setText(R.string.clock_timer_start);
                 }
             }
 
+
         }
 
         private Runnable timerUpdateRunnable = new Runnable() {
@@ -468,55 +475,64 @@ public class PresentationActivity extends SherlockFragmentActivity {
             } else if (aSource == mCountdownButton) {
                 if (aTimer.isRunning()) {
                     aTimer.stopTimer();
+                    mCountdownButton.setTag(Boolean.valueOf(true));
+                    updateClockBar();
                 } else {
-                    aTimer.startTimer();
+                    try {
+                        String time = mCountDownTime.getText().toString();
+                        long aTime = this.validateDate(time);
+                        Editor editor = prefs.edit();
+                        editor.putString(COUNTDOWN_KEY, time);
+                        editor.commit();
+                        aTimer.setCountdownTime(aTime);
+                        aTimer.startTimer();
+                        mCountdownButton.setTag(Boolean.valueOf(true));
+                        updateClockBar();
+                    } catch (ParseException e) {
+                        Toast.makeText(mCountDownTime.getContext(), R.string.wrong_time_format, Toast.LENGTH_LONG).show();
+                    }
                 }
+            }else if(aSource == mCountdownButtonReset){
+                aTimer.reset();
+                mCountdownButtonReset.setTag(Boolean.valueOf(true));
                 updateClockBar();
             }
 
         }
 
-        @Override
-        public void onBackStackChanged() {
-            if (getSupportFragmentManager().getBackStackEntryCount() == 0) {
-                mThumbnailButton.setChecked(false);
+        /*
+         *
+         * @param timeText
+         * @return timeText in millis, or throws ParseException
+         * @throws ParseException - if timeText is not valid time
+         */
+        private long validateDate(String timeText) throws ParseException {
+            long aTime = 0;
+            try {
+                SimpleDateFormat aFormat = new SimpleDateFormat("HH:mm:ss");
+                aFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
+                aTime = aFormat.parse(timeText).getTime();
+            } catch (ParseException e) {
+            }
+            if (aTime == 0) {
+                SimpleDateFormat aFormat = new SimpleDateFormat("mm:ss");
+                aFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
+                aTime = aFormat.parse(timeText).getTime();
             }
+            return aTime;
         }
 
         @Override
-        public boolean onEditorAction(TextView tv, int aID, KeyEvent aEvent) {
-            if (aEvent != null && aEvent.getKeyCode() == KeyEvent.KEYCODE_ENTER) {
-
-                long aTime = 0;
-                try {
-                    SimpleDateFormat aFormat = new SimpleDateFormat("HH:mm:ss");
-                    aFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
-                    aTime = aFormat.parse(mCountdownEntry.getText().toString())
-                                    .getTime();
-                } catch (ParseException e) {
-                }
-                if (aTime == 0) {
-                    try {
-                        SimpleDateFormat aFormat = new SimpleDateFormat("mm:ss");
-                        aFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
-                        aTime = aFormat.parse(
-                                        mCountdownEntry.getText().toString())
-                                        .getTime();
-                    } catch (ParseException e) {
-                    }
-                }
-                mCommunicationService.getSlideShow().getTimer()
-                                .setCountdownTime(aTime);
-                return true;
+        public void onBackStackChanged() {
+            if (getSupportFragmentManager().getBackStackEntryCount() == 0) {
+                mThumbnailButton.setChecked(false);
             }
-            return false;
         }
     }
 
-    /**
+    /*
      * Intermediate layout that catches all touches, used in order to hide
      * the clock menu as appropriate.
-     *
      */
     public static class InterceptorLayout extends FrameLayout {
 


More information about the Libreoffice-commits mailing list