Added Christmas dialog
This commit is contained in:
parent
cbcad9a8bd
commit
bb8ac00ca8
5 changed files with 133 additions and 28 deletions
|
@ -323,8 +323,14 @@ public class SearchUICore {
|
|||
return true;
|
||||
}
|
||||
|
||||
public void resetPhrase() {
|
||||
public SearchPhrase resetPhrase() {
|
||||
this.phrase = this.phrase.generateNewPhrase("", searchSettings);
|
||||
return this.phrase;
|
||||
}
|
||||
|
||||
public SearchPhrase resetPhrase(String text) {
|
||||
this.phrase = this.phrase.generateNewPhrase(text, searchSettings);
|
||||
return this.phrase;
|
||||
}
|
||||
|
||||
public SearchResultCollection search(final String text, final ResultMatcher<SearchResult> matcher) {
|
||||
|
|
|
@ -706,6 +706,8 @@ public class OsmandSettings {
|
|||
public final CommonPreference<Boolean> SHOW_DASHBOARD_ON_START = new BooleanPreference("should_show_dashboard_on_start", false).makeGlobal();
|
||||
public final CommonPreference<Boolean> SHOW_DASHBOARD_ON_MAP_SCREEN = new BooleanPreference("show_dashboard_on_map_screen", false).makeGlobal();
|
||||
|
||||
public final CommonPreference<Integer> NUMBER_OF_STARTS_FIRST_XMAS_SHOWN = new IntPreference("number_of_starts_first_xmas_shown", 0).makeGlobal();
|
||||
|
||||
// this value string is synchronized with settings_pref.xml preference name
|
||||
public final CommonPreference<Boolean> USE_INTERNET_TO_DOWNLOAD_TILES = new BooleanPreference("use_internet_to_download_tiles", true).makeGlobal().cache();
|
||||
|
||||
|
|
|
@ -12,7 +12,6 @@ import android.content.DialogInterface;
|
|||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.res.ColorStateList;
|
||||
import android.media.AudioManager;
|
||||
import android.net.Uri;
|
||||
import android.os.AsyncTask;
|
||||
|
@ -26,20 +25,16 @@ import android.support.v4.app.ActivityCompat;
|
|||
import android.support.v4.app.ActivityCompat.OnRequestPermissionsResultCallback;
|
||||
import android.support.v4.app.DialogFragment;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v4.view.ViewCompat;
|
||||
import android.support.v4.widget.DrawerLayout;
|
||||
import android.support.v7.app.AlertDialog;
|
||||
import android.support.v7.widget.SwitchCompat;
|
||||
import android.util.DisplayMetrics;
|
||||
import android.view.Gravity;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.View;
|
||||
import android.view.ViewStub;
|
||||
import android.view.Window;
|
||||
import android.view.WindowManager;
|
||||
import android.widget.Button;
|
||||
import android.widget.ProgressBar;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
@ -643,7 +638,7 @@ public class MapActivity extends OsmandActionBarActivity implements DownloadEven
|
|||
.add(R.id.fragmentContainer, new FirstUsageWelcomeFragment(),
|
||||
FirstUsageWelcomeFragment.TAG).commitAllowingStateLoss();
|
||||
} else {
|
||||
//OtherDialogs.showXMasDialog(this);
|
||||
OtherDialogs.showXMasDialog(this);
|
||||
}
|
||||
FirstUsageWelcomeFragment.SHOW = false;
|
||||
}
|
||||
|
@ -1448,32 +1443,46 @@ public class MapActivity extends OsmandActionBarActivity implements DownloadEven
|
|||
}
|
||||
|
||||
public void showQuickSearch(double latitude, double longitude) {
|
||||
mapContextMenu.hide();
|
||||
hideContextMenu();
|
||||
QuickSearchDialogFragment fragment = getQuickSearchDialogFragment();
|
||||
if (fragment != null) {
|
||||
fragment.dismiss();
|
||||
refreshMap();
|
||||
}
|
||||
QuickSearchDialogFragment.showInstance(this, "", true, new LatLon(latitude, longitude));
|
||||
QuickSearchDialogFragment.showInstance(this, "", null, true, new LatLon(latitude, longitude));
|
||||
}
|
||||
|
||||
public void showQuickSearch(Object object) {
|
||||
hideContextMenu();
|
||||
QuickSearchDialogFragment fragment = getQuickSearchDialogFragment();
|
||||
if (fragment != null) {
|
||||
fragment.dismiss();
|
||||
refreshMap();
|
||||
}
|
||||
QuickSearchDialogFragment.showInstance(this, "", object, true, null);
|
||||
}
|
||||
|
||||
public void showQuickSearch(ShowQuickSearchMode mode, boolean showCategories) {
|
||||
if (mapContextMenu.isVisible()) {
|
||||
mapContextMenu.hide();
|
||||
} else if (mapContextMenu.getMultiSelectionMenu().isVisible()) {
|
||||
mapContextMenu.getMultiSelectionMenu().hide();
|
||||
}
|
||||
hideContextMenu();
|
||||
QuickSearchDialogFragment fragment = getQuickSearchDialogFragment();
|
||||
if (fragment != null) {
|
||||
if (mode == ShowQuickSearchMode.NEW || (mode == ShowQuickSearchMode.NEW_IF_EXPIRED && fragment.isExpired())) {
|
||||
fragment.dismiss();
|
||||
QuickSearchDialogFragment.showInstance(this, "", showCategories, null);
|
||||
QuickSearchDialogFragment.showInstance(this, "", null, showCategories, null);
|
||||
} else {
|
||||
fragment.show();
|
||||
}
|
||||
refreshMap();
|
||||
} else {
|
||||
QuickSearchDialogFragment.showInstance(this, "", showCategories, null);
|
||||
QuickSearchDialogFragment.showInstance(this, "", null, showCategories, null);
|
||||
}
|
||||
}
|
||||
|
||||
private void hideContextMenu() {
|
||||
if (mapContextMenu.isVisible()) {
|
||||
mapContextMenu.hide();
|
||||
} else if (mapContextMenu.getMultiSelectionMenu().isVisible()) {
|
||||
mapContextMenu.getMultiSelectionMenu().hide();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -6,30 +6,73 @@ import android.support.v7.app.AlertDialog;
|
|||
import android.view.View;
|
||||
import android.widget.Button;
|
||||
|
||||
import net.osmand.osm.MapPoiTypes;
|
||||
import net.osmand.osm.PoiCategory;
|
||||
import net.osmand.plus.OsmandApplication;
|
||||
import net.osmand.plus.R;
|
||||
import net.osmand.plus.activities.MapActivity;
|
||||
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.GregorianCalendar;
|
||||
|
||||
public class OtherDialogs {
|
||||
|
||||
public static void showXMasDialog(final Activity activity) {
|
||||
final AlertDialog.Builder builder = new AlertDialog.Builder(activity, R.style.XmasDialogTheme);
|
||||
View titleView = activity.getLayoutInflater().inflate(R.layout.xmas_dialog_title, null);
|
||||
private static boolean XmasDialogWasProcessed = false;
|
||||
|
||||
public static void showXMasDialog(final MapActivity mapActivity) {
|
||||
|
||||
if (XmasDialogWasProcessed) {
|
||||
return;
|
||||
}
|
||||
XmasDialogWasProcessed = true;
|
||||
|
||||
OsmandApplication app = mapActivity.getMyApplication();
|
||||
int numberOfStarts = app.getAppInitializer().getNumberOfStarts();
|
||||
if (numberOfStarts > 2) {
|
||||
Date now = new Date();
|
||||
Date start = new Date(now.getYear(), 11, 18, 0, 0);
|
||||
Date end = new Date(now.getYear(), 11, 25, 23, 59);
|
||||
int firstShownX = app.getSettings().NUMBER_OF_STARTS_FIRST_XMAS_SHOWN.get();
|
||||
if (now.after(start) && now.before(end)) {
|
||||
if (firstShownX == 0 || numberOfStarts - firstShownX == 3 || numberOfStarts - firstShownX == 10) {
|
||||
if (firstShownX == 0) {
|
||||
app.getSettings().NUMBER_OF_STARTS_FIRST_XMAS_SHOWN.set(numberOfStarts);
|
||||
}
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
if (firstShownX != 0) {
|
||||
app.getSettings().NUMBER_OF_STARTS_FIRST_XMAS_SHOWN.set(0);
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
final AlertDialog.Builder builder = new AlertDialog.Builder(mapActivity, R.style.XmasDialogTheme);
|
||||
View titleView = mapActivity.getLayoutInflater().inflate(R.layout.xmas_dialog_title, null);
|
||||
builder.setCustomTitle(titleView);
|
||||
builder.setCancelable(true);
|
||||
builder.setNegativeButton(activity.getString(R.string.shared_string_cancel), new DialogInterface.OnClickListener() {
|
||||
builder.setNegativeButton(mapActivity.getString(R.string.shared_string_cancel), new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
dialog.dismiss();
|
||||
}
|
||||
});
|
||||
builder.setPositiveButton(activity.getString(R.string.shared_string_show), new DialogInterface.OnClickListener() {
|
||||
builder.setPositiveButton(mapActivity.getString(R.string.shared_string_show), new DialogInterface.OnClickListener() {
|
||||
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
//showQuickSearch();
|
||||
dialog.dismiss();
|
||||
PoiCategory xmas = mapActivity.getMyApplication().getPoiTypes().getPoiCategoryByName("xmas");
|
||||
if (xmas != null) {
|
||||
mapActivity.showQuickSearch(xmas);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
builder.setView(activity.getLayoutInflater().inflate(R.layout.xmas_dialog, null));
|
||||
builder.setView(mapActivity.getLayoutInflater().inflate(R.layout.xmas_dialog, null));
|
||||
|
||||
AlertDialog dialog = builder.create();
|
||||
dialog.setOnShowListener(new DialogInterface.OnShowListener() {
|
||||
|
@ -37,11 +80,11 @@ public class OtherDialogs {
|
|||
public void onShow(DialogInterface dialog) {
|
||||
// Customize POSITIVE, NEGATIVE and NEUTRAL buttons.
|
||||
Button positiveButton = ((AlertDialog) dialog).getButton(DialogInterface.BUTTON_POSITIVE);
|
||||
positiveButton.setTextColor(activity.getResources().getColor(R.color.color_white));
|
||||
positiveButton.setTextColor(mapActivity.getResources().getColor(R.color.color_white));
|
||||
positiveButton.invalidate();
|
||||
|
||||
Button negativeButton = ((AlertDialog) dialog).getButton(DialogInterface.BUTTON_NEGATIVE);
|
||||
negativeButton.setTextColor(activity.getResources().getColor(R.color.color_white));
|
||||
negativeButton.setTextColor(mapActivity.getResources().getColor(R.color.color_white));
|
||||
negativeButton.invalidate();
|
||||
}
|
||||
});
|
||||
|
|
|
@ -42,6 +42,7 @@ import net.osmand.ResultMatcher;
|
|||
import net.osmand.data.LatLon;
|
||||
import net.osmand.data.PointDescription;
|
||||
import net.osmand.osm.AbstractPoiType;
|
||||
import net.osmand.osm.PoiCategory;
|
||||
import net.osmand.plus.AppInitializer;
|
||||
import net.osmand.plus.AppInitializer.AppInitializeListener;
|
||||
import net.osmand.plus.GPXUtilities;
|
||||
|
@ -81,6 +82,7 @@ import java.util.ArrayList;
|
|||
import java.util.List;
|
||||
|
||||
import static net.osmand.search.core.ObjectType.POI_TYPE;
|
||||
import static net.osmand.search.core.SearchCoreFactory.SEARCH_AMENITY_TYPE_PRIORITY;
|
||||
|
||||
public class QuickSearchDialogFragment extends DialogFragment implements OsmAndCompassListener, OsmAndLocationListener {
|
||||
|
||||
|
@ -95,6 +97,9 @@ public class QuickSearchDialogFragment extends DialogFragment implements OsmAndC
|
|||
private static final String QUICK_SEARCH_TOOLBAR_VISIBLE_KEY = "quick_search_toolbar_visible_key";
|
||||
private static final String QUICK_SEARCH_FAB_VISIBLE_KEY = "quick_search_fab_visible_key";
|
||||
|
||||
private static final String QUICK_SEARCH_RUN_SEARCH_FIRST_TIME_KEY = "quick_search_run_search_first_time_key";
|
||||
private static final String QUICK_SEARCH_PHRASE_DEFINED_KEY = "quick_search_phrase_defined_key";
|
||||
|
||||
private Toolbar toolbar;
|
||||
private LockableViewPager viewPager;
|
||||
private SearchFragmentPagerAdapter pagerAdapter;
|
||||
|
@ -141,6 +146,8 @@ public class QuickSearchDialogFragment extends DialogFragment implements OsmAndC
|
|||
private long hideTimeMs;
|
||||
private boolean poiFilterApplied;
|
||||
private boolean fabVisible;
|
||||
private boolean runSearchFirstTime;
|
||||
private boolean phraseDefined;
|
||||
|
||||
private static final double DISTANCE_THRESHOLD = 70000; // 70km
|
||||
private static final int EXPIRATION_TIME_MIN = 10; // 10 minutes
|
||||
|
@ -198,6 +205,8 @@ public class QuickSearchDialogFragment extends DialogFragment implements OsmAndC
|
|||
}
|
||||
if (searchQuery == null && arguments != null) {
|
||||
searchQuery = arguments.getString(QUICK_SEARCH_QUERY_KEY);
|
||||
runSearchFirstTime = arguments.getBoolean(QUICK_SEARCH_RUN_SEARCH_FIRST_TIME_KEY, false);
|
||||
phraseDefined = arguments.getBoolean(QUICK_SEARCH_PHRASE_DEFINED_KEY, false);
|
||||
double lat = arguments.getDouble(QUICK_SEARCH_LAT_KEY, Double.NaN);
|
||||
double lon = arguments.getDouble(QUICK_SEARCH_LON_KEY, Double.NaN);
|
||||
if (!Double.isNaN(lat) && !Double.isNaN(lon)) {
|
||||
|
@ -447,6 +456,9 @@ public class QuickSearchDialogFragment extends DialogFragment implements OsmAndC
|
|||
} else {
|
||||
runSearch();
|
||||
}
|
||||
} else if (runSearchFirstTime) {
|
||||
runSearchFirstTime = false;
|
||||
runSearch();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -673,7 +685,10 @@ public class QuickSearchDialogFragment extends DialogFragment implements OsmAndC
|
|||
searchUICore = searchHelper.getCore();
|
||||
if (newSearch) {
|
||||
setResultCollection(null);
|
||||
searchUICore.resetPhrase();
|
||||
if (!phraseDefined) {
|
||||
searchUICore.resetPhrase();
|
||||
}
|
||||
phraseDefined = false;
|
||||
}
|
||||
|
||||
location = app.getLocationProvider().getLastKnownLocation();
|
||||
|
@ -1197,8 +1212,11 @@ public class QuickSearchDialogFragment extends DialogFragment implements OsmAndC
|
|||
}
|
||||
}
|
||||
|
||||
public static boolean showInstance(final MapActivity mapActivity, final String searchQuery,
|
||||
boolean showCategories, final LatLon latLon) {
|
||||
public static boolean showInstance(@NonNull MapActivity mapActivity,
|
||||
@NonNull String searchQuery,
|
||||
@Nullable Object object,
|
||||
boolean showCategories,
|
||||
@Nullable LatLon latLon) {
|
||||
try {
|
||||
|
||||
if (mapActivity.isActivityDestroyed()) {
|
||||
|
@ -1206,6 +1224,33 @@ public class QuickSearchDialogFragment extends DialogFragment implements OsmAndC
|
|||
}
|
||||
|
||||
Bundle bundle = new Bundle();
|
||||
|
||||
if (object != null) {
|
||||
bundle.putBoolean(QUICK_SEARCH_RUN_SEARCH_FIRST_TIME_KEY, true);
|
||||
String objectLocalizedName = searchQuery;
|
||||
|
||||
if (object instanceof PoiCategory) {
|
||||
PoiCategory c = (PoiCategory) object;
|
||||
objectLocalizedName = c.getTranslation();
|
||||
|
||||
SearchUICore searchUICore = mapActivity.getMyApplication().getSearchUICore().getCore();
|
||||
SearchPhrase phrase = searchUICore.resetPhrase(objectLocalizedName + " ");
|
||||
SearchResult sr = new SearchResult(phrase);
|
||||
sr.localeName = objectLocalizedName;
|
||||
sr.object = c;
|
||||
sr.priority = SEARCH_AMENITY_TYPE_PRIORITY;
|
||||
sr.priorityDistance = 0;
|
||||
sr.objectType = ObjectType.POI_TYPE;
|
||||
searchUICore.selectSearchResult(sr);
|
||||
|
||||
bundle.putBoolean(QUICK_SEARCH_PHRASE_DEFINED_KEY, true);
|
||||
}
|
||||
searchQuery = objectLocalizedName.trim() + " ";
|
||||
|
||||
} else if (!Algorithms.isEmpty(searchQuery)) {
|
||||
bundle.putBoolean(QUICK_SEARCH_RUN_SEARCH_FIRST_TIME_KEY, true);
|
||||
}
|
||||
|
||||
bundle.putString(QUICK_SEARCH_QUERY_KEY, searchQuery);
|
||||
bundle.putBoolean(QUICK_SEARCH_SHOW_CATEGORIES_KEY, showCategories);
|
||||
if (latLon != null) {
|
||||
|
|
Loading…
Reference in a new issue