Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
N
NewParkAPP
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
YONG-LIN SU
NewParkAPP
Commits
3fcea11a
Commit
3fcea11a
authored
Sep 26, 2022
by
YONG-LIN SU
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修正部分錯誤
1. 將車色 廠牌加入 2. 新增db匯出功能 3. 新增gps搜尋不到,顯示上一張單的附近車格
parent
9f15cf35
Changes
30
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
30 changed files
with
926 additions
and
115 deletions
+926
-115
deploymentTargetDropDown.xml
.idea/deploymentTargetDropDown.xml
+0
-17
misc.xml
.idea/misc.xml
+4
-0
build.gradle
app/build.gradle
+1
-1
NewParkApp Dev Ver.1.5.0.apk
app/release/NewParkApp Dev Ver.1.5.0.apk
+0
-0
output-metadata.json
app/release/output-metadata.json
+1
-1
AndroidManifest.xml
app/src/main/AndroidManifest.xml
+8
-2
SpaceFee
app/src/main/assets/SpaceFee
+2
-2
ImportDbAdapter.java
...java/ecom/android/newparkapp/adapter/ImportDbAdapter.java
+1
-0
SelectVehicleBrandAdapter.java
...android/newparkapp/adapter/SelectVehicleBrandAdapter.java
+69
-0
SelectVehicleColorAdapter.java
...android/newparkapp/adapter/SelectVehicleColorAdapter.java
+67
-0
SpaceDao.java
app/src/main/java/ecom/android/newparkapp/dao/SpaceDao.java
+3
-0
VehicleBrand.java
...ain/java/ecom/android/newparkapp/entity/VehicleBrand.java
+34
-1
VehicleColor.java
...ain/java/ecom/android/newparkapp/entity/VehicleColor.java
+32
-1
T01ImportDbActivity.java
...ava/ecom/android/newparkapp/view/T01ImportDbActivity.java
+51
-0
T01SettingActivity.java
...java/ecom/android/newparkapp/view/T01SettingActivity.java
+48
-0
T02PlateAndSpaceConfirmActivity.java
...roid/newparkapp/view/T02PlateAndSpaceConfirmActivity.java
+3
-1
T02SelectVehicleBrand.java
...a/ecom/android/newparkapp/view/T02SelectVehicleBrand.java
+49
-0
T02SelectVehicleColor.java
...a/ecom/android/newparkapp/view/T02SelectVehicleColor.java
+53
-0
T02StartActivity.java
...n/java/ecom/android/newparkapp/view/T02StartActivity.java
+73
-2
T01ImportDbViewModel.java
...om/android/newparkapp/viewModel/T01ImportDbViewModel.java
+180
-81
T01SettingViewModel.java
...com/android/newparkapp/viewModel/T01SettingViewModel.java
+32
-0
T02SelectSpaceViewModel.java
...android/newparkapp/viewModel/T02SelectSpaceViewModel.java
+20
-0
T02StartViewModel.java
.../ecom/android/newparkapp/viewModel/T02StartViewModel.java
+21
-0
activity_t01_import_db.xml
app/src/main/res/layout/activity_t01_import_db.xml
+38
-2
activity_t01_setting_layout.xml
app/src/main/res/layout/activity_t01_setting_layout.xml
+10
-0
activity_t02_select_vehicle_brand.xml
...src/main/res/layout/activity_t02_select_vehicle_brand.xml
+53
-0
activity_t02_select_vehicle_color.xml
...src/main/res/layout/activity_t02_select_vehicle_color.xml
+51
-0
activity_t02_start.xml
app/src/main/res/layout/activity_t02_start.xml
+4
-4
recycler_view_vehicle_brand_item.xml
app/src/main/res/layout/recycler_view_vehicle_brand_item.xml
+9
-0
recycler_view_vehicle_color_item.xml
app/src/main/res/layout/recycler_view_vehicle_color_item.xml
+9
-0
No files found.
.idea/deploymentTargetDropDown.xml
deleted
100644 → 0
View file @
9f15cf35
<?xml version="1.0" encoding="UTF-8"?>
<project
version=
"4"
>
<component
name=
"deploymentTargetDropDown"
>
<runningDeviceTargetSelectedWithDropDown>
<Target>
<type
value=
"RUNNING_DEVICE_TARGET"
/>
<deviceKey>
<Key>
<type
value=
"SERIAL_NUMBER"
/>
<value
value=
"QV7218BA3A"
/>
</Key>
</deviceKey>
</Target>
</runningDeviceTargetSelectedWithDropDown>
<timeTargetWasSelectedWithDropDown
value=
"2022-09-12T03:13:53.292563700Z"
/>
</component>
</project>
\ No newline at end of file
.idea/misc.xml
View file @
3fcea11a
...
...
@@ -29,6 +29,8 @@
<entry
key=
"..\:/Users/pp931/Desktop/RD/Projects/NewParkApp/app/src/main/res/layout/activity_t02_plate_and_space_confirm.xml"
value=
"0.3654891304347826"
/>
<entry
key=
"..\:/Users/pp931/Desktop/RD/Projects/NewParkApp/app/src/main/res/layout/activity_t02_select_road.xml"
value=
"0.34375"
/>
<entry
key=
"..\:/Users/pp931/Desktop/RD/Projects/NewParkApp/app/src/main/res/layout/activity_t02_select_space.xml"
value=
"0.34375"
/>
<entry
key=
"..\:/Users/pp931/Desktop/RD/Projects/NewParkApp/app/src/main/res/layout/activity_t02_select_vehicle_brand.xml"
value=
"0.36614583333333334"
/>
<entry
key=
"..\:/Users/pp931/Desktop/RD/Projects/NewParkApp/app/src/main/res/layout/activity_t02_select_vehicle_color.xml"
value=
"0.36614583333333334"
/>
<entry
key=
"..\:/Users/pp931/Desktop/RD/Projects/NewParkApp/app/src/main/res/layout/activity_t02_select_vehicle_type.xml"
value=
"0.34375"
/>
<entry
key=
"..\:/Users/pp931/Desktop/RD/Projects/NewParkApp/app/src/main/res/layout/activity_t02_start.xml"
value=
"0.34375"
/>
<entry
key=
"..\:/Users/pp931/Desktop/RD/Projects/NewParkApp/app/src/main/res/layout/activity_t03_cumulative.xml"
value=
"0.34375"
/>
...
...
@@ -56,6 +58,8 @@
<entry
key=
"..\:/Users/pp931/Desktop/RD/Projects/NewParkApp/app/src/main/res/layout/recycler_view_renew_item.xml"
value=
"0.34375"
/>
<entry
key=
"..\:/Users/pp931/Desktop/RD/Projects/NewParkApp/app/src/main/res/layout/recycler_view_road_item.xml"
value=
"0.34375"
/>
<entry
key=
"..\:/Users/pp931/Desktop/RD/Projects/NewParkApp/app/src/main/res/layout/recycler_view_space_item.xml"
value=
"0.24954710144927536"
/>
<entry
key=
"..\:/Users/pp931/Desktop/RD/Projects/NewParkApp/app/src/main/res/layout/recycler_view_vehicle_brand_item.xml"
value=
"0.36614583333333334"
/>
<entry
key=
"..\:/Users/pp931/Desktop/RD/Projects/NewParkApp/app/src/main/res/layout/recycler_view_vehicle_color_item.xml"
value=
"0.36614583333333334"
/>
<entry
key=
"..\:/Users/pp931/Desktop/RD/Projects/NewParkApp/app/src/main/res/layout/recycler_view_vehicle_type_item.xml"
value=
"0.34375"
/>
<entry
key=
"..\:/Users/pp931/Desktop/RD/Projects/NewParkApp/app/src/main/res/menu/bottom_nav_menu.xml"
value=
"0.36614583333333334"
/>
<entry
key=
"..\:/Users/pp931/Desktop/RD/Projects/NewParkApp/app/src/main/res/mipmap-anydpi-v26/ic_icon_launcher.xml"
value=
"0.2985"
/>
...
...
app/build.gradle
View file @
3fcea11a
...
...
@@ -10,7 +10,7 @@ android {
minSdk
27
targetSdk
30
versionCode
1
versionName
"Dev Ver.1.
0
.0"
versionName
"Dev Ver.1.
5
.0"
testInstrumentationRunner
"androidx.test.runner.AndroidJUnitRunner"
...
...
app/release/NewParkApp
Dev.V.1.0
.0.apk
→
app/release/NewParkApp
Dev Ver.1.5
.0.apk
View file @
3fcea11a
No preview for this file type
app/release/output-metadata.json
View file @
3fcea11a
...
...
@@ -12,7 +12,7 @@
"filters"
:
[],
"attributes"
:
[],
"versionCode"
:
1
,
"versionName"
:
"Dev Ver.1.
0
.0"
,
"versionName"
:
"Dev Ver.1.
5
.0"
,
"outputFile"
:
"app-release.apk"
}
],
...
...
app/src/main/AndroidManifest.xml
View file @
3fcea11a
...
...
@@ -25,7 +25,6 @@
<uses-permission
android:name=
"android.permission.FOREGROUND_SERVICE"
/>
<!-- android 11 管理所有檔案權限 -->
<uses-permission
android:name=
"android.permission.MANAGE_EXTERNAL_STORAGE"
/>
<application
android:allowBackup=
"true"
android:dataExtractionRules=
"@xml/data_extraction_rules"
...
...
@@ -33,11 +32,12 @@
android:icon=
"@mipmap/ic_icon_launcher"
android:label=
"@string/app_name"
android:networkSecurityConfig=
"@xml/network_security_config"
android:requestLegacyExternalStorage=
"true"
android:roundIcon=
"@mipmap/ic_icon_launcher_round"
android:supportsRtl=
"true"
android:theme=
"@style/Theme.AppCompat.Light.NoActionBar"
android:requestLegacyExternalStorage=
"true"
tools:targetApi=
"31"
>
<activity
android:name=
".view.T02PlateAndSpaceConfirmActivity"
android:exported=
"false"
/>
...
...
@@ -79,6 +79,12 @@
<activity
android:name=
".view.T02SelectVehicleTypeActivity"
android:exported=
"false"
/>
<activity
android:name=
".view.T02SelectVehicleColor"
android:exported=
"false"
/>
<activity
android:name=
".view.T02SelectVehicleBrand"
android:exported=
"false"
/>
<activity
android:name=
".view.T02SelectSpaceActivity"
android:exported=
"false"
/>
...
...
app/src/main/assets/SpaceFee
View file @
3fcea11a
...
...
@@ -9,7 +9,7 @@
9 1 25 0
10 1 25 0
11 1 25 0
12 1 15
4
12 1 15
2
13 1 15 4
14 1 25 0
1 2 20 0
...
...
@@ -23,6 +23,6 @@
9 2 20 0
10 2 20 0
11 2 20 0
12 2 10
4
12 2 10
2
13 2 10 4
14 2 20 0
app/src/main/java/ecom/android/newparkapp/adapter/ImportDbAdapter.java
View file @
3fcea11a
...
...
@@ -46,6 +46,7 @@ public class ImportDbAdapter extends ListAdapter<String,ImportDbAdapter.ImportDb
void
setBinding
(
String
tableName
){
dataBinding
.
tvDbTable
.
setText
(
tableName
);
dataBinding
.
btnUpdateDbTable
.
setOnClickListener
(
view
->
t01ImportDbViewModel
.
updateTable
(
tableName
));
dataBinding
.
btnImportDbTable
.
setOnClickListener
(
view
->
t01ImportDbViewModel
.
importTable
(
tableName
));
}
}
...
...
app/src/main/java/ecom/android/newparkapp/adapter/SelectVehicleBrandAdapter.java
0 → 100644
View file @
3fcea11a
package
ecom
.
android
.
newparkapp
.
adapter
;
import
android.view.LayoutInflater
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
androidx.annotation.NonNull
;
import
androidx.recyclerview.widget.DiffUtil
;
import
androidx.recyclerview.widget.ListAdapter
;
import
androidx.recyclerview.widget.RecyclerView
;
import
ecom.android.newparkapp.databinding.RecyclerViewVehicleBrandItemBinding
;
import
ecom.android.newparkapp.entity.VehicleBrand
;
public
class
SelectVehicleBrandAdapter
extends
ListAdapter
<
VehicleBrand
,
SelectVehicleBrandAdapter
.
SelectVehicleBrandViewHolder
>
{
final
private
OnItemClickListener
onItemClickListener
;
public
SelectVehicleBrandAdapter
(
OnItemClickListener
onItemClickListener
){
super
(
vehicleBrandItemCallback
);
this
.
onItemClickListener
=
onItemClickListener
;
}
public
static
final
DiffUtil
.
ItemCallback
<
VehicleBrand
>
vehicleBrandItemCallback
=
new
DiffUtil
.
ItemCallback
<
VehicleBrand
>()
{
@Override
public
boolean
areItemsTheSame
(
@NonNull
VehicleBrand
oldItem
,
@NonNull
VehicleBrand
newItem
)
{
return
oldItem
.
id
==
newItem
.
id
;
}
@Override
public
boolean
areContentsTheSame
(
@NonNull
VehicleBrand
oldItem
,
@NonNull
VehicleBrand
newItem
)
{
return
oldItem
.
name
.
equals
(
newItem
.
name
);
}
};
@NonNull
@Override
public
SelectVehicleBrandViewHolder
onCreateViewHolder
(
@NonNull
ViewGroup
parent
,
int
viewType
)
{
RecyclerViewVehicleBrandItemBinding
recyclerViewVehicleBrandItemBinding
=
RecyclerViewVehicleBrandItemBinding
.
inflate
(
LayoutInflater
.
from
(
parent
.
getContext
()),
parent
,
false
);
return
new
SelectVehicleBrandViewHolder
(
recyclerViewVehicleBrandItemBinding
);
}
@Override
public
void
onBindViewHolder
(
@NonNull
SelectVehicleBrandViewHolder
holder
,
int
position
)
{
holder
.
setBinding
(
getItem
(
position
),
onItemClickListener
);
}
static
class
SelectVehicleBrandViewHolder
extends
RecyclerView
.
ViewHolder
{
private
final
RecyclerViewVehicleBrandItemBinding
dataBinding
;
SelectVehicleBrandViewHolder
(
RecyclerViewVehicleBrandItemBinding
dataBinding
){
super
(
dataBinding
.
getRoot
());
this
.
dataBinding
=
dataBinding
;
}
void
setBinding
(
VehicleBrand
vehicleBrand
,
OnItemClickListener
onItemClickListener
){
String
btnText
=
vehicleBrand
.
id
+
" "
+
vehicleBrand
.
name
+
""
+
vehicleBrand
.
englishName
;
dataBinding
.
btnSelectVehicleBrand
.
setText
(
btnText
);
dataBinding
.
btnSelectVehicleBrand
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
@Override
public
void
onClick
(
View
view
)
{
onItemClickListener
.
onVehicleBrandClick
(
vehicleBrand
);
}
});
}
}
public
interface
OnItemClickListener
{
void
onVehicleBrandClick
(
VehicleBrand
vehicleBrand
);
}
}
app/src/main/java/ecom/android/newparkapp/adapter/SelectVehicleColorAdapter.java
0 → 100644
View file @
3fcea11a
package
ecom
.
android
.
newparkapp
.
adapter
;
import
android.view.LayoutInflater
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
androidx.annotation.NonNull
;
import
androidx.recyclerview.widget.DiffUtil
;
import
androidx.recyclerview.widget.ListAdapter
;
import
androidx.recyclerview.widget.RecyclerView
;
import
ecom.android.newparkapp.databinding.RecyclerViewVehicleColorItemBinding
;
import
ecom.android.newparkapp.entity.VehicleColor
;
public
class
SelectVehicleColorAdapter
extends
ListAdapter
<
VehicleColor
,
SelectVehicleColorAdapter
.
SelectVehicleColorViewHolder
>
{
final
private
SelectVehicleColorAdapter
.
OnItemClickListener
onItemClickListener
;
public
SelectVehicleColorAdapter
(
SelectVehicleColorAdapter
.
OnItemClickListener
onItemClickListener
)
{
super
(
vehicleColorItemCallback
);
this
.
onItemClickListener
=
onItemClickListener
;
}
@NonNull
@Override
public
SelectVehicleColorAdapter
.
SelectVehicleColorViewHolder
onCreateViewHolder
(
@NonNull
ViewGroup
parent
,
int
viewType
)
{
RecyclerViewVehicleColorItemBinding
recyclerViewVehicleColorItemBinding
=
RecyclerViewVehicleColorItemBinding
.
inflate
(
LayoutInflater
.
from
(
parent
.
getContext
()),
parent
,
false
);
return
new
SelectVehicleColorAdapter
.
SelectVehicleColorViewHolder
(
recyclerViewVehicleColorItemBinding
);
}
@Override
public
void
onBindViewHolder
(
@NonNull
SelectVehicleColorAdapter
.
SelectVehicleColorViewHolder
holder
,
int
position
)
{
holder
.
setBinding
(
getItem
(
position
),
this
.
onItemClickListener
);
}
public
static
final
DiffUtil
.
ItemCallback
<
VehicleColor
>
vehicleColorItemCallback
=
new
DiffUtil
.
ItemCallback
<
VehicleColor
>()
{
@Override
public
boolean
areItemsTheSame
(
@NonNull
VehicleColor
oldItem
,
@NonNull
VehicleColor
newItem
)
{
return
oldItem
.
id
==
newItem
.
id
;
}
@Override
public
boolean
areContentsTheSame
(
@NonNull
VehicleColor
oldItem
,
@NonNull
VehicleColor
newItem
)
{
return
oldItem
.
name
.
equals
(
newItem
.
name
);
}
};
static
class
SelectVehicleColorViewHolder
extends
RecyclerView
.
ViewHolder
{
private
final
RecyclerViewVehicleColorItemBinding
dataBinding
;
SelectVehicleColorViewHolder
(
RecyclerViewVehicleColorItemBinding
dataBinding
)
{
super
(
dataBinding
.
getRoot
());
this
.
dataBinding
=
dataBinding
;
}
void
setBinding
(
VehicleColor
vehicleColor
,
SelectVehicleColorAdapter
.
OnItemClickListener
onItemClickListener
){
String
btnText
=
vehicleColor
.
id
+
" "
+
vehicleColor
.
name
;
dataBinding
.
btnSelectVehicleColor
.
setText
(
btnText
);
dataBinding
.
btnSelectVehicleColor
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
@Override
public
void
onClick
(
View
view
)
{
onItemClickListener
.
onVehicleColorClick
(
vehicleColor
);
}
});
}
}
public
interface
OnItemClickListener
{
void
onVehicleColorClick
(
VehicleColor
VehicleColor
);
}
}
app/src/main/java/ecom/android/newparkapp/dao/SpaceDao.java
View file @
3fcea11a
...
...
@@ -44,6 +44,9 @@ public interface SpaceDao {
@Query
(
"SELECT * FROM space WHERE road_id=:RoadIds"
)
LiveData
<
List
<
Space
>>
loadAllLiveDataByRoadId
(
int
RoadIds
);
@Query
(
"SELECT * FROM space WHERE id > :spaceId LIMIT :limit"
)
List
<
Space
>
getNextSpaces
(
String
spaceId
,
int
limit
);
@Insert
void
insertAll
(
Space
...
spaces
);
...
...
app/src/main/java/ecom/android/newparkapp/entity/VehicleBrand.java
View file @
3fcea11a
package
ecom
.
android
.
newparkapp
.
entity
;
import
android.os.Parcel
;
import
android.os.Parcelable
;
import
androidx.room.ColumnInfo
;
import
androidx.room.Entity
;
import
androidx.room.PrimaryKey
;
...
...
@@ -8,7 +11,7 @@ import androidx.room.PrimaryKey;
* 汽車品牌資料表
*/
@Entity
public
class
VehicleBrand
{
public
class
VehicleBrand
implements
Parcelable
{
@PrimaryKey
public
int
id
;
...
...
@@ -23,4 +26,34 @@ public class VehicleBrand {
this
.
name
=
name
;
this
.
englishName
=
englishName
;
}
protected
VehicleBrand
(
Parcel
in
)
{
id
=
in
.
readInt
();
name
=
in
.
readString
();
englishName
=
in
.
readString
();
}
public
static
final
Creator
<
VehicleBrand
>
CREATOR
=
new
Creator
<
VehicleBrand
>()
{
@Override
public
VehicleBrand
createFromParcel
(
Parcel
in
)
{
return
new
VehicleBrand
(
in
);
}
@Override
public
VehicleBrand
[]
newArray
(
int
size
)
{
return
new
VehicleBrand
[
size
];
}
};
@Override
public
int
describeContents
()
{
return
0
;
}
@Override
public
void
writeToParcel
(
Parcel
parcel
,
int
i
)
{
parcel
.
writeInt
(
id
);
parcel
.
writeString
(
name
);
parcel
.
writeString
(
englishName
);
}
}
app/src/main/java/ecom/android/newparkapp/entity/VehicleColor.java
View file @
3fcea11a
package
ecom
.
android
.
newparkapp
.
entity
;
import
android.os.Parcel
;
import
android.os.Parcelable
;
import
androidx.room.ColumnInfo
;
import
androidx.room.Entity
;
import
androidx.room.PrimaryKey
;
...
...
@@ -8,7 +11,7 @@ import androidx.room.PrimaryKey;
* 汽車顏色資料表
*/
@Entity
public
class
VehicleColor
{
public
class
VehicleColor
implements
Parcelable
{
@PrimaryKey
public
int
id
;
...
...
@@ -19,4 +22,32 @@ public class VehicleColor {
this
.
id
=
id
;
this
.
name
=
name
;
}
protected
VehicleColor
(
Parcel
in
)
{
id
=
in
.
readInt
();
name
=
in
.
readString
();
}
public
static
final
Creator
<
VehicleColor
>
CREATOR
=
new
Creator
<
VehicleColor
>()
{
@Override
public
VehicleColor
createFromParcel
(
Parcel
in
)
{
return
new
VehicleColor
(
in
);
}
@Override
public
VehicleColor
[]
newArray
(
int
size
)
{
return
new
VehicleColor
[
size
];
}
};
@Override
public
int
describeContents
()
{
return
0
;
}
@Override
public
void
writeToParcel
(
Parcel
parcel
,
int
i
)
{
parcel
.
writeInt
(
id
);
parcel
.
writeString
(
name
);
}
}
app/src/main/java/ecom/android/newparkapp/view/T01ImportDbActivity.java
View file @
3fcea11a
package
ecom
.
android
.
newparkapp
.
view
;
import
androidx.appcompat.app.AlertDialog
;
import
androidx.appcompat.app.AppCompatActivity
;
import
androidx.databinding.DataBindingUtil
;
import
androidx.lifecycle.Observer
;
...
...
@@ -8,11 +9,13 @@ import androidx.recyclerview.widget.LinearLayoutManager;
import
android.app.ProgressDialog
;
import
android.os.Bundle
;
import
android.view.LayoutInflater
;
import
android.widget.Toast
;
import
ecom.android.newparkapp.R
;
import
ecom.android.newparkapp.adapter.ImportDbAdapter
;
import
ecom.android.newparkapp.databinding.ActivityT01ImportDbBinding
;
import
ecom.android.newparkapp.databinding.AlertDialogProgressBarBinding
;
import
ecom.android.newparkapp.viewModel.T01ImportDbViewModel
;
public
class
T01ImportDbActivity
extends
AppCompatActivity
{
...
...
@@ -20,6 +23,9 @@ public class T01ImportDbActivity extends AppCompatActivity {
private
ActivityT01ImportDbBinding
dataBinding
;
private
T01ImportDbViewModel
t01ImportDbViewModel
;
private
ImportDbAdapter
importDbAdapter
;
private
AlertDialog
alertDialogProgress
;
private
AlertDialogProgressBarBinding
alertDialogProgressBarBinding
;
@Override
protected
void
onCreate
(
Bundle
savedInstanceState
)
{
super
.
onCreate
(
savedInstanceState
);
...
...
@@ -40,6 +46,51 @@ public class T01ImportDbActivity extends AppCompatActivity {
t01ImportDbViewModel
.
getToastMessage
().
observe
(
this
,
s
->
ToastMessageonChanged
(
s
));
dataBinding
.
btnImportAll
.
setOnClickListener
(
view
->
{
setAlertDialogProgressMessage
(
"資料匯入中請稍後"
);
t01ImportDbViewModel
.
importAllTable
();
});
dataBinding
.
btnUpdateAll
.
setOnClickListener
(
view
->
{
setAlertDialogProgressMessage
(
"資料更新中請稍後"
);
t01ImportDbViewModel
.
updateAllTable
();
});
// progress alert dialog init
initAlertDialogProgress
();
t01ImportDbViewModel
.
getAlertDialogProgressMessage
().
observe
(
this
,
message
->
{
setAlertDialogProgressMessage
(
message
);
});
t01ImportDbViewModel
.
getShowAlertDialogProgress
().
observe
(
this
,
show
->{
if
(
show
){
alertDialogProgress
.
show
();
}
else
{
alertDialogProgress
.
dismiss
();
}
});
}
@Override
protected
void
onDestroy
()
{
// 關閉 Activity 前,須將相關附屬的 windows視窗關閉,避免內存洩漏
if
(
alertDialogProgress
!=
null
){
alertDialogProgress
.
dismiss
();
}
super
.
onDestroy
();
}
private
void
initAlertDialogProgress
(){
AlertDialog
.
Builder
builder
=
new
AlertDialog
.
Builder
(
this
);
builder
.
setCancelable
(
false
);
// if you want user to wait for some process to finish,
alertDialogProgressBarBinding
=
AlertDialogProgressBarBinding
.
inflate
(
LayoutInflater
.
from
(
this
));
builder
.
setView
(
alertDialogProgressBarBinding
.
getRoot
());
alertDialogProgress
=
builder
.
create
();
}
private
void
setAlertDialogProgressMessage
(
String
message
){
alertDialogProgressBarBinding
.
tvProgressBarMsg
.
setText
(
message
);
}
public
void
ToastMessageonChanged
(
String
toastMessage
){
...
...
app/src/main/java/ecom/android/newparkapp/view/T01SettingActivity.java
View file @
3fcea11a
...
...
@@ -8,6 +8,8 @@ import android.text.InputFilter;
import
android.text.Spanned
;
import
android.text.TextWatcher
;
import
android.view.LayoutInflater
;
import
android.view.View
;
import
android.widget.AbsListView
;
import
android.widget.Button
;
import
android.widget.Toast
;
...
...
@@ -15,6 +17,7 @@ import android.widget.Toast;
import
androidx.activity.result.ActivityResultLauncher
;
import
androidx.activity.result.contract.ActivityResultContracts
;
import
androidx.appcompat.app.ActionBar
;
import
androidx.appcompat.app.AlertDialog
;
import
androidx.appcompat.app.AppCompatActivity
;
import
androidx.databinding.DataBindingUtil
;
import
androidx.lifecycle.ViewModelProvider
;
...
...
@@ -25,6 +28,7 @@ import java.util.List;
import
ecom.android.newparkapp.FilesFilter
;
import
ecom.android.newparkapp.R
;
import
ecom.android.newparkapp.databinding.ActivityT01SettingLayoutBinding
;
import
ecom.android.newparkapp.databinding.AlertDialogProgressBarBinding
;
import
ecom.android.newparkapp.entity.User
;
import
ecom.android.newparkapp.viewModel.T01SettingViewModel
;
...
...
@@ -37,6 +41,8 @@ public class T01SettingActivity extends AppCompatActivity {
private
ActivityResultLauncher
UserResultLauncher
;
private
List
<
User
>
Users
;
private
AlertDialog
alertDialogProgress
;
private
AlertDialogProgressBarBinding
alertDialogProgressBarBinding
;
@Override
protected
void
onCreate
(
Bundle
savedInstanceState
)
{
...
...
@@ -57,6 +63,9 @@ public class T01SettingActivity extends AppCompatActivity {
setListeners
();
resultLauncherRegister
();
observeBinding
();
// progress alert dialog init
initAlertDialogProgress
();
}
@Override
...
...
@@ -74,6 +83,16 @@ public class T01SettingActivity extends AppCompatActivity {
t01SettingViewModel
.
savePrefs
();
}
@Override
protected
void
onDestroy
()
{
// 關閉 Activity 前,須將相關附屬的 windows視窗關閉,避免內存洩漏
if
(
alertDialogProgress
!=
null
){
alertDialogProgress
.
dismiss
();
}
super
.
onDestroy
();
}
// public static class SettingsFragment extends PreferenceFragmentCompat {
// @Override
// public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
...
...
@@ -81,6 +100,18 @@ public class T01SettingActivity extends AppCompatActivity {
// }
// }
private
void
initAlertDialogProgress
(){
AlertDialog
.
Builder
builder
=
new
AlertDialog
.
Builder
(
this
);
builder
.
setCancelable
(
false
);
// if you want user to wait for some process to finish,
alertDialogProgressBarBinding
=
AlertDialogProgressBarBinding
.
inflate
(
LayoutInflater
.
from
(
this
));
builder
.
setView
(
alertDialogProgressBarBinding
.
getRoot
());
alertDialogProgress
=
builder
.
create
();
}
private
void
setAlertDialogProgressMessage
(
String
message
){
alertDialogProgressBarBinding
.
tvProgressBarMsg
.
setText
(
message
);
}
private
void
setListeners
()
{
dataBinding
.
setUserButton
.
setOnClickListener
(
selectUser
);
dataBinding
.
setSaveButton
.
setOnClickListener
(
SaveSetting
);
...
...
@@ -92,12 +123,25 @@ public class T01SettingActivity extends AppCompatActivity {
dataBinding
.
setGpsSubButton
.
setOnClickListener
(
GpsTimeSub
);
dataBinding
.
setFtpPortEditText
.
addTextChangedListener
(
PortTextWatcher
);
dataBinding
.
setGpsSearchRange
.
addTextChangedListener
(
gpsSearchRangeWatcher
);
dataBinding
.
btnDumpDb
.
setOnClickListener
(
btnDumpDbOnClicked
);
dataBinding
.
setGpsSearchRange
.
setFilters
(
new
InputFilter
[]{
new
GpsSearchRangeInputFilter
()});
}
private
void
observeBinding
()
{
t01SettingViewModel
.
getUsers
().
observe
(
this
,
Users
->
{
this
.
Users
=
Users
;
});
t01SettingViewModel
.
getShowAlertDialogProgress
().
observe
(
this
,
show
->
{
if
(
alertDialogProgress
==
null
){
return
;
}
if
(
show
){
alertDialogProgress
.
show
();
}
else
{
alertDialogProgress
.
dismiss
();
}
});
}
private
void
resultLauncherRegister
()
{
...
...
@@ -109,6 +153,10 @@ public class T01SettingActivity extends AppCompatActivity {
}
});
}
private
final
View
.
OnClickListener
btnDumpDbOnClicked
=
v
->
{
setAlertDialogProgressMessage
(
"資料匯出中請稍後"
);
t01SettingViewModel
.
dumpDB
();
};
private
final
Button
.
OnClickListener
selectUser
=
v
->
{
Intent
intent
=
new
Intent
();
...
...
app/src/main/java/ecom/android/newparkapp/view/T02PlateAndSpaceConfirmActivity.java
View file @
3fcea11a
...
...
@@ -46,6 +46,7 @@ public class T02PlateAndSpaceConfirmActivity extends AppCompatActivity {
private
int
userId
;
private
Shift
shift
;
private
Location
location
;
private
String
lastSpaceId
;
private
ActivityResultLauncher
keyInPlateNumberActivityResultLauncher
;
private
ActivityResultLauncher
roadResultLauncher
;
...
...
@@ -69,6 +70,7 @@ public class T02PlateAndSpaceConfirmActivity extends AppCompatActivity {
location
=
bundle
.
getParcelable
(
"Location"
);
boxInfo
=
(
BoxInfo
)
bundle
.
getSerializable
(
"BoxInfo"
);
file
=
(
File
)
bundle
.
getSerializable
(
"PhotoFile"
);
lastSpaceId
=
bundle
.
getString
(
"LastSpaceId"
);
}
catch
(
NullPointerException
nullPointerException
){
nullPointerException
.
printStackTrace
();
}
...
...
@@ -82,7 +84,7 @@ public class T02PlateAndSpaceConfirmActivity extends AppCompatActivity {
t01SettingViewModel
=
viewModelProvider
.
get
(
T01SettingViewModel
.
class
);
t02SelectSpaceViewModel
=
viewModelProvider
.
get
(
T02SelectSpaceViewModel
.
class
);
t02SelectSpaceViewModel
.
updateGPSPrecision
(
t01SettingViewModel
.
getGPSSearchRange
());
t02SelectSpaceViewModel
.
searchNearSpace
(
location
);
t02SelectSpaceViewModel
.
searchNearSpace
(
location
,
lastSpaceId
);
infoRepository
=
new
InfoRepository
(
this
.
getApplication
());
selectSpaceAdapter
=
new
SelectSpaceAdapter
(
space
->
nextStage
(
space
));
...
...
app/src/main/java/ecom/android/newparkapp/view/T02SelectVehicleBrand.java
0 → 100644
View file @
3fcea11a
package
ecom
.
android
.
newparkapp
.
view
;
import
androidx.appcompat.app.AppCompatActivity
;
import
androidx.databinding.DataBindingUtil
;
import
androidx.recyclerview.widget.GridLayoutManager
;
import
android.content.Intent
;
import
android.os.Bundle
;
import
ecom.android.newparkapp.R
;
import
ecom.android.newparkapp.adapter.SelectVehicleBrandAdapter
;
import
ecom.android.newparkapp.databinding.ActivityT02SelectVehicleBrandBinding
;
import
ecom.android.newparkapp.entity.VehicleBrand
;
import
ecom.android.newparkapp.entity.VehicleColor
;
import
ecom.android.newparkapp.repository.InfoRepository
;
public
class
T02SelectVehicleBrand
extends
AppCompatActivity
{
private
ActivityT02SelectVehicleBrandBinding
dataBinding
;
private
InfoRepository
infoRepository
;
private
SelectVehicleBrandAdapter
selectVehicleBrandAdapter
;
@Override
protected
void
onCreate
(
Bundle
savedInstanceState
)
{
super
.
onCreate
(
savedInstanceState
);
dataBinding
=
DataBindingUtil
.
setContentView
(
this
,
R
.
layout
.
activity_t02_select_vehicle_brand
);
infoRepository
=
new
InfoRepository
(
getApplication
());
selectVehicleBrandAdapter
=
new
SelectVehicleBrandAdapter
(
vehicleBrand
->
vehicleBrandSelected
(
vehicleBrand
));
infoRepository
.
vehicleBrandDao
.
getAllLiveData
().
observe
(
this
,
vehicleBrands
->
selectVehicleBrandAdapter
.
submitList
(
vehicleBrands
));
dataBinding
.
rvSelectOption
.
setLayoutManager
(
new
GridLayoutManager
(
this
,
2
));
dataBinding
.
rvSelectOption
.
setAdapter
(
selectVehicleBrandAdapter
);
dataBinding
.
btnSelectBack
.
setOnClickListener
(
view
->
vehicleBrandSelected
(
null
));
}
private
void
vehicleBrandSelected
(
VehicleBrand
vehicleBrand
){
if
(
vehicleBrand
==
null
){
setResult
(
RESULT_CANCELED
);
}
else
{
Intent
intent
=
getIntent
();
Bundle
bundle
=
new
Bundle
();
bundle
.
putParcelable
(
"VehicleBrand"
,
vehicleBrand
);
intent
.
putExtras
(
bundle
);
setResult
(
RESULT_OK
,
intent
);
}
finish
();
}
}
\ No newline at end of file
app/src/main/java/ecom/android/newparkapp/view/T02SelectVehicleColor.java
0 → 100644
View file @
3fcea11a
package
ecom
.
android
.
newparkapp
.
view
;
import
androidx.appcompat.app.AppCompatActivity
;
import
androidx.databinding.DataBindingUtil
;
import
androidx.recyclerview.widget.GridLayoutManager
;
import
android.content.Intent
;
import
android.os.Bundle
;
import
ecom.android.newparkapp.R
;
import
ecom.android.newparkapp.adapter.SelectVehicleColorAdapter
;
import
ecom.android.newparkapp.adapter.SelectVehicleTypeAdapter
;
import
ecom.android.newparkapp.databinding.ActivityT02SelectVehicleColorBinding
;
import
ecom.android.newparkapp.entity.VehicleColor
;
import
ecom.android.newparkapp.entity.VehicleType
;
import
ecom.android.newparkapp.repository.InfoRepository
;
public
class
T02SelectVehicleColor
extends
AppCompatActivity
{
private
ActivityT02SelectVehicleColorBinding
dataBinding
;
private
InfoRepository
infoRepository
;
private
SelectVehicleColorAdapter
selectVehicleColorAdapter
;
@Override
protected
void
onCreate
(
Bundle
savedInstanceState
)
{
super
.
onCreate
(
savedInstanceState
);
dataBinding
=
DataBindingUtil
.
setContentView
(
this
,
R
.
layout
.
activity_t02_select_vehicle_color
);
infoRepository
=
new
InfoRepository
(
getApplication
());
selectVehicleColorAdapter
=
new
SelectVehicleColorAdapter
(
vehicleColors
->
vehicleColorSelected
(
vehicleColors
));
infoRepository
.
vehicleColorDao
.
getAllLiveData
().
observe
(
this
,
vehicleColors
->
{
selectVehicleColorAdapter
.
submitList
(
vehicleColors
);});
dataBinding
.
rvSelectOption
.
setLayoutManager
(
new
GridLayoutManager
(
this
,
2
));
dataBinding
.
rvSelectOption
.
setAdapter
(
selectVehicleColorAdapter
);
dataBinding
.
btnSelectBack
.
setOnClickListener
(
view
->
vehicleColorSelected
(
null
));
}
private
void
vehicleColorSelected
(
VehicleColor
vehicleColor
){
if
(
vehicleColor
==
null
){
setResult
(
RESULT_CANCELED
);
}
else
{
Intent
intent
=
getIntent
();
Bundle
bundle
=
new
Bundle
();
bundle
.
putParcelable
(
"VehicleColor"
,
vehicleColor
);
intent
.
putExtras
(
bundle
);
setResult
(
RESULT_OK
,
intent
);
}
finish
();
}
}
\ No newline at end of file
app/src/main/java/ecom/android/newparkapp/view/T02StartActivity.java
View file @
3fcea11a
...
...
@@ -53,6 +53,8 @@ import ecom.android.newparkapp.entity.CaseStatus;
import
ecom.android.newparkapp.entity.Shift
;
import
ecom.android.newparkapp.entity.Space
;
import
ecom.android.newparkapp.entity.User
;
import
ecom.android.newparkapp.entity.VehicleBrand
;
import
ecom.android.newparkapp.entity.VehicleColor
;
import
ecom.android.newparkapp.entity.VehicleType
;
import
ecom.android.newparkapp.repository.ParkApiRepository
;
import
ecom.android.newparkapp.viewModel.BlueToothPortViewModel
;
...
...
@@ -81,6 +83,8 @@ public class T02StartActivity extends AppCompatActivity {
private
ActivityResultLauncher
vehicleTypeResultLauncher
;
private
ActivityResultLauncher
spaceResultLauncher
;
private
ActivityResultLauncher
vehicleColorResultLauncher
;
private
ActivityResultLauncher
vehicleBrandResultLauncher
;
private
ActivityResultLauncher
plateNumberResultLauncher
;
private
ActivityResultLauncher
takePhotosActivityResultLauncher
;
private
ActivityResultLauncher
addPhotosActivityResultLauncher
;
...
...
@@ -103,7 +107,7 @@ public class T02StartActivity extends AppCompatActivity {
// 自動順序
final
private
List
<
Stage
>
stageSequence
=
new
ArrayList
<
Stage
>(
Arrays
.
asList
(
Stage
.
SPACE
,
Stage
.
VEHICLE_TYPE
,
Stage
.
PLATE_NUMBER
));
final
private
List
<
Stage
>
stageSequence
=
new
ArrayList
<
Stage
>(
Arrays
.
asList
(
Stage
.
SPACE
,
Stage
.
VEHICLE_TYPE
,
Stage
.
PLATE_NUMBER
,
Stage
.
VEHICLE_COLOR
,
Stage
.
VEHICLE_BRAND
));
@Override
protected
void
onCreate
(
Bundle
savedInstanceState
)
{
...
...
@@ -198,6 +202,9 @@ public class T02StartActivity extends AppCompatActivity {
dataBinding
.
btnGpsSearchMode
.
setOnClickListener
(
v
->
btnGpsSearchModeOnClicked
());
dataBinding
.
btnSelectPrinter
.
setOnClickListener
(
v
->
selectPrinterDialog
());
dataBinding
.
btnAddPhoto
.
setOnClickListener
(
v
->
btnAddPhotoOnClicked
());
dataBinding
.
btnVehicleColor
.
setOnClickListener
(
v
->
btnVehicleColorOnClicked
());
dataBinding
.
btnVehicleBrand
.
setOnClickListener
(
v
->
btnVehicleBrandOnClicked
());
// 搜尋是否有相關車格資料
dataBinding
.
btnParkingSpace
.
setOnClickListener
(
v
->
btnParkingSpaceOnClicked
());
...
...
@@ -387,6 +394,24 @@ public class T02StartActivity extends AppCompatActivity {
t02StartViewModel
.
addNewPhotos
(
photoFile
);
}
});
vehicleColorResultLauncher
=
registerForActivityResult
(
new
ActivityResultContracts
.
StartActivityForResult
(),
result
->
{
if
(
result
.
getResultCode
()
==
RESULT_OK
&&
result
.
getData
()
!=
null
){
VehicleColor
vehicleColor
=
result
.
getData
().
getParcelableExtra
(
"VehicleColor"
);
t02StartViewModel
.
setVehicleColor
(
vehicleColor
);
// 自動下一階段
autoNext
(
t01SettingViewModel
.
getAutoNext
(),
Stage
.
VEHICLE_COLOR
);
}
});
vehicleBrandResultLauncher
=
registerForActivityResult
(
new
ActivityResultContracts
.
StartActivityForResult
(),
result
->
{
if
(
result
.
getResultCode
()
==
RESULT_OK
&&
result
.
getData
()
!=
null
){
VehicleBrand
vehicleBrand
=
result
.
getData
().
getParcelableExtra
(
"VehicleBrand"
);
t02StartViewModel
.
setVehicleBrand
(
vehicleBrand
);
// 自動下一階段
autoNext
(
t01SettingViewModel
.
getAutoNext
(),
Stage
.
VEHICLE_BRAND
);
}
});
}
private
void
observeBinding
()
{
...
...
@@ -934,6 +959,17 @@ public class T02StartActivity extends AppCompatActivity {
break
outerloop
;
}
break
;
case
VEHICLE_COLOR:
if
(
tempCase
.
vehicleColor
==
null
){
index
=
i
;
break
outerloop
;
}
break
;
case
VEHICLE_BRAND:
if
(
tempCase
.
vehicleBrand
==
null
){{
index
=
i
;
break
outerloop
;
}}
default
:
break
;
}
...
...
@@ -959,6 +995,20 @@ public class T02StartActivity extends AppCompatActivity {
autoNext
(
enable
,
nextStage
);
}
break
;
case
VEHICLE_COLOR:
if
(
tempCase
.
vehicleColor
==
null
){
btnVehicleColorOnClicked
();
}
else
{
autoNext
(
enable
,
nextStage
);
}
break
;
case
VEHICLE_BRAND:
if
(
tempCase
.
vehicleBrand
==
null
){
btnVehicleBrandOnClicked
();
}
else
{
autoNext
(
enable
,
nextStage
);
}
break
;
case
PLATE_NUMBER:
if
(
tempCase
.
plateNumber
==
null
||
tempCase
.
plateNumber
.
trim
().
isEmpty
()){
btnPlateNumberOnClicked
();
...
...
@@ -990,6 +1040,13 @@ public class T02StartActivity extends AppCompatActivity {
if
(
boxInfo
!=
null
){
bundle
.
putSerializable
(
"BoxInfo"
,
boxInfo
);
}
// 取得當前案件的車格
Case
currentCase
=
t02StartViewModel
.
getCurrentCase
().
getValue
();
if
(
currentCase
!=
null
&&
currentCase
.
space
!=
null
){
String
lastSpaceId
=
currentCase
.
space
.
id
;
bundle
.
putString
(
"LastSpaceId"
,
lastSpaceId
);
}
bundle
.
putParcelable
(
"Shift"
,
shift
);
bundle
.
putInt
(
"UserId"
,
currentUser
.
id
);
bundle
.
putParcelable
(
"Location"
,
fusedGpsViewModel
.
getLocation
().
getValue
());
...
...
@@ -1002,10 +1059,24 @@ public class T02StartActivity extends AppCompatActivity {
takePhoto
(
addPhotosActivityResultLauncher
);
}
private
void
btnVehicleBrandOnClicked
()
{
Intent
intent
=
new
Intent
();
intent
.
setClass
(
this
,
T02SelectVehicleBrand
.
class
);
vehicleBrandResultLauncher
.
launch
(
intent
);
}
private
void
btnVehicleColorOnClicked
()
{
Intent
intent
=
new
Intent
();
intent
.
setClass
(
this
,
T02SelectVehicleColor
.
class
);
vehicleColorResultLauncher
.
launch
(
intent
);
}
enum
Stage
{
TAKE_PHOTO
,
SPACE
,
VEHICLE_TYPE
,
PLATE_NUMBER
;
PLATE_NUMBER
,
VEHICLE_COLOR
,
VEHICLE_BRAND
;
}
}
\ No newline at end of file
app/src/main/java/ecom/android/newparkapp/viewModel/T01ImportDbViewModel.java
View file @
3fcea11a
This diff is collapsed.
Click to expand it.
app/src/main/java/ecom/android/newparkapp/viewModel/T01SettingViewModel.java
View file @
3fcea11a
...
...
@@ -2,6 +2,8 @@ package ecom.android.newparkapp.viewModel;
import
static
android
.
content
.
Context
.
MODE_PRIVATE
;
import
static
java
.
lang
.
Thread
.
sleep
;
import
android.app.Application
;
import
android.content.Context
;
import
android.content.SharedPreferences
;
...
...
@@ -22,6 +24,8 @@ import java.text.SimpleDateFormat;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Locale
;
import
java.util.concurrent.ExecutorService
;
import
java.util.concurrent.Executors
;
import
ecom.android.newparkapp.Common
;
import
ecom.android.newparkapp.R
;
...
...
@@ -41,6 +45,9 @@ public class T01SettingViewModel extends AndroidViewModel {
private
LiveData
<
List
<
User
>>
Users
;
private
InfoRepository
infoRepository
;
private
ExecutorService
executorService
;
private
MutableLiveData
<
Boolean
>
showAlertDialogProgress
=
new
MutableLiveData
<>();
public
T01SettingViewModel
(
@NonNull
Application
application
)
{
super
(
application
);
...
...
@@ -50,6 +57,8 @@ public class T01SettingViewModel extends AndroidViewModel {
infoRepository
=
new
InfoRepository
(
application
);
Users
=
infoRepository
.
userDao
.
getAllLiveData
();
executorService
=
Executors
.
newFixedThreadPool
(
application
.
getResources
().
getInteger
(
R
.
integer
.
number_db_thread_pool
));
showAlertDialogProgress
.
setValue
(
false
);
}
public
void
restorePrefs
(){
...
...
@@ -235,4 +244,27 @@ public class T01SettingViewModel extends AndroidViewModel {
return
PREF
.
getValue
()
!=
null
?
PREF
.
getValue
().
pref_UploadT
*
60
*
1000
:
0
;
}
public
void
dumpDB
()
{
executorService
.
execute
(
new
Runnable
()
{
@Override
public
void
run
()
{
showAlertDialogProgress
.
postValue
(
true
);
List
<
Case
>
cases
=
infoRepository
.
caseDao
.
getAll
();
String
save_path
=
Environment
.
getExternalStorageDirectory
()
+
getApplication
().
getString
(
R
.
string
.
sysDataDB_path
);
File
dbFile
=
new
File
(
save_path
+
"dumpDB.txt"
);
if
(
dbFile
.
exists
()){
dbFile
.
delete
();
}
for
(
int
i
=
0
;
i
<
cases
.
size
();
i
++){
Case
thisCase
=
cases
.
get
(
i
);
Common
.
writeTXT
(
getApplication
(),
save_path
,
"dumpDB.txt"
,
thisCase
.
getDetailString
());
}
showAlertDialogProgress
.
postValue
(
false
);
}
});
}
public
LiveData
<
Boolean
>
getShowAlertDialogProgress
(){
return
showAlertDialogProgress
;
}
}
app/src/main/java/ecom/android/newparkapp/viewModel/T02SelectSpaceViewModel.java
View file @
3fcea11a
...
...
@@ -62,6 +62,26 @@ public class T02SelectSpaceViewModel extends AndroidViewModel {
getMoreNearSpace
(
nearSpace
);
}
public
void
searchNearSpace
(
Location
location
,
String
lastSpaceId
)
{
double
latitude
=
location
.
getLatitude
();
double
longitude
=
location
.
getLongitude
();
currentRoad
.
setValue
(
null
);
List
<
Space
>
nearSpace
=
infoRepository
.
spaceDao
.
getAllByLocation
(
latitude
+
gpsPrecision
,
latitude
-
gpsPrecision
,
longitude
+
gpsPrecision
,
longitude
-
gpsPrecision
);
if
(
lastSpaceId
!=
null
&&
nearSpace
.
size
()
==
0
){
List
<
Space
>
nextSpace
=
infoRepository
.
spaceDao
.
getNextSpaces
(
lastSpaceId
,
5
);
for
(
int
i
=
0
;
i
<
nextSpace
.
size
();
i
++)
{
Space
space
=
nextSpace
.
get
(
i
);
if
(
nearSpace
.
stream
().
noneMatch
(
s
->
s
.
id
.
equals
(
space
.
id
))){
nearSpace
.
add
(
space
);
}
}
}
getMoreNearSpace
(
nearSpace
);
}
private
void
getMoreNearSpace
(
List
<
Space
>
nearSpace
){
List
<
Space
>
moreNearSpace
=
new
ArrayList
<>();
if
(
nearSpace
.
size
()
>
0
)
{
...
...
app/src/main/java/ecom/android/newparkapp/viewModel/T02StartViewModel.java
View file @
3fcea11a
...
...
@@ -45,6 +45,8 @@ import ecom.android.newparkapp.entity.Space;
import
ecom.android.newparkapp.entity.SpaceFee
;
import
ecom.android.newparkapp.entity.SpaceType
;
import
ecom.android.newparkapp.entity.User
;
import
ecom.android.newparkapp.entity.VehicleBrand
;
import
ecom.android.newparkapp.entity.VehicleColor
;
import
ecom.android.newparkapp.entity.VehicleType
;
import
ecom.android.newparkapp.repository.InfoRepository
;
import
ecom.android.newparkapp.repository.ParkApiRepository
;
...
...
@@ -125,6 +127,7 @@ public class T02StartViewModel extends AndroidViewModel {
public
void
setCurrentUser
(
User
user
){
currentUser
.
setValue
(
user
);};
public
LiveData
<
Case
>
getCurrentCase
(){
return
currentCase
;}
public
void
setVehicleType
(
VehicleType
vehicleType
){
Case
tempCase
=
currentCase
.
getValue
();
tempCase
.
vehicleType
=
vehicleType
;
...
...
@@ -133,6 +136,24 @@ public class T02StartViewModel extends AndroidViewModel {
currentCase
.
setValue
(
tempCase
);
}
public
void
setVehicleColor
(
VehicleColor
vehicleColor
){
Case
tempCase
=
currentCase
.
getValue
();
if
(
tempCase
==
null
||
tempCase
.
caseStatus
!=
CaseStatus
.
NEW
){
return
;
}
tempCase
.
vehicleColor
=
vehicleColor
;
currentCase
.
setValue
(
tempCase
);
}
public
void
setVehicleBrand
(
VehicleBrand
vehicleBrand
){
Case
tempCase
=
currentCase
.
getValue
();
if
(
tempCase
==
null
||
tempCase
.
caseStatus
!=
CaseStatus
.
NEW
){
return
;
}
tempCase
.
vehicleBrand
=
vehicleBrand
;
currentCase
.
setValue
(
tempCase
);
}
public
void
setSpace
(
Space
space
){
Case
tempCase
=
currentCase
.
getValue
();
if
(
tempCase
.
caseStatus
!=
CaseStatus
.
NEW
){
...
...
app/src/main/res/layout/activity_t01_import_db.xml
View file @
3fcea11a
...
...
@@ -11,8 +11,44 @@
<androidx.recyclerview.widget.RecyclerView
android:id=
"@+id/rv_import_db"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
tools:listitem=
"@layout/recycler_view_db_table_item"
/>
android:layout_height=
"0dp"
android:layout_weight=
"8"
tools:listitem=
"@layout/recycler_view_db_table_item"
>
</androidx.recyclerview.widget.RecyclerView>
<ImageView
android:layout_width=
"match_parent"
android:layout_height=
"0dp"
android:layout_marginTop=
"10dp"
android:layout_marginBottom=
"10dp"
android:layout_weight=
"0.1"
app:srcCompat=
"@color/black"
>
</ImageView>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"0dp"
android:layout_weight=
"1"
android:orientation=
"horizontal"
>
<Button
android:id=
"@+id/btn_import_all"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_weight=
"1"
android:text=
"匯入全部"
android:textSize=
"20sp"
android:layout_gravity=
"center"
/>
<Button
android:id=
"@+id/btn_update_all"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_weight=
"1"
android:textSize=
"20sp"
android:text=
"更新全部"
android:layout_gravity=
"center"
/>
</LinearLayout>
</LinearLayout>
</layout>
\ No newline at end of file
app/src/main/res/layout/activity_t01_setting_layout.xml
View file @
3fcea11a
...
...
@@ -374,6 +374,16 @@
android:text=
"匯入資料"
android:textSize=
"25sp"
/>
<Button
android:id=
"@+id/btn_dump_db"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_gravity=
"right"
android:layout_marginTop=
"5dp"
android:gravity=
"center"
android:text=
"資料匯出"
android:textSize=
"25sp"
/>
<Button
android:id=
"@+id/advanced_button"
android:layout_width=
"match_parent"
...
...
app/src/main/res/layout/activity_t02_select_vehicle_brand.xml
0 → 100644
View file @
3fcea11a
<?xml version="1.0" encoding="utf-8"?>
<layout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
xmlns:tools=
"http://schemas.android.com/tools"
>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:orientation=
"vertical"
tools:context=
".view.T02SelectVehicleBrand"
>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:layout_weight=
"1"
android:orientation=
"horizontal"
android:paddingStart=
"0dp"
android:paddingEnd=
"5dp"
>
<TextView
android:id=
"@+id/tv_select_title"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:layout_weight=
"0.25"
android:gravity=
"center|center_vertical"
android:text=
"廠牌"
android:textSize=
"30sp"
/>
<Button
android:id=
"@+id/btn_select_back"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:layout_weight=
"0.75"
android:text=
"@string/label_back"
android:textSize=
"30sp"
/>
</LinearLayout>
<androidx.recyclerview.widget.RecyclerView
android:id=
"@+id/rv_select_option"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:layout_weight=
"0.1"
android:padding=
"6dp"
app:layoutManager =
"androidx.recyclerview.widget.GridLayoutManager"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintLeft_toLeftOf=
"parent"
app:layout_constraintRight_toRightOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
app:spanCount=
"2"
tools:listitem=
"@layout/recycler_view_vehicle_brand_item"
/>
</LinearLayout>
</layout>
\ No newline at end of file
app/src/main/res/layout/activity_t02_select_vehicle_color.xml
0 → 100644
View file @
3fcea11a
<?xml version="1.0" encoding="utf-8"?>
<layout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
xmlns:tools=
"http://schemas.android.com/tools"
>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:orientation=
"vertical"
tools:context=
".view.T02SelectVehicleColor"
>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:layout_weight=
"1"
android:orientation=
"horizontal"
android:paddingStart=
"0dp"
android:paddingEnd=
"5dp"
>
<TextView
android:id=
"@+id/tv_select_title"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:layout_weight=
"0.25"
android:gravity=
"center|center_vertical"
android:text=
"車色"
android:textSize=
"30sp"
/>
<Button
android:id=
"@+id/btn_select_back"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:layout_weight=
"0.75"
android:text=
"@string/label_back"
android:textSize=
"30sp"
/>
</LinearLayout>
<androidx.recyclerview.widget.RecyclerView
android:id=
"@+id/rv_select_option"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:layout_weight=
"0.1"
android:padding=
"6dp"
app:layoutManager =
"androidx.recyclerview.widget.GridLayoutManager"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintLeft_toLeftOf=
"parent"
app:layout_constraintRight_toRightOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
app:spanCount=
"2"
tools:listitem=
"@layout/recycler_view_vehicle_color_item"
/>
</LinearLayout>
</layout>
\ No newline at end of file
app/src/main/res/layout/activity_t02_start.xml
View file @
3fcea11a
...
...
@@ -323,7 +323,6 @@
android:layout_height=
"wrap_content"
android:layout_marginTop=
"10dp"
android:orientation=
"horizontal"
android:visibility=
"gone"
app:layout_constraintBottom_toTopOf=
"@+id/linearLayout11"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintHorizontal_bias=
"0.5"
...
...
@@ -341,10 +340,11 @@
android:textSize=
"21sp"
/>
<Button
android:id=
"@+id/
carColor_button
"
android:id=
"@+id/
btn_vehicle_color
"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:layout_weight=
"0.17"
android:text=
"@{t02StartViewModel.currentCase.vehicleColor.name}"
android:textSize=
"28sp"
/>
</LinearLayout>
...
...
@@ -354,7 +354,6 @@
android:layout_height=
"wrap_content"
android:layout_marginTop=
"10dp"
android:orientation=
"horizontal"
android:visibility=
"gone"
app:layout_constraintBottom_toTopOf=
"@+id/linearLayout4"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintHorizontal_bias=
"0.5"
...
...
@@ -372,10 +371,11 @@
android:textSize=
"21sp"
/>
<Button
android:id=
"@+id/
carBrand_button
"
android:id=
"@+id/
btn_vehicle_brand
"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:layout_weight=
"0.17"
android:text=
"@{t02StartViewModel.currentCase.vehicleBrand.name}"
android:textSize=
"28sp"
/>
</LinearLayout>
...
...
app/src/main/res/layout/recycler_view_vehicle_brand_item.xml
0 → 100644
View file @
3fcea11a
<?xml version="1.0" encoding="utf-8"?>
<layout
xmlns:android=
"http://schemas.android.com/apk/res/android"
>
<Button
android:id=
"@+id/btn_select_vehicle_brand"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:text=
"Button"
android:textSize=
"20dp"
/>
</layout>
app/src/main/res/layout/recycler_view_vehicle_color_item.xml
0 → 100644
View file @
3fcea11a
<?xml version="1.0" encoding="utf-8"?>
<layout
xmlns:android=
"http://schemas.android.com/apk/res/android"
>
<Button
android:id=
"@+id/btn_select_vehicle_color"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:text=
"Button"
android:textSize=
"20dp"
/>
</layout>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment