This commit is contained in:
serso
2015-10-16 16:02:47 +02:00
parent d1aeb7f458
commit 821e3727f2
7 changed files with 247 additions and 5 deletions

View File

@@ -55,6 +55,8 @@ import org.solovyev.android.checkout.ProductTypes;
import org.solovyev.android.checkout.Products;
import org.solovyev.android.checkout.RobotmediaDatabase;
import org.solovyev.android.checkout.RobotmediaInventory;
import org.solovyev.android.plotter.Plot;
import org.solovyev.android.plotter.Plotter;
import org.solovyev.common.listeners.JEvent;
import org.solovyev.common.listeners.JEventListener;
import org.solovyev.common.listeners.JEventListeners;
@@ -120,6 +122,9 @@ public final class App {
@Nonnull
private static volatile ScreenMetrics screenMetrics;
@Nonnull
private static volatile Plotter plotter;
@Nonnull
private static final Languages languages = new Languages();
@@ -184,6 +189,7 @@ public final class App {
}
}
App.languages.init(App.preferences);
App.plotter = Plot.newPlotter(application);
App.initialized = true;
} else {
@@ -342,4 +348,9 @@ public final class App {
// Create and show the dialog.
dialogFragment.show(ft, fragmentTag);
}
@Nonnull
public static Plotter getPlotter() {
return plotter;
}
}

View File

@@ -23,6 +23,7 @@
package org.solovyev.android.calculator;
import android.support.v4.app.Fragment;
import org.solovyev.android.calculator.about.CalculatorAboutFragment;
import org.solovyev.android.calculator.about.CalculatorReleaseNotesFragment;
import org.solovyev.android.calculator.history.HistoryFragment;
@@ -31,10 +32,10 @@ import org.solovyev.android.calculator.math.edit.CalculatorFunctionsFragment;
import org.solovyev.android.calculator.math.edit.CalculatorOperatorsFragment;
import org.solovyev.android.calculator.math.edit.CalculatorVarsFragment;
import org.solovyev.android.calculator.matrix.CalculatorMatrixEditFragment;
import org.solovyev.android.calculator.plot.CalculatorPlotFragment;
import org.solovyev.android.calculator.plot.CalculatorPlotFunctionSettingsActivity;
import org.solovyev.android.calculator.plot.CalculatorPlotFunctionsActivity;
import org.solovyev.android.calculator.plot.CalculatorPlotRangeActivity;
import org.solovyev.android.calculator.plot.PlotterFragment;
import javax.annotation.Nonnull;
@@ -53,7 +54,7 @@ public enum CalculatorFragmentType {
variables(CalculatorVarsFragment.class, R.layout.vars_fragment, R.string.c_vars),
functions(CalculatorFunctionsFragment.class, R.layout.math_entities_fragment, R.string.c_functions),
operators(CalculatorOperatorsFragment.class, R.layout.math_entities_fragment, R.string.c_operators),
plotter(CalculatorPlotFragment.class, R.layout.cpp_plot_fragment, R.string.c_graph),
plotter(PlotterFragment.class, R.layout.cpp_plotter_fragment, R.string.c_graph),
plotter_functions(CalculatorPlotFunctionsActivity.CalculatorPlotFunctionsFragment.class, R.layout.cpp_plot_functions_fragment, R.string.cpp_plot_functions),
plotter_function_settings(CalculatorPlotFunctionSettingsActivity.CalculatorPlotFunctionSettingsFragment.class, R.layout.cpp_plot_function_settings_fragment, R.string.cpp_plot_function_settings),
plotter_range(CalculatorPlotRangeActivity.CalculatorPlotRangeFragment.class, R.layout.cpp_plot_range_fragment, R.string.cpp_plot_range),

View File

@@ -0,0 +1,141 @@
package org.solovyev.android.calculator.plot;
import android.content.Intent;
import android.os.Bundle;
import android.os.Parcelable;
import android.support.annotation.ColorInt;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import org.solovyev.android.calculator.App;
import org.solovyev.android.calculator.CalculatorFragment;
import org.solovyev.android.calculator.CalculatorFragmentType;
import org.solovyev.android.calculator.R;
import org.solovyev.android.calculator.preferences.PreferencesActivity;
import org.solovyev.android.plotter.PlotView;
import org.solovyev.android.plotter.Plotter;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public class PlotterFragment extends CalculatorFragment {
@Nonnull
private final Plotter plotter = App.getPlotter();
private PlotView plotView;
public PlotterFragment() {
super(CalculatorFragmentType.plotter);
}
@Override
public void onCreate(@Nullable Bundle in) {
super.onCreate(in);
setHasOptionsMenu(true);
}
@ColorInt
private int getBgColor() {
if (isPaneFragment()) {
return getBgColor(R.color.cpp_pane_bg_light, R.color.cpp_pane_bg);
} else {
return getBgColor(R.color.cpp_main_bg_light, R.color.cpp_main_bg);
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
final View view = super.onCreateView(inflater, container, savedInstanceState);
plotView = (PlotView) view.findViewById(R.id.plotview);
plotView.setPlotter(plotter);
plotView.setBackgroundColor(getBgColor());
if (savedInstanceState != null) {
final Parcelable plotviewState = savedInstanceState.getParcelable("plotview");
if (plotviewState != null) {
plotView.onRestoreInstanceState(plotviewState);
}
}
final View zoomOutButton = view.findViewById(R.id.zoom_out_button);
zoomOutButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
plotView.zoom(false);
}
});
final View zoom0Button = view.findViewById(R.id.zoom_0_button);
zoom0Button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
plotView.resetCamera();
plotView.resetZoom();
}
});
final View zoomInButton = view.findViewById(R.id.zoom_in_button);
zoomInButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
plotView.zoom(true);
}
});
final View plotModeButton = view.findViewById(R.id.plot_mode_button);
plotModeButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
plotter.set3d(!plotter.is3d());
}
});
return view;
}
@ColorInt
@SuppressWarnings("deprecation")
private int getBgColor(int lightColor, int darkColor) {
return getResources().getColor(App.getTheme().isLight() ? lightColor : darkColor);
}
@Override
public void onSaveInstanceState(@Nonnull Bundle out) {
super.onSaveInstanceState(out);
final Parcelable plotViewState = plotView.onSaveInstanceState();
out.putParcelable("plotview", plotViewState);
}
@Override
public void onPause() {
plotView.onPause();
super.onPause();
}
@Override
public void onResume() {
super.onResume();
plotView.onResume();
}
@Override
public void onCreateOptionsMenu(final Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.plot_menu, menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_plot_functions:
startActivity(new Intent(getActivity(), CalculatorPlotFunctionsActivity.class));
return true;
case R.id.menu_plot_settings:
PreferencesActivity.start(getActivity(), R.xml.preferences_plot, R.string.prefs_graph_screen_title);
return true;
}
return super.onOptionsItemSelected(item);
}
}