@ -0,0 +1,2 @@
@@ -0,0 +1,2 @@
|
||||
#Mon Nov 10 14:27:14 CET 2025 |
||||
gradle.version=8.7 |
||||
@ -0,0 +1,2 @@
@@ -0,0 +1,2 @@
|
||||
#Sat Apr 26 00:35:27 CEST 2025 |
||||
java.home=/home/darek/.jdks/jbr-17.0.14 |
||||
@ -0,0 +1,3 @@
@@ -0,0 +1,3 @@
|
||||
# Default ignored files |
||||
/shelf/ |
||||
/workspace.xml |
||||
@ -0,0 +1,6 @@
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<project version="4"> |
||||
<component name="AndroidProjectSystem"> |
||||
<option name="providerId" value="com.android.tools.idea.GradleProjectSystem" /> |
||||
</component> |
||||
</project> |
||||
@ -0,0 +1,6 @@
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<project version="4"> |
||||
<component name="CompilerConfiguration"> |
||||
<bytecodeTargetLevel target="17" /> |
||||
</component> |
||||
</project> |
||||
@ -0,0 +1,6 @@
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<project version="4"> |
||||
<component name="AgentMigrationStateService"> |
||||
<option name="migrationStatus" value="COMPLETED" /> |
||||
</component> |
||||
</project> |
||||
@ -0,0 +1,6 @@
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<project version="4"> |
||||
<component name="AskMigrationStateService"> |
||||
<option name="migrationStatus" value="COMPLETED" /> |
||||
</component> |
||||
</project> |
||||
@ -0,0 +1,6 @@
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<project version="4"> |
||||
<component name="Ask2AgentMigrationStateService"> |
||||
<option name="migrationStatus" value="COMPLETED" /> |
||||
</component> |
||||
</project> |
||||
@ -0,0 +1,6 @@
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<project version="4"> |
||||
<component name="EditMigrationStateService"> |
||||
<option name="migrationStatus" value="COMPLETED" /> |
||||
</component> |
||||
</project> |
||||
@ -0,0 +1,18 @@
@@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<project version="4"> |
||||
<component name="deploymentTargetSelector"> |
||||
<selectionStates> |
||||
<SelectionState runConfigName="app"> |
||||
<option name="selectionMode" value="DROPDOWN" /> |
||||
<DropdownSelection timestamp="2025-11-10T20:03:10.979497202Z"> |
||||
<Target type="DEFAULT_BOOT"> |
||||
<handle> |
||||
<DeviceId pluginId="LocalEmulator" identifier="path=/home/darek/.android/avd/Pixel_3a_API_34_extension_level_7_x86_64.avd" /> |
||||
</handle> |
||||
</Target> |
||||
</DropdownSelection> |
||||
<DialogSelection /> |
||||
</SelectionState> |
||||
</selectionStates> |
||||
</component> |
||||
</project> |
||||
@ -0,0 +1,13 @@
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<project version="4"> |
||||
<component name="DeviceTable"> |
||||
<option name="columnSorters"> |
||||
<list> |
||||
<ColumnSorterState> |
||||
<option name="column" value="Name" /> |
||||
<option name="order" value="ASCENDING" /> |
||||
</ColumnSorterState> |
||||
</list> |
||||
</option> |
||||
</component> |
||||
</project> |
||||
@ -0,0 +1,19 @@
@@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<project version="4"> |
||||
<component name="GradleMigrationSettings" migrationVersion="1" /> |
||||
<component name="GradleSettings"> |
||||
<option name="linkedExternalProjectsSettings"> |
||||
<GradleProjectSettings> |
||||
<option name="testRunner" value="CHOOSE_PER_TEST" /> |
||||
<option name="externalProjectPath" value="$PROJECT_DIR$" /> |
||||
<option name="gradleJvm" value="#GRADLE_LOCAL_JAVA_HOME" /> |
||||
<option name="modules"> |
||||
<set> |
||||
<option value="$PROJECT_DIR$" /> |
||||
<option value="$PROJECT_DIR$/app" /> |
||||
</set> |
||||
</option> |
||||
</GradleProjectSettings> |
||||
</option> |
||||
</component> |
||||
</project> |
||||
@ -0,0 +1,25 @@
@@ -0,0 +1,25 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<project version="4"> |
||||
<component name="RemoteRepositoriesConfiguration"> |
||||
<remote-repository> |
||||
<option name="id" value="central" /> |
||||
<option name="name" value="Maven Central repository" /> |
||||
<option name="url" value="https://repo1.maven.org/maven2" /> |
||||
</remote-repository> |
||||
<remote-repository> |
||||
<option name="id" value="jboss.community" /> |
||||
<option name="name" value="JBoss Community repository" /> |
||||
<option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" /> |
||||
</remote-repository> |
||||
<remote-repository> |
||||
<option name="id" value="Google" /> |
||||
<option name="name" value="Google" /> |
||||
<option name="url" value="https://maven.google.com/" /> |
||||
</remote-repository> |
||||
<remote-repository> |
||||
<option name="id" value="BintrayJCenter" /> |
||||
<option name="name" value="BintrayJCenter" /> |
||||
<option name="url" value="https://jcenter.bintray.com/" /> |
||||
</remote-repository> |
||||
</component> |
||||
</project> |
||||
@ -0,0 +1,10 @@
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<project version="4"> |
||||
<component name="ProjectMigrations"> |
||||
<option name="MigrateToGradleLocalJavaHome"> |
||||
<set> |
||||
<option value="$PROJECT_DIR$" /> |
||||
</set> |
||||
</option> |
||||
</component> |
||||
</project> |
||||
@ -0,0 +1,70 @@
@@ -0,0 +1,70 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<project version="4"> |
||||
<component name="ExternalStorageConfigurationManager" enabled="true" /> |
||||
<component name="FrameworkDetectionExcludesConfiguration"> |
||||
<file type="web" url="file://$PROJECT_DIR$" /> |
||||
</component> |
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="jbr-17" project-jdk-type="JavaSDK"> |
||||
<output url="file://$PROJECT_DIR$/build/classes" /> |
||||
</component> |
||||
<component name="ProjectType"> |
||||
<option name="id" value="Android" /> |
||||
</component> |
||||
<component name="SvnBranchConfigurationManager"> |
||||
<option name="myConfigurationMap"> |
||||
<map> |
||||
<entry key="$PROJECT_DIR$"> |
||||
<value> |
||||
<SvnBranchConfiguration> |
||||
<option name="branchUrls"> |
||||
<list> |
||||
<option value="http://wiki.likesoft.pl/svn/likesoft/CENEO%20narzedzia" /> |
||||
<option value="http://wiki.likesoft.pl/svn/likesoft/Ceneo" /> |
||||
<option value="http://wiki.likesoft.pl/svn/likesoft/Nowy%20folder" /> |
||||
<option value="http://wiki.likesoft.pl/svn/likesoft/Polcan" /> |
||||
<option value="http://wiki.likesoft.pl/svn/likesoft/Program%20lojalno%C5%9Bciowy" /> |
||||
<option value="http://wiki.likesoft.pl/svn/likesoft/SMD" /> |
||||
<option value="http://wiki.likesoft.pl/svn/likesoft/SmsGate" /> |
||||
<option value="http://wiki.likesoft.pl/svn/likesoft/SmsGateServer" /> |
||||
<option value="http://wiki.likesoft.pl/svn/likesoft/bramka.likesoft.pl" /> |
||||
<option value="http://wiki.likesoft.pl/svn/likesoft/branches" /> |
||||
<option value="http://wiki.likesoft.pl/svn/likesoft/conf" /> |
||||
<option value="http://wiki.likesoft.pl/svn/likesoft/cukiernia-lasuch.pl" /> |
||||
<option value="http://wiki.likesoft.pl/svn/likesoft/d%C4%99bina" /> |
||||
<option value="http://wiki.likesoft.pl/svn/likesoft/db" /> |
||||
<option value="http://wiki.likesoft.pl/svn/likesoft/dsmnet" /> |
||||
<option value="http://wiki.likesoft.pl/svn/likesoft/emailer" /> |
||||
<option value="http://wiki.likesoft.pl/svn/likesoft/faktury" /> |
||||
<option value="http://wiki.likesoft.pl/svn/likesoft/foodandwood" /> |
||||
<option value="http://wiki.likesoft.pl/svn/likesoft/gastronet" /> |
||||
<option value="http://wiki.likesoft.pl/svn/likesoft/gastronet-ceneo" /> |
||||
<option value="http://wiki.likesoft.pl/svn/likesoft/hooks" /> |
||||
<option value="http://wiki.likesoft.pl/svn/likesoft/joga" /> |
||||
<option value="http://wiki.likesoft.pl/svn/likesoft/kCMS" /> |
||||
<option value="http://wiki.likesoft.pl/svn/likesoft/kmemo" /> |
||||
<option value="http://wiki.likesoft.pl/svn/likesoft/komputery.szukam.co" /> |
||||
<option value="http://wiki.likesoft.pl/svn/likesoft/locks" /> |
||||
<option value="http://wiki.likesoft.pl/svn/likesoft/loyaltyshop.likesoft.pl" /> |
||||
<option value="http://wiki.likesoft.pl/svn/likesoft/mmoffice" /> |
||||
<option value="http://wiki.likesoft.pl/svn/likesoft/mmpartners" /> |
||||
<option value="http://wiki.likesoft.pl/svn/likesoft/modu%C5%82y%20Prestashopa" /> |
||||
<option value="http://wiki.likesoft.pl/svn/likesoft/morgulec.com" /> |
||||
<option value="http://wiki.likesoft.pl/svn/likesoft/onlym" /> |
||||
<option value="http://wiki.likesoft.pl/svn/likesoft/proxy_webservice" /> |
||||
<option value="http://wiki.likesoft.pl/svn/likesoft/sitempap" /> |
||||
<option value="http://wiki.likesoft.pl/svn/likesoft/skaner%20MaxComputers" /> |
||||
<option value="http://wiki.likesoft.pl/svn/likesoft/skanerOfertCeneo" /> |
||||
<option value="http://wiki.likesoft.pl/svn/likesoft/skanerOfertCeneoNajnowszaWersja" /> |
||||
<option value="http://wiki.likesoft.pl/svn/likesoft/skrypty.bash" /> |
||||
<option value="http://wiki.likesoft.pl/svn/likesoft/tools" /> |
||||
<option value="http://wiki.likesoft.pl/svn/likesoft/ulepszeniaDlaSkanera" /> |
||||
</list> |
||||
</option> |
||||
<option name="trunkUrl" value="http://wiki.likesoft.pl/svn/likesoft/trunk" /> |
||||
</SvnBranchConfiguration> |
||||
</value> |
||||
</entry> |
||||
</map> |
||||
</option> |
||||
</component> |
||||
</project> |
||||
@ -0,0 +1,17 @@
@@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<project version="4"> |
||||
<component name="RunConfigurationProducerService"> |
||||
<option name="ignoredProducers"> |
||||
<set> |
||||
<option value="com.intellij.execution.junit.AbstractAllInDirectoryConfigurationProducer" /> |
||||
<option value="com.intellij.execution.junit.AllInPackageConfigurationProducer" /> |
||||
<option value="com.intellij.execution.junit.PatternConfigurationProducer" /> |
||||
<option value="com.intellij.execution.junit.TestInClassConfigurationProducer" /> |
||||
<option value="com.intellij.execution.junit.UniqueIdConfigurationProducer" /> |
||||
<option value="com.intellij.execution.junit.testDiscovery.JUnitTestDiscoveryConfigurationProducer" /> |
||||
<option value="org.jetbrains.kotlin.idea.junit.KotlinJUnitRunConfigurationProducer" /> |
||||
<option value="org.jetbrains.kotlin.idea.junit.KotlinPatternConfigurationProducer" /> |
||||
</set> |
||||
</option> |
||||
</component> |
||||
</project> |
||||
@ -0,0 +1,6 @@
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<project version="4"> |
||||
<component name="VcsDirectoryMappings"> |
||||
<mapping directory="$PROJECT_DIR$" vcs="Git" /> |
||||
</component> |
||||
</project> |
||||
@ -0,0 +1,12 @@
@@ -0,0 +1,12 @@
|
||||
/** |
||||
* Automatically generated file. DO NOT MODIFY |
||||
*/ |
||||
package com.likesoft.mdedal; |
||||
|
||||
public final class BuildConfig { |
||||
public static final boolean DEBUG = Boolean.parseBoolean("true"); |
||||
public static final String APPLICATION_ID = "com.likesoft.mdedal"; |
||||
public static final String BUILD_TYPE = "debug"; |
||||
public static final int VERSION_CODE = 54; |
||||
public static final String VERSION_NAME = "2.2.2"; |
||||
} |
||||
@ -0,0 +1,129 @@
@@ -0,0 +1,129 @@
|
||||
<?xml version="1.0" encoding="utf-8"?> |
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android" |
||||
xmlns:tools="http://schemas.android.com/tools" |
||||
android:versionCode="54" |
||||
android:versionName="2.2.2" > |
||||
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> |
||||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> |
||||
<!-- Android 11+ All files access (requires user grant) --> |
||||
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" /> |
||||
<uses-permission android:name="android.permission.INTERNET" /> |
||||
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> |
||||
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> |
||||
<!-- <uses-permission android:name="android.permission.WRITE_SETTINGS" />--> |
||||
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> |
||||
<uses-permission android:name="android.permission.WAKE_LOCK" /> |
||||
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> |
||||
<uses-permission android:name="android.permission.CAMERA "/> |
||||
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" /> |
||||
|
||||
<application |
||||
android:allowBackup="false" |
||||
android:icon="@drawable/ic_dedal" |
||||
android:label="@string/app_name" |
||||
android:theme="@style/AppTheme" |
||||
android:largeHeap="true" |
||||
android:networkSecurityConfig="@xml/network_security_config" |
||||
android:requestLegacyExternalStorage="true" |
||||
tools:targetApi="29"> |
||||
<activity |
||||
android:name="com.likesoft.mdedal.MainActivity" |
||||
android:label="@string/sprawa" |
||||
android:screenOrientation="landscape" |
||||
android:exported="false"> |
||||
<intent-filter> |
||||
<action android:name="android.intent.action.MAIN" /> |
||||
</intent-filter> |
||||
</activity> |
||||
<activity |
||||
android:name=".ListActivity" |
||||
android:configChanges="orientation|keyboardHidden" |
||||
android:label="@string/title_activity_list" |
||||
android:screenOrientation="landscape" |
||||
android:exported="true"> |
||||
<intent-filter> |
||||
<action android:name="android.intent.action.MAIN" /> |
||||
|
||||
<category android:name="android.intent.category.LAUNCHER" /> |
||||
</intent-filter> |
||||
</activity> |
||||
<!--<activity--> |
||||
<!--android:name="com.likesoft.mdedal.SettingsActivity"--> |
||||
<!--android:label="@string/title_activity_settings" >--> |
||||
<!--</activity>--> |
||||
<activity |
||||
android:name=".PreferActivity" |
||||
android:label="@string/title_activity_prefer" > |
||||
</activity> |
||||
<activity |
||||
android:name="com.likesoft.mdedal.TableHeadersActivity" |
||||
android:label="@string/title_activity_table_headers" |
||||
android:screenOrientation="landscape" > |
||||
</activity> |
||||
<activity |
||||
android:name="com.likesoft.mdedal.DokumentyKollektoActivity" |
||||
android:label="@string/title_activity_dokumenty_kollekto" > |
||||
</activity> |
||||
<activity |
||||
android:name="com.likesoft.mdedal.FragmentMainActivity" |
||||
android:screenOrientation="landscape" |
||||
android:label="@string/title_activity_fragment" > |
||||
</activity> |
||||
|
||||
<provider |
||||
android:name="androidx.core.content.FileProvider" |
||||
android:authorities="${applicationId}.provider" |
||||
android:exported="false" |
||||
android:grantUriPermissions="true"> |
||||
<meta-data |
||||
android:name="android.support.FILE_PROVIDER_PATHS" |
||||
android:resource="@xml/file_paths" /> |
||||
</provider> |
||||
|
||||
<service |
||||
android:name="com.likesoft.mdedal.DedalService" |
||||
android:enabled="true" |
||||
android:exported="true" > |
||||
</service> |
||||
<service |
||||
android:name="com.likesoft.mdedal.DedalDownloadService" |
||||
android:enabled="true" |
||||
android:exported="true" > |
||||
</service> |
||||
<service |
||||
android:name="com.likesoft.mdedal.DokumentyKollektoService" |
||||
android:enabled="true" |
||||
android:exported="true" > |
||||
</service> |
||||
|
||||
<receiver |
||||
android:name="com.likesoft.mdedal.Alarm" |
||||
android:enabled="true" |
||||
android:exported="false" |
||||
android:process=":remote" /> |
||||
<receiver |
||||
android:name="com.likesoft.mdedal.AutoStart" |
||||
android:enabled="true" |
||||
android:exported="true"> |
||||
<intent-filter> |
||||
<action android:name="android.intent.action.BOOT_COMPLETED" /> |
||||
</intent-filter> |
||||
</receiver> |
||||
|
||||
<activity |
||||
android:name="com.likesoft.mdedal.CalendarActivity" |
||||
android:label="@string/title_activity_calendar" |
||||
android:screenOrientation="landscape" > |
||||
</activity> |
||||
<activity |
||||
android:name="com.likesoft.mdedal.KPActivity" |
||||
android:label="@string/title_activity_kp" > |
||||
</activity> |
||||
<activity |
||||
android:name="com.likesoft.mdedal.KPWplatyActivity" |
||||
android:label="@string/title_activity_kp_wplaty" > |
||||
</activity> |
||||
</application> |
||||
|
||||
</manifest> |
||||
|
After Width: | Height: | Size: 7.3 KiB |
@ -0,0 +1,72 @@
@@ -0,0 +1,72 @@
|
||||
package com.likesoft.mdedal; |
||||
|
||||
import android.app.AlarmManager; |
||||
import android.app.PendingIntent; |
||||
import android.content.BroadcastReceiver; |
||||
import android.content.Context; |
||||
import android.content.Intent; |
||||
import android.os.PowerManager; |
||||
|
||||
import java.util.Calendar; |
||||
|
||||
public class Alarm extends BroadcastReceiver |
||||
{ |
||||
@Override |
||||
public void onReceive(Context context, Intent intent) |
||||
{ |
||||
|
||||
Calendar cal_curr = Calendar.getInstance(); |
||||
cal_curr.getTime(); |
||||
int curr_hour = cal_curr.get(Calendar.HOUR_OF_DAY); |
||||
|
||||
int START_WAKING_HOUR = 6; |
||||
int STOP_WAKING_HOUR = 21; |
||||
|
||||
//int START_WAKING_HOUR = 0;
|
||||
//int STOP_WAKING_HOUR = 24;
|
||||
|
||||
Log.d("my_debug", "curr_hour: "+curr_hour); |
||||
|
||||
//Log.d("my_debug", "cal_curr: "+sdf.format( cal_curr.getTime())+", cal_start_waking: "+ sdf.format( cal_start_waking.getTime())+", cal_stop_waking: "+ sdf.format( cal_stop_waking.getTime()) );
|
||||
|
||||
if( curr_hour >= START_WAKING_HOUR && curr_hour < STOP_WAKING_HOUR ) { |
||||
PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE); |
||||
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "mDedal:Alarm"); |
||||
wl.acquire(); |
||||
|
||||
Log.d("my_debug", "Alarm, start service !"); |
||||
|
||||
// wystartuj/obudz serwis
|
||||
Intent service = new Intent(context, DedalService.class); |
||||
context.startService(service); |
||||
|
||||
wl.release(); |
||||
} |
||||
} |
||||
|
||||
public void SetAlarm(Context context) |
||||
{ |
||||
AlarmManager am=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE); |
||||
Intent i = new Intent(context, Alarm.class); |
||||
PendingIntent pi = PendingIntent.getBroadcast(context, 0, i, PendingIntent.FLAG_IMMUTABLE); |
||||
|
||||
// Resources res = getResources();
|
||||
// int values[] = res.getIntArray(R.array.pref_sync_frequency_values);
|
||||
//int sleepTime =values[refreshPos]*1000;
|
||||
|
||||
//long sleepTime = 1000L * 30L; // 5s
|
||||
long sleepTime = 1000L * 3600L; // 1h
|
||||
Log.d("my_debug", "setAlarm, sleepTime: "+sleepTime); |
||||
|
||||
am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + sleepTime, sleepTime, pi); // Millisec * Second * Minute
|
||||
} |
||||
|
||||
public void CancelAlarm(Context context) |
||||
{ |
||||
Intent intent = new Intent(context, Alarm.class); |
||||
PendingIntent sender = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_IMMUTABLE); |
||||
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); |
||||
alarmManager.cancel(sender); |
||||
} |
||||
|
||||
} |
||||
@ -0,0 +1,141 @@
@@ -0,0 +1,141 @@
|
||||
package com.likesoft.mdedal; |
||||
|
||||
import android.app.Activity; |
||||
import android.app.ProgressDialog; |
||||
import android.content.Context; |
||||
import android.content.SharedPreferences; |
||||
import android.os.AsyncTask; |
||||
import android.preference.PreferenceManager; |
||||
import android.widget.LinearLayout; |
||||
import android.widget.Toast; |
||||
|
||||
import org.json.JSONException; |
||||
import org.json.JSONObject; |
||||
|
||||
import java.io.BufferedReader; |
||||
import java.io.File; |
||||
import java.io.FileNotFoundException; |
||||
import java.io.FileOutputStream; |
||||
import java.io.FileReader; |
||||
import java.io.IOException; |
||||
import java.util.HashMap; |
||||
import java.util.Iterator; |
||||
import java.util.Map; |
||||
|
||||
/** |
||||
* Created by darek on 2016-01-25. |
||||
*/ |
||||
abstract class AsyncCallChangeDate extends AsyncTask<String, Void, Void> { |
||||
private Activity calendarActivity; |
||||
ProgressDialog progressDialog; |
||||
String response; |
||||
String id_zlecenia; |
||||
String kod_pola; |
||||
String wartosc; |
||||
LinearLayout movingEl; |
||||
|
||||
public AsyncCallChangeDate(Activity calendarActivity, String id_zlecenia, String kod_pola, String wartosc) { |
||||
this.calendarActivity = calendarActivity; |
||||
//this.progressDialog = new ProgressDialog();
|
||||
|
||||
this.id_zlecenia = id_zlecenia; |
||||
this.kod_pola = kod_pola; |
||||
this.wartosc = wartosc; |
||||
//this.progressDialog = new ProgressDialog();
|
||||
} |
||||
|
||||
@Override |
||||
protected Void doInBackground(String... params) { |
||||
android.util.Log.d("my_debug", "doInBackground"); |
||||
DedalHttpConnection con = new DedalHttpConnection(calendarActivity.getApplicationContext()); |
||||
Map<String, String> params_post = new HashMap<String, String>(); |
||||
params_post.put("id_zlecenia", id_zlecenia); |
||||
params_post.put("kod_pola", kod_pola); |
||||
params_post.put("wartosc", wartosc); |
||||
response = con.sendPost("public/ajax/zmien_wartosc_zlecenie_pole_stale.php", params_post); |
||||
return null; |
||||
} |
||||
|
||||
@Override |
||||
protected void onPostExecute(Void result) { |
||||
android.util.Log.d("my_debug", "onPostExecute"); |
||||
|
||||
//this.progressDialog.dismiss();
|
||||
Log.d("CalAct", "resp: "+response); |
||||
if( response != null && "true".equals(response) ) { |
||||
|
||||
JSONObject jZlecenie = null; |
||||
try { |
||||
|
||||
// read file
|
||||
Context context = calendarActivity.getApplicationContext(); |
||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); |
||||
File dLista = new File(prefs.getString("dir", "") + "/baza/lista.profil"); |
||||
String sJson = DedalHelper.getFileContent(dLista.getAbsolutePath()); |
||||
JSONObject jFile = new JSONObject(sJson); |
||||
|
||||
JSONObject jProfiles = jFile.getJSONObject("profile"); |
||||
Iterator keys = jProfiles.keys(); |
||||
while (keys.hasNext()) { |
||||
String id_profilu_curr = (String) keys.next(); |
||||
try { |
||||
JSONObject jProfil = jProfiles.getJSONObject(id_profilu_curr); |
||||
// if( !jProfil.has("zlecenia") || !"[]".equals(jProfil.getString("zlecenia")) ) {
|
||||
// continue;
|
||||
// }
|
||||
JSONObject jZlecenia_local = jProfil.getJSONObject("zlecenia"); |
||||
if (!jZlecenia_local.has(id_zlecenia)) |
||||
continue; |
||||
|
||||
jZlecenie = jZlecenia_local.getJSONObject(id_zlecenia); |
||||
//change value
|
||||
if (jZlecenie.has(kod_pola)) { |
||||
jZlecenie.put(kod_pola, wartosc); |
||||
Log.d("CalAct", "kod_pola: " + kod_pola + "wartosc: " + wartosc); |
||||
} |
||||
} |
||||
catch (JSONException e) { |
||||
Log.e("DEDAL", "onPostExecute", e); |
||||
} |
||||
} |
||||
|
||||
// save file
|
||||
DedalHelper.putFileContent(prefs.getString("dir", "") + "/baza/lista.profil", jFile.toString()); |
||||
// Toast.makeText(CalendarActivity.this, "Uaktualniono poprawnie",
|
||||
// Toast.LENGTH_LONG).show();
|
||||
|
||||
loadInputs(); |
||||
// movingEl.removeAllViews();
|
||||
// movingEl.addView(getZlecenieElement(jZlecenie, jKolumny));
|
||||
|
||||
|
||||
} catch (JSONException e) { |
||||
Log.e("DEDAL", "JSON", e); |
||||
} |
||||
|
||||
} |
||||
else { |
||||
reloadContent(); |
||||
Toast.makeText(calendarActivity, "Wystąpił błąd podczas uaktulaniania, zmiany zostały cofnięte", |
||||
Toast.LENGTH_LONG).show(); |
||||
Log.d("CalAct", "Błąd przy połaćzeniu do zmien_wartosc_zlecenie_pole_stale.php"); |
||||
} |
||||
} |
||||
|
||||
protected abstract void reloadContent(); |
||||
|
||||
abstract public void loadInputs(); |
||||
|
||||
@Override |
||||
protected void onPreExecute() { |
||||
android.util.Log.d("my_debug", "onPreExecute"); |
||||
|
||||
// Toast.makeText(CalendarActivity.this, "Rozpoczynam uaktualnianie ...",
|
||||
// Toast.LENGTH_LONG).show();
|
||||
} |
||||
|
||||
@Override |
||||
protected void onProgressUpdate(Void... values) { |
||||
android.util.Log.i("my_debug", "onProgressUpdate"); |
||||
} |
||||
} |
||||
@ -0,0 +1,19 @@
@@ -0,0 +1,19 @@
|
||||
package com.likesoft.mdedal; |
||||
|
||||
import android.content.BroadcastReceiver; |
||||
import android.content.Context; |
||||
import android.content.Intent; |
||||
|
||||
public class AutoStart extends BroadcastReceiver |
||||
{ |
||||
Alarm alarm = new Alarm(); |
||||
@Override |
||||
public void onReceive(Context context, Intent intent) |
||||
{ |
||||
if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED")) |
||||
{ |
||||
Log.d("my_debug", "Autostart"); |
||||
alarm.SetAlarm(context); |
||||
} |
||||
} |
||||
} |
||||
@ -0,0 +1,122 @@
@@ -0,0 +1,122 @@
|
||||
package com.likesoft.mdedal; |
||||
|
||||
import android.app.Activity; |
||||
import android.app.DatePickerDialog; |
||||
import android.app.Dialog; |
||||
import android.app.DialogFragment; |
||||
import android.os.Bundle; |
||||
import android.widget.DatePicker; |
||||
import android.widget.TextView; |
||||
|
||||
import java.text.SimpleDateFormat; |
||||
import java.util.Calendar; |
||||
import java.util.GregorianCalendar; |
||||
|
||||
/** |
||||
* Created by darek on 2016-01-25. |
||||
*/ |
||||
public class DatePickerFragment extends DialogFragment |
||||
implements DatePickerDialog.OnDateSetListener { |
||||
|
||||
public Integer nr_zlecenia; |
||||
public Activity act; |
||||
public String data_walidacja_do = null; |
||||
public TextView tv = null; |
||||
|
||||
@Override |
||||
public Dialog onCreateDialog(Bundle savedInstanceState) { |
||||
// Use the current date as the default date in the picker
|
||||
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); |
||||
|
||||
//<MWK> - jawne tworzenie obiektu - żeby przed return dodać DatePickerMode
|
||||
// Create a new instance of DatePickerDialog and return it
|
||||
DatePickerDialog dDlg = new DatePickerDialog(getActivity(), this, year, month, day); |
||||
dDlg.getDatePicker().setCalendarViewShown(true); //<MWK> - false -> true
|
||||
dDlg.getDatePicker().setSpinnersShown(false); //<MWK> - cała linijka
|
||||
return dDlg; |
||||
//</MWK>
|
||||
} |
||||
|
||||
|
||||
public void onDateSet(DatePicker view, int year, int month, int day) { |
||||
// Do something with the date chosen by the user
|
||||
|
||||
|
||||
Log.d("my_debug", "Wybrano edycje daty wizyty nr: " + nr_zlecenia + " nowy rok: " + year); |
||||
|
||||
Calendar c = new GregorianCalendar(year, month, day); |
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); |
||||
String date_string = sdf.format(c.getTime()); |
||||
//tv.setText(date_string);
|
||||
|
||||
TimePickerFragment newFragment_time = new TimePickerFragment(); |
||||
newFragment_time.act = act; |
||||
newFragment_time.nr_zlecenia = nr_zlecenia; |
||||
newFragment_time.data_walidacja_do = data_walidacja_do; |
||||
newFragment_time.tv = tv; |
||||
newFragment_time.setDate = c; |
||||
|
||||
newFragment_time.show(getFragmentManager(), "timePicker"); |
||||
|
||||
|
||||
|
||||
|
||||
// ListActivity.this.finish();
|
||||
// final Intent intent = new Intent();
|
||||
// intent.setAction("blah");
|
||||
// getActivity().sendBroadcast(intent);
|
||||
// dismiss();
|
||||
|
||||
/* |
||||
Calendar c = new GregorianCalendar(year, month, day); |
||||
Calendar cToday = new GregorianCalendar(); |
||||
|
||||
Calendar data_walidacja_do_cal = null; |
||||
if( data_walidacja_do != null ) { |
||||
try { |
||||
data_walidacja_do_cal = Calendar.getInstance(); |
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); |
||||
data_walidacja_do_cal.setTime(sdf.parse(data_walidacja_do));// all done
|
||||
} catch (ParseException e) { |
||||
e.printStackTrace(); |
||||
} |
||||
} |
||||
|
||||
|
||||
if( cToday.compareTo(c)>0){ |
||||
Toast.makeText(act.getApplicationContext(), |
||||
"Nie można wybrać daty wstecznej dla wizyty nr: " + nr_zlecenia, |
||||
Toast.LENGTH_LONG).show(); |
||||
} |
||||
else if( data_walidacja_do_cal != null && c.compareTo(data_walidacja_do_cal)>0 ) { |
||||
Toast.makeText(act.getApplicationContext(), |
||||
"Nie można wybrać daty przekraczającej datę obsługi: " + data_walidacja_do, |
||||
Toast.LENGTH_LONG).show(); |
||||
} |
||||
else { |
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); |
||||
String cString = sdf.format(c.getTime()); |
||||
|
||||
AsyncCallChangeDate task = new AsyncCallChangeDate(act, nr_zlecenia + "", DATA_KOD, cString) { |
||||
@Override |
||||
protected void reloadContent() { |
||||
// drawContent();
|
||||
final Intent intent = new Intent(); |
||||
intent.setAction("blah"); |
||||
getActivity().sendBroadcast(intent); |
||||
dismiss(); |
||||
} |
||||
|
||||
@Override |
||||
public void loadInputs() { |
||||
// loadJsons();
|
||||
} |
||||
}; // week_day_dates[id_drop]);
|
||||
task.execute(); |
||||
} |
||||
*/ |
||||
} |
||||
} |
||||
@ -0,0 +1,616 @@
@@ -0,0 +1,616 @@
|
||||
package com.likesoft.mdedal; |
||||
|
||||
import android.annotation.SuppressLint; |
||||
import android.app.Service; |
||||
import android.content.Context; |
||||
import android.content.Intent; |
||||
import android.content.SharedPreferences; |
||||
import android.os.IBinder; |
||||
import android.preference.PreferenceManager; |
||||
|
||||
import org.json.JSONArray; |
||||
import org.json.JSONException; |
||||
import org.json.JSONObject; |
||||
|
||||
import java.io.BufferedReader; |
||||
import java.io.File; |
||||
import java.io.FileNotFoundException; |
||||
import java.io.FileOutputStream; |
||||
import java.io.FileReader; |
||||
import java.io.IOException; |
||||
import java.io.InputStream; |
||||
import java.net.MalformedURLException; |
||||
import java.net.URL; |
||||
import java.security.cert.CertificateException; |
||||
import java.security.cert.X509Certificate; |
||||
import java.util.Arrays; |
||||
import java.util.HashMap; |
||||
import java.util.Iterator; |
||||
import java.util.Map; |
||||
import java.util.Vector; |
||||
|
||||
import javax.net.ssl.HttpsURLConnection; |
||||
import javax.net.ssl.SSLContext; |
||||
import javax.net.ssl.TrustManager; |
||||
import javax.net.ssl.X509TrustManager; |
||||
|
||||
//mport com.likesoft.mdedal.DedalDownloadService.WorkingThread;
|
||||
|
||||
public class DedalDownloadService extends Service{ |
||||
|
||||
private static final String SRV = "DedalDownloadService"; |
||||
SharedPreferences prefs; |
||||
String hostPath = ""; |
||||
String login = "";//prefs.getString("user", "");
|
||||
String pass = "";//prefs.getString("password", "");
|
||||
String gzip = "true"; |
||||
|
||||
private static void trustAllHosts() { |
||||
|
||||
X509TrustManager easyTrustManager = new X509TrustManager() { |
||||
public void checkClientTrusted( |
||||
X509Certificate[] chain, |
||||
String authType) throws CertificateException { |
||||
// Oh, I am easy!
|
||||
} |
||||
public void checkServerTrusted( |
||||
X509Certificate[] chain, |
||||
String authType) throws CertificateException { |
||||
Log.d("certyfikat", "Download -serverTrusted: " + Arrays.toString(chain)); |
||||
// Oh, I am easy!
|
||||
} |
||||
public X509Certificate[] getAcceptedIssuers() { |
||||
return null; |
||||
} |
||||
|
||||
}; |
||||
|
||||
// Create a trust manager that does not validate certificate chains
|
||||
TrustManager[] trustAllCerts = new TrustManager[] {easyTrustManager}; |
||||
|
||||
// Install the all-trusting trust manager
|
||||
try { |
||||
SSLContext sc = SSLContext.getInstance("TLS"); |
||||
sc.init(null, trustAllCerts, new java.security.SecureRandom()); |
||||
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); |
||||
} catch (Exception e) { |
||||
Log.e(SRV, "", e); |
||||
} |
||||
} |
||||
|
||||
class WorkingDownloadThread implements Runnable { |
||||
|
||||
WorkingThread _wt; |
||||
public WorkingDownloadThread(WorkingThread wt) { |
||||
// TODO Auto-generated constructor stub
|
||||
_wt = wt; |
||||
} |
||||
@Override |
||||
public void run() { |
||||
// TODO Auto-generated method stub
|
||||
_wt.pobierzZleceniaPrio(); |
||||
File f=_wt.getNextFile() ; |
||||
while( f != null){ |
||||
Log.d(SRV, "Watek pobiera zlecenie: " + f.getName()); |
||||
_wt.pobierzZlecenie(f); |
||||
f=_wt.getNextFile() ; |
||||
} |
||||
} |
||||
} |
||||
|
||||
@SuppressLint("DefaultLocale") |
||||
class WorkingThread implements Runnable { |
||||
|
||||
public synchronized File getNextFile(){ |
||||
File f = null; |
||||
if( curPosition < files.length){ |
||||
f = files[curPosition]; |
||||
curPosition++; |
||||
} |
||||
return f; |
||||
} |
||||
|
||||
public void pobierzZleceniaPrio() { |
||||
File d_prio = new File(prefs.getString("dir", "") + "/queue_prio");//getApplicationContext().getFilesDir();
|
||||
if( d_prio.isDirectory() ) { |
||||
String sf_prio = d_prio.getAbsolutePath(); |
||||
Log.d(SRV,sf_prio); |
||||
File files_prio[] = d_prio.listFiles(); |
||||
|
||||
// pętla po priorytetowych (jeśli są)
|
||||
for (int j = 0; j < files_prio.length; j++) { |
||||
|
||||
String id_zlecenia_prio = files_prio[j].getName(); |
||||
|
||||
try { |
||||
Log.d(SRV, "zacznam pobierac: " + id_zlecenia_prio); |
||||
loadToDisk(id_zlecenia_prio); |
||||
files_prio[j].delete(); |
||||
|
||||
} catch (MalformedURLException e) { |
||||
Log.e("DEDAL", "Niepoprawny URL", e); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
File files[]; |
||||
int curPosition = 0; |
||||
public final int threadsNo = 10; |
||||
Thread wdt[] = new Thread[threadsNo]; |
||||
@Override |
||||
public void run() { |
||||
Context context = getApplicationContext(); |
||||
prefs = PreferenceManager.getDefaultSharedPreferences(context); |
||||
hostPath = prefs.getString("hostName", ""); |
||||
login = prefs.getString("user", ""); |
||||
pass = DedalHelper.decodeB64(prefs.getString("password", "")); |
||||
File d = new File(prefs.getString("dir", "") + "/queue");//getApplicationContext().getFilesDir();
|
||||
String sf = d.getAbsolutePath(); |
||||
Log.d(SRV,sf); |
||||
files = d.listFiles(); |
||||
|
||||
|
||||
// odpal watki
|
||||
Log.d(SRV, "Start watkow pobierajacych zlecenia"); |
||||
for( int i =0; i < threadsNo; i++){ |
||||
wdt[i] = new Thread(new WorkingDownloadThread( this)); |
||||
wdt[i].start(); |
||||
} |
||||
// czekaj na zakonczenie
|
||||
for( int i =0; i < threadsNo; i++){ |
||||
try { |
||||
wdt[i].join(); |
||||
} catch (InterruptedException e) { |
||||
Log.e(SRV, "przerwano watek", e); |
||||
} |
||||
} |
||||
Log.d(SRV,"Sleep"); |
||||
} |
||||
|
||||
public void pobierzZlecenie(File curFile) { |
||||
String id_zlecenia = ""; |
||||
id_zlecenia = curFile.getName(); |
||||
|
||||
|
||||
// PRIORYTETOWE
|
||||
pobierzZleceniaPrio(); |
||||
|
||||
// ZWYKŁE
|
||||
try { |
||||
File f_queue = new File(prefs.getString("dir", "") + "/queue/"+id_zlecenia); |
||||
if( f_queue.exists() ) { |
||||
Log.d(SRV, "zacznam pobierac: " + id_zlecenia); |
||||
loadToDisk(id_zlecenia); |
||||
File d_prio = new File(prefs.getString("dir", "") + "/queue_prio");//getApplicationContext().getFilesDir();
|
||||
if( d_prio.isDirectory() ) { |
||||
File f_queue_prio = new File(prefs.getString("dir", "") + "/queue_prio/"+id_zlecenia); |
||||
if( f_queue_prio.exists() ) { |
||||
f_queue_prio.delete(); |
||||
} |
||||
} |
||||
curFile.delete(); |
||||
} |
||||
else { |
||||
Log.d(SRV, "plik: " + id_zlecenia + " nie istnieje w queue"); |
||||
} |
||||
|
||||
} catch (MalformedURLException e) { |
||||
Log.e("DEDAL", "Niepoprawny URL", e); |
||||
} |
||||
} |
||||
} |
||||
|
||||
void loadToDisk(String m_id) throws MalformedURLException { |
||||
|
||||
DedalHttpConnection con = new DedalHttpConnection(getApplicationContext()); |
||||
Map<String, String> params_post = new HashMap<String, String>(); |
||||
params_post.put("id_zlecenia", m_id); |
||||
params_post.put("gzip", gzip); |
||||
params_post.put("json", "true"); |
||||
|
||||
|
||||
String sPost = con.sendPost("xml/getZlecenieXml.php", params_post); |
||||
|
||||
|
||||
Log.d(SRV, "loadToDisk odczytany bufor, size: " + sPost.length()); |
||||
|
||||
File myFileMod = new File(prefs.getString("dir", "") + "/baza/"+m_id+".mod"); |
||||
if( myFileMod.exists()){ |
||||
myFileMod.delete(); |
||||
} |
||||
|
||||
DedalHelper.putFileContent(prefs.getString("dir", "") + "/baza/"+m_id+".json", sPost); |
||||
|
||||
// load fotos:
|
||||
// 1. parse json
|
||||
|
||||
// usun wpis z tego zlecenia w pliku pliki_kollekto/statuses.json
|
||||
String statPath = prefs.getString("dir", "") + "/pliki_kollekto/statuses.json"; |
||||
String statJsString = readFileFromPath(statPath); |
||||
if( statJsString != null && !"".equals(statJsString) ) { |
||||
try { |
||||
JSONObject statJs = new JSONObject(statJsString); |
||||
if(statJs.has(m_id)) { |
||||
statJs.remove(m_id); |
||||
//writeFileToPath(statPath, statJs.toString());
|
||||
DedalHelper.putFileContent(statPath, statJs.toString()); |
||||
} |
||||
} catch (JSONException e) { |
||||
Log.e("DEDAL", "JSON", e); |
||||
} |
||||
} |
||||
|
||||
try { |
||||
JSONObject js = new JSONObject(sPost); |
||||
|
||||
// 3. download files
|
||||
JSONObject params = js.getJSONObject("param"); |
||||
if( params.has("status") && ( params.getString("status").equals("przydz_nie_odeb") || params.getString("status").equals("przydz_odeb") ) ){ |
||||
saveAttach(js, m_id); |
||||
Log.d("my_debug", "zapisuje pliki, zlecenie: "+m_id); |
||||
saveDokumentyKollekto(js, m_id); |
||||
} |
||||
|
||||
} catch (JSONException e) { |
||||
Log.e("DEDAL", "JSON", e); |
||||
} |
||||
|
||||
|
||||
|
||||
|
||||
} |
||||
|
||||
void saveDokumentyKollekto ( JSONObject js, String m_id){ |
||||
JSONArray dokumenty_kollekto; |
||||
|
||||
File dir_pliki_kollekto = new File(prefs.getString("dir", "") + "/pliki_kollekto"); |
||||
//Log.d("my_debug", "saveDokumentyKollekto");
|
||||
if(!dir_pliki_kollekto.isDirectory()) { |
||||
//Log.d("my_debug", "tworze dir: pliki_kollekto");
|
||||
if (!dir_pliki_kollekto.mkdirs()) { |
||||
} |
||||
} |
||||
|
||||
try { |
||||
dokumenty_kollekto = js.getJSONArray("dokumenty_kollekto"); |
||||
JSONObject dokument; |
||||
String fileName; |
||||
String data_pobrania; |
||||
String url; |
||||
String path; |
||||
for ( int i=0; i<dokumenty_kollekto.length(); i++){ |
||||
dokument = dokumenty_kollekto.getJSONObject(i); |
||||
fileName = dokument.getString("nazwa_pliku"); |
||||
data_pobrania = dokument.getString("data_pobrania"); |
||||
|
||||
url = "data/pliki_kollekto/"+login+"/"+m_id; |
||||
path = prefs.getString("dir", "") + "/pliki_kollekto/"+m_id; |
||||
|
||||
// jeśli data_pobrania jest null znaczy że pliku nie ma na serwerze. Wtedy jeśli jest na tablecie to trzeba go usunąć. I nic nie ściągamy.
|
||||
if( "null".equals(data_pobrania) ) { |
||||
File myFile = new File(path+"/"+ fileName); |
||||
if( myFile.exists()) { |
||||
Log.d("my_debug", "usuwam dokument kollektu: "+path+"/"+fileName); |
||||
myFile.delete(); |
||||
} |
||||
} |
||||
else { |
||||
downloadFile(url, path, fileName); |
||||
} |
||||
|
||||
|
||||
} |
||||
} catch (JSONException e) { |
||||
Log.e("DEDAL", "JSON", e); |
||||
} |
||||
} |
||||
|
||||
void saveAttach( JSONObject js, String m_id){ |
||||
|
||||
JSONObject pola; |
||||
try { |
||||
pola = js.getJSONObject("pola"); |
||||
Iterator k = pola.keys(); |
||||
while (k.hasNext()) { |
||||
// JSONObject jo = (JSONObject) pola.get(i);
|
||||
String key = (String) k.next(); |
||||
JSONObject jo = pola.getJSONObject(key); |
||||
SaveAttachPole( jo, m_id); |
||||
} |
||||
} catch (JSONException e) { |
||||
Log.e("DEDAL", "JSON", e); |
||||
} |
||||
} |
||||
|
||||
void SaveAttachPole( JSONObject jo, String m_id){ |
||||
String typ_danych; |
||||
try { |
||||
try{ |
||||
typ_danych = jo.getString("typ_danych"); |
||||
}catch(JSONException jeTyp){ |
||||
return; // dlaczego nie ma typu danych?
|
||||
} |
||||
if(typ_danych.equals("attach")){ |
||||
String folder = jo.getString("kod"); |
||||
|
||||
Vector v = new Vector<String>(); |
||||
|
||||
|
||||
JSONArray jFiles = jo.getJSONArray("files"); |
||||
if( jFiles != null && jFiles.length()>0){ |
||||
for( int i=0; i<jFiles.length(); i++){ |
||||
String fileName = jFiles.getString(i); |
||||
SavePicture( m_id, folder, fileName); |
||||
v.add(fileName); |
||||
} |
||||
} |
||||
//usun cached pliki
|
||||
File fFolder = new File(prefs.getString("dir", "") + "/mDedal/"+m_id+"/"+folder); |
||||
if( fFolder.isDirectory()){ |
||||
File files[] = fFolder.listFiles(); |
||||
for( int z=0; z<files.length; z++){ |
||||
String name = files[z].getName(); |
||||
if( ! v.contains(name)){ |
||||
Log.d(SRV, "Usunięto zdjęcie: " + name); |
||||
files[z].delete(); |
||||
} |
||||
} |
||||
} |
||||
|
||||
//jFiles.
|
||||
|
||||
}else if(typ_danych.equals("attach_powtarzalny")){ |
||||
String folder = jo.getString("id"); |
||||
|
||||
|
||||
JSONArray jFiles = jo.getJSONArray("files"); |
||||
if( jFiles != null && jFiles.length()>0){ |
||||
for( int i=0; i<jFiles.length(); i++){ |
||||
String fileName = jFiles.getString(i); |
||||
SavePicture( m_id, folder, fileName); |
||||
} |
||||
} |
||||
|
||||
|
||||
}else if(typ_danych.equals("foto")){ |
||||
|
||||
String fileName = jo.getString("wartosc"); |
||||
SavePicture( m_id, "foto_typ", fileName); |
||||
} |
||||
|
||||
} catch (JSONException e1) { |
||||
Log.e("DEDAL", "JSON", e1); |
||||
Log.d(SRV, "brakuje typ_danych: json: " + jo.toString()); |
||||
|
||||
} |
||||
|
||||
|
||||
// sprawdz dzieci
|
||||
JSONArray ja; |
||||
try { |
||||
ja = jo.getJSONArray("childs"); |
||||
if( ja!= null && ja.length()>0){ |
||||
for ( int i=0; i<ja.length(); i++){ |
||||
SaveAttachPole( ja.getJSONObject(i), m_id); |
||||
} |
||||
} |
||||
} catch (JSONException e) { |
||||
Log.e("DEDAL", "JSON", e); |
||||
} |
||||
|
||||
} |
||||
|
||||
void downloadFile (String url, String path, String fileName) { |
||||
|
||||
Log.d("my_debug", "downloadFile: url: "+url+" path: "+path+" fileName: "+fileName); |
||||
try { |
||||
File fId = new File(path); |
||||
if(!fId.isDirectory()) { |
||||
if (!fId.mkdirs()) { |
||||
} |
||||
} |
||||
|
||||
File myFile = new File(path+"/"+ fileName); |
||||
if( !myFile.exists()) { |
||||
|
||||
DedalHttpConnection con = new DedalHttpConnection(getApplicationContext()); |
||||
byte [] sPost = con.getBytePost(url, null); //+"/"+fileName);
|
||||
|
||||
|
||||
if( sPost!= null) { |
||||
myFile.createNewFile(); |
||||
|
||||
FileOutputStream fos = new FileOutputStream(myFile); |
||||
fos.write(DedalHelper.encodeFile(sPost)); |
||||
fos.flush(); |
||||
fos.close(); |
||||
}else{ |
||||
Log.e("downloadFile", "file not downloaded: "+ url); |
||||
} |
||||
} |
||||
} catch (FileNotFoundException e) { |
||||
// TODO Auto-generated catch block
|
||||
Log.e(SRV, "", e); |
||||
} catch (IOException e) { |
||||
// TODO Auto-generated catch block
|
||||
Log.e(SRV, "", e); |
||||
} catch (Exception e) { |
||||
Log.e(SRV, "", e); |
||||
} |
||||
} |
||||
|
||||
void SavePicture( String m_id, String folder, String fileName){ |
||||
Log.d(SRV, "Save picture: " + fileName); |
||||
if( fileName == null || fileName.trim().length()==0) |
||||
{ |
||||
return; |
||||
} |
||||
File myFileDir = new File(prefs.getString("dir", "") + "/mDedal/"+m_id+"/"+folder); |
||||
if( !myFileDir.isDirectory()){ |
||||
myFileDir.mkdirs(); |
||||
} |
||||
|
||||
SavePictureThumb(m_id, folder, fileName); |
||||
URL urlF; |
||||
String urlS; |
||||
String path; |
||||
path = prefs.getString("dir", "") + "/mDedal/"+m_id+"/"+folder; |
||||
|
||||
|
||||
//thumb
|
||||
|
||||
File myFile = new File(path+"/"+ fileName); |
||||
if( !myFile.exists()){ |
||||
//myFile.createNewFile();
|
||||
|
||||
if( folder.equals("foto_typ") ) { |
||||
urlS = "public/getFile.php?id_zlecenia="+m_id+"&folder=&file="+fileName+"&type=images";//"data/images/"+m_id;
|
||||
} |
||||
else { |
||||
urlS = "public/getFile.php?id_zlecenia="+m_id+"&folder="+folder+"&file="+fileName+"&type=images"; //urlS = "data/images/"+m_id+"/"+folder;
|
||||
} |
||||
downloadFile (urlS, path, fileName); |
||||
|
||||
}else { //jest juz plik
|
||||
// nic nie rob
|
||||
} |
||||
|
||||
} |
||||
|
||||
void SavePictureThumb( String m_id, String folder, String fileName){ |
||||
|
||||
URL urlF; |
||||
try { |
||||
|
||||
File myFile = new File(prefs.getString("dir", "") + "/mDedal/"+m_id+"/"+folder+"/"+ fileName); |
||||
if( !myFile.exists()){ |
||||
|
||||
String url = ""; |
||||
if( folder.equals("foto_typ") ) { |
||||
url = "public/getFile.php?id_zlecenia="+m_id+"&folder=thumb&file="+fileName+"&type=images"; //
|
||||
} |
||||
else { |
||||
url = "public/getFile.php?id_zlecenia="+m_id+"&folder="+folder+"/thumbnail&file="+fileName+"&type=images"; //
|
||||
|
||||
} |
||||
|
||||
DedalHttpConnection con = new DedalHttpConnection(getApplicationContext()); |
||||
|
||||
byte [] sPost = con.getBytePost(url, null); |
||||
|
||||
if( sPost != null) { |
||||
File fId = new File(prefs.getString("dir", "") + "/mDedal/" + m_id + "/" + folder); |
||||
if (!fId.isDirectory()) { |
||||
if (!fId.mkdirs()) { |
||||
} |
||||
} |
||||
myFile.createNewFile(); |
||||
|
||||
FileOutputStream fos = new FileOutputStream(myFile); |
||||
fos.write(DedalHelper.encodeFile(sPost)); |
||||
fos.flush(); |
||||
fos.close(); |
||||
}else{ |
||||
Log.e( "Download", "Thumb niepobrany: " + url); |
||||
} |
||||
|
||||
}else { //jest juz plik
|
||||
|
||||
} |
||||
} catch (MalformedURLException e) { |
||||
// TODO Auto-generated catch block
|
||||
|
||||
Log.e(SRV, "", e); |
||||
} catch (IOException e) { |
||||
// TODO Auto-generated catch block
|
||||
Log.e(SRV, "", e); |
||||
} catch (Exception e) { |
||||
Log.e(SRV, "", e); |
||||
} |
||||
} |
||||
|
||||
@Override |
||||
public int onStartCommand(Intent intent, int flags, int startId) { |
||||
// TODO Auto-generated method stub
|
||||
Log.d(SRV, "Service onStartCommand called."); |
||||
Log.d(SRV, "Intent: " + intent + ", flags: " + flags + ", startId: " + startId); |
||||
|
||||
Context context = getApplicationContext(); |
||||
prefs = PreferenceManager.getDefaultSharedPreferences(context); |
||||
Log.setFileName(prefs.getString("dir", "")); |
||||
Log.setEH(); |
||||
|
||||
DokumentyKollektoService.stopService = true; |
||||
|
||||
if( thread == null){ |
||||
|
||||
// temporary HTTPS!!! EOS pre-produkcja
|
||||
// utworzyć strukturę katalogów
|
||||
File d = new File(prefs.getString("dir", "") + "/baza"); |
||||
d.mkdirs(); |
||||
d = new File(prefs.getString("dir", "") + "/upload"); |
||||
d.mkdirs(); |
||||
d = new File(prefs.getString("dir", "") + "/mDedal"); |
||||
d.mkdirs(); |
||||
d = new File(prefs.getString("dir", "") + "/mDedalCam"); |
||||
d.mkdirs(); |
||||
|
||||
|
||||
startThread(); |
||||
}else{ |
||||
File fNext = new File(prefs.getString("dir", "") + "dedalsrv.continue"); |
||||
try { |
||||
fNext.createNewFile(); |
||||
} catch (IOException e) { |
||||
Log.e(SRV, "", e); |
||||
} |
||||
if( thread.isAlive()){ |
||||
thread.interrupt(); |
||||
}else{ |
||||
Log.d(SRV, "Watek serwisu byl zatrzymany. Restart watku"); |
||||
startThread(); |
||||
} |
||||
} |
||||
|
||||
return super.onStartCommand(intent, flags, startId); |
||||
} |
||||
|
||||
Thread thread = null; |
||||
private void startThread(){ |
||||
Log.d(SRV, "Start watku Serwisu."); |
||||
thread = new Thread(new WorkingThread()); |
||||
thread.start(); |
||||
|
||||
} |
||||
|
||||
String readFile(InputStream in) throws IOException { |
||||
StringBuffer sb = new StringBuffer(); |
||||
byte buffer[] = new byte[10000]; |
||||
int s = 0; |
||||
while ((s = in.read(buffer)) > 0) { |
||||
String st =new String(buffer, 0, s); |
||||
//Log.d(SRV, "i=" + s +", data:" + st);
|
||||
sb.append(st); |
||||
} |
||||
return sb.toString(); |
||||
} |
||||
|
||||
|
||||
public String readFileFromPath(String path) { |
||||
|
||||
String content = ""; |
||||
File myFile = new File(path); |
||||
if( myFile.isFile()){ |
||||
content = DedalHelper.getFileContent(myFile.getAbsolutePath()); |
||||
} |
||||
return content; |
||||
} |
||||
|
||||
@Override |
||||
public IBinder onBind(Intent arg0) { |
||||
// TODO Auto-generated method stub
|
||||
return null; |
||||
} |
||||
|
||||
} |
||||
@ -0,0 +1,108 @@
@@ -0,0 +1,108 @@
|
||||
package com.likesoft.mdedal; |
||||
|
||||
import android.content.SharedPreferences; |
||||
import android.preference.PreferenceManager; |
||||
import android.util.Base64; |
||||
|
||||
import java.io.IOException; |
||||
import java.net.Socket; |
||||
import java.net.UnknownHostException; |
||||
import java.security.KeyManagementException; |
||||
import java.security.KeyStore; |
||||
import java.security.KeyStoreException; |
||||
import java.security.NoSuchAlgorithmException; |
||||
import java.security.UnrecoverableKeyException; |
||||
import java.security.cert.CertificateException; |
||||
import java.security.cert.X509Certificate; |
||||
import java.util.Arrays; |
||||
import java.util.Collection; |
||||
import java.util.List; |
||||
|
||||
import javax.net.ssl.SSLContext; |
||||
import javax.net.ssl.TrustManager; |
||||
import javax.net.ssl.X509TrustManager; |
||||
|
||||
public class DedalSSLSocketFactory extends org.apache.http.conn.ssl.SSLSocketFactory { |
||||
SSLContext sslContext = SSLContext.getInstance("TLS"); |
||||
|
||||
public DedalSSLSocketFactory(KeyStore truststore) throws NoSuchAlgorithmException, KeyManagementException, KeyStoreException, UnrecoverableKeyException { |
||||
super(truststore); |
||||
|
||||
TrustManager tm = new X509TrustManager() { |
||||
public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException { |
||||
com.likesoft.mdedal.Log.d("certyfikat", "MySSLSocketFactory -checkClientTrusted: " + Arrays.toString(chain)); |
||||
} |
||||
|
||||
public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException { |
||||
// com.likesoft.mdedal.Log.d("certyfikat", "MySSLSocketFactory -serverTrusted AA: " + Arrays.toString(chain));
|
||||
|
||||
// for (int i = 0; i < chain.length; i++) {
|
||||
// // android.util.Log.d("cert Serial Number" + i + ":", chain[i].getSerialNumber().toString());
|
||||
// //Log.d( "cert", "validity: " + chain[0].checkValidity());
|
||||
// Collection<List<?>> aN = chain[i].getSubjectAlternativeNames();
|
||||
// if( aN != null) {
|
||||
//
|
||||
// Object[] a = aN.toArray();
|
||||
// android.util.Log.d("cert AN", Arrays.toString(a));
|
||||
// }
|
||||
// // Oh, I am easy!
|
||||
// }
|
||||
|
||||
if( chain.length>0){ |
||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(DedalHttpConnection.context); |
||||
if( DedalHttpConnection.certSerialNumber.length()==0) { //init
|
||||
SharedPreferences.Editor e = prefs.edit(); |
||||
e.putString("certSerialNumber", chain[0].getSerialNumber().toString()); |
||||
e.commit(); |
||||
}else { //check
|
||||
if( !chain[0].getSerialNumber().toString().equals(prefs.getString("certSerialNumber", "") )){ |
||||
// security problem
|
||||
android.util.Log.e("SECURITY", "Cert Serial Number incorrect"); |
||||
throw new CertificateException("Cert Serial Number incorrect"); |
||||
} |
||||
} |
||||
|
||||
if( DedalHttpConnection.certSerialNumber.length()==0) { //init, gdy nie było jeszcze serial number
|
||||
SharedPreferences.Editor e = prefs.edit(); |
||||
|
||||
byte[] sig; |
||||
try { |
||||
sig = DedalHelper. encodeFile(chain[0].getSignature()); |
||||
e.putString("certOdcisk", Base64.encodeToString(sig, Base64.DEFAULT)); |
||||
e.commit(); |
||||
} catch (Exception ex) { |
||||
android.util.Log.e("SECURITY", "Cert Signature encode incorrect"); |
||||
throw new CertificateException("Cert Signature incorrect"); |
||||
} |
||||
}else { //check
|
||||
String chainSig = new String(chain[0].getSignature()); |
||||
|
||||
if( !chainSig.equals(DedalHttpConnection.certOdcisk )){ |
||||
// security problem
|
||||
android.util.Log.e("SECURITY", "Cert Signature incorrect"); |
||||
throw new CertificateException("Cert Signature incorrect"); |
||||
} |
||||
} |
||||
|
||||
|
||||
} |
||||
} |
||||
|
||||
public X509Certificate[] getAcceptedIssuers() { |
||||
return null; |
||||
} |
||||
}; |
||||
|
||||
sslContext.init(null, new TrustManager[] { tm }, null); |
||||
} |
||||
|
||||
@Override |
||||
public Socket createSocket(Socket socket, String host, int port, boolean autoClose) throws IOException, UnknownHostException { |
||||
return sslContext.getSocketFactory().createSocket(socket, host, port, autoClose); |
||||
} |
||||
|
||||
@Override |
||||
public Socket createSocket() throws IOException { |
||||
return sslContext.getSocketFactory().createSocket(); |
||||
} |
||||
} |
||||
@ -0,0 +1,655 @@
@@ -0,0 +1,655 @@
|
||||
package com.likesoft.mdedal; |
||||
|
||||
import java.io.BufferedReader; |
||||
import java.io.File; |
||||
import java.io.FileOutputStream; |
||||
import java.io.FileReader; |
||||
import java.io.IOException; |
||||
import java.sql.Timestamp; |
||||
import java.util.ArrayList; |
||||
import java.util.Iterator; |
||||
|
||||
import org.json.JSONArray; |
||||
import org.json.JSONException; |
||||
import org.json.JSONObject; |
||||
|
||||
import android.app.Activity; |
||||
import android.app.ActivityManager; |
||||
import android.app.ActivityManager.RunningServiceInfo; |
||||
import android.content.Context; |
||||
import android.content.Intent; |
||||
import android.content.SharedPreferences; |
||||
import android.graphics.Color; |
||||
import android.net.Uri; |
||||
import android.os.Bundle; |
||||
import android.preference.PreferenceManager; |
||||
import android.view.View; |
||||
import android.view.View.OnClickListener; |
||||
import android.widget.Button; |
||||
import android.widget.HorizontalScrollView; |
||||
import android.widget.LinearLayout; |
||||
import android.widget.ScrollView; |
||||
import android.widget.TableLayout; |
||||
import android.widget.TableRow; |
||||
import android.widget.TextView; |
||||
|
||||
public class DokumentyKollektoActivity extends Activity { |
||||
|
||||
LinearLayout lMain; |
||||
String id_zlecenia; |
||||
JSONArray dkJson; |
||||
SharedPreferences prefs; |
||||
boolean refreshingLista = true; |
||||
|
||||
private final class rowOpenFileListener implements OnClickListener { |
||||
File file; |
||||
public rowOpenFileListener (File file) { |
||||
this.file = file; |
||||
} |
||||
|
||||
@Override |
||||
public void onClick(View v) { |
||||
try { |
||||
openFile(getApplicationContext(), file); |
||||
} catch (IOException e) { |
||||
Log.e("DEDAL", "IO", e); |
||||
} |
||||
} |
||||
} |
||||
|
||||
private final class rowDownloadFileListener implements OnClickListener { |
||||
String fileName; |
||||
public rowDownloadFileListener (String fileName) { |
||||
this.fileName = fileName; |
||||
} |
||||
|
||||
@Override |
||||
public void onClick(View v) { |
||||
// obłsuga pliku do komunikacji z serwerem
|
||||
//String commPath = prefs.getString("dir", "") + "/pliki_kollekto/communication.json";
|
||||
//File myFile = new File(commPath);
|
||||
|
||||
Long time = (System.currentTimeMillis()); |
||||
String ts = Long.toString(time); |
||||
String commPath = prefs.getString("dir", "") + "/pliki_kollekto/comm_"+ts+".json"; |
||||
//File myFile = new File(commPath);
|
||||
|
||||
String commJsString = readFile(commPath); |
||||
JSONObject commJs = null; |
||||
if( "".equals(commJsString) ) { |
||||
commJs = new JSONObject(); |
||||
} |
||||
else { |
||||
try { |
||||
commJs = new JSONObject(commJsString); |
||||
} catch (JSONException e) { |
||||
Log.e("DEDAL", "JSON", e); |
||||
} |
||||
} |
||||
|
||||
try { |
||||
JSONObject zlecJs; |
||||
if( commJs.has(id_zlecenia) ) { |
||||
zlecJs = commJs.getJSONObject(id_zlecenia); |
||||
} |
||||
else { |
||||
zlecJs = new JSONObject(); |
||||
} |
||||
zlecJs.put(fileName, "get"); |
||||
commJs.put(id_zlecenia, zlecJs); |
||||
} catch (JSONException e) { |
||||
Log.e("DEDAL", "JSON", e); |
||||
} |
||||
|
||||
writeFile(commPath, commJs.toString()); |
||||
|
||||
|
||||
// obsługa pliku zawierającym statusy
|
||||
String statPath = prefs.getString("dir", "") + "/pliki_kollekto/statuses.json"; |
||||
File myFile = new File(statPath); |
||||
String statJsString = readFile(statPath); |
||||
JSONObject statJs = null; |
||||
if( "".equals(statJsString) ) { |
||||
statJs = new JSONObject(); |
||||
} |
||||
else { |
||||
try { |
||||
statJs = new JSONObject(statJsString); |
||||
} catch (JSONException e) { |
||||
Log.e("DEDAL", "JSON", e); |
||||
} |
||||
} |
||||
|
||||
//zlecJs = new JSONObject();
|
||||
try { |
||||
JSONObject zlecJs; |
||||
if( statJs.has(id_zlecenia) ) { |
||||
zlecJs = statJs.getJSONObject(id_zlecenia); |
||||
} |
||||
else { |
||||
zlecJs = new JSONObject(); |
||||
} |
||||
zlecJs.put(fileName, "Żądanie pobrania"); |
||||
statJs.put(id_zlecenia, zlecJs); |
||||
} catch (JSONException e) { |
||||
Log.e("DEDAL", "JSON", e); |
||||
} |
||||
|
||||
writeFile(statPath, statJs.toString()); |
||||
|
||||
//wystartuj/obudz servis
|
||||
startDokumentyKollektoService(); |
||||
|
||||
DokumentyKollektoActivity.this.recreate(); |
||||
} |
||||
} |
||||
|
||||
private final class btnDeleteFileListener implements OnClickListener { |
||||
String fileName; |
||||
public btnDeleteFileListener (String fileName) { |
||||
this.fileName = fileName; |
||||
} |
||||
|
||||
@Override |
||||
public void onClick(View v) { |
||||
try { |
||||
File myFile = new File(prefs.getString("dir", "") + "/pliki_kollekto/"+id_zlecenia+"/"+fileName); |
||||
if( myFile.exists() ) { |
||||
myFile.delete(); |
||||
} |
||||
|
||||
//String commPath = prefs.getString("dir", "") + "/pliki_kollekto/communication.json";
|
||||
Long time = (System.currentTimeMillis()); |
||||
String ts = Long.toString(time); |
||||
String commPath = prefs.getString("dir", "") + "/pliki_kollekto/comm_"+ts+".json"; |
||||
|
||||
//String commJsString = readFile(commPath);
|
||||
|
||||
JSONObject commJs = new JSONObject(); |
||||
JSONObject zlJs; |
||||
if( commJs.has(id_zlecenia) ) { |
||||
zlJs = commJs.getJSONObject(id_zlecenia); |
||||
} |
||||
else { |
||||
zlJs = new JSONObject(); |
||||
} |
||||
//JSONObject zlJs = commJs.getJSONObject(id_zlecenia);
|
||||
//if( zlJs.has(fileName) ) {
|
||||
zlJs.put(fileName, "delete"); |
||||
commJs.put(id_zlecenia, zlJs); |
||||
|
||||
writeFile(commPath, commJs.toString()); |
||||
|
||||
// obsługa pliku zawierającym statusy
|
||||
String statPath = prefs.getString("dir", "") + "/pliki_kollekto/statuses.json"; |
||||
String statJsString = readFile(statPath); |
||||
JSONObject statJs = null; |
||||
//if( "".equals(statJsString) ) {
|
||||
statJs = new JSONObject(statJsString); |
||||
//zlJs = statJs.getJSONObject(id_zlecenia);
|
||||
if( statJs.has(id_zlecenia) ) { |
||||
zlJs = statJs.getJSONObject(id_zlecenia); |
||||
} |
||||
else { |
||||
zlJs = new JSONObject(); |
||||
} |
||||
zlJs.put(fileName, "Do pobrania"); |
||||
statJs.put(id_zlecenia, zlJs); |
||||
writeFile(statPath, statJs.toString()); |
||||
//}
|
||||
|
||||
//wystartuj/obudz servis
|
||||
startDokumentyKollektoService(); |
||||
|
||||
DokumentyKollektoActivity.this.recreate(); |
||||
|
||||
//}
|
||||
|
||||
} catch (JSONException e) { |
||||
Log.e("DEDAL", "JSON", e); |
||||
} |
||||
} |
||||
} |
||||
|
||||
@Override |
||||
protected void onCreate(Bundle savedInstanceState) { |
||||
super.onCreate(savedInstanceState); |
||||
Context context = getApplicationContext(); |
||||
prefs = PreferenceManager.getDefaultSharedPreferences(context); |
||||
Log.setFileName(prefs.getString("dir", "")); |
||||
Log.setEH(); |
||||
|
||||
refreshingLista = true; |
||||
upServiceIfNeeded(); |
||||
|
||||
HorizontalScrollView lMainScroll = new HorizontalScrollView(this); |
||||
lMain = new LinearLayout(this); |
||||
lMain.setOrientation(LinearLayout.VERTICAL); |
||||
|
||||
ScrollView vertScroll = new ScrollView(this); |
||||
lMainScroll.addView(vertScroll); |
||||
|
||||
vertScroll.addView(lMain); |
||||
|
||||
Bundle extras = getIntent().getExtras(); |
||||
if (extras != null) { |
||||
id_zlecenia = extras.getString("id_zlecenia"); |
||||
try { |
||||
dkJson = new JSONArray(extras.getString("dkJson")); |
||||
} catch (JSONException e) { |
||||
Log.e("DEDAL", "JSON", e); |
||||
} |
||||
Log.d("my_debug", "dokumentyKollektoActivity, id_zlecenia: "+id_zlecenia+", dkJson: "+dkJson.toString()); |
||||
} |
||||
|
||||
//TextView tv = new TextView(this);
|
||||
//tv.setText("Dostępne dokumenty");
|
||||
//lMain.addView(tv);
|
||||
|
||||
|
||||
wyswietlListe(); |
||||
|
||||
|
||||
setContentView(lMainScroll); |
||||
|
||||
this.setTitle("Dokumenty Kollekto, id_zlecenia: "+id_zlecenia); |
||||
|
||||
// wtatek który sprawdza czy zmienil sie plik: statuses.json. Jesli tak to odswiez liste.
|
||||
Thread t =new Thread(new Runnable() { |
||||
|
||||
@Override |
||||
public void run() { |
||||
// TODO Auto-generated method stub
|
||||
Long lastMod = null; |
||||
Long lastStatMod = null; |
||||
while( true ){ |
||||
if( !refreshingLista ) { |
||||
break; |
||||
} |
||||
try { |
||||
|
||||
File dLista = new File(prefs.getString("dir", "") + "/pliki_kollekto/statuses.json"); |
||||
if( dLista.isFile()){ |
||||
lastMod = dLista.lastModified(); |
||||
if (lastStatMod == null) { lastStatMod = lastMod; continue; } |
||||
//Log.d("my_debug", lastStatMod+ " | " +lastMod);
|
||||
if ( !lastStatMod.equals(lastMod) ) { |
||||
lastStatMod = lastMod; |
||||
Log.d("my_debug", "DokumentyKollektoActivity: odswieżam liste"); |
||||
//DokumentyKollektoActivity.this.recreate();
|
||||
//DokumentyKollektoActivity.this.reload();
|
||||
lMain.post(new Runnable() { |
||||
|
||||
@Override |
||||
public void run() { |
||||
wyswietlListe(); |
||||
} |
||||
}); |
||||
|
||||
|
||||
} |
||||
} |
||||
Thread.sleep(1000); |
||||
} catch (InterruptedException e) { |
||||
break; |
||||
} |
||||
} |
||||
} |
||||
}); |
||||
t.start(); |
||||
} |
||||
|
||||
private void wyswietlListe(){ |
||||
|
||||
lMain.removeAllViews(); |
||||
|
||||
|
||||
|
||||
int colNum = 5; |
||||
TableLayout tl = new TableLayout(DokumentyKollektoActivity.this); |
||||
lMain.addView(tl); |
||||
tl.setPadding(0, 15, 0, 0); |
||||
TableRow rowHeader = new TableRow(DokumentyKollektoActivity.this); |
||||
tl.addView(rowHeader); |
||||
rowHeader.setBackgroundColor(Color.parseColor("#FFA500")); |
||||
TextView[] tvHeaders = new TextView[colNum]; |
||||
for(int i = 0; i < colNum; i++) { |
||||
tvHeaders[i] = new TextView(DokumentyKollektoActivity.this); |
||||
rowHeader.addView(tvHeaders[i]); |
||||
tvHeaders[i].setPadding(5, 3, 5, 2); |
||||
tvHeaders[i].setTextSize(25); |
||||
//tvHeaders[i].setBackgroundColor(Color.parseColor("#FFA500"));
|
||||
} |
||||
tvHeaders[0].setText("Nazwa pliku"); |
||||
tvHeaders[1].setText("Typ"); |
||||
tvHeaders[2].setText("Opis"); |
||||
tvHeaders[3].setText("Rozmiar"); |
||||
tvHeaders[4].setText("Status"); |
||||
|
||||
String statPath = prefs.getString("dir", "") + "/pliki_kollekto/statuses.json"; |
||||
//File statFile = new File(statPath);
|
||||
String statJsString = readFile(statPath); |
||||
JSONObject statJs = null; |
||||
JSONObject zlecStatJs = null; |
||||
try { |
||||
if( !"".equals(statJsString) ) { |
||||
statJs = new JSONObject(statJsString); |
||||
if( statJs.has(id_zlecenia) ) { |
||||
zlecStatJs = statJs.getJSONObject(id_zlecenia); |
||||
} |
||||
} |
||||
} catch (JSONException e) { |
||||
Log.e("DEDAL", "JSON", e); |
||||
} |
||||
|
||||
JSONObject oneDokJson; |
||||
try { |
||||
// lista plików
|
||||
for( int i=0 ; i < dkJson.length() ; i++) { |
||||
boolean pobrany = false; |
||||
boolean btnUsunBool = false; |
||||
oneDokJson = dkJson.getJSONObject(i); |
||||
TableRow rowDok = new TableRow(DokumentyKollektoActivity.this); |
||||
tl.addView(rowDok); |
||||
TextView[] tvDok = new TextView[colNum]; |
||||
for(int j = 0; j < colNum; j++) { |
||||
tvDok[j] = new TextView(DokumentyKollektoActivity.this); |
||||
tvDok[j].setPadding(5, 3, 5, 2); |
||||
tvDok[j].setTextSize(25); |
||||
rowDok.addView(tvDok[j]); |
||||
} |
||||
String fileName = oneDokJson.getString("nazwa_pliku"); |
||||
tvDok[0].setText(fileName); |
||||
tvDok[1].setText(oneDokJson.getString("typ")); |
||||
tvDok[2].setText(oneDokJson.getString("opis")); |
||||
tvDok[3].setText(oneDokJson.getString("rozmiar")); |
||||
String status = ""; |
||||
|
||||
// czytam status z pliku statuses.json
|
||||
if( zlecStatJs != null && zlecStatJs.has(fileName) ) { |
||||
status = zlecStatJs.getString(fileName); |
||||
if("Pobrany".equals(status)) { |
||||
pobrany = true; |
||||
btnUsunBool = true; |
||||
} |
||||
if("Żądanie pobrania".equals(status)) { |
||||
btnUsunBool = true; |
||||
} |
||||
|
||||
} |
||||
// czytam status ze json'a w zleceniu
|
||||
else { |
||||
// if( "null".equals(oneDokJson.getString("data_pobrania")) ) {
|
||||
// status = "Do pobrania";
|
||||
// }
|
||||
// else {
|
||||
// btnUsunBool = true;
|
||||
// pobrany = true;
|
||||
// }
|
||||
|
||||
if( oneDokJson.has("status") ) { |
||||
status = oneDokJson.getString("status"); |
||||
} |
||||
else { |
||||
if( "null".equals(oneDokJson.getString("data_pobrania")) ) { |
||||
status = "Do pobrania"; |
||||
} |
||||
else { |
||||
btnUsunBool = true; |
||||
pobrany = true; |
||||
} |
||||
} |
||||
|
||||
if ( !"Do pobrania".equals(status) ) { |
||||
btnUsunBool = true; |
||||
} |
||||
if ( "Pobrany".equals(status) ) { |
||||
pobrany = true; |
||||
} |
||||
|
||||
} |
||||
|
||||
if( "Do pobrania".equals(status) ) { |
||||
rowDok.setOnClickListener(new rowDownloadFileListener(fileName)); |
||||
rowDok.setBackgroundColor(Color.YELLOW); |
||||
} |
||||
|
||||
if( pobrany ) { |
||||
String path = prefs.getString("dir", "") + "/pliki_kollekto/"+id_zlecenia; |
||||
File myFile = new File(path+"/"+fileName); |
||||
if( myFile.exists()) { |
||||
status = "Pobrany, zobacz"; |
||||
rowDok.setOnClickListener(new rowOpenFileListener(myFile)); |
||||
|
||||
rowDok.setBackgroundColor(Color.GREEN); |
||||
} |
||||
else { |
||||
status = "Błąd - pobrany, jednak nie ma go na tablecie"; |
||||
} |
||||
} |
||||
tvDok[4].setText(status); |
||||
|
||||
if( btnUsunBool ) { |
||||
Button btnUsun = new Button(getApplicationContext()); |
||||
btnUsun.setText("Usuń"); |
||||
btnUsun.setOnClickListener(new btnDeleteFileListener(fileName)); |
||||
rowDok.addView(btnUsun); |
||||
} |
||||
|
||||
|
||||
|
||||
} |
||||
|
||||
//Log.d("my_debug", "Dokumenty kollekto, zlecStatJs: " + statJs.toString());
|
||||
if( statJs != null && statJs.has("limit") && "true".equals( statJs.getString("limit") ) ) { |
||||
Log.d("my_debug", "Dokumenty Kollekto: osiognieto limit"); |
||||
TextView warningTv = new TextView(DokumentyKollektoActivity.this); |
||||
warningTv.setText("Osiągnięto limit ilości dokumentów. Usuń niepotrzebne dokumenty aby pobrać nowe."); |
||||
lMain.addView(warningTv); |
||||
} |
||||
} catch (JSONException e) { |
||||
Log.e("DEDAL", "JSON", e); |
||||
} |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
} |
||||
|
||||
private boolean upServiceIfNeeded() { |
||||
// TODO Auto-generated method stub
|
||||
boolean ret = false; |
||||
Log.d("my_debug", "upServiceIfNeeded, DokumentyKollektoService.stopService: "+ DokumentyKollektoService.stopService); |
||||
if ( DokumentyKollektoService.stopService ) { |
||||
try { |
||||
|
||||
// String commPath = prefs.getString("dir", "") + "/pliki_kollekto/communication.json";
|
||||
// String commJsString = readFile(commPath);
|
||||
// Log.d("my_debug", "commfile: "+commJsString);
|
||||
// if ( "".equals(commJsString) || commJsString == null ) {
|
||||
// return ret;
|
||||
// }
|
||||
|
||||
File dir = new File(prefs.getString("dir", "")); |
||||
File fDstf = new File(dir + "/pliki_kollekto"); |
||||
if( !fDstf.isDirectory()){ |
||||
fDstf.mkdirs(); |
||||
} |
||||
File files[] = fDstf.listFiles(); |
||||
String commJsString = ""; |
||||
boolean keepService = false; |
||||
if( fDstf != null) { |
||||
for (int i=0; i<files.length; i++){ |
||||
File comm_file = files[i]; |
||||
String comm_file_name = comm_file.getName(); |
||||
//Log.d("my_debug", "file_name: "+comm_file_name+", substring: " + comm_file_name.substring(0,3));
|
||||
if( !comm_file.isFile() || !"comm_".equals(comm_file_name.substring(0,5)) ){ |
||||
continue; |
||||
} |
||||
|
||||
|
||||
String commPath = prefs.getString("dir", "") + "/pliki_kollekto/" + comm_file_name; |
||||
|
||||
commJsString = readFile(commPath); |
||||
Log.d("my_debug", "commJsString: "+commJsString); |
||||
JSONObject commJs = new JSONObject(commJsString); |
||||
|
||||
Iterator pKeys = commJs.keys(); |
||||
while( pKeys.hasNext()){ |
||||
String id_zlecenia = (String)pKeys.next(); |
||||
JSONObject jZlecenie = commJs.getJSONObject(id_zlecenia); |
||||
|
||||
Iterator pKeys2 = jZlecenie.keys(); |
||||
while( pKeys2.hasNext()){ |
||||
String nazwa_pliku = (String)pKeys2.next(); |
||||
String stat = jZlecenie.getString(nazwa_pliku); |
||||
if( "get".equals(stat) || "check".equals(stat) ) { |
||||
ret = true; |
||||
break; |
||||
} |
||||
} |
||||
if( ret ) { |
||||
break; |
||||
} |
||||
} |
||||
if( ret ) { |
||||
break; |
||||
} |
||||
} |
||||
} |
||||
|
||||
|
||||
|
||||
} catch (JSONException e) { |
||||
Log.e("DEDAL", "JSON", e); |
||||
} |
||||
|
||||
if( ret ) { |
||||
|
||||
//wystartuj/obudz servis
|
||||
startDokumentyKollektoService(); |
||||
} |
||||
Log.d("my_debug", "upServiceIfNeeded: " + ret); |
||||
} |
||||
return ret; |
||||
} |
||||
|
||||
|
||||
public static void openFile(Context context, File url) throws IOException { |
||||
// Create URI
|
||||
File file=url; |
||||
Uri uri = Uri.fromFile(file); |
||||
|
||||
Intent intent = new Intent(Intent.ACTION_VIEW); |
||||
// Check what kind of file you are trying to open, by comparing the url with extensions.
|
||||
// When the if condition is matched, plugin sets the correct intent (mime) type,
|
||||
// so Android knew what application to use to open the file
|
||||
if (url.toString().contains(".doc") || url.toString().contains(".docx")) { |
||||
// Word document
|
||||
intent.setDataAndType(uri, "application/msword"); |
||||
} else if(url.toString().contains(".pdf")) { |
||||
// PDF file
|
||||
intent.setDataAndType(uri, "application/pdf"); |
||||
} else if(url.toString().contains(".ppt") || url.toString().contains(".pptx")) { |
||||
// Powerpoint file
|
||||
intent.setDataAndType(uri, "application/vnd.ms-powerpoint"); |
||||
} else if(url.toString().contains(".xls") || url.toString().contains(".xlsx")) { |
||||
// Excel file
|
||||
intent.setDataAndType(uri, "application/vnd.ms-excel"); |
||||
} else if(url.toString().contains(".zip") || url.toString().contains(".rar")) { |
||||
// WAV audio file
|
||||
intent.setDataAndType(uri, "application/x-wav"); |
||||
} else if(url.toString().contains(".rtf")) { |
||||
// RTF file
|
||||
intent.setDataAndType(uri, "application/rtf"); |
||||
} else if(url.toString().contains(".wav") || url.toString().contains(".mp3")) { |
||||
// WAV audio file
|
||||
intent.setDataAndType(uri, "audio/x-wav"); |
||||
} else if(url.toString().contains(".gif")) { |
||||
// GIF file
|
||||
intent.setDataAndType(uri, "image/gif"); |
||||
} else if(url.toString().contains(".jpg") || url.toString().contains(".jpeg") || url.toString().contains(".png")) { |
||||
// JPG file
|
||||
intent.setDataAndType(uri, "image/jpeg"); |
||||
} else if(url.toString().contains(".txt")) { |
||||
// Text file
|
||||
intent.setDataAndType(uri, "text/plain"); |
||||
} else if(url.toString().contains(".3gp") || url.toString().contains(".mpg") || url.toString().contains(".mpeg") || url.toString().contains(".mpe") || url.toString().contains(".mp4") || url.toString().contains(".avi")) { |
||||
// Video files
|
||||
intent.setDataAndType(uri, "video/*"); |
||||
} else { |
||||
//if you want you can also define the intent type for any other file
|
||||
|
||||
//additionally use else clause below, to manage other unknown extensions
|
||||
//in this case, Android will show all applications installed on the device
|
||||
//so you can choose which application to use
|
||||
intent.setDataAndType(uri, "*/*"); |
||||
} |
||||
|
||||
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); |
||||
context.startActivity(intent); |
||||
} |
||||
|
||||
public void writeFile(String path, String content) { |
||||
DedalHelper.putFileContent(path, content); |
||||
} |
||||
|
||||
public String readFile(String path) { |
||||
|
||||
String content = ""; |
||||
try { |
||||
File myFile = new File(path); |
||||
if( myFile.isFile()){ |
||||
BufferedReader buf; |
||||
buf = new BufferedReader(new FileReader(myFile)); |
||||
content = buf.readLine(); |
||||
buf.close(); |
||||
} |
||||
} catch (IOException e) { |
||||
Log.e("DEDAL", "IO", e); |
||||
} |
||||
return content; |
||||
} |
||||
|
||||
public void reload() { |
||||
|
||||
Intent intent = getIntent(); |
||||
overridePendingTransition(0, 0); |
||||
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); |
||||
finish(); |
||||
|
||||
overridePendingTransition(0, 0); |
||||
startActivity(intent); |
||||
} |
||||
|
||||
private boolean isMyServiceRunning(Class<?> serviceClass) { |
||||
ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); |
||||
for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) { |
||||
if (serviceClass.getName().equals(service.service.getClassName())) { |
||||
return true; |
||||
} |
||||
} |
||||
return false; |
||||
} |
||||
|
||||
private void startDokumentyKollektoService() { |
||||
// wystartuj/obudz serwis
|
||||
Log.d("my_debug", "startDokumentyKollektoService, DokumentyKollektoService.stopService: "+ DokumentyKollektoService.stopService); |
||||
if ( DokumentyKollektoService.stopService ) { |
||||
Context context = getApplicationContext(); |
||||
Intent service = new Intent(context, DokumentyKollektoService.class); |
||||
context.startService(service); |
||||
} |
||||
} |
||||
|
||||
@Override |
||||
protected void onDestroy() { |
||||
// TODO Auto-generated method stub
|
||||
refreshingLista = false; |
||||
//DokumentyKollektoService.stopService = true;
|
||||
super.onDestroy(); |
||||
|
||||
//onDestroyD(this);
|
||||
} |
||||
} |
||||
@ -0,0 +1,266 @@
@@ -0,0 +1,266 @@
|
||||
package com.likesoft.mdedal; |
||||
|
||||
import java.io.BufferedReader; |
||||
import java.io.File; |
||||
import java.io.FileOutputStream; |
||||
import java.io.FileReader; |
||||
import java.io.IOException; |
||||
import java.util.HashMap; |
||||
import java.util.Iterator; |
||||
import java.util.Map; |
||||
|
||||
import org.json.JSONException; |
||||
import org.json.JSONObject; |
||||
|
||||
import android.app.Service; |
||||
import android.content.Intent; |
||||
import android.content.SharedPreferences; |
||||
import android.os.IBinder; |
||||
import android.preference.PreferenceManager; |
||||
|
||||
public class DokumentyKollektoService extends Service { |
||||
|
||||
public static boolean stopService = true; |
||||
SharedPreferences prefs; |
||||
|
||||
@Override |
||||
public int onStartCommand(Intent intent, int flags, int startId) { |
||||
prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); |
||||
stopService = false; |
||||
// TODO Auto-generated method stub
|
||||
Thread t = new Thread(new Runnable() { |
||||
@Override |
||||
public void run() { |
||||
//tutaj będzie akcja
|
||||
|
||||
while ( true ) { |
||||
if( stopService ) { |
||||
break; |
||||
} |
||||
|
||||
try { |
||||
Log.d("my_debug", "DokumentyKollektoService"); |
||||
|
||||
File dir = new File(prefs.getString("dir", "")); |
||||
File fDstf = new File(dir + "/pliki_kollekto"); |
||||
if( !fDstf.isDirectory()){ |
||||
fDstf.mkdirs(); |
||||
} |
||||
File files[] = fDstf.listFiles(); |
||||
String commJsString = ""; |
||||
boolean keepService = false; |
||||
if( fDstf != null) { |
||||
for (int i=0; i<files.length; i++){ |
||||
File comm_file = files[i]; |
||||
String comm_file_name = comm_file.getName(); |
||||
Log.d("my_debug", "comm_file_name: " +comm_file_name ); |
||||
if( !comm_file.isFile() || !"comm_".equals(comm_file_name.substring(0,5)) ){ |
||||
continue; |
||||
} |
||||
|
||||
Log.d("my_debug", "comm_file_name: " +comm_file_name ); |
||||
String commPath = prefs.getString("dir", "") + "/pliki_kollekto/" + comm_file_name; |
||||
commJsString = readFile(commPath); |
||||
|
||||
//String commPath = prefs.getString("dir", "") + "/pliki_kollekto/communication.json";
|
||||
//String commJsString = readFile(commPath);
|
||||
if ( "".equals(commJsString) ) { |
||||
continue; |
||||
} |
||||
|
||||
JSONObject commJs = new JSONObject(commJsString); |
||||
|
||||
// parsowanie pliku, jeśli są wpisy get lub check to wysyłamy posta
|
||||
//...
|
||||
// /
|
||||
|
||||
DedalHttpConnection conn = new DedalHttpConnection(getApplicationContext()); |
||||
Map<String, String> params = new HashMap<String, String>(); |
||||
params.put("json", commJsString); |
||||
String responseJsString = conn.sendPost("json/plikiKollekto.php", params); |
||||
//Log.d("my_debug", "responseJsString: " + responseJsString);
|
||||
|
||||
JSONObject responseJs = new JSONObject(responseJsString); // z tego czytam i tego nie modyfikuje
|
||||
JSONObject responseJsCopy = new JSONObject(responseJsString); // tutaj robibie zmiany i później to zapisywane jest do pliku
|
||||
|
||||
// obsługa pliku zawierającym statusy
|
||||
String statJsString = readFile(prefs.getString("dir", "") + "/pliki_kollekto/statuses.json"); |
||||
JSONObject statJs = new JSONObject(statJsString); // z tego czytam
|
||||
JSONObject statJsCopy = new JSONObject(statJsString);// w tym bede robic zmiany
|
||||
|
||||
|
||||
|
||||
// parsowanie odpowiedzi z serwera, jeśli jest wpis downloading to znaczy że trzeba pobrać plik
|
||||
Iterator pKeys = responseJs.keys(); |
||||
boolean limit = false; |
||||
boolean new_comm = false; |
||||
boolean save_stats = false; |
||||
while( pKeys.hasNext()){ |
||||
|
||||
String id_zlecenia = (String)pKeys.next(); |
||||
|
||||
JSONObject jZlecenie = responseJs.getJSONObject(id_zlecenia); |
||||
JSONObject jZlecenieCopy = responseJsCopy.getJSONObject(id_zlecenia); |
||||
|
||||
JSONObject statZl; |
||||
JSONObject statZlCopy = null; |
||||
if ( statJs.has(id_zlecenia) ) { |
||||
statZl = statJs.getJSONObject(id_zlecenia); |
||||
statZlCopy = statJsCopy.getJSONObject(id_zlecenia); |
||||
} |
||||
else { |
||||
statZl = new JSONObject(); |
||||
statJs.put(id_zlecenia, statZl); |
||||
} |
||||
|
||||
Iterator pKeys2 = jZlecenie.keys(); |
||||
while( pKeys2.hasNext()){ |
||||
Log.d("my_debug", "temp: "+responseJs.toString()); |
||||
String nazwa_pliku = (String)pKeys2.next(); |
||||
Log.d("my_debug", "temp, nazwa_pliku: "+nazwa_pliku); |
||||
String stat = jZlecenie.getString(nazwa_pliku); |
||||
// zmiany w pliku communication.json
|
||||
if( "get".equals(stat) || "check".equals(stat) || "delete".equals(stat)) { |
||||
keepService = true; |
||||
} |
||||
if( "deleted".equals(stat) ) { |
||||
jZlecenieCopy.remove(nazwa_pliku); |
||||
} |
||||
if( "aborted".equals(stat) ) { |
||||
jZlecenieCopy.remove(nazwa_pliku); |
||||
} |
||||
if( "limit".equals(stat) ) { |
||||
limit = true; |
||||
jZlecenieCopy.remove(nazwa_pliku); |
||||
// todo: komunikat że osiągnięto limit
|
||||
|
||||
statZlCopy.put(nazwa_pliku, "Do pobrania"); |
||||
// //
|
||||
} |
||||
if( "downloading".equals(stat) ) { |
||||
// todo: pobierz zdjęcie fizycznie
|
||||
String login = prefs.getString("user", ""); |
||||
conn.downloadFile("data/pliki_kollekto/"+login+"/"+id_zlecenia, prefs.getString("dir", "") + "/pliki_kollekto/"+id_zlecenia, nazwa_pliku); |
||||
jZlecenieCopy.remove(nazwa_pliku); |
||||
|
||||
//JSONObject statZl = statJs.getJSONObject(id_zlecenia);
|
||||
statZlCopy.put(nazwa_pliku, "Pobrany"); |
||||
//DokumentyKollektoActivity.this.recreate();
|
||||
// //
|
||||
} |
||||
|
||||
// zmiany w pliku statuses.json
|
||||
// if( "downloading".equals(stat) ) {
|
||||
// statJs
|
||||
// }
|
||||
} |
||||
|
||||
} |
||||
|
||||
if(limit) { |
||||
statJsCopy.put("limit", "true"); |
||||
} |
||||
else { |
||||
if ( statJs.has("limit") ) { |
||||
statJsCopy.remove("limit"); |
||||
} |
||||
} |
||||
|
||||
// /
|
||||
|
||||
if( !statJs.equals(statJsCopy) ) { |
||||
writeFile(prefs.getString("dir", "") + "/pliki_kollekto/statuses.json", statJsCopy.toString()); |
||||
} |
||||
|
||||
|
||||
responseJsCopy = cleenResponseJs(responseJsCopy); |
||||
// Jesli po przetworzeniu odpowiedzi nadal cos w niej jest (znaczy ze trzeba stworzyc nowy plik z poloczeniem aby znowu byl wyslany(np. pozostal status check))
|
||||
Log.d("my_debug", "responseJsCopy: " + responseJsCopy.toString()+", respnseJsCopy.length: " + responseJsCopy.length() ); |
||||
if( responseJsCopy != null && !"".equals(responseJsCopy.toString().trim()) && responseJsCopy.length() > 0 ) { |
||||
Long time = (System.currentTimeMillis()); |
||||
String ts = Long.toString(time); |
||||
String newCommPath = prefs.getString("dir", "") + "/pliki_kollekto/comm_"+ts+".json"; |
||||
Log.d("my_debug", "tworze plik: " + newCommPath); |
||||
writeFile(newCommPath, responseJsCopy.toString()); |
||||
} |
||||
|
||||
// po przetworzeniu nalezy usunac wyslany plik komunikacyjny
|
||||
File doneCommFile = new File(commPath); |
||||
Log.d("my_debug", "should delete: "+commPath); |
||||
if( doneCommFile.exists() ) { |
||||
Log.d("my_debug", "delete: "+commPath); |
||||
doneCommFile.delete(); |
||||
} |
||||
} |
||||
} |
||||
|
||||
|
||||
|
||||
if( !keepService ) { |
||||
stopService = true; |
||||
} |
||||
|
||||
} catch (JSONException e) { |
||||
Log.e("DEDAL", "JSON", e); |
||||
} |
||||
|
||||
try { |
||||
int sleepTime = 10000; // 30s
|
||||
Thread.sleep(sleepTime); |
||||
} catch (InterruptedException e) { |
||||
Log.d("DEDAL", "Interrupted", e); |
||||
} |
||||
} |
||||
|
||||
} |
||||
|
||||
private JSONObject cleenResponseJs(JSONObject responseJs) { |
||||
Iterator pKeys = responseJs.keys(); |
||||
boolean limit = false; |
||||
try { |
||||
while( pKeys.hasNext()){ |
||||
String id_zlecenia = (String)pKeys.next(); |
||||
JSONObject jZlecenie = responseJs.getJSONObject(id_zlecenia); |
||||
if( jZlecenie.length() == 0 ) { |
||||
responseJs.remove(id_zlecenia); |
||||
} |
||||
} |
||||
} catch (JSONException e) { |
||||
Log.e("DEDAL", "JSON", e); |
||||
} |
||||
return responseJs; |
||||
} |
||||
}); |
||||
t.start(); |
||||
|
||||
return super.onStartCommand(intent, flags, startId); |
||||
} |
||||
|
||||
@Override |
||||
public IBinder onBind(Intent arg0) { |
||||
// TODO Auto-generated method stub
|
||||
return null; |
||||
} |
||||
|
||||
public void writeFile(String path, String content) { |
||||
DedalHelper.putFileContent(path, content); |
||||
} |
||||
|
||||
public String readFile(String path) { |
||||
|
||||
String content = ""; |
||||
try { |
||||
File myFile = new File(path); |
||||
if( myFile.isFile()){ |
||||
BufferedReader buf; |
||||
buf = new BufferedReader(new FileReader(myFile)); |
||||
content = buf.readLine(); |
||||
buf.close(); |
||||
} |
||||
} catch (IOException e) { |
||||
Log.e("DEDAL", "IO", e); |
||||
} |
||||
return content; |
||||
} |
||||
|
||||
} |
||||
@ -0,0 +1,331 @@
@@ -0,0 +1,331 @@
|
||||
package com.likesoft.mdedal; |
||||
|
||||
import android.app.AlertDialog; |
||||
import android.content.Context; |
||||
import android.content.DialogInterface; |
||||
import android.content.Intent; |
||||
import android.graphics.Color; |
||||
import android.os.Bundle; |
||||
import android.preference.PreferenceManager; |
||||
import android.view.View; |
||||
import android.widget.Button; |
||||
import android.widget.FrameLayout; |
||||
import android.widget.HorizontalScrollView; |
||||
import android.widget.LinearLayout; |
||||
import android.widget.RelativeLayout; |
||||
import android.widget.ScrollView; |
||||
|
||||
|
||||
import org.json.JSONArray; |
||||
import org.json.JSONException; |
||||
import org.json.JSONObject; |
||||
|
||||
import java.io.BufferedReader; |
||||
import java.io.File; |
||||
import java.io.FileNotFoundException; |
||||
import java.io.FileReader; |
||||
import java.io.IOException; |
||||
|
||||
/** |
||||
* Created by darek on 2016-01-10. |
||||
*/ |
||||
public class FragmentMainActivity extends DedalActivity { |
||||
@Override |
||||
public View.OnClickListener getZapisz_zmiany(JSONObject jo, String typ) { |
||||
return null; |
||||
} |
||||
|
||||
boolean modified = false; |
||||
|
||||
|
||||
@Override |
||||
protected void onActivityResult(int requestCode, int resultCode, Intent data) { |
||||
// TODO Auto-generated method stub
|
||||
super.onActivityResult(requestCode, resultCode, data); |
||||
if (data.hasExtra("json") && data.hasExtra("id")) { |
||||
// check if radio, find parent to set up value
|
||||
try { |
||||
File dst = new File(prefs.getString("dir", "") + "/baza/" + m_id + ".mod"); |
||||
String sJson = DedalHelper.getFileContent(dst.getAbsolutePath()); |
||||
js = new JSONObject(sJson);//fs.read(buffer));
|
||||
|
||||
JSONObject jo = find_element_from_Array( js, data.getExtras().getString("id")); //todo check if not null
|
||||
if( TYPE_RADIOBUTTON.equals(jo.getString(STRUCT_TYP_DANYCH)) ){ |
||||
// find parent
|
||||
String parent = jo.getString("parent"); |
||||
Log.d("my_debug", "szukanie parenta" + parent);//
|
||||
JSONObject jParent = find_element_from_Array(js, parent); |
||||
if( jParent!= null && TYPE_RADIOLISTA.equals(jParent.getString(STRUCT_TYP_DANYCH)) ){ |
||||
jParent.put(STRUCT_WARTOSC, jo.getInt("id_wiersz_szablonu")); |
||||
} |
||||
} |
||||
// stopAutozapis();
|
||||
// autoZapisStop = false;
|
||||
mod_json_files(false); |
||||
|
||||
setModified(); |
||||
//MainActivity.this.reload();
|
||||
return; |
||||
|
||||
} catch (JSONException e) { |
||||
e.printStackTrace(); |
||||
} |
||||
|
||||
} |
||||
} |
||||
|
||||
@Override |
||||
protected void setModified() { |
||||
|
||||
if( !modified) { |
||||
llNaglowek.setBackgroundColor(Color.parseColor("#EBA0DD")); |
||||
Button bZapisz = new Button(this); |
||||
bZapisz.setText("Zapisz"); |
||||
bZapisz.setOnClickListener(new View.OnClickListener() { |
||||
@Override |
||||
public void onClick(View view) { |
||||
if (modified) { |
||||
komunikat_obowiazkowe=""; |
||||
komunikat_walidacja=""; |
||||
zapiszZmiany(jo); |
||||
String komunikat = ""; |
||||
if( !komunikat_obowiazkowe.equals("") || !komunikat_walidacja.equals("") ) { |
||||
if( !komunikat_obowiazkowe.equals("") ) { |
||||
komunikat = res.getString(R.string.walid_pola_obowiazkowe) + ": \n"+komunikat_obowiazkowe + "\n"; |
||||
Log.d("my_debug", "Nie wypełniłeś pól obowiązkowych: " + komunikat); |
||||
} |
||||
if( !komunikat_walidacja.equals("") ) { |
||||
komunikat += "\n"+res.getString(R.string.walid_zle_wypelnione)+": \n"+komunikat_walidacja + "\n"; |
||||
} |
||||
} |
||||
if(komunikat!= ""){ |
||||
AlertDialog.Builder alertDialog = new AlertDialog.Builder(FragmentMainActivity.this); |
||||
alertDialog.setTitle( "Zapisywanie danych");//res.getString(R.string.zakanczanie_wizyty) ); //todo
|
||||
alertDialog.setMessage(komunikat); |
||||
alertDialog.setPositiveButton("Anuluj", new DialogInterface.OnClickListener() { |
||||
public void onClick(DialogInterface dialog,int which) { |
||||
mod_json_files(false); |
||||
dialog.dismiss(); |
||||
} |
||||
}); |
||||
alertDialog.show(); |
||||
return; |
||||
}else { |
||||
modified = false; |
||||
saved = true; |
||||
} |
||||
} |
||||
finish(); |
||||
} |
||||
}); |
||||
llNaglowek.addView(bZapisz); |
||||
} |
||||
modified = true; |
||||
} |
||||
|
||||
@Override |
||||
protected void stopAutozapis() { |
||||
zapiszZmiany(jo); |
||||
} |
||||
|
||||
@Override |
||||
protected void mod_json_files(boolean mod_upload) { |
||||
|
||||
} |
||||
|
||||
@Override |
||||
protected void forceDoZapis(String key, String kod) { |
||||
|
||||
} |
||||
|
||||
String tmpFileName = ""; |
||||
//http://www.vogella.com/tutorials/AndroidIntent/article.html
|
||||
@Override |
||||
public void onCreate(Bundle bundle) { |
||||
super.onCreate(bundle); |
||||
res = getResources(); |
||||
Context context = getApplicationContext(); |
||||
prefs = PreferenceManager.getDefaultSharedPreferences(context); |
||||
// setContentView(R.layout.activity_main);
|
||||
|
||||
|
||||
|
||||
LinearLayout.LayoutParams linLayoutParam = new LinearLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT); |
||||
|
||||
LinearLayout rl = new LinearLayout(this); |
||||
rl.setLayoutParams(linLayoutParam); |
||||
rl.setOrientation(LinearLayout.VERTICAL); |
||||
// rl.setBackgroundColor(Color.YELLOW);
|
||||
|
||||
wyswietlNaglowek( rl ); |
||||
// if( bModified){
|
||||
// llNaglowek.setBackgroundColor(Color.parseColor("#EBA0DD"));
|
||||
// }
|
||||
|
||||
sw = new ScrollView(this); |
||||
rl.addView(sw); |
||||
|
||||
HorizontalScrollView hs = new HorizontalScrollView(this); |
||||
hs.setLayoutParams(new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT)); |
||||
sw.addView(hs); |
||||
|
||||
LinearLayout llh = new LinearLayout(this); |
||||
int x = this.getWindow().getAttributes().width; |
||||
int xx = this.getWindowManager().getDefaultDisplay().getWidth(); //getRealSize(p);
|
||||
Log.d("my_debug", "szerokość ekranu: "+ x+ ", real x: = " + xx); |
||||
llh.setLayoutParams( linLayoutParam); |
||||
// llh.setBackgroundColor(Color.RED);
|
||||
hs.addView(llh); |
||||
|
||||
LinearLayout ll = new LinearLayout(this); |
||||
ll.setOrientation(LinearLayout.VERTICAL); |
||||
ll.setPadding(20, 5, 5, 5); //zmiana
|
||||
ll.setLayoutParams( linLayoutParam); |
||||
ll.setMinimumWidth(xx); |
||||
// ll.setBackgroundColor(Color.GREEN);
|
||||
llh.addView(ll); |
||||
|
||||
try { |
||||
Bundle extras = getIntent().getExtras(); |
||||
String filePathName = extras.getString("filePathName"); |
||||
tmpFileName = filePathName; |
||||
if( filePathName == null ) return; |
||||
|
||||
String sJson = DedalHelper.getFileContent(filePathName); |
||||
js = new JSONObject(sJson);//fs.read(buffer));
|
||||
|
||||
params = js.getJSONObject("param"); |
||||
m_id = params.getString("id_zlecenia"); |
||||
|
||||
String id = extras.getString("id"); |
||||
jo = find_element_from_Array(js, id); |
||||
find_powtarzalne(jo, 0); |
||||
boolean enabled = true; //
|
||||
// enabled = Boolean.parseBoolean(extras.getString("enable"));
|
||||
String sEnable = extras.getString("enable"); |
||||
if( !"true".equals(sEnable)){ |
||||
enabled = false; |
||||
} |
||||
|
||||
String status_interwencji = null; |
||||
if( getIntent().hasExtra("status_interwencji") ) { |
||||
status_interwencji = extras.getString("status_interwencji"); |
||||
} |
||||
|
||||
// wyswietlOpis(ll, jo);
|
||||
wyswietlOpis(llNaglowek, jo); |
||||
|
||||
Log.d("my_debug", "Fragment, enabled"+enabled); |
||||
|
||||
JSONArray ja = jo.getJSONArray(STRUCT_CHILDS); |
||||
if (ja != null && ja.length() > 0) { |
||||
for (int i = 0; i < ja.length(); i++) { |
||||
wyswietlPole(ll, ja.getJSONObject(i), true, enabled, status_interwencji); |
||||
} |
||||
} |
||||
|
||||
} catch (JSONException e) { |
||||
e.printStackTrace(); |
||||
} |
||||
// TextView view = (TextView) findViewById(R.id.editTextHost);
|
||||
// view.setText(inputString);
|
||||
|
||||
// set LinearLayout as a root element of the screen
|
||||
// setContentView(rl, linLayoutParam);
|
||||
setContentView(rl); |
||||
|
||||
if( supportOnLoadReferences != null ) { |
||||
supporRadioRef(supportOnLoadReferences, View.GONE); |
||||
} |
||||
} |
||||
|
||||
JSONObject jo; |
||||
boolean saved = false; |
||||
|
||||
LinearLayout llNaglowek; |
||||
protected void wyswietlNaglowek(LinearLayout rl) { |
||||
LinearLayout ll = new LinearLayout(this); |
||||
llNaglowek = ll; |
||||
ll.setOrientation(LinearLayout.HORIZONTAL); |
||||
ll.setPadding(20, 5, 5, 5); |
||||
ll.setBackgroundColor(Color.parseColor("#9BF1F2")); |
||||
|
||||
HorizontalScrollView hw = new HorizontalScrollView(this); |
||||
rl.addView(hw); |
||||
hw.addView(ll); |
||||
|
||||
Button bAnuluj = new Button(this); |
||||
bAnuluj.setText("Anuluj"); |
||||
bAnuluj.setOnClickListener(new View.OnClickListener() { |
||||
@Override |
||||
public void onClick(View view) { |
||||
modified = false; |
||||
finish(); |
||||
} |
||||
}); |
||||
llNaglowek.addView(bAnuluj); |
||||
} |
||||
|
||||
//@Override
|
||||
public void onCreateFromResource(Bundle bundle) { |
||||
super.onCreate(bundle); |
||||
setContentView(R.layout.activity_main); |
||||
Bundle extras = getIntent().getExtras(); |
||||
String inputString = extras.getString("json"); |
||||
|
||||
|
||||
|
||||
try { |
||||
js = new JSONObject(inputString); |
||||
params = js.getJSONObject("param"); |
||||
m_id = params.getString("id_zlecenia"); |
||||
|
||||
String id = extras.getString("id"); |
||||
jo = find_element_from_Array(js, id); |
||||
find_powtarzalne(jo, 0); |
||||
LinearLayout ll = (LinearLayout)findViewById(R.id.linearLayoutMain); |
||||
sw = (ScrollView)findViewById(R.id.scrollView1); |
||||
boolean enabled = true; // todo: przekazac?
|
||||
wyswietlPole(ll, jo, true, enabled); |
||||
|
||||
|
||||
} catch (JSONException e) { |
||||
e.printStackTrace(); |
||||
} |
||||
|
||||
} |
||||
@Override |
||||
public void finish() { |
||||
Intent intent = new Intent(); |
||||
// EditText editText= (EditText) findViewById(R.id.returnValue);
|
||||
// String string = editText.getText().toString();
|
||||
// String string = "aqq";
|
||||
// if( modified) {
|
||||
// zapiszZmiany(jo);
|
||||
// }
|
||||
|
||||
if( saved ) { |
||||
// intent.putExtra("json", js.toString());
|
||||
try { |
||||
saveToModFile(js); |
||||
intent.putExtra("json","true"); |
||||
|
||||
} catch (IOException e) { |
||||
e.printStackTrace(); |
||||
} |
||||
|
||||
} |
||||
try { |
||||
intent.putExtra("id", jo.getString("id")); |
||||
intent.putExtra("status", "OK"); |
||||
intent.putExtra("tmpName",tmpFileName); |
||||
|
||||
} catch (JSONException e) { |
||||
e.printStackTrace(); |
||||
} |
||||
|
||||
setResult(RESULT_OK, intent); |
||||
super.finish(); |
||||
} |
||||
|
||||
} |
||||
@ -0,0 +1,252 @@
@@ -0,0 +1,252 @@
|
||||
package com.likesoft.mdedal; |
||||
|
||||
import java.util.Iterator; |
||||
|
||||
import android.Manifest; |
||||
import android.app.AlertDialog; |
||||
import android.app.Service; |
||||
import android.content.Context; |
||||
import android.content.DialogInterface; |
||||
import android.content.Intent; |
||||
import android.content.pm.PackageManager; |
||||
import android.location.GpsSatellite; |
||||
import android.location.GpsStatus; |
||||
import android.location.GpsStatus.Listener; |
||||
import android.location.Location; |
||||
import android.location.LocationListener; |
||||
import android.location.LocationManager; |
||||
import android.os.Bundle; |
||||
import android.os.IBinder; |
||||
import android.provider.Settings; |
||||
import androidx.core.app.ActivityCompat; |
||||
import androidx.core.content.ContextCompat; |
||||
//import android.util.Log;
|
||||
|
||||
public class GPSTracker extends Service implements LocationListener, Listener { |
||||
|
||||
private final Context mContext; |
||||
|
||||
// flag for GPS status
|
||||
boolean isGPSEnabled = false; |
||||
|
||||
// flag for network status
|
||||
boolean isNetworkEnabled = false; |
||||
|
||||
// flag for GPS status
|
||||
boolean canGetLocation = false; |
||||
|
||||
Location location; // location
|
||||
double latitude; // latitude
|
||||
double longitude; // longitude
|
||||
public int liczbaSatelitow = 0; |
||||
|
||||
// The minimum distance to change Updates in meters
|
||||
private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 5;//10; // 10 meters
|
||||
|
||||
// The minimum time between updates in milliseconds
|
||||
private static final long MIN_TIME_BW_UPDATES = 1000 * 300;// 30sec // 60 * 1; // 1 minute
|
||||
|
||||
// Declaring a Location Manager
|
||||
protected LocationManager locationManager; |
||||
|
||||
public GPSTracker(Context context) { |
||||
this.mContext = context; |
||||
getLocation(); |
||||
} |
||||
|
||||
public Location getLocation() { |
||||
try { |
||||
locationManager = (LocationManager) mContext |
||||
.getSystemService(LOCATION_SERVICE); |
||||
|
||||
// Check runtime permissions for Android M+
|
||||
boolean hasFine = ContextCompat.checkSelfPermission(mContext, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED; |
||||
boolean hasCoarse = ContextCompat.checkSelfPermission(mContext, Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED; |
||||
boolean hasLocation = hasFine || hasCoarse; |
||||
|
||||
// getting GPS status
|
||||
isGPSEnabled = locationManager |
||||
.isProviderEnabled(LocationManager.GPS_PROVIDER); |
||||
|
||||
// getting network status
|
||||
isNetworkEnabled = locationManager |
||||
.isProviderEnabled(LocationManager.NETWORK_PROVIDER); |
||||
|
||||
if (!isGPSEnabled && !isNetworkEnabled) { |
||||
// no network provider is enabled
|
||||
} else { |
||||
this.canGetLocation = true; |
||||
// First get location from Network Provider
|
||||
if (isNetworkEnabled && hasLocation) { |
||||
try { |
||||
locationManager.requestLocationUpdates( |
||||
LocationManager.NETWORK_PROVIDER, |
||||
MIN_TIME_BW_UPDATES, |
||||
MIN_DISTANCE_CHANGE_FOR_UPDATES, this); |
||||
} catch (SecurityException ignored) { } |
||||
if (locationManager != null) { |
||||
try { |
||||
location = locationManager |
||||
.getLastKnownLocation(LocationManager.NETWORK_PROVIDER); |
||||
} catch (SecurityException ignored) { } |
||||
if (location != null) { |
||||
latitude = location.getLatitude(); |
||||
longitude = location.getLongitude(); |
||||
} |
||||
} |
||||
} |
||||
// GPS status listener (no permission required)
|
||||
try { locationManager.addGpsStatusListener(this); } catch (Exception ignored) { } |
||||
|
||||
if (locationManager != null && hasLocation) { |
||||
try { |
||||
locationManager.requestLocationUpdates( |
||||
LocationManager.GPS_PROVIDER, |
||||
MIN_TIME_BW_UPDATES, |
||||
MIN_DISTANCE_CHANGE_FOR_UPDATES, this); |
||||
} catch (SecurityException ignored) { } |
||||
try { |
||||
location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); |
||||
} catch (SecurityException ignored) { } |
||||
} |
||||
// if GPS Enabled get lat/long using GPS Services
|
||||
if (isGPSEnabled && location != null) { |
||||
latitude = location.getLatitude(); |
||||
longitude = location.getLongitude(); |
||||
} |
||||
} |
||||
|
||||
} catch (Exception e) { |
||||
e.printStackTrace(); |
||||
} |
||||
|
||||
return location; |
||||
} |
||||
|
||||
/** |
||||
* Stop using GPS listener |
||||
* Calling this function will stop using GPS in your app |
||||
* */ |
||||
public void stopUsingGPS() { |
||||
if (locationManager != null) { |
||||
locationManager.removeUpdates(GPSTracker.this); |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* Function to get latitude |
||||
* */ |
||||
public double getLatitude() { |
||||
if (location != null) { |
||||
latitude = location.getLatitude(); |
||||
} |
||||
|
||||
// return latitude
|
||||
return latitude; |
||||
} |
||||
|
||||
/** |
||||
* Function to get longitude |
||||
* */ |
||||
public double getLongitude() { |
||||
if (location != null) { |
||||
longitude = location.getLongitude(); |
||||
} |
||||
|
||||
// return longitude
|
||||
return longitude; |
||||
} |
||||
|
||||
/** |
||||
* Function to check GPS/wifi enabled |
||||
* @return boolean |
||||
* */ |
||||
public boolean canGetLocation() { |
||||
return this.canGetLocation; |
||||
} |
||||
|
||||
/** |
||||
* Function to show settings alert dialog |
||||
* On pressing Settings button will lauch Settings Options |
||||
* */ |
||||
public void showSettingsAlert() { |
||||
AlertDialog.Builder alertDialog = new AlertDialog.Builder(mContext); |
||||
|
||||
// Setting Dialog Title
|
||||
alertDialog.setTitle("GPS jest wymagany"); |
||||
|
||||
// Setting Dialog Message
|
||||
alertDialog.setMessage("GPS jest wyłączony. Czy chcesz go teraz włączyć?"); |
||||
|
||||
// On pressing Settings button
|
||||
alertDialog.setPositiveButton("Settings", new DialogInterface.OnClickListener() { |
||||
public void onClick(DialogInterface dialog, int which) { |
||||
Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); |
||||
mContext.startActivity(intent); |
||||
} |
||||
}); |
||||
|
||||
// on pressing cancel button
|
||||
alertDialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { |
||||
public void onClick(DialogInterface dialog, int which) { |
||||
dialog.cancel(); |
||||
} |
||||
}); |
||||
|
||||
// Showing Alert Message
|
||||
alertDialog.show(); |
||||
} |
||||
|
||||
@Override |
||||
public void onLocationChanged(Location location) { |
||||
this.location = location; |
||||
} |
||||
|
||||
@Override |
||||
public void onProviderDisabled(String provider) { |
||||
isGPSEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER); |
||||
} |
||||
|
||||
@Override |
||||
public void onProviderEnabled(String provider) { |
||||
isGPSEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER); |
||||
} |
||||
|
||||
@Override |
||||
public void onStatusChanged(String provider, int status, Bundle extras) { |
||||
} |
||||
|
||||
@Override |
||||
public IBinder onBind(Intent arg0) { |
||||
return null; |
||||
} |
||||
|
||||
@Override |
||||
public void onGpsStatusChanged(int event) { |
||||
// TODO Auto-generated method stub
|
||||
//GpsStatus status = new GpsStatus(n);
|
||||
// TODO Auto-generated method stub
|
||||
// int permissionCheckGPS = ContextCompat.checkSelfPermission(getApplicationContext(),
|
||||
// Manifest.permission.ACCESS_FINE_LOCATION);
|
||||
//
|
||||
// if (permissionCheckGPS == PackageManager.PERMISSION_GRANTED) {
|
||||
Iterable<GpsSatellite> gs = null; |
||||
try { |
||||
GpsStatus status = locationManager.getGpsStatus(null); |
||||
liczbaSatelitow= 0;//status.getMaxSatellites();
|
||||
if( status == null){ |
||||
return; |
||||
} |
||||
gs = status.getSatellites(); |
||||
} catch (SecurityException ignored) { return; } |
||||
if (gs == null) return; |
||||
Iterator<GpsSatellite> it = gs.iterator(); |
||||
while( it.hasNext()){ |
||||
GpsSatellite g = it.next(); |
||||
liczbaSatelitow++; |
||||
} |
||||
|
||||
// }
|
||||
} |
||||
} |
||||
|
||||
@ -0,0 +1,374 @@
@@ -0,0 +1,374 @@
|
||||
package com.likesoft.mdedal; |
||||
|
||||
import android.app.Activity; |
||||
import android.content.Context; |
||||
import android.content.Intent; |
||||
import android.content.SharedPreferences; |
||||
import android.os.Bundle; |
||||
import android.preference.PreferenceManager; |
||||
import android.view.View; |
||||
import android.view.View.OnClickListener; |
||||
import android.widget.AdapterView; |
||||
import android.widget.ArrayAdapter; |
||||
import android.widget.Button; |
||||
import android.widget.EditText; |
||||
import android.widget.HorizontalScrollView; |
||||
import android.widget.LinearLayout; |
||||
import android.widget.ScrollView; |
||||
import android.widget.Spinner; |
||||
import android.widget.TableLayout; |
||||
import android.widget.TableRow; |
||||
import android.widget.TextView; |
||||
|
||||
import org.json.JSONArray; |
||||
import org.json.JSONException; |
||||
import org.json.JSONObject; |
||||
|
||||
import java.io.File; |
||||
import java.util.ArrayList; |
||||
import java.util.Date; |
||||
import java.util.HashMap; |
||||
import java.util.Map; |
||||
|
||||
//import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
//import com.likesoft.mdedaltest.R;
|
||||
|
||||
public class KPActivity extends Activity { |
||||
|
||||
private Map<String, String> STATUS_NAMES = null; |
||||
//private LinearLayout lMain = null;
|
||||
private SharedPreferences prefs = null; |
||||
private TableLayout tl = null; |
||||
private LinearLayout lCancelReason = null; |
||||
|
||||
@Override |
||||
public void onCreate(Bundle savedInstanceState) { |
||||
super.onCreate(savedInstanceState); |
||||
|
||||
STATUS_NAMES = new HashMap<String, String>(); |
||||
STATUS_NAMES.put("aktywne", "Aktywne"); |
||||
STATUS_NAMES.put("zuzyte", "Zużyte"); |
||||
STATUS_NAMES.put("anulowane", "Anulowane"); |
||||
|
||||
prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); |
||||
|
||||
LinearLayout lMain = new LinearLayout(this); |
||||
lMain.setOrientation(LinearLayout.VERTICAL); |
||||
|
||||
ScrollView vScrollMain = new ScrollView(this); |
||||
HorizontalScrollView hScroll = new HorizontalScrollView(this); |
||||
vScrollMain.addView(hScroll); |
||||
hScroll.addView(lMain); |
||||
setContentView(vScrollMain); |
||||
|
||||
LinearLayout footer = new LinearLayout(this); |
||||
footer.setOrientation(LinearLayout.HORIZONTAL); |
||||
lMain.addView(footer); |
||||
|
||||
Button wyjdz = new Button(this); |
||||
wyjdz.setText("Wyjdź"); |
||||
wyjdz.setOnClickListener(new OnClickListener() { |
||||
@Override |
||||
public void onClick(View v) { |
||||
finish(); |
||||
} |
||||
}); |
||||
footer.addView(wyjdz); |
||||
|
||||
//lMain.addView(getCancelReason());
|
||||
lCancelReason = new LinearLayout(this); |
||||
lCancelReason.setOrientation(LinearLayout.VERTICAL); |
||||
lMain.addView(lCancelReason); |
||||
|
||||
tl = new TableLayout(this); |
||||
lMain.addView(tl); |
||||
drawTable(); |
||||
|
||||
|
||||
} |
||||
|
||||
private void drawTable() { |
||||
|
||||
String KP_filename = prefs.getString("KP_filename", ""); |
||||
KP_filename = DedalHelper.getModOrJsonFileName(KP_filename); |
||||
|
||||
String KP_json = DedalHelper.getFileContent(KP_filename); |
||||
JSONArray KP_json_arr = null; |
||||
try { |
||||
KP_json_arr = new JSONArray(KP_json); |
||||
} catch (JSONException e) { |
||||
e.printStackTrace(); |
||||
} |
||||
|
||||
//<MWK> obsługa nulla
|
||||
if ( KP_json_arr != null ) { //</MWK> obsługa nulla
|
||||
|
||||
tl.removeAllViews(); |
||||
tl.setPadding(0, 15, 0, 0); |
||||
|
||||
TableRow tr_head = new TableRow(this); |
||||
tl.addView(tr_head); |
||||
|
||||
TextView twH = new TextView(this); |
||||
twH.setText("LP"); |
||||
twH.setPadding(5, 3, 5, 2); |
||||
tr_head.addView(twH); |
||||
|
||||
TextView twH2 = new TextView(this); |
||||
twH2.setText("KP"); |
||||
twH2.setPadding(5, 3, 5, 2); |
||||
tr_head.addView(twH2); |
||||
|
||||
TextView twH3 = new TextView(this); |
||||
twH3.setText("Status"); |
||||
twH3.setPadding(5, 3, 5, 2); |
||||
tr_head.addView(twH3); |
||||
|
||||
TextView twH4 = new TextView(this); |
||||
twH4.setText("Operacje"); |
||||
twH4.setPadding(5, 3, 5, 2); |
||||
tr_head.addView(twH4); |
||||
|
||||
for( int i = 0 ; i < KP_json_arr.length() ; i++ ) { |
||||
try { |
||||
JSONObject KP_obj = KP_json_arr.getJSONObject(i); |
||||
String status = KP_obj.getString("status"); |
||||
TableRow tr = new TableRow(this); |
||||
tr.setMinimumHeight(110); |
||||
tl.addView(tr); |
||||
|
||||
TextView tw = new TextView(this); |
||||
tw.setText(""+(i+1)); |
||||
tw.setPadding(5, 3, 5, 2); |
||||
tr.addView(tw); |
||||
|
||||
TextView tw2 = new TextView(this); |
||||
tw2.setText(KP_obj.getString("kp")); |
||||
tw2.setPadding(5, 3, 5, 2); |
||||
tr.addView(tw2); |
||||
|
||||
TextView tw3 = new TextView(this); |
||||
String status_text = STATUS_NAMES.get(status); |
||||
if( KP_obj.has("powod_anulowania") && !"".equals(KP_obj.getString("powod_anulowania")) && !"null".equals(KP_obj.getString("powod_anulowania")) ) { |
||||
status_text += "\nPowód: "+KP_obj.getString("powod_anulowania"); |
||||
} |
||||
tw3.setText(status_text); |
||||
tw3.setPadding(5, 3, 5, 2); |
||||
tr.addView(tw3); |
||||
|
||||
|
||||
|
||||
Button bt = new Button(this); |
||||
bt.setPadding(5, 3, 5, 2); |
||||
tr.addView(bt); |
||||
|
||||
if ("aktywne".equals(status) ) { |
||||
bt.setText("Anuluj"); |
||||
bt.setOnClickListener(new ShowCancelReasonOnClickListener(KP_json_arr, KP_obj)); |
||||
} |
||||
else if ("anulowane".equals(status) ) { |
||||
bt.setText("Przywróć"); |
||||
bt.setOnClickListener(new ActionOnClickListener(KP_json_arr, KP_obj, "restore")); |
||||
} |
||||
|
||||
} catch (JSONException e) { |
||||
e.printStackTrace(); |
||||
} |
||||
} |
||||
//<MWK> obsługa nulla
|
||||
} |
||||
else { |
||||
tl.removeAllViews(); |
||||
tl.setPadding(0, 15, 0, 0); |
||||
TextView label = new TextView(this); |
||||
label.setText("Błąd pobierania danych. Sprawdź połączenie z internetem."); |
||||
label.setPadding(5, 3, 5, 2); |
||||
tl.addView(label); |
||||
}//</MWK> obsługa nulla
|
||||
|
||||
} |
||||
|
||||
private class spinnerCancelOnItemSelectedListener implements AdapterView.OnItemSelectedListener { |
||||
|
||||
ArrayList<String> items = null; |
||||
LinearLayout lInny = null; |
||||
EditText etInny = null; |
||||
|
||||
spinnerCancelOnItemSelectedListener(ArrayList<String> items, LinearLayout lInny, EditText etInny) { |
||||
this.items = items; |
||||
this.lInny = lInny; |
||||
this.etInny = etInny; |
||||
} |
||||
|
||||
@Override |
||||
public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) { |
||||
if( "inny".equals(items.get(position)) ) { |
||||
lInny.post(new Runnable() { |
||||
@Override |
||||
public void run() { |
||||
lInny.removeAllViews(); |
||||
TextView tv = new TextView(KPActivity.this); |
||||
tv.setText("Wpisz: "); |
||||
lInny.addView(tv); |
||||
lInny.addView(etInny); |
||||
} |
||||
}); |
||||
} |
||||
else { |
||||
lInny.post(new Runnable() { |
||||
@Override |
||||
public void run() { |
||||
lInny.removeAllViews(); |
||||
} |
||||
}); |
||||
} |
||||
} |
||||
|
||||
@Override |
||||
public void onNothingSelected(AdapterView<?> parentView) { |
||||
|
||||
} |
||||
|
||||
} |
||||
|
||||
private class ShowCancelReasonOnClickListener implements OnClickListener { |
||||
JSONObject kp_obj = null; |
||||
JSONArray kp_arr = null; |
||||
|
||||
ShowCancelReasonOnClickListener(JSONArray kp_arr, JSONObject kp_obj) { |
||||
this.kp_obj = kp_obj; |
||||
this.kp_arr = kp_arr; |
||||
} |
||||
|
||||
@Override |
||||
public void onClick(View v) { |
||||
|
||||
lCancelReason.post(new Runnable() { |
||||
@Override |
||||
public void run() { |
||||
lCancelReason.removeAllViews(); |
||||
lCancelReason.addView(getCancelReason(kp_arr, kp_obj)); |
||||
} |
||||
}); |
||||
} |
||||
} |
||||
private class ActionOnClickListener implements OnClickListener { |
||||
|
||||
JSONObject kp_obj = null; |
||||
JSONArray kp_arr = null; |
||||
String action = "cancel"; // 'cancel' | 'restore'
|
||||
Spinner cancelSpin = null; |
||||
EditText etInny = null; |
||||
|
||||
ActionOnClickListener(JSONArray kp_arr, JSONObject kp_obj, String action) { |
||||
this.kp_obj = kp_obj; |
||||
this.kp_arr = kp_arr; |
||||
this.action = action; |
||||
} |
||||
|
||||
ActionOnClickListener(JSONArray kp_arr, JSONObject kp_obj, String action, Spinner cancelSpin, EditText etInny) { |
||||
this.kp_obj = kp_obj; |
||||
this.kp_arr = kp_arr; |
||||
this.action = action; |
||||
this.cancelSpin = cancelSpin; |
||||
this.etInny = etInny; |
||||
} |
||||
|
||||
@Override |
||||
public void onClick(View v) { |
||||
try { |
||||
if ("cancel".equals(action) ) { |
||||
kp_obj.put("status", "anulowane"); |
||||
if( cancelSpin != null ) { |
||||
String powod = cancelSpin.getSelectedItem().toString(); |
||||
if( etInny != null && !"".equals(etInny.getText().toString().trim()) ) { |
||||
powod += ": " + etInny.getText(); |
||||
} |
||||
kp_obj.put("powod_anulowania", powod); |
||||
} |
||||
} |
||||
else if("restore".equals(action)) { |
||||
kp_obj.put("status", "aktywne"); |
||||
kp_obj.put("powod_anulowania", ""); |
||||
} |
||||
|
||||
String KP_filename = prefs.getString("KP_filename", ""); |
||||
KP_filename = KP_filename.replace(".json", ".mod"); |
||||
|
||||
// copy to .mod
|
||||
DedalHelper.putFileContent(KP_filename, kp_arr.toString()); |
||||
|
||||
//copy to upload folder
|
||||
String dir_upload = prefs.getString("dir", ""); |
||||
dir_upload += "/upload_kp"; |
||||
File fup = new File(dir_upload); |
||||
if( !fup.isDirectory()){ |
||||
fup.mkdirs(); |
||||
} |
||||
//String upload_file_name = KP_filename.replace(".json", "");
|
||||
String upload_file_name = "kp_"+(new Date()).getTime() + ".mod"; |
||||
DedalHelper.putFileContent(dir_upload + "/" + upload_file_name, kp_arr.toString()); |
||||
|
||||
drawTable(); |
||||
lCancelReason.post(new Runnable() { |
||||
@Override |
||||
public void run() { |
||||
lCancelReason.removeAllViews(); |
||||
} |
||||
}); |
||||
|
||||
//wystartuj/obudź serwis
|
||||
Context context = getApplicationContext(); |
||||
Intent service = new Intent(context, DedalService.class); |
||||
context.startService(service); |
||||
|
||||
} catch (JSONException e) { |
||||
e.printStackTrace(); |
||||
} |
||||
} |
||||
} |
||||
|
||||
private LinearLayout getCancelReason(JSONArray KP_json_arr, JSONObject KP_obj){ |
||||
LinearLayout lCancelReason = new LinearLayout(this); |
||||
lCancelReason.setOrientation(LinearLayout.VERTICAL); |
||||
//lMain.addView(lCancelReason);
|
||||
|
||||
TextView tv = new TextView(this); |
||||
tv.setText("Powód: "); |
||||
lCancelReason.addView(tv); |
||||
|
||||
Spinner spinCancelReason = new Spinner(this); |
||||
lCancelReason.addView(spinCancelReason); |
||||
|
||||
ArrayList<String> items = new ArrayList<String>(); |
||||
items.add("anulowany"); |
||||
//items.add("zagubiony");
|
||||
//items.add("zniszczony");
|
||||
//items.add("inny");
|
||||
|
||||
ArrayAdapter aa = new ArrayAdapter( |
||||
this, |
||||
android.R.layout.simple_spinner_item, |
||||
items.toArray()); |
||||
|
||||
aa.setDropDownViewResource( |
||||
android.R.layout.simple_spinner_dropdown_item); |
||||
|
||||
LinearLayout lInny = new LinearLayout(this); |
||||
lCancelReason.addView(lInny); |
||||
|
||||
EditText etInny = new EditText(this); |
||||
|
||||
//spinCancelReason.setOnItemSelectedListener(new CustomOnItemSelectedListener());
|
||||
spinCancelReason.setOnItemSelectedListener(new spinnerCancelOnItemSelectedListener(items, lInny, etInny)); |
||||
spinCancelReason.setAdapter(aa); |
||||
|
||||
Button bAnuluj = new Button(this); |
||||
bAnuluj.setText("Anuluj KP"); |
||||
bAnuluj.setOnClickListener(new ActionOnClickListener(KP_json_arr, KP_obj, "cancel", spinCancelReason, etInny)); |
||||
|
||||
lCancelReason.addView(bAnuluj); |
||||
|
||||
return lCancelReason; |
||||
} |
||||
} |
||||
@ -0,0 +1,267 @@
@@ -0,0 +1,267 @@
|
||||
package com.likesoft.mdedal; |
||||
|
||||
import android.app.Activity; |
||||
import android.content.Context; |
||||
import android.content.Intent; |
||||
import android.content.SharedPreferences; |
||||
import android.os.Bundle; |
||||
import android.preference.PreferenceManager; |
||||
import android.view.View; |
||||
import android.view.View.OnClickListener; |
||||
import android.widget.Button; |
||||
import android.widget.LinearLayout; |
||||
import android.widget.ScrollView; |
||||
import android.widget.TableLayout; |
||||
import android.widget.TableRow; |
||||
import android.widget.TextView; |
||||
|
||||
import org.json.JSONArray; |
||||
import org.json.JSONException; |
||||
import org.json.JSONObject; |
||||
|
||||
import java.io.File; |
||||
import java.util.Date; |
||||
import java.util.Iterator; |
||||
|
||||
|
||||
public class KPWplatyActivity extends Activity { |
||||
|
||||
private SharedPreferences prefs = null; |
||||
//private LinearLayout lMain = null;
|
||||
private LinearLayout lContent = null; |
||||
private JSONObject KPWplaty_json = null; |
||||
|
||||
@Override |
||||
public void onCreate(Bundle savedInstanceState) { |
||||
super.onCreate(savedInstanceState); |
||||
|
||||
|
||||
prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); |
||||
|
||||
LinearLayout lMain = new LinearLayout(this); |
||||
lMain.setOrientation(LinearLayout.VERTICAL); |
||||
//lMain.setPadding(50, 15, 15, 15);
|
||||
|
||||
ScrollView vScroll = new ScrollView(this); |
||||
vScroll.addView(lMain); |
||||
|
||||
setContentView(vScroll); |
||||
|
||||
LinearLayout footer = new LinearLayout(this); |
||||
footer.setOrientation(LinearLayout.HORIZONTAL); |
||||
lMain.addView(footer); |
||||
|
||||
Button wyjdz = new Button(this); |
||||
wyjdz.setText("Wyjdź"); |
||||
wyjdz.setOnClickListener(new OnClickListener() { |
||||
@Override |
||||
public void onClick(View v) { |
||||
finish(); |
||||
} |
||||
}); |
||||
footer.addView(wyjdz); |
||||
|
||||
// REFRESH BUTTON
|
||||
RefreshLayoutAndThread rlat = new RefreshLayoutAndThread(this) { |
||||
@Override |
||||
protected void whenThreadNeedToReaoad() { |
||||
|
||||
} |
||||
|
||||
@Override |
||||
protected void setLastGPSInfo_abstr() { |
||||
|
||||
} |
||||
|
||||
@Override |
||||
protected void onServiceFinisz() { |
||||
drawTable(); |
||||
} |
||||
}; |
||||
LinearLayout refreshLayout = rlat.getRefreshLayout(); |
||||
refreshLayout.setPadding(10, 0, 0, 0); |
||||
TextView textUpload = rlat.getTextUpload(); |
||||
footer.addView(textUpload); |
||||
rlat.setLastUpdateInfo(); |
||||
rlat.start(); |
||||
footer.addView(refreshLayout); |
||||
|
||||
lContent = new LinearLayout(this); |
||||
lContent.setOrientation(LinearLayout.VERTICAL); |
||||
lMain.addView(lContent); |
||||
|
||||
drawTable(); |
||||
} |
||||
|
||||
private void drawTable() { |
||||
String KPWplaty_filename = prefs.getString("KPWplaty_filename", ""); |
||||
KPWplaty_filename = DedalHelper.getModOrJsonFileName(KPWplaty_filename); |
||||
|
||||
String KPWplaty_json_string = DedalHelper.getFileContent(KPWplaty_filename); |
||||
try { |
||||
KPWplaty_json = new JSONObject(KPWplaty_json_string); |
||||
} catch (JSONException e) { |
||||
e.printStackTrace(); |
||||
} |
||||
|
||||
lContent.removeAllViews(); |
||||
lContent.setPadding(0, 15, 0, 0); |
||||
|
||||
if( KPWplaty_json == null ) return; |
||||
|
||||
Iterator k = KPWplaty_json.keys(); |
||||
while (k.hasNext()) { |
||||
String id_fundusz = (String) k.next(); |
||||
try { |
||||
JSONObject fundusz_obj = KPWplaty_json.getJSONObject(id_fundusz); |
||||
LinearLayout funduszLayout = new LinearLayout(this); |
||||
funduszLayout.setOrientation(LinearLayout.VERTICAL); |
||||
lContent.addView(funduszLayout); |
||||
|
||||
TextView titleTv = new TextView(this); |
||||
titleTv.setText("" + fundusz_obj.getString("nazwa_funduszu") + ", nr karty: " + fundusz_obj.getString("nr_karty")); |
||||
titleTv.setTextSize(30); |
||||
funduszLayout.addView(titleTv); |
||||
|
||||
TableLayout tl = new TableLayout(this); |
||||
funduszLayout.addView(tl); |
||||
JSONArray wplatyJson = fundusz_obj.getJSONArray("wplaty"); |
||||
if( wplatyJson != null && wplatyJson.length() > 0 ) { |
||||
// header
|
||||
TableRow tr_head = new TableRow(this); |
||||
tl.addView(tr_head); |
||||
|
||||
TextView twH = new TextView(this); |
||||
twH.setText("LP"); |
||||
twH.setPadding(5, 3, 5, 2); |
||||
tr_head.addView(twH); |
||||
|
||||
/*TextView twH2 = new TextView(this); |
||||
twH2.setText("Zlecenie"); |
||||
twH2.setPadding(5, 3, 5, 2); |
||||
tr_head.addView(twH2);*/ |
||||
|
||||
TextView twH1 = new TextView(this); |
||||
twH1.setText("KP"); |
||||
twH1.setPadding(5, 3, 5, 2); |
||||
tr_head.addView(twH1); |
||||
|
||||
TextView twH2 = new TextView(this); |
||||
twH2.setText("Nr sprawy"); |
||||
twH2.setPadding(5, 3, 5, 2); |
||||
tr_head.addView(twH2); |
||||
|
||||
|
||||
TextView twH3 = new TextView(this); |
||||
twH3.setText("Kwota"); |
||||
twH3.setPadding(5, 3, 5, 2); |
||||
tr_head.addView(twH3); |
||||
|
||||
for( int i = 0 ; i < wplatyJson.length() ; i++ ) { |
||||
JSONObject wplataJson = wplatyJson.getJSONObject(i); |
||||
|
||||
TableRow tr = new TableRow(this); |
||||
tl.addView(tr); |
||||
|
||||
TextView tw = new TextView(this); |
||||
tw.setText(""+(i+1)); |
||||
tw.setPadding(5, 3, 5, 2); |
||||
tr.addView(tw); |
||||
|
||||
/*TextView tw2 = new TextView(this); |
||||
tw2.setText(wplataJson.getString("id_zlecenia")); |
||||
tw2.setPadding(5, 3, 5, 2); |
||||
tr.addView(tw2);*/ |
||||
|
||||
TextView tw1 = new TextView(this); |
||||
tw1.setText(wplataJson.getString("kp")); |
||||
tw1.setPadding(5, 3, 5, 2); |
||||
tr.addView(tw1); |
||||
|
||||
TextView tw2 = new TextView(this); |
||||
tw2.setText(wplataJson.getString("nr_sprawy")); |
||||
tw2.setPadding(5, 3, 5, 2); |
||||
tr.addView(tw2); |
||||
|
||||
TextView tw3 = new TextView(this); |
||||
tw3.setText(wplataJson.getString("kwota")); |
||||
tw3.setPadding(5, 3, 5, 2); |
||||
tr.addView(tw3); |
||||
} |
||||
|
||||
TableRow tr = new TableRow(this); |
||||
tl.addView(tr); |
||||
|
||||
TextView sumaTvLabel = new TextView(this); |
||||
sumaTvLabel.setText("Suma"); |
||||
sumaTvLabel.setTextSize(30); |
||||
sumaTvLabel.setPadding(5, 3, 5, 2); |
||||
tr.addView(sumaTvLabel); |
||||
|
||||
TableRow.LayoutParams params = (TableRow.LayoutParams) sumaTvLabel.getLayoutParams(); |
||||
params.span = 2; //amount of columns you will span
|
||||
sumaTvLabel.setLayoutParams(params); |
||||
|
||||
TextView sumaTv = new TextView(this); |
||||
sumaTv.setText(fundusz_obj.getString("suma")+" zł"); |
||||
sumaTv.setTextSize(30); |
||||
sumaTv.setPadding(5, 3, 5, 2); |
||||
tr.addView(sumaTv); |
||||
} |
||||
|
||||
if ( fundusz_obj.getString("nr_karty") != null && fundusz_obj.getString("nr_karty").length() > 0 ) { //Mateusz - no display if don't have card
|
||||
Button bWplacam = new Button(this); |
||||
bWplacam.setText("Wpłacam"); |
||||
bWplacam.setOnClickListener(new WplacamOnClickListener(id_fundusz)); |
||||
funduszLayout.addView(bWplacam); |
||||
} |
||||
|
||||
} catch (JSONException e) { |
||||
e.printStackTrace(); |
||||
} |
||||
} |
||||
} |
||||
|
||||
private class WplacamOnClickListener implements OnClickListener { |
||||
|
||||
String id_fundusz = null; |
||||
|
||||
WplacamOnClickListener(String id_fundusz) { |
||||
this.id_fundusz = id_fundusz; |
||||
} |
||||
|
||||
@Override |
||||
public void onClick(View v) { |
||||
//copy to upload folder
|
||||
String dir_upload = prefs.getString("dir", ""); |
||||
dir_upload += "/upload_kp_wplaty"; |
||||
File fup = new File(dir_upload); |
||||
if( !fup.isDirectory()){ |
||||
fup.mkdirs(); |
||||
} |
||||
|
||||
//String upload_file_name = KP_filename.replace(".json", "");
|
||||
String upload_file_name = "kp_wplaty_"+(new Date()).getTime() + ".mod"; |
||||
|
||||
JSONArray ids_wplat = new JSONArray(); |
||||
try { |
||||
JSONObject fundusz_obj = KPWplaty_json.getJSONObject(id_fundusz); |
||||
JSONArray wplatyJson = fundusz_obj.getJSONArray("wplaty"); |
||||
for( int i = 0 ; i < wplatyJson.length() ; i++ ) { |
||||
JSONObject wplataJson = wplatyJson.getJSONObject(i); |
||||
ids_wplat.put(wplataJson.get("id")); |
||||
} |
||||
|
||||
DedalHelper.putFileContent(dir_upload + "/" + upload_file_name, ids_wplat.toString()); |
||||
} catch (JSONException e) { |
||||
e.printStackTrace(); |
||||
} |
||||
|
||||
|
||||
//wystartuj/obudź serwis
|
||||
Context context = getApplicationContext(); |
||||
Intent service = new Intent(context, DedalService.class); |
||||
context.startService(service); |
||||
} |
||||
} |
||||
} |
||||
@ -0,0 +1,179 @@
@@ -0,0 +1,179 @@
|
||||
package com.likesoft.mdedal; |
||||
|
||||
import android.os.AsyncTask; |
||||
|
||||
import java.io.BufferedInputStream; |
||||
import java.io.BufferedOutputStream; |
||||
import java.io.File; |
||||
import java.io.FileInputStream; |
||||
import java.io.FileOutputStream; |
||||
import java.io.FileWriter; |
||||
import java.io.FilenameFilter; |
||||
import java.io.IOException; |
||||
import java.io.PrintWriter; |
||||
import java.text.SimpleDateFormat; |
||||
import java.util.Date; |
||||
import java.util.zip.ZipEntry; |
||||
import java.util.zip.ZipOutputStream; |
||||
|
||||
public class Log { |
||||
|
||||
|
||||
|
||||
private static void log(final String lOG, String string) { |
||||
|
||||
AsyncTask<String, Integer, String> fileLog = new AsyncTask(){ |
||||
@Override |
||||
protected Object doInBackground(Object[] objects) { |
||||
logRow(objects[0].toString(), objects[1].toString()); |
||||
return null; |
||||
} |
||||
}; |
||||
fileLog.execute(lOG, string); |
||||
} |
||||
private static void logRow(String lOG, String string) { |
||||
|
||||
if( fileName != null){ |
||||
PrintWriter pw; |
||||
try { |
||||
Date d = new Date(); |
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy_MM_dd"); |
||||
String fName = fileName+"/rt_"+sdf.format(d)+".log"; |
||||
File f = new File(fName); |
||||
if( !f.exists()){ |
||||
// new date, check if old should be sent to server
|
||||
File dir = new File( fileName); |
||||
String[] fpliki = dir.list(new FilenameFilter(){ |
||||
|
||||
@Override |
||||
public boolean accept(File dir, String filename) { |
||||
// TODO Auto-generated method stub
|
||||
return filename.startsWith("rt_"); |
||||
}}); |
||||
File up = new File(fileName +"/upload/log_file"); |
||||
if( !up.isDirectory()){ |
||||
up.mkdirs(); |
||||
} |
||||
if( fpliki != null ) { |
||||
for (int i = 0; i < fpliki.length; i++) { |
||||
File fi = new File(fileName + "/" + fpliki[i]); |
||||
String fi_name = fi.getName(); |
||||
|
||||
if ("rt_2014_05_25.log".compareTo(fi_name) > 0) { //create_date < "2014-05-20" ) {
|
||||
fi.delete(); |
||||
} else { |
||||
Log.zip(fi.getAbsolutePath(), fi.getAbsolutePath() + ".zip"); |
||||
File fz = new File(fi.getAbsolutePath() + ".zip"); |
||||
File newF = new File(up.getAbsoluteFile() + "/" + fpliki[i] + ".zip"); |
||||
|
||||
if( fz != null && fz.exists() ) { |
||||
fz.renameTo(newF); |
||||
fi.delete(); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
f.createNewFile(); |
||||
} |
||||
pw = new PrintWriter( |
||||
new FileWriter(fName, true)); |
||||
String prefix = ""; |
||||
//Date d = new Date();
|
||||
sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
||||
prefix = sdf.format(d) + ":"; |
||||
pw.write(prefix + lOG + ":" + string+ "\n"); |
||||
pw.flush(); |
||||
pw.close(); |
||||
} catch (IOException e) { |
||||
e.printStackTrace(); |
||||
} |
||||
} |
||||
|
||||
} |
||||
public static void d(String tag, String msg){ |
||||
if(BuildConfig.DEBUG) { |
||||
android.util.Log.d(tag, msg); |
||||
StackTraceElement st = new Exception().getStackTrace()[1]; |
||||
log(tag, "DEBUG:" + st.getClassName() + ":" + st.getMethodName() + "(" + st.getLineNumber() + "):" + msg); |
||||
} |
||||
} |
||||
|
||||
public static void d(String tag, String msg, Throwable tr){ |
||||
if(BuildConfig.DEBUG) { |
||||
android.util.Log.d(tag, msg, tr); |
||||
log(tag, "DEBUG:" + msg + android.util.Log.getStackTraceString(tr)); |
||||
} |
||||
} |
||||
public static void e(String tag, String msg ){ |
||||
{ |
||||
android.util.Log.e(tag, msg); |
||||
} |
||||
log(tag, "ERROR:" + msg); |
||||
} |
||||
public static void e(String tag, String msg, Throwable tr){ |
||||
{ |
||||
android.util.Log.e(tag, msg, tr); |
||||
} |
||||
log(tag, "ERROR:" + msg + android.util.Log.getStackTraceString(tr)); |
||||
} |
||||
public static String fileName = null; |
||||
public static void setFileName( String dir){ |
||||
fileName = dir;// + "/rt.log";
|
||||
} |
||||
public static void setEH(){ |
||||
if( fileName == null){ |
||||
return; |
||||
} |
||||
Thread.currentThread().setUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() { |
||||
@Override |
||||
public void uncaughtException(Thread thread, Throwable ex) { |
||||
|
||||
PrintWriter pw; |
||||
try { |
||||
Date d = new Date(); |
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy_MM_dd"); |
||||
pw = new PrintWriter( |
||||
new FileWriter(fileName+"/rt_"+sdf.format(d)+".log", true)); |
||||
pw.write("uncaughtException\n"); |
||||
ex.printStackTrace(pw); |
||||
pw.flush(); |
||||
pw.close(); |
||||
ex.printStackTrace(); |
||||
} catch (IOException e) { |
||||
e.printStackTrace(); |
||||
} |
||||
} |
||||
}); |
||||
} |
||||
|
||||
|
||||
public static void zip(String _file, String _zipFile) { |
||||
try { |
||||
BufferedInputStream origin = null; |
||||
FileOutputStream dest = new FileOutputStream(_zipFile); |
||||
|
||||
ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(dest)); |
||||
|
||||
int BUFFER = 1024; |
||||
byte data[] = new byte[BUFFER]; |
||||
|
||||
//for(int i=0; i < _files.length; i++) {
|
||||
//Log.d("Compress", "Adding: " + _file);
|
||||
FileInputStream fi = new FileInputStream(_file); |
||||
origin = new BufferedInputStream(fi, BUFFER); |
||||
ZipEntry entry = new ZipEntry(_file.substring(_file.lastIndexOf("/") + 1)); |
||||
out.putNextEntry(entry); |
||||
int count; |
||||
while ((count = origin.read(data, 0, BUFFER)) != -1) { |
||||
out.write(data, 0, count); |
||||
} |
||||
origin.close(); |
||||
//}
|
||||
|
||||
out.close(); |
||||
} catch(Exception e) { |
||||
e.printStackTrace(); |
||||
} |
||||
|
||||
} |
||||
} |
||||
@ -0,0 +1,410 @@
@@ -0,0 +1,410 @@
|
||||
package com.likesoft.mdedal; |
||||
|
||||
import java.io.IOException; |
||||
import java.io.OutputStream; |
||||
import java.io.Writer; |
||||
import java.util.ArrayList; |
||||
import java.util.Collections; |
||||
import java.util.Comparator; |
||||
import java.util.Iterator; |
||||
|
||||
import org.json.JSONArray; |
||||
import org.json.JSONException; |
||||
import org.json.JSONObject; |
||||
import org.xmlpull.v1.XmlSerializer; |
||||
|
||||
/* |
||||
* NOT USED CLASS |
||||
*/ |
||||
|
||||
class MyXMLSerializer implements XmlSerializer{ |
||||
|
||||
private class MyXMLSerializerData { |
||||
public OutputStream m_os; |
||||
public boolean started; |
||||
|
||||
public MyXMLSerializerData(OutputStream m_os, boolean started) { |
||||
this.m_os = m_os; |
||||
this.started = started; |
||||
} |
||||
} |
||||
MyXMLSerializerData data = new MyXMLSerializerData(null, false); |
||||
|
||||
// dst = new File(getFilesDir().getAbsolutePath() + "/baza/" + genName);
|
||||
// fos = new FileOutputStream(dst);
|
||||
// XmlSerializer xmlSerializer = new MyXMLSerializer();
|
||||
// xmlSerializer.setOutput(fos, "UTF-8");
|
||||
// zapiszAsXML(js, xmlSerializer);
|
||||
// fos.flush();
|
||||
// fos.close();
|
||||
|
||||
|
||||
//http://stackoverflow.com/questions/9869507/how-to-create-an-xml-using-xmlserializer-in-android-app
|
||||
void zapiszAsXML(JSONObject jo, XmlSerializer xS, String m_id, JSONObject js){ |
||||
try { |
||||
xS.startDocument("UTF-8", true); |
||||
// xS.startDocument("UTF_8", true);
|
||||
// xS.startDocument(Xml.Encoding.UTF_8, true);
|
||||
//Xml.Encoding UTF_8
|
||||
// Xml.Encoding.UTF_8
|
||||
xS.startTag("", "zlecenia"); |
||||
xS.startTag("", "zlecenie"); |
||||
|
||||
xS.startTag("", "id_zlecenia"); |
||||
xS.text(m_id); |
||||
xS.endTag("", "id_zlecenia"); |
||||
|
||||
try { |
||||
xS.startTag("", "id_szablonu"); |
||||
JSONObject zlecenie_param = js.getJSONObject("param"); |
||||
xS.text(zlecenie_param.getString("id_szablonu")); |
||||
xS.endTag("", "id_szablonu"); |
||||
|
||||
JSONObject pola = js.getJSONObject("pola"); |
||||
ArrayList<JSONObject> aM = new ArrayList<JSONObject>(); |
||||
|
||||
//if()
|
||||
// for( int i=0; i<pola.length(); i++){
|
||||
if( pola.length() >0){ |
||||
xS.startTag("", "childs"); |
||||
Iterator k = pola.keys(); |
||||
while (k.hasNext()) { |
||||
String key = (String) k.next(); |
||||
JSONObject joP = pola.getJSONObject(key); |
||||
aM.add(joP); |
||||
} |
||||
|
||||
sortujKolejnosc(aM); |
||||
|
||||
for( int z=0; z<aM.size(); z++){ |
||||
JSONObject joP =(JSONObject) aM.get(z); |
||||
zapiszPolaXML( joP, xS ); |
||||
} |
||||
|
||||
xS.endTag("", "childs"); |
||||
} |
||||
} catch (JSONException e) { |
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace(); |
||||
} |
||||
|
||||
xS.endTag("", "zlecenie"); |
||||
xS.endTag("", "zlecenia"); |
||||
|
||||
xS.flush(); |
||||
xS.endDocument(); |
||||
|
||||
} catch (IllegalArgumentException e) { |
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace(); |
||||
} catch (IllegalStateException e) { |
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace(); |
||||
} catch (IOException e) { |
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace(); |
||||
} |
||||
// xS.setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true);
|
||||
//Open Tag <file>
|
||||
} |
||||
private void zapiszPolaXML(JSONObject joP, XmlSerializer xS) { |
||||
// TODO Auto-generated method stub
|
||||
|
||||
try { |
||||
xS.startTag("", "pole"); |
||||
xS.attribute("", "kod", joP.getString("kod")); |
||||
|
||||
xS.startTag("", "wartosc"); |
||||
|
||||
String typ = joP.getString("typ_danych"); |
||||
if( "radiolista".equals(typ)){ |
||||
JSONArray ja = joP.getJSONArray("childs"); |
||||
if( ja!= null && ja.length()>0){ |
||||
for ( int i=0; i<ja.length(); i++){ |
||||
if( "on".equals(ja.getJSONObject(i).getString("wartosc"))){ |
||||
xS.text(ja.getJSONObject(i).getString("kod")); |
||||
} |
||||
} |
||||
} |
||||
|
||||
|
||||
}else{ |
||||
xS.text(joP.getString("wartosc")); |
||||
} |
||||
xS.endTag("", "wartosc"); |
||||
|
||||
JSONArray ja = joP.getJSONArray("childs"); |
||||
if( ja!= null && ja.length()>0){ |
||||
xS.startTag("", "childs"); |
||||
for ( int i=0; i<ja.length(); i++){ |
||||
zapiszPolaXML( ja.getJSONObject(i), xS); |
||||
} |
||||
xS.endTag("", "childs"); |
||||
} |
||||
|
||||
xS.endTag("", "pole"); |
||||
} catch (IllegalArgumentException e) { |
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace(); |
||||
} catch (IllegalStateException e) { |
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace(); |
||||
} catch (IOException e) { |
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace(); |
||||
} catch (JSONException e) { |
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace(); |
||||
} |
||||
|
||||
|
||||
} |
||||
|
||||
private void sortujKolejnosc(ArrayList<JSONObject> aM) { |
||||
Collections.sort(aM, new Comparator<JSONObject>() { |
||||
@Override |
||||
public int compare(JSONObject lhs, JSONObject rhs) { |
||||
// TODO Auto-generated method stub
|
||||
try { |
||||
if( lhs.getInt("kolejnosc") >(rhs.getInt("kolejnosc"))){ |
||||
return 1; |
||||
}else if( lhs.getInt("kolejnosc") < (rhs.getInt("kolejnosc"))){ |
||||
return -1; |
||||
}else{ |
||||
if( lhs.getInt("id") > (rhs.getInt("id"))) |
||||
return 1; |
||||
else if ( lhs.getInt("id") < (rhs.getInt("id"))) |
||||
return -1; |
||||
return 0; |
||||
} |
||||
} catch (JSONException e) { |
||||
// TODO Auto-generated catch block
|
||||
//e.printStackTrace();
|
||||
} |
||||
return 0; |
||||
} |
||||
}); |
||||
} |
||||
|
||||
@Override |
||||
public void startDocument(String encoding, Boolean standalone) |
||||
throws IOException, IllegalArgumentException, |
||||
IllegalStateException { |
||||
// TODO Auto-generated method stub
|
||||
data.m_os.write("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>".getBytes()); |
||||
} |
||||
|
||||
@Override |
||||
public XmlSerializer startTag(String namespace, String name) |
||||
throws IOException, IllegalArgumentException, |
||||
IllegalStateException { |
||||
// TODO Auto-generated method stub
|
||||
if( data.started){ |
||||
data.m_os.write(">".getBytes()); |
||||
data.started = false; |
||||
} |
||||
StringBuffer b = new StringBuffer(); |
||||
b.append("<"); |
||||
b.append(name); |
||||
b.append(" "); |
||||
data.m_os.write(b.toString().getBytes()); |
||||
data.started = true; |
||||
return this; |
||||
} |
||||
|
||||
@Override |
||||
public XmlSerializer text(String text) throws IOException, |
||||
IllegalArgumentException, IllegalStateException { |
||||
// TODO Auto-generated method stub
|
||||
if( data.started){ |
||||
data.m_os.write(">".getBytes()); |
||||
data.started = false; |
||||
} |
||||
data.m_os.write(text.getBytes()); |
||||
return this; |
||||
} |
||||
|
||||
@Override |
||||
public XmlSerializer attribute(String namespace, String name, |
||||
String value) throws IOException, IllegalArgumentException, |
||||
IllegalStateException { |
||||
StringBuffer b = new StringBuffer(); |
||||
b.append(name); |
||||
b.append("=\""); |
||||
b.append(value); |
||||
b.append("\" "); |
||||
data.m_os.write(b.toString().getBytes()); |
||||
return this; |
||||
} |
||||
|
||||
@Override |
||||
public XmlSerializer endTag(String namespace, String name) |
||||
throws IOException, IllegalArgumentException, |
||||
IllegalStateException { |
||||
if( data.started){ |
||||
data.m_os.write(">".getBytes()); |
||||
data.started = false; |
||||
} |
||||
StringBuffer b = new StringBuffer(); |
||||
b.append("</"); |
||||
b.append(name); |
||||
b.append(">"); |
||||
data.m_os.write(b.toString().getBytes()); |
||||
return this; |
||||
} |
||||
|
||||
|
||||
@Override |
||||
public void setOutput(OutputStream os, String encoding) |
||||
throws IOException, IllegalArgumentException, |
||||
IllegalStateException { |
||||
// TODO Auto-generated method stub
|
||||
data.m_os = os; |
||||
} |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@Override |
||||
public void cdsect(String text) throws IOException, |
||||
IllegalArgumentException, IllegalStateException { |
||||
// TODO Auto-generated method stub
|
||||
|
||||
} |
||||
|
||||
@Override |
||||
public void comment(String text) throws IOException, |
||||
IllegalArgumentException, IllegalStateException { |
||||
// TODO Auto-generated method stub
|
||||
|
||||
} |
||||
|
||||
@Override |
||||
public void docdecl(String text) throws IOException, |
||||
IllegalArgumentException, IllegalStateException { |
||||
// TODO Auto-generated method stub
|
||||
|
||||
} |
||||
|
||||
@Override |
||||
public void endDocument() throws IOException, IllegalArgumentException, |
||||
IllegalStateException { |
||||
// TODO Auto-generated method stub
|
||||
|
||||
} |
||||
|
||||
|
||||
@Override |
||||
public void entityRef(String text) throws IOException, |
||||
IllegalArgumentException, IllegalStateException { |
||||
// TODO Auto-generated method stub
|
||||
|
||||
} |
||||
|
||||
@Override |
||||
public void flush() throws IOException { |
||||
// TODO Auto-generated method stub
|
||||
|
||||
} |
||||
|
||||
@Override |
||||
public int getDepth() { |
||||
// TODO Auto-generated method stub
|
||||
return 0; |
||||
} |
||||
|
||||
@Override |
||||
public boolean getFeature(String name) { |
||||
// TODO Auto-generated method stub
|
||||
return false; |
||||
} |
||||
|
||||
@Override |
||||
public String getName() { |
||||
// TODO Auto-generated method stub
|
||||
return null; |
||||
} |
||||
|
||||
@Override |
||||
public String getNamespace() { |
||||
// TODO Auto-generated method stub
|
||||
return null; |
||||
} |
||||
|
||||
@Override |
||||
public String getPrefix(String namespace, boolean generatePrefix) |
||||
throws IllegalArgumentException { |
||||
// TODO Auto-generated method stub
|
||||
return null; |
||||
} |
||||
|
||||
@Override |
||||
public Object getProperty(String name) { |
||||
// TODO Auto-generated method stub
|
||||
return null; |
||||
} |
||||
|
||||
@Override |
||||
public void ignorableWhitespace(String text) throws IOException, |
||||
IllegalArgumentException, IllegalStateException { |
||||
// TODO Auto-generated method stub
|
||||
|
||||
} |
||||
|
||||
@Override |
||||
public void processingInstruction(String text) throws IOException, |
||||
IllegalArgumentException, IllegalStateException { |
||||
// TODO Auto-generated method stub
|
||||
|
||||
} |
||||
|
||||
@Override |
||||
public void setFeature(String name, boolean state) |
||||
throws IllegalArgumentException, IllegalStateException { |
||||
// TODO Auto-generated method stub
|
||||
|
||||
} |
||||
|
||||
@Override |
||||
public void setOutput(Writer writer) throws IOException, |
||||
IllegalArgumentException, IllegalStateException { |
||||
// TODO Auto-generated method stub
|
||||
|
||||
} |
||||
|
||||
@Override |
||||
public void setPrefix(String prefix, String namespace) |
||||
throws IOException, IllegalArgumentException, |
||||
IllegalStateException { |
||||
// TODO Auto-generated method stub
|
||||
|
||||
} |
||||
|
||||
@Override |
||||
public void setProperty(String name, Object value) |
||||
throws IllegalArgumentException, IllegalStateException { |
||||
// TODO Auto-generated method stub
|
||||
|
||||
} |
||||
|
||||
@Override |
||||
public XmlSerializer text(char[] buf, int start, int len) |
||||
throws IOException, IllegalArgumentException, |
||||
IllegalStateException { |
||||
// TODO Auto-generated method stub
|
||||
return null; |
||||
} |
||||
|
||||
} |
||||
@ -0,0 +1,295 @@
@@ -0,0 +1,295 @@
|
||||
package com.likesoft.mdedal; |
||||
|
||||
import android.Manifest; |
||||
import android.content.Intent; |
||||
import android.content.pm.PackageInfo; |
||||
import android.content.pm.PackageManager; |
||||
import android.net.Uri; |
||||
import android.os.Build; |
||||
import android.os.Bundle; |
||||
import android.os.Environment; |
||||
import android.preference.PreferenceManager; |
||||
import android.app.Activity; |
||||
import android.content.Context; |
||||
import android.content.SharedPreferences; |
||||
import android.content.SharedPreferences.Editor; |
||||
import android.provider.Settings; |
||||
import android.view.Menu; |
||||
import android.view.View; |
||||
import android.view.View.OnClickListener; |
||||
import android.widget.Button; |
||||
import android.widget.EditText; |
||||
import android.widget.TextView; |
||||
import android.widget.Toast; |
||||
|
||||
import androidx.core.app.ActivityCompat; |
||||
import androidx.core.content.ContextCompat; |
||||
|
||||
//import com.likesoft.mdedaltest.*;
|
||||
|
||||
import java.io.File; |
||||
import java.io.IOException; |
||||
import java.util.HashMap; |
||||
import java.util.Map; |
||||
|
||||
import static com.likesoft.mdedal.ListActivity.LOG; |
||||
|
||||
|
||||
public class PreferActivity extends Activity { |
||||
|
||||
private static final int REQ_STORAGE_PERMISSION = 1001; |
||||
private static final int REQ_MANAGE_ALL_FILES = 2296; |
||||
|
||||
// EditText hostName;
|
||||
EditText user; |
||||
EditText password; |
||||
EditText newpassword; |
||||
// CheckBox tablet;
|
||||
// Spinner refresh;
|
||||
//TextView version;
|
||||
TextView textViewHostUrl; |
||||
|
||||
SharedPreferences prefs; |
||||
@Override |
||||
protected void onCreate(Bundle savedInstanceState) { |
||||
super.onCreate(savedInstanceState); |
||||
setContentView(R.layout.activity_prefer); |
||||
// hostName = (EditText) findViewById(R.id.editTextHost);
|
||||
user = (EditText) findViewById(R.id.editTextUser); |
||||
password = (EditText) findViewById(R.id.editTextPassword); |
||||
newpassword = (EditText) findViewById(R.id.editTextNewPassword); |
||||
// tablet = (CheckBox) findViewById(R.id.checkBoxTablet);
|
||||
// refresh = (Spinner) findViewById(R.id.spinner_refresh);
|
||||
//version = (TextView) findViewById(R.id.textViewVersion);
|
||||
|
||||
//textViewHostUrl
|
||||
textViewHostUrl = (TextView) findViewById(R.id.textViewHostUrl); |
||||
|
||||
PackageInfo pinfo; |
||||
try { |
||||
pinfo = getPackageManager().getPackageInfo(getPackageName(), 0); |
||||
//versionNumber = pinfo.versionCode;
|
||||
String versionName = pinfo.versionName; |
||||
//version.setText("Wersja aplikacji: "+versionName);
|
||||
setTitle("Logowanie - Wersja aplikacji: "+versionName); |
||||
} catch (PackageManager.NameNotFoundException e2) { |
||||
Log.e(LOG, "", e2); |
||||
} |
||||
|
||||
Context context = getApplicationContext(); |
||||
|
||||
prefs = PreferenceManager.getDefaultSharedPreferences(context); |
||||
updateUI(); |
||||
//Log.d("my_debug", "oncreate prefs");
|
||||
|
||||
Button ok = (Button)findViewById(R.id.buttonSave); |
||||
ok.setOnClickListener(new OnClickListener() { |
||||
|
||||
@Override |
||||
public void onClick(View v) { |
||||
// Zanim zapiszemy preferencje, upewnijmy się, że mamy dostęp do pamięci
|
||||
if (!hasStorageAccess()) { |
||||
requestStorageAccess(); |
||||
Toast.makeText(PreferActivity.this, "Brak uprawnień do zapisu w pamięci. Przyznaj uprawnienie i spróbuj ponownie.", Toast.LENGTH_LONG).show(); |
||||
return; |
||||
} |
||||
if( newpassword.getText().toString().length()>0){ |
||||
savePreferences(); |
||||
new Thread( new Runnable() { |
||||
@Override |
||||
public void run() { |
||||
DedalHttpConnection con = new DedalHttpConnection(getApplicationContext()); |
||||
Map<String, String> params_post = new HashMap<String, String>(); |
||||
params_post.put("oldpass", password.getText().toString()); |
||||
params_post.put("pass1", newpassword.getText().toString()); |
||||
params_post.put("pass2", newpassword.getText().toString()); |
||||
String response = ""; |
||||
try{ |
||||
response = con.sendPost("public/mobi.php?page=login_change", params_post); |
||||
}catch (Exception e){ |
||||
Log.e( "BLAD ", "Bląd połączenia"); |
||||
} |
||||
if( response.contains("zmienione") ) { |
||||
//jeśli się powiodło:
|
||||
// password.setText(newpassword.getText());
|
||||
Editor e = prefs.edit(); |
||||
e.putString("password", DedalHelper.encodeB64(newpassword.getText().toString())); |
||||
e.commit(); |
||||
Log.d("PASSWORD", "hasło zostało zmienione na: "+ newpassword.getText().toString()); |
||||
//savePreferences();
|
||||
|
||||
Button ok = (Button)findViewById(R.id.buttonSave); |
||||
ok.post(new Runnable() { |
||||
@Override |
||||
public void run() { |
||||
Toast.makeText(PreferActivity.this, "Hasło zmienione.", Toast.LENGTH_LONG); |
||||
PreferActivity.this.setResult(RESULT_OK); |
||||
finish(); |
||||
} |
||||
}); |
||||
} |
||||
else { |
||||
Log.d("PASSWORD", "problem ze zmianą hasła, response: " + response); |
||||
Toast.makeText(PreferActivity.this, "Problem ze zmianą hasła", Toast.LENGTH_LONG); |
||||
} |
||||
|
||||
} |
||||
}).start(); |
||||
}else { |
||||
savePreferences(); |
||||
PreferActivity.this.setResult(RESULT_OK); |
||||
finish(); |
||||
} |
||||
} |
||||
|
||||
|
||||
}); |
||||
} |
||||
|
||||
private boolean hasStorageAccess() { |
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { |
||||
return Environment.isExternalStorageManager(); |
||||
} else { |
||||
int write = ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE); |
||||
int read = ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE); |
||||
return write == PackageManager.PERMISSION_GRANTED && read == PackageManager.PERMISSION_GRANTED; |
||||
} |
||||
} |
||||
|
||||
private void requestStorageAccess() { |
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { |
||||
try { |
||||
Intent intent = new Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION); |
||||
intent.setData(Uri.parse("package:" + getPackageName())); |
||||
startActivityForResult(intent, REQ_MANAGE_ALL_FILES); |
||||
} catch (Exception ex) { |
||||
Intent intent = new Intent(Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION); |
||||
startActivityForResult(intent, REQ_MANAGE_ALL_FILES); |
||||
} |
||||
} else { |
||||
ActivityCompat.requestPermissions(this, |
||||
new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE}, |
||||
REQ_STORAGE_PERMISSION); |
||||
} |
||||
} |
||||
|
||||
@Override |
||||
protected void onActivityResult(int requestCode, int resultCode, Intent data) { |
||||
super.onActivityResult(requestCode, resultCode, data); |
||||
if (requestCode == REQ_MANAGE_ALL_FILES) { |
||||
if (hasStorageAccess()) { |
||||
Toast.makeText(this, "Przyznano dostęp do plików.", Toast.LENGTH_SHORT).show(); |
||||
} else { |
||||
Toast.makeText(this, "Dostęp do plików nadal zablokowany.", Toast.LENGTH_LONG).show(); |
||||
} |
||||
} |
||||
} |
||||
|
||||
@Override |
||||
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { |
||||
super.onRequestPermissionsResult(requestCode, permissions, grantResults); |
||||
if (requestCode == REQ_STORAGE_PERMISSION) { |
||||
boolean granted = true; |
||||
if (grantResults == null || grantResults.length == 0) granted = false; |
||||
for (int r : grantResults) { |
||||
if (r != PackageManager.PERMISSION_GRANTED) { granted = false; break; } |
||||
} |
||||
if (granted) { |
||||
Toast.makeText(this, "Uprawnienia do pamięci przyznane.", Toast.LENGTH_SHORT).show(); |
||||
} else { |
||||
Toast.makeText(this, "Odmówiono uprawnień do pamięci.", Toast.LENGTH_LONG).show(); |
||||
} |
||||
} |
||||
} |
||||
|
||||
public static void deleteFiles(String path) { |
||||
|
||||
File file = new File(path); |
||||
|
||||
if (file.exists()) { |
||||
String deleteCmd = "rm -r " + path; |
||||
Runtime runtime = Runtime.getRuntime(); |
||||
try { |
||||
runtime.exec(deleteCmd); |
||||
} catch (IOException e) { } |
||||
} |
||||
} |
||||
|
||||
void savePreferences() { |
||||
// TODO Auto-generated method stub
|
||||
|
||||
String currentHost = prefs.getString("hostName", "https://dedal.eos-ksi.pl"); |
||||
|
||||
Editor e = prefs.edit(); |
||||
e.putString("hostName", currentHost); |
||||
// e.putBoolean("tablet", tablet.isChecked());
|
||||
String login = user.getText().toString().trim(); |
||||
|
||||
if( login.contains("@")){ |
||||
String loginTable[] = login.split("@"); |
||||
e.putString("user", loginTable[0]); |
||||
if("reset".equals(loginTable[1]) ){ |
||||
e.putString("certSerialNumber", ""); |
||||
deleteFiles(Environment.getExternalStorageDirectory()+ "/dedal/"); |
||||
}else { |
||||
if( loginTable[1].startsWith("http")) { |
||||
e.putString("hostName", loginTable[1]); |
||||
} |
||||
} |
||||
login = loginTable[0]; |
||||
}else { |
||||
e.putString("user", login); |
||||
} |
||||
e.putString("password", DedalHelper.encodeB64(password.getText().toString())); |
||||
// e.putInt("refresh", refresh.getSelectedItemPosition());
|
||||
String dirPath = Environment.getExternalStorageDirectory()+ "/dedal/"+ login; |
||||
e.putString("dir", dirPath); |
||||
e.putBoolean("tablet", true); |
||||
e.putInt("refresh", 2); |
||||
|
||||
e.commit(); |
||||
|
||||
// Utwórz folder użytkownika jeśli nie istnieje
|
||||
try { |
||||
File dir = new File(dirPath); |
||||
if (!dir.exists()) { |
||||
boolean ok = dir.mkdirs(); |
||||
if (!ok) { |
||||
Toast.makeText(this, "Nie można utworzyć katalogu:" + dirPath, Toast.LENGTH_LONG).show(); |
||||
} |
||||
} |
||||
} catch (Throwable t) { |
||||
Log.e(LOG, "Błąd tworzenia katalogu: " + t.getMessage(), t); |
||||
} |
||||
|
||||
//usunięcie starej aplikacji:
|
||||
deleteFiles(Environment.getExternalStorageDirectory()+ "/likesoft"); |
||||
deleteFiles(Environment.getExternalStorageDirectory()+ "/likesofttest"); |
||||
|
||||
File fLockLogin = new File(prefs.getString("dir", "") + "/dedalsrv.wrongLogin"); |
||||
if( fLockLogin.exists()){ |
||||
fLockLogin.delete(); |
||||
} |
||||
|
||||
} |
||||
private void updateUI() { |
||||
// tablet.setChecked(prefs.getBoolean("tablet", false));
|
||||
// hostName.setText(prefs.getString("hostName", "http://likesoft/dedal/develop/psql"));
|
||||
// hostName.setText(prefs.getString("hostName", "https://dedal.eos-ksi.pl"));
|
||||
user.setText(prefs.getString("user", "")); |
||||
password.setText(""); |
||||
textViewHostUrl.setText(prefs.getString("hostName", "https://dedal.eos-ksi.pl")); |
||||
|
||||
//password.setText(prefs.getString("password", ""));
|
||||
// refresh.setSelection(prefs.getInt("refresh", 0));
|
||||
|
||||
} |
||||
|
||||
@Override |
||||
public boolean onCreateOptionsMenu(Menu menu) { |
||||
// Inflate the menu; this adds items to the action bar if it is present.
|
||||
getMenuInflater().inflate(R.menu.prefer, menu); |
||||
return true; |
||||
} |
||||
|
||||
} |
||||
@ -0,0 +1,294 @@
@@ -0,0 +1,294 @@
|
||||
package com.likesoft.mdedal; |
||||
|
||||
import android.content.Context; |
||||
import android.content.Intent; |
||||
import android.content.SharedPreferences; |
||||
import android.graphics.Color; |
||||
import android.os.AsyncTask; |
||||
import android.preference.PreferenceManager; |
||||
import android.view.View; |
||||
import android.widget.Button; |
||||
import android.widget.LinearLayout; |
||||
import android.widget.ProgressBar; |
||||
import android.widget.TextView; |
||||
|
||||
|
||||
import java.io.File; |
||||
import java.io.FileInputStream; |
||||
import java.text.SimpleDateFormat; |
||||
import java.util.Date; |
||||
import java.util.List; |
||||
|
||||
/** |
||||
* Created by Kamil on 2016-02-04. |
||||
*/ |
||||
abstract class RefreshLayoutAndThread extends Thread implements Runnable { |
||||
|
||||
private final static int THREAD_PERIOD = 1000; |
||||
public boolean pauseThread = false; |
||||
|
||||
Context context; |
||||
SharedPreferences prefs; |
||||
LinearLayout refreshLayout; |
||||
|
||||
////
|
||||
long lastProfileMod = 0; |
||||
TextView textDataMod; |
||||
TextView textUpload = null; |
||||
ProgressBar progress; |
||||
String sLastInfo = ""; |
||||
boolean stare = false; |
||||
|
||||
public RefreshLayoutAndThread(Context context) { |
||||
this.context = context; |
||||
prefs = PreferenceManager.getDefaultSharedPreferences(context); |
||||
|
||||
textUpload = new TextView(context); |
||||
textUpload.setPadding(20, 0, 20, 0); |
||||
} |
||||
|
||||
//protected abstract void reloadContent();
|
||||
protected abstract void whenThreadNeedToReaoad(); |
||||
protected abstract void setLastGPSInfo_abstr(); |
||||
protected void onServiceFinisz() { |
||||
|
||||
} |
||||
|
||||
public LinearLayout getRefreshLayout() { |
||||
refreshLayout = new LinearLayout(context); |
||||
|
||||
//LinearLayout refreshLayout = new LinearLayout(this);
|
||||
//filterL.addView(refreshLayout);
|
||||
|
||||
|
||||
|
||||
textDataMod = new TextView(context); |
||||
// = tw;
|
||||
textDataMod.setTextAppearance(context, R.style.OpisTextLista); |
||||
refreshLayout.addView(textDataMod); |
||||
|
||||
progress = new ProgressBar(context); |
||||
progress.setProgress(50); |
||||
refreshLayout.addView(progress); |
||||
|
||||
|
||||
AsyncTask at = new AsyncTask() { |
||||
@Override |
||||
protected Object doInBackground(Object[] objects) { |
||||
File dLista = new File(prefs.getString("dir", "") + "/baza/lista.profil"); |
||||
if( dLista.isFile()){ |
||||
long lastMod = dLista.lastModified(); |
||||
lastProfileMod = lastMod; |
||||
setLastInfo(lastProfileMod); |
||||
} |
||||
return null; |
||||
} |
||||
}; |
||||
at.execute(); |
||||
|
||||
Button b = new Button(context); |
||||
b.setText("Odśwież"); |
||||
b.setOnClickListener(new View.OnClickListener() { |
||||
@Override |
||||
public void onClick(View v) { |
||||
pauseThread = false; |
||||
//Context context = getApplicationContext();
|
||||
|
||||
Alarm alarm = new Alarm(); |
||||
alarm.CancelAlarm(context); |
||||
alarm.SetAlarm(context); |
||||
|
||||
Intent service = new Intent(context, DedalService.class); |
||||
context.startService(service); |
||||
|
||||
//todo: temp commented
|
||||
//search = "";
|
||||
|
||||
//wyswietlListe();
|
||||
} |
||||
}); |
||||
|
||||
refreshLayout.addView(b); //refresh button
|
||||
|
||||
return refreshLayout; |
||||
} |
||||
|
||||
public TextView getTextUpload () { |
||||
return textUpload; |
||||
} |
||||
|
||||
@Override |
||||
public void run() { |
||||
// TODO Auto-generated method stub
|
||||
while( true){ |
||||
try { |
||||
Thread.sleep(THREAD_PERIOD); |
||||
if( pauseThread ) { |
||||
//Log.d("RefreshLayoutAndThread", "pause");
|
||||
} |
||||
else { |
||||
//Log.d("RefreshLayoutAndThread", "thread working");
|
||||
setLastGPSInfo_abstr(); |
||||
setLastUpdateInfo(); |
||||
setLastInfo(lastProfileMod); |
||||
|
||||
File dLista = new File(prefs.getString("dir", "") + "/baza/lista.profil"); |
||||
if (dLista.isFile()) { |
||||
long lastMod = dLista.lastModified(); |
||||
if (lastProfileMod != lastMod) { |
||||
lastProfileMod = lastMod; |
||||
// setLastInfo(lastProfileMod);
|
||||
//
|
||||
|
||||
textDataMod.post(new Runnable() { |
||||
@Override |
||||
public void run() { |
||||
|
||||
whenThreadNeedToReaoad(); |
||||
// ListActivity.this.recreate();
|
||||
//ListActivity.this.finish();
|
||||
} |
||||
}); |
||||
|
||||
} |
||||
} |
||||
} |
||||
} catch (InterruptedException e) { |
||||
Log.d("RefreshLayoutAndThread", "interrupted"); |
||||
break; |
||||
} |
||||
|
||||
} |
||||
|
||||
} |
||||
|
||||
private void setLastInfo(long lastProfileMod){ |
||||
//gps.isGPSEnabled
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
||||
Date d = new Date(lastProfileMod); |
||||
Date dCurrent = new Date(); |
||||
long c = dCurrent.getTime() - 60*60*1000; //godzina
|
||||
//Date dCurrent = new Date();
|
||||
// boolean stare = false;
|
||||
|
||||
if( lastProfileMod < c){ |
||||
// dawno nie było aktualizacji
|
||||
stare = true; |
||||
}else{ |
||||
stare = false; |
||||
} |
||||
|
||||
File dQ = new File(prefs.getString("dir", "") + "/queue"); |
||||
if( dQ.isDirectory() && dQ.list().length>0 ){ |
||||
//sAktualizacja = "Trwa pobieranie zleceń ("+dQ.list().length+")...";
|
||||
sLastInfo = "Trwa pobieranie zleceń ("+dQ.list().length+")... \nPoprzednia:" |
||||
+ sdf.format(d); |
||||
} |
||||
else { |
||||
//sAktualizacja = "";
|
||||
sLastInfo = "Ostatnia aktualizacja:\n"; |
||||
sLastInfo += sdf.format(d); |
||||
// sLastInfo += "\n" + sdf.format(c) + " stare: " + stare;
|
||||
} |
||||
|
||||
//sLastInfo = "Ostatnia akutalizacja:\n" + sdf.format(d);
|
||||
|
||||
textDataMod.post(new Runnable() { |
||||
@Override |
||||
public void run() { |
||||
textDataMod.setText(sLastInfo); |
||||
|
||||
if(stare) { |
||||
textDataMod.setBackgroundColor(Color.RED); |
||||
}else{ |
||||
|
||||
textDataMod.setBackgroundColor(Color.TRANSPARENT); |
||||
//textDataMod.setTextAppearance(context, R.style.OpisTextLista);
|
||||
//textDataMod.setTextAppearance();
|
||||
} |
||||
} |
||||
}); |
||||
|
||||
} |
||||
|
||||
|
||||
private int licznikUpdates=0; |
||||
private String sAktualizacja = ""; |
||||
|
||||
public void setLastUpdateInfo(){ |
||||
File fLockEnd = new File(prefs.getString("dir", "") + "/dedalsrv.lock"); |
||||
if( fLockEnd.exists()){ |
||||
|
||||
//sAktualizacja = "Aktualizacja\n zleceń ";// + kreciolek[licznikUpdates % 4];
|
||||
//licznikUpdates++;
|
||||
licznikUpdates=1; |
||||
}else{ |
||||
licznikUpdates = 0; |
||||
|
||||
// File d = new File(prefs.getString("dir", "") + "/queue");
|
||||
// if( d.isDirectory() && d.list().length>0 ){
|
||||
// sAktualizacja = "Trwa pobieranie zleceń ("+d.list().length+")...";
|
||||
// }
|
||||
// else {
|
||||
// sAktualizacja = "";
|
||||
// }
|
||||
} |
||||
sAktualizacja = ""; |
||||
|
||||
File fconn = new File(prefs.getString("dir", "") + "/dedalsrv.connection"); |
||||
if( fconn.exists()){ |
||||
sAktualizacja = "!";//Problem z połączeniem! VPN lub błędne hasło.";
|
||||
} |
||||
File fLockCon = new File(prefs.getString("dir", "") + "/dedalsrv.connection_password"); |
||||
if( fLockCon.exists()){ |
||||
sAktualizacja = "Zmien hasło, zlecenie NIE zapisane!"; |
||||
} |
||||
|
||||
File fConnectionStatus = new File(prefs.getString("dir", "") + "/dedal.status"); |
||||
if( fConnectionStatus.exists()){ |
||||
String msg = ""; |
||||
try { |
||||
FileInputStream fin = new FileInputStream(fConnectionStatus); |
||||
msg = ListActivity.readFile(fin); |
||||
}catch (Exception e){ |
||||
Log.e("ListActivity", e.getMessage(), e); |
||||
|
||||
} |
||||
sAktualizacja += msg; |
||||
} |
||||
|
||||
|
||||
File fLockLogin = new File(prefs.getString("dir", "") + "/dedalsrv.wrongLogin"); |
||||
if( fLockLogin.exists()){ |
||||
sAktualizacja = "Ustaw login i hasło. "; |
||||
if(fLockLogin.exists()){ |
||||
if( context instanceof ListActivity) { |
||||
ListActivity lA = (ListActivity)context; |
||||
fLockLogin.delete(); |
||||
Intent i = new Intent(lA, lA.getPreferActivity()); |
||||
lA.startActivityForResult(i, lA.SHOW_PREFERENCES); |
||||
} |
||||
} |
||||
} |
||||
|
||||
textUpload.post(new Runnable() { |
||||
@Override |
||||
public void run() { |
||||
textUpload.setText(sAktualizacja); |
||||
if( "".equals(sAktualizacja)){ |
||||
textUpload.setBackgroundColor(Color.parseColor("white")); |
||||
}else{ |
||||
textUpload.setBackgroundColor(Color.parseColor("yellow")); |
||||
} |
||||
if( licznikUpdates==0){ |
||||
if( progress.getVisibility() == View.VISIBLE ) { |
||||
onServiceFinisz(); |
||||
} |
||||
progress.setVisibility(View.INVISIBLE); |
||||
}else{ |
||||
progress.setVisibility(View.VISIBLE); |
||||
} |
||||
} |
||||
}); |
||||
} |
||||
} |
||||
@ -0,0 +1,817 @@
@@ -0,0 +1,817 @@
|
||||
package com.likesoft.mdedal; |
||||
|
||||
import java.io.BufferedReader; |
||||
import java.io.File; |
||||
import java.io.FileNotFoundException; |
||||
import java.io.FileOutputStream; |
||||
import java.io.FileReader; |
||||
import java.io.IOException; |
||||
import java.util.Date; |
||||
import java.util.Iterator; |
||||
|
||||
import org.json.JSONArray; |
||||
import org.json.JSONException; |
||||
import org.json.JSONObject; |
||||
|
||||
import com.likesoft.mdedal.gui.BorderTextView; |
||||
import com.likesoft.mdedal.gui.MTextView; |
||||
//import com.likesoft.mdedaltest.*;
|
||||
import com.likesoft.mdedaldemo.*; |
||||
|
||||
import android.app.Activity; |
||||
import android.content.ClipData; |
||||
import android.content.Context; |
||||
import android.content.Intent; |
||||
import android.content.SharedPreferences; |
||||
import android.graphics.Color; |
||||
import android.graphics.Point; |
||||
import android.os.Bundle; |
||||
import android.preference.PreferenceManager; |
||||
import android.view.Display; |
||||
//import android.util.Log;
|
||||
import android.view.DragEvent; |
||||
import android.view.MotionEvent; |
||||
import android.view.View; |
||||
import android.view.View.DragShadowBuilder; |
||||
import android.view.View.OnClickListener; |
||||
import android.view.View.OnDragListener; |
||||
import android.view.View.OnTouchListener; |
||||
import android.view.ViewGroup; |
||||
import android.widget.Button; |
||||
import android.widget.EditText; |
||||
import android.widget.GridView; |
||||
import android.widget.HorizontalScrollView; |
||||
import android.widget.LinearLayout; |
||||
import android.widget.RelativeLayout; |
||||
import android.widget.ScrollView; |
||||
import android.widget.TextView; |
||||
|
||||
public class TableHeadersActivity extends Activity { |
||||
|
||||
String id_profilu = null; |
||||
String nazwa_profilu = null; |
||||
LinearLayout lContent = null; |
||||
LinearLayout lContent_nieuzyte = null; |
||||
JSONArray jkolumny_all = null; |
||||
SharedPreferences prefs; |
||||
|
||||
@Override |
||||
protected void onCreate(Bundle savedInstanceState) { |
||||
super.onCreate(savedInstanceState); |
||||
Context context = getApplicationContext(); |
||||
prefs = PreferenceManager.getDefaultSharedPreferences(context); |
||||
Log.setFileName(prefs.getString("dir", "")); |
||||
Log.setEH(); |
||||
|
||||
Bundle extras = getIntent().getExtras(); |
||||
if (extras != null) { |
||||
id_profilu = extras.getString("id_profilu"); |
||||
} |
||||
|
||||
File dtemp1 = new File(prefs.getString("dir", "") + "/temp/widok_profil_temp_"+id_profilu+".json"); |
||||
dtemp1.delete(); |
||||
|
||||
loadjKolumny_all(); |
||||
|
||||
HorizontalScrollView lMainScroll = new HorizontalScrollView(this); |
||||
LinearLayout lMain = new LinearLayout(this); |
||||
|
||||
ScrollView vertScroll = new ScrollView(this); |
||||
lMainScroll.addView(vertScroll); |
||||
|
||||
vertScroll.addView(lMain); |
||||
lMain.setOrientation(LinearLayout.VERTICAL); |
||||
lMain.setOnDragListener(new MyDragListenerBack()); |
||||
|
||||
LinearLayout lHeader = new LinearLayout(this); |
||||
lHeader.setOrientation(LinearLayout.VERTICAL); |
||||
lMain.addView(lHeader); |
||||
|
||||
lContent = new LinearLayout(this); |
||||
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams( |
||||
LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); |
||||
|
||||
layoutParams.setMargins(0, 0, 0, 30); |
||||
lContent.setLayoutParams(layoutParams); |
||||
|
||||
Display display = getWindowManager().getDefaultDisplay(); |
||||
Point size = new Point(); |
||||
display.getSize(size); |
||||
int width = size.x; |
||||
|
||||
lContent.setMinimumWidth(width); |
||||
lMain.addView(lContent); |
||||
// lContent.setMinimumHeight(30);
|
||||
lContent.setBackgroundColor(Color.YELLOW); |
||||
lContent.setOnDragListener(new MyDragListener_move_end(Color.CYAN, Color.YELLOW)); |
||||
|
||||
//lContent.setLayoutParams(new LinearLayout.LayoutParams(300,600));
|
||||
|
||||
lContent_nieuzyte = new LinearLayout(this); |
||||
lMain.addView(lContent_nieuzyte); |
||||
lContent_nieuzyte.setMinimumHeight(55); |
||||
lContent_nieuzyte.setBackgroundColor(Color.DKGRAY); |
||||
lContent_nieuzyte.setOnDragListener(new MyDragListener_nieuzyte(Color.CYAN, Color.DKGRAY)); |
||||
lContent_nieuzyte.setLayoutParams(layoutParams); |
||||
|
||||
TextView tw = new TextView(this); |
||||
lHeader.addView(tw); |
||||
if( id_profilu == null ) { |
||||
|
||||
tw.setText("Nie wykryto id_profilu !"); |
||||
Log.d("my_debug", "nie wykryto profilu"); |
||||
setContentView(lMainScroll); |
||||
//setContentView(lMain);
|
||||
return ; |
||||
} |
||||
|
||||
//EditText et = new EditText(this);
|
||||
tw.setTextSize(20); |
||||
tw.setPadding(5,5,5,5); |
||||
tw.setText("Profil: "+nazwa_profilu); |
||||
|
||||
TextView tw_opis = new TextView(this); |
||||
lHeader.addView(tw_opis); |
||||
tw_opis.setPadding(5,5,5,15); |
||||
tw_opis.setText("Poniżej wyświetlona jest lista nagłówków z tabeli listy zleceń. Poniższy układ jest wczytywany dla profilu: "+nazwa_profilu+".\n" + |
||||
"Aby zmienić układ, naciśnij wybrany element, przytrzymaj a następnie przesuń w wybrane miejsce. \n" + |
||||
"Aby dany element nie był wyświetlany w tabeli zleceń, przesuń go na dolny szary pasek. \n" + |
||||
"Po zakończeniu ustawiania nagłówków, kliknij 'Zapisz układ'. Wtedy nastąpi wysłanie układu na serwer. \n" + |
||||
"Zostaniesz przekierowany na listę zleceń i należy poczekać aż lista przeładuje się z nowym układem.\n" + |
||||
"UWAGA: Zmiana nagłówków działa tylko w trybie online (wymaga aktywnego połączenia internetowego).\n" + |
||||
"Przycisk: 'Przywróć ustawienia domyślne' - skasuje ustawienia nagłówków i przywróci domyślny układ. \n" + |
||||
"\tPo naciśnięciu aplikacja przejdzie do listy zleceń. Należy poczekać aż system skomunikuje się z serwerem i przeładuję liste.\n" + |
||||
"Przycisk 'Cofnij zmiany' - skasuje aktualne ustawienie\n" + |
||||
"Przycisk 'Wyjdź' - skasuje aktualne ustawienie i wyjdzie do listy zleceń"); |
||||
|
||||
|
||||
//////////
|
||||
|
||||
drawContent(); |
||||
|
||||
LinearLayout footer = new LinearLayout(this); |
||||
footer.setOrientation(LinearLayout.HORIZONTAL); |
||||
lMain.addView(footer); |
||||
|
||||
Button zapisz = new Button(this); |
||||
zapisz.setText("Zapisz układ"); |
||||
zapisz.setOnClickListener(new OnClickListener() { |
||||
@Override |
||||
public void onClick(View v) { |
||||
Date d = new Date(); |
||||
String genName = "widok_profil_"+d.getTime() + ".mod"; |
||||
File dstDir = new File(prefs.getString("dir", "") + "/upload_widok_profil_mod"); |
||||
if( !dstDir.isDirectory()){ dstDir.mkdirs(); } |
||||
File fMod = new File(prefs.getString("dir", "") + "/upload_widok_profil_mod/" + genName); |
||||
|
||||
File dtemp = new File(prefs.getString("dir", "") + "/temp/widok_profil_temp_"+id_profilu+".json"); |
||||
if ( dtemp.exists() ) { |
||||
JSONObject jFile; |
||||
try { |
||||
String s = DedalHelper.getFileContent(dtemp.getAbsolutePath()); |
||||
jFile = new JSONObject(s); |
||||
jFile.put("id_profilu", id_profilu); |
||||
DedalHelper.putFileContent(dtemp.getAbsolutePath(), jFile.toString()); |
||||
} catch (JSONException e) { |
||||
Log.e("TableHeadersActivity", "", e); |
||||
} |
||||
} |
||||
|
||||
// wystartuj/obudz serwis
|
||||
Context context = getApplicationContext(); |
||||
Intent service = new Intent(context, DedalService.class); |
||||
context.startService(service); |
||||
|
||||
finish(); |
||||
|
||||
} |
||||
}); |
||||
footer.addView(zapisz); |
||||
|
||||
Button przywroc = new Button(this); |
||||
przywroc.setText("Przywróć domyślny układ nagłówków"); |
||||
przywroc.setOnClickListener(new OnClickListener() { |
||||
@Override |
||||
public void onClick(View v) { |
||||
try { |
||||
File dtemp1 = new File(prefs.getString("dir", "") + "/temp/widok_profil_temp_"+id_profilu+".json"); |
||||
dtemp1.delete(); |
||||
|
||||
JSONObject jF = new JSONObject(); |
||||
jF.put("id_profilu", id_profilu); |
||||
jF.put("reset", "true"); |
||||
|
||||
Date d = new Date(); |
||||
String genName = "widok_profil_"+d.getTime() + ".mod"; |
||||
DedalHelper.putFileContent(prefs.getString("dir", "") + "/upload_widok_profil_mod/" + genName, jF.toString()); |
||||
} catch (JSONException e) { |
||||
//e.printStackTrace();
|
||||
Log.e("TableHeadersActivity", "", e); |
||||
} |
||||
|
||||
// wystartuj/obudz serwis
|
||||
Context context = getApplicationContext(); |
||||
Intent service = new Intent(context, DedalService.class); |
||||
context.startService(service); |
||||
|
||||
finish(); |
||||
} |
||||
}); |
||||
footer.addView(przywroc); |
||||
|
||||
Button clear = new Button(this); |
||||
clear.setText("Cofnij zmiany"); |
||||
clear.setOnClickListener(new OnClickListener() { |
||||
@Override |
||||
public void onClick(View v) { |
||||
File dtemp1 = new File(prefs.getString("dir", "") + "/temp/widok_profil_temp_"+id_profilu+".json"); |
||||
dtemp1.delete(); |
||||
|
||||
TableHeadersActivity.this.recreate(); |
||||
} |
||||
}); |
||||
footer.addView(clear); |
||||
|
||||
Button wyjdz = new Button(this); |
||||
wyjdz.setText("Wyjdź"); |
||||
wyjdz.setOnClickListener(new OnClickListener() { |
||||
@Override |
||||
public void onClick(View v) { |
||||
File dtemp1 = new File(prefs.getString("dir", "") + "/temp/widok_profil_temp_"+id_profilu+".json"); |
||||
dtemp1.delete(); |
||||
//TableHeadersActivity.this.recreate();
|
||||
finish(); |
||||
//drawContent();
|
||||
} |
||||
}); |
||||
footer.addView(wyjdz); |
||||
|
||||
setContentView(lMainScroll); |
||||
|
||||
this.setTitle("Zarządzanie nagłówkami tabeli"); |
||||
} |
||||
|
||||
private void loadjKolumny_all() { |
||||
BufferedReader buf; |
||||
File dLista = new File(prefs.getString("dir", "") + "/baza/lista.profil"); |
||||
|
||||
|
||||
JSONObject jFile; |
||||
try { |
||||
|
||||
String sJson = DedalHelper.getFileContent(dLista.getAbsolutePath()); |
||||
jFile = new JSONObject(sJson); |
||||
|
||||
JSONObject jProfiles = jFile.getJSONObject("profile"); |
||||
JSONObject jProfil = jProfiles.getJSONObject(id_profilu); |
||||
nazwa_profilu = jProfil.getString("nazwa_profilu"); |
||||
JSONArray jKolumny_uzyte = jProfil.getJSONArray("profil_kolumny"); |
||||
//if( jProfil.has("kolumny_nieuzyte") && !jProfil.getString("kolumny_nieuzyte").equals("null") && jProfil.getJSONArray("kolumny_nieuzyte") != null ) {
|
||||
JSONArray jKolumny_nieuzyte = jProfil.getJSONArray("kolumny_nieuzyte"); |
||||
jkolumny_all = new JSONArray(jKolumny_uzyte.toString()); |
||||
if( jKolumny_nieuzyte != null && jKolumny_nieuzyte.length() > 0 ) { |
||||
for( int i = 0 ; i < jKolumny_nieuzyte.length() ; i++ ) { |
||||
jkolumny_all.put( jKolumny_nieuzyte.getJSONObject(i) ); |
||||
} |
||||
} |
||||
//}
|
||||
//Log.d("my_debug", "jkolumny_all: "+jkolumny_all.toString());
|
||||
} catch (JSONException e) { |
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace(); |
||||
Log.e("DEDAL", "blad parsowania lista.profil", e); |
||||
} |
||||
|
||||
|
||||
|
||||
} |
||||
|
||||
private void drawContent() { |
||||
try { |
||||
//lContent = null;
|
||||
lContent.removeAllViews(); |
||||
BufferedReader buf; |
||||
JSONArray jKolumny = null; |
||||
File dtemp = new File(prefs.getString("dir", "") + "/temp/widok_profil_temp_"+id_profilu+".json"); |
||||
if ( dtemp.exists() ) { |
||||
String sJson = DedalHelper.getFileContent(dtemp.getAbsolutePath()); |
||||
JSONObject jFile = new JSONObject(sJson); |
||||
jKolumny = jFile.getJSONArray("profil_kolumny"); |
||||
Log.d("my_debug", "1: "+jKolumny.toString()); |
||||
} |
||||
else { |
||||
File dLista = new File(prefs.getString("dir", "") + "/baza/lista.profil"); |
||||
String sJson = DedalHelper.getFileContent(dLista.getAbsolutePath()); |
||||
|
||||
JSONObject jFile = new JSONObject(sJson); |
||||
|
||||
JSONObject jProfiles = jFile.getJSONObject("profile"); |
||||
JSONObject jProfil = jProfiles.getJSONObject(id_profilu); |
||||
jKolumny = jProfil.getJSONArray("profil_kolumny"); |
||||
|
||||
} |
||||
int k = 0; |
||||
for( k = 0; k < jKolumny.length(); k++) |
||||
{ |
||||
BorderTextView mtw = new BorderTextView(this); |
||||
|
||||
// RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
|
||||
// params.addRule(RelativeLayout.ALIGN_PARENT_LEFT, RelativeLayout.TRUE);
|
||||
// mtw.setLayoutParams(params);
|
||||
|
||||
mtw.setTextAppearance(this, R.style.OpisText); |
||||
mtw.setPadding(15, 15, 15, 15); |
||||
String kod = jKolumny.getJSONObject(k).getString("kod"); |
||||
mtw.setCode(kod); |
||||
mtw.setId(k); |
||||
String nazwa = jKolumny.getJSONObject(k).getString("nazwa"); |
||||
mtw.setText(nazwa); |
||||
//tw.setBackgroundColor(Color.parseColor("#AFA5F0"));// #FAFAD2
|
||||
//mtw.setPadding(5, 3, 5, 2);
|
||||
// tw.setTextSize(TypedValue.COMPLEX_UNIT_MM, 5);
|
||||
mtw.setBackgroundColor(Color.GREEN); |
||||
|
||||
mtw.setOnTouchListener(new MyTouchListener()); |
||||
mtw.setOnDragListener(new MyDragListener(Color.CYAN, Color.GREEN)); |
||||
|
||||
lContent.addView(mtw); |
||||
} |
||||
TextView tw_end = new TextView(this); |
||||
tw_end.setPadding(0, 18, 0, 18); |
||||
tw_end.setText(" "); |
||||
tw_end.setWidth(150); |
||||
lContent.addView(tw_end); |
||||
|
||||
lContent_nieuzyte.removeAllViews(); |
||||
Log.d("my_debug", "Ajkolumny_all: "+jkolumny_all.toString()); |
||||
boolean cont = false; |
||||
for( int m=0; m < jkolumny_all.length(); m++) |
||||
{ |
||||
cont = false; |
||||
// sprawdz czy jest używany
|
||||
for( int l=0; l< jKolumny.length(); l++) |
||||
{ |
||||
//Log.d("my_debug", "uzyty: "+jKolumny.getJSONObject(l).getString("kod")+", all: "+jkolumny_all.getJSONObject(k).getString("kod"));
|
||||
if( jKolumny.getJSONObject(l).getString("kod").equals(jkolumny_all.getJSONObject(m).getString("kod")) ) { |
||||
cont = true; |
||||
break; |
||||
} |
||||
} |
||||
if( cont ) { |
||||
continue; |
||||
} |
||||
|
||||
BorderTextView mtw = new BorderTextView(this); |
||||
mtw.setTextAppearance(this, R.style.OpisText); |
||||
mtw.setPadding(15, 15, 15, 15); |
||||
String kod = jkolumny_all.getJSONObject(m).getString("kod"); |
||||
mtw.setCode(kod); |
||||
k++; |
||||
mtw.setId(k); |
||||
String nazwa = jkolumny_all.getJSONObject(m).getString("nazwa"); |
||||
mtw.setText(nazwa); |
||||
mtw.setBackgroundColor(Color.RED); |
||||
|
||||
mtw.setOnTouchListener(new MyTouchListener()); |
||||
//mtw.setOnDragListener(new MyDragListener());
|
||||
lContent_nieuzyte.addView(mtw); |
||||
} |
||||
|
||||
} catch (JSONException e) { |
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace(); |
||||
} |
||||
} |
||||
|
||||
class MyDragListenerBack implements OnDragListener { |
||||
|
||||
@Override |
||||
public boolean onDrag(View onDropEl, DragEvent event) { |
||||
int action = event.getAction(); |
||||
View movingEl = (View) event.getLocalState(); |
||||
switch (event.getAction()) { |
||||
case DragEvent.ACTION_DRAG_STARTED: |
||||
// do nothing
|
||||
break; |
||||
case DragEvent.ACTION_DRAG_ENTERED: |
||||
//v.setBackgroundDrawable(enterShape);
|
||||
//onDropEl.setBackgroundColor(Color.GRAY);
|
||||
break; |
||||
case DragEvent.ACTION_DRAG_EXITED: |
||||
//v.setBackgroundDrawable(normalShape);
|
||||
//onDropEl.setBackgroundColor(Color.RED);
|
||||
break; |
||||
case DragEvent.ACTION_DROP: |
||||
// Dropped, reassign View to ViewGroup
|
||||
movingEl.setVisibility(View.VISIBLE); |
||||
movingEl.setAlpha(1); |
||||
break; |
||||
case DragEvent.ACTION_DRAG_ENDED: |
||||
//v.setBackgroundDrawable(normalShape);
|
||||
default: |
||||
break; |
||||
} |
||||
return true; |
||||
} |
||||
|
||||
} |
||||
|
||||
class MyDragListener implements OnDragListener { |
||||
|
||||
int color_entered = 0; |
||||
int color_exited = 0; |
||||
|
||||
public MyDragListener(int color_entered, int color_exited) { |
||||
this.color_entered = color_entered; |
||||
this.color_exited = color_exited; |
||||
} |
||||
|
||||
@Override |
||||
public boolean onDrag(View onDropEl, DragEvent event) { |
||||
int action = event.getAction(); |
||||
View movingEl = (View) event.getLocalState(); |
||||
|
||||
int id_moving = movingEl.getId(); |
||||
int id_drop = onDropEl.getId(); |
||||
|
||||
|
||||
|
||||
int side = Math.round(event.getX() - onDropEl.getMeasuredWidth() / 2 ); // side < 0 uposzczone po lewej stronie elementu, side > 0 upuszczone po prawej stronie
|
||||
switch (event.getAction()) { |
||||
case DragEvent.ACTION_DRAG_STARTED: |
||||
// do nothing
|
||||
break; |
||||
case DragEvent.ACTION_DRAG_ENTERED: |
||||
//v.setBackgroundDrawable(enterShape);
|
||||
|
||||
onDropEl.setBackgroundColor(color_entered); |
||||
break; |
||||
case DragEvent.ACTION_DRAG_EXITED: |
||||
//v.setBackgroundDrawable(normalShape);
|
||||
onDropEl.setBackgroundColor(color_exited); |
||||
break; |
||||
case DragEvent.ACTION_DROP: |
||||
// Dropped, reassign View to ViewGroup
|
||||
|
||||
if( id_moving == id_drop ) { |
||||
movingEl.setAlpha(1); |
||||
movingEl.setBackgroundColor(color_exited); |
||||
break; |
||||
} |
||||
|
||||
JSONObject jmain = new JSONObject(); |
||||
JSONArray jprofil = new JSONArray(); |
||||
// create Json
|
||||
|
||||
// float x = event.getX();
|
||||
// float y = event.getY();
|
||||
|
||||
|
||||
Log.d("my_debug", "side: "+side); |
||||
|
||||
|
||||
try { |
||||
for (int i = 0 ; i < 200 ; i++ ) { |
||||
MTextView v = (MTextView)TableHeadersActivity.this.findViewById(i); |
||||
if ( v == null) { |
||||
break; |
||||
} |
||||
if( i == id_drop || i == id_moving) { |
||||
//if( id_drop < id_moving ) {
|
||||
if( i == id_drop ) { |
||||
//i = id_moving;
|
||||
MTextView v_temp = null; |
||||
JSONObject jcurr = null; |
||||
if(side >= 0 ) { |
||||
|
||||
v_temp = (MTextView)TableHeadersActivity.this.findViewById(id_drop); |
||||
jcurr = new JSONObject(); |
||||
jcurr.put("kod", v_temp.getCode()); |
||||
jcurr.put("nazwa", v_temp.getText()); |
||||
jprofil.put(jcurr); |
||||
|
||||
v_temp = (MTextView)TableHeadersActivity.this.findViewById(id_moving); |
||||
if( v_temp != null ) { |
||||
jcurr = new JSONObject(); |
||||
jcurr.put("kod", v_temp.getCode()); |
||||
jcurr.put("nazwa", v_temp.getText()); |
||||
jprofil.put(jcurr); |
||||
} |
||||
} |
||||
else { |
||||
v_temp = (MTextView)TableHeadersActivity.this.findViewById(id_moving); |
||||
if( v_temp != null ) { |
||||
jcurr = new JSONObject(); |
||||
jcurr.put("kod", v_temp.getCode()); |
||||
jcurr.put("nazwa", v_temp.getText()); |
||||
jprofil.put(jcurr); |
||||
} |
||||
|
||||
v_temp = (MTextView)TableHeadersActivity.this.findViewById(id_drop); |
||||
jcurr = new JSONObject(); |
||||
jcurr.put("kod", v_temp.getCode()); |
||||
jcurr.put("nazwa", v_temp.getText()); |
||||
jprofil.put(jcurr); |
||||
} |
||||
} |
||||
if( i == id_moving ) { |
||||
continue; |
||||
} |
||||
} |
||||
else { |
||||
JSONObject jcurr = new JSONObject(); |
||||
|
||||
jcurr.put("kod", v.getCode()); |
||||
jcurr.put("nazwa", v.getText()); |
||||
jprofil.put(jcurr); |
||||
} |
||||
} |
||||
|
||||
jmain.put("profil_kolumny", jprofil); |
||||
} catch (JSONException e) { |
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace(); |
||||
} |
||||
|
||||
onDropEl.setBackgroundColor(Color.DKGRAY); |
||||
movingEl.setVisibility(View.VISIBLE); |
||||
|
||||
String genName = "widok_profil_temp_"+id_profilu+".json"; |
||||
File dstDir = new File(prefs.getString("dir", "") + "/temp"); |
||||
if( !dstDir.isDirectory()){ dstDir.mkdirs(); } |
||||
File fMod = new File(prefs.getString("dir", "") + "/temp/" + genName); |
||||
FileOutputStream fos; |
||||
try { |
||||
fos = new FileOutputStream(fMod); |
||||
fos.write(jmain.toString().getBytes()); |
||||
fos.flush(); |
||||
fos.close(); |
||||
} catch (FileNotFoundException e) { |
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace(); |
||||
} catch (IOException e) { |
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace(); |
||||
} |
||||
//TableHeadersActivity.this.recreate();
|
||||
drawContent(); |
||||
|
||||
break; |
||||
case DragEvent.ACTION_DRAG_ENDED: |
||||
//v.setBackgroundDrawable(normalShape);
|
||||
default: |
||||
break; |
||||
} |
||||
return true; |
||||
} |
||||
|
||||
} |
||||
|
||||
class MyDragListener_move_end implements OnDragListener { |
||||
|
||||
//nieużywane
|
||||
int color_entered = 0; |
||||
int color_exited = 0; |
||||
|
||||
public MyDragListener_move_end(int color_entered, int color_exited) { |
||||
this.color_entered = color_entered; |
||||
this.color_exited = color_exited; |
||||
} |
||||
|
||||
@Override |
||||
public boolean onDrag(View onDropEl, DragEvent event) { |
||||
int action = event.getAction(); |
||||
View movingEl = (View) event.getLocalState(); |
||||
|
||||
//int side = Math.round(event.getX() - onDropEl.getMeasuredWidth() / 2 ); // side < 0 uposzczone po lewej stronie elementu, side > 0 upuszczone po prawej stronie
|
||||
switch (event.getAction()) { |
||||
case DragEvent.ACTION_DRAG_STARTED: |
||||
// do nothing
|
||||
break; |
||||
case DragEvent.ACTION_DRAG_ENTERED: |
||||
//v.setBackgroundDrawable(enterShape);
|
||||
//onDropEl.setBackgroundColor(color_entered);
|
||||
break; |
||||
case DragEvent.ACTION_DRAG_EXITED: |
||||
//v.setBackgroundDrawable(normalShape);
|
||||
//onDropEl.setBackgroundColor(color_exited);
|
||||
break; |
||||
case DragEvent.ACTION_DROP: |
||||
// Dropped, reassign View to ViewGroup
|
||||
|
||||
int id_moving = movingEl.getId(); |
||||
int id_drop = onDropEl.getId(); |
||||
|
||||
JSONObject jmain = new JSONObject(); |
||||
JSONArray jprofil = new JSONArray(); |
||||
// create Json
|
||||
|
||||
// float x = event.getX();
|
||||
// float y = event.getY();
|
||||
|
||||
|
||||
//Log.d("my_debug", "side: "+side);
|
||||
|
||||
|
||||
try { |
||||
for (int i = 0 ; i < 200 ; i++ ) { |
||||
MTextView v = (MTextView)TableHeadersActivity.this.findViewById(i); |
||||
if ( v == null) { |
||||
break; |
||||
} |
||||
|
||||
if( i == id_moving ) { |
||||
continue; |
||||
} |
||||
else { |
||||
JSONObject jcurr = new JSONObject(); |
||||
|
||||
jcurr.put("kod", v.getCode()); |
||||
jcurr.put("nazwa", v.getText()); |
||||
jprofil.put(jcurr); |
||||
} |
||||
} |
||||
MTextView v_temp = null; |
||||
JSONObject jcurr = null; |
||||
v_temp = (MTextView)TableHeadersActivity.this.findViewById(id_moving); |
||||
if( v_temp != null ) { |
||||
jcurr = new JSONObject(); |
||||
jcurr.put("kod", v_temp.getCode()); |
||||
jcurr.put("nazwa", v_temp.getText()); |
||||
jprofil.put(jcurr); |
||||
} |
||||
|
||||
jmain.put("profil_kolumny", jprofil); |
||||
} catch (JSONException e) { |
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace(); |
||||
} |
||||
|
||||
onDropEl.setBackgroundColor(Color.YELLOW); |
||||
movingEl.setVisibility(View.VISIBLE); |
||||
|
||||
String genName = "widok_profil_temp_"+id_profilu+".json"; |
||||
File dstDir = new File(prefs.getString("dir", "") + "/temp"); |
||||
if( !dstDir.isDirectory()){ dstDir.mkdirs(); } |
||||
File fMod = new File(prefs.getString("dir", "") + "/temp/" + genName); |
||||
FileOutputStream fos; |
||||
try { |
||||
fos = new FileOutputStream(fMod); |
||||
fos.write(jmain.toString().getBytes()); |
||||
fos.flush(); |
||||
fos.close(); |
||||
} catch (FileNotFoundException e) { |
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace(); |
||||
} catch (IOException e) { |
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace(); |
||||
} |
||||
//TableHeadersActivity.this.recreate();
|
||||
drawContent(); |
||||
|
||||
break; |
||||
case DragEvent.ACTION_DRAG_ENDED: |
||||
//v.setBackgroundDrawable(normalShape);
|
||||
default: |
||||
break; |
||||
} |
||||
return true; |
||||
} |
||||
|
||||
} |
||||
|
||||
class MyDragListener_nieuzyte implements OnDragListener { |
||||
|
||||
int color_entered = 0; |
||||
int color_exited = 0; |
||||
|
||||
public MyDragListener_nieuzyte(int color_entered, int color_exited) { |
||||
this.color_entered = color_entered; |
||||
this.color_exited = color_exited; |
||||
} |
||||
|
||||
@Override |
||||
public boolean onDrag(View onDropEl, DragEvent event) { |
||||
int action = event.getAction(); |
||||
View movingEl = (View) event.getLocalState(); |
||||
switch (event.getAction()) { |
||||
case DragEvent.ACTION_DRAG_STARTED: |
||||
// do nothing
|
||||
break; |
||||
case DragEvent.ACTION_DRAG_ENTERED: |
||||
//v.setBackgroundDrawable(enterShape);
|
||||
onDropEl.setBackgroundColor(color_entered); |
||||
break; |
||||
case DragEvent.ACTION_DRAG_EXITED: |
||||
//v.setBackgroundDrawable(normalShape);
|
||||
onDropEl.setBackgroundColor(color_exited); |
||||
break; |
||||
case DragEvent.ACTION_DROP: |
||||
// Dropped, reassign View to ViewGroup
|
||||
|
||||
int id_moving = movingEl.getId(); |
||||
int id_drop = onDropEl.getId(); |
||||
|
||||
JSONObject jmain = new JSONObject(); |
||||
JSONArray jprofil = new JSONArray(); |
||||
// create Json
|
||||
try { |
||||
for (int i = 0 ; i < 200 ; i++ ) { |
||||
MTextView v = (MTextView)TableHeadersActivity.this.findViewById(i); |
||||
if ( v == null) { |
||||
break; |
||||
} |
||||
if( i == id_drop || i == id_moving) { |
||||
//if( id_drop < id_moving ) {
|
||||
if( i == id_drop ) { |
||||
//i = id_moving;
|
||||
MTextView v_temp = null; |
||||
JSONObject jcurr = null; |
||||
v_temp = (MTextView)TableHeadersActivity.this.findViewById(id_drop); |
||||
jcurr = new JSONObject(); |
||||
jcurr.put("kod", v_temp.getCode()); |
||||
jcurr.put("nazwa", v_temp.getText()); |
||||
jprofil.put(jcurr); |
||||
|
||||
v_temp = (MTextView)TableHeadersActivity.this.findViewById(id_moving); |
||||
if( v_temp != null ) { |
||||
jcurr = new JSONObject(); |
||||
jcurr.put("kod", v_temp.getCode()); |
||||
jcurr.put("nazwa", v_temp.getText()); |
||||
jprofil.put(jcurr); |
||||
} |
||||
} |
||||
if( i == id_moving ) { |
||||
continue; |
||||
} |
||||
} |
||||
else { |
||||
JSONObject jcurr = new JSONObject(); |
||||
|
||||
jcurr.put("kod", v.getCode()); |
||||
jcurr.put("nazwa", v.getText()); |
||||
jprofil.put(jcurr); |
||||
} |
||||
} |
||||
|
||||
jmain.put("profil_kolumny", jprofil); |
||||
} catch (JSONException e) { |
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace(); |
||||
} |
||||
|
||||
onDropEl.setBackgroundColor(Color.DKGRAY); |
||||
movingEl.setVisibility(View.VISIBLE); |
||||
|
||||
String genName = "widok_profil_temp_"+id_profilu+".json"; |
||||
File dstDir = new File(prefs.getString("dir", "") + "/temp"); |
||||
if( !dstDir.isDirectory()){ dstDir.mkdirs(); } |
||||
File fMod = new File(prefs.getString("dir", "") + "/temp/" + genName); |
||||
FileOutputStream fos; |
||||
try { |
||||
fos = new FileOutputStream(fMod); |
||||
fos.write(jmain.toString().getBytes()); |
||||
fos.flush(); |
||||
fos.close(); |
||||
} catch (FileNotFoundException e) { |
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace(); |
||||
} catch (IOException e) { |
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace(); |
||||
} |
||||
//TableHeadersActivity.this.recreate();
|
||||
drawContent(); |
||||
|
||||
break; |
||||
case DragEvent.ACTION_DRAG_ENDED: |
||||
//v.setBackgroundDrawable(normalShape);
|
||||
default: |
||||
break; |
||||
} |
||||
return true; |
||||
} |
||||
|
||||
} |
||||
|
||||
private final class MyTouchListener implements OnTouchListener { |
||||
|
||||
@Override |
||||
public boolean onTouch(View view, MotionEvent motionEvent) { |
||||
if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) { |
||||
ClipData data = ClipData.newPlainText("", ""); |
||||
DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(view); |
||||
view.startDrag(data, shadowBuilder, view, 0); |
||||
//int alpha = 0;
|
||||
//((TextView) view).setTextColor(Color.argb(alpha, 255, 0, 0));
|
||||
view.setAlpha((float)0.3); |
||||
//view.setBackgroundColor(Color.YELLOW);
|
||||
//view.setVisibility(View.INVISIBLE);
|
||||
return true; |
||||
} else { |
||||
return false; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
@ -0,0 +1,99 @@
@@ -0,0 +1,99 @@
|
||||
package com.likesoft.mdedal; |
||||
|
||||
import android.app.Activity; |
||||
import android.app.Dialog; |
||||
import android.app.DialogFragment; |
||||
import android.app.TimePickerDialog; |
||||
import android.content.Intent; |
||||
import android.os.Bundle; |
||||
import android.widget.TextView; |
||||
import android.widget.TimePicker; |
||||
import android.widget.Toast; |
||||
|
||||
import java.text.ParseException; |
||||
import java.text.SimpleDateFormat; |
||||
import java.util.Calendar; |
||||
import java.util.GregorianCalendar; |
||||
|
||||
/** |
||||
* Created by Kamil on 2016-05-12. |
||||
*/ |
||||
public class TimePickerFragment extends DialogFragment implements TimePickerDialog.OnTimeSetListener { |
||||
|
||||
public Integer nr_zlecenia; |
||||
public Activity act; |
||||
public String data_walidacja_do = null; |
||||
public TextView tv = null; |
||||
public Calendar setDate = null; |
||||
|
||||
@Override |
||||
public Dialog onCreateDialog(Bundle savedInstanceState) { |
||||
// Use the current date as the default date in the picker
|
||||
final Calendar c = Calendar.getInstance(); |
||||
int hour = c.get(Calendar.HOUR_OF_DAY); |
||||
int minute = c.get(Calendar.MINUTE); |
||||
//int day = c.get(Calendar.DAY_OF_MONTH);
|
||||
|
||||
// Create a new instance of DatePickerDialog and return it
|
||||
return new TimePickerDialog(getActivity(), this, hour, minute, true); |
||||
} |
||||
|
||||
private static final String DATA_KOD = "nast_wizyta_data"; |
||||
|
||||
@Override |
||||
public void onTimeSet(TimePicker timePicker, int i, int i2) { |
||||
setDate.add(Calendar.HOUR, i); |
||||
setDate.add(Calendar.MINUTE, i2); |
||||
|
||||
// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
|
||||
// String date_string = sdf.format(setDate.getTime());
|
||||
|
||||
|
||||
Calendar c = setDate; //new GregorianCalendar(year, month, day);
|
||||
Calendar cToday = new GregorianCalendar(); |
||||
|
||||
Calendar data_walidacja_do_cal = null; |
||||
if( data_walidacja_do != null ) { |
||||
try { |
||||
data_walidacja_do_cal = Calendar.getInstance(); |
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); |
||||
data_walidacja_do_cal.setTime(sdf.parse(data_walidacja_do));// all done
|
||||
} catch (ParseException e) { |
||||
e.printStackTrace(); |
||||
} |
||||
} |
||||
|
||||
|
||||
if( cToday.compareTo(c)>0){ |
||||
Toast.makeText(act.getApplicationContext(), |
||||
"Nie można wybrać daty wstecznej dla wizyty nr: " + nr_zlecenia, |
||||
Toast.LENGTH_LONG).show(); |
||||
} |
||||
else if( data_walidacja_do_cal != null && c.compareTo(data_walidacja_do_cal)>0 ) { |
||||
Toast.makeText(act.getApplicationContext(), |
||||
"Nie można wybrać daty przekraczającej datę obsługi: " + data_walidacja_do, |
||||
Toast.LENGTH_LONG).show(); |
||||
} |
||||
else { |
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); |
||||
String cString = sdf.format(c.getTime()); |
||||
|
||||
AsyncCallChangeDate task = new AsyncCallChangeDate(act, nr_zlecenia + "", DATA_KOD, cString) { |
||||
@Override |
||||
protected void reloadContent() { |
||||
// drawContent();
|
||||
final Intent intent = new Intent(); |
||||
intent.setAction("blah"); |
||||
getActivity().sendBroadcast(intent); |
||||
dismiss(); |
||||
} |
||||
|
||||
@Override |
||||
public void loadInputs() { |
||||
// loadJsons();
|
||||
} |
||||
}; // week_day_dates[id_drop]);
|
||||
task.execute(); |
||||
} |
||||
} |
||||
} |
||||
@ -0,0 +1,45 @@
@@ -0,0 +1,45 @@
|
||||
package com.likesoft.mdedal.gui; |
||||
|
||||
import android.content.Context; |
||||
import android.graphics.Canvas; |
||||
import android.graphics.Color; |
||||
import android.graphics.Paint; |
||||
import android.widget.LinearLayout; |
||||
|
||||
/** |
||||
* Created by Kamil on 2016-01-23. |
||||
*/ |
||||
public class BorderLinearLayout extends LinearLayout { |
||||
|
||||
int color; |
||||
|
||||
public BorderLinearLayout(Context context) { |
||||
super(context); |
||||
this.color = Color.BLACK; |
||||
//setPadding(5, 3, 5, 3);
|
||||
setWillNotDraw(false) ; |
||||
|
||||
} |
||||
public BorderLinearLayout(Context context, int color) { |
||||
super(context); |
||||
// TODO Auto-generated constructor stub
|
||||
this.color = color; |
||||
//setPadding(5, 3, 5, 3);
|
||||
setWillNotDraw(false) ; |
||||
} |
||||
@Override |
||||
protected void onDraw(Canvas canvas) { |
||||
// TODO Auto-generated method stub
|
||||
super.onDraw(canvas); |
||||
|
||||
int bottom = getMeasuredHeight()-1; |
||||
int right = getMeasuredWidth()-1; |
||||
Paint paint = new Paint(); |
||||
paint.setColor(color); |
||||
canvas.drawLine(1, 0, 1, bottom, paint); |
||||
canvas.drawLine(0, bottom, right, bottom, paint); |
||||
canvas.drawLine(right, bottom, right, 0, paint); |
||||
canvas.drawLine(right, 0, 0, 0, paint); |
||||
//canvas.drawRect(0, 0, right, bottom, paint);
|
||||
} |
||||
} |
||||
@ -0,0 +1,38 @@
@@ -0,0 +1,38 @@
|
||||
package com.likesoft.mdedal.gui; |
||||
|
||||
import android.content.Context; |
||||
import android.graphics.Canvas; |
||||
import android.graphics.Color; |
||||
import android.graphics.Paint; |
||||
import android.widget.TableRow; |
||||
import android.widget.TextView; |
||||
|
||||
import com.likesoft.mdedal.R; |
||||
|
||||
|
||||
public class BorderTextView extends MTextView { |
||||
|
||||
public BorderTextView(Context context) { |
||||
super(context); |
||||
// TODO Auto-generated constructor stub
|
||||
setPadding(5, 3, 5, 3); |
||||
setTextAppearance(context, R.style.OpisText); |
||||
// setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.WRAP_CONTENT));
|
||||
} |
||||
@Override |
||||
protected void onDraw(Canvas canvas) { |
||||
// TODO Auto-generated method stub
|
||||
super.onDraw(canvas); |
||||
|
||||
int bottom = getMeasuredHeight()-1; |
||||
int right = getMeasuredWidth()-1; |
||||
Paint paint = new Paint(); |
||||
paint.setColor(Color.BLACK); |
||||
canvas.drawLine(1, 0, 1, bottom, paint); |
||||
canvas.drawLine(0, bottom, right, bottom, paint); |
||||
canvas.drawLine(right, bottom, right, 0, paint); |
||||
canvas.drawLine(right, 0, 0, 0, paint); |
||||
//canvas.drawRect(0, 0, right, bottom, paint);
|
||||
} |
||||
|
||||
} |
||||
@ -0,0 +1,20 @@
@@ -0,0 +1,20 @@
|
||||
package com.likesoft.mdedal.gui; |
||||
|
||||
import android.content.Context; |
||||
import android.widget.Button; |
||||
import android.widget.EditText; |
||||
|
||||
public class ButtonDate extends Button { |
||||
private int edId; |
||||
public int getEdId() { |
||||
return edId; |
||||
} |
||||
public void setEdId(int edId) { |
||||
this.edId = edId; |
||||
} |
||||
public ButtonDate(Context context) { |
||||
super(context); |
||||
// TODO Auto-generated constructor stub
|
||||
} |
||||
|
||||
} |
||||
@ -0,0 +1,28 @@
@@ -0,0 +1,28 @@
|
||||
package com.likesoft.mdedal.gui; |
||||
|
||||
import android.content.Context; |
||||
import android.graphics.Canvas; |
||||
import android.graphics.Color; |
||||
import android.graphics.Paint; |
||||
import android.widget.LinearLayout; |
||||
import android.widget.RelativeLayout; |
||||
|
||||
public class MLinearLayout extends LinearLayout { |
||||
|
||||
@Override |
||||
protected void onDraw(Canvas canvas) { |
||||
// TODO Auto-generated method stub
|
||||
super.onDraw(canvas); |
||||
|
||||
int height = getMeasuredHeight(); |
||||
Paint paint = new Paint(); |
||||
paint.setColor(Color.BLUE); |
||||
canvas.drawLine(0, 0, 0, height, paint); |
||||
} |
||||
|
||||
public MLinearLayout(Context context) { |
||||
super(context); |
||||
// TODO Auto-generated constructor stub
|
||||
} |
||||
|
||||
} |
||||
@ -0,0 +1,25 @@
@@ -0,0 +1,25 @@
|
||||
package com.likesoft.mdedal.gui; |
||||
|
||||
import android.content.Context; |
||||
import android.view.ViewGroup; |
||||
import android.widget.TextView; |
||||
|
||||
|
||||
public class MTextView extends TextView { |
||||
private String code; |
||||
public MTextView(Context context) { |
||||
super(context); |
||||
// TODO Auto-generated constructor stub
|
||||
// this.setMinWidth(60);
|
||||
// this.setMinimumWidth(120);
|
||||
// setLayoutParams(new ViewGroup.LayoutParams(
|
||||
// ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
|
||||
} |
||||
public String getCode() { |
||||
return code; |
||||
} |
||||
public void setCode(String code) { |
||||
this.code = code; |
||||
} |
||||
|
||||
} |
||||
@ -0,0 +1,7 @@
@@ -0,0 +1,7 @@
|
||||
package com.likesoft.mdedaldemo; |
||||
|
||||
/** |
||||
* Created by darek on 2015-12-08. |
||||
*/ |
||||
public class test { |
||||
} |
||||
|
After Width: | Height: | Size: 479 B |
|
After Width: | Height: | Size: 3.5 KiB |
|
After Width: | Height: | Size: 3.1 KiB |
|
After Width: | Height: | Size: 9.9 KiB |
|
After Width: | Height: | Size: 322 B |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 1.8 KiB |
|
After Width: | Height: | Size: 643 B |
|
After Width: | Height: | Size: 4.7 KiB |
|
After Width: | Height: | Size: 4.2 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 7.3 KiB |
|
After Width: | Height: | Size: 7.0 KiB |
@ -0,0 +1,12 @@
@@ -0,0 +1,12 @@
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" |
||||
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" |
||||
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" |
||||
android:paddingRight="@dimen/activity_horizontal_margin" |
||||
android:paddingTop="@dimen/activity_vertical_margin" |
||||
android:paddingBottom="@dimen/activity_vertical_margin" |
||||
tools:context="com.likesoft.mdedal.CalendarActivity"> |
||||
|
||||
<TextView android:text="@string/hello_world" android:layout_width="wrap_content" |
||||
android:layout_height="wrap_content" /> |
||||
|
||||
</RelativeLayout> |
||||
@ -0,0 +1,50 @@
@@ -0,0 +1,50 @@
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" |
||||
xmlns:tools="http://schemas.android.com/tools" |
||||
android:layout_width="match_parent" |
||||
android:layout_height="match_parent" |
||||
android:paddingBottom="@dimen/activity_vertical_margin" |
||||
android:paddingLeft="@dimen/activity_horizontal_margin" |
||||
android:paddingRight="@dimen/activity_horizontal_margin" |
||||
android:paddingTop="@dimen/activity_vertical_margin" |
||||
tools:context=".ListActivity" > |
||||
|
||||
<LinearLayout |
||||
android:id="@+id/linearLayout1" |
||||
android:layout_width="wrap_content" |
||||
android:layout_height="wrap_content" |
||||
android:layout_alignParentLeft="true" |
||||
android:layout_alignParentRight="true" |
||||
android:layout_alignParentTop="true" > |
||||
|
||||
<EditText |
||||
android:id="@+id/editTextUser" |
||||
android:layout_width="wrap_content" |
||||
android:layout_height="wrap_content" |
||||
android:layout_weight="1" |
||||
android:ems="10" /> |
||||
|
||||
</LinearLayout> |
||||
|
||||
<EditText |
||||
android:id="@+id/editTextHost" |
||||
android:layout_width="wrap_content" |
||||
android:layout_height="wrap_content" |
||||
android:layout_alignLeft="@+id/linearLayout1" |
||||
android:layout_alignParentBottom="true" |
||||
android:layout_weight="1" |
||||
android:ems="10" > |
||||
|
||||
<requestFocus /> |
||||
</EditText> |
||||
|
||||
<TextView |
||||
android:id="@+id/textView1" |
||||
android:layout_width="wrap_content" |
||||
android:layout_height="wrap_content" |
||||
android:layout_alignLeft="@+id/linearLayout1" |
||||
android:layout_alignParentRight="true" |
||||
android:layout_below="@+id/linearLayout1" |
||||
android:background="@style/AppTheme" |
||||
android:text="TextView" /> |
||||
|
||||
</RelativeLayout> |
||||
@ -0,0 +1,30 @@
@@ -0,0 +1,30 @@
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" |
||||
xmlns:tools="http://schemas.android.com/tools" |
||||
android:layout_width="match_parent" |
||||
android:layout_height="match_parent" |
||||
tools:context=".MainActivity" |
||||
android:contentDescription="gfd"> |
||||
|
||||
<requestFocus android:layout_marginTop="35dp" /> |
||||
|
||||
<ScrollView |
||||
android:id="@+id/scrollView1" |
||||
android:layout_width="wrap_content" |
||||
android:layout_height="wrap_content" |
||||
android:layout_alignParentBottom="true" |
||||
android:layout_alignParentLeft="true" |
||||
android:layout_alignParentRight="true" |
||||
android:layout_alignParentTop="true" |
||||
android:scrollbars="horizontal" > |
||||
|
||||
<LinearLayout |
||||
android:id="@+id/linearLayoutMain" |
||||
android:layout_width="match_parent" |
||||
android:layout_height="wrap_content" |
||||
android:orientation="vertical"> |
||||
|
||||
</LinearLayout> |
||||
|
||||
</ScrollView> |
||||
|
||||
</RelativeLayout> |
||||
@ -0,0 +1,112 @@
@@ -0,0 +1,112 @@
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" |
||||
xmlns:tools="http://schemas.android.com/tools" |
||||
android:layout_width="match_parent" |
||||
android:layout_height="match_parent" |
||||
android:paddingBottom="@dimen/activity_vertical_margin" |
||||
android:paddingLeft="@dimen/activity_horizontal_margin" |
||||
android:paddingRight="@dimen/activity_horizontal_margin" |
||||
android:paddingTop="@dimen/activity_vertical_margin" |
||||
tools:context=".PreferActivity" > |
||||
|
||||
<HorizontalScrollView |
||||
android:id="@+id/horizontalScrollView1" |
||||
android:layout_width="wrap_content" |
||||
android:layout_height="wrap_content" > |
||||
|
||||
<LinearLayout |
||||
android:layout_width="match_parent" |
||||
android:layout_height="wrap_content" |
||||
android:orientation="horizontal" > |
||||
|
||||
<LinearLayout |
||||
android:layout_width="wrap_content" |
||||
android:layout_height="122dp" |
||||
android:orientation="vertical" > |
||||
</LinearLayout> |
||||
|
||||
<LinearLayout |
||||
android:id="@+id/linearLayout1" |
||||
android:layout_width="wrap_content" |
||||
android:layout_height="wrap_content" |
||||
android:orientation="vertical" > |
||||
<TextView |
||||
android:id="@+id/textView1" |
||||
android:layout_width="wrap_content" |
||||
android:layout_height="wrap_content" |
||||
android:layout_marginTop="28dp" |
||||
android:text="Login" /> |
||||
|
||||
<EditText |
||||
android:id="@+id/editTextUser" |
||||
android:layout_width="wrap_content" |
||||
android:layout_height="wrap_content" |
||||
android:layout_marginTop="14dp" |
||||
android:ems="10" /> |
||||
|
||||
<TextView |
||||
android:id="@+id/textView3" |
||||
android:layout_width="wrap_content" |
||||
android:layout_height="wrap_content" |
||||
android:layout_marginTop="23dp" |
||||
android:text="Hasło:" /> |
||||
|
||||
<EditText |
||||
android:id="@+id/editTextPassword" |
||||
android:layout_width="wrap_content" |
||||
android:layout_height="wrap_content" |
||||
android:ems="10" |
||||
android:inputType="textPassword" /> |
||||
<TextView |
||||
android:id="@+id/textViewNewPassword" |
||||
android:layout_width="wrap_content" |
||||
android:layout_height="wrap_content" |
||||
android:layout_marginTop="23dp" |
||||
android:text="Zmień hasło:" /> |
||||
|
||||
<EditText |
||||
android:id="@+id/editTextNewPassword" |
||||
android:layout_width="wrap_content" |
||||
android:layout_height="wrap_content" |
||||
android:ems="10" |
||||
android:inputType="textPassword" /> |
||||
<TextView |
||||
android:id="@+id/textViewHostUrl" |
||||
android:layout_width="wrap_content" |
||||
android:layout_height="wrap_content" |
||||
android:layout_marginTop="23dp" |
||||
android:text="URL:" /> |
||||
</LinearLayout> |
||||
|
||||
<LinearLayout |
||||
android:id="@+id/linearLayout2" |
||||
android:layout_width="wrap_content" |
||||
android:layout_height="wrap_content" |
||||
android:layout_marginLeft="133dp" |
||||
android:layout_weight="0.16" |
||||
android:orientation="vertical" > |
||||
</LinearLayout> |
||||
|
||||
</LinearLayout> |
||||
|
||||
</HorizontalScrollView> |
||||
|
||||
<Button |
||||
android:id="@+id/buttonSave" |
||||
android:layout_width="match_parent" |
||||
android:layout_height="wrap_content" |
||||
android:layout_alignLeft="@+id/horizontalScrollView1" |
||||
android:layout_alignRight="@+id/imageView1" |
||||
android:layout_below="@+id/horizontalScrollView1" |
||||
android:text="Zapisz" /> |
||||
|
||||
<ImageView |
||||
android:id="@+id/imageView1" |
||||
android:layout_width="wrap_content" |
||||
android:layout_height="126dp" |
||||
android:layout_alignLeft="@+id/horizontalScrollView1" |
||||
android:layout_alignTop="@+id/horizontalScrollView1" |
||||
android:layout_marginLeft="332dp" |
||||
android:layout_marginTop="22dp" |
||||
android:src="@drawable/logo" /> |
||||
|
||||
</RelativeLayout> |
||||
@ -0,0 +1,21 @@
@@ -0,0 +1,21 @@
|
||||
<?xml version="1.0" encoding="utf-8"?> |
||||
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" |
||||
|
||||
android:layout_width="fill_parent" |
||||
|
||||
android:layout_height="fill_parent" |
||||
|
||||
android:orientation="vertical" > |
||||
|
||||
<ListView |
||||
|
||||
android:id="@android:id/list" |
||||
|
||||
android:layout_width="match_parent" |
||||
|
||||
android:layout_height="wrap_content" > |
||||
|
||||
</ListView> |
||||
|
||||
</LinearLayout> |
||||
@ -0,0 +1,8 @@
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?> |
||||
<fragment xmlns:android="http://schemas.android.com/apk/res/android" |
||||
xmlns:tools="http://schemas.android.com/tools" |
||||
android:layout_width="match_parent" |
||||
android:layout_height="match_parent" |
||||
tools:layout="@layout/activity_main"> |
||||
|
||||
</fragment> |
||||
@ -0,0 +1,15 @@
@@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="utf-8"?> |
||||
|
||||
<TextView xmlns:android="http://schemas.android.com/apk/res/android" |
||||
|
||||
android:id="@+id/title" |
||||
|
||||
android:layout_width="fill_parent" |
||||
|
||||
android:layout_height="80px" |
||||
|
||||
android:gravity="center_vertical" |
||||
|
||||
android:paddingLeft="6dip" |
||||
|
||||
/> |
||||
@ -0,0 +1,9 @@
@@ -0,0 +1,9 @@
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android" > |
||||
|
||||
<item |
||||
android:id="@+id/action_settings" |
||||
android:orderInCategory="100" |
||||
android:showAsAction="never" |
||||
android:title="@string/action_settings"/> |
||||
|
||||
</menu> |
||||