Tablet support

This commit is contained in:
serso
2016-02-22 15:12:48 +01:00
parent 282d17ad1c
commit a68e08201f
17 changed files with 292 additions and 79 deletions

View File

@@ -47,6 +47,9 @@ import org.solovyev.android.calculator.variables.VariablesFragment;
import org.solovyev.common.msg.MessageType;
import org.solovyev.common.text.Strings;
import jscl.math.Generic;
import jscl.math.function.Constant;
import java.util.Set;
import javax.annotation.Nonnull;
@@ -54,9 +57,6 @@ import javax.annotation.Nullable;
import javax.inject.Inject;
import javax.inject.Singleton;
import jscl.math.Generic;
import jscl.math.function.Constant;
@Singleton
public final class ActivityLauncher implements CalculatorEventListener {
@@ -150,11 +150,11 @@ public final class ActivityLauncher implements CalculatorEventListener {
}
public void showHistory() {
show(getContext(), HistoryActivity.class);
show(getContext(), HistoryActivity.getClass(getContext()));
}
public void showSettings() {
show(getContext(), PreferencesActivity.class);
show(getContext(), PreferencesActivity.getClass(getContext()));
}
public void showWidgetSettings() {
@@ -163,11 +163,11 @@ public final class ActivityLauncher implements CalculatorEventListener {
}
public void showOperators() {
show(getContext(), OperatorsActivity.class);
show(getContext(), OperatorsActivity.getClass(getContext()));
}
public void showAbout() {
show(getContext(), AboutActivity.class);
show(getContext(), AboutActivity.getClass(getContext()));
}
public void openFacebook() {
@@ -239,11 +239,11 @@ public final class ActivityLauncher implements CalculatorEventListener {
}
public void showFunctions() {
show(getContext(), FunctionsActivity.class);
show(getContext(), FunctionsActivity.getClass(getContext()));
}
public void showVariables() {
show(getContext(), VariablesActivity.class);
show(getContext(), VariablesActivity.getClass(getContext()));
}
public void openApp() {

View File

@@ -22,6 +22,8 @@
package org.solovyev.android.calculator;
import static org.solovyev.android.calculator.App.cast;
import android.app.Activity;
import android.app.KeyguardManager;
import android.content.Context;
@@ -29,11 +31,9 @@ import android.content.SharedPreferences;
import android.content.res.Configuration;
import android.graphics.Color;
import android.graphics.Typeface;
import android.os.Bundle;
import android.support.annotation.DrawableRes;
import android.support.annotation.LayoutRes;
import android.support.design.widget.FloatingActionButton;
import android.support.v4.app.Fragment;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
@@ -41,8 +41,7 @@ import android.util.DisplayMetrics;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import butterknife.Bind;
import butterknife.ButterKnife;
import org.solovyev.android.Activities;
import org.solovyev.android.Check;
import org.solovyev.android.Views;
@@ -51,12 +50,12 @@ import org.solovyev.android.calculator.language.Language;
import org.solovyev.android.calculator.language.Languages;
import org.solovyev.android.calculator.view.Tabs;
import butterknife.Bind;
import butterknife.ButterKnife;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import javax.inject.Inject;
import javax.inject.Named;
import static org.solovyev.android.calculator.App.cast;
public class ActivityUi {
@@ -157,10 +156,6 @@ public class ActivityUi {
App.getLanguages().updateContextLocale(activity, false);
if (activity instanceof CalculatorEventListener) {
Locator.getInstance().getCalculator().addCalculatorEventListener((CalculatorEventListener) activity);
}
activity.setContentView(layoutId);
ButterKnife.bind(this, activity);
@@ -189,22 +184,6 @@ public class ActivityUi {
public void onDestroy() {
}
public void addTab(@Nonnull Class<? extends Fragment> fragmentClass,
@Nullable Bundle fragmentArgs,
int title) {
addTab(fragmentClass, fragmentArgs, activity.getString(title));
}
public void addTab(@Nonnull Class<? extends Fragment> fragmentClass,
@Nullable Bundle fragmentArgs,
@Nonnull CharSequence title) {
tabs.addTab(fragmentClass, fragmentArgs, title);
}
public void addTab(@Nonnull FragmentTab tab, @Nullable Bundle fragmentArgs) {
addTab(tab.type, fragmentArgs, tab.title);
}
@Nonnull
public Language getLanguage() {
return language;

View File

@@ -41,8 +41,14 @@ import android.util.SparseArray;
import android.view.ContextThemeWrapper;
import org.solovyev.android.Check;
import org.solovyev.android.calculator.about.AboutActivity;
import org.solovyev.android.calculator.functions.FunctionsActivity;
import org.solovyev.android.calculator.history.HistoryActivity;
import org.solovyev.android.calculator.language.Languages;
import org.solovyev.android.calculator.math.MathType;
import org.solovyev.android.calculator.operators.OperatorsActivity;
import org.solovyev.android.calculator.preferences.PreferencesActivity;
import org.solovyev.android.calculator.variables.VariablesActivity;
import org.solovyev.android.calculator.wizard.WizardActivity;
import org.solovyev.android.prefs.BooleanPreference;
import org.solovyev.android.prefs.IntegerPreference;
@@ -334,7 +340,24 @@ public final class Preferences {
if (context instanceof WizardActivity) {
return wizardTheme;
}
final boolean tablet = context.getResources().getBoolean(R.bool.cpp_tablet);
if (context instanceof FunctionsActivity.Dialog) {
return dialogTheme;
}
if (context instanceof PreferencesActivity.Dialog) {
return dialogTheme;
}
if (context instanceof VariablesActivity.Dialog) {
return dialogTheme;
}
if (context instanceof OperatorsActivity.Dialog) {
return dialogTheme;
}
if (context instanceof HistoryActivity.Dialog) {
return dialogTheme;
}
if (context instanceof AboutActivity.Dialog) {
return dialogTheme;
}
return theme;
}

View File

@@ -22,14 +22,28 @@
package org.solovyev.android.calculator.about;
import android.content.Context;
import android.support.annotation.NonNull;
import org.solovyev.android.calculator.BaseActivity;
import org.solovyev.android.calculator.FragmentTab;
import org.solovyev.android.calculator.R;
import org.solovyev.android.calculator.view.Tabs;
import javax.annotation.Nonnull;
public class AboutActivity extends BaseActivity {
public static class Dialog extends AboutActivity {
}
@Nonnull
public static Class<? extends AboutActivity> getClass(@NonNull Context context) {
boolean tablet = context.getResources().getBoolean(R.bool.cpp_tablet);
return tablet ? Dialog.class : AboutActivity.class;
}
@Override
protected void populateTabs(@Nonnull Tabs tabs) {
super.populateTabs(tabs);

View File

@@ -22,6 +22,8 @@
package org.solovyev.android.calculator.functions;
import static org.solovyev.android.calculator.functions.CppFunction.NO_ID;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.DialogInterface;
@@ -35,26 +37,47 @@ import android.support.v4.app.FragmentManager;
import android.support.v7.app.AlertDialog;
import android.text.Editable;
import android.text.TextUtils;
import android.view.*;
import android.view.ContextMenu;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewParent;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
import butterknife.Bind;
import butterknife.ButterKnife;
import jscl.math.function.Function;
import org.solovyev.android.Activities;
import org.solovyev.android.Check;
import org.solovyev.android.calculator.*;
import org.solovyev.android.calculator.App;
import org.solovyev.android.calculator.AppComponent;
import org.solovyev.android.calculator.BaseDialogFragment;
import org.solovyev.android.calculator.Calculator;
import org.solovyev.android.calculator.Engine;
import org.solovyev.android.calculator.FloatingCalculatorKeyboard;
import org.solovyev.android.calculator.Keyboard;
import org.solovyev.android.calculator.ParseException;
import org.solovyev.android.calculator.R;
import org.solovyev.android.calculator.VariablesRegistry;
import org.solovyev.android.calculator.entities.EntityRemovalDialog;
import org.solovyev.android.calculator.keyboard.FloatingKeyboardWindow;
import org.solovyev.android.calculator.view.EditTextCompat;
import org.solovyev.common.math.MathRegistry;
import butterknife.Bind;
import butterknife.ButterKnife;
import jscl.math.function.Function;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import javax.inject.Inject;
import java.util.*;
import static org.solovyev.android.calculator.functions.CppFunction.NO_ID;
public class EditFunctionFragment extends BaseDialogFragment implements View.OnClickListener, View.OnFocusChangeListener, View.OnKeyListener {
@@ -107,7 +130,7 @@ public class EditFunctionFragment extends BaseDialogFragment implements View.OnC
public static void show(@Nullable CppFunction function, @Nonnull Context context) {
if (!(context instanceof FunctionsActivity)) {
final Intent intent = new Intent(context, FunctionsActivity.class);
final Intent intent = new Intent(context, FunctionsActivity.getClass(context));
Activities.addIntentFlags(intent, false, context);
intent.putExtra(FunctionsActivity.EXTRA_FUNCTION, function);
context.startActivity(intent);

View File

@@ -22,8 +22,11 @@
package org.solovyev.android.calculator.functions;
import android.content.Context;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.view.View;
import org.solovyev.android.calculator.BaseActivity;
import org.solovyev.android.calculator.FragmentTab;
import org.solovyev.android.calculator.R;
@@ -36,6 +39,12 @@ public class FunctionsActivity extends BaseActivity {
public static final String EXTRA_FUNCTION = "function";
@Nonnull
public static Class<? extends FunctionsActivity> getClass(@NonNull Context context) {
boolean tablet = context.getResources().getBoolean(R.bool.cpp_tablet);
return tablet ? Dialog.class : FunctionsActivity.class;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -74,4 +83,7 @@ public class FunctionsActivity extends BaseActivity {
tabs.addTab(category, FragmentTab.operators, title);
}
}
public static final class Dialog extends FunctionsActivity {
}
}

View File

@@ -22,21 +22,38 @@
package org.solovyev.android.calculator.history;
import static org.solovyev.android.calculator.FragmentTab.saved_history;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.Fragment;
import android.support.v7.app.AlertDialog;
import android.view.View;
import org.solovyev.android.calculator.*;
import org.solovyev.android.calculator.App;
import org.solovyev.android.calculator.AppComponent;
import org.solovyev.android.calculator.BaseActivity;
import org.solovyev.android.calculator.FragmentTab;
import org.solovyev.android.calculator.R;
import org.solovyev.android.calculator.view.Tabs;
import javax.annotation.Nonnull;
import javax.inject.Inject;
import static org.solovyev.android.calculator.FragmentTab.saved_history;
public class HistoryActivity extends BaseActivity {
public static class Dialog extends HistoryActivity {
}
@Nonnull
public static Class<? extends HistoryActivity> getClass(@NonNull Context context) {
boolean tablet = context.getResources().getBoolean(R.bool.cpp_tablet);
return tablet ? Dialog.class : HistoryActivity.class;
}
@Inject
History history;

View File

@@ -22,14 +22,27 @@
package org.solovyev.android.calculator.operators;
import android.content.Context;
import android.support.annotation.NonNull;
import org.solovyev.android.calculator.BaseActivity;
import org.solovyev.android.calculator.FragmentTab;
import org.solovyev.android.calculator.R;
import org.solovyev.android.calculator.view.Tabs;
import javax.annotation.Nonnull;
public class OperatorsActivity extends BaseActivity {
public static class Dialog extends OperatorsActivity {
}
@Nonnull
public static Class<? extends OperatorsActivity> getClass(@NonNull Context context) {
boolean tablet = context.getResources().getBoolean(R.bool.cpp_tablet);
return tablet ? Dialog.class : OperatorsActivity.class;
}
@Override
protected void populateTabs(@Nonnull Tabs tabs) {
super.populateTabs(tabs);

View File

@@ -4,6 +4,7 @@ import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.StringRes;
import android.support.annotation.XmlRes;
import android.util.SparseArray;
@@ -30,6 +31,11 @@ public class PreferencesActivity extends BaseActivity implements SharedPreferenc
@Nonnull
private static final SparseArray<PrefDef> preferences = new SparseArray<>();
public static Class<? extends PreferencesActivity> getClass(@NonNull Context context) {
final boolean tablet = context.getResources().getBoolean(R.bool.cpp_tablet);
return tablet ? Dialog.class : PreferencesActivity.class;
}
static {
preferences.append(R.xml.preferences, new PrefDef("screen-main", R.string.c_app_settings));
preferences.append(R.xml.preferences_calculations, new PrefDef("screen-calculations", R.string.c_prefs_calculations_category));
@@ -68,7 +74,7 @@ public class PreferencesActivity extends BaseActivity implements SharedPreferenc
@Nonnull
public static Intent makeIntent(@Nonnull Context context, @XmlRes int preference, @StringRes int title) {
final Intent intent = new Intent(context, PreferencesActivity.class);
final Intent intent = new Intent(context, getClass(context));
intent.putExtra(EXTRA_PREFERENCE, preference);
if (title != 0) {
intent.putExtra(EXTRA_PREFERENCE_TITLE, title);
@@ -150,4 +156,7 @@ public class PreferencesActivity extends BaseActivity implements SharedPreferenc
this.title = title;
}
}
public static final class Dialog extends PreferencesActivity {
}
}

View File

@@ -1,15 +1,24 @@
package org.solovyev.android.calculator.preferences;
import static org.solovyev.android.calculator.wizard.CalculatorWizards.DEFAULT_WIZARD_FLOW;
import static org.solovyev.android.wizard.WizardUi.startWizard;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Build;
import android.os.Bundle;
import android.preference.ListPreference;
import android.preference.Preference;
import android.support.v4.app.FragmentActivity;
import android.util.SparseArray;
import android.view.View;
import android.widget.ListView;
import org.solovyev.android.calculator.*;
import org.solovyev.android.calculator.AdView;
import org.solovyev.android.calculator.App;
import org.solovyev.android.calculator.Engine;
import org.solovyev.android.calculator.Preferences;
import org.solovyev.android.calculator.R;
import org.solovyev.android.calculator.language.Language;
import org.solovyev.android.calculator.language.Languages;
import org.solovyev.android.checkout.BillingRequests;
@@ -17,12 +26,10 @@ import org.solovyev.android.checkout.Checkout;
import org.solovyev.android.checkout.ProductTypes;
import org.solovyev.android.checkout.RequestListener;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.util.List;
import static org.solovyev.android.calculator.wizard.CalculatorWizards.DEFAULT_WIZARD_FLOW;
import static org.solovyev.android.wizard.WizardUi.startWizard;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public class PreferencesFragment extends org.solovyev.android.material.preferences.PreferencesFragment implements SharedPreferences.OnSharedPreferenceChangeListener {
@@ -49,7 +56,8 @@ public class PreferencesFragment extends org.solovyev.android.material.preferenc
private void setPreferenceIntent(int xml, @Nonnull PreferencesActivity.PrefDef def) {
final Preference preference = findPreference(def.id);
if (preference != null) {
final Intent intent = new Intent(getActivity(), PreferencesActivity.class);
final FragmentActivity context = getActivity();
final Intent intent = new Intent(context, PreferencesActivity.getClass(context));
intent.putExtra(PreferencesActivity.EXTRA_PREFERENCE, xml);
intent.putExtra(PreferencesActivity.EXTRA_PREFERENCE_TITLE, def.title);
preference.setIntent(intent);

View File

@@ -22,6 +22,8 @@
package org.solovyev.android.calculator.variables;
import static org.solovyev.android.calculator.variables.CppVariable.NO_ID;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.DialogInterface;
@@ -41,12 +43,17 @@ import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.PopupWindow;
import butterknife.Bind;
import butterknife.ButterKnife;
import jscl.math.function.IConstant;
import org.solovyev.android.Activities;
import org.solovyev.android.Check;
import org.solovyev.android.calculator.*;
import org.solovyev.android.calculator.App;
import org.solovyev.android.calculator.AppComponent;
import org.solovyev.android.calculator.BaseDialogFragment;
import org.solovyev.android.calculator.Calculator;
import org.solovyev.android.calculator.Engine;
import org.solovyev.android.calculator.Keyboard;
import org.solovyev.android.calculator.R;
import org.solovyev.android.calculator.VariablesRegistry;
import org.solovyev.android.calculator.entities.EntityRemovalDialog;
import org.solovyev.android.calculator.functions.FunctionsRegistry;
import org.solovyev.android.calculator.keyboard.FloatingKeyboard;
@@ -55,13 +62,16 @@ import org.solovyev.android.calculator.math.MathType;
import org.solovyev.android.calculator.view.EditTextCompat;
import org.solovyev.common.text.Strings;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import javax.inject.Inject;
import butterknife.Bind;
import butterknife.ButterKnife;
import jscl.math.function.IConstant;
import java.util.Arrays;
import java.util.List;
import static org.solovyev.android.calculator.variables.CppVariable.NO_ID;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import javax.inject.Inject;
public class EditVariableFragment extends BaseDialogFragment implements View.OnFocusChangeListener, View.OnKeyListener, View.OnClickListener {
@@ -119,7 +129,7 @@ public class EditVariableFragment extends BaseDialogFragment implements View.OnF
public static void showDialog(@Nullable CppVariable variable, @Nonnull Context context) {
if (!(context instanceof VariablesActivity)) {
final Intent intent = new Intent(context, VariablesActivity.class);
final Intent intent = new Intent(context, VariablesActivity.getClass(context));
Activities.addIntentFlags(intent, false, context);
intent.putExtra(VariablesActivity.EXTRA_VARIABLE, variable);
context.startActivity(intent);

View File

@@ -22,7 +22,9 @@
package org.solovyev.android.calculator.variables;
import android.content.Context;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.view.View;
import org.solovyev.android.calculator.BaseActivity;
import org.solovyev.android.calculator.FragmentTab;
@@ -36,6 +38,12 @@ public class VariablesActivity extends BaseActivity {
public static final String EXTRA_VARIABLE = "variable";
@Nonnull
public static Class<? extends VariablesActivity> getClass(@NonNull Context context) {
boolean tablet = context.getResources().getBoolean(R.bool.cpp_tablet);
return tablet ? Dialog.class : VariablesActivity.class;
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -63,4 +71,7 @@ public class VariablesActivity extends BaseActivity {
tabs.addTab(category, FragmentTab.variables);
}
}
public static final class Dialog extends VariablesActivity {
}
}