mirror of
https://codeberg.org/comaps/comaps
synced 2025-12-19 04:53:36 +00:00
[android] Use separate function to check for MapTooOldToEdit
Signed-off-by: map-per <map-per@gmx.de>
This commit is contained in:
committed by
Konstantin Pastbin
parent
67d88b4fa9
commit
498dcc4240
@@ -700,22 +700,27 @@ public class PlacePageView extends Fragment
|
|||||||
|
|
||||||
if (shouldEnableEditPlace)
|
if (shouldEnableEditPlace)
|
||||||
{
|
{
|
||||||
|
mTvEditPlace.setEnabled(true);
|
||||||
|
mTvAddPlace.setEnabled(true);
|
||||||
mTvEditPlace.setOnClickListener(this);
|
mTvEditPlace.setOnClickListener(this);
|
||||||
mTvAddPlace.setOnClickListener(this);
|
mTvAddPlace.setOnClickListener(this);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
mTvEditPlace.setOnClickListener((v) -> {
|
|
||||||
Utils.showSnackbar(v.getContext(), v.getRootView(), R.string.place_page_too_old_to_edit);
|
|
||||||
});
|
|
||||||
mTvAddPlace.setOnClickListener((v) -> {
|
|
||||||
Utils.showSnackbar(v.getContext(), v.getRootView(), R.string.place_page_too_old_to_edit);
|
|
||||||
});
|
|
||||||
|
|
||||||
String countryId = MapManager.nativeGetSelectedCountry();
|
String countryId = MapManager.nativeGetSelectedCountry();
|
||||||
|
|
||||||
if (countryId != null)
|
if (countryId != null && MapManager.nativeIsMapTooOldToEdit(countryId))
|
||||||
{
|
{
|
||||||
|
// map editing is disabled because the map is too old
|
||||||
|
mTvEditPlace.setEnabled(true);
|
||||||
|
mTvAddPlace.setEnabled(true);
|
||||||
|
mTvEditPlace.setOnClickListener((v) -> {
|
||||||
|
Utils.showSnackbar(v.getContext(), v.getRootView(), R.string.place_page_too_old_to_edit);
|
||||||
|
});
|
||||||
|
mTvAddPlace.setOnClickListener((v) -> {
|
||||||
|
Utils.showSnackbar(v.getContext(), v.getRootView(), R.string.place_page_too_old_to_edit);
|
||||||
|
});
|
||||||
|
|
||||||
CountryItem map = CountryItem.fill(countryId);
|
CountryItem map = CountryItem.fill(countryId);
|
||||||
|
|
||||||
if (map.status == CountryItem.STATUS_UPDATABLE || map.status == CountryItem.STATUS_DONE
|
if (map.status == CountryItem.STATUS_UPDATABLE || map.status == CountryItem.STATUS_DONE
|
||||||
@@ -740,6 +745,12 @@ public class PlacePageView extends Fragment
|
|||||||
mapTooOldDescription.setText(R.string.place_page_app_too_old_description);
|
mapTooOldDescription.setText(R.string.place_page_app_too_old_description);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// map editing is disabled for other reasons
|
||||||
|
mTvEditPlace.setEnabled(false);
|
||||||
|
mTvAddPlace.setEnabled(false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
final int editButtonColor =
|
final int editButtonColor =
|
||||||
|
|||||||
@@ -587,4 +587,11 @@ JNIEXPORT jstring JNICALL Java_app_organicmaps_sdk_downloader_MapManager_nativeG
|
|||||||
storage::CountryId const & res = g_framework->GetPlacePageInfo().GetCountryId();
|
storage::CountryId const & res = g_framework->GetPlacePageInfo().GetCountryId();
|
||||||
return (res == storage::kInvalidCountryId ? nullptr : jni::ToJavaString(env, res));
|
return (res == storage::kInvalidCountryId ? nullptr : jni::ToJavaString(env, res));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// static native boolean nativeIsMapTooOldToEdit(String countryId);
|
||||||
|
JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_downloader_MapManager_nativeIsMapTooOldToEdit(JNIEnv *env, jclass clazz,
|
||||||
|
jstring country_id)
|
||||||
|
{
|
||||||
|
return GetStorage().IsMapTooOldToEdit(jni::ToNativeString(env, country_id));
|
||||||
|
}
|
||||||
} // extern "C"
|
} // extern "C"
|
||||||
|
|||||||
@@ -261,4 +261,9 @@ public final class MapManager
|
|||||||
* Returns country ID which the current PP object points to, or {@code null}.
|
* Returns country ID which the current PP object points to, or {@code null}.
|
||||||
*/
|
*/
|
||||||
public static native @Nullable String nativeGetSelectedCountry();
|
public static native @Nullable String nativeGetSelectedCountry();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns true when the map exists and is too old for map editing.
|
||||||
|
*/
|
||||||
|
public static native boolean nativeIsMapTooOldToEdit(String countryId);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1252,16 +1252,33 @@ bool Storage::IsAllowedToEditVersion(CountryId const & countryId) const
|
|||||||
case Status::OnDiskOutOfDate:
|
case Status::OnDiskOutOfDate:
|
||||||
{
|
{
|
||||||
auto const localFile = GetLatestLocalFile(countryId);
|
auto const localFile = GetLatestLocalFile(countryId);
|
||||||
ASSERT(localFile, ("Local file shouldn't be nullptr."));
|
return IsAllowedToEditFile(localFile);
|
||||||
auto const currentVersionTime = base::YYMMDDToSecondsSinceEpoch(static_cast<uint32_t>(m_currentVersion));
|
|
||||||
auto const localVersionTime = base::YYMMDDToSecondsSinceEpoch(static_cast<uint32_t>(localFile->GetVersion()));
|
|
||||||
return currentVersionTime - localVersionTime < kMaxSecondsTillLastVersionUpdate &&
|
|
||||||
base::SecondsSinceEpoch() - localVersionTime < kMaxSecondsTillNoEdits;
|
|
||||||
}
|
}
|
||||||
default: return false;
|
default: return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool Storage::IsMapTooOldToEdit(CountryId const & countryId) const
|
||||||
|
{
|
||||||
|
auto const status = CountryStatusEx(countryId);
|
||||||
|
if (status == Status::OnDiskOutOfDate)
|
||||||
|
{
|
||||||
|
LocalFilePtr const localFile = GetLatestLocalFile(countryId);
|
||||||
|
return !IsAllowedToEditFile(localFile);
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Storage::IsAllowedToEditFile(LocalFilePtr const & localFile) const
|
||||||
|
{
|
||||||
|
ASSERT(localFile, ("Local file shouldn't be nullptr."));
|
||||||
|
auto const currentVersionTime = base::YYMMDDToSecondsSinceEpoch(static_cast<uint32_t>(m_currentVersion));
|
||||||
|
auto const localVersionTime = base::YYMMDDToSecondsSinceEpoch(static_cast<uint32_t>(localFile->GetVersion()));
|
||||||
|
return currentVersionTime - localVersionTime < kMaxSecondsTillLastVersionUpdate &&
|
||||||
|
base::SecondsSinceEpoch() - localVersionTime < kMaxSecondsTillNoEdits;
|
||||||
|
}
|
||||||
|
|
||||||
int64_t Storage::GetVersion(CountryId const & countryId) const
|
int64_t Storage::GetVersion(CountryId const & countryId) const
|
||||||
{
|
{
|
||||||
CHECK_THREAD_CHECKER(m_threadChecker, ());
|
CHECK_THREAD_CHECKER(m_threadChecker, ());
|
||||||
|
|||||||
@@ -383,6 +383,9 @@ public:
|
|||||||
/// \brief Returns true if the version of countryId can be used to update maps.
|
/// \brief Returns true if the version of countryId can be used to update maps.
|
||||||
bool IsAllowedToEditVersion(CountryId const & countryId) const;
|
bool IsAllowedToEditVersion(CountryId const & countryId) const;
|
||||||
|
|
||||||
|
/// \brief Returns true when the map exists and is too old for map editing.
|
||||||
|
bool IsMapTooOldToEdit(CountryId const & countryId) const;
|
||||||
|
|
||||||
/// Returns version of downloaded mwm or zero.
|
/// Returns version of downloaded mwm or zero.
|
||||||
int64_t GetVersion(CountryId const & countryId) const;
|
int64_t GetVersion(CountryId const & countryId) const;
|
||||||
|
|
||||||
@@ -625,6 +628,8 @@ private:
|
|||||||
// Returns a path to a place on disk downloader can use for downloaded files.
|
// Returns a path to a place on disk downloader can use for downloaded files.
|
||||||
std::string GetFileDownloadPath(CountryId const & countryId, MapFileType file) const;
|
std::string GetFileDownloadPath(CountryId const & countryId, MapFileType file) const;
|
||||||
|
|
||||||
|
bool IsAllowedToEditFile(LocalFilePtr const & localFile) const;
|
||||||
|
|
||||||
/// Fast version, doesn't check if country is out of date
|
/// Fast version, doesn't check if country is out of date
|
||||||
Status CountryStatus(CountryId const & countryId) const;
|
Status CountryStatus(CountryId const & countryId) const;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user