Merge remote-tracking branch 'origin/master'
This commit is contained in:
commit
243f7ec3e0
13 changed files with 158 additions and 46 deletions
|
@ -200,11 +200,13 @@ public class Amenity extends MapObject {
|
|||
return "";
|
||||
}
|
||||
|
||||
public List<String> getNames(String tag) {
|
||||
public List<String> getNames(String tag, String defTag) {
|
||||
List<String> l = new ArrayList<String>();
|
||||
for (String nm : getAdditionalInfo().keySet()) {
|
||||
if (nm.startsWith(tag+":")) {
|
||||
l.add(nm.substring(tag.length() +1));
|
||||
} else if(nm.equals(tag)) {
|
||||
l.add(defTag);
|
||||
}
|
||||
}
|
||||
return l;
|
||||
|
|
BIN
OsmAnd/res/drawable-hdpi/ic_action_wikipedia.png
Executable file
BIN
OsmAnd/res/drawable-hdpi/ic_action_wikipedia.png
Executable file
Binary file not shown.
After Width: | Height: | Size: 1.2 KiB |
BIN
OsmAnd/res/drawable-mdpi/ic_action_wikipedia.png
Executable file
BIN
OsmAnd/res/drawable-mdpi/ic_action_wikipedia.png
Executable file
Binary file not shown.
After Width: | Height: | Size: 729 B |
BIN
OsmAnd/res/drawable-xhdpi/ic_action_wikipedia.png
Executable file
BIN
OsmAnd/res/drawable-xhdpi/ic_action_wikipedia.png
Executable file
Binary file not shown.
After Width: | Height: | Size: 1.7 KiB |
BIN
OsmAnd/res/drawable-xxhdpi/ic_action_wikipedia.png
Executable file
BIN
OsmAnd/res/drawable-xxhdpi/ic_action_wikipedia.png
Executable file
Binary file not shown.
After Width: | Height: | Size: 2.6 KiB |
|
@ -3,7 +3,7 @@
|
|||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical">
|
||||
android:orientation="vertical" >
|
||||
|
||||
<net.osmand.plus.views.controls.PagerSlidingTabStrip
|
||||
android:id="@+id/sliding_tabs"
|
||||
|
@ -17,7 +17,7 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:visibility="gone"
|
||||
tools:visibility="visible">
|
||||
tools:visibility="visible" >
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="fill_parent"
|
||||
|
@ -25,7 +25,7 @@
|
|||
android:layout_marginLeft="3dp"
|
||||
android:layout_marginRight="5dp"
|
||||
android:gravity="center_vertical|left"
|
||||
android:orientation="horizontal">
|
||||
android:orientation="horizontal" >
|
||||
|
||||
<ProgressBar
|
||||
android:id="@+id/IndeterminateProgressBar"
|
||||
|
@ -71,7 +71,7 @@
|
|||
android:layout_marginLeft="5dp"
|
||||
android:layout_marginRight="5dp"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="horizontal">
|
||||
android:orientation="horizontal" >
|
||||
|
||||
<ProgressBar
|
||||
android:id="@+id/memory_progress"
|
||||
|
@ -88,21 +88,35 @@
|
|||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
<android.support.v4.view.ViewPager
|
||||
android:id="@+id/pager"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:layout_weight="1" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/DownloadButton"
|
||||
<LinearLayout
|
||||
android:layout_width="fill_parent"
|
||||
android:id="@+id/DownloadLayout"
|
||||
android:layout_height="@dimen/list_item_height"
|
||||
android:background="?attr/downloadButtonBackground"
|
||||
android:gravity="center"
|
||||
android:text="@string/shared_string_download"
|
||||
android:textColor="?attr/pstsTextColor"
|
||||
android:visibility="gone" />
|
||||
android:orientation="horizontal" >
|
||||
|
||||
</LinearLayout>
|
||||
<Button
|
||||
android:id="@+id/DownloadButton"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="@dimen/list_item_height"
|
||||
android:layout_weight="1"
|
||||
android:background="?attr/downloadButtonBackground"
|
||||
android:gravity="center"
|
||||
android:text="@string/shared_string_download"
|
||||
android:textColor="?attr/pstsTextColor"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/WikiButton"
|
||||
android:layout_width="@dimen/list_item_height"
|
||||
android:layout_height="@dimen/list_item_height"
|
||||
android:scaleType="centerInside"
|
||||
android:background="?attr/downloadButtonBackground"
|
||||
android:gravity="center"/>
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
|
@ -120,7 +120,7 @@ public class BaseDownloadActivity extends ActionBarProgressActivity {
|
|||
return true;
|
||||
}
|
||||
|
||||
private void addToDownload(IndexItem item) {
|
||||
protected void addToDownload(IndexItem item) {
|
||||
List<DownloadEntry> download = item.createDownloadEntry(getMyApplication(), item.getType(), new ArrayList<DownloadEntry>());
|
||||
getEntriesToDownload().put(item, download);
|
||||
}
|
||||
|
@ -152,22 +152,8 @@ public class BaseDownloadActivity extends ActionBarProgressActivity {
|
|||
protected void downloadFilesCheckFreeVersion() {
|
||||
if (Version.isFreeVersion(getMyApplication())) {
|
||||
int total = settings.NUMBER_OF_FREE_DOWNLOADS.get();
|
||||
boolean wiki = false;
|
||||
for (IndexItem es : DownloadActivity.downloadListIndexThread.getEntriesToDownload().keySet()) {
|
||||
if (es.getBasename() != null && es.getBasename().contains("_wiki")) {
|
||||
wiki = true;
|
||||
break;
|
||||
} else if (DownloadActivityType.isCountedInDownloads(es)) {
|
||||
total++;
|
||||
}
|
||||
}
|
||||
if (total > MAXIMUM_AVAILABLE_FREE_DOWNLOADS || wiki) {
|
||||
String msgTx = getString(R.string.free_version_message, MAXIMUM_AVAILABLE_FREE_DOWNLOADS + "");
|
||||
AlertDialog.Builder msg = new AlertDialog.Builder(this);
|
||||
msg.setTitle(R.string.free_version_title);
|
||||
msg.setMessage(msgTx);
|
||||
msg.setPositiveButton(R.string.shared_string_ok, null);
|
||||
msg.show();
|
||||
if (total > MAXIMUM_AVAILABLE_FREE_DOWNLOADS) {
|
||||
dialogToInstallPaid();
|
||||
} else {
|
||||
downloadFilesCheckInternet();
|
||||
}
|
||||
|
@ -176,6 +162,31 @@ public class BaseDownloadActivity extends ActionBarProgressActivity {
|
|||
}
|
||||
}
|
||||
|
||||
protected void dialogToInstallPaid() {
|
||||
String msgTx = getString(R.string.free_version_message, MAXIMUM_AVAILABLE_FREE_DOWNLOADS + "");
|
||||
AlertDialog.Builder msg = new AlertDialog.Builder(this);
|
||||
msg.setTitle(R.string.free_version_title);
|
||||
msg.setMessage(msgTx);
|
||||
if (Version.isMarketEnabled(getMyApplication())) {
|
||||
msg.setPositiveButton(R.string.install_paid, new DialogInterface.OnClickListener() {
|
||||
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(Version.marketPrefix(getMyApplication())
|
||||
+ "net.osmand.plus"));
|
||||
try {
|
||||
startActivity(intent);
|
||||
} catch (ActivityNotFoundException e) {
|
||||
}
|
||||
}
|
||||
});
|
||||
msg.setNegativeButton(R.string.shared_string_cancel, null);
|
||||
} else {
|
||||
msg.setNeutralButton(R.string.shared_string_ok, null);
|
||||
}
|
||||
msg.show();
|
||||
}
|
||||
|
||||
protected void downloadFilesCheckInternet() {
|
||||
if (!getMyApplication().getSettings().isWifiConnected()) {
|
||||
if (getMyApplication().getSettings().isInternetConnectionAvailable()) {
|
||||
|
@ -242,7 +253,7 @@ public class BaseDownloadActivity extends ActionBarProgressActivity {
|
|||
m += getString(R.string.available_downloads_left, MAXIMUM_AVAILABLE_FREE_DOWNLOADS - settings.NUMBER_OF_FREE_DOWNLOADS.get());
|
||||
msg.setMessage(m);
|
||||
if (Version.isMarketEnabled(getMyApplication())) {
|
||||
msg.setNeutralButton(R.string.install_paid, new DialogInterface.OnClickListener() {
|
||||
msg.setPositiveButton(R.string.install_paid, new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(Version.marketPrefix(getMyApplication()) + "net.osmand.plus"));
|
||||
|
@ -252,8 +263,11 @@ public class BaseDownloadActivity extends ActionBarProgressActivity {
|
|||
}
|
||||
}
|
||||
});
|
||||
msg.setNegativeButton(R.string.shared_string_cancel, null);
|
||||
} else {
|
||||
msg.setNeutralButton(R.string.shared_string_ok, null);
|
||||
}
|
||||
msg.setPositiveButton(R.string.shared_string_ok, null);
|
||||
|
||||
msg.show();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,8 +3,10 @@ package net.osmand.plus.download;
|
|||
import java.lang.ref.WeakReference;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import net.osmand.IndexConstants;
|
||||
import net.osmand.plus.OsmandApplication;
|
||||
|
@ -19,6 +21,7 @@ import net.osmand.plus.base.BasicProgressAsyncTask;
|
|||
import net.osmand.plus.srtmplugin.SRTMPlugin;
|
||||
import net.osmand.plus.views.controls.PagerSlidingTabStrip;
|
||||
import android.app.AlertDialog;
|
||||
import android.app.AlertDialog.Builder;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.os.AsyncTask;
|
||||
|
@ -137,6 +140,14 @@ public class DownloadActivity extends BaseDownloadActivity {
|
|||
}
|
||||
|
||||
});
|
||||
findViewById(R.id.WikiButton).setOnClickListener(new View.OnClickListener(){
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
downloadWikiFiles();
|
||||
}
|
||||
});
|
||||
((ImageView)findViewById(R.id.WikiButton)).setImageResource(R.drawable.ic_action_wikipedia);
|
||||
|
||||
downloadTypes = createDownloadTypes();
|
||||
final Intent intent = getIntent();
|
||||
|
@ -158,9 +169,8 @@ public class DownloadActivity extends BaseDownloadActivity {
|
|||
changeType(downloadTypes.get(0));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public Map<String, String> getIndexActivatedFileNames() {
|
||||
return downloadListIndexThread != null ? downloadListIndexThread.getIndexActivatedFileNames() : null;
|
||||
}
|
||||
|
@ -299,6 +309,36 @@ public class DownloadActivity extends BaseDownloadActivity {
|
|||
|
||||
}
|
||||
|
||||
protected void downloadWikiFiles() {
|
||||
|
||||
if (Version.isFreeVersion(getMyApplication())) {
|
||||
dialogToInstallPaid();
|
||||
} else {
|
||||
Builder bld = new AlertDialog.Builder(this);
|
||||
// TODO message
|
||||
String countries = "";
|
||||
final List<IndexItem> wi = getWikipediaItems();
|
||||
for(IndexItem i : wi) {
|
||||
countries += i.getDescription() +", ";
|
||||
}
|
||||
bld.setMessage(countries);
|
||||
|
||||
bld.setPositiveButton(R.string.shared_string_ok, new DialogInterface.OnClickListener() {
|
||||
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
for(IndexItem i : wi) {
|
||||
addToDownload(i);
|
||||
}
|
||||
}
|
||||
});
|
||||
bld.setPositiveButton(R.string.shared_string_cancel, null);
|
||||
if(wi.size() > 0) {
|
||||
bld.show();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateDownloadButton() {
|
||||
// View view = getView();
|
||||
|
@ -308,7 +348,7 @@ public class DownloadActivity extends BaseDownloadActivity {
|
|||
// int x = getExpandableListView().getScrollX();
|
||||
// int y = getExpandableListView().getScrollY();
|
||||
if (getEntriesToDownload().isEmpty()) {
|
||||
findViewById(R.id.DownloadButton).setVisibility(View.GONE);
|
||||
findViewById(R.id.DownloadLayout).setVisibility(View.GONE);
|
||||
} else {
|
||||
BasicProgressAsyncTask<?, ?, ?> task = DownloadActivity.downloadListIndexThread.getCurrentRunningTask();
|
||||
boolean running = task instanceof DownloadIndexesThread.DownloadIndexesAsyncTask;
|
||||
|
@ -320,7 +360,7 @@ public class DownloadActivity extends BaseDownloadActivity {
|
|||
} else {
|
||||
text = getString(R.string.shared_string_downloading) + " (" + downloads + ")"; //$NON-NLS-1$
|
||||
}
|
||||
findViewById(R.id.DownloadButton).setVisibility(View.VISIBLE);
|
||||
findViewById(R.id.DownloadLayout).setVisibility(View.VISIBLE);
|
||||
if (Version.isFreeVersion(getMyApplication())) {
|
||||
int left = DownloadActivity.MAXIMUM_AVAILABLE_FREE_DOWNLOADS - settings.NUMBER_OF_FREE_DOWNLOADS.get() - downloads;
|
||||
boolean excessLimit = left < 0;
|
||||
|
@ -331,6 +371,8 @@ public class DownloadActivity extends BaseDownloadActivity {
|
|||
}
|
||||
}
|
||||
((Button) findViewById(R.id.DownloadButton)).setText(text);
|
||||
List<IndexItem> wikipediaItems = getWikipediaItems();
|
||||
findViewById(R.id.WikiButton).setVisibility(wikipediaItems.size() == 0 ? View.GONE : View.VISIBLE);
|
||||
}
|
||||
|
||||
for(WeakReference<Fragment> ref : fragList) {
|
||||
|
@ -354,6 +396,38 @@ public class DownloadActivity extends BaseDownloadActivity {
|
|||
// getExpandableListView().scrollTo(x, y);
|
||||
// }
|
||||
}
|
||||
|
||||
|
||||
|
||||
private List<IndexItem> getWikipediaItems() {
|
||||
Set<String> wikipediaItems = new HashSet<String>();
|
||||
Map<String, String> indexed = getMyApplication().getResourceManager().getIndexFileNames();
|
||||
for(IndexItem i : getEntriesToDownload().keySet()) {
|
||||
if(i.getType() == DownloadActivityType.NORMAL_FILE) {
|
||||
boolean fit = true;
|
||||
fit = fit && i.getFileName().contains("obf");
|
||||
fit = fit && !i.getFileName().contains("world");
|
||||
String fname = i.getBasename();
|
||||
if(fit && !indexed.containsKey(fname+".wiki.obf") ) {
|
||||
wikipediaItems.add(fname);
|
||||
}
|
||||
} else if(i.getType() == DownloadActivityType.WIKIPEDIA_FILE) {
|
||||
wikipediaItems.remove(i.getBasename());
|
||||
}
|
||||
}
|
||||
List<IndexItem> res = new ArrayList<IndexItem>();
|
||||
IndexFileList list = downloadListIndexThread.getIndexFiles();
|
||||
if (list != null) {
|
||||
List<IndexItem> indexFiles = list.getIndexFiles();
|
||||
for(IndexItem i : indexFiles) {
|
||||
if(i.getType() == DownloadActivityType.WIKIPEDIA_FILE &&
|
||||
wikipediaItems.contains(i.getBasename())) {
|
||||
res.add(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
public List<DownloadActivityType> getDownloadTypes() {
|
||||
|
@ -436,4 +510,9 @@ public class DownloadActivity extends BaseDownloadActivity {
|
|||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -171,8 +171,7 @@ public class DownloadIndexFragment extends OsmandExpandableListFragment {
|
|||
public void deselectAll() {
|
||||
DownloadActivity.downloadListIndexThread.getEntriesToDownload().clear();
|
||||
listAdapter.notifyDataSetInvalidated();
|
||||
|
||||
getDownloadActivity().findViewById(R.id.DownloadButton).setVisibility(View.GONE);
|
||||
getDownloadActivity().updateDownloadButton();
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -96,6 +96,11 @@ public class DownloadIndexesThread {
|
|||
return indexFiles != null ? indexFiles.getIndexFiles() : null;
|
||||
}
|
||||
|
||||
|
||||
public IndexFileList getIndexFiles() {
|
||||
return indexFiles;
|
||||
}
|
||||
|
||||
public Map<String, String> getIndexFileNames(){
|
||||
return indexFileNames;
|
||||
}
|
||||
|
@ -424,7 +429,7 @@ public class DownloadIndexesThread {
|
|||
AccessibleToast.makeText(uiActivity, R.string.basemap_was_selected_to_download,
|
||||
Toast.LENGTH_LONG).show();
|
||||
if (uiActivity instanceof DownloadActivity){
|
||||
uiActivity.findViewById(R.id.DownloadButton).setVisibility(View.VISIBLE);
|
||||
((DownloadActivity)uiActivity).updateDownloadButton();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -117,7 +117,7 @@ public class DownloadOsmandIndexesHelper {
|
|||
DownloadActivityType tp = DownloadActivityType.getIndexType(parser.getAttributeValue(null, "type"));
|
||||
if (tp != null) {
|
||||
IndexItem it = tp.parseIndexItem(ctx, parser);
|
||||
if(it != null) {
|
||||
if(it != null && !it.getFileName().contains("_wiki")) {
|
||||
result.add(it);
|
||||
}
|
||||
} else if ("osmand_regions".equals(parser.getName())) {
|
||||
|
|
|
@ -226,8 +226,7 @@ public class UpdatesIndexFragment extends OsmAndListFragment {
|
|||
public void deselectAll() {
|
||||
DownloadActivity.downloadListIndexThread.getEntriesToDownload().clear();
|
||||
listAdapter.notifyDataSetInvalidated();
|
||||
|
||||
getDownloadActivity().findViewById(R.id.DownloadButton).setVisibility(View.GONE);
|
||||
getDownloadActivity().updateDownloadButton();
|
||||
}
|
||||
|
||||
private void filterExisting() {
|
||||
|
|
|
@ -465,8 +465,8 @@ public class POIMapLayer extends OsmandMapLayer implements ContextMenuLayer.ICon
|
|||
final OsmandApplication app, final Amenity a, final Dialog dialog) {
|
||||
final PopupMenu optionsMenu = new PopupMenu(ctx, tb, Gravity.RIGHT);
|
||||
Set<String> names = new TreeSet<String>();
|
||||
names.addAll(a.getNames("content"));
|
||||
names.addAll(a.getNames("description"));
|
||||
names.addAll(a.getNames("content", "en"));
|
||||
names.addAll(a.getNames("description", "en"));
|
||||
|
||||
for (final String n : names) {
|
||||
String vn = FileNameTranslationHelper.getVoiceName(ctx, n);
|
||||
|
|
Loading…
Reference in a new issue