diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml new file mode 100644 index 0000000..92debf0 --- /dev/null +++ b/.idea/deploymentTargetDropDown.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml index 1431050..5b230c0 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -5,16 +5,15 @@ diff --git a/.idea/migrations.xml b/.idea/migrations.xml new file mode 100644 index 0000000..f8051a6 --- /dev/null +++ b/.idea/migrations.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index e95a1e2..9117ac2 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,14 +9,13 @@ android { storePassword 'locustg@h0km' } } - compileSdkVersion 33 + defaultConfig { applicationId "kz.istt.locust" minSdkVersion 15 + versionCode 100 + versionName "2.4.4" targetSdkVersion 33 - versionCode 99 - versionName "2.4.3" - testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } buildTypes { @@ -34,13 +33,13 @@ android { } } - buildToolsVersion '30.0.3' - compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } namespace 'kz.istt.locust' + compileSdk 33 + buildToolsVersion '34.0.0' } dependencies { @@ -57,23 +56,4 @@ dependencies { testImplementation 'junit:junit:4.12' androidTestImplementation 'androidx.test.ext:junit:1.1.1' androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' -/* - implementation fileTree(include: ['*.jar'], dir: 'libs') - implementation 'com.android.support:appcompat-v7:28.0.0' - implementation 'com.android.support.constraint:constraint-layout:1.1.2' - implementation 'com.google.android.gms:play-services-maps:17.0.0' - implementation 'androidx.appcompat:appcompat:1.0.2' - testImplementation 'junit:junit:4.12' - androidTestImplementation 'com.android.support.test:runner:1.0.2' - androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' -*/ - - /*compile files('libs/commons-codec-1.6.jar') - compile files('libs/commons-logging-1.1.1.jar') - - compile files('libs/fluent-hc-4.5.2.jar') - compile files('libs/httpclient-4.5.2.jar') - compile files('libs/httpclient-cache-4.5.2.jar') - compile files('libs/httpcore-4.4.4.jar') - compile files('libs/httpmime-4.5.2.jar')*/ } diff --git a/app/release/app-release.apk b/app/release/app-release.apk index 6d392ee..5471b1f 100644 Binary files a/app/release/app-release.apk and b/app/release/app-release.apk differ diff --git a/app/release/output-metadata.json b/app/release/output-metadata.json index 272c17c..90d0cd3 100644 --- a/app/release/output-metadata.json +++ b/app/release/output-metadata.json @@ -11,8 +11,8 @@ "type": "SINGLE", "filters": [], "attributes": [], - "versionCode": 99, - "versionName": "2.4.3", + "versionCode": 100, + "versionName": "2.4.4", "outputFile": "app-release.apk" } ], diff --git a/app/src/main/java/kz/istt/locust/DbOpenHelper.java b/app/src/main/java/kz/istt/locust/DbOpenHelper.java index c406810..729e88c 100644 --- a/app/src/main/java/kz/istt/locust/DbOpenHelper.java +++ b/app/src/main/java/kz/istt/locust/DbOpenHelper.java @@ -615,7 +615,7 @@ public class DbOpenHelper extends SQLiteOpenHelper "insecticide_dose float," + //норма расхода(л/га) "insecticide_rate float," + //расход рабочей жидкости(л/га) "insecticide_used_volume float," + //Общий объем использованной рабочей жидкости (л) - "insecticide_number_spores float," + //Концентрация спор (/мл) + "insecticide_number_spores float," + //Концентрация спор (/мл) (--------- В 2024 ссказали удалить поэтому не используется ---------) "insecticide_expiry_date integer," + //окончание срока действия (в нов. версии не используется) "insecticide_mixed text," + //смешивается ли инсектицид с водой или растворителем? (в нов. версии не используется) "insecticide_mixed_name text," + //если да, то с чем (в нов. версии не используется) @@ -649,13 +649,13 @@ public class DbOpenHelper extends SQLiteOpenHelper "spray_platform_g integer," + //2) «Наземное» - выпадающий список:«Трактор», «Машина», «Аэроз.генераторG». "spray_platform_h integer," + //3) «Ручное» - выпадающий список:«Ранцевый», «Моторный», «Батарейный». - "spray_capacity_id integer," + //Поле “Вид опрыскивания” (Объём) «Полнообъемное», «Малообъемное», «Ультрамалообъемное». + "spray_capacity_id integer," + //Поле “Вид опрыскивания” (Объём) «Полнообъемное», «Малообъемное», «Ультрамалообъемное». (Сказали поле удалить удалил) //"spray_operator text," + //Оператор (пилот, водитель, др...) "spray_operatortype_id integer," + //Оператор (пилот, водитель, др...) //"spray_operator_name text," + //�?мя оператора - "spray_manufacturer_name text," + //Марка опрыскивателя - "spray_model_name text," + //Модель опрыскивателя + "spray_manufacturer_name text," + //Марка опрыскивателя/модель + "spray_model_name text," + //Модель опрыскивателя (теперь не используется всё пишется в поле выше) //"spray_date_calibration integer," + //Дата последней калибровки "spray_height float," + //Высота над поверхностью почвы (м) "spray_width float," + //Ширина захвата (м) @@ -798,7 +798,7 @@ public class DbOpenHelper extends SQLiteOpenHelper "spray_platform_a integer," + "spray_platform_g integer," + "spray_platform_h integer," + - "spray_capacity_id integer," + + "spray_capacity_id integer," + //Сказали удалить удалил "spray_operatortype_id integer," + "spray_manufacturer_name text," + "spray_model_name text," + diff --git a/app/src/main/java/kz/istt/locust/LocustDelActivity.java b/app/src/main/java/kz/istt/locust/LocustDelActivity.java index c52cb70..c1a9d01 100644 --- a/app/src/main/java/kz/istt/locust/LocustDelActivity.java +++ b/app/src/main/java/kz/istt/locust/LocustDelActivity.java @@ -131,7 +131,6 @@ public class LocustDelActivity extends FragmentActivity implements LocationListe public EditText edtInsRate = null; // расход рабочей жидкости(л/га) public EditText edtInsUsedVolume = null; // Общий объем использованной рабочей жидкости (л) - public EditText edtInsNumberSpores = null; // Концентрация спор (/мл) // public DateInput edtInsExpiryDate = null; // окончание срока действия (дата) // public SpinnerDB spiInsMixed = null; // смешивается ли инсектицид с водой или растворителем? @@ -166,7 +165,6 @@ public class LocustDelActivity extends FragmentActivity implements LocationListe public View spiSprPlatformA = null; // «Авиа» - выпадающий список:«Самолет», «Вертолет», «Дельтаплан». public View spiSprPlatformG = null; // «Наземное» - выпадающий список:«Трактор», «Машина», «Аэроз.генераторG». public View spiSprPlatformH = null; // «Ручное» - выпадающий список:«Ранцевый», «Моторный», «Батарейный». - public View spiSprCapacity = null; // Объём опрыскивателя // public SpinnerDB spiSprOperator = null; // Оператор (пилот, водитель, др...) // public EditText edtSprOperatorName = null; // �?мя оператора @@ -180,7 +178,6 @@ public class LocustDelActivity extends FragmentActivity implements LocationListe public EditText edtSprBarrierWidth = null; // ширина (м) public EditText edtSprBarrierSpace = null; // промежуток (м) public EditText edtSprSpeed = null; // Скорость движения (км/ч) - public View spiSprGPS = null; // Антена: DGPS использовалась public View spiSprMarking = null; // Наземная маркировка(Сиг-нальщики, GPS, Машина, Нет) public CheckBox cbEffectiveness = null; // Галочка чтоб сделать поля не обязательными @@ -199,7 +196,6 @@ public class LocustDelActivity extends FragmentActivity implements LocationListe public EditText edtClothing = null; // Сборная колонка - public View spiProtectiveClothingClean = null; public View spiOperatorExposedInsecticide = null; public EditText edtDescription = null; public CheckBox cbTest; //Тестовая ли анкета @@ -583,18 +579,8 @@ public class LocustDelActivity extends FragmentActivity implements LocationListe guiTable.add(edtInsDose, "insecticide_dose"); edtInsRate = (EditText) findViewById(R.id.edtInsRate); // расход рабочей жидкости(л/га) guiTable.add(edtInsRate, "insecticide_rate"); - - /* - * edtInsExpiryDate = (DateInput) findViewById(R.id.edtInsExpiryDate); // окончание срока годности (дата) guiTable.add(edtInsExpiryDate,"insecticide_expiry_date"); edtInsExpiryDate.setVisibleDMY("my"); //Кроме дня - * - * spiInsMixed = findViewById(R.id.spiInsMixed); // смешивается ли инсектицид с водой или растворителем? guiTable.add(spiInsMixed,"insecticide_mixed"); spiInsMixed.addField(this, "", ""); spiInsMixed.addField(this, getString(R.string.Yes),"1"); spiInsMixed.addField(this, getString(R.string.No),"0"); - * - * edtInsMixedName = (EditText) findViewById(R.id.edtInsMixedName); guiTable.add(edtInsMixedName,"insecticide_mixed_name"); edtInsMixedRatio = (EditText) findViewById(R.id.edtInsMixedRatio); // если да, то в каком соотношении (%) guiTable.add(edtInsMixedRatio,"insecticide_mixed_ratio"); edtInsMixedRatio.setFilters(new InputFilter[]{ new InputFilterMinMax("0", "100")}); - */ edtInsUsedVolume = (EditText) findViewById(R.id.edtInsUsedVolume); // Общий объем использованной рабочей жидкости (л) guiTable.add(edtInsUsedVolume, "insecticide_used_volume"); - edtInsNumberSpores = (EditText) findViewById(R.id.edtInsNumberSpores); // Концентрация спор (/мл) - guiTable.add(edtInsNumberSpores, "insecticide_number_spores"); spiWeaTimeStart = findViewById(R.id.spiWeaTimeStart); // время начала guiTable.add(spiWeaTimeStart, "weather_time_start"); @@ -874,25 +860,6 @@ public class LocustDelActivity extends FragmentActivity implements LocationListe cursor.close(); dboh.close(); - spiSprCapacity = findViewById(R.id.spiSprCapacity); - guiTable.add(spiSprCapacity, "spray_capacity_id"); - ((selectDB)spiSprCapacity).addField("", ""); - dboh = new DbOpenHelper(this); - cursor = dboh - .getReadableDatabase() - .rawQuery( - "select d.id, COALESCE((SELECT translation FROM _translations t JOIN _languages l ON t.language_id=l.id WHERE t.del = 0 AND identifier = d.name AND l.short_name='" - + Tools.getLang() + "' LIMIT 1),d.name) name from list_capacities d where d.del=0 order by d.sort,d.name", null); - if (cursor.moveToFirst()) - { - do - { - ((selectDB)spiSprCapacity).addField(cursor.getString(cursor.getColumnIndex("name")), cursor.getString(cursor.getColumnIndex("id"))); - } while (cursor.moveToNext()); - } - cursor.close(); - dboh.close(); - /* * spiSprOperator = findViewById(R.id.spiSprOperator); // Оператор (пилот, водитель, др...) guiTable.add(spiSprOperator,"spray_operatortype_id"); spiSprOperator.addField(this, "", ""); dboh = new DbOpenHelper(this); cursor = * dboh.getReadableDatabase().rawQuery("select d.id, COALESCE((SELECT translation FROM _translations t JOIN _languages l ON t.language_id=l.id WHERE t.del = 0 AND identifier = d.name AND l.short_name='"+Tools.getLang()+"' LIMIT 1),d.name) name from list_operatorstypes d where d.del=0 order by d.sort,d.name", null); if (cursor.moveToFirst()) { do { spiSprOperator.addField(this, cursor.getString(cursor.getColumnIndex("name")), cursor.getString(cursor.getColumnIndex("id"))); } while @@ -903,8 +870,8 @@ public class LocustDelActivity extends FragmentActivity implements LocationListe // guiTable.add(edtSprOperatorName,"spray_operator_name"); edtSprManufacturer = (EditText) findViewById(R.id.edtSprManufacturer); // Марка опрыскивателя guiTable.add(edtSprManufacturer, "spray_manufacturer_name"); - edtSprModel = (EditText) findViewById(R.id.edtSprModel); // Модель опрыскивателя - guiTable.add(edtSprModel, "spray_model_name"); + //edtSprModel = (EditText) findViewById(R.id.edtSprModel); // Модель опрыскивателя + //guiTable.add(edtSprModel, "spray_model_name"); // edtDateCalibration = (DateInput) findViewById(R.id.edtDateCalibration); // Дата последней калибровки // guiTable.add(edtDateCalibration,"spray_date_calibration"); @@ -929,12 +896,6 @@ public class LocustDelActivity extends FragmentActivity implements LocationListe edtSprSpeed = (EditText) findViewById(R.id.edtSprSpeed); // Скорость движения (км/ч) guiTable.add(edtSprSpeed, "spray_speed"); - spiSprGPS = findViewById(R.id.spiSprGPS); // Антена: DGPS использовалась - guiTable.add(spiSprGPS, "spray_gps"); - ((selectDB)spiSprGPS).addField("", ""); - ((selectDB)spiSprGPS).addField(getString(R.string.Yes), "1"); - ((selectDB)spiSprGPS).addField(getString(R.string.No), "0"); - spiSprMarking = findViewById(R.id.spiSprMarking); // Наземная маркировка(Сиг-нальщики, GPS, Машина, Нет) guiTable.add(spiSprMarking, "spray_marking_id"); ((selectDB)spiSprMarking).addField("", ""); @@ -1107,12 +1068,6 @@ public class LocustDelActivity extends FragmentActivity implements LocationListe } }); - spiProtectiveClothingClean = findViewById(R.id.spiProtectiveClothingClean); - guiTable.add(spiProtectiveClothingClean, "safety_clothing_clean"); - ((selectDB)spiProtectiveClothingClean).addField("", ""); - ((selectDB)spiProtectiveClothingClean).addField(getString(R.string.Yes), "1"); - ((selectDB)spiProtectiveClothingClean).addField(getString(R.string.No), "0"); - spiOperatorExposedInsecticide = findViewById(R.id.spiOperatorExposedInsecticide); guiTable.add(spiOperatorExposedInsecticide, "safety_operator_health"); ((selectDB)spiOperatorExposedInsecticide).addField("", ""); @@ -1640,12 +1595,9 @@ public class LocustDelActivity extends FragmentActivity implements LocationListe if(spiSprPlatformA.getClass().toString().indexOf("dbfields.AutoCompleteTextViewDB")!=-1) ((AutoCompleteTextViewDB)spiSprPlatformA).updateAdapter(this); if(spiSprPlatformG.getClass().toString().indexOf("dbfields.AutoCompleteTextViewDB")!=-1) ((AutoCompleteTextViewDB)spiSprPlatformG).updateAdapter(this); if(spiSprPlatformH.getClass().toString().indexOf("dbfields.AutoCompleteTextViewDB")!=-1) ((AutoCompleteTextViewDB)spiSprPlatformH).updateAdapter(this); - if(spiSprCapacity.getClass().toString().indexOf("dbfields.AutoCompleteTextViewDB")!=-1) ((AutoCompleteTextViewDB)spiSprCapacity).updateAdapter(this); if(spiSprBarrier.getClass().toString().indexOf("dbfields.AutoCompleteTextViewDB")!=-1) ((AutoCompleteTextViewDB)spiSprBarrier).updateAdapter(this); - if(spiSprGPS.getClass().toString().indexOf("dbfields.AutoCompleteTextViewDB")!=-1) ((AutoCompleteTextViewDB)spiSprGPS).updateAdapter(this); if(spiSprMarking.getClass().toString().indexOf("dbfields.AutoCompleteTextViewDB")!=-1) ((AutoCompleteTextViewDB)spiSprMarking).updateAdapter(this); if(spiEffMethod.getClass().toString().indexOf("dbfields.AutoCompleteTextViewDB")!=-1) ((AutoCompleteTextViewDB)spiEffMethod).updateAdapter(this); - if(spiProtectiveClothingClean.getClass().toString().indexOf("dbfields.AutoCompleteTextViewDB")!=-1) ((AutoCompleteTextViewDB)spiProtectiveClothingClean).updateAdapter(this); if(spiOperatorExposedInsecticide.getClass().toString().indexOf("dbfields.AutoCompleteTextViewDB")!=-1) ((AutoCompleteTextViewDB)spiOperatorExposedInsecticide).updateAdapter(this); if(spiSafNonTarget.getClass().toString().indexOf("dbfields.AutoCompleteTextViewDB")!=-1) ((AutoCompleteTextViewDB)spiSafNonTarget).updateAdapter(this); if(spiSafIncident.getClass().toString().indexOf("dbfields.AutoCompleteTextViewDB")!=-1) ((AutoCompleteTextViewDB)spiSafIncident).updateAdapter(this); @@ -2176,6 +2128,12 @@ public class LocustDelActivity extends FragmentActivity implements LocationListe } if (!eFields && !isGONE(edtInsUsedVolume)) { + if(edtInsUsedVolume.getText().toString().equals("")) + { + scrollTo(edtInsUsedVolume); + atxt = atxt + ": \"" + getResources().getString(R.string.Total_volume_of_working_solution_actually_applied_l) + "\"!"; + eFields = true; + }else if(checkMinMaxI(edtInsUsedVolume,1,450000)!="") { scrollTo(edtInsUsedVolume); @@ -2183,15 +2141,6 @@ public class LocustDelActivity extends FragmentActivity implements LocationListe eFields = true; } } - if (!eFields && !isGONE(edtInsNumberSpores)) - { - if(checkMinMaxI(edtInsNumberSpores,1f,1000000000)!="") - { - scrollTo(edtInsNumberSpores); - atxt = checkMinMaxI(edtInsNumberSpores,1f,1000000000) + " \"" + getResources().getString(R.string.Number_of_spores_ml) + "\"!"; - eFields = true; - } - } if (!eFields && !isGONE(spiWeaTimeStart) && ((selectDB)spiWeaTimeStart).getText().toString().equals("")) { scrollTo(spiWeaTimeStart); @@ -2337,6 +2286,12 @@ public class LocustDelActivity extends FragmentActivity implements LocationListe } if (!eFields && !isGONE(edtSprBarrierSpace)) { + if(edtSprBarrierSpace.getText().toString().equals("")) + { + scrollTo(edtSprBarrierSpace); + atxt = atxt + ": \"" + getResources().getString(R.string.Spacing_of_barriers_m) + "\"!"; + eFields = true; + }else if(checkMinMaxI(edtSprBarrierSpace,1,1000)!="") { scrollTo(edtSprBarrierSpace); diff --git a/app/src/main/java/kz/istt/locust/LocustDelListActivity.java b/app/src/main/java/kz/istt/locust/LocustDelListActivity.java index bcf0424..37af274 100644 --- a/app/src/main/java/kz/istt/locust/LocustDelListActivity.java +++ b/app/src/main/java/kz/istt/locust/LocustDelListActivity.java @@ -282,8 +282,7 @@ public class LocustDelListActivity extends AppCompatActivity html += "" + getString(R.string.Spray_platform_h) + ""; //html += "" + getString(R.string.Spray_operator) + ""; html += "" + getString(R.string.Name_of_operator) + ""; - html += "" + getString(R.string.Spray_manufacturer) + ""; - html += "" + getString(R.string.Model_sprayer) + ""; + html += "" + getString(R.string.Spray_manufacturer_model) + ""; html += "" + getString(R.string.Date_of_last_calibration) + ""; html += "" + getString(R.string.Atomizer_height_above_ground_m) + ""; html += "" + getString(R.string.Coverage_width) + ""; diff --git a/app/src/main/java/kz/istt/locust/LocustHealthActivity.java b/app/src/main/java/kz/istt/locust/LocustHealthActivity.java new file mode 100644 index 0000000..b133804 --- /dev/null +++ b/app/src/main/java/kz/istt/locust/LocustHealthActivity.java @@ -0,0 +1,2428 @@ +package kz.istt.locust; + +import android.Manifest; +import android.app.Activity; +import android.app.AlertDialog; +import android.app.DatePickerDialog; +import android.app.TimePickerDialog; +import android.app.TimePickerDialog.OnTimeSetListener; +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.database.sqlite.SQLiteStatement; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.graphics.Color; +import android.location.Location; +import android.location.LocationListener; +import android.location.LocationManager; +import android.net.Uri; +import android.os.Build; +import android.os.Bundle; +import android.os.Environment; +import android.provider.MediaStore; +import android.provider.Settings.Secure; +import android.text.Editable; +import android.text.TextWatcher; +import android.view.Menu; +import android.view.MenuItem; +import android.view.View; +import android.view.View.OnClickListener; +import android.widget.ArrayAdapter; +import android.widget.CheckBox; +import android.widget.CompoundButton; +import android.widget.CompoundButton.OnCheckedChangeListener; +import android.widget.DatePicker; +import android.widget.EditText; +import android.widget.LinearLayout; +import android.widget.ListView; +import android.widget.ScrollView; +import android.widget.TimePicker; +import android.widget.Toast; + +import androidx.core.app.ActivityCompat; +import androidx.core.content.FileProvider; +import androidx.fragment.app.FragmentActivity; + +import java.io.BufferedInputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.text.DecimalFormat; +import java.text.DecimalFormatSymbols; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; +import java.util.GregorianCalendar; +import java.util.List; +import java.util.Locale; +import java.util.zip.CRC32; + +import dbfields.AutoCompleteTextViewDB; +import dbfields.StringDB; +import dbfields.fieldDB; +import dbfields.selectDB; +import tools.LatLonListener; + +public class LocustHealthActivity extends FragmentActivity implements LocationListener, LatLonListener +{ + private LocationManager _lm; + private ScrollView scrollView1 = null; + + private double _lat = 0; // c GPS приёмника + private double _lon = 0; // c GPS приёмника + + public String uid = null; // Unique identifier of the record + public Integer del = null; + public Long seq = null; // Дата Изменения записи секунд с 1970 года + public StringDB m_Filled = new StringDB("1"); // 1- все обяз. поля заполнены, 0 - не все обяз. поля заполнены + // public Long created = null; // Дата создания записи секунд с 1970 года + //public Integer user_id = null; + + public String ImageName = null; // Название файла рисунка + public String tmp_ImageName = null; // Временное название файла + + public EditText edtImage1 = null; // Фото + public EditText edtImage2 = null; // Фото + public EditText edtImage3 = null; // Фото + public View spiCountry = null; // страна + public View spiRegion = null; // Область + public EditText edtArea = null; // Район + public EditText edtDistrict = null; // Сельский округ + public EditText edtVillage = null; // Посёлка + public EditText edtTerrain = null; // Название местности либо урочища + + public EditText edtObserver = null; + + public EditText edtDate = null; // Дата (передаётся в секундах с 1970 года) + public EditText edtTimeZone = null; + + public EditText edtLatCenter = null; // Широта + public EditText edtLonCenter = null; // Долгота + public ListView latlonList = null; + + public EditText edtInfestedArea = null; // заселенная площадь(га) + public EditText edtTreatedArea = null; // обработанная площадь(га) + public View spiVegType = null; // Тип(дикая, культурная) + public EditText edtVegHeight = null; // Высота (м) + public View spiVegCover = null; // Растительный покров (Редкий, Ср., Густой) + public EditText edtVegCrop = null; // Перечисление культур + public View spiVegDamage = null; // Повреждения растительного покрова(%) + public EditText edtVegDamageArea = null; // Площадь повреждений (га) + public EditText edtInsName = null; // коммерческое название + public EditText edtInsActiveSubstance = null; // Наименование активного вещества отравы + public EditText edtInsConcentration = null; // концентрация(г д.в./л или%) + public View spiInsFormulation = null; // формуляция(УМО, КЭ, др.) + public EditText edtInsDose = null; // норма расхода(л/га) + public EditText edtInsRate = null; // расход рабочей жидкости(л/га) + + public EditText edtInsUsedVolume = null; // Общий объем использованной рабочей жидкости (л) + + // public DateInput edtInsExpiryDate = null; // окончание срока действия (дата) + // public SpinnerDB spiInsMixed = null; // смешивается ли инсектицид с водой или растворителем? + // public EditText edtInsMixedName = null; // Если да то с каким + // public EditText edtInsMixedRatio = null; // если да, то в каком соотношении (%) + public View spiWeaTimeStart = null; // время начала + public View spiWeaTimeEnd = null; // время окончания + public EditText edtWeaTemperatureStart = null; // Температура нач.(°C) + public EditText edtWeaTemperatureEnd = null; // Температура кон.(°C) + public EditText edtWeaHumidityStart = null; // отн. влажность воздуха нач.(%) + public EditText edtWeaHumidityEnd = null; // отн. влажность воздуха кон.(%) + public EditText edtWeaWindSpeedStart = null; // скорость ветра нач. (м/с) + public EditText edtWeaWindSpeedEnd = null; // скорость ветра кон. (м/с) + + public View spiWindDirectionStart = null; // направление ветра нач. + public View spiWindDirectionEnd = null; // направление ветра кон. + public View spiSprayDirectionStart = null; // направление опрыскивания нач. + public View spiSprayDirectionEnd = null; // направление опрыскивания кон. + + public View spiLocSpeciese = null; // вид: CIT, DMA, LMI, др. + public View spiLocHoppers = null; // Стадии личинок, возраста: Младшие Средние Старшие + + public View spiImago = null; // Имаго (да, нет) + + public EditText edtLocDensity = null; // плотность на м2 + public View spiKuliguli = null; // Кулиги (да, нет) + public View spiSwarm = null; // Стаи (да, нет) + public View spiSparse = null; // Разреженные (да, нет) + public View spiLocustPhaseId = null; // Фара саранчи + public View spiSprPlatform = null; // Вид опрыскивания + + public View spiSprPlatformA = null; // «Авиа» - выпадающий список:«Самолет», «Вертолет», «Дельтаплан». + public View spiSprPlatformG = null; // «Наземное» - выпадающий список:«Трактор», «Машина», «Аэроз.генераторG». + public View spiSprPlatformH = null; // «Ручное» - выпадающий список:«Ранцевый», «Моторный», «Батарейный». + + // public SpinnerDB spiSprOperator = null; // Оператор (пилот, водитель, др...) + // public EditText edtSprOperatorName = null; // �?мя оператора + public EditText edtSprManufacturer = null; // Марка опрыскивателя + //public EditText edtSprModel = null; // Модель опрыскивателя + // public DateInput edtDateCalibration = null; // Дата последней калибровки + public EditText edtSprHeight = null; // Высота над поверхностью почвы (м) + // public EditText edtSprWidth = null; // Ширина захвата (м) + // public EditText edtSprSpacing = null; // Расстояние между проходами опрыскивателя (м) (Надия Рашидовна сказала удалить) + public View spiSprBarrier = null; // Барьеры (да, нет) + public EditText edtSprBarrierWidth = null; // ширина (м) + public EditText edtSprBarrierSpace = null; // промежуток (м) + public EditText edtSprSpeed = null; // Скорость движения (км/ч) + public View spiSprMarking = null; // Наземная маркировка(Сиг-нальщики, GPS, Машина, Нет) + + public CheckBox cbEffectiveness = null; // Галочка чтоб сделать поля не обязательными + + public EditText edtEffMortality = null; // смертность саранчи(%) + public EditText edtEffTime = null; // Прошло времени после обработки в часах + public View spiEffMethod = null; // метод подсчета смертности + + public CheckBox cbSafClothingGoggles = null; // Какой защитной одеждой пользовался оператор: Очки + public CheckBox cbSafClothingMasks = null; // Какой защитной одеждой пользовался оператор: Маска + public CheckBox cbSafClothingGloves = null; // Какой защитной одеждой пользовался оператор: Перчатки + public CheckBox cbSafClothingOveralls = null; // Какой защитной одеждой пользовался оператор: Комбинезон + public CheckBox cbSafClothingCaps = null; // Какой защитной одеждой пользовался оператор: Кепка + public CheckBox cbSafClothingBoots = null; // Какой защитной одеждой пользовался оператор: Сапоги + public CheckBox cbSafClothingAbsent = null; // Какой защитной одеждой пользовался оператор: Отсутствуют + + public EditText edtClothing = null; // Сборная колонка + + public View spiProtectiveClothingClean = null; + public View spiOperatorExposedInsecticide = null; + public EditText edtDescription = null; + public CheckBox cbTest; //Тестовая ли анкета + + public CheckBox cbSafInformFarmer = null; // Кто был оповещен об обработках? Фермер + public CheckBox cbSafInformShepherd = null; // Кто был оповещен об обработках? Пастух + public CheckBox cbSafInformVillager = null; // Кто был оповещен об обработках? Сельский житель + public CheckBox cbSafInformOfficial = null; // Кто был оповещен об обработках? Чиновник + public CheckBox cbSafInformBeekeeper = null; // Кто был оповещен об обработках? Пчеловод + public CheckBox cbSafInformOther = null; // Кто был оповещен об обработках? Другие + public EditText edtInform = null; // Сборная колонка для (Фермер,Сельский житель,Чиновник,Пчеловод,Другие) + + //public SpinnerDB spiSafEmptyСontainers = null; // Пустые контейнеры + public CheckBox cbTripleRinsed = null; + public CheckBox cbPunctured = null; + public CheckBox cbTakenBackToBase = null; + public CheckBox cbLeftInField = null; + public CheckBox cbBuried = null; + public CheckBox cbBurned = null; + public EditText edtSafEmptyContainers = null; //Для накопления значений выбора галочек пустых контейнеров + + + public View spiSafNonTarget = null; // воздействие на нецелевые организмы + public EditText edtSafNonTargetEffect = null; // если да, то какое + public View spiSafIncident = null; + public EditText edtSafIncidentEffect = null; + + public EditText edtComments = null; // КОММЕНТАРИИ + + public View btnOk = null; + public View btnCancel = null; + public View btnGetGPSCenter = null; + public View btnDelGPSCenter = null; + public View btnOnMap = null; + + public View btnImage1 = null; + public View btnImage2 = null; + public View btnImage3 = null; + public View btnShowImage1 = null; + public View btnShowImage2 = null; + public View btnShowImage3 = null; + public View btnDelImage1 = null; + public View btnDelImage2 = null; + public View btnDelImage3 = null; + + private Uri mImageUri = null; + private DBGUITable guiTable = null; + + + private boolean isInRange(double a, double b, double c) + { + return b > a ? c >= a && c <= b : c >= b && c <= a; + } + + public String checkMinMaxI(EditText txt, double min, double max) + { + try{ + double input = Double.parseDouble(txt.getText().toString()); + if (isInRange(min, max, input)) + return ""; + else + return "MIN="+ Double.toString(min)+" MAX="+ Double.toString(max)+" !"; + } catch (NumberFormatException nfe) { } + return ""; + } + + @Override + protected void onCreate(Bundle savedInstanceState) + { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_locust_del); + + //Загрузка сохранёного языка + Tools.loadLocale(this); + + DbOpenHelper dboh; + Cursor cursor; + + Intent intent = getIntent(); + uid = intent.getStringExtra("uid"); // Параметр для Активити + + guiTable = new DBGUITable(this, "frmlocustdel"); + guiTable.add(uid, "uid"); + + Integer user_id = null; + /*DbOpenHelper dboh = new DbOpenHelper(this); + SQLiteDatabase db = dboh.getReadableDatabase(); + Cursor cursor = db.rawQuery("select id from _user where del=0;", null); + if (cursor.moveToFirst()) + { + user_id = Integer.valueOf(cursor.getInt(cursor.getColumnIndex("id"))); + } + cursor.close(); + dboh.close();*/ + guiTable.add(user_id, "user_id"); //Пользователя больше нет!!! + String device_id= Secure.getString(getContentResolver(), Secure.ANDROID_ID); + guiTable.add(device_id, "device_id"); //Идентификатор устройства + + List list; + ArrayAdapter dataAdapter; + + scrollView1 = (ScrollView) findViewById(R.id.scrollView1); + + guiTable.add(m_Filled, "filled"); + + edtImage1 = (EditText) findViewById(R.id.edtImage1); // Фото + guiTable.add(edtImage1, "image_name1"); + edtImage2 = (EditText) findViewById(R.id.edtImage2); // Фото + guiTable.add(edtImage2, "image_name2"); + edtImage3 = (EditText) findViewById(R.id.edtImage3); // Фото + guiTable.add(edtImage3, "image_name3"); + + spiCountry = findViewById(R.id.spiCountry); // страна + guiTable.add(spiCountry, "country_id"); + ((selectDB)spiCountry).addField("", ""); + // Выбираем страны и заполняем поля + dboh = new DbOpenHelper(this); + cursor = dboh.getReadableDatabase().rawQuery("select id, name from countries where del=0 order by name", null); + if (cursor.moveToFirst()) + { + do + { + ((selectDB)spiCountry).addField(cursor.getString(cursor.getColumnIndex("name")), cursor.getString(cursor.getColumnIndex("id"))); + } while (cursor.moveToNext()); + } + cursor.close(); + dboh.close(); + + // Чтоб при изменении страны обновлялся список регионов + ((selectDB)spiCountry).setOnChangeValueListener(new OnClickListener() + { + @Override + public void onClick(View v) + { + ((selectDB)spiRegion).clearFields(); + ((selectDB)spiRegion).addField("", ""); + + if(((selectDB)spiCountry).getValue() != null && ((selectDB)spiCountry).getValue() != "") + { + DbOpenHelper dboh = new DbOpenHelper(LocustHealthActivity.this); + Cursor cursor = dboh.getReadableDatabase().rawQuery( + "select id, name from countriesregions where del=0 and country_id=" + ((selectDB)spiCountry).getValue() + " order by name", null); + if (cursor.moveToFirst()) + { + do + { + ((selectDB)spiRegion).addField(cursor.getString(cursor.getColumnIndex("name")), + cursor.getString(cursor.getColumnIndex("id"))); + } while (cursor.moveToNext()); + } + cursor.close(); + dboh.close(); + } + } + }); + + spiRegion = findViewById(R.id.spiRegion); // Регион + guiTable.add(spiRegion, "region_id"); + + edtArea = (EditText) findViewById(R.id.edtArea); // Район + guiTable.add(edtArea, "area"); + edtDistrict = (EditText) findViewById(R.id.edtDistrict); + guiTable.add(edtDistrict, "district"); + + edtVillage = (EditText) findViewById(R.id.edtVillage); // Название местности либо урочища + guiTable.add(edtVillage, "village"); + edtTerrain = (EditText) findViewById(R.id.edtTerrain); // Название местности либо урочища + guiTable.add(edtTerrain, "terrain"); + + edtObserver = (EditText) findViewById(R.id.edtObserver); + guiTable.add(edtObserver, "observer"); + edtDate = (EditText) findViewById(R.id.edtDate); // Должна быть уникальной + guiTable.add(edtDate, "date"); + + View btnGetDate = (View) findViewById(R.id.btnGetDate); + OnClickListener clk0 = new OnClickListener() { + public void onClick(View v) + { + DatePickerDialog.OnDateSetListener myDateListener = new DatePickerDialog.OnDateSetListener() { + @Override + public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) + { + + //SimpleDateFormat format = new SimpleDateFormat("dd.MM.yyyy HH:mm"); + //format.setTimeZone(TimeZone.getTimeZone("UTC")); + //LocustDelActivity.this.edtDate.setText(format.format(curDateTime)); + + //Теперь выбираем время + OnTimeSetListener myDateListener = new OnTimeSetListener() { + @Override + public void onTimeSet(TimePicker view, int hourOfDay, int minute) + { + long val = Long.parseLong(((fieldDB) LocustHealthActivity.this.edtDate).getValue()); + val += (hourOfDay*60+minute)*60; + ((fieldDB) LocustHealthActivity.this.edtDate).setValue(String.valueOf(val)); + } + }; + + if(((fieldDB) LocustHealthActivity.this.edtDate).getValue()!=null && !((fieldDB) LocustHealthActivity.this.edtDate).getValue().equals("")) + { + Date time = new Date(Long.parseLong(((fieldDB) LocustHealthActivity.this.edtDate).getValue())*1000); + Calendar myCal = new GregorianCalendar(); + myCal.setTime(time); + int hour = myCal.get(Calendar.HOUR_OF_DAY); + int minute = myCal.get(Calendar.MINUTE); + TimePickerDialog tpd = new TimePickerDialog(LocustHealthActivity.this, R.style.AlertDialogTheme, myDateListener, hour, minute, true); + tpd.show(); + }else + { + final Calendar myCal = Calendar.getInstance(); + int hour = myCal.get(Calendar.HOUR_OF_DAY); + int minute = myCal.get(Calendar.MINUTE); + TimePickerDialog tpd = new TimePickerDialog(LocustHealthActivity.this, R.style.AlertDialogTheme, myDateListener, hour, minute, true); + tpd.show(); + } + + Date date = new Date(year-1900, monthOfYear, dayOfMonth); + ((fieldDB) LocustHealthActivity.this.edtDate).setValue(String.valueOf(date.getTime()/1000)); + + + } + }; + + if(!LocustHealthActivity.this.edtDate.getText().toString().equals("")) + { + Date date=null; + SimpleDateFormat format = new SimpleDateFormat("dd.MM.yyyy HH:mm"); + //format.setTimeZone(TimeZone.getTimeZone("UTC")); + try { + date = format.parse(LocustHealthActivity.this.edtDate.getText().toString()); + } catch (ParseException e) { + e.printStackTrace(); + } + if(date!=null) + { + Calendar myCal = new GregorianCalendar(); + myCal.setTime(date); + int day = myCal.get(Calendar.DAY_OF_MONTH); + int month = myCal.get(Calendar.MONTH); + int year = myCal.get(Calendar.YEAR); + DatePickerDialog dpd = new DatePickerDialog(LocustHealthActivity.this, R.style.AlertDialogTheme, myDateListener, year, month, day); + dpd.show(); + } + }else + { + final Calendar c = Calendar.getInstance(); + int year = c.get(Calendar.YEAR); + int month = c.get(Calendar.MONTH); + int day = c.get(Calendar.DAY_OF_MONTH); + + DatePickerDialog dpd = new DatePickerDialog(LocustHealthActivity.this, R.style.AlertDialogTheme, myDateListener, year, month, day); + dpd.show(); + } + } + }; + btnGetDate.setOnClickListener(clk0); + + edtTimeZone = (EditText) findViewById(R.id.edtTimeZone); + guiTable.add(edtTimeZone,"timezone"); + + edtLatCenter = (EditText) findViewById(R.id.edtLatCenter); // Широта + guiTable.add(edtLatCenter, "lat_center"); + edtLonCenter = (EditText) findViewById(R.id.edtLonCenter); // Долгота + guiTable.add(edtLonCenter, "lon_center"); + + ArrayList latlon = new ArrayList(); + if(latlon.size()==0){ + latlon.add(new LatLon(0, 0)); + } + latlonList = findViewById(R.id.latlonList); + LatLonAdapter adapter = new LatLonAdapter(this, R.layout.list_lat_lon, latlon, this, latlonList); + latlonList.setAdapter(adapter); + adapter.clc=new OnClickListener() { + @Override + public void onClick(View view) { + Tools.setListViewHeightBasedOnItems(LocustHealthActivity.this.latlonList); + } + }; + + edtInfestedArea = (EditText) findViewById(R.id.edtInfestedArea); // заселенная площадь(га) + guiTable.add(edtInfestedArea, "infested_area"); + edtTreatedArea = (EditText) findViewById(R.id.edtTreatedArea); // обработанная площадь(га) + guiTable.add(edtTreatedArea, "treated_area"); + + spiVegType = findViewById(R.id.spiVegType); // Тип(Дикая, Культурная) + guiTable.add(spiVegType, "vegetation_type_id"); + ((selectDB)spiVegType).addField("", ""); + dboh = new DbOpenHelper(this); + cursor = dboh + .getReadableDatabase() + .rawQuery( + "select d.id, COALESCE((SELECT translation FROM _translations t JOIN _languages l ON t.language_id=l.id WHERE t.del = 0 AND identifier = d.name AND l.short_name='" + + Tools.getLang() + "' LIMIT 1),d.name) name from list_vegetation d where d.del=0 order by d.sort, d.name", null); + if (cursor.moveToFirst()) + { + do + { + ((selectDB)spiVegType).addField(cursor.getString(cursor.getColumnIndex("name")), cursor.getString(cursor.getColumnIndex("id"))); + } while (cursor.moveToNext()); + } + cursor.close(); + dboh.close(); + + edtVegHeight = (EditText) findViewById(R.id.edtVegHeight); // Высота (м) + guiTable.add(edtVegHeight, "vegetation_height"); + + spiVegCover = findViewById(R.id.spiVegCover); // Густота растительного покрова(%) + guiTable.add(spiVegCover, "vegetation_cover_id"); + ((selectDB)spiVegCover).addField("", ""); + dboh = new DbOpenHelper(this); + cursor = dboh + .getReadableDatabase() + .rawQuery( + "select d.id, COALESCE((SELECT translation FROM _translations t JOIN _languages l ON t.language_id=l.id WHERE t.del = 0 AND identifier = d.name AND l.short_name='" + + Tools.getLang() + "' LIMIT 1),d.name) name from list_cover d where d.del=0 order by d.sort, d.name", null); + if (cursor.moveToFirst()) + { + do + { + ((selectDB)spiVegCover).addField(cursor.getString(cursor.getColumnIndex("name")), cursor.getString(cursor.getColumnIndex("id"))); + } while (cursor.moveToNext()); + } + cursor.close(); + dboh.close(); + + edtVegCrop = (EditText) findViewById(R.id.edtVegCrop); // Перечисление культур + guiTable.add(edtVegCrop, "vegetation_crop"); + + spiVegDamage = findViewById(R.id.spiVegDamage); // Повреждения растительного покрова(%) + guiTable.add(spiVegDamage, "vegetation_damage"); + ((selectDB)spiVegDamage).addField("", ""); + // Выбираем страны и заполняем поля + dboh = new DbOpenHelper(this); + cursor = dboh + .getReadableDatabase() + .rawQuery( + "select d.id, COALESCE((SELECT translation FROM _translations t JOIN _languages l ON t.language_id=l.id WHERE t.del = 0 AND identifier = d.name AND l.short_name='" + + Tools.getLang() + "' LIMIT 1),d.name) name from list_damage d where d.del=0 order by d.sort, d.name", null); + if (cursor.moveToFirst()) + { + do + { + ((selectDB)spiVegDamage).addField(cursor.getString(cursor.getColumnIndex("name")), cursor.getString(cursor.getColumnIndex("id"))); + } while (cursor.moveToNext()); + } + cursor.close(); + dboh.close(); + + edtVegDamageArea = (EditText) findViewById(R.id.edtVegDamageArea); // Площядь повреждения + guiTable.add(edtVegDamageArea, "vegetation_damage_area"); + + edtInsName = (EditText) findViewById(R.id.edtInsName); // коммерческое название + guiTable.add(edtInsName, "insecticide_name"); + edtInsActiveSubstance = (EditText) findViewById(R.id.edtInsActiveSubstance); // Наименование активного вещества отравы + guiTable.add(edtInsActiveSubstance, "insecticide_active_substance"); + edtInsConcentration = (EditText) findViewById(R.id.edtInsConcentration); // концентрация(г д.в./л или%) + guiTable.add(edtInsConcentration, "insecticide_concentration"); + //edtInsConcentration.setFilters(new InputFilter[] { new InputFilterMinMax("0", "100") }); потому что текст + + spiInsFormulation = findViewById(R.id.spiInsFormulation); // формуляция(УМО, КЭ, др.) + guiTable.add(spiInsFormulation, "insecticide_formulation_id"); + ((selectDB)spiInsFormulation).addField("", ""); + // Выбираем страны и заполняем поля + dboh = new DbOpenHelper(this); + cursor = dboh + .getReadableDatabase() + .rawQuery( + "select d.id, COALESCE((SELECT translation FROM _translations t JOIN _languages l ON t.language_id=l.id WHERE t.del = 0 AND identifier = d.name AND l.short_name='" + + Tools.getLang() + "' LIMIT 1),d.name) name from list_formulation d where d.del=0 order by d.sort, d.name", null); + if (cursor.moveToFirst()) + { + do + { + ((selectDB)spiInsFormulation).addField(cursor.getString(cursor.getColumnIndex("name")), cursor.getString(cursor.getColumnIndex("id"))); + } while (cursor.moveToNext()); + } + cursor.close(); + dboh.close(); + + edtInsDose = (EditText) findViewById(R.id.edtInsDose); // норма расхода(л/га) + guiTable.add(edtInsDose, "insecticide_dose"); + edtInsRate = (EditText) findViewById(R.id.edtInsRate); // расход рабочей жидкости(л/га) + guiTable.add(edtInsRate, "insecticide_rate"); + edtInsUsedVolume = (EditText) findViewById(R.id.edtInsUsedVolume); // Общий объем использованной рабочей жидкости (л) + guiTable.add(edtInsUsedVolume, "insecticide_used_volume"); + + spiWeaTimeStart = findViewById(R.id.spiWeaTimeStart); // время начала + guiTable.add(spiWeaTimeStart, "weather_time_start"); + ((selectDB)spiWeaTimeStart).addField("", ""); + for (int i = 0; i < 24; i++) { + ((selectDB) spiWeaTimeStart).addField(String.valueOf(i), String.valueOf(i)+".0"); + } + spiWeaTimeEnd = findViewById(R.id.spiWeaTimeEnd); // время окончания + guiTable.add(spiWeaTimeEnd, "weather_time_end"); + ((selectDB)spiWeaTimeEnd).addField("", ""); + for (int i = 0; i < 24; i++) { + ((selectDB) spiWeaTimeEnd).addField(String.valueOf(i), String.valueOf(i)+".0"); + } + edtWeaTemperatureStart = (EditText) findViewById(R.id.edtWeaTemperatureStart); // Температура нач.(°C) + guiTable.add(edtWeaTemperatureStart, "weather_temperature_start"); + edtWeaTemperatureEnd = (EditText) findViewById(R.id.edtWeaTemperatureEnd); // Температура кон.(°C) + guiTable.add(edtWeaTemperatureEnd, "weather_temperature_end"); + edtWeaHumidityStart = (EditText) findViewById(R.id.edtWeaHumidityStart); // отн. влажность воздуха нач.(%) + guiTable.add(edtWeaHumidityStart, "weather_humidity_start"); + //edtWeaHumidityStart.setFilters(new InputFilter[] { new InputFilterMinMax("0", "100") }); + + edtWeaHumidityEnd = (EditText) findViewById(R.id.edtWeaHumidityEnd); // отн. влажность воздуха кон.(%) + guiTable.add(edtWeaHumidityEnd, "weather_humidity_end"); + //edtWeaHumidityEnd.setFilters(new InputFilter[] { new InputFilterMinMax("0", "100") }); + + edtWeaWindSpeedStart = (EditText) findViewById(R.id.edtWeaWindSpeedStart); // скорость ветра нач. (м/с) + guiTable.add(edtWeaWindSpeedStart, "weather_wind_speed_start"); + edtWeaWindSpeedEnd = (EditText) findViewById(R.id.edtWeaWindSpeedEnd); // скорость ветра кон. (м/с) + guiTable.add(edtWeaWindSpeedEnd, "weather_wind_speed_end"); + + spiWindDirectionStart = findViewById(R.id.spiWindDirectionStart); // направление ветра нач. + guiTable.add(spiWindDirectionStart, "weather_direction_start"); + ((selectDB)spiWindDirectionStart).addField("", ""); + dboh = new DbOpenHelper(this); + + cursor = dboh + .getReadableDatabase() + .rawQuery( + "select d.id, COALESCE((SELECT translation FROM _translations t JOIN _languages l ON t.language_id=l.id WHERE t.del = 0 AND identifier = d.name AND l.short_name='" + + Tools.getLang() + "' LIMIT 1),d.name) name, degree from list_directions d where d.del=0 order by d.degree", null); + if (cursor.moveToFirst()) + { + do + { + ((selectDB)spiWindDirectionStart).addField(cursor.getString(cursor.getColumnIndex("name")), cursor.getString(cursor.getColumnIndex("id"))); + } while (cursor.moveToNext()); + } + cursor.close(); + dboh.close(); + + spiWindDirectionEnd = findViewById(R.id.spiWindDirectionEnd); // направление ветра кон. + guiTable.add(spiWindDirectionEnd, "weather_direction_end"); + ((selectDB)spiWindDirectionEnd).addField("", ""); + dboh = new DbOpenHelper(this); + cursor = dboh + .getReadableDatabase() + .rawQuery( + "select d.id, COALESCE((SELECT translation FROM _translations t JOIN _languages l ON t.language_id=l.id WHERE t.del = 0 AND identifier = d.name AND l.short_name='" + + Tools.getLang() + "' LIMIT 1),d.name) name, degree from list_directions d where d.del=0 order by d.degree", null); + if (cursor.moveToFirst()) + { + do + { + ((selectDB)spiWindDirectionEnd).addField(cursor.getString(cursor.getColumnIndex("name")), cursor.getString(cursor.getColumnIndex("id"))); + } while (cursor.moveToNext()); + } + cursor.close(); + dboh.close(); + + spiSprayDirectionStart = findViewById(R.id.spiSprayDirectionStart); // направление опрыскивания нач. + guiTable.add(spiSprayDirectionStart, "weather_spray_direction_start"); + ((selectDB)spiSprayDirectionStart).addField("", ""); + dboh = new DbOpenHelper(this); + cursor = dboh + .getReadableDatabase() + .rawQuery( + "select d.id, COALESCE((SELECT translation FROM _translations t JOIN _languages l ON t.language_id=l.id WHERE t.del = 0 AND identifier = d.name AND l.short_name='" + + Tools.getLang() + "' LIMIT 1),d.name) name, d.degree from list_directions d where d.del=0 and d.degree>=0 order by d.degree", + null); + if (cursor.moveToFirst()) + { + do + { + ((selectDB)spiSprayDirectionStart).addField(cursor.getString(cursor.getColumnIndex("name")), cursor.getString(cursor.getColumnIndex("id"))); + } while (cursor.moveToNext()); + } + cursor.close(); + dboh.close(); + + spiSprayDirectionEnd = findViewById(R.id.spiSprayDirectionEnd); // направление опрыскивания кон. + guiTable.add(spiSprayDirectionEnd, "weather_spray_direction_end"); + ((selectDB)spiSprayDirectionEnd).addField("", ""); + dboh = new DbOpenHelper(this); + cursor = dboh + .getReadableDatabase() + .rawQuery( + "select d.id, COALESCE((SELECT translation FROM _translations t JOIN _languages l ON t.language_id=l.id WHERE t.del = 0 AND identifier = d.name AND l.short_name='" + + Tools.getLang() + "' LIMIT 1),d.name) name, degree from list_directions d where d.del=0 and d.degree>=0 order by d.degree", + null); + if (cursor.moveToFirst()) + { + do + { + ((selectDB)spiSprayDirectionEnd).addField(cursor.getString(cursor.getColumnIndex("name")), cursor.getString(cursor.getColumnIndex("id"))); + } while (cursor.moveToNext()); + } + cursor.close(); + dboh.close(); + + // locuststypes + spiLocSpeciese = findViewById(R.id.spiLocSpeciese); + guiTable.add(spiLocSpeciese, "locust_type_id"); + ((selectDB)spiLocSpeciese).addField("", ""); + dboh = new DbOpenHelper(this); + cursor = dboh + .getReadableDatabase() + .rawQuery( + "select lt.id, COALESCE((SELECT translation FROM _translations t JOIN _languages l ON t.language_id=l.id WHERE t.del = 0 AND identifier = lt.name AND l.short_name='" + + Tools.getLang() + "' LIMIT 1),lt.name) name from LocustsTypes lt where lt.del=0 order by lt.sort,lt.name", null); + if (cursor.moveToFirst()) + { + do + { + ((selectDB)spiLocSpeciese).addField(cursor.getString(cursor.getColumnIndex("name")), cursor.getString(cursor.getColumnIndex("id"))); + } while (cursor.moveToNext()); + } + cursor.close(); + dboh.close(); + + spiLocHoppers = findViewById(R.id.spiLocHoppers); // Стадии личинок + guiTable.add(spiLocHoppers, "locust_hoppers_id"); + ((selectDB)spiLocHoppers).addField("", ""); + dboh = new DbOpenHelper(this); + cursor = dboh + .getReadableDatabase() + .rawQuery( + "select lt.id, COALESCE((SELECT translation FROM _translations t JOIN _languages l ON t.language_id=l.id WHERE t.del = 0 AND identifier = lt.name AND l.short_name='" + + Tools.getLang() + "' LIMIT 1),lt.name) name from list_age lt where lt.del=0 order by lt.sort,lt.name", null); + if (cursor.moveToFirst()) + { + do + { + ((selectDB)spiLocHoppers).addField(cursor.getString(cursor.getColumnIndex("name")), cursor.getString(cursor.getColumnIndex("id"))); + } while (cursor.moveToNext()); + } + cursor.close(); + dboh.close(); + + /* + * list = new ArrayList(); list.add(""); list.add(getString(R.string.Younger)); // Младшие list.add(getString(R.string.Middle)); // Средние list.add(getString(R.string.Senior)); // Старшие list.add(getString(R.string.Adult)); // Имаго + * + * dataAdapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item, list); dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spiLocHoppers.setAdapter(dataAdapter); + */ + + spiImago = findViewById(R.id.spiImago); // Стаи (да, нет) + guiTable.add(spiImago, "locust_imago"); + ((selectDB)spiImago).addField("", ""); + ((selectDB)spiImago).addField(getString(R.string.Have), "1"); + ((selectDB)spiImago).addField(getString(R.string.No), "0"); + + edtLocDensity = (EditText) findViewById(R.id.edtLocDensity); // плотность на м2 + guiTable.add(edtLocDensity, "locust_density"); + + spiKuliguli = findViewById(R.id.spiKuliguli); // Кулиги (да, нет) + guiTable.add(spiKuliguli, "locust_kuliguli"); + ((selectDB)spiKuliguli).addField("", ""); + ((selectDB)spiKuliguli).addField(getString(R.string.Have), "1"); + ((selectDB)spiKuliguli).addField(getString(R.string.No), "0"); + + spiSwarm = findViewById(R.id.spiSwarm); // Стаи (да, нет) + guiTable.add(spiSwarm, "locust_swarm"); + ((selectDB)spiSwarm).addField("", ""); + ((selectDB)spiSwarm).addField(getString(R.string.Have), "1"); + ((selectDB)spiSwarm).addField(getString(R.string.No), "0"); + + spiSparse = findViewById(R.id.spiSparse); // Разреженные (да, нет) + guiTable.add(spiSparse, "locust_sparse"); + ((selectDB)spiSparse).addField("", ""); + ((selectDB)spiSparse).addField(getString(R.string.Have), "1"); + ((selectDB)spiSparse).addField(getString(R.string.No), "0"); + + spiLocustPhaseId = findViewById(R.id.spiLocustPhaseId); + guiTable.add(spiLocustPhaseId, "locust_phase_id"); + ((selectDB)spiLocustPhaseId).addField("", ""); + dboh = new DbOpenHelper(this); + cursor = dboh + .getReadableDatabase() + .rawQuery( + "select d.id, COALESCE((SELECT translation FROM _translations t JOIN _languages l ON t.language_id=l.id WHERE t.del = 0 AND identifier = d.name AND l.short_name='" + + Tools.getLang() + "' LIMIT 1),d.name) name from list_phase d where d.del=0 order by d.sort,d.name", null); + if (cursor.moveToFirst()) + { + do + { + ((selectDB)spiLocustPhaseId).addField(cursor.getString(cursor.getColumnIndex("name")), cursor.getString(cursor.getColumnIndex("id"))); + } while (cursor.moveToNext()); + } + cursor.close(); + dboh.close(); + + spiSprPlatform = findViewById(R.id.spiSprPlatform); // Вид опрыскивания + guiTable.add(spiSprPlatform, "spray_platform"); + ((selectDB)spiSprPlatform).addField("", ""); + dboh = new DbOpenHelper(this); + cursor = dboh + .getReadableDatabase() + .rawQuery( + "select d.id, COALESCE((SELECT translation FROM _translations t JOIN _languages l ON t.language_id=l.id WHERE t.del = 0 AND identifier = d.name AND l.short_name='" + + Tools.getLang() + "' LIMIT 1),d.name) name from sprayers_types d where d.del=0 order by d.sort,d.name", null); + if (cursor.moveToFirst()) + { + do + { + ((selectDB)spiSprPlatform).addField(cursor.getString(cursor.getColumnIndex("name")), cursor.getString(cursor.getColumnIndex("id"))); + } while (cursor.moveToNext()); + } + cursor.close(); + dboh.close(); + + spiSprPlatformA = findViewById(R.id.spiSprPlatformA); // «Авиа» - выпадающий список:«Самолет», «Вертолет», «Дельтаплан». + guiTable.add(spiSprPlatformA, "spray_platform_a"); + ((selectDB)spiSprPlatformA).addField("", ""); + dboh = new DbOpenHelper(this); + cursor = dboh + .getReadableDatabase() + .rawQuery( + "select d.id, COALESCE((SELECT translation FROM _translations t JOIN _languages l ON t.language_id=l.id WHERE t.del = 0 AND identifier = d.name AND l.short_name='" + + Tools.getLang() + "' LIMIT 1),d.name) name from sprayers d where d.del=0 and d.sprayer_type_id=1 order by d.sort,d.name", + null); + if (cursor.moveToFirst()) + { + do + { + ((selectDB)spiSprPlatformA).addField(cursor.getString(cursor.getColumnIndex("name")), cursor.getString(cursor.getColumnIndex("id"))); + } while (cursor.moveToNext()); + } + cursor.close(); + dboh.close(); + + spiSprPlatformG = findViewById(R.id.spiSprPlatformG); // «Наземное» - выпадающий список:«Трактор», «Машина», «Аэроз.генераторG». + guiTable.add(spiSprPlatformG, "spray_platform_g"); + ((selectDB)spiSprPlatformG).addField("", ""); + dboh = new DbOpenHelper(this); + cursor = dboh + .getReadableDatabase() + .rawQuery( + "select d.id, COALESCE((SELECT translation FROM _translations t JOIN _languages l ON t.language_id=l.id WHERE t.del = 0 AND identifier = d.name AND l.short_name='" + + Tools.getLang() + "' LIMIT 1),d.name) name from sprayers d where d.del=0 and d.sprayer_type_id=3 order by d.sort,d.name", + null); + if (cursor.moveToFirst()) + { + do + { + ((selectDB)spiSprPlatformG).addField(cursor.getString(cursor.getColumnIndex("name")), cursor.getString(cursor.getColumnIndex("id"))); + } while (cursor.moveToNext()); + } + cursor.close(); + dboh.close(); + + spiSprPlatformH = findViewById(R.id.spiSprPlatformH); // «Ручное» - выпадающий список:«Ранцевый», «Моторный», «Батарейный». + guiTable.add(spiSprPlatformH, "spray_platform_h"); + ((selectDB)spiSprPlatformH).addField("", ""); + dboh = new DbOpenHelper(this); + cursor = dboh + .getReadableDatabase() + .rawQuery( + "select d.id, COALESCE((SELECT translation FROM _translations t JOIN _languages l ON t.language_id=l.id WHERE t.del = 0 AND identifier = d.name AND l.short_name='" + + Tools.getLang() + "' LIMIT 1),d.name) name from sprayers d where d.del=0 and d.sprayer_type_id=5 order by d.sort,d.name", + null); + if (cursor.moveToFirst()) + { + do + { + ((selectDB)spiSprPlatformH).addField(cursor.getString(cursor.getColumnIndex("name")), cursor.getString(cursor.getColumnIndex("id"))); + } while (cursor.moveToNext()); + } + cursor.close(); + dboh.close(); + + /* + * spiSprOperator = findViewById(R.id.spiSprOperator); // Оператор (пилот, водитель, др...) guiTable.add(spiSprOperator,"spray_operatortype_id"); spiSprOperator.addField(this, "", ""); dboh = new DbOpenHelper(this); cursor = + * dboh.getReadableDatabase().rawQuery("select d.id, COALESCE((SELECT translation FROM _translations t JOIN _languages l ON t.language_id=l.id WHERE t.del = 0 AND identifier = d.name AND l.short_name='"+Tools.getLang()+"' LIMIT 1),d.name) name from list_operatorstypes d where d.del=0 order by d.sort,d.name", null); if (cursor.moveToFirst()) { do { spiSprOperator.addField(this, cursor.getString(cursor.getColumnIndex("name")), cursor.getString(cursor.getColumnIndex("id"))); } while + * (cursor.moveToNext()); } cursor.close(); dboh.close(); + */ + + // edtSprOperatorName = (EditText) findViewById(R.id.edtSprOperatorName); // Имя оператора + // guiTable.add(edtSprOperatorName,"spray_operator_name"); + edtSprManufacturer = (EditText) findViewById(R.id.edtSprManufacturer); // Марка опрыскивателя/модель + guiTable.add(edtSprManufacturer, "spray_manufacturer_name"); + //edtSprModel = (EditText) findViewById(R.id.edtSprModel); // Модель опрыскивателя + //guiTable.add(edtSprModel, "spray_model_name"); + + // edtDateCalibration = (DateInput) findViewById(R.id.edtDateCalibration); // Дата последней калибровки + // guiTable.add(edtDateCalibration,"spray_date_calibration"); + // edtDateCalibration.setVisibleDMY("my"); //Кроме дня + + edtSprHeight = (EditText) findViewById(R.id.edtSprHeight); // Высота над поверхностью почвы (м) + guiTable.add(edtSprHeight, "spray_height"); + // edtSprWidth = (EditText) findViewById(R.id.edtSprWidth); // Ширина захвата (м) + // guiTable.add(edtSprWidth,"spray_width"); + // edtSprSpacing = (EditText) findViewById(R.id.edtSprSpacing); // Расстояние между проходами опрыскивателя (м) + // guiTable.add(edtSprSpacing,"spray_spacing"); + spiSprBarrier = findViewById(R.id.spiSprBarrier); // Барьеры (да, нет) + guiTable.add(spiSprBarrier, "spray_barrier"); + ((selectDB)spiSprBarrier).addField("", ""); + ((selectDB)spiSprBarrier).addField(getString(R.string.Yes), "1"); + ((selectDB)spiSprBarrier).addField(getString(R.string.No), "0"); + edtSprBarrierWidth = (EditText) findViewById(R.id.edtSprBarrierWidth); // ширина (м) + guiTable.add(edtSprBarrierWidth, "spray_barrier_width"); + edtSprBarrierSpace = (EditText) findViewById(R.id.edtSprBarrierSpace); // промежуток (м) + guiTable.add(edtSprBarrierSpace, "spray_barrier_space"); + + edtSprSpeed = (EditText) findViewById(R.id.edtSprSpeed); // Скорость движения (км/ч) + guiTable.add(edtSprSpeed, "spray_speed"); + + spiSprMarking = findViewById(R.id.spiSprMarking); // Наземная маркировка(Сиг-нальщики, GPS, Машина, Нет) + guiTable.add(spiSprMarking, "spray_marking_id"); + ((selectDB)spiSprMarking).addField("", ""); + dboh = new DbOpenHelper(this); + cursor = dboh + .getReadableDatabase() + .rawQuery( + "select d.id, COALESCE((SELECT translation FROM _translations t JOIN _languages l ON t.language_id=l.id WHERE t.del = 0 AND identifier = d.name AND l.short_name='" + + Tools.getLang() + "' LIMIT 1),d.name) name from list_markings d where d.del=0 order by d.sort,d.name", null); + if (cursor.moveToFirst()) + { + do + { + ((selectDB)spiSprMarking).addField(cursor.getString(cursor.getColumnIndex("name")), cursor.getString(cursor.getColumnIndex("id"))); + } while (cursor.moveToNext()); + } + cursor.close(); + dboh.close(); + + cbEffectiveness = (CheckBox) findViewById(R.id.cbEffectiveness); + guiTable.add(cbEffectiveness, "efficiency"); + + OnClickListener oclCbBoxEggs = new OnClickListener() + { + @Override + public void onClick(View v) + { + CheckBox cbx=(CheckBox)v; + if(!cbx.isChecked()) { + AlertDialog.Builder adb = new AlertDialog.Builder(LocustHealthActivity.this, R.style.AlertDialogTheme); + adb.setTitle(getString(R.string.Warning)); + adb.setMessage(LocustHealthActivity.this.getResources().getString(R.string.Cancel_filling_section)); + adb.setPositiveButton(LocustHealthActivity.this.getResources().getString(R.string.Yes), new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int id) { + updateAlpha(); + } + }); + adb.setNegativeButton(LocustHealthActivity.this.getResources().getString(R.string.No), new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int id) { + cbx.setChecked(true); + } + }); + AlertDialog ad = adb.show(); + ad.getButton(AlertDialog.BUTTON_NEGATIVE).setTextColor(Color.BLACK); + ad.getButton(AlertDialog.BUTTON_POSITIVE).setTextColor(Color.BLACK); + + + }else{ + updateAlpha(); + } + + } + }; + cbEffectiveness.setOnClickListener(oclCbBoxEggs); + + + edtEffMortality = (EditText) findViewById(R.id.edtEffMortality); // смертность саранчи(%) + guiTable.add(edtEffMortality, "efficacy_mortality"); + //edtEffMortality.setFilters(new InputFilter[] { new InputFilterMinMax("0", "100") }); + + edtEffTime = (EditText) findViewById(R.id.edtEffTime); // Прошло времени после обработки + guiTable.add(edtEffTime, "efficacy_passed_time"); + + spiEffMethod = findViewById(R.id.spiEffMethod); // метод подсчета смертности "Визуальный", "Учётная рамка". + guiTable.add(spiEffMethod, "efficacy_mortality_method"); + ((selectDB)spiEffMethod).addField("", ""); + dboh = new DbOpenHelper(this); + cursor = dboh + .getReadableDatabase() + .rawQuery( + "select d.id, COALESCE((SELECT translation FROM _translations t JOIN _languages l ON t.language_id=l.id WHERE t.del = 0 AND identifier = d.name AND l.short_name='" + + Tools.getLang() + "' LIMIT 1),d.name) name from list_mortality d where d.del=0 order by d.sort,d.name", null); + if (cursor.moveToFirst()) + { + do + { + ((selectDB)spiEffMethod).addField(cursor.getString(cursor.getColumnIndex("name")), cursor.getString(cursor.getColumnIndex("id"))); + } while (cursor.moveToNext()); + } + cursor.close(); + dboh.close(); + + OnCheckedChangeListener cclsl = new OnCheckedChangeListener() + { + public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) + { + String val = ""; + if (LocustHealthActivity.this.cbSafClothingGoggles.isChecked()) + val += '1'; + if (LocustHealthActivity.this.cbSafClothingMasks.isChecked()) + val += '2'; + if (LocustHealthActivity.this.cbSafClothingGloves.isChecked()) + val += '3'; + if (LocustHealthActivity.this.cbSafClothingOveralls.isChecked()) + val += '4'; + if (LocustHealthActivity.this.cbSafClothingCaps.isChecked()) + val += '5'; + if (LocustHealthActivity.this.cbSafClothingBoots.isChecked()) + val += '6'; + + if (LocustHealthActivity.this.cbSafClothingAbsent.isChecked()) + { + val = "7"; + LocustHealthActivity.this.cbSafClothingGoggles.setEnabled(false); + LocustHealthActivity.this.cbSafClothingMasks.setEnabled(false); + LocustHealthActivity.this.cbSafClothingGloves.setEnabled(false); + LocustHealthActivity.this.cbSafClothingOveralls.setEnabled(false); + LocustHealthActivity.this.cbSafClothingCaps.setEnabled(false); + LocustHealthActivity.this.cbSafClothingBoots.setEnabled(false); + } else + { + LocustHealthActivity.this.cbSafClothingGoggles.setEnabled(true); + LocustHealthActivity.this.cbSafClothingMasks.setEnabled(true); + LocustHealthActivity.this.cbSafClothingGloves.setEnabled(true); + LocustHealthActivity.this.cbSafClothingOveralls.setEnabled(true); + LocustHealthActivity.this.cbSafClothingCaps.setEnabled(true); + LocustHealthActivity.this.cbSafClothingBoots.setEnabled(true); + } + LocustHealthActivity.this.edtClothing.setText(val); + } + }; + cbSafClothingGoggles = (CheckBox) findViewById(R.id.cbSafClothingGoggles); + cbSafClothingGoggles.setOnCheckedChangeListener(cclsl); + cbSafClothingMasks = (CheckBox) findViewById(R.id.cbSafClothingMasks); + cbSafClothingMasks.setOnCheckedChangeListener(cclsl); + cbSafClothingGloves = (CheckBox) findViewById(R.id.cbSafClothingGloves); + cbSafClothingGloves.setOnCheckedChangeListener(cclsl); + cbSafClothingOveralls = (CheckBox) findViewById(R.id.cbSafClothingOveralls); + cbSafClothingOveralls.setOnCheckedChangeListener(cclsl); + cbSafClothingCaps = (CheckBox) findViewById(R.id.cbSafClothingCaps); + cbSafClothingCaps.setOnCheckedChangeListener(cclsl); + cbSafClothingBoots = (CheckBox) findViewById(R.id.cbSafClothingBoots); + cbSafClothingBoots.setOnCheckedChangeListener(cclsl); + cbSafClothingAbsent = (CheckBox) findViewById(R.id.cbSafClothingAbsent); + cbSafClothingAbsent.setOnCheckedChangeListener(cclsl); + + edtClothing = (EditText) findViewById(R.id.edtClothing); + guiTable.add(edtClothing, "safety_clothing"); + + edtClothing.addTextChangedListener(new TextWatcher() + { + public void afterTextChanged(Editable s) + { + } + + public void beforeTextChanged(CharSequence s, int start, int count, int after) + { + } + + public void onTextChanged(CharSequence s, int start, int before, int count) + { + String str = LocustHealthActivity.this.edtClothing.getText().toString(); + + if (str.indexOf("1") != -1) + LocustHealthActivity.this.cbSafClothingGoggles.setChecked(true); + if (str.indexOf("2") != -1) + LocustHealthActivity.this.cbSafClothingMasks.setChecked(true); + if (str.indexOf("3") != -1) + LocustHealthActivity.this.cbSafClothingGloves.setChecked(true); + if (str.indexOf("4") != -1) + LocustHealthActivity.this.cbSafClothingOveralls.setChecked(true); + if (str.indexOf("5") != -1) + LocustHealthActivity.this.cbSafClothingCaps.setChecked(true); + if (str.indexOf("6") != -1) + LocustHealthActivity.this.cbSafClothingBoots.setChecked(true); + if (str.indexOf("7") != -1) + LocustHealthActivity.this.cbSafClothingAbsent.setChecked(true); + + } + }); + + spiProtectiveClothingClean = findViewById(R.id.spiProtectiveClothingClean); + guiTable.add(spiProtectiveClothingClean, "safety_clothing_clean"); + ((selectDB)spiProtectiveClothingClean).addField("", ""); + ((selectDB)spiProtectiveClothingClean).addField(getString(R.string.Yes), "1"); + ((selectDB)spiProtectiveClothingClean).addField(getString(R.string.No), "0"); + + spiOperatorExposedInsecticide = findViewById(R.id.spiOperatorExposedInsecticide); + guiTable.add(spiOperatorExposedInsecticide, "safety_operator_health"); + ((selectDB)spiOperatorExposedInsecticide).addField("", ""); + ((selectDB)spiOperatorExposedInsecticide).addField(getString(R.string.Yes), "1"); + ((selectDB)spiOperatorExposedInsecticide).addField(getString(R.string.No), "0"); + + edtDescription = (EditText) findViewById(R.id.edtDescription); // если да, то какое + guiTable.add(edtDescription, "description"); + + cbTest = (CheckBox) findViewById(R.id.cbTest); + guiTable.add(cbTest, "test"); + + OnCheckedChangeListener ccl = new OnCheckedChangeListener() + { + public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) + { + String val = ""; + if (LocustHealthActivity.this.cbSafInformFarmer.isChecked()) + val += '1'; + if (LocustHealthActivity.this.cbSafInformShepherd.isChecked()) + val += '6'; + if (LocustHealthActivity.this.cbSafInformVillager.isChecked()) + val += '2'; + if (LocustHealthActivity.this.cbSafInformOfficial.isChecked()) + val += '3'; + if (LocustHealthActivity.this.cbSafInformBeekeeper.isChecked()) + val += '4'; + if (LocustHealthActivity.this.cbSafInformOther.isChecked()) + val += '5'; + LocustHealthActivity.this.edtInform.setText(val); + } + }; + cbSafInformFarmer = (CheckBox) findViewById(R.id.cbSafInformFarmer); // Кто был оповещен об обработках? Фермер + cbSafInformFarmer.setOnCheckedChangeListener(ccl); + cbSafInformShepherd = (CheckBox) findViewById(R.id.cbSafInformShepherd); // Кто был оповещен об обработках? Пастух + cbSafInformShepherd.setOnCheckedChangeListener(ccl); + cbSafInformVillager = (CheckBox) findViewById(R.id.cbSafInformVillager); // Кто был оповещен об обработках? Сельский житель + cbSafInformVillager.setOnCheckedChangeListener(ccl); + cbSafInformOfficial = (CheckBox) findViewById(R.id.cbSafInformOfficial); // Кто был оповещен об обработках? Чиновник + cbSafInformOfficial.setOnCheckedChangeListener(ccl); + cbSafInformBeekeeper = (CheckBox) findViewById(R.id.cbSafInformBeekeeper); // Кто был оповещен об обработках? Пчеловод + cbSafInformBeekeeper.setOnCheckedChangeListener(ccl); + cbSafInformOther = (CheckBox) findViewById(R.id.cbSafInformOther); // Кто был оповещен об обработках? Другие + cbSafInformOther.setOnCheckedChangeListener(ccl); + + edtInform = (EditText) findViewById(R.id.edtInform); + guiTable.add(edtInform, "safety_inform"); + + edtInform.addTextChangedListener(new TextWatcher() + { + public void afterTextChanged(Editable s) + { + } + + public void beforeTextChanged(CharSequence s, int start, int count, int after) + { + } + + public void onTextChanged(CharSequence s, int start, int before, int count) + { + String str = LocustHealthActivity.this.edtInform.getText().toString(); + + if (str.indexOf("1") != -1) + LocustHealthActivity.this.cbSafInformFarmer.setChecked(true); // Кто был оповещен об обработках? Фермер + if (str.indexOf("6") != -1) + LocustHealthActivity.this.cbSafInformShepherd.setChecked(true); // Кто был оповещен об обработках? Фермер + if (str.indexOf("2") != -1) + LocustHealthActivity.this.cbSafInformVillager.setChecked(true); // Кто был оповещен об обработках? Сельский житель + if (str.indexOf("3") != -1) + LocustHealthActivity.this.cbSafInformOfficial.setChecked(true); // Кто был оповещен об обработках? Чиновник + if (str.indexOf("4") != -1) + LocustHealthActivity.this.cbSafInformBeekeeper.setChecked(true); // Кто был оповещен об обработках? Пчеловод + if (str.indexOf("5") != -1) + LocustHealthActivity.this.cbSafInformOther.setChecked(true); // Кто был оповещен об обработках? Пчеловод + + } + }); + + + //spiSafEmptyСontainers = findViewById(R.id.spiSafEmptyContainers); // Что сделали с пустыми контейнерами + //guiTable.add(spiSafEmptyСontainers, "safety_container_id"); + //spiSafEmptyСontainers.addField(this, "", ""); + dboh = new DbOpenHelper(this); + cursor = dboh + .getReadableDatabase() + .rawQuery( + "select d.id, COALESCE((SELECT translation FROM _translations t JOIN _languages l ON t.language_id=l.id WHERE t.del = 0 AND identifier = d.name AND l.short_name='" + + Tools.getLang() + "' LIMIT 1),d.name) name from list_containers d where d.del=0 order by d.sort,d.name", null); + if (cursor.moveToFirst()) + { + do + { + //spiSafEmptyСontainers.addField(this, cursor.getString(cursor.getColumnIndex("name")), cursor.getString(cursor.getColumnIndex("id"))); + + if(cursor.getLong(cursor.getColumnIndex("id"))==1) + ((CheckBox) findViewById(R.id.cbTripleRinsed)).setText(cursor.getString(cursor.getColumnIndex("name"))); + if(cursor.getLong(cursor.getColumnIndex("id"))==2) + ((CheckBox) findViewById(R.id.cbPunctured)).setText(cursor.getString(cursor.getColumnIndex("name"))); + if(cursor.getLong(cursor.getColumnIndex("id"))==3) + ((CheckBox) findViewById(R.id.cbTakenBackToBase)).setText(cursor.getString(cursor.getColumnIndex("name"))); + if(cursor.getLong(cursor.getColumnIndex("id"))==4) + ((CheckBox) findViewById(R.id.cbLeftInField)).setText(cursor.getString(cursor.getColumnIndex("name"))); + if(cursor.getLong(cursor.getColumnIndex("id"))==5) + ((CheckBox) findViewById(R.id.cbBuried)).setText(cursor.getString(cursor.getColumnIndex("name"))); + if(cursor.getLong(cursor.getColumnIndex("id"))==6) + ((CheckBox) findViewById(R.id.cbBurned)).setText(cursor.getString(cursor.getColumnIndex("name"))); + + } while (cursor.moveToNext()); + } + cursor.close(); + dboh.close(); + + ccl = new OnCheckedChangeListener() + { + public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) + { + String val = ""; + if (LocustHealthActivity.this.cbTripleRinsed.isChecked()) + val += '1'; + if (LocustHealthActivity.this.cbPunctured.isChecked()) + val += '2'; + if (LocustHealthActivity.this.cbTakenBackToBase.isChecked()) + val += '3'; + if (LocustHealthActivity.this.cbLeftInField.isChecked()) + val += '4'; + if (LocustHealthActivity.this.cbBuried.isChecked()) + val += '5'; + if (LocustHealthActivity.this.cbBurned.isChecked()) + val += '6'; + LocustHealthActivity.this.edtSafEmptyContainers.setText(val); + } + }; + cbTripleRinsed = (CheckBox) findViewById(R.id.cbTripleRinsed); + cbTripleRinsed.setOnCheckedChangeListener(ccl); + cbPunctured = (CheckBox) findViewById(R.id.cbPunctured); + cbPunctured.setOnCheckedChangeListener(ccl); + cbTakenBackToBase = (CheckBox) findViewById(R.id.cbTakenBackToBase); + cbTakenBackToBase.setOnCheckedChangeListener(ccl); + cbLeftInField = (CheckBox) findViewById(R.id.cbLeftInField); + cbLeftInField.setOnCheckedChangeListener(ccl); + cbBuried = (CheckBox) findViewById(R.id.cbBuried); + cbBuried.setOnCheckedChangeListener(ccl); + cbBurned = (CheckBox) findViewById(R.id.cbBurned); + cbBurned.setOnCheckedChangeListener(ccl); + + edtSafEmptyContainers = (EditText) findViewById(R.id.edtSafEmptyContainers); + guiTable.add(edtSafEmptyContainers, "safety_container"); + + + edtSafEmptyContainers.addTextChangedListener(new TextWatcher() + { + public void afterTextChanged(Editable s) + { + } + + public void beforeTextChanged(CharSequence s, int start, int count, int after) + { + } + + public void onTextChanged(CharSequence s, int start, int before, int count) + { + String str = LocustHealthActivity.this.edtSafEmptyContainers.getText().toString(); + if (str.indexOf("1") != -1) + LocustHealthActivity.this.cbTripleRinsed.setChecked(true); + if (str.indexOf("2") != -1) + LocustHealthActivity.this.cbPunctured.setChecked(true); + if (str.indexOf("3") != -1) + LocustHealthActivity.this.cbTakenBackToBase.setChecked(true); + if (str.indexOf("4") != -1) + LocustHealthActivity.this.cbLeftInField.setChecked(true); + if (str.indexOf("5") != -1) + LocustHealthActivity.this.cbBuried.setChecked(true); + if (str.indexOf("6") != -1) + LocustHealthActivity.this.cbBurned.setChecked(true); + } + }); + + spiSafNonTarget = findViewById(R.id.spiSafNonTarget); // воздействие на нецелевые организмы + guiTable.add(spiSafNonTarget, "safety_non_target"); + ((selectDB)spiSafNonTarget).addField("", ""); + ((selectDB)spiSafNonTarget).addField(getString(R.string.Yes), "1"); + ((selectDB)spiSafNonTarget).addField(getString(R.string.No), "0"); + + edtSafNonTargetEffect = (EditText) findViewById(R.id.edtSafNonTargetEffect); // если да, то какое + guiTable.add(edtSafNonTargetEffect, "safety_non_target_effect"); + + // "safety_incident boolean," + //Другие инциденты по здоровью или окружающей среде, возникшие возможно при обработке + // "safety_incident_effect text," + //Если Да, тип инцидента и кем сообщен (описание) + spiSafIncident = findViewById(R.id.spiSafIncident); // Другие инциденты по здоровью или окружающей среде, возникшие возможно при обработке + guiTable.add(spiSafIncident, "safety_incident"); + ((selectDB)spiSafIncident).addField("", ""); + ((selectDB)spiSafIncident).addField(getString(R.string.Yes), "1"); + ((selectDB)spiSafIncident).addField(getString(R.string.No), "0"); + + edtSafIncidentEffect = (EditText) findViewById(R.id.edtSafIncidentEffect); // Если Да, тип инцидента и кем сообщен (описание) + guiTable.add(edtSafIncidentEffect, "safety_incident_effect"); + + edtComments = (EditText) findViewById(R.id.edtComments); // КОММЕНТАР�?�? + guiTable.add(edtComments, "comments"); + + // *** Кнопки *** + btnGetGPSCenter = (View) findViewById(R.id.btnGetGPSCenter); + OnClickListener oclBtnGetGPSCenter = new OnClickListener() + { + @Override + public void onClick(View v) + { + DecimalFormatSymbols custom = new DecimalFormatSymbols(new Locale("en", "US")); + custom.setDecimalSeparator('.'); + + DecimalFormat df = new DecimalFormat("0.0000000"); + df.setDecimalFormatSymbols(custom); + + if(LocustHealthActivity.this._lat!=0 && LocustHealthActivity.this._lon!=0) { + LocustHealthActivity.this.edtLatCenter.setText(df.format(LocustHealthActivity.this._lat)); + LocustHealthActivity.this.edtLonCenter.setText(df.format(LocustHealthActivity.this._lon)); + } + //Checking if the GPS is active and if it is inactive, I display a warning about it + LocationManager locationManager = (LocationManager) LocustHealthActivity.this.getSystemService(Context.LOCATION_SERVICE);; + if(!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)){ + Toast.makeText(LocustHealthActivity.this, LocustHealthActivity.this.getResources().getString(R.string.Please_activate_GPS), Toast.LENGTH_LONG).show(); + } + } + }; + btnGetGPSCenter.setOnClickListener(oclBtnGetGPSCenter); + + btnDelGPSCenter = (View) findViewById(R.id.btnDelGPSCenter); + btnDelGPSCenter.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View v) { + LocustHealthActivity.this.edtLatCenter.setText(""); + LocustHealthActivity.this.edtLonCenter.setText(""); + } + }); + + btnOnMap = (View) findViewById(R.id.btnOnMap); + OnClickListener oclBtnOnMap = new OnClickListener() + { + @Override + public void onClick(View v) + { + Intent intent = new Intent(LocustHealthActivity.this, MapsActivity.class); + intent.putParcelableArrayListExtra("LatLon", ((LatLonAdapter)latlonList.getAdapter()).latlonList); + intent.putExtra("uid", uid); + startActivityForResult(intent,4); + } + }; + btnOnMap.setOnClickListener(oclBtnOnMap); + + // android:id="@+id/btnOk" + btnOk = (View) findViewById(R.id.btnOk); + OnClickListener oclBtnOk = new OnClickListener() + { + @Override + public void onClick(View v) + { + saveData(); + } + }; + btnOk.setOnClickListener(oclBtnOk); + + btnCancel = (View) findViewById(R.id.btnCancel); + OnClickListener oclBtnCancel = new OnClickListener() + { + @Override + public void onClick(View v) + { + AlertDialog.Builder adb = new AlertDialog.Builder(LocustHealthActivity.this, R.style.AlertDialogTheme); + adb.setTitle(getString(R.string.Warning)); + adb.setMessage(LocustHealthActivity.this.getResources().getString(R.string.Cancel_filling_form)); + adb.setPositiveButton(LocustHealthActivity.this.getResources().getString(R.string.Yes), new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int id) { + LocustHealthActivity.this.finish(); + } + }); + adb.setNegativeButton(LocustHealthActivity.this.getResources().getString(R.string.No), new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int id) { + + } + }); + AlertDialog ad = adb.show(); + ad.getButton(AlertDialog.BUTTON_NEGATIVE).setTextColor(Color.BLACK); + ad.getButton(AlertDialog.BUTTON_POSITIVE).setTextColor(Color.BLACK); + } + }; + btnCancel.setOnClickListener(oclBtnCancel); + /* + * btnImage = (View) findViewById(R.id.btnImage); OnClickListener oclBtnImage = new OnClickListener() { + * + * @Override public void onClick(View v) { File directory = new File(Environment.getExternalStorageDirectory() + File.separator + "Pictures" + File.separator + "Locust"); directory.mkdirs(); + * + * tmp_ImageName = "locust_" + (System.currentTimeMillis() / 1000L) + ".jpg"; + * + * File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/Pictures/Locust/" + tmp_ImageName); mImageUri = Uri.fromFile(file); + * + * Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); intent.putExtra(MediaStore.EXTRA_OUTPUT, mImageUri); startActivityForResult(intent, 1); } }; btnImage.setOnClickListener(oclBtnImage); + */ + + btnImage1 = (View) findViewById(R.id.btnImage1); + OnClickListener oclBtnImage = new OnClickListener() + { + @Override + public void onClick(View v) + { + // Создаём папку если её нет + File directory = new File(Environment.getExternalStorageDirectory() + File.separator + "Pictures" + File.separator + "Locust"); + directory.mkdirs(); + + tmp_ImageName = "locust_" + (System.currentTimeMillis() / 1000L) + ".jpg"; + + File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/Pictures/Locust/" + tmp_ImageName); + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) + mImageUri = FileProvider.getUriForFile(LocustHealthActivity.this, BuildConfig.APPLICATION_ID + ".provider",file); + else + mImageUri = Uri.fromFile(file); + + Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); + intent.putExtra(MediaStore.EXTRA_OUTPUT, mImageUri); + startActivityForResult(intent, 1); + } + }; + btnImage1.setOnClickListener(oclBtnImage); + + btnImage2 = (View) findViewById(R.id.btnImage2); + oclBtnImage = new OnClickListener() + { + @Override + public void onClick(View v) + { + // Создаём папку если её нет + File directory = new File(Environment.getExternalStorageDirectory() + File.separator + "Pictures" + File.separator + "Locust"); + directory.mkdirs(); + + tmp_ImageName = "locust_" + (System.currentTimeMillis() / 1000L) + ".jpg"; + + File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/Pictures/Locust/" + tmp_ImageName); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) + mImageUri = FileProvider.getUriForFile(LocustHealthActivity.this, BuildConfig.APPLICATION_ID + ".provider",file); + else + mImageUri = Uri.fromFile(file); + + + Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); + intent.putExtra(MediaStore.EXTRA_OUTPUT, mImageUri); + startActivityForResult(intent, 2); + } + }; + btnImage2.setOnClickListener(oclBtnImage); + + btnImage3 = (View) findViewById(R.id.btnImage3); + oclBtnImage = new OnClickListener() + { + @Override + public void onClick(View v) + { + // Создаём папку если её нет + File directory = new File(Environment.getExternalStorageDirectory() + File.separator + "Pictures" + File.separator + "Locust"); + directory.mkdirs(); + + tmp_ImageName = "locust_" + (System.currentTimeMillis() / 1000L) + ".jpg"; + + File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/Pictures/Locust/" + tmp_ImageName); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) + mImageUri = FileProvider.getUriForFile(LocustHealthActivity.this, BuildConfig.APPLICATION_ID + ".provider",file); + else + mImageUri = Uri.fromFile(file); + + Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); + intent.putExtra(MediaStore.EXTRA_OUTPUT, mImageUri); + startActivityForResult(intent, 3); + } + }; + btnImage3.setOnClickListener(oclBtnImage); + + /* + * btnShowImage = (View) findViewById(R.id.btnShowImage1); OnClickListener oclBtnShowImage = new OnClickListener() { + * + * @Override public void onClick(View v) { File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/Pictures/Locust/" + edtImage1.getText().toString()); Intent i = new Intent(); i.setAction(android.content.Intent.ACTION_VIEW); i.setDataAndType(Uri.fromFile(file), "image/jpg"); startActivity(i); } }; btnShowImage.setOnClickListener(oclBtnShowImage); + */ + + btnShowImage1 = (View) findViewById(R.id.btnShowImage1); // Отобразить фотографию 1 в новом окне + OnClickListener oclBtnShowImage = new OnClickListener() + { + @Override + public void onClick(View v) + { + File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/Pictures/Locust/" + edtImage1.getText().toString()); + if(!file.isFile()) file = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/Pictures/Locust/_" + edtImage1.getText().toString()); + if (file.isFile()) { + //Uri uri = Uri.fromFile(file); + Uri uri = FileProvider.getUriForFile(LocustHealthActivity.this, BuildConfig.APPLICATION_ID + ".provider", file); + + Intent i = new Intent(); + i.setAction(Intent.ACTION_VIEW); + i.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); + i.setDataAndType(uri, "image/jpg"); + startActivity(i); + } + } + }; + btnShowImage1.setOnClickListener(oclBtnShowImage); + + btnShowImage2 = (View) findViewById(R.id.btnShowImage2); // Отобразить фотографию 1 в новом окне + oclBtnShowImage = new OnClickListener() + { + @Override + public void onClick(View v) + { + File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/Pictures/Locust/" + edtImage2.getText().toString()); + if(!file.isFile()) file = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/Pictures/Locust/_" + edtImage2.getText().toString()); + if (file.isFile()) { + //Uri uri = Uri.fromFile(file); + Uri uri = FileProvider.getUriForFile(LocustHealthActivity.this, BuildConfig.APPLICATION_ID + ".provider", file); + + Intent i = new Intent(); + i.setAction(Intent.ACTION_VIEW); + i.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); + i.setDataAndType(uri, "image/jpg"); + startActivity(i); + } + } + }; + btnShowImage2.setOnClickListener(oclBtnShowImage); + + btnShowImage3 = (View) findViewById(R.id.btnShowImage3); // Отобразить фотографию 3 в новом окне + oclBtnShowImage = new OnClickListener() + { + @Override + public void onClick(View v) + { + File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/Pictures/Locust/" + edtImage3.getText().toString()); + if(!file.isFile()) file = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/Pictures/Locust/_" + edtImage3.getText().toString()); + if (file.isFile()) { + //Uri uri = Uri.fromFile(file); + Uri uri = FileProvider.getUriForFile(LocustHealthActivity.this, BuildConfig.APPLICATION_ID + ".provider", file); + + Intent i = new Intent(); + i.setAction(Intent.ACTION_VIEW); + i.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); + i.setDataAndType(uri, "image/jpg"); + startActivity(i); + } + } + }; + btnShowImage3.setOnClickListener(oclBtnShowImage); + + btnDelImage1 = (View) findViewById(R.id.btnDelImage1); + btnDelImage1.setOnClickListener( + new OnClickListener() + { + @Override + public void onClick(View v) + { + edtImage1.setText(""); + } + } + ); + + btnDelImage2 = (View) findViewById(R.id.btnDelImage2); + btnDelImage2.setOnClickListener( + new OnClickListener() + { + @Override + public void onClick(View v) + { + edtImage2.setText(""); + } + } + ); + + btnDelImage3 = (View) findViewById(R.id.btnDelImage3); + btnDelImage3.setOnClickListener( + new OnClickListener() + { + @Override + public void onClick(View v) + { + edtImage3.setText(""); + } + } + ); + + + // Взависимости от параметров создание или редактирование + editData(uid); + adapter.notifyDataSetChanged(); + Tools.setListViewHeightBasedOnItems(latlonList); + + //updateAlpha(); movied to onResume + + // Чтоб слушать GPS (в конце метода чтобы успели присвоиться GUI компоненты локальным переменным) + _lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); + if (ActivityCompat.checkSelfPermission(this, 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 + public void onResume(){ + super.onResume(); + + if(spiCountry.getClass().toString().indexOf("dbfields.AutoCompleteTextViewDB")!=-1) ((AutoCompleteTextViewDB)spiCountry).updateAdapter(this); + if(spiRegion.getClass().toString().indexOf("dbfields.AutoCompleteTextViewDB")!=-1) ((AutoCompleteTextViewDB)spiRegion).updateAdapter(this); + if(spiVegType.getClass().toString().indexOf("dbfields.AutoCompleteTextViewDB")!=-1) ((AutoCompleteTextViewDB)spiVegType).updateAdapter(this); + if(spiVegCover.getClass().toString().indexOf("dbfields.AutoCompleteTextViewDB")!=-1) ((AutoCompleteTextViewDB)spiVegCover).updateAdapter(this); + if(spiVegDamage.getClass().toString().indexOf("dbfields.AutoCompleteTextViewDB")!=-1) ((AutoCompleteTextViewDB)spiVegDamage).updateAdapter(this); + if(spiInsFormulation.getClass().toString().indexOf("dbfields.AutoCompleteTextViewDB")!=-1) ((AutoCompleteTextViewDB)spiInsFormulation).updateAdapter(this); + if(spiWeaTimeStart.getClass().toString().indexOf("dbfields.AutoCompleteTextViewDB")!=-1) ((AutoCompleteTextViewDB)spiWeaTimeStart).updateAdapter(this); + if(spiWeaTimeEnd.getClass().toString().indexOf("dbfields.AutoCompleteTextViewDB")!=-1) ((AutoCompleteTextViewDB)spiWeaTimeEnd).updateAdapter(this); + if(spiWindDirectionStart.getClass().toString().indexOf("dbfields.AutoCompleteTextViewDB")!=-1) ((AutoCompleteTextViewDB)spiWindDirectionStart).updateAdapter(this); + if(spiWindDirectionEnd.getClass().toString().indexOf("dbfields.AutoCompleteTextViewDB")!=-1) ((AutoCompleteTextViewDB)spiWindDirectionEnd).updateAdapter(this); + if(spiSprayDirectionStart.getClass().toString().indexOf("dbfields.AutoCompleteTextViewDB")!=-1) ((AutoCompleteTextViewDB)spiSprayDirectionStart).updateAdapter(this); + if(spiSprayDirectionEnd.getClass().toString().indexOf("dbfields.AutoCompleteTextViewDB")!=-1) ((AutoCompleteTextViewDB)spiSprayDirectionEnd).updateAdapter(this); + if(spiLocSpeciese.getClass().toString().indexOf("dbfields.AutoCompleteTextViewDB")!=-1) ((AutoCompleteTextViewDB)spiLocSpeciese).updateAdapter(this); + if(spiLocHoppers.getClass().toString().indexOf("dbfields.AutoCompleteTextViewDB")!=-1) ((AutoCompleteTextViewDB)spiLocHoppers).updateAdapter(this); + if(spiImago.getClass().toString().indexOf("dbfields.AutoCompleteTextViewDB")!=-1) ((AutoCompleteTextViewDB)spiImago).updateAdapter(this); + if(spiKuliguli.getClass().toString().indexOf("dbfields.AutoCompleteTextViewDB")!=-1) ((AutoCompleteTextViewDB)spiKuliguli).updateAdapter(this); + if(spiSwarm.getClass().toString().indexOf("dbfields.AutoCompleteTextViewDB")!=-1) ((AutoCompleteTextViewDB)spiSwarm).updateAdapter(this); + if(spiSparse.getClass().toString().indexOf("dbfields.AutoCompleteTextViewDB")!=-1) ((AutoCompleteTextViewDB)spiSparse).updateAdapter(this); + if(spiLocustPhaseId.getClass().toString().indexOf("dbfields.AutoCompleteTextViewDB")!=-1) ((AutoCompleteTextViewDB)spiLocustPhaseId).updateAdapter(this); + if(spiSprPlatform.getClass().toString().indexOf("dbfields.AutoCompleteTextViewDB")!=-1) ((AutoCompleteTextViewDB)spiSprPlatform).updateAdapter(this); + if(spiSprPlatformA.getClass().toString().indexOf("dbfields.AutoCompleteTextViewDB")!=-1) ((AutoCompleteTextViewDB)spiSprPlatformA).updateAdapter(this); + if(spiSprPlatformG.getClass().toString().indexOf("dbfields.AutoCompleteTextViewDB")!=-1) ((AutoCompleteTextViewDB)spiSprPlatformG).updateAdapter(this); + if(spiSprPlatformH.getClass().toString().indexOf("dbfields.AutoCompleteTextViewDB")!=-1) ((AutoCompleteTextViewDB)spiSprPlatformH).updateAdapter(this); + if(spiSprBarrier.getClass().toString().indexOf("dbfields.AutoCompleteTextViewDB")!=-1) ((AutoCompleteTextViewDB)spiSprBarrier).updateAdapter(this); + if(spiSprMarking.getClass().toString().indexOf("dbfields.AutoCompleteTextViewDB")!=-1) ((AutoCompleteTextViewDB)spiSprMarking).updateAdapter(this); + if(spiEffMethod.getClass().toString().indexOf("dbfields.AutoCompleteTextViewDB")!=-1) ((AutoCompleteTextViewDB)spiEffMethod).updateAdapter(this); + if(spiProtectiveClothingClean.getClass().toString().indexOf("dbfields.AutoCompleteTextViewDB")!=-1) ((AutoCompleteTextViewDB)spiProtectiveClothingClean).updateAdapter(this); + if(spiOperatorExposedInsecticide.getClass().toString().indexOf("dbfields.AutoCompleteTextViewDB")!=-1) ((AutoCompleteTextViewDB)spiOperatorExposedInsecticide).updateAdapter(this); + if(spiSafNonTarget.getClass().toString().indexOf("dbfields.AutoCompleteTextViewDB")!=-1) ((AutoCompleteTextViewDB)spiSafNonTarget).updateAdapter(this); + if(spiSafIncident.getClass().toString().indexOf("dbfields.AutoCompleteTextViewDB")!=-1) ((AutoCompleteTextViewDB)spiSafIncident).updateAdapter(this); + + updateAlpha(); + } + + // Сохраняются настройки перед уничтожением формы + @Override + protected void onSaveInstanceState(Bundle outState) + { + super.onSaveInstanceState(outState); + if (mImageUri != null) + { + outState.putString("cameraImageUri", mImageUri.toString()); + } + // Сохраняем название рисунка (Не знаю почему но автоматом не сохраняет) + outState.putString("ImageName", edtImage1.getText().toString()); + //Сохраняю список координат LatLon + LatLonAdapter adapter = (LatLonAdapter)latlonList.getAdapter(); + ArrayList list = adapter.latlonList; + for(int i=0;i points = data.getParcelableArrayListExtra("LatLon"); + LatLonAdapter adapter = (LatLonAdapter)latlonList.getAdapter(); + ArrayList list = adapter.latlonList; + list.clear(); + for(int i=0;i list = ((LatLonAdapter)latlonList.getAdapter()).latlonList; + for(int i=0;i list = adapter.latlonList; + list.clear(); + DbOpenHelper dboh = new DbOpenHelper(this); + Cursor cursor = dboh.getReadableDatabase().rawQuery("select lat,lon from frmlocustdel_locations where frmlocustdel_uid='" + uid + "' order by pos", null); + if (cursor.moveToFirst()) + { + do + { + list.add(new LatLon(cursor.getDouble(0), cursor.getDouble(1))); + } while (cursor.moveToNext()); + } + cursor.close(); + dboh.close(); + list.add(new LatLon(0, 0)); + } + } + + /*** + * Переместить и сфокусировать на переданном элементе + */ + public void scrollTo(View item) + { + int top = 0; + View tmp = item; + while (tmp != null) + { + if (tmp == scrollView1) + { + scrollView1.scrollTo(0, top); + item.requestFocus(); + break; + } + + top += tmp.getTop(); + tmp = (View) tmp.getParent(); + } + } + + public void alert(String text) + { + AlertDialog.Builder adb = new AlertDialog.Builder(this,R.style.AlertDialogTheme); + adb.setTitle(getString(R.string.Warning)); + adb.setMessage(text); + adb.setPositiveButton("OK", new DialogInterface.OnClickListener() // Кнопка открыть + { + @Override + public void onClick(DialogInterface arg0, int arg1) + { + } + }); + AlertDialog ad = adb.show(); + ad.getButton(AlertDialog.BUTTON_POSITIVE).setTextColor(Color.BLACK); + } + + public boolean isGONE(View view) + { + if (!view.isClickable()) + return true; + try { + while (view != null) { + if (view.getVisibility() == View.GONE) + return true; + + view = (View) view.getParent(); + if(view==getWindow().getDecorView().getRootView()) + break; + } + }catch (Exception e) + {} + return false; + } + + /** + * Save to the database + */ + public void saveData() + { + // Checking for fullness of fields + String atxt = getString(R.string.Not_filled); // Текст для алерта: "Не заполнено поле". + boolean eFields = false; // У анкеты 2 состояния 1) Заполнены все обяз поля 2) Не заполнены все обяз поля + + if (!eFields && !isGONE(spiCountry) && ((selectDB)spiCountry).getText().toString().equals("")) + { + scrollTo(spiCountry); + atxt = atxt + ": \"" + getResources().getString(R.string.Country) + "\"!"; //@string/Country + eFields = true; + } + if (!eFields && !isGONE(spiRegion) && (((selectDB)spiRegion).getValue() == null || ((selectDB)spiRegion).getValue().equals(""))) + { + scrollTo(spiRegion); + atxt = atxt + ": \"" + getResources().getString(R.string.Region) + "\"!"; + eFields = true; + } + if (!eFields && !isGONE(edtArea) && edtArea.getText().toString().equals("")) + { + scrollTo(edtArea); + atxt = atxt + ": \"" + getResources().getString(R.string.Area) + "\"!"; + eFields = true; + } + if (!eFields && !isGONE(edtVillage) && edtVillage.getText().toString().equals("")) + { + scrollTo(edtVillage); + atxt = atxt + ": \"" + getResources().getString(R.string.Name_of_the_village) + "\"!"; + eFields = true; + } + if(!eFields && !isGONE(edtObserver) && edtObserver.getText().toString().equals("")) + { + scrollTo(edtObserver); + atxt = atxt + ": \"" + getResources().getString(R.string.Name_of_survey_team_leader) + "\"!"; + eFields = true; + } + + if (!eFields && !isGONE(edtDate) && (((fieldDB)edtDate).getValue() == null || ((fieldDB)edtDate).getValue().equals(""))) + { + scrollTo(edtDate); + atxt = atxt + ": \"" + getResources().getString(R.string.Date) + "\"!"; + eFields = true; + } + // TODO Не забыть раскоментировать при публикации новой версии + if (!eFields && (!isGONE(edtLatCenter) && edtLatCenter.getText().toString().equals("") || Tools.getDouble(edtLatCenter.getText().toString(),0.0) == 0)) + { + scrollTo(edtLatCenter); + atxt = atxt + ": \"" + getResources().getString(R.string.Lat_center) + "\"!"; + eFields = true; + } + if (!eFields && (!isGONE(edtLonCenter) && edtLonCenter.getText().toString().equals("") || Tools.getDouble(edtLonCenter.getText().toString(),0.0) == 0)) + { + scrollTo(edtLonCenter); + atxt = atxt + ": \"" + getResources().getString(R.string.Lon_center) + "\"!"; + eFields = true; + } + + if (!eFields && !isGONE(edtInfestedArea)) + { + if(edtInfestedArea.getText().toString().equals("")) + { + scrollTo(edtInfestedArea); + atxt = atxt + ": \"" + getResources().getString(R.string.Area_infested_ha) + "\"!"; + eFields = true; + }else + if(checkMinMaxI(edtInfestedArea,0,1000)!="") + { + scrollTo(edtInfestedArea); + atxt = checkMinMaxI(edtInfestedArea,0,1000) + " \"" + getResources().getString(R.string.Area_infested_ha) + "\"!"; + eFields = true; + } + } + if (!eFields && !isGONE(edtTreatedArea)) + { + if(edtTreatedArea.getText().toString().equals("")) + { + scrollTo(edtTreatedArea); + atxt = atxt + ": \"" + getResources().getString(R.string.Area_treated_ha) + "\"!"; + eFields = true; + }else + if(checkMinMaxI(edtTreatedArea,0,1000)!="") + { + scrollTo(edtTreatedArea); + atxt = checkMinMaxI(edtTreatedArea,0,1000) + " \"" + getResources().getString(R.string.Area_treated_ha) + "\"!"; + eFields = true; + } + } + if (!eFields && !isGONE(spiVegType) && ((selectDB)spiVegType).getText().toString().equals("")) + { + scrollTo(spiVegType); + atxt = atxt + ": \"" + getResources().getString(R.string.Vegetation_type) + "\"!"; + eFields = true; + } + if (!eFields && !isGONE(edtVegHeight)) + { + if(edtVegHeight.getText().toString().equals("")) + { + scrollTo(edtVegHeight); + atxt = atxt + ": \"" + getResources().getString(R.string.Height_cm) + "\"!"; + eFields = true; + }else + if(checkMinMaxI(edtVegHeight,0,600)!="") + { + scrollTo(edtVegHeight); + atxt = checkMinMaxI(edtVegHeight,0,600) + " \"" + getResources().getString(R.string.Height_cm) + "\"!"; + eFields = true; + } + } + if (!eFields && !isGONE(spiVegCover) && ((selectDB)spiVegCover).getText().toString().equals("")) + { + scrollTo(spiVegCover); + atxt = atxt + ": \"" + getResources().getString(R.string.Del_Vegetation_cover) + "\"!"; + eFields = true; + } + if (!eFields && !isGONE(spiVegDamage) && ((selectDB)spiVegDamage).getText().toString().equals("")) + { + scrollTo(spiVegDamage); + atxt = atxt + ": \"" + getResources().getString(R.string.Damage) + "\"!"; + eFields = true; + } + if (!eFields && !isGONE(edtVegDamageArea)) + { + if(checkMinMaxI(edtVegDamageArea,0,100000)!="") + { + scrollTo(edtVegDamageArea); + atxt = checkMinMaxI(edtVegDamageArea,0,100000) + " \"" + getResources().getString(R.string.Damage_area_ha) + "\"!"; + eFields = true; + } + } + if (!eFields && !isGONE(edtInsName) && edtInsName.getText().toString().equals("")) + { + scrollTo(edtInsName); + atxt = atxt + ": \"" + getResources().getString(R.string.Trade_name) + "\"!"; + eFields = true; + } + if (!eFields && !isGONE(edtInsActiveSubstance) && edtInsActiveSubstance.getText().toString().equals("")) + { + scrollTo(edtInsActiveSubstance); + atxt = atxt + ": \"" + getResources().getString(R.string.The_active_substance) + "\"!"; + eFields = true; + } + if (!eFields && !isGONE(edtInsConcentration)) + { + if(edtInsConcentration.getText().toString().equals("")) + { + scrollTo(edtInsConcentration); + atxt = atxt + ": \"" + getResources().getString(R.string.Concentration_A_S) + "\"!"; + eFields = true; + }/*else + if(checkMinMaxI(edtInsConcentration,0,100)!="") + { + scrollTo(edtInsConcentration); + atxt = checkMinMaxI(edtInsConcentration,0,100) + " \"" + getResources().getString(R.string.Concentration_A_S) + "\"!"; + eFields = true; + }*/ + } + if (!eFields && !isGONE(spiInsFormulation) && ((selectDB)spiInsFormulation).getText().toString().equals("")) + { + scrollTo(spiInsFormulation); + atxt = atxt + ": \"" + getResources().getString(R.string.Formulation) + "\"!"; + eFields = true; + } + if (!eFields && !isGONE(edtInsDose)) + { + if(checkMinMaxI(edtInsDose,0.005f,5)!="") + { + scrollTo(edtInsDose); + atxt = checkMinMaxI(edtInsDose,0.005f,5) + " \"" + getResources().getString(R.string.Dose_rate_l_of_commercial_product_ha) + "\"!"; + eFields = true; + } + } + if (!eFields && !isGONE(edtInsRate)) + { + if(checkMinMaxI(edtInsRate,0.1f,600)!="") + { + scrollTo(edtInsRate); + atxt = checkMinMaxI(edtInsRate,0.1f,600) + " \"" + getResources().getString(R.string.Rate_of_working_solution_l_ha) + "\"!"; + eFields = true; + } + } + if (!eFields && !isGONE(edtInsUsedVolume)) + { + if(edtInsUsedVolume.getText().toString().equals("")) + { + scrollTo(edtInsUsedVolume); + atxt = atxt + ": \"" + getResources().getString(R.string.Total_volume_of_working_solution_actually_applied_l) + "\"!"; + eFields = true; + }else + if(checkMinMaxI(edtInsUsedVolume,1,450000)!="") + { + scrollTo(edtInsUsedVolume); + atxt = checkMinMaxI(edtInsUsedVolume,1,450000) + " \"" + getResources().getString(R.string.Total_volume_of_working_solution_actually_applied_l) + "\"!"; + eFields = true; + } + } + if (!eFields && !isGONE(spiWeaTimeStart) && ((selectDB)spiWeaTimeStart).getText().toString().equals("")) + { + scrollTo(spiWeaTimeStart); + atxt = atxt + ": \"" + getResources().getString(R.string.Time_start) + "\"!"; + eFields = true; + } + if (!eFields && !isGONE(spiWeaTimeEnd) && ((selectDB)spiWeaTimeEnd).getText().toString().equals("")) + { + scrollTo(spiWeaTimeEnd); + atxt = atxt + ": \"" + getResources().getString(R.string.Time_end) + "\"!"; + eFields = true; + } + if (!eFields && !isGONE(edtWeaTemperatureStart)) + { + if(checkMinMaxI(edtWeaTemperatureStart,0,50)!="") + { + scrollTo(edtWeaTemperatureStart); + atxt = checkMinMaxI(edtWeaTemperatureStart,0,50) + " \"" + getResources().getString(R.string.Temperature_start) + "\"!"; + eFields = true; + } + } + if (!eFields && !isGONE(edtWeaTemperatureEnd)) + { + if(checkMinMaxI(edtWeaTemperatureEnd,0,50)!="") + { + scrollTo(edtWeaTemperatureEnd); + atxt = checkMinMaxI(edtWeaTemperatureEnd,0,50) + " \"" + getResources().getString(R.string.Temperature_end) + "\"!"; + eFields = true; + } + } + + if (!eFields && !isGONE(edtWeaHumidityStart)) + { + if(checkMinMaxI(edtWeaHumidityStart,0,100)!="") + { + scrollTo(edtWeaHumidityStart); + atxt = checkMinMaxI(edtWeaHumidityStart,0,100) + " \"" + getResources().getString(R.string.Relative_humidity_start) + "\"!"; + eFields = true; + } + } + if (!eFields && !isGONE(edtWeaHumidityEnd)) + { + if(checkMinMaxI(edtWeaHumidityEnd,0,100)!="") + { + scrollTo(edtWeaHumidityEnd); + atxt = checkMinMaxI(edtWeaHumidityEnd,0,100) + " \"" + getResources().getString(R.string.Relative_humidity_end) + "\"!"; + eFields = true; + } + } + if (!eFields && !isGONE(edtWeaWindSpeedStart)) + { + if(checkMinMaxI(edtWeaWindSpeedStart,0,20)!="") + { + scrollTo(edtWeaWindSpeedStart); + atxt = checkMinMaxI(edtWeaWindSpeedStart,0,20) + " \"" + getResources().getString(R.string.Wind_speed_start_m_s) + "\"!"; + eFields = true; + } + } + if (!eFields && !isGONE(edtWeaWindSpeedEnd)) + { + if(checkMinMaxI(edtWeaWindSpeedEnd,0,20)!="") + { + scrollTo(edtWeaWindSpeedEnd); + atxt = checkMinMaxI(edtWeaWindSpeedEnd,0,20) + " \"" + getResources().getString(R.string.Wind_speed_end_m_s) + "\"!"; + eFields = true; + } + } + if (!eFields && !isGONE(spiLocSpeciese) && ((selectDB)spiLocSpeciese).getText().toString().equals("")) + { + scrollTo(spiLocSpeciese); + atxt = atxt + ": \"" + getResources().getString(R.string.Type) + "\"!"; + eFields = true; + } + if (!eFields && !isGONE(spiLocHoppers) && ((selectDB)spiLocHoppers).getText().toString().equals("")) + { + scrollTo(spiLocHoppers); + atxt = atxt + ": \"" + getResources().getString(R.string.Hopper_stages) + "\"!"; + eFields = true; + } + if (!eFields && !isGONE(edtLocDensity)) + { + if(edtLocDensity.getText().toString().equals("")) + { + scrollTo(edtLocDensity); + atxt = atxt + ": \"" + getResources().getString(R.string.Density_m2) + "\"!"; + eFields = true; + }else + if(checkMinMaxI(edtLocDensity,0,80000)!="") + { + scrollTo(edtLocDensity); + atxt = checkMinMaxI(edtLocDensity,0,80000) + " \"" + getResources().getString(R.string.Density_m2) + "\"!"; + eFields = true; + } + } + if (!eFields && !isGONE(spiKuliguli) && ((selectDB)spiKuliguli).getText().toString().equals("")) + { + scrollTo(spiKuliguli); + atxt = atxt + ": \"" + getResources().getString(R.string.Bands) + "\"!"; + eFields = true; + } + if (!eFields && !isGONE(spiSwarm) && ((selectDB)spiSwarm).getText().toString().equals("")) + { + scrollTo(spiSwarm); + atxt = atxt + ": \"" + getResources().getString(R.string.Swarms) + "\"!"; + eFields = true; + } + if (!eFields && !isGONE(spiSparse) && ((selectDB)spiSparse).getText().toString().equals("")) + { + scrollTo(spiSparse); + atxt = atxt + ": \"" + getResources().getString(R.string.Del_Scattered) + "\"!"; + eFields = true; + } + if (!eFields && !isGONE(spiSprPlatform) && ((selectDB)spiSprPlatform).getText().toString().equals("")) + { + scrollTo(spiSprPlatform); + atxt = atxt + ": \"" + getResources().getString(R.string.Spray_platform) + "\"!"; + eFields = true; + } + if (!eFields && !isGONE(edtSprHeight)) + { + if(checkMinMaxI(edtSprHeight,1,100)!="") + { + scrollTo(edtSprHeight); + atxt = checkMinMaxI(edtSprHeight,1,100) + " \"" + getResources().getString(R.string.Atomizer_height_above_ground_m) + "\"!"; + eFields = true; + } + } + if (!eFields && !isGONE(spiSprBarrier) && ((selectDB)spiSprBarrier).getText().toString().equals("")) + { + scrollTo(spiSprBarrier); + atxt = atxt + ": \"" + getResources().getString(R.string.Barriers) + "\"!"; + eFields = true; + } + + if (!eFields && !isGONE(edtSprBarrierWidth)) + { + if(checkMinMaxI(edtSprBarrierWidth,1,300)!="") + { + scrollTo(edtSprBarrierWidth); + atxt = checkMinMaxI(edtSprBarrierWidth,1,300) + " \"" + getResources().getString(R.string.Barrier_width_m) + "\"!"; + eFields = true; + } + } + if (!eFields && !isGONE(edtSprBarrierSpace)) + { + if(checkMinMaxI(edtSprBarrierSpace,1,1000)!="") + { + scrollTo(edtSprBarrierSpace); + atxt = checkMinMaxI(edtSprBarrierSpace,1,1000) + " \"" + getResources().getString(R.string.Spacing_of_barriers_m) + "\"!"; + eFields = true; + } + } + + if (!eFields && !isGONE(edtSprSpeed)) + { + if(edtSprSpeed.getText().toString().equals("")) + { + scrollTo(edtSprSpeed); + atxt = atxt + ": \"" + getResources().getString(R.string.Forward_speed_km_h) + "\"!"; + eFields = true; + }else + if(checkMinMaxI(edtSprSpeed,1,300)!="") + { + scrollTo(edtSprSpeed); + atxt = checkMinMaxI(edtSprSpeed,1,300) + " \"" + getResources().getString(R.string.Forward_speed_km_h) + "\"!"; + eFields = true; + } + } + if(!eFields && !isGONE(edtEffMortality) ) + { + if(edtEffMortality.getText().toString().equals("")) + { + scrollTo(edtEffMortality); + atxt = atxt + ": \"" + getResources().getString(R.string.Biological_efficiency_of_treatment) + "\"!"; + eFields = true; + }else + if(checkMinMaxI(edtEffMortality,0,100)!="") + { + scrollTo(edtEffMortality); + atxt = checkMinMaxI(edtEffMortality,0,100) + " \"" + getResources().getString(R.string.Biological_efficiency_of_treatment) + "\"!"; + eFields = true; + } + } + if(!eFields && !isGONE(edtEffTime)) + { + if(edtEffTime.getText().toString().equals("")) + { + scrollTo(edtEffTime); + atxt = atxt + ": \"" + getResources().getString(R.string.Time_after_treatment_hours) + "\"!"; + eFields = true; + }else + if(checkMinMaxI(edtEffTime,0,240)!="") + { + scrollTo(edtEffTime); + atxt = checkMinMaxI(edtEffTime,0,240) + " \"" + getResources().getString(R.string.Time_after_treatment_hours) + "\"!"; + eFields = true; + } + } + if(!eFields && !isGONE(edtClothing) && edtClothing.getText().toString().equals("")) + { + scrollTo(edtClothing); + atxt = atxt + ": \"" + getResources().getString(R.string.Protective_clothing) + "\"!"; + eFields = true; + } + if(!eFields && !isGONE(spiSafNonTarget) && ((selectDB)spiSafNonTarget).getText().toString().equals("")) // воздействие на нецелевые организмы + { + scrollTo(spiSafNonTarget); + atxt = atxt + ": \"" + getResources().getString(R.string.Effect_on_non_terget_organism) + "\"!"; + eFields = true; + } + if (eFields) // Если не заполнены все обязательные поля + { + m_Filled.setValue("0"); + + AlertDialog.Builder adb = new AlertDialog.Builder(this,R.style.AlertDialogTheme); + adb.setTitle(getString(R.string.Warning)); + + adb.setMessage(atxt + "\n" + getString(R.string.not_filled_fields)); + adb.setPositiveButton(getString(R.string.Yes), new DialogInterface.OnClickListener() + { + @Override + public void onClick(DialogInterface arg0, int arg1) + { + // Do nothing + } + }); + adb.setNegativeButton(getString(R.string.No), new DialogInterface.OnClickListener() + { + @Override + public void onClick(DialogInterface arg0, int arg1) + { + String uid=guiTable.write(); //Add or save data + saveLocations(uid); + LocustHealthActivity.this.finish(); // Close the form + } + }); + AlertDialog ad = adb.show(); + ad.getButton(AlertDialog.BUTTON_NEGATIVE).setTextColor(Color.BLACK); + ad.getButton(AlertDialog.BUTTON_POSITIVE).setTextColor(Color.BLACK); + + } else + { + m_Filled.setValue("1"); + + String uid=guiTable.write(); //Добавляем либо сохраняем данные + saveLocations(uid); + + startService(new Intent(this, MainService.class).putExtra(MainService.PARAM_ACTION, "1")); // Чтоб вызвать событие таймера в сервисе + LocustHealthActivity.this.finish(); // Закрываем форму + } + + } + + /** + * СМ. http://developer.android.com/reference/android/app/Activity.html Событие происходит при старте и при возврате на этот Activity + * */ + @Override + public void onStart() { + super.onStart(); + + DbOpenHelper dboh = new DbOpenHelper(this); + SQLiteDatabase db = dboh.getReadableDatabase(); + Cursor cursor = db.rawQuery("select * from terminals where del=0 and serial='"+ Secure.getString(getContentResolver(), Secure.ANDROID_ID)+"';", null); + if(!cursor.moveToFirst()) + { + Toast toast = Toast.makeText(getApplicationContext(), + getResources().getString(R.string.Please_authorize_the_tablet), Toast.LENGTH_LONG); + toast.show(); + } + cursor.close(); + dboh.close(); + } + + @Override + public double getLat() { + return this._lat; + } + + @Override + public double getLon() { + return this._lon; + } +} diff --git a/app/src/main/java/kz/istt/locust/MainActivity.java b/app/src/main/java/kz/istt/locust/MainActivity.java index 71b98e1..12c5752 100644 --- a/app/src/main/java/kz/istt/locust/MainActivity.java +++ b/app/src/main/java/kz/istt/locust/MainActivity.java @@ -52,6 +52,7 @@ public class MainActivity extends Activity { private Button btnSetup; private Button btnLocust; private Button btnLocustDel; + private Button btnLocustHealth; private TextView tvAndroidID; private TextView tvCountTasks; @@ -154,7 +155,7 @@ public class MainActivity extends Activity { //Кнопка вызова формы настроек btnSetup = (Button) findViewById(R.id.btnSetup); OnClickListener oclBtnSetup = new OnClickListener(){@Override - public void onClick(View v){ onGetPermissions(3); }}; + public void onClick(View v){ onGetPermissions(4); }}; btnSetup.setOnClickListener(oclBtnSetup); //Кнопка вызова формы @@ -169,6 +170,10 @@ public class MainActivity extends Activity { public void onClick(View v){ onGetPermissions(2); }}; btnLocustDel.setOnClickListener(oclBtnLocustDel); + btnLocustHealth = (Button) findViewById(R.id.btnLocustHealth); + OnClickListener oclBtnLocustHealth = new OnClickListener(){@Override + public void onClick(View v){ onGetPermissions(3); }}; + btnLocustHealth.setOnClickListener(oclBtnLocustHealth); tvAndroidID = (TextView) findViewById(R.id.tvAndroidID); String android_id = Secure.getString(getContentResolver(), Secure.ANDROID_ID); @@ -247,13 +252,14 @@ public class MainActivity extends Activity { if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) { list.add(Manifest.permission.CAMERA); } - if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { - list.add(Manifest.permission.WRITE_EXTERNAL_STORAGE); + if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.S_V2){ + if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { + list.add(Manifest.permission.WRITE_EXTERNAL_STORAGE); + } + if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { + list.add(Manifest.permission.READ_EXTERNAL_STORAGE); + } } - if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { - list.add(Manifest.permission.READ_EXTERNAL_STORAGE); - } - if(!list.isEmpty()) { @@ -277,6 +283,10 @@ public class MainActivity extends Activity { ShowLocustDelActivity(); } if(granted && button==3) + { + ShowLocustHealthActivity(); + } + if(granted && button==4) { ShowSetupActivity();; } @@ -330,7 +340,13 @@ public class MainActivity extends Activity { Intent intent = new Intent(this, LocustListActivity.class); startActivity(intent); } - + + public void ShowLocustHealthActivity() + { + Intent intent = new Intent(this, LocustHealthActivity.class); + startActivity(intent); + } + public void ShowLocustDelActivity() { //_translations diff --git a/app/src/main/res/layout-land/activity_locust_del.xml b/app/src/main/res/layout-land/activity_locust_del.xml index d6833b9..86b4b25 100644 --- a/app/src/main/res/layout-land/activity_locust_del.xml +++ b/app/src/main/res/layout-land/activity_locust_del.xml @@ -1026,8 +1026,11 @@ + android:gravity="center"> + - - + - - + - - - - - - @@ -1863,8 +1842,11 @@ + android:gravity="center"> + - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout-large/activity_locust_del.xml b/app/src/main/res/layout-large/activity_locust_del.xml index 167b876..c4a25b1 100644 --- a/app/src/main/res/layout-large/activity_locust_del.xml +++ b/app/src/main/res/layout-large/activity_locust_del.xml @@ -975,8 +975,14 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/Total_volume_of_working_solution_actually_applied_l" - android:textAppearance="?android:attr/textAppearanceSmall" /> - + android:textAppearance="?android:attr/textAppearanceSmall" + android:textStyle="bold"/> + - @@ -1004,7 +1010,7 @@ android:layout_weight="1" android:ems="10" android:inputType="numberDecimal" /> - + - @@ -1550,7 +1556,7 @@ android:id="@+id/spiSprCapacity" android:layout_width="match_parent" android:layout_height="wrap_content" /> - + - @@ -1590,7 +1596,7 @@ android:layout_weight="1" android:ems="10" android:inputType="text" /> - + - + android:textAppearance="?android:attr/textAppearanceSmall" + android:textStyle="bold"/> + - - - - - - - @@ -1948,32 +1943,6 @@ android:visibility="invisible" /> - - - - - - - - - - diff --git a/app/src/main/res/layout-large/activity_locust_health.xml b/app/src/main/res/layout-large/activity_locust_health.xml new file mode 100644 index 0000000..892fd6e --- /dev/null +++ b/app/src/main/res/layout-large/activity_locust_health.xml @@ -0,0 +1,2323 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_locust_del.xml b/app/src/main/res/layout/activity_locust_del.xml index 7c37407..14c1998 100644 --- a/app/src/main/res/layout/activity_locust_del.xml +++ b/app/src/main/res/layout/activity_locust_del.xml @@ -1131,8 +1131,11 @@ + android:gravity="center"> + - - + - - + - - - - - - @@ -1850,8 +1829,11 @@ + android:gravity="center"> + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 90cd2dd..dc8b7f5 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -89,7 +89,6 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_centerHorizontal="true" - android:layout_marginBottom="62dp" android:layout_marginLeft="62dp" android:layout_marginRight="62dp" android:minHeight="70dp" @@ -100,6 +99,18 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_centerVertical="true" + android:layout_marginTop="52dp" + android:layout_marginLeft="62dp" + android:layout_marginRight="62dp" + android:minHeight="70dp" + android:text="@string/title_activity_locust_del"/> + +