android/sdremote/res/layout/fragment_computers_list.xml | 2 android/sdremote/src/org/libreoffice/impressremote/communication/Timer.java | 31 + android/sdremote/src/org/libreoffice/impressremote/fragment/ComputerConnectionFragment.java | 94 +---- android/sdremote/src/org/libreoffice/impressremote/fragment/ComputersFragment.java | 160 ++++------ android/sdremote/src/org/libreoffice/impressremote/util/SavedStates.java | 2 5 files changed, 125 insertions(+), 164 deletions(-)
New commits: commit a5b4a547d55c23794f9b47cc194cfacab2e0e7d9 Author: Artur Dryomov <artur.dryo...@gmail.com> Date: Sun Sep 15 02:29:10 2013 +0300 Fix possible timer duplicates. Change-Id: I070e36c4a82ca245a641e53466cdaf10dd01e95c diff --git a/android/sdremote/src/org/libreoffice/impressremote/communication/Timer.java b/android/sdremote/src/org/libreoffice/impressremote/communication/Timer.java index 4e13910..937ccc5 100644 --- a/android/sdremote/src/org/libreoffice/impressremote/communication/Timer.java +++ b/android/sdremote/src/org/libreoffice/impressremote/communication/Timer.java @@ -45,24 +45,41 @@ public class Timer implements Runnable { return mTotalMinutes != 0; } + public int getMinutesLeft() { + return mTotalMinutes - mPassedMinutes; + } + + public boolean isTimeUp() { + return getMinutesLeft() <= 0; + } + public void start() { if (!isSet()) { return; } + tearDownTimerHandler(); + setUpTimerHandler(); + } + + private void tearDownTimerHandler() { + mTimerHandler.removeCallbacks(this); + } + + private void setUpTimerHandler() { mTimerHandler.postDelayed(this, TimeUnit.MINUTES.toMillis(UPDATE_PERIOD_IN_MINUTES)); } @Override public void run() { - updatePassedMinutes(); + increasePassedMinutes(); mTimerListener.onTimerUpdated(); start(); } - private void updatePassedMinutes() { + private void increasePassedMinutes() { mPassedMinutes++; } @@ -72,7 +89,7 @@ public class Timer implements Runnable { } public void pause() { - mTimerHandler.removeCallbacks(this); + tearDownTimerHandler(); } public void reset() { @@ -83,14 +100,6 @@ public class Timer implements Runnable { public void resume() { start(); } - - public boolean isTimeUp() { - return getMinutesLeft() <= 0; - } - - public int getMinutesLeft() { - return mTotalMinutes - mPassedMinutes; - } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ commit 10ca4e0b79725729bf866aba6ba99fd5cbee859e Author: Artur Dryomov <artur.dryo...@gmail.com> Date: Sun Sep 15 00:43:16 2013 +0300 Fix possible NPE. Well, try to fix them. Change-Id: I8f774d35a304367bbdd1778628a1224031355ed4 diff --git a/android/sdremote/src/org/libreoffice/impressremote/fragment/ComputersFragment.java b/android/sdremote/src/org/libreoffice/impressremote/fragment/ComputersFragment.java index 81e6ed9..5527ea4 100644 --- a/android/sdremote/src/org/libreoffice/impressremote/fragment/ComputersFragment.java +++ b/android/sdremote/src/org/libreoffice/impressremote/fragment/ComputersFragment.java @@ -167,6 +167,10 @@ public class ComputersFragment extends SherlockListFragment implements ServiceCo } private void loadComputers() { + if (!isVisible()) { + return; + } + if (getComputers().isEmpty()) { hideComputersList(); setUpProgressMessage(); @@ -225,6 +229,10 @@ public class ComputersFragment extends SherlockListFragment implements ServiceCo @Override public void run() { + if (!isVisible()) { + return; + } + if (!isShowingProgressMessageRequired()) { return; } commit 57e171b3933b8afca1ae4cdd63b87486f18161ba Author: Artur Dryomov <artur.dryo...@gmail.com> Date: Sun Sep 15 00:06:54 2013 +0300 Change the computers fragment to be more simple. Change-Id: I8acddd744e11aa3c29ba281b321a4e02347a1823 diff --git a/android/sdremote/res/layout/fragment_computers_list.xml b/android/sdremote/res/layout/fragment_computers_list.xml index c780bab..46cb106 100644 --- a/android/sdremote/res/layout/fragment_computers_list.xml +++ b/android/sdremote/res/layout/fragment_computers_list.xml @@ -8,7 +8,7 @@ <LinearLayout android:animateLayoutChanges="true" - android:id="@+id/container_progress" + android:id="@+id/layout_progress" android:orientation="vertical" android:gravity="center" android:paddingLeft="@dimen/padding_horizontal_progress_layout" diff --git a/android/sdremote/src/org/libreoffice/impressremote/fragment/ComputersFragment.java b/android/sdremote/src/org/libreoffice/impressremote/fragment/ComputersFragment.java index 7cd6033..81e6ed9 100644 --- a/android/sdremote/src/org/libreoffice/impressremote/fragment/ComputersFragment.java +++ b/android/sdremote/src/org/libreoffice/impressremote/fragment/ComputersFragment.java @@ -52,8 +52,6 @@ public class ComputersFragment extends SherlockListFragment implements ServiceCo WIFI, BLUETOOTH } - private Type mType; - private CommunicationService mCommunicationService; private BroadcastReceiver mIntentsReceiver; @@ -77,8 +75,6 @@ public class ComputersFragment extends SherlockListFragment implements ServiceCo public void onCreate(Bundle aSavedInstanceState) { super.onCreate(aSavedInstanceState); - mType = (Type) getArguments().getSerializable(Fragments.Arguments.TYPE); - setUpActionBar(); } @@ -95,13 +91,17 @@ public class ComputersFragment extends SherlockListFragment implements ServiceCo public void onViewStateRestored(Bundle aSavedInstanceState) { super.onViewStateRestored(aSavedInstanceState); - if (aSavedInstanceState == null) { + if (!isSavedInstanceValid(aSavedInstanceState)) { return; } loadProgressMessage(aSavedInstanceState); } + private boolean isSavedInstanceValid(Bundle aSavedInstanceState) { + return aSavedInstanceState != null; + } + private void loadProgressMessage(Bundle aSavedInstanceState) { boolean aProgressMessageDisplayed = aSavedInstanceState.getBoolean(SavedStates.Keys.PROGRESS_MESSAGE); @@ -110,6 +110,37 @@ public class ComputersFragment extends SherlockListFragment implements ServiceCo } } + private void showProgressMessage() { + TextView aProgressMessageView = getProgressMessageView(); + Animation aFadeInAnimation = AnimationUtils.loadAnimation(getActivity(), android.R.anim.fade_in); + + aProgressMessageView.setText(getProgressMessage()); + + aProgressMessageView.startAnimation(aFadeInAnimation); + aProgressMessageView.setVisibility(View.VISIBLE); + } + + private TextView getProgressMessageView() { + return (TextView) getView().findViewById(R.id.text_progress_message); + } + + private String getProgressMessage() { + switch (getType()) { + case WIFI: + return getString(R.string.message_search_wifi); + + case BLUETOOTH: + return getString(R.string.message_search_bluetooth); + + default: + return ""; + } + } + + private Type getType() { + return (Type) getArguments().getSerializable(Fragments.Arguments.TYPE); + } + @Override public void onActivityCreated(Bundle aSavedInstanceState) { super.onActivityCreated(aSavedInstanceState); @@ -132,22 +163,10 @@ public class ComputersFragment extends SherlockListFragment implements ServiceCo } private void startComputersSearch() { - if (!isServiceBound()) { - return; - } - mCommunicationService.startServersSearch(); } - private boolean isServiceBound() { - return mCommunicationService != null; - } - private void loadComputers() { - if (!isServiceBound()) { - return; - } - if (getComputers().isEmpty()) { hideComputersList(); setUpProgressMessage(); @@ -173,7 +192,7 @@ public class ComputersFragment extends SherlockListFragment implements ServiceCo } private boolean isComputerSupportsRequiredType(Server aComputer) { - switch (mType) { + switch (getType()) { case WIFI: return aComputer.getProtocol() == Server.Protocol.TCP; @@ -186,28 +205,18 @@ public class ComputersFragment extends SherlockListFragment implements ServiceCo } private void hideComputersList() { - showView(getProgressBarLayout()); + setCurrentView(R.id.layout_progress); } - private void showView(View aView) { - ViewAnimator aViewAnimator = getViewAnimator(); - - int aViewIndex = aViewAnimator.indexOfChild(aView); - int aCurrentViewIndex = aViewAnimator.getDisplayedChild(); + private void setCurrentView(int aViewId) { + ViewAnimator aViewAnimator = (ViewAnimator) getView().findViewById(R.id.view_animator); + View aView = getView().findViewById(aViewId); - if (aViewIndex == aCurrentViewIndex) { + if (aViewId == aViewAnimator.getCurrentView().getId()) { return; } - aViewAnimator.setDisplayedChild(aViewIndex); - } - - private ViewAnimator getViewAnimator() { - return (ViewAnimator) getView().findViewById(R.id.view_animator); - } - - private ViewGroup getProgressBarLayout() { - return (ViewGroup) getView().findViewById(R.id.container_progress); + aViewAnimator.setDisplayedChild(aViewAnimator.indexOfChild(aView)); } private void setUpProgressMessage() { @@ -216,58 +225,21 @@ public class ComputersFragment extends SherlockListFragment implements ServiceCo @Override public void run() { - if (!isAdded()) { + if (!isShowingProgressMessageRequired()) { return; } - if (isShowingProgressMessageRequired()) { - showProgressMessage(); - } + showProgressMessage(); } private boolean isShowingProgressMessageRequired() { return getProgressMessageView().getVisibility() == View.INVISIBLE; } - private TextView getProgressMessageView() { - return (TextView) getView().findViewById(R.id.text_progress_message); - } - - private void showProgressMessage() { - TextView aProgressMessageView = getProgressMessageView(); - Animation aFadeInAnimation = AnimationUtils.loadAnimation(getActivity(), android.R.anim.fade_in); - - aProgressMessageView.setText(getProgressMessage()); - - aProgressMessageView.startAnimation(aFadeInAnimation); - aProgressMessageView.setVisibility(View.VISIBLE); - } - - private String getProgressMessage() { - switch (mType) { - case WIFI: - return getString(R.string.message_search_wifi); - - case BLUETOOTH: - return getString(R.string.message_search_bluetooth); - - default: - return ""; - } - } - private void tearDownComputersAdapter() { setListAdapter(null); } - private void showComputersList() { - showView(getComputersList()); - } - - private ListView getComputersList() { - return (ListView) getView().findViewById(android.R.id.list); - } - private void setUpComputersAdapter() { if (isComputersAdapterExist()) { return; @@ -289,6 +261,15 @@ public class ComputersFragment extends SherlockListFragment implements ServiceCo getComputersAdapter().add(getComputers()); } + private void showComputersList() { + setCurrentView(android.R.id.list); + } + + @Override + public void onServiceDisconnected(ComponentName aComponentName) { + mCommunicationService = null; + } + @Override public void onStart() { super.onStart(); @@ -296,6 +277,10 @@ public class ComputersFragment extends SherlockListFragment implements ServiceCo registerIntentsReceiver(); setUpContextMenu(); + if (!isServiceBound()) { + return; + } + startComputersSearch(); loadComputers(); } @@ -380,6 +365,10 @@ public class ComputersFragment extends SherlockListFragment implements ServiceCo LocalBroadcastManager.getInstance(getActivity()).sendBroadcast(aIntent); } + private boolean isServiceBound() { + return mCommunicationService != null; + } + @Override public boolean onOptionsItemSelected(MenuItem aMenuItem) { switch (aMenuItem.getItemId()) { @@ -425,6 +414,10 @@ public class ComputersFragment extends SherlockListFragment implements ServiceCo public void onListItemClick(ListView aListView, View aView, int aPosition, long aId) { Server aComputer = getComputersAdapter().getItem(aPosition); + startConnectionActivity(aComputer); + } + + private void startConnectionActivity(Server aComputer) { Intent aIntent = Intents.buildComputerConnectionIntent(getActivity(), aComputer); startActivity(aIntent); } @@ -438,6 +431,10 @@ public class ComputersFragment extends SherlockListFragment implements ServiceCo unregisterIntentsReceiver(); } + private void stopComputersSearch() { + mCommunicationService.stopServersSearch(); + } + private void unregisterIntentsReceiver() { try { getBroadcastManager().unregisterReceiver(mIntentsReceiver); @@ -447,14 +444,6 @@ public class ComputersFragment extends SherlockListFragment implements ServiceCo } } - private void stopComputersSearch() { - if (!isServiceBound()) { - return; - } - - mCommunicationService.stopServersSearch(); - } - @Override public void onSaveInstanceState(Bundle aOutState) { super.onSaveInstanceState(aOutState); @@ -476,17 +465,8 @@ public class ComputersFragment extends SherlockListFragment implements ServiceCo } private void unbindService() { - if (!isServiceBound()) { - return; - } - getActivity().unbindService(this); } - - @Override - public void onServiceDisconnected(ComponentName aComponentName) { - mCommunicationService = null; - } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ commit a703824aaf4d1446bf65881702ed8e343e2b8399 Author: Artur Dryomov <artur.dryo...@gmail.com> Date: Sat Sep 14 23:42:46 2013 +0300 Change the connection fragment to be more simple. Change-Id: Ib9dcc70b87631cfdace00d5b9ba18f2cbdf0de2c diff --git a/android/sdremote/src/org/libreoffice/impressremote/fragment/ComputerConnectionFragment.java b/android/sdremote/src/org/libreoffice/impressremote/fragment/ComputerConnectionFragment.java index b1ddc76..72bf755 100644 --- a/android/sdremote/src/org/libreoffice/impressremote/fragment/ComputerConnectionFragment.java +++ b/android/sdremote/src/org/libreoffice/impressremote/fragment/ComputerConnectionFragment.java @@ -20,8 +20,6 @@ import android.support.v4.content.LocalBroadcastManager; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.widget.LinearLayout; -import android.widget.ProgressBar; import android.widget.TextView; import android.widget.ViewAnimator; @@ -82,19 +80,30 @@ public class ComputerConnectionFragment extends SherlockFragment implements Serv public void onViewStateRestored(Bundle aSavedInstanceState) { super.onViewStateRestored(aSavedInstanceState); - if (aSavedInstanceState == null) { + if (!isSavedInstanceValid(aSavedInstanceState)) { return; } - loadLayout(aSavedInstanceState); + loadCurrentView(aSavedInstanceState); loadPin(aSavedInstanceState); loadErrorMessage(aSavedInstanceState); } - private void loadLayout(Bundle aSavedInstanceState) { - int aLayoutIndex = aSavedInstanceState.getInt(SavedStates.Keys.LAYOUT_INDEX); + private boolean isSavedInstanceValid(Bundle aSavedInstanceState) { + return aSavedInstanceState != null; + } + + private void loadCurrentView(Bundle aSavedInstanceState) { + int aCurrentViewId = aSavedInstanceState.getInt(SavedStates.Keys.CURRENT_VIEW_ID); + + setCurrentView(aCurrentViewId); + } + + private void setCurrentView(int aViewId) { + ViewAnimator aViewAnimator = getViewAnimator(); + View aView = getView().findViewById(aViewId); - getViewAnimator().setDisplayedChild(aLayoutIndex); + aViewAnimator.setDisplayedChild(aViewAnimator.indexOfChild(aView)); } private ViewAnimator getViewAnimator() { @@ -142,10 +151,6 @@ public class ComputerConnectionFragment extends SherlockFragment implements Serv } private void connectComputer() { - if (!isServiceBound()) { - return; - } - if (!isComputerConnectionRequired()) { return; } @@ -153,16 +158,8 @@ public class ComputerConnectionFragment extends SherlockFragment implements Serv mCommunicationService.connectServer(getComputer()); } - private boolean isServiceBound() { - return mCommunicationService != null; - } - private boolean isComputerConnectionRequired() { - return getViewAnimator().getDisplayedChild() == getViewAnimator().indexOfChild(getProgressBar()); - } - - private ProgressBar getProgressBar() { - return (ProgressBar) getView().findViewById(R.id.progress_bar); + return getViewAnimator().getCurrentView().getId() == R.id.progress_bar; } private Server getComputer() { @@ -238,18 +235,7 @@ public class ComputerConnectionFragment extends SherlockFragment implements Serv private void setUpPinValidationInstructions(String aPin) { getPinTextView().setText(aPin); - showPinValidationLayout(); - } - - private void showPinValidationLayout() { - ViewAnimator aViewAnimator = getViewAnimator(); - LinearLayout aValidationLayout = getPinValidationLayout(); - - aViewAnimator.setDisplayedChild(aViewAnimator.indexOfChild(aValidationLayout)); - } - - private LinearLayout getPinValidationLayout() { - return (LinearLayout) getView().findViewById(R.id.layout_pin_validation); + setCurrentView(R.id.layout_pin_validation); } private void setUpPresentation() { @@ -265,7 +251,7 @@ public class ComputerConnectionFragment extends SherlockFragment implements Serv TextView aSecondaryMessageTextView = getSecondaryErrorMessageTextView(); aSecondaryMessageTextView.setText(buildSecondaryErrorMessage()); - showErrorMessageLayout(); + setCurrentView(R.id.layout_error_message); } private String buildSecondaryErrorMessage() { @@ -281,17 +267,6 @@ public class ComputerConnectionFragment extends SherlockFragment implements Serv } } - private void showErrorMessageLayout() { - ViewAnimator aViewAnimator = getViewAnimator(); - LinearLayout aMessageLayout = getErrorMessageLayout(); - - aViewAnimator.setDisplayedChild(aViewAnimator.indexOfChild(aMessageLayout)); - } - - private LinearLayout getErrorMessageLayout() { - return (LinearLayout) getView().findViewById(R.id.layout_error_message); - } - private void refreshActionBarMenu() { getSherlockActivity().supportInvalidateOptionsMenu(); } @@ -311,14 +286,18 @@ public class ComputerConnectionFragment extends SherlockFragment implements Serv return false; } - return getViewAnimator().getCurrentView().getId() == R.id.layout_error_message; + return getCurrentViewId() == R.id.layout_error_message; + } + + private int getCurrentViewId() { + return getViewAnimator().getCurrentView().getId(); } @Override public boolean onOptionsItemSelected(MenuItem aMenuItem) { switch (aMenuItem.getItemId()) { case R.id.menu_reconnect: - showProgressBar(); + setCurrentView(R.id.progress_bar); connectComputer(); refreshActionBarMenu(); return true; @@ -328,13 +307,6 @@ public class ComputerConnectionFragment extends SherlockFragment implements Serv } } - private void showProgressBar() { - ViewAnimator aViewAnimator = getViewAnimator(); - ProgressBar aProgressBar = getProgressBar(); - - aViewAnimator.setDisplayedChild(aViewAnimator.indexOfChild(aProgressBar)); - } - @Override public void onStop() { super.onStop(); @@ -355,15 +327,15 @@ public class ComputerConnectionFragment extends SherlockFragment implements Serv public void onSaveInstanceState(Bundle aOutState) { super.onSaveInstanceState(aOutState); - saveLayout(aOutState); + saveCurrentView(aOutState); savePin(aOutState); saveErrorMessage(aOutState); } - private void saveLayout(Bundle aOutState) { - int aLayoutIndex = getViewAnimator().getDisplayedChild(); + private void saveCurrentView(Bundle aOutState) { + int aCurrentViewId = getCurrentViewId(); - aOutState.putInt(SavedStates.Keys.LAYOUT_INDEX, aLayoutIndex); + aOutState.putInt(SavedStates.Keys.CURRENT_VIEW_ID, aCurrentViewId); } private void savePin(Bundle aOutState) { @@ -388,10 +360,6 @@ public class ComputerConnectionFragment extends SherlockFragment implements Serv } private void disconnectComputer() { - if (!isServiceBound()) { - return; - } - if (!isDisconnectRequired()) { return; } @@ -404,10 +372,6 @@ public class ComputerConnectionFragment extends SherlockFragment implements Serv } private void unbindService() { - if (!isServiceBound()) { - return; - } - getActivity().unbindService(this); } } diff --git a/android/sdremote/src/org/libreoffice/impressremote/util/SavedStates.java b/android/sdremote/src/org/libreoffice/impressremote/util/SavedStates.java index e3e37b2..682632c 100644 --- a/android/sdremote/src/org/libreoffice/impressremote/util/SavedStates.java +++ b/android/sdremote/src/org/libreoffice/impressremote/util/SavedStates.java @@ -16,8 +16,8 @@ public final class SavedStates { private Keys() { } + public static final String CURRENT_VIEW_ID = "CURRENT_VIEW_ID"; public static final String ERROR_MESSAGE = "ERROR_MESSAGE"; - public static final String LAYOUT_INDEX = "LAYOUT_INDEX"; public static final String MODE = "MODE"; public static final String PIN = "PIN"; public static final String PROGRESS_MESSAGE = "PROGRESS_MESSAGE"; _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits