Fragments

This commit is contained in:
Sergey Solovyev
2012-09-26 22:50:02 +04:00
parent 5371dbaac1
commit fe4ba72c7a
20 changed files with 266 additions and 154 deletions

View File

@@ -64,7 +64,7 @@ public class CalculatorActivity extends SherlockFragmentActivity implements Font
final CalculatorPreferences.Gui.Layout layout = CalculatorPreferences.Gui.layout.getPreferenceNoError(preferences);
activityHelper = CalculatorApplication.getInstance().createCalculatorHistoryHelper(layout.getLayoutId(), TAG);
activityHelper = CalculatorApplication.getInstance().createActivityHelper(layout.getLayoutId(), TAG);
activityHelper.logDebug("onCreate");
activityHelper.onCreate(this, savedInstanceState);

View File

@@ -111,7 +111,12 @@ public class CalculatorApplication extends android.app.Application {
}
@NotNull
public CalculatorActivityHelper createCalculatorHistoryHelper(int layoutResId, @NotNull String logTag) {
public CalculatorActivityHelper createActivityHelper(int layoutResId, @NotNull String logTag) {
return new CalculatorActivityHelperImpl(layoutResId, logTag);
}
@NotNull
public CalculatorFragmentHelper createFragmentHelper() {
return new CalculatorFragmentHelperImpl();
}
}

View File

@@ -0,0 +1,14 @@
package org.solovyev.android.calculator;
import android.support.v4.app.Fragment;
import org.jetbrains.annotations.NotNull;
/**
* User: serso
* Date: 9/26/12
* Time: 10:14 PM
*/
public interface CalculatorFragmentHelper {
boolean isPane(@NotNull Fragment fragment);
}

View File

@@ -0,0 +1,17 @@
package org.solovyev.android.calculator;
import android.support.v4.app.Fragment;
import org.jetbrains.annotations.NotNull;
/**
* User: serso
* Date: 9/26/12
* Time: 10:14 PM
*/
public class CalculatorFragmentHelperImpl implements CalculatorFragmentHelper {
@Override
public boolean isPane(@NotNull Fragment fragment) {
return fragment.getActivity() instanceof CalculatorActivity;
}
}

View File

@@ -15,6 +15,7 @@ import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import com.actionbarsherlock.app.SherlockListFragment;
import com.google.ads.AdView;
import org.jetbrains.annotations.NotNull;
@@ -43,6 +44,14 @@ import java.util.List;
*/
public abstract class AbstractCalculatorHistoryFragment extends SherlockListFragment implements CalculatorEventListener {
/*
**********************************************************************
*
* CONSTANTS
*
**********************************************************************
*/
@NotNull
private static final String TAG = "CalculatorHistoryFragment";
@@ -61,6 +70,14 @@ public abstract class AbstractCalculatorHistoryFragment extends SherlockListFrag
}
};
/*
**********************************************************************
*
* FIELDS
*
**********************************************************************
*/
@NotNull
private ArrayAdapter<CalculatorHistoryState> adapter;
@@ -68,10 +85,15 @@ public abstract class AbstractCalculatorHistoryFragment extends SherlockListFrag
@Nullable
private AdView adView;
@NotNull
private CalculatorFragmentHelper fragmentHelper;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
fragmentHelper = CalculatorApplication.getInstance().createFragmentHelper();
logDebug("onCreate");
}
@@ -92,6 +114,13 @@ public abstract class AbstractCalculatorHistoryFragment extends SherlockListFrag
logDebug("onViewCreated");
final TextView fragmentTitle = (TextView) view.findViewById(R.id.fragmentTitle);
if (!fragmentHelper.isPane(this)) {
fragmentTitle.setVisibility(View.GONE);
} else {
fragmentTitle.setText(this.getString(getFragmentTitleResId()).toUpperCase());
}
adapter = new HistoryArrayAdapter(this.getActivity(), getItemLayoutId(), R.id.history_item, new ArrayList<CalculatorHistoryState>());
setListAdapter(adapter);
@@ -143,7 +172,9 @@ public abstract class AbstractCalculatorHistoryFragment extends SherlockListFrag
adView = AdsController.getInstance().inflateAd(this.getActivity(), (ViewGroup)view.findViewById(R.id.ad_parent_view), R.id.ad_parent_view);
}
@Override
protected abstract int getFragmentTitleResId();
@Override
public void onDestroy() {
logDebug("onDestroy");

View File

@@ -1,39 +1,44 @@
/*
* Copyright (c) 2009-2011. Created by serso aka se.solovyev.
* For more information, please, contact se.solovyev@gmail.com
* or visit http://se.solovyev.org
*/
package org.solovyev.android.calculator.history;
import org.jetbrains.annotations.NotNull;
import org.solovyev.android.calculator.CalculatorLocatorImpl;
import org.solovyev.android.calculator.R;
import java.util.ArrayList;
import java.util.List;
/**
* User: serso
* Date: 12/18/11
* Time: 7:39 PM
*/
public class CalculatorHistoryFragment extends AbstractCalculatorHistoryFragment {
@Override
protected int getItemLayoutId() {
return R.layout.history;
}
@NotNull
@Override
protected List<CalculatorHistoryState> getHistoryItems() {
return new ArrayList<CalculatorHistoryState>(CalculatorLocatorImpl.getInstance().getHistory().getStates());
}
@Override
protected void clearHistory() {
CalculatorLocatorImpl.getInstance().getHistory().clear();
getAdapter().clear();
}
}
/*
* Copyright (c) 2009-2011. Created by serso aka se.solovyev.
* For more information, please, contact se.solovyev@gmail.com
* or visit http://se.solovyev.org
*/
package org.solovyev.android.calculator.history;
import org.jetbrains.annotations.NotNull;
import org.solovyev.android.calculator.CalculatorLocatorImpl;
import org.solovyev.android.calculator.R;
import java.util.ArrayList;
import java.util.List;
/**
* User: serso
* Date: 12/18/11
* Time: 7:39 PM
*/
public class CalculatorHistoryFragment extends AbstractCalculatorHistoryFragment {
@Override
protected int getFragmentTitleResId() {
return R.string.c_history;
}
@Override
protected int getItemLayoutId() {
return R.layout.history;
}
@NotNull
@Override
protected List<CalculatorHistoryState> getHistoryItems() {
return new ArrayList<CalculatorHistoryState>(CalculatorLocatorImpl.getInstance().getHistory().getStates());
}
@Override
protected void clearHistory() {
CalculatorLocatorImpl.getInstance().getHistory().clear();
getAdapter().clear();
}
}

View File

@@ -20,7 +20,7 @@ import org.solovyev.android.calculator.*;
public class CalculatorHistoryFragmentActivity extends SherlockFragmentActivity implements CalculatorEventListener {
@NotNull
private final CalculatorActivityHelper activityHelper = CalculatorApplication.getInstance().createCalculatorHistoryHelper(R.layout.main_empty, CalculatorHistoryFragmentActivity.class.getSimpleName());
private final CalculatorActivityHelper activityHelper = CalculatorApplication.getInstance().createActivityHelper(R.layout.main_empty, CalculatorHistoryFragmentActivity.class.getSimpleName());
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {

View File

@@ -1,39 +1,44 @@
/*
* Copyright (c) 2009-2011. Created by serso aka se.solovyev.
* For more information, please, contact se.solovyev@gmail.com
* or visit http://se.solovyev.org
*/
package org.solovyev.android.calculator.history;
import org.jetbrains.annotations.NotNull;
import org.solovyev.android.calculator.CalculatorLocatorImpl;
import org.solovyev.android.calculator.R;
import java.util.ArrayList;
import java.util.List;
/**
* User: serso
* Date: 12/18/11
* Time: 7:40 PM
*/
public class CalculatorSavedHistoryFragment extends AbstractCalculatorHistoryFragment {
@Override
protected int getItemLayoutId() {
return R.layout.saved_history;
}
@NotNull
@Override
protected List<CalculatorHistoryState> getHistoryItems() {
return new ArrayList<CalculatorHistoryState>(CalculatorLocatorImpl.getInstance().getHistory().getSavedHistory());
}
@Override
protected void clearHistory() {
CalculatorLocatorImpl.getInstance().getHistory().clearSavedHistory();
getAdapter().clear();
}
}
/*
* Copyright (c) 2009-2011. Created by serso aka se.solovyev.
* For more information, please, contact se.solovyev@gmail.com
* or visit http://se.solovyev.org
*/
package org.solovyev.android.calculator.history;
import org.jetbrains.annotations.NotNull;
import org.solovyev.android.calculator.CalculatorLocatorImpl;
import org.solovyev.android.calculator.R;
import java.util.ArrayList;
import java.util.List;
/**
* User: serso
* Date: 12/18/11
* Time: 7:40 PM
*/
public class CalculatorSavedHistoryFragment extends AbstractCalculatorHistoryFragment {
@Override
protected int getFragmentTitleResId() {
return R.string.c_saved_history;
}
@Override
protected int getItemLayoutId() {
return R.layout.saved_history;
}
@NotNull
@Override
protected List<CalculatorHistoryState> getHistoryItems() {
return new ArrayList<CalculatorHistoryState>(CalculatorLocatorImpl.getInstance().getHistory().getSavedHistory());
}
@Override
protected void clearHistory() {
CalculatorLocatorImpl.getInstance().getHistory().clearSavedHistory();
getAdapter().clear();
}
}