Show Widget Settings if settings button was clicked
This commit is contained in:
parent
640580a3d8
commit
926909a62d
@ -25,19 +25,16 @@ package org.solovyev.android.calculator;
|
|||||||
import android.app.Application;
|
import android.app.Application;
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
import android.preference.PreferenceManager;
|
import android.preference.PreferenceManager;
|
||||||
|
import jscl.NumeralBase;
|
||||||
|
import jscl.math.Generic;
|
||||||
import org.solovyev.android.calculator.history.CalculatorHistoryState;
|
import org.solovyev.android.calculator.history.CalculatorHistoryState;
|
||||||
import org.solovyev.android.calculator.jscl.JsclOperation;
|
import org.solovyev.android.calculator.jscl.JsclOperation;
|
||||||
import org.solovyev.common.history.HistoryAction;
|
import org.solovyev.common.history.HistoryAction;
|
||||||
import org.solovyev.common.msg.Message;
|
import org.solovyev.common.msg.Message;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import javax.annotation.Nonnull;
|
import javax.annotation.Nonnull;
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
|
import java.util.List;
|
||||||
import jscl.NumeralBase;
|
|
||||||
import jscl.math.Generic;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* User: serso
|
* User: serso
|
||||||
@ -219,6 +216,9 @@ public class AndroidCalculator implements Calculator, CalculatorEventListener, S
|
|||||||
case show_settings_detached:
|
case show_settings_detached:
|
||||||
CalculatorActivityLauncher.showSettings(CalculatorApplication.getInstance(), true);
|
CalculatorActivityLauncher.showSettings(CalculatorApplication.getInstance(), true);
|
||||||
break;
|
break;
|
||||||
|
case show_settings_widget:
|
||||||
|
CalculatorActivityLauncher.showWidgetSettings(CalculatorApplication.getInstance(), true);
|
||||||
|
break;
|
||||||
case show_like_dialog:
|
case show_like_dialog:
|
||||||
CalculatorActivityLauncher.likeButtonPressed(CalculatorApplication.getInstance());
|
CalculatorActivityLauncher.likeButtonPressed(CalculatorApplication.getInstance());
|
||||||
break;
|
break;
|
||||||
|
@ -75,6 +75,12 @@ public final class CalculatorActivityLauncher implements CalculatorEventListener
|
|||||||
showSettings(context, false);
|
showSettings(context, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void showWidgetSettings(@Nonnull final Context context, boolean detached) {
|
||||||
|
final Intent intent = PreferencesActivity.makeIntent(context, R.xml.preferences_widget, R.string.prefs_widget_title);
|
||||||
|
Activities.addIntentFlags(intent, detached, context);
|
||||||
|
context.startActivity(intent);
|
||||||
|
}
|
||||||
|
|
||||||
public static void showSettings(@Nonnull final Context context, boolean detached) {
|
public static void showSettings(@Nonnull final Context context, boolean detached) {
|
||||||
final Intent intent = new Intent(context, PreferencesActivity.class);
|
final Intent intent = new Intent(context, PreferencesActivity.class);
|
||||||
Activities.addIntentFlags(intent, detached, context);
|
Activities.addIntentFlags(intent, detached, context);
|
||||||
|
@ -59,6 +59,7 @@ public enum CalculatorButton {
|
|||||||
brackets(R.id.cpp_button_round_brackets, "()"),
|
brackets(R.id.cpp_button_round_brackets, "()"),
|
||||||
|
|
||||||
settings(R.id.cpp_button_settings, settings_detached),
|
settings(R.id.cpp_button_settings, settings_detached),
|
||||||
|
settings_widget(R.id.cpp_button_settings_widget, CalculatorSpecialButton.settings_widget),
|
||||||
like(R.id.cpp_button_like, CalculatorSpecialButton.like),
|
like(R.id.cpp_button_like, CalculatorSpecialButton.like),
|
||||||
|
|
||||||
/*last row*/
|
/*last row*/
|
||||||
|
@ -174,6 +174,7 @@ public enum CalculatorEventType {
|
|||||||
|
|
||||||
show_settings,
|
show_settings,
|
||||||
show_settings_detached,
|
show_settings_detached,
|
||||||
|
show_settings_widget,
|
||||||
|
|
||||||
show_like_dialog,
|
show_like_dialog,
|
||||||
|
|
||||||
|
@ -24,11 +24,10 @@ package org.solovyev.android.calculator;
|
|||||||
|
|
||||||
import org.solovyev.common.text.Strings;
|
import org.solovyev.common.text.Strings;
|
||||||
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import javax.annotation.Nonnull;
|
import javax.annotation.Nonnull;
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* User: serso
|
* User: serso
|
||||||
@ -75,6 +74,13 @@ public enum CalculatorSpecialButton {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
settings_widget("settings_widget") {
|
||||||
|
@Override
|
||||||
|
public void onClick(@Nonnull CalculatorKeyboard keyboard) {
|
||||||
|
Locator.getInstance().getCalculator().fireCalculatorEvent(CalculatorEventType.show_settings_widget, null);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
like("like") {
|
like("like") {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(@Nonnull CalculatorKeyboard keyboard) {
|
public void onClick(@Nonnull CalculatorKeyboard keyboard) {
|
||||||
|
@ -39,28 +39,17 @@ import android.view.Menu;
|
|||||||
import android.view.MenuInflater;
|
import android.view.MenuInflater;
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
|
||||||
import org.solovyev.android.Android;
|
import org.solovyev.android.Android;
|
||||||
import org.solovyev.android.Threads;
|
import org.solovyev.android.Threads;
|
||||||
import org.solovyev.android.calculator.App;
|
import org.solovyev.android.calculator.*;
|
||||||
import org.solovyev.android.calculator.CalculatorApplication;
|
|
||||||
import org.solovyev.android.calculator.CalculatorEventData;
|
|
||||||
import org.solovyev.android.calculator.CalculatorEventHolder;
|
|
||||||
import org.solovyev.android.calculator.CalculatorEventListener;
|
|
||||||
import org.solovyev.android.calculator.CalculatorEventType;
|
|
||||||
import org.solovyev.android.calculator.CalculatorFragment;
|
|
||||||
import org.solovyev.android.calculator.CalculatorUtils;
|
|
||||||
import org.solovyev.android.calculator.Locator;
|
|
||||||
import org.solovyev.android.calculator.R;
|
import org.solovyev.android.calculator.R;
|
||||||
import org.solovyev.android.calculator.preferences.PreferencesActivity;
|
import org.solovyev.android.calculator.preferences.PreferencesActivity;
|
||||||
import org.solovyev.android.menu.AMenuItem;
|
import org.solovyev.android.menu.*;
|
||||||
import org.solovyev.android.menu.ActivityMenu;
|
|
||||||
import org.solovyev.android.menu.AndroidMenuHelper;
|
|
||||||
import org.solovyev.android.menu.IdentifiableMenuItem;
|
|
||||||
import org.solovyev.android.menu.ListActivityMenu;
|
|
||||||
import org.solovyev.common.JPredicate;
|
import org.solovyev.common.JPredicate;
|
||||||
import org.solovyev.common.msg.MessageType;
|
import org.solovyev.common.msg.MessageType;
|
||||||
|
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
|
import javax.annotation.Nullable;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@ -70,9 +59,6 @@ import java.util.List;
|
|||||||
import java.util.concurrent.Executor;
|
import java.util.concurrent.Executor;
|
||||||
import java.util.concurrent.Executors;
|
import java.util.concurrent.Executors;
|
||||||
|
|
||||||
import javax.annotation.Nonnull;
|
|
||||||
import javax.annotation.Nullable;
|
|
||||||
|
|
||||||
import static org.solovyev.android.calculator.model.AndroidCalculatorEngine.Preferences;
|
import static org.solovyev.android.calculator.model.AndroidCalculatorEngine.Preferences;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -433,7 +419,7 @@ public abstract class AbstractCalculatorPlotFragment extends CalculatorFragment
|
|||||||
preferences(R.id.menu_plot_settings) {
|
preferences(R.id.menu_plot_settings) {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(@Nonnull MenuItem data, @Nonnull Context context) {
|
public void onClick(@Nonnull MenuItem data, @Nonnull Context context) {
|
||||||
PreferencesActivity.start(context, R.xml.preferences_plot, R.string.prefs_graph_screen_title);
|
PreferencesActivity.showPlotPreferences(context);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -51,13 +51,17 @@ public class PreferencesActivity extends BaseActivity implements SharedPreferenc
|
|||||||
return preferences;
|
return preferences;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void start(@Nonnull Context context, @XmlRes int preference, @StringRes int title) {
|
public static void showPlotPreferences(@Nonnull Context context) {
|
||||||
|
start(context, R.xml.preferences_plot, R.string.prefs_graph_screen_title);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void start(@Nonnull Context context, @XmlRes int preference, @StringRes int title) {
|
||||||
final Intent intent = makeIntent(context, preference, title);
|
final Intent intent = makeIntent(context, preference, title);
|
||||||
context.startActivity(intent);
|
context.startActivity(intent);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nonnull
|
@Nonnull
|
||||||
static Intent makeIntent(@Nonnull Context context, @XmlRes int preference, @StringRes int title) {
|
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, PreferencesActivity.class);
|
||||||
intent.putExtra(EXTRA_PREFERENCE, preference);
|
intent.putExtra(EXTRA_PREFERENCE, preference);
|
||||||
if (title != 0) {
|
if (title != 0) {
|
||||||
|
@ -111,9 +111,16 @@ public class CalculatorWidget extends AppWidgetProvider {
|
|||||||
final RemoteViews views = new RemoteViews(context.getPackageName(), getLayout(manager, widgetId, resources, theme));
|
final RemoteViews views = new RemoteViews(context.getPackageName(), getLayout(manager, widgetId, resources, theme));
|
||||||
|
|
||||||
for (CalculatorButton button : CalculatorButton.values()) {
|
for (CalculatorButton button : CalculatorButton.values()) {
|
||||||
final PendingIntent intent = PendingIntent.getBroadcast(context, button.getButtonId(), newButtonClickedIntent(context, button), PendingIntent.FLAG_UPDATE_CURRENT);
|
final int buttonId;
|
||||||
|
if (button == CalculatorButton.settings_widget) {
|
||||||
|
// overriding default settings button behavior
|
||||||
|
buttonId = CalculatorButton.settings.getButtonId();
|
||||||
|
} else {
|
||||||
|
buttonId = button.getButtonId();
|
||||||
|
}
|
||||||
|
final PendingIntent intent = PendingIntent.getBroadcast(context, buttonId, newButtonClickedIntent(context, button), PendingIntent.FLAG_UPDATE_CURRENT);
|
||||||
if (intent != null) {
|
if (intent != null) {
|
||||||
views.setOnClickPendingIntent(button.getButtonId(), intent);
|
views.setOnClickPendingIntent(buttonId, intent);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user