style issues

This commit is contained in:
simon 2020-09-07 11:30:51 +03:00
parent 8dd5bda3fc
commit 8505f67d68
10 changed files with 97 additions and 379 deletions

View file

@ -7,7 +7,7 @@
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.STORAGE" />
@ -52,7 +52,7 @@
<application android:allowBackup="true" android:backupAgent="net.osmand.plus.OsmandBackupAgent"
android:icon="@mipmap/icon" android:label="@string/app_name"
android:name="net.osmand.plus.OsmandApplication" android:configChanges="locale"
android:theme="@style/OsmandDarkTheme" android:restoreAnyVersion="true" android:largeHeap="true"
android:theme="@style/OsmandDarkTheme" android:restoreAnyVersion="true" android:largeHeap="true"
android:supportsRtl="true" android:usesCleartextTraffic="true">
<meta-data android:name="com.google.android.backup.api_key" android:value="AEdPqrEAAAAIqF3tNGT66etVBn_vgzpfAY1wmIzKV1Ss6Ku-2A" />
@ -66,7 +66,7 @@
<activity android:name="net.osmand.plus.activities.HelpActivity" />
<activity android:name="net.osmand.plus.activities.ExitActivity" />
<provider
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="net.osmand.plus.fileprovider"
android:exported="false"
@ -952,7 +952,7 @@
<!-- keep android:process on a separate line !! -->
<service
android:process="net.osmand.plus"
android:process="net.osmand.plus"
android:label="@string/process_navigation_service"
android:name="net.osmand.plus.NavigationService"
android:foregroundServiceType="location"

View file

@ -1,110 +0,0 @@
body {
margin:0;
padding:20px;
max-width: 1250px;
}
table {
border-collapse: collapse;
}
.send-private-giveaway, .register-giveaway, .access-server-logs, .update-btc-report {
margin: 20px 0px;
border: 1px solid #e6e6e6;
width: 50%;
}
.wrapper {
list-style-type: none;
padding: 0;
border-radius: 3px;
}
.form-row {
display: flex;
justify-content: flex-start;
align-items: flex-start;
padding: 5px;
text-align: left;
}
.form-row > label {
flex: 1;
}
.form-row > input {
flex: 1;
width: auto;
}
.form-row > button {
flex: 1;
}
th, td {
text-align: left;
padding: 8px;
}
tr:nth-child(even){background-color: #f2f2f2}
tr:hover {background-color: #d5d5d5;}
th {
background-color: #4CAF50;
color: white;
}
.loader,
.loader:before,
.loader:after {
border-radius: 50%;
width: 2.5em;
height: 2.5em;
-webkit-animation-fill-mode: both;
animation-fill-mode: both;
-webkit-animation: load7 1.8s infinite ease-in-out;
animation: load7 1.8s infinite ease-in-out;
}
.loader {
color: #00ffff;
font-size: 10px;
margin: 25px auto;
position: relative;
text-indent: -9999em;
-webkit-transform: translateZ(0);
-ms-transform: translateZ(0);
transform: translateZ(0);
-webkit-animation-delay: -0.16s;
animation-delay: -0.16s;
}
.loader:before,
.loader:after {
content: '';
position: absolute;
top: 0;
}
.loader:before {
left: -3.5em;
-webkit-animation-delay: -0.32s;
animation-delay: -0.32s;
}
.loader:after {
left: 3.5em;
}
@-webkit-keyframes load7 {
0%,
80%,
100% {
box-shadow: 0 2.5em 0 -1.3em;
}
40% {
box-shadow: 0 2.5em 0 0;
}
}
@keyframes load7 {
0%,
80%,
100% {
box-shadow: 0 2.5em 0 -1.3em;
}
40% {
box-shadow: 0 2.5em 0 0;
}
}

View file

@ -1,86 +0,0 @@
var blogArticles = [
{title:'OsmAnd for iPhone is released', url:'blog.html?id=osmand-ios', id:'osmand-ios', gatag:'osmand_ios'},
{title:'Nautical charts', url:'blog.html?id=nautical-charts', id:'nautical-charts', gatag:'nautical_charts'},
{title:'OsmAnd DVR goes live', url:'blog.html?id=osmand-dvr-goes-live', id:'osmand-dvr-goes-live', gatag:'osmand_dvr_goes_live'},
{title:'OsmAnd 1.9', url:'blog.html?id=osmand-1-9-released', id:'osmand-1-9-released', gatag:'osmand_1_9'},
{title:'OsmAnd 1.8', url:'blog.html?id=osmand-1-8-released', id:'osmand-1-8-released', gatag:'osmand_1_8'},
{title:'OsmAnd 1.7', url:'blog.html?id=osmand-1-7-released', id:'osmand-1-7-released', gatag:'osmand_1_7'},
{title:'OsmAnd 1.6 Released', url:'blog.html?id=osmand-1-6-released', id:'osmand-1-6-released', gatag:'osmand_1_6'},
{title:'OsmAnd 1.5 Released', url:'blog.html?id=osmand-1-5-released', id:'osmand-1-5-released', gatag:'osmand_1_5'}
];
var webSiteUrl = "http://osmand.net";
$.urlParam = function(url, name){
var results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(url);
if (results==null){
return null;
}
else{
return results[1] || 0;
}
}
function blog(container){
var getFullArticleUrl = function(articleObj){
return webSiteUrl + "/" + articleObj.url;
}
var fixTwitter =function (){
$('#___plusone_0 iframe').css('height', '21px');
}
var updateMetaTags = function(articleObj){
if (articleObj && articleObj != null){
var articleFullUrl = getFullArticleUrl(articleObj);
$('meta[property="og:title"]').attr('content', articleObj.title);
$('meta[property="og:url"]').attr('content', articleFullUrl);
$('meta[property="og:description"]').attr('content', articleObj.title);
$('link[rel="canonical"]').attr('href', articleFullUrl);
$('div.fb-like').attr('data-href', articleFullUrl);
$('.twitter-share-button').attr('data-url', articleFullUrl);
}
}
var getArticleById = function(articleid){
for(var i=0; i < blogArticles.length;++i){
if (blogArticles[i].id === articleid){
return blogArticles[i];
}
}
return null;
}
var init = function(){
container.empty();
for(var i=0; i < blogArticles.length; ++i){
var link = blogArticles[i];
container.append('<li><a data-gatag="' +link.gatag+ '" data-index="' + link.index+ '" href="' + link.url + '">' + link.title + '</a></li>');
}
var articleid = $.urlParam(window.location.href, 'id');
if (!articleid || articleid == null){
articleid = blogArticles[0].id;
}
//hide share buttons
$('.share_buttons').css('display', 'none');
updateMetaTags(getArticleById(articleid));
var url = 'blog_articles' + '/' + articleid + ".html";
$( ".article" ).load(url, function( response, status, xhr) {
if ( status != "error" ) {
$('.share_buttons').css('display', 'block');
setTimeout(fixTwitter, 5000);
}
});
}
init();
}

View file

@ -1,35 +0,0 @@
function applyPolStyles(){
if ($('.pds-box').length > 0){
$('.pds-box').css('border', 'none');
$('.pds-vote-button').css('float', 'left');
$('.pds-vote-button').css('background', 'none');
$('.pds-vote-button').css('background-color', '#FF8F00');
$('.pds-vote-button').css('color', '#fff');
$('.pds-vote-button').css('border', 'none');
$('.pds-vote-button').css('border-radius', '5px');
$('.pds-box-outer').css('padding', '0');
$('.pds-view-results').on('click', function(){
subscribeToReturnToPoll();
});
}else{
setTimeout(applyPolStyles, timeout);
}
}
function subscribeToReturnToPoll(){
if ($('.pds-return-poll').length > 0){
$('.pds-return-poll').on('click', function(){applyStyleOnBackToPoll();});
applyPolStyles();
}else{
setTimeout(subscribeToReturnToPoll, timeout);
}
}
function applyStyleOnBackToPoll(){
if ($('.pds-view-results').length >0){
applyPolStyles();
}else{
setTimeout(applyStyleOnBackToPoll, timeout);
}
}

View file

@ -1,129 +0,0 @@
var images_android=[
"promo-1s.png",
"promo-2s.png",
"promo-3s.png",
"promo-4s.png",
"promo-5s.png",
"promo-6s.png",
"promo-7s.png",
"promo-8s.png",
"promo-9s.png",
"promo-10s.png",
"promo-11s.png",
"promo-12s.png"
];
var images_ios=[
"ios-1s.png",
"ios-2s.png",
"ios-3s.png",
"ios-4s.png",
"ios-5s.png"
];
function slider(container){
var $cnt = $(container);
var $img1 = $cnt.find("#screenshot1");
var $img2 =$cnt.find("#screenshot2");
var $img3 = $cnt.find("#screenshot3");
var $img4 = $cnt.find("#screenshot4");
var $leftarrow = $cnt.find(".arrow.left");
var $rightarrow = $cnt.find(".arrow.right");
var $btnleft = $cnt.find(".button.left");
var $btnright = $cnt.find(".button.right");
var currentPosition =0;
var count =4;
var images = images_android;
var init = function(){
updatePictures();
updateArrows();
$leftarrow.on('click', function(){
if (currentPosition > 0){
currentPosition-=count;
updatePictures();
updateArrows();
}
});
$rightarrow.on('click', function(){
if (currentPosition + count < images.length){
currentPosition+=count;
updatePictures();
updateArrows();
}
});
$btnleft.on('click', function(){
if (!$btnleft.hasClass("active")){
$btnleft.addClass("active");
$btnright.removeClass("active");
$btnright.addClass
images = images_android;
currentPosition = 0;
updatePictures();
updateArrows();
}
});
$btnright.on('click', function(){
if (!$btnright.hasClass("active")){
$btnright.addClass("active");
$btnleft.removeClass("active");
images = images_ios;
currentPosition = 0;
updatePictures();
updateArrows();
}
});
}
var changePicture = function(img, index){
if (index < images.length){
img.attr("src", "images/" + images[index]);
}else{
img.attr("src", "images/empty.png");
}
}
var updatePictures = function(){
changePicture( $img1, currentPosition);
changePicture( $img2, currentPosition+1);
changePicture( $img3, currentPosition+2);
changePicture( $img4, currentPosition+3);
}
var updateArrows = function(){
if (currentPosition + count < images.length){
enableRightArrow();
}else{
disableRightArrow();
}
if (currentPosition== 0 ){
disableLeftArrow();
}else{
enableLeftArrow();
}
}
var enableLeftArrow = function(){
$leftarrow.attr("src", "images/left_arrow_orange.png");
while ($leftarrow.hasClass("disabled")){
$leftarrow.removeClass("disabled");
}
}
var disableLeftArrow = function(){
$leftarrow.attr("src", "images/left_arrow_grey.png");
$leftarrow.addClass("disabled");
}
var enableRightArrow = function(){
$rightarrow.attr("src", "images/right_arrow_orange.png");
while ($rightarrow.hasClass("disabled")){
$rightarrow.removeClass("disabled");
}
}
var disableRightArrow = function(){
$rightarrow.attr("src", "images/right_arrow_grey.png");
$rightarrow.addClass("disabled");
}
init();
}

View file

@ -0,0 +1,8 @@
package net.osmand.plus.server;
import android.graphics.Bitmap;
import net.osmand.data.RotatedTileBox;
public interface IMapOnImageDrawn {
void onDraw(RotatedTileBox viewport, Bitmap bmp);
}

View file

@ -1,10 +1,14 @@
package net.osmand.plus.server;
import android.graphics.Bitmap;
import android.util.Log;
import android.webkit.MimeTypeMap;
import androidx.fragment.app.FragmentActivity;
import fi.iki.elonen.NanoHTTPD;
import net.osmand.PlatformUtil;
import net.osmand.data.RotatedTileBox;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.activities.MapActivity;
import net.osmand.plus.server.endpoints.TileEndpoint;
import java.io.IOException;
@ -12,13 +16,14 @@ import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
public class OsmAndHttpServer extends NanoHTTPD {
public class OsmAndHttpServer extends NanoHTTPD{
private static final String FOLDER_NAME = "server";
private static final org.apache.commons.logging.Log LOG = PlatformUtil.getLog(OsmAndHttpServer.class);
public static final int PORT = 24990;
public static String HOSTNAME = "0.0.0.0";
private final Map<String, ApiEndpoint> endpoints = new HashMap<>();
private OsmandApplication application;
private MapActivity mapActivity;
public OsmAndHttpServer() throws IOException {
super(HOSTNAME, PORT);
@ -72,7 +77,7 @@ public class OsmAndHttpServer extends NanoHTTPD {
}
private void registerEndpoints() {
register("/tile", new TileEndpoint(application));
register("/tile", new TileEndpoint(application,mapActivity));
}
private void register(String path, ApiEndpoint endpoint) {
@ -95,6 +100,7 @@ public class OsmAndHttpServer extends NanoHTTPD {
is,
is.available());
} catch (IOException e) {
LOG.error(e);
return ErrorResponses.response404;
}
}
@ -111,6 +117,17 @@ public class OsmAndHttpServer extends NanoHTTPD {
return type;
}
public void setActivity(FragmentActivity activity) {
if (activity instanceof MapActivity){
this.mapActivity = (MapActivity)activity;
}
for (String endpoint : endpoints.keySet()){
if (endpoints.get(endpoint) instanceof TileEndpoint){
((TileEndpoint) endpoints.get(endpoint)).setMapActivity(mapActivity);
}
}
}
public static class ErrorResponses {
public static NanoHTTPD.Response response404 =
newFixedLengthResponse(NanoHTTPD.Response.Status.NOT_FOUND,

View file

@ -12,15 +12,18 @@ import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import net.osmand.PlatformUtil;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.R;
import net.osmand.plus.base.BaseOsmAndFragment;
import org.apache.commons.logging.Log;
import java.io.IOException;
import static android.content.Context.WIFI_SERVICE;
public class ServerFragment extends BaseOsmAndFragment {
private final static Log LOG = PlatformUtil.getLog(ServerFragment.class);
private boolean initialized = false;
private OsmAndHttpServer server;
private View view;
@ -85,13 +88,14 @@ public class ServerFragment extends BaseOsmAndFragment {
try {
server = new OsmAndHttpServer();
server.setApplication((OsmandApplication) getMyApplication());
server.setActivity(this.getActivity());
initialized = true;
updateTextView("Server started at: http://" + getDeviceAddress() + ":" + OsmAndHttpServer.PORT);
} catch (IOException e) {
Toast.makeText(requireContext(),
e.getLocalizedMessage(),
Toast.LENGTH_SHORT).show();
e.printStackTrace();
LOG.error(e);
}
}

View file

@ -1,15 +1,19 @@
package net.osmand.plus.server.endpoints;
import android.graphics.Bitmap;
import android.util.Log;
import androidx.fragment.app.FragmentActivity;
import fi.iki.elonen.NanoHTTPD;
import net.osmand.PlatformUtil;
import net.osmand.data.RotatedTileBox;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.activities.MapActivity;
import net.osmand.plus.render.MapRenderRepositories;
import net.osmand.plus.resources.AsyncLoadingThread;
import net.osmand.plus.server.ApiEndpoint;
import net.osmand.plus.server.IMapOnImageDrawn;
import net.osmand.plus.server.OsmAndHttpServer;
import net.osmand.plus.server.ServerFragment;
import org.apache.commons.logging.Log;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
@ -20,21 +24,33 @@ import java.util.Scanner;
import static fi.iki.elonen.NanoHTTPD.newFixedLengthResponse;
public class TileEndpoint implements ApiEndpoint {
public class TileEndpoint implements ApiEndpoint, IMapOnImageDrawn {
private static final int RENDER_WAIT_THRESHOLD = 5000;
private static final Object lock = new Object();
private static final int TILE_SIZE_PX = 512;
private static final Log LOG = PlatformUtil.getLog(TileEndpoint.class);
Map<RotatedTileBox, Bitmap> hashMap = new HashMap<>();
Map<RotatedTileBox, Bitmap> map = Collections.synchronizedMap(hashMap);
OsmandApplication application;
private RotatedTileBox viewPort;
private Bitmap resultBitmap;
private MapActivity mapActivity;
public TileEndpoint(OsmandApplication application) {
@Override
public void onDraw(RotatedTileBox viewport, Bitmap bmp) {
map.put(viewport, bmp);
}
public TileEndpoint(OsmandApplication application, MapActivity mapActivity) {
this.application = application;
this.mapActivity = mapActivity;
}
@Override
public NanoHTTPD.Response process(NanoHTTPD.IHTTPSession session) {
synchronized (lock) {
this.mapActivity.getMapView().setOnImageDrawnListener(this);
RotatedTileBox tileBoxCopy = mapActivity.getMapView().getCurrentRotatedTileBox().copy();
int zoom;
double lat;
double lon;
@ -52,6 +68,7 @@ public class TileEndpoint implements ApiEndpoint {
bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();
ByteArrayInputStream str = new ByteArrayInputStream(byteArray);
mapActivity.getMapView().setCurrentViewport(tileBoxCopy);
return newFixedLengthResponse(
NanoHTTPD.Response.Status.OK,
"image/png",
@ -65,25 +82,42 @@ public class TileEndpoint implements ApiEndpoint {
this.application = application;
}
public void setMapActivity(MapActivity mapActivity) {
this.mapActivity = mapActivity;
}
private Bitmap requestTile(double lat, double lon, int zoom) {
final RotatedTileBox rotatedTileBox = new RotatedTileBox.RotatedTileBoxBuilder()
.setLocation(lat, lon)
.setZoom(zoom)
.setPixelDimensions(TILE_SIZE_PX, TILE_SIZE_PX, 0.5f, 0.5f).build();
final MapRenderRepositories renderer = application.getResourceManager().getRenderer();
application.getResourceManager().updateRendererMap(rotatedTileBox, new AsyncLoadingThread.OnMapLoadedListener() {
@Override
public void onMapLoaded(boolean interrupted) {
map.put(rotatedTileBox, renderer.getBitmap());
}
});
Bitmap bmp;
mapActivity.getMapView().setCurrentViewport(rotatedTileBox);
// application.getResourceManager().updateRendererMap(rotatedTileBox, new AsyncLoadingThread.OnMapLoadedListener() {
// @Override
// public void onMapLoaded(boolean interrupted) {
// map.put(rotatedTileBox, renderer.getBitmap());
// }
// });
Bitmap bmp = null;
int sleepTime = 500;
int timeout = 0;
// try {
// while ((viewPort == null && !rotatedTileBox.equals(viewPort)) || timeout < 5000) {
// Thread.sleep(100);
// timeout += 100;
// }
// return resultBitmap;
// } catch (InterruptedException e) {
// LOG.error(e);
// }
while ((bmp = map.get(rotatedTileBox)) == null) {
try {
Thread.sleep(sleepTime);
} catch (InterruptedException e) {
e.printStackTrace();
LOG.error(e);
}
sleepTime += 500;
if (sleepTime > RENDER_WAIT_THRESHOLD) {

View file

@ -46,6 +46,8 @@ import net.osmand.plus.OsmandApplication;
import net.osmand.plus.R;
import net.osmand.plus.activities.MapActivity;
import net.osmand.plus.helpers.TwoFingerTapDetector;
import net.osmand.plus.server.IMapOnImageDrawn;
import net.osmand.plus.server.endpoints.TileEndpoint;
import net.osmand.plus.settings.backend.OsmandSettings;
import net.osmand.plus.views.MultiTouchSupport.MultiTouchZoomListener;
import net.osmand.plus.views.OsmandMapLayer.DrawSettings;
@ -77,6 +79,7 @@ public class OsmandMapTileView implements IMapDownloaderCallback {
protected OsmandSettings settings = null;
private CanvasColors canvasColors = null;
private Boolean nightMode = null;
private IMapOnImageDrawn mapOnImageDrawnListener;
private class CanvasColors {
int colorDay = MAP_DEFAULT_COLOR;
@ -86,7 +89,7 @@ public class OsmandMapTileView implements IMapDownloaderCallback {
private class FPSMeasurement {
int fpsMeasureCount = 0;
int fpsMeasureMs = 0;
long fpsFirstMeasurement = 0;
long fpsFirstMeasurement = 0 ;
float fps;
void calculateFPS(long start, long end) {
@ -341,6 +344,10 @@ public class OsmandMapTileView implements IMapDownloaderCallback {
return application;
}
public void setOnImageDrawnListener(IMapOnImageDrawn iMapOnImageDrawn) {
this.mapOnImageDrawnListener = iMapOnImageDrawn;
}
// ///////////////////////// NON UI PART (could be extracted in common) /////////////////////////////
public LatLon getFirstTouchPointLatLon() {
return firstTouchPointLatLon;
@ -574,6 +581,9 @@ public class OsmandMapTileView implements IMapDownloaderCallback {
if (!bufferBitmap.isRecycled()) {
RectF rct = new RectF(x1, y1, x2, y2);
canvas.drawBitmap(bufferBitmap, null, rct, paintImg);
if (mapOnImageDrawnListener != null){
mapOnImageDrawnListener.onDraw(currentViewport,bufferBitmap);
}
}
canvas.rotate(-rot, currentViewport.getCenterPixelX(), currentViewport.getCenterPixelY());
}
@ -869,6 +879,11 @@ public class OsmandMapTileView implements IMapDownloaderCallback {
return currentViewport;
}
public void setCurrentViewport(RotatedTileBox viewport) {
currentViewport = viewport;
refreshMap();
}
public float getDensity() {
return currentViewport.getDensity();
}