diff --git a/.idea/caches/deviceStreaming.xml b/.idea/caches/deviceStreaming.xml
index 8178718..528f19e 100644
--- a/.idea/caches/deviceStreaming.xml
+++ b/.idea/caches/deviceStreaming.xml
@@ -75,6 +75,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
@@ -124,19 +136,19 @@
-
-
-
-
+
+
+
+
-
-
+
+
-
+
@@ -342,6 +354,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
@@ -548,6 +572,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
@@ -560,6 +596,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
@@ -769,6 +817,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/java/kz/istt/locust/LocustDelListActivity.java b/app/src/main/java/kz/istt/locust/LocustDelListActivity.java
index ee0f106..75c3014 100644
--- a/app/src/main/java/kz/istt/locust/LocustDelListActivity.java
+++ b/app/src/main/java/kz/istt/locust/LocustDelListActivity.java
@@ -606,16 +606,16 @@ public class LocustDelListActivity extends AppCompatActivity
switch (spiList.getSelectedItemPosition())
{
case 0:
- cursor = rdb.rawQuery("select uid, coalesce(district,'') || ' ' || coalesce(terrain,'') terrain, date from frmlocustdel where del=0 and filled!=1 and device_id='" + android_id + "'", null); //Не отправленные
+ cursor = rdb.rawQuery("select uid, coalesce(area,'') || ' ' || coalesce(district,'') || ' ' || coalesce(terrain,'') terrain, date from frmlocustdel where del=0 and filled!=1 and device_id='" + android_id + "'", null); //Не отправленные
break;
case 1:
- cursor = rdb.rawQuery("select uid, coalesce(district,'') || ' ' || coalesce(terrain,'') terrain, date from frmlocustdel where del=0 and send=0 and filled=1 and device_id='"+android_id+"'", null); //Не отправленные
+ cursor = rdb.rawQuery("select uid, coalesce(area,'') || ' ' || coalesce(district,'') || ' ' || coalesce(terrain,'') terrain, date from frmlocustdel where del=0 and send=0 and filled=1 and device_id='"+android_id+"'", null); //Не отправленные
break;
case 2:
- cursor = rdb.rawQuery("select uid, coalesce(district,'') || ' ' || coalesce(terrain,'') terrain, date from frmlocustdel where del=0 and send=1 and device_id='"+android_id+"'", null); //Отправленные
+ cursor = rdb.rawQuery("select uid, coalesce(area,'') || ' ' || coalesce(district,'') || ' ' || coalesce(terrain,'') terrain, date from frmlocustdel where del=0 and send=1 and device_id='"+android_id+"'", null); //Отправленные
break;
default:
- cursor = rdb.rawQuery("select uid, coalesce(district,'') || ' ' || coalesce(terrain,'') terrain, date from frmlocustdel where del=0 and device_id='"+android_id+"'", null); //Все
+ cursor = rdb.rawQuery("select uid, coalesce(area,'') || ' ' || coalesce(district,'') || ' ' || coalesce(terrain,'') terrain, date from frmlocustdel where del=0 and device_id='"+android_id+"'", null); //Все
//cursor = rdb.rawQuery("select uid, coalesce(district,'') || ' ' || coalesce(terrain,'') terrain, date from frmlocustdel where del=0", null); //Все
break;
}
diff --git a/app/src/main/java/kz/istt/locust/LocustHealthListActivity.java b/app/src/main/java/kz/istt/locust/LocustHealthListActivity.java
index 5e5157e..f42aa9e 100644
--- a/app/src/main/java/kz/istt/locust/LocustHealthListActivity.java
+++ b/app/src/main/java/kz/istt/locust/LocustHealthListActivity.java
@@ -1,12 +1,20 @@
package kz.istt.locust;
+import android.Manifest;
import android.annotation.SuppressLint;
+import android.app.Activity;
import android.app.AlertDialog;
+import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
+import android.content.SharedPreferences;
+import android.content.pm.PackageManager;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Color;
+import android.location.Location;
+import android.location.LocationListener;
+import android.location.LocationManager;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
@@ -26,6 +34,7 @@ import android.widget.Spinner;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
+import androidx.core.app.ActivityCompat;
import java.io.File;
import java.text.ParseException;
@@ -35,8 +44,14 @@ import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
-public class LocustHealthListActivity extends AppCompatActivity
+import dbfields.selectDB;
+import tools.LatLonListener;
+
+public class LocustHealthListActivity extends AppCompatActivity implements LocationListener, LatLonListener
{
+ private LocationManager _lm;
+ private double _lat = 0; // c GPS приёмника
+ private double _lon = 0; // c GPS приёмника
public LinearLayout llList;
public MyButton btn;
@@ -122,6 +137,13 @@ public class LocustHealthListActivity extends AppCompatActivity
//Чтоб список обновлялся раз в минуту в соответствии с текущем фильтром (для наглядности отправки данных)
handler.post(runnable); // Начинаем выполнение задачи
+
+ // Чтоб слушать GPS (в конце метода чтобы успели присвоиться GUI компоненты локальным переменным)
+ _lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
+ if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
+ return;
+ }
+ _lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 500, 1, this);
}
@Override
@@ -601,14 +623,28 @@ public class LocustHealthListActivity extends AppCompatActivity
try {
rdb = dboh.getReadableDatabase();
+
+
+/*
+_lat = location.getLatitude();
+_lon = location.getLongitude();
+
+SELECT *,
+ ((latitude - ?) * (latitude - ?) + (longitude - ?) * (longitude - ?)) AS distance
+FROM locations
+ORDER BY distance ASC;
+*/
+
+
switch (spiList.getSelectedItemPosition())
{
case 0:
cursor = rdb.rawQuery("""
select
+ ld.seq,
ld.uid as frmlocustdel_uid,
lh.uid as frmlocusthealth_uid,
- coalesce(ld.district,'') || ' ' || coalesce(ld.terrain,'') terrain,
+ coalesce(ld.area,'') || ' ' || coalesce(ld.district,'') || ' ' || coalesce(ld.terrain,'') terrain,
lh.date,
EXISTS(select 1 from frmlocusthealth where frmlocustdel_uid=ld.uid) as health
from
@@ -617,14 +653,16 @@ public class LocustHealthListActivity extends AppCompatActivity
where
lh.del=0
and lh.filled!=1
+ order by ld.seq desc
""", null); //Не отправленные
break;
case 1:
cursor = rdb.rawQuery("""
select
+ ld.seq,
ld.uid as frmlocustdel_uid,
lh.uid as frmlocusthealth_uid,
- coalesce(ld.district,'') || ' ' || coalesce(ld.terrain,'') terrain,
+ coalesce(ld.area,'') || ' ' || coalesce(ld.district,'') || ' ' || coalesce(ld.terrain,'') terrain,
lh.date,
EXISTS(select 1 from frmlocusthealth where frmlocustdel_uid=ld.uid) as health
from
@@ -634,14 +672,16 @@ public class LocustHealthListActivity extends AppCompatActivity
lh.del=0
and lh.send=0
and lh.filled=1
+ order by ld.seq desc
""", null); //Не отправленные
break;
case 2:
cursor = rdb.rawQuery("""
select
+ ld.seq,
ld.uid as frmlocustdel_uid,
lh.uid as frmlocusthealth_uid,
- coalesce(ld.district,'') || ' ' || coalesce(ld.terrain,'') terrain,
+ coalesce(ld.area,'') || ' ' || coalesce(ld.district,'') || ' ' || coalesce(ld.terrain,'') terrain,
lh.date,
EXISTS(select 1 from frmlocusthealth where frmlocustdel_uid=ld.uid) as health
from
@@ -650,21 +690,58 @@ public class LocustHealthListActivity extends AppCompatActivity
where
lh.del=0
and lh.send=1
+ order by ld.seq desc
""", null); //Отправленные
break;
- default:
- cursor = rdb.rawQuery("""
- select
- ld.uid as frmlocustdel_uid,
- lh.uid as frmlocusthealth_uid,
- coalesce(ld.district,'') || ' ' || coalesce(ld.terrain,'') terrain,
- coalesce(lh.date,ld.date) as date,
- EXISTS(select 1 from frmlocusthealth where frmlocustdel_uid=ld.uid) as health
- from
- frmlocustdel ld
- left join frmlocusthealth lh on lh.frmlocustdel_uid=ld.uid
- where ld.del=0 and ld.filled=1
+ default: {
+
+ String prefName = "Distance";
+ SharedPreferences prefs = getSharedPreferences("CommonPrefs", Activity.MODE_PRIVATE);
+ String checked = prefs.getString(prefName, "");
+ if(checked.isEmpty() || checked.equals("1")) {
+ String[] selectionArgs = new String[]{
+ String.valueOf(_lat),
+ String.valueOf(_lat),
+ String.valueOf(_lon),
+ String.valueOf(_lon)
+ };
+ cursor = rdb.rawQuery("""
+
+ select
+ ld.seq,
+ ld.uid as frmlocustdel_uid,
+ lh.uid as frmlocusthealth_uid,
+ coalesce(ld.area,'') || ' ' || coalesce(ld.district,'') || ' ' || coalesce(ld.terrain,'') terrain,
+ coalesce(lh.date,ld.date) as date,
+ EXISTS(select 1 from frmlocusthealth where frmlocustdel_uid=ld.uid) as health,
+ ((ld.lat_center - ?) * (ld.lat_center - ?) + (ld.lon_center - ?) * (ld.lon_center - ?)) AS distance
+ from
+ frmlocustdel ld
+ left join frmlocusthealth lh on lh.frmlocustdel_uid=ld.uid
+ where
+ ld.del=0
+ and ld.filled=1
+ order by distance, ld.seq desc
+ """, selectionArgs); //Все
+ }else{
+ cursor = rdb.rawQuery("""
+ select
+ ld.seq,
+ ld.uid as frmlocustdel_uid,
+ lh.uid as frmlocusthealth_uid,
+ coalesce(ld.area,'') || ' ' || coalesce(ld.district,'') || ' ' || coalesce(ld.terrain,'') terrain,
+ coalesce(lh.date,ld.date) as date,
+ EXISTS(select 1 from frmlocusthealth where frmlocustdel_uid=ld.uid) as health
+ from
+ frmlocustdel ld
+ left join frmlocusthealth lh on lh.frmlocustdel_uid=ld.uid
+ where
+ ld.del=0
+ and ld.filled=1
+ order by ld.seq desc
""", null); //Все
+ }
+ }
break;
}
@@ -779,4 +856,21 @@ public class LocustHealthListActivity extends AppCompatActivity
dboh.close();
}
+ @Override
+ public void onLocationChanged(Location location)
+ {
+ _lat = location.getLatitude(); // от устройства
+ _lon = location.getLongitude(); // от устройства
+ }
+
+ @Override
+ public double getLat() {
+ return this._lat;
+ }
+
+ @Override
+ public double getLon() {
+ return this._lon;
+ }
+
}
diff --git a/app/src/main/java/kz/istt/locust/LocustListActivity.java b/app/src/main/java/kz/istt/locust/LocustListActivity.java
index e0a4bcd..b3b95ad 100644
--- a/app/src/main/java/kz/istt/locust/LocustListActivity.java
+++ b/app/src/main/java/kz/istt/locust/LocustListActivity.java
@@ -583,19 +583,19 @@ public class LocustListActivity extends AppCompatActivity
switch (spiList.getSelectedItemPosition())
{
case 0:
- sql = "select uid, coalesce(district,'') || ' ' || coalesce(terrain,'') terrain, date from frmlocust where del=0 and filled!=1";
+ sql = "select uid, coalesce(area,'') || ' ' || coalesce(district,'') || ' ' || coalesce(terrain,'') terrain, date from frmlocust where del=0 and filled!=1";
cursor = rdb.rawQuery(sql, null); //Не заполненые
break;
case 1:
- sql = "select uid, coalesce(district,'') || ' ' || coalesce(terrain,'') terrain, date from frmlocust where del=0 and send=0 and filled=1";
+ sql = "select uid, coalesce(area,'') || ' ' || coalesce(district,'') || ' ' || coalesce(terrain,'') terrain, date from frmlocust where del=0 and send=0 and filled=1";
cursor = rdb.rawQuery(sql, null); //Не отправленные
break;
case 2:
- sql = "select uid, coalesce(district,'') || ' ' || coalesce(terrain,'') terrain, date from frmlocust where del=0 and send=1";
+ sql = "select uid, coalesce(area,'') || ' ' || coalesce(district,'') || ' ' || coalesce(terrain,'') terrain, date from frmlocust where del=0 and send=1";
cursor = rdb.rawQuery(sql, null); //Отправленные
break;
default:
- sql = "select uid, coalesce(district,'') || ' ' || coalesce(terrain,'') terrain, date from frmlocust where del=0";
+ sql = "select uid, coalesce(area,'') || ' ' || coalesce(district,'') || ' ' || coalesce(terrain,'') terrain, date from frmlocust where del=0";
cursor = rdb.rawQuery(sql, null); //Все
break;
}
diff --git a/app/src/main/java/kz/istt/locust/SetupActivity.java b/app/src/main/java/kz/istt/locust/SetupActivity.java
index 1a0b89c..8694a93 100644
--- a/app/src/main/java/kz/istt/locust/SetupActivity.java
+++ b/app/src/main/java/kz/istt/locust/SetupActivity.java
@@ -66,6 +66,8 @@ public class SetupActivity extends Activity {
public EditText edtURL = null;
public EditText edtSyncDays = null;
public CheckBox cbIdentifyCountryRegion = null;
+ public CheckBox cbOrderByDistance = null;
+
public CheckBox cbShowAdvancedSettings = null;
public final static int TASK1_CODE = 1;
@@ -292,11 +294,40 @@ public class SetupActivity extends Activity {
editor.putString(prefName, "1"); //Default value
else
editor.putString(prefName, "0");
- editor.commit();
+ editor.apply();
}
};
cbIdentifyCountryRegion.setOnClickListener(oclBtnId);
+
+
+ cbOrderByDistance = (CheckBox) findViewById(R.id.cbOrderByDistance);
+
+ prefName = "Distance";
+ prefs = getSharedPreferences("CommonPrefs", Activity.MODE_PRIVATE);
+ checked = prefs.getString(prefName, "");
+ if(checked.equals("") || checked.equals("1"))
+ cbOrderByDistance.setChecked(true);
+ else
+ cbOrderByDistance.setChecked(false);
+
+ oclBtnId = new OnClickListener()
+ {
+ @Override
+ public void onClick(View v)
+ {
+ String prefName = "Distance";
+ SharedPreferences prefs = getSharedPreferences("CommonPrefs", Activity.MODE_PRIVATE);
+ SharedPreferences.Editor editor = prefs.edit();
+ if(cbOrderByDistance.isChecked())
+ editor.putString(prefName, "1"); //Default value
+ else
+ editor.putString(prefName, "0");
+ editor.apply();
+ }
+ };
+ cbOrderByDistance.setOnClickListener(oclBtnId);
+
//Кнопка для сканирования QR кода
btnQR = (Button) findViewById(R.id.btnQR);
OnClickListener oclBtnQR = new OnClickListener()
diff --git a/app/src/main/res/layout/activity_setup.xml b/app/src/main/res/layout/activity_setup.xml
index b0526ec..343b558 100644
--- a/app/src/main/res/layout/activity_setup.xml
+++ b/app/src/main/res/layout/activity_setup.xml
@@ -201,6 +201,11 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/Identify_country_region" />
+
Küpəciklərin sıxlığı/m² əvvəl
Sürfələrin sıxlığı/m² ilə
Sürfələrin sıxlığı/m²
+ Siyahıları məsafəyə görə sıralayın
Zəhmət olmasa GPS-i aktivləşdirin
Planşetə QR kodu ilə icazə verin
Planşet üzrə məsul şəxs-müfəttiş
diff --git a/app/src/main/res/values-hy/strings.xml b/app/src/main/res/values-hy/strings.xml
index 968e7fb..a574184 100644
--- a/app/src/main/res/values-hy/strings.xml
+++ b/app/src/main/res/values-hy/strings.xml
@@ -322,6 +322,7 @@
"Ձվապարկեր (խտություն /մ2) նախքան "
թրթուրների խտությունը (/մ²) հետ
թրթուրների խտությունը (/մ²) հետ
+ Դասավորել ցուցակները հեռավորության համաձայն
"Խնդրում ենք ակտիվացնել GPS-ը "
Լիազորեք պլանշետը QR կոդով
Պատասխանատու անձ (պլանշետի համար)
diff --git a/app/src/main/res/values-ka/strings.xml b/app/src/main/res/values-ka/strings.xml
index c57aa49..811bf6c 100644
--- a/app/src/main/res/values-ka/strings.xml
+++ b/app/src/main/res/values-ka/strings.xml
@@ -313,6 +313,7 @@
"პარკუჭანები (სიმჭიდროვე/მ²) ადრე "
მატლების სიმჭიდროვე (მ²) თან
მატლების სიმჭიდროვე (მ²) ადრე
+ სიების დახარისხება მანძილის მიხედვით
"გთხოვთ გააქტიუროთ GPS "
ტაბლეტის ავტორიზაცია QR კოდით
პასუხისმგებელი პირის ინსპექტორი
diff --git a/app/src/main/res/values-kg/strings.xml b/app/src/main/res/values-kg/strings.xml
index 28b830c..eb5ae70 100644
--- a/app/src/main/res/values-kg/strings.xml
+++ b/app/src/main/res/values-kg/strings.xml
@@ -316,6 +316,7 @@
Кубышкалар жыштыгы (/м²) мурун
Личинкалардын жыштыгы (/м²) менен
"Личинкалардын жыштыгы (/м²) мурун "
+ Тизмелерди аралыктары боюнча иреттөө
GPSти иштетиңиз
Планшетке QR коду аркылуу уруксат бериңиз
Планшет үчүн жооптуу (инспектор)
diff --git a/app/src/main/res/values-kk/strings.xml b/app/src/main/res/values-kk/strings.xml
index 21e7be8..61a214b 100644
--- a/app/src/main/res/values-kk/strings.xml
+++ b/app/src/main/res/values-kk/strings.xml
@@ -320,6 +320,7 @@
Күбіршектер (тығыздығы/м²) бұрын
Дернәсілдердің тығыздығы (/м²) бірге
"Дернәсілдердің тығыздығы (/м²) бұрын "
+ Тізімдерді қашықтық бойынша сұрыптау
GPS-ті іске қосыңыз
Планшетке QR коды арқылы рұқсат беріңіз
Планшетке жауапты тұлға (инспектор)
diff --git a/app/src/main/res/values-ps/strings.xml b/app/src/main/res/values-ps/strings.xml
index 12e7f11..3ac6ede 100644
--- a/app/src/main/res/values-ps/strings.xml
+++ b/app/src/main/res/values-ps/strings.xml
@@ -291,7 +291,8 @@
تعداد زه ملخ (نیچه) در متر مربع از
تراکم مچک ( / متر مربع ) سره
"تراکم مچک ( / متر مربع ) مخکې "
- مهرباني وکړئ GPS فعال کړئ
+ لیستونه د واټن له مخې ترتیب کړئ
+ مهرباني وکړئ GPS فعال کړئ
تابلیت تان را ذریعه کیوآر کود اختیار نمائید
شخص مسئول تفتیش
سازمان ها
diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml
index ad94e60..460c9dd 100644
--- a/app/src/main/res/values-ru/strings.xml
+++ b/app/src/main/res/values-ru/strings.xml
@@ -333,6 +333,7 @@
Плотность кубышек (/м²) до
Плотность личинок (/м²) от
Плотность личинок (/м²) до
+ Сортировать списки по расстоянию
Пожалуйста активируйте GPS
Авторизовать планшет по QR коду
diff --git a/app/src/main/res/values-tg/strings.xml b/app/src/main/res/values-tg/strings.xml
index c9182d5..398270d 100644
--- a/app/src/main/res/values-tg/strings.xml
+++ b/app/src/main/res/values-tg/strings.xml
@@ -324,6 +324,7 @@
Кузачаҳо ( зиччи м2) пеш
Зичии кирминаҳо (/м2) бо
Зичии кирминаҳо (/м2) пеш
+ Рӯйхатҳоро аз рӯи масофа ҷудо кунед
Лутфан GPS-ро фаъол созед
Ба планшет тавассути рамзи QR иҷозат диҳед
Шахси масъули планшет
diff --git a/app/src/main/res/values-tk/strings.xml b/app/src/main/res/values-tk/strings.xml
index 6038654..6d891fe 100644
--- a/app/src/main/res/values-tk/strings.xml
+++ b/app/src/main/res/values-tk/strings.xml
@@ -324,6 +324,7 @@
Ýumurtgaly küýzejikler ýada kubyşkalar (gürlügi/m²) çenli
Liçinkalaryň gürlügi (/m²) dan
Liçinkalaryň gürlügi (/m²) çenli
+ Sanawlary uzaklyk boýunça tertipläň
GPS-i işjeňleşdirmegiňizi haýyş edýäris
Planşedi QR kody bilen ygtyýarlandyryň
Planşet boýunça jogapkär adam
diff --git a/app/src/main/res/values-uz/strings.xml b/app/src/main/res/values-uz/strings.xml
index f9034f1..467c231 100644
--- a/app/src/main/res/values-uz/strings.xml
+++ b/app/src/main/res/values-uz/strings.xml
@@ -325,6 +325,7 @@
Ko\'zachalar zichligi (ta/m²) oldin
Lichinkalar zichligi (ta/m²) bilan
Lichinkalar zichligi (ta/m²) oldin
+ Roʻyxatlarni masofa boʻyicha tartiblang
Iltimos, GPSni faollashtiring
Planshetga QR kod orqali avtorizatsiya qiling
Planshet uchun javobgar shaxs
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 5e01afb..d9f1fd6 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -332,6 +332,7 @@
Map
Show map
Locate your country and region by GPS
+ Sort lists by distance
Please activate GPS
Authorize the tablet by QR code
Responsible person for the tablet (inspector)