Kaydet (Commit) 57e171b3 authored tarafından Artur Dryomov's avatar Artur Dryomov

Change the computers fragment to be more simple.

Change-Id: I8acddd744e11aa3c29ba281b321a4e02347a1823
üst a703824a
......@@ -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"
......
......@@ -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();
}
}
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: */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment