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
88785ac4
Commit
88785ac4
authored
Aug 04, 2022
by
YONG-LIN SU
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1. 針對資料庫進行調整
2. 刪除不必要欄位 3. 修正部分bug
parent
d4472e97
Changes
24
Hide whitespace changes
Inline
Side-by-side
Showing
24 changed files
with
395 additions
and
155 deletions
+395
-155
deploymentTargetDropDown.xml
.idea/deploymentTargetDropDown.xml
+1
-1
CaseListAdapter.java
...java/ecom/android/newparkapp/adapter/CaseListAdapter.java
+3
-2
ConvertBindingAdapter.java
...com/android/newparkapp/adapter/ConvertBindingAdapter.java
+14
-0
CaseStatusConverter.java
...com/android/newparkapp/converter/CaseStatusConverter.java
+32
-0
ShiftConverter.java
...ava/ecom/android/newparkapp/converter/ShiftConverter.java
+19
-0
SpaceStatusConverter.java
...om/android/newparkapp/converter/SpaceStatusConverter.java
+19
-0
SpaceTypeConverter.java
...ecom/android/newparkapp/converter/SpaceTypeConverter.java
+2
-3
SpaceStatusDao.java
...main/java/ecom/android/newparkapp/dao/SpaceStatusDao.java
+0
-36
InfoDatabase.java
...n/java/ecom/android/newparkapp/database/InfoDatabase.java
+5
-5
Case.java
app/src/main/java/ecom/android/newparkapp/entity/Case.java
+69
-16
CaseStatus.java
.../main/java/ecom/android/newparkapp/entity/CaseStatus.java
+28
-2
Shift.java
app/src/main/java/ecom/android/newparkapp/entity/Shift.java
+34
-0
Space.java
app/src/main/java/ecom/android/newparkapp/entity/Space.java
+13
-10
SpaceStatus.java
...main/java/ecom/android/newparkapp/entity/SpaceStatus.java
+5
-24
SpaceType.java
...c/main/java/ecom/android/newparkapp/entity/SpaceType.java
+34
-0
User.java
app/src/main/java/ecom/android/newparkapp/entity/User.java
+0
-1
CarPrinter_TPB250.java
...va/ecom/android/newparkapp/printer/CarPrinter_TPB250.java
+2
-2
InfoRepository.java
...va/ecom/android/newparkapp/repository/InfoRepository.java
+0
-3
MainActivity.java
.../main/java/ecom/android/newparkapp/view/MainActivity.java
+10
-4
T02StartActivity.java
...n/java/ecom/android/newparkapp/view/T02StartActivity.java
+19
-4
T01ImportDbViewModel.java
...om/android/newparkapp/viewModel/T01ImportDbViewModel.java
+4
-23
T02StartViewModel.java
.../ecom/android/newparkapp/viewModel/T02StartViewModel.java
+64
-4
activity_t02_start.xml
app/src/main/res/layout/activity_t02_start.xml
+17
-14
strings.xml
app/src/main/res/values/strings.xml
+1
-1
No files found.
.idea/deploymentTargetDropDown.xml
View file @
88785ac4
...
...
@@ -12,6 +12,6 @@
</deviceKey>
</Target>
</runningDeviceTargetSelectedWithDropDown>
<timeTargetWasSelectedWithDropDown
value=
"2022-08-0
3T07:12:30.7387276
00Z"
/>
<timeTargetWasSelectedWithDropDown
value=
"2022-08-0
4T00:44:36.7451814
00Z"
/>
</component>
</project>
\ No newline at end of file
app/src/main/java/ecom/android/newparkapp/adapter/CaseListAdapter.java
View file @
88785ac4
...
...
@@ -13,6 +13,7 @@ import androidx.recyclerview.widget.RecyclerView;
import
java.io.File
;
import
java.text.SimpleDateFormat
;
import
ecom.android.newparkapp.converter.CaseStatusConverter
;
import
ecom.android.newparkapp.databinding.CardViewListFilesItemBinding
;
import
ecom.android.newparkapp.entity.CaseAndAllCasePhoto
;
...
...
@@ -68,13 +69,13 @@ public class CaseListAdapter extends ListAdapter<CaseAndAllCasePhoto, CaseListAd
dataBinding
.
txvBillingNumber2
.
setText
(
caseAndAllCasePhoto
.
thisCase
.
billingNumber2
);
// 狀態
dataBinding
.
txvStatus
.
setText
(
String
.
valueOf
(
caseAndAllCasePhoto
.
thisCase
.
bill
Status
));
dataBinding
.
txvStatus
.
setText
(
CaseStatusConverter
.
toString
(
caseAndAllCasePhoto
.
thisCase
.
case
Status
));
// 時數
dataBinding
.
txvHours
.
setText
(
String
.
valueOf
(
caseAndAllCasePhoto
.
thisCase
.
periodHour
));
// 第一張 照片
//
TODO:
2022/8/1 取得第一張 照片作為展示之用途
// 2022/8/1 取得第一張 照片作為展示之用途
File
file
=
null
;
for
(
int
i
=
0
;
i
<
caseAndAllCasePhoto
.
casePhotos
.
size
();
i
++){
...
...
app/src/main/java/ecom/android/newparkapp/adapter/ConvertBindingAdapter.java
View file @
88785ac4
...
...
@@ -10,6 +10,7 @@ import java.text.SimpleDateFormat;
import
java.util.Date
;
import
ecom.android.newparkapp.entity.Case
;
import
ecom.android.newparkapp.entity.CaseStatus
;
import
ecom.android.newparkapp.viewModel.BlueToothViewModel
;
public
class
ConvertBindingAdapter
{
...
...
@@ -48,4 +49,17 @@ public class ConvertBindingAdapter {
textView
.
setTextColor
(
colorCode
);
}
@BindingAdapter
(
"caseStatus2Color"
)
public
static
void
CaseStatus2Color
(
TextView
textView
,
CaseStatus
caseStatus
){
int
colorCode
=
Color
.
BLACK
;
switch
(
caseStatus
){
case
LOCK:
colorCode
=
Color
.
RED
;
break
;
default
:
break
;
}
textView
.
setTextColor
(
colorCode
);
}
}
\ No newline at end of file
app/src/main/java/ecom/android/newparkapp/converter/CaseStatusConverter.java
0 → 100644
View file @
88785ac4
package
ecom
.
android
.
newparkapp
.
converter
;
import
androidx.room.ProvidedTypeConverter
;
import
androidx.room.TypeConverter
;
import
ecom.android.newparkapp.entity.CaseStatus
;
@ProvidedTypeConverter
public
class
CaseStatusConverter
{
@TypeConverter
public
static
CaseStatus
toCaseStatus
(
int
value
){
return
CaseStatus
.
values
()[
value
];
}
@TypeConverter
public
static
int
fromCaseStatus
(
CaseStatus
caseStatus
){
return
caseStatus
.
ordinal
();
}
public
static
String
toString
(
CaseStatus
caseStatus
){
String
caseStatusString
=
""
;
switch
(
caseStatus
){
case
LOCK:
caseStatusString
=
"註銷"
;
break
;
default
:
caseStatusString
=
"啟用"
;
break
;
}
return
caseStatusString
;
}
}
app/src/main/java/ecom/android/newparkapp/converter/ShiftConverter.java
0 → 100644
View file @
88785ac4
package
ecom
.
android
.
newparkapp
.
converter
;
import
androidx.room.ProvidedTypeConverter
;
import
androidx.room.TypeConverter
;
import
ecom.android.newparkapp.entity.Shift
;
@ProvidedTypeConverter
public
class
ShiftConverter
{
@TypeConverter
public
static
Shift
toShift
(
int
value
){
return
Shift
.
values
()[
value
];
}
@TypeConverter
public
static
int
fromShift
(
Shift
shift
){
return
shift
.
ordinal
();
}
}
app/src/main/java/ecom/android/newparkapp/converter/SpaceStatusConverter.java
0 → 100644
View file @
88785ac4
package
ecom
.
android
.
newparkapp
.
converter
;
import
androidx.room.ProvidedTypeConverter
;
import
androidx.room.TypeConverter
;
import
ecom.android.newparkapp.entity.SpaceStatus
;
@ProvidedTypeConverter
public
class
SpaceStatusConverter
{
@TypeConverter
public
static
SpaceStatus
toSpaceStatus
(
int
value
){
return
SpaceStatus
.
values
()[
value
];
}
@TypeConverter
public
static
int
fromSpaceStatus
(
SpaceStatus
spaceStatus
){
return
spaceStatus
.
ordinal
();
}
}
app/src/main/java/ecom/android/newparkapp/converter/SpaceTypeConverter.java
View file @
88785ac4
package
ecom
.
android
.
newparkapp
.
converter
;
import
static
ecom
.
android
.
newparkapp
.
entity
.
Space
.
SpaceType
.
UNSET_SPACE
;
import
androidx.room.ProvidedTypeConverter
;
import
androidx.room.TypeConverter
;
import
ecom.android.newparkapp.entity.Space
.Space
Type
;
import
ecom.android.newparkapp.entity.SpaceType
;
@ProvidedTypeConverter
public
class
SpaceTypeConverter
{
@TypeConverter
public
static
SpaceType
toSpaceType
(
int
value
)
{
return
value
>
SpaceType
.
values
().
length
?
UNSET_SPACE:
SpaceType
.
values
()[
value
];
return
value
>
SpaceType
.
values
().
length
?
SpaceType
.
UNSET_SPACE
:
SpaceType
.
values
()[
value
];
}
@TypeConverter
...
...
app/src/main/java/ecom/android/newparkapp/dao/SpaceStatusDao.java
deleted
100644 → 0
View file @
d4472e97
package
ecom
.
android
.
newparkapp
.
dao
;
import
androidx.lifecycle.LiveData
;
import
androidx.room.Dao
;
import
androidx.room.Delete
;
import
androidx.room.Insert
;
import
androidx.room.Query
;
import
java.util.List
;
import
ecom.android.newparkapp.entity.SpaceStatus
;
@Dao
public
interface
SpaceStatusDao
{
@Query
(
"SELECT * FROM spacestatus"
)
List
<
SpaceStatus
>
getAll
();
@Query
(
"SELECT * FROM spacestatus"
)
LiveData
<
List
<
SpaceStatus
>>
getAllLiveData
();
@Query
(
"SELECT * FROM spacestatus WHERE id IN (:Ids)"
)
List
<
SpaceStatus
>
loadAllByIds
(
int
[]
Ids
);
@Query
(
"SELECT * FROM spacestatus WHERE name LIKE :first LIMIT 1"
)
SpaceStatus
findByName
(
String
first
);
@Insert
void
insertAll
(
SpaceStatus
...
spaceStatuses
);
@Delete
void
delete
(
SpaceStatus
spaceStatus
);
@Query
(
"DELETE FROM spacestatus"
)
void
deleteAll
();
}
app/src/main/java/ecom/android/newparkapp/database/InfoDatabase.java
View file @
88785ac4
...
...
@@ -8,13 +8,15 @@ import androidx.room.RoomDatabase;
import
androidx.room.TypeConverters
;
import
ecom.android.newparkapp.R
;
import
ecom.android.newparkapp.converter.CaseStatusConverter
;
import
ecom.android.newparkapp.converter.ShiftConverter
;
import
ecom.android.newparkapp.converter.SpaceStatusConverter
;
import
ecom.android.newparkapp.converter.SpaceTypeConverter
;
import
ecom.android.newparkapp.dao.CaseDao
;
import
ecom.android.newparkapp.dao.CasePhotoDao
;
import
ecom.android.newparkapp.dao.RoadDao
;
import
ecom.android.newparkapp.dao.SpaceDao
;
import
ecom.android.newparkapp.dao.SpaceRateDao
;
import
ecom.android.newparkapp.dao.SpaceStatusDao
;
import
ecom.android.newparkapp.dao.UserDao
;
import
ecom.android.newparkapp.dao.UserPermissionDao
;
import
ecom.android.newparkapp.dao.VehicleBrandDao
;
...
...
@@ -26,7 +28,6 @@ import ecom.android.newparkapp.converter.LocationConverter;
import
ecom.android.newparkapp.entity.Road
;
import
ecom.android.newparkapp.entity.Space
;
import
ecom.android.newparkapp.entity.SpaceRate
;
import
ecom.android.newparkapp.entity.SpaceStatus
;
import
ecom.android.newparkapp.converter.TimestampConverter
;
import
ecom.android.newparkapp.entity.User
;
import
ecom.android.newparkapp.entity.UserPermission
;
...
...
@@ -35,16 +36,15 @@ import ecom.android.newparkapp.entity.VehicleColor;
import
ecom.android.newparkapp.entity.VehicleType
;
// DataBase 一個資料庫一個,並涵蓋多個資料表
@Database
(
entities
=
{
Case
.
class
,
CasePhoto
.
class
,
Road
.
class
,
Space
.
class
,
SpaceRate
.
class
,
SpaceStatus
.
class
,
User
.
class
,
UserPermission
.
class
,
VehicleBrand
.
class
,
VehicleColor
.
class
,
VehicleType
.
class
},
@Database
(
entities
=
{
Case
.
class
,
CasePhoto
.
class
,
Road
.
class
,
Space
.
class
,
SpaceRate
.
class
,
User
.
class
,
UserPermission
.
class
,
VehicleBrand
.
class
,
VehicleColor
.
class
,
VehicleType
.
class
},
version
=
1
)
@TypeConverters
({
LocationConverter
.
class
,
TimestampConverter
.
class
,
SpaceTypeConverter
.
class
})
@TypeConverters
({
LocationConverter
.
class
,
TimestampConverter
.
class
,
SpaceTypeConverter
.
class
,
SpaceStatusConverter
.
class
,
CaseStatusConverter
.
class
,
ShiftConverter
.
class
})
public
abstract
class
InfoDatabase
extends
RoomDatabase
{
public
abstract
CaseDao
caseDao
();
public
abstract
CasePhotoDao
casePhotoDao
();
public
abstract
RoadDao
roadDao
();
public
abstract
SpaceDao
spaceDao
();
public
abstract
SpaceRateDao
spaceRateDao
();
public
abstract
SpaceStatusDao
spaceStatusDao
();
public
abstract
UserDao
userDao
();
public
abstract
VehicleBrandDao
vehicleBrandDao
();
public
abstract
VehicleColorDao
vehicleColorDao
();
...
...
app/src/main/java/ecom/android/newparkapp/entity/Case.java
View file @
88785ac4
...
...
@@ -4,6 +4,7 @@ import android.bluetooth.BluetoothDevice;
import
android.content.pm.PackageManager
;
import
android.location.Location
;
import
android.os.Build
;
import
android.os.Environment
;
import
androidx.annotation.NonNull
;
import
androidx.core.app.ActivityCompat
;
...
...
@@ -21,6 +22,8 @@ import java.util.Date;
import
java.util.Locale
;
import
java.util.Objects
;
import
ecom.android.newparkapp.Common
;
import
ecom.android.newparkapp.R
;
import
ecom.android.newparkapp.printer.CarPrinter_TPB250
;
import
ecom.android.newparkapp.printer.IBluetoothPrinter
;
...
...
@@ -65,9 +68,6 @@ public class Case {
@ColumnInfo
(
name
=
"location"
)
public
Location
location
;
// gps 座標
@ColumnInfo
(
name
=
"bill_status"
)
public
int
billStatus
;
@ColumnInfo
(
name
=
"photo_count"
)
public
int
photoCount
;
...
...
@@ -83,8 +83,11 @@ public class Case {
@ColumnInfo
(
name
=
"agency"
)
public
int
agency
;
@ColumnInfo
(
name
=
"shift_id"
)
public
String
shiftId
;
// 早班或晚班
@ColumnInfo
(
name
=
"shift"
)
public
Shift
shift
;
// 早班或晚班
@ColumnInfo
(
name
=
"case_status"
)
public
CaseStatus
caseStatus
;
// 案件狀態
@Ignore
public
String
datePath
;
...
...
@@ -98,10 +101,7 @@ public class Case {
@Ignore
public
String
uploadPath
;
@Ignore
public
CaseStatus
caseStatus
;
public
Case
(
String
billingNumber2
,
String
billingNumber1
,
User
user
,
Date
terminateDate
,
Date
caseTime
,
Space
space
,
String
plateNumber
,
VehicleType
vehicleType
,
VehicleColor
vehicleColor
,
VehicleBrand
vehicleBrand
,
float
periodHour
,
int
finalExpenses
,
Location
location
,
int
billStatus
,
int
photoCount
,
Date
updateDate
,
Date
finalTime
,
Boolean
autoPay
,
int
agency
,
String
shiftId
)
{
public
Case
(
String
billingNumber2
,
String
billingNumber1
,
User
user
,
Date
terminateDate
,
Date
caseTime
,
Space
space
,
String
plateNumber
,
VehicleType
vehicleType
,
VehicleColor
vehicleColor
,
VehicleBrand
vehicleBrand
,
float
periodHour
,
int
finalExpenses
,
Location
location
,
int
photoCount
,
Date
updateDate
,
Date
finalTime
,
Boolean
autoPay
,
int
agency
,
Shift
shift
,
CaseStatus
caseStatus
)
{
this
.
billingNumber2
=
billingNumber2
;
this
.
billingNumber1
=
billingNumber1
;
this
.
user
=
user
;
...
...
@@ -115,13 +115,13 @@ public class Case {
this
.
periodHour
=
periodHour
;
this
.
finalExpenses
=
finalExpenses
;
this
.
location
=
location
;
this
.
billStatus
=
billStatus
;
this
.
photoCount
=
photoCount
;
this
.
updateDate
=
updateDate
;
this
.
finalTime
=
finalTime
;
this
.
autoPay
=
autoPay
;
this
.
agency
=
agency
;
this
.
shiftId
=
shiftId
;
this
.
shift
=
shift
;
this
.
caseStatus
=
caseStatus
;
}
public
Case
(){
...
...
@@ -132,14 +132,49 @@ public class Case {
* @return A 或 B
*/
public
String
getShift
(){
// TODO: 2022/7/29 資料庫新增早晚班參照後,取消該方法
return
"A"
;
// 2022/7/29 資料庫新增早晚班參照後,取消該方法
String
shiftLabel
=
""
;
switch
(
this
.
shift
){
case
MORNING:
shiftLabel
=
"A"
;
break
;
case
AFTERNOON:
shiftLabel
=
"B"
;
break
;
default
:
break
;
}
return
shiftLabel
;
}
public
String
getUploadFileName
()
{
return
billingNumber2
+
".txt"
;
}
public
String
getDatePath
(
String
sysData_path
)
{
Calendar
caseCalendar
=
Calendar
.
getInstance
();
caseCalendar
.
setTime
(
this
.
caseTime
);
return
Environment
.
getExternalStorageDirectory
()
+
sysData_path
+
Common
.
getDate
(
caseCalendar
,
false
);
}
public
String
getUserDateFileName
()
{
Calendar
caseCalendar
=
Calendar
.
getInstance
();
caseCalendar
.
setTime
(
this
.
caseTime
);
fileNameBackup
=
"/"
+
getShift
();
//[A]早/晚
fileNameBackup
+=
getUserIDString
()
+
"-"
;
//[85]使用者代號 [-]
fileNameBackup
+=
Common
.
getDate
(
caseCalendar
,
false
);
//[20200114]日期
userDateFileName
=
fileNameBackup
+
".txt"
;
//[A][85][-][20200114][.txt]
return
userDateFileName
;
}
public
String
getUserIDString
(){
return
String
.
format
(
"%02d"
,
this
.
user
.
id
);
}
public
String
getUploadPath
(
String
sysDataUpload_path
)
{
return
Environment
.
getExternalStorageDirectory
()
+
sysDataUpload_path
;
}
/**
* 交換用檔案,串連各項資訊獲得
* @return 交換用檔案字串 A999;99B17V00189;20220817;10:43;A 中山路A;A216 2 1 中山路A;01 自小客;8052-LZ; ; ;0.5;25;Lat:24.1434911 Lon:120.7285887;1;1;
...
...
@@ -151,7 +186,7 @@ public class Case {
DateFormat
caseTimeFormat
=
new
SimpleDateFormat
(
"HH:mm"
);
String
caseTimeString
=
caseTimeFormat
.
format
(
caseTime
);
// 10:43
//
TODO:
2022/7/29 加入GPS座標功能後,修改該處假資料
// 2022/7/29 加入GPS座標功能後,修改該處假資料
String
locationString
=
String
.
format
(
"Lat:%f Lon:%f"
,
location
.
getLatitude
(),
location
.
getLongitude
());
// Lat:24.1434911 Lon:120.7285887
...
...
@@ -169,10 +204,23 @@ public class Case {
periodHour
,
finalExpenses
,
locationString
,
billStatus
,
getBillStatus
()
,
photoCount
);
}
/**
* 透過 CaseStatus 轉換成 billStatus 交換用String
* @return 註銷或啟用狀態
*/
public
String
getBillStatus
(){
// billStatus 0 -> 撤銷 , 1 -> 啟用
String
billStatus
=
"1"
;
if
(
this
.
caseStatus
==
CaseStatus
.
LOCK
){
billStatus
=
"0"
;
}
return
billStatus
;
}
public
Calendar
getCaseCalendar
()
{
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
setTime
(
this
.
caseTime
);
...
...
@@ -221,7 +269,11 @@ public class Case {
* @return 是否為早班
*/
private
boolean
isMorningShift
(){
return
true
;
boolean
isMorningShift
=
true
;
if
(
this
.
shift
==
Shift
.
AFTERNOON
){
isMorningShift
=
false
;
}
return
isMorningShift
;
}
/**
...
...
@@ -245,4 +297,5 @@ public class Case {
// TODO: 2022/8/3 加入 CarPrinter_LK-P34L 印表機功能
return
printer
;
}
}
app/src/main/java/ecom/android/newparkapp/entity/CaseStatus.java
View file @
88785ac4
package
ecom
.
android
.
newparkapp
.
entity
;
public
enum
CaseStatus
{
import
android.os.Parcel
;
import
android.os.Parcelable
;
public
enum
CaseStatus
implements
Parcelable
{
NEW
,
//尚未儲存之新案件
LIST
,
//已儲存之案件
CHANGED
,
//已儲存但有異動過之案件
LOCK
//註銷之案件
LOCK
;
//註銷之案件
@Override
public
void
writeToParcel
(
Parcel
dest
,
int
flags
)
{
dest
.
writeInt
(
ordinal
());
}
@Override
public
int
describeContents
()
{
return
0
;
}
public
static
final
Creator
<
CaseStatus
>
CREATOR
=
new
Creator
<
CaseStatus
>()
{
@Override
public
CaseStatus
createFromParcel
(
Parcel
in
)
{
return
CaseStatus
.
values
()[
in
.
readInt
()];
}
@Override
public
CaseStatus
[]
newArray
(
int
size
)
{
return
new
CaseStatus
[
size
];
}
};
}
app/src/main/java/ecom/android/newparkapp/entity/Shift.java
0 → 100644
View file @
88785ac4
package
ecom
.
android
.
newparkapp
.
entity
;
import
android.os.Parcel
;
import
android.os.Parcelable
;
/**
* 班別
*/
public
enum
Shift
implements
Parcelable
{
MORNING
,
// 早班 08:00 ~ 16:30
AFTERNOON
;
// 午班 13:30 ~ 22:00
@Override
public
void
writeToParcel
(
Parcel
dest
,
int
flags
)
{
dest
.
writeInt
(
ordinal
());
}
@Override
public
int
describeContents
()
{
return
0
;
}
public
static
final
Creator
<
Shift
>
CREATOR
=
new
Creator
<
Shift
>()
{
@Override
public
Shift
createFromParcel
(
Parcel
in
)
{
return
Shift
.
values
()[
in
.
readInt
()];
}
@Override
public
Shift
[]
newArray
(
int
size
)
{
return
new
Shift
[
size
];
}
};
}
app/src/main/java/ecom/android/newparkapp/entity/Space.java
View file @
88785ac4
...
...
@@ -35,7 +35,7 @@ public class Space implements Parcelable {
@ColumnInfo
(
name
=
"longitude"
)
public
float
longitude
;
@
Embedded
(
prefix
=
"space_status_
"
)
@
ColumnInfo
(
name
=
"space_status
"
)
public
SpaceStatus
spaceStatus
;
public
Space
(
String
id
,
Road
road
,
SpaceType
spaceType
,
int
fee
,
SpaceRate
spaceRate
,
float
latitude
,
float
longitude
,
SpaceStatus
spaceStatus
)
{
...
...
@@ -52,6 +52,7 @@ public class Space implements Parcelable {
protected
Space
(
Parcel
in
)
{
id
=
in
.
readString
();
road
=
in
.
readParcelable
(
Road
.
class
.
getClassLoader
());
spaceType
=
in
.
readParcelable
(
SpaceType
.
class
.
getClassLoader
());
fee
=
in
.
readInt
();
spaceRate
=
in
.
readParcelable
(
SpaceRate
.
class
.
getClassLoader
());
latitude
=
in
.
readFloat
();
...
...
@@ -63,6 +64,7 @@ public class Space implements Parcelable {
public
void
writeToParcel
(
Parcel
dest
,
int
flags
)
{
dest
.
writeString
(
id
);
dest
.
writeParcelable
(
road
,
flags
);
dest
.
writeParcelable
(
spaceType
,
flags
);
dest
.
writeInt
(
fee
);
dest
.
writeParcelable
(
spaceRate
,
flags
);
dest
.
writeFloat
(
latitude
);
...
...
@@ -88,7 +90,16 @@ public class Space implements Parcelable {
};
public
String
getCombineInfo
()
{
return
String
.
format
(
"%s %s %s %s"
,
id
,
spaceRate
.
id
,
spaceType
,
road
.
name
);
// TODO: 2022/8/4 停車格類型 轉換 成文字檔
// 文字檔 舊的格式 0 -> 未啟用 1 -> 啟用 3 -> 殘障車位
int
spaceTypeString
=
0
;
if
(
this
.
spaceType
==
SpaceType
.
HANDICAPPED_SPACE
){
spaceTypeString
=
3
;
}
else
{
spaceTypeString
=
this
.
spaceStatus
==
SpaceStatus
.
ENABLE
?
1
:
0
;
}
return
String
.
format
(
"%s %s %s %s"
,
id
,
spaceRate
.
id
,
spaceTypeString
,
road
.
name
);
}
/**
...
...
@@ -99,13 +110,5 @@ public class Space implements Parcelable {
public
int
getAddMinutes
()
{
return
(
int
)(
60
*
this
.
spaceRate
.
perHours
);
}
public
enum
SpaceType
{
UNSET_SPACE
,
MOTO_SPACE
,
VEHICLE_SPACE
,
HANDICAPPED_SPACE
,
FRIENDLY_SPACE
}
}
app/src/main/java/ecom/android/newparkapp/entity/SpaceStatus.java
View file @
88785ac4
...
...
@@ -3,32 +3,13 @@ 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
;
@Entity
public
class
SpaceStatus
implements
Parcelable
{
@PrimaryKey
public
int
id
;
@ColumnInfo
(
name
=
"name"
)
public
String
name
;
public
SpaceStatus
(
int
id
,
String
name
)
{
this
.
id
=
id
;
this
.
name
=
name
;
}
protected
SpaceStatus
(
Parcel
in
)
{
id
=
in
.
readInt
();
name
=
in
.
readString
();
}
public
enum
SpaceStatus
implements
Parcelable
{
DISABLE
,
ENABLE
;
@Override
public
void
writeToParcel
(
Parcel
dest
,
int
flags
)
{
dest
.
writeInt
(
id
);
dest
.
writeString
(
name
);
dest
.
writeInt
(
ordinal
());
}
@Override
...
...
@@ -39,7 +20,7 @@ public class SpaceStatus implements Parcelable {
public
static
final
Creator
<
SpaceStatus
>
CREATOR
=
new
Creator
<
SpaceStatus
>()
{
@Override
public
SpaceStatus
createFromParcel
(
Parcel
in
)
{
return
new
SpaceStatus
(
in
)
;
return
SpaceStatus
.
values
()[
in
.
readInt
()]
;
}
@Override
...
...
app/src/main/java/ecom/android/newparkapp/entity/SpaceType.java
0 → 100644
View file @
88785ac4
package
ecom
.
android
.
newparkapp
.
entity
;
import
android.os.Parcel
;
import
android.os.Parcelable
;
public
enum
SpaceType
implements
Parcelable
{
UNSET_SPACE
,
MOTO_SPACE
,
VEHICLE_SPACE
,
HANDICAPPED_SPACE
,
FRIENDLY_SPACE
;
@Override
public
void
writeToParcel
(
Parcel
dest
,
int
flags
)
{
dest
.
writeInt
(
ordinal
());
}
@Override
public
int
describeContents
()
{
return
0
;
}
public
static
final
Creator
<
SpaceType
>
CREATOR
=
new
Creator
<
SpaceType
>()
{
@Override
public
SpaceType
createFromParcel
(
Parcel
in
)
{
return
SpaceType
.
values
()[
in
.
readInt
()];
}
@Override
public
SpaceType
[]
newArray
(
int
size
)
{
return
new
SpaceType
[
size
];
}
};
}
app/src/main/java/ecom/android/newparkapp/entity/User.java
View file @
88785ac4
...
...
@@ -26,7 +26,6 @@ public class User implements Parcelable {
@Embedded
(
prefix
=
"user_permission_"
)
public
UserPermission
userPermission
;
public
User
(
int
id
,
String
name
,
String
account
,
String
password
,
UserPermission
userPermission
)
{
this
.
id
=
id
;
this
.
name
=
name
;
...
...
app/src/main/java/ecom/android/newparkapp/printer/CarPrinter_TPB250.java
View file @
88785ac4
...
...
@@ -5,7 +5,6 @@ import static ecom.android.newparkapp.BlueToothComm.PrintBarCode;
import
static
ecom
.
android
.
newparkapp
.
BlueToothComm
.
PrintChangeLine
;
import
static
ecom
.
android
.
newparkapp
.
BlueToothComm
.
PrintString
;
import
static
ecom
.
android
.
newparkapp
.
BlueToothComm
.
ToBlackMark
;
import
static
ecom
.
android
.
newparkapp
.
entity
.
Space
.
SpaceType
.
HANDICAPPED_SPACE
;
import
static
ecom
.
android
.
newparkapp
.
printer
.
IBluetoothPrinter
.
ResultCode
.
NOT_CONNECT
;
import
static
ecom
.
android
.
newparkapp
.
printer
.
IBluetoothPrinter
.
ResultCode
.
PRINT_SUCCESS
;
...
...
@@ -18,6 +17,7 @@ import java.util.Locale;
import
ecom.android.newparkapp.Common
;
import
ecom.android.newparkapp.entity.Case
;
import
ecom.android.newparkapp.entity.SpaceType
;
/**
* 2021年新型印表機
...
...
@@ -89,7 +89,7 @@ public class CarPrinter_TPB250 implements IBluetoothPrinter {
String
.
format
(
Locale
.
TAIWAN
,
" %02d:%02d %5d %s"
,
nHour
,
nowCalendar
.
get
(
Calendar
.
MINUTE
),
carCase
.
getPricing
(),
carCase
.
user
.
name
)
:
String
.
format
(
Locale
.
TAIWAN
,
" %02d:%02d %5s %s"
,
nHour
+
(
b60Min
?
1
:
0
),
b60Min
?
0
:
(
nowCalendar
.
get
(
Calendar
.
MINUTE
)
+
1
),
" "
,
"________"
);
if
(
carCase
.
space
.
spaceType
==
HANDICAPPED_SPACE
)
{
//身障車格
if
(
carCase
.
space
.
spaceType
==
SpaceType
.
HANDICAPPED_SPACE
)
{
//身障車格
if
(
carCase
.
vehicleType
.
id
==
12
)
{
//身心障礙(府-2)
if
(
i
==
0
)
{
szList
=
String
.
format
(
Locale
.
TAIWAN
,
" %02d:%02d %5d %s"
,
...
...
app/src/main/java/ecom/android/newparkapp/repository/InfoRepository.java
View file @
88785ac4
...
...
@@ -11,7 +11,6 @@ import ecom.android.newparkapp.dao.CasePhotoDao;
import
ecom.android.newparkapp.dao.RoadDao
;
import
ecom.android.newparkapp.dao.SpaceDao
;
import
ecom.android.newparkapp.dao.SpaceRateDao
;
import
ecom.android.newparkapp.dao.SpaceStatusDao
;
import
ecom.android.newparkapp.dao.UserDao
;
import
ecom.android.newparkapp.dao.UserPermissionDao
;
import
ecom.android.newparkapp.dao.VehicleBrandDao
;
...
...
@@ -31,7 +30,6 @@ public class InfoRepository {
public
UserDao
userDao
;
public
UserPermissionDao
userPermissionDao
;
public
SpaceStatusDao
spaceStatusDao
;
public
SpaceRateDao
spaceRateDao
;
public
RoadDao
roadDao
;
public
SpaceDao
spaceDao
;
...
...
@@ -48,7 +46,6 @@ public class InfoRepository {
userDao
=
infoDatabase
.
userDao
();
userPermissionDao
=
infoDatabase
.
userPermissionDao
();
spaceStatusDao
=
infoDatabase
.
spaceStatusDao
();
spaceRateDao
=
infoDatabase
.
spaceRateDao
();
roadDao
=
infoDatabase
.
roadDao
();
spaceDao
=
infoDatabase
.
spaceDao
();
...
...
app/src/main/java/ecom/android/newparkapp/view/MainActivity.java
View file @
88785ac4
...
...
@@ -9,6 +9,7 @@ import static android.Manifest.permission.WRITE_EXTERNAL_STORAGE;
import
android.content.Intent
;
import
android.content.pm.PackageInfo
;
import
android.content.pm.PackageManager
;
import
android.icu.util.BuddhistCalendar
;
import
android.os.Bundle
;
import
android.widget.Toast
;
...
...
@@ -24,6 +25,7 @@ import java.util.Map;
import
ecom.android.newparkapp.R
;
import
ecom.android.newparkapp.databinding.ActivityMainBinding
;
import
ecom.android.newparkapp.entity.Shift
;
import
ecom.android.newparkapp.entity.User
;
import
ecom.android.newparkapp.viewModel.T01SettingViewModel
;
...
...
@@ -151,13 +153,13 @@ public class MainActivity extends AppCompatActivity {
* 所有事件註冊及綁定
*/
private
void
eventBinding
(){
dataBinding
.
btnStartMorning
.
setOnClickListener
(
view
->
btnStartOnClicked
()
);
dataBinding
.
btnStartAfternoon
.
setOnClickListener
(
view
->
btnStartOnClicked
()
);
dataBinding
.
btnStartMorning
.
setOnClickListener
(
view
->
btnStartOnClicked
(
Shift
.
MORNING
)
);
dataBinding
.
btnStartAfternoon
.
setOnClickListener
(
view
->
btnStartOnClicked
(
Shift
.
AFTERNOON
)
);
dataBinding
.
btnGoSetting
.
setOnClickListener
(
view
->
{
btnGoSettingOnClicked
();});
}
private
void
btnStartOnClicked
(){
private
void
btnStartOnClicked
(
Shift
shift
){
if
(
t01SettingViewModel
.
getCurrentUser
()
==
null
||
t01SettingViewModel
.
getCurrentUser
().
id
==
999
){
Toast
.
makeText
(
this
,
"請先設定使用者"
,
Toast
.
LENGTH_LONG
).
show
();
return
;
...
...
@@ -165,7 +167,11 @@ public class MainActivity extends AppCompatActivity {
Intent
intent
=
new
Intent
();
intent
.
setClass
(
this
,
T02StartActivity
.
class
);
intent
.
putExtra
(
"CurrentUser"
,
t01SettingViewModel
.
getCurrentUser
());
Bundle
bundle
=
new
Bundle
();
bundle
.
putParcelable
(
"CurrentUser"
,
t01SettingViewModel
.
getCurrentUser
());
bundle
.
putParcelable
(
"Shift"
,
shift
);
intent
.
putExtras
(
bundle
);
startActivity
(
intent
);
}
...
...
app/src/main/java/ecom/android/newparkapp/view/T02StartActivity.java
View file @
88785ac4
...
...
@@ -41,6 +41,7 @@ import ecom.android.newparkapp.databinding.AlertDialogT03CumulativeTimeBinding;
import
ecom.android.newparkapp.databinding.AlertDialogProgressBarBinding
;
import
ecom.android.newparkapp.entity.Case
;
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.VehicleType
;
...
...
@@ -75,6 +76,7 @@ public class T02StartActivity extends AppCompatActivity {
private
ActivityResultLauncher
requestBluetooth
;
private
User
currentUser
;
private
Shift
shift
;
private
File
photoFile
;
private
AlertDialog
alertDialogProgress
;
...
...
@@ -93,10 +95,12 @@ public class T02StartActivity extends AppCompatActivity {
blueToothViewModel
=
viewModelProvider
.
get
(
BlueToothViewModel
.
class
);
currentUser
=
t01SettingViewModel
.
getCurrentUser
();
if
(
currentUser
==
null
)
{
shift
=
getIntent
().
getParcelableExtra
(
"Shift"
);
if
(
currentUser
==
null
||
shift
==
null
)
{
finish
();
}
t02StartViewModel
.
setCurrentUser
(
currentUser
);
t02StartViewModel
.
setShift
(
shift
);
t02StartViewModel
.
initCurrentCase
();
dataBinding
.
setT02StartViewModel
(
t02StartViewModel
);
...
...
@@ -110,7 +114,6 @@ public class T02StartActivity extends AppCompatActivity {
hasPermissions
.
setValue
(
false
);
initBlueTooth
();
// progress alert dialog init
initAlertDialogProgress
();
...
...
@@ -421,8 +424,20 @@ public class T02StartActivity extends AppCompatActivity {
});
// 註銷
if
(
tempCase
.
caseStatus
==
CaseStatus
.
LOCK
){
t03CumulativeTimeDataBinding
.
diaOffButton
.
setTextColor
(
getColor
(
R
.
color
.
black
));
t03CumulativeTimeDataBinding
.
diaOffButton
.
setText
(
"恢復本單"
);
}
else
{
t03CumulativeTimeDataBinding
.
diaOffButton
.
setTextColor
(
getColor
(
R
.
color
.
red
));
t03CumulativeTimeDataBinding
.
diaOffButton
.
setText
(
"註銷本單"
);
}
t03CumulativeTimeDataBinding
.
diaOffButton
.
setOnClickListener
(
view
->
{
if
(
tempCase
.
caseStatus
==
CaseStatus
.
LOCK
){
t02StartViewModel
.
enableCurrentCase
();
}
else
{
t02StartViewModel
.
disableCurrentCase
();
}
tempDialog
.
dismiss
();
});
// 累加確認
...
...
@@ -466,7 +481,7 @@ public class T02StartActivity extends AppCompatActivity {
}
if
(!
blueToothViewModel
.
getBluetoothAdapter
().
isEnabled
())
{
//
TODO:
2022/8/3 Android 12 以上的版本 需額外請求藍芽權限
// 2022/8/3 Android 12 以上的版本 需額外請求藍芽權限
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
S
)
{
requestMultiplePermissions
.
launch
(
bluetoothPermissions
);
}
else
{
...
...
app/src/main/java/ecom/android/newparkapp/viewModel/T01ImportDbViewModel.java
View file @
88785ac4
...
...
@@ -19,9 +19,10 @@ import java.util.List;
import
ecom.android.newparkapp.Common
;
import
ecom.android.newparkapp.R
;
import
ecom.android.newparkapp.converter.SpaceStatusConverter
;
import
ecom.android.newparkapp.entity.Road
;
import
ecom.android.newparkapp.entity.Space
;
import
ecom.android.newparkapp.entity.Space
.Space
Type
;
import
ecom.android.newparkapp.entity.SpaceType
;
import
ecom.android.newparkapp.entity.SpaceRate
;
import
ecom.android.newparkapp.entity.SpaceStatus
;
import
ecom.android.newparkapp.entity.User
;
...
...
@@ -202,24 +203,6 @@ public class T01ImportDbViewModel extends AndroidViewModel {
}
});
break
;
case
SpaceStatus:
infoRepository
.
executorService
.
execute
(()->{
infoRepository
.
spaceStatusDao
.
deleteAll
();
for
(
int
i
=
0
;
i
<
lines
.
length
;
i
++){
String
[]
columnString
=
lines
[
i
].
trim
().
split
(
"[ ]"
);
int
newId
;
if
(
columnString
.
length
!=
2
){
break
;
}
try
{
newId
=
Integer
.
parseInt
(
columnString
[
0
]);
}
catch
(
NumberFormatException
exception
){
break
;
}
String
newName
=
columnString
[
1
];
SpaceStatus
newSpaceStatus
=
new
SpaceStatus
(
newId
,
newName
);
infoRepository
.
spaceStatusDao
.
insertAll
(
newSpaceStatus
);
}
});
break
;
case
Road:
infoRepository
.
executorService
.
execute
(()->{
infoRepository
.
roadDao
.
deleteAll
();
...
...
@@ -264,9 +247,7 @@ public class T01ImportDbViewModel extends AndroidViewModel {
SpaceType
newSpaceType
=
toSpaceType
(
spaceTypeId
);
List
<
SpaceStatus
>
spaceStatusList
=
infoRepository
.
spaceStatusDao
.
loadAllByIds
(
new
int
[]{
spaceStatusId
});
if
(
spaceStatusList
.
size
()
==
0
){
break
;}
SpaceStatus
newSpaceStatus
=
spaceStatusList
.
get
(
0
);
SpaceStatus
newSpaceStatus
=
SpaceStatusConverter
.
toSpaceStatus
(
spaceStatusId
);
Space
newSpace
=
new
Space
(
newId
,
newRoad
,
newSpaceType
,
fee
,
newSpaceRate
,
latitude
,
longitude
,
newSpaceStatus
);
infoRepository
.
spaceDao
.
insertAll
(
newSpace
);
...
...
@@ -281,6 +262,6 @@ public class T01ImportDbViewModel extends AndroidViewModel {
}
public
enum
DBTableName
{
UserPermission
,
User
,
VehicleBrand
,
VehicleColor
,
VehicleType
,
SpaceRate
,
SpaceStatus
,
Road
,
Space
UserPermission
,
User
,
VehicleBrand
,
VehicleColor
,
VehicleType
,
SpaceRate
,
Road
,
Space
}
}
\ No newline at end of file
app/src/main/java/ecom/android/newparkapp/viewModel/T02StartViewModel.java
View file @
88785ac4
...
...
@@ -25,6 +25,7 @@ import ecom.android.newparkapp.entity.Case;
import
ecom.android.newparkapp.entity.CasePhoto
;
import
ecom.android.newparkapp.entity.CaseStatus
;
import
ecom.android.newparkapp.entity.Road
;
import
ecom.android.newparkapp.entity.Shift
;
import
ecom.android.newparkapp.entity.Space
;
import
ecom.android.newparkapp.entity.User
;
import
ecom.android.newparkapp.entity.VehicleType
;
...
...
@@ -43,6 +44,7 @@ public class T02StartViewModel extends AndroidViewModel {
private
InfoRepository
infoRepository
;
private
MutableLiveData
<
User
>
currentUser
=
new
MutableLiveData
<>();
private
MutableLiveData
<
Shift
>
shift
=
new
MutableLiveData
<>();
private
List
<
CasePhoto
>
tempCasePhoto
=
new
ArrayList
<>();
public
T02StartViewModel
(
@NonNull
Application
application
)
{
...
...
@@ -127,9 +129,22 @@ public class T02StartViewModel extends AndroidViewModel {
public
void
setPlateNumber
(
String
plateNumber
)
{
Case
tempCase
=
currentCase
.
getValue
();
tempCase
.
plateNumber
=
plateNumber
;
// TODO: 2022/8/4 檢查自動扣款
tempCase
.
autoPay
=
checkAutoPay
(
plateNumber
);
currentCase
.
setValue
(
tempCase
);
}
/**
* @param plateNumber 車牌號碼
* @return 是否有自動扣款
*/
private
boolean
checkAutoPay
(
String
plateNumber
){
boolean
autoPay
=
false
;
return
autoPay
;
}
public
void
initCurrentCase
(){
// 清空佔存
tempCasePhoto
.
clear
();
...
...
@@ -142,6 +157,7 @@ public class T02StartViewModel extends AndroidViewModel {
newCase
.
user
=
currentUser
.
getValue
();
newCase
.
caseTime
=
Calendar
.
getInstance
().
getTime
();
newCase
.
finalTime
=
Calendar
.
getInstance
().
getTime
();
newCase
.
shift
=
shift
.
getValue
();
generateBillingNumber
(
newCase
);
return
newCase
;
...
...
@@ -177,7 +193,6 @@ public class T02StartViewModel extends AndroidViewModel {
});
break
;
case
LIST:
// 跳至新單
currentCase
.
postValue
(
newCase
());
caseCursor
.
postValue
(
caseCursor
.
getValue
()
+
1
);
break
;
...
...
@@ -195,8 +210,8 @@ public class T02StartViewModel extends AndroidViewModel {
// 更新併檔用文字檔
// TODO: 2022/8/1 更新併檔用文字檔
//Common.updateTXT(getApplication(), tempCase.datePath + tempCase.userDateFileName
, tempCase.billingNumber2, tempCase.getDetailString());
//Common.writeTXT(getApplication(), tempCase.uploadPath
, tempCase.getUploadFileName(), tempCase.getDetailString());
Common
.
updateTXT
(
getApplication
(),
tempCase
.
getDatePath
(
getApplication
().
getString
(
R
.
string
.
sysData_path
))
+
tempCase
.
getUserDateFileName
()
,
tempCase
.
billingNumber2
,
tempCase
.
getDetailString
());
Common
.
writeTXT
(
getApplication
(),
tempCase
.
getUploadPath
(
getApplication
().
getString
(
R
.
string
.
sysDataUpload_path
))
,
tempCase
.
getUploadFileName
(),
tempCase
.
getDetailString
());
// TODO: 2022/8/1 判斷 是否 為 註銷
tempCase
.
caseStatus
=
CaseStatus
.
LIST
;
//saveBills
...
...
@@ -204,10 +219,26 @@ public class T02StartViewModel extends AndroidViewModel {
// 更新當前list結果
cases
.
set
(
caseCursor
.
getValue
(),
tempCase
);
});
break
;
case
LOCK:
// 更新資料
infoRepository
.
executorService
.
execute
(()->{
// 更新 Case
infoRepository
.
caseDao
.
update
(
tempCase
);
// 新增車牌辨識結果
for
(
int
i
=
0
;
i
<
tempCasePhoto
.
size
();
i
++){
infoRepository
.
casePhotoDao
.
insertAll
(
tempCasePhoto
.
get
(
i
));
}
tempCasePhoto
.
clear
();
// 更新併檔用文字檔
Common
.
updateTXT
(
getApplication
(),
tempCase
.
getDatePath
(
getApplication
().
getString
(
R
.
string
.
sysData_path
))
+
tempCase
.
getUserDateFileName
(),
tempCase
.
billingNumber2
,
tempCase
.
getDetailString
());
Common
.
writeTXT
(
getApplication
(),
tempCase
.
getUploadPath
(
getApplication
().
getString
(
R
.
string
.
sysDataUpload_path
)),
tempCase
.
getUploadFileName
(),
tempCase
.
getDetailString
());
// 更新當前list結果
cases
.
set
(
caseCursor
.
getValue
(),
tempCase
);
});
break
;
default
:
break
;
...
...
@@ -459,4 +490,33 @@ public class T02StartViewModel extends AndroidViewModel {
tempCase
.
location
=
location
;
currentCase
.
setValue
(
tempCase
);
}
/**
* 設置選定班表
* @param shift 班表
*/
public
void
setShift
(
Shift
shift
)
{
this
.
shift
.
setValue
(
shift
);
}
/**
* 註銷當前的案件
*/
public
void
disableCurrentCase
()
{
Case
tempCase
=
currentCase
.
getValue
();
if
(
tempCase
.
caseStatus
!=
CaseStatus
.
LOCK
){
tempCase
.
caseStatus
=
CaseStatus
.
LOCK
;
currentCase
.
setValue
(
tempCase
);
saveCurrentCase
();
}
}
public
void
enableCurrentCase
()
{
Case
tempCase
=
currentCase
.
getValue
();
if
(
tempCase
.
caseStatus
==
CaseStatus
.
LOCK
){
tempCase
.
caseStatus
=
CaseStatus
.
CHANGED
;
currentCase
.
setValue
(
tempCase
);
saveCurrentCase
();
}
}
}
app/src/main/res/layout/activity_t02_start.xml
View file @
88785ac4
...
...
@@ -8,6 +8,7 @@
<import
type=
"ecom.android.newparkapp.entity.Road"
/>
<import
type=
"ecom.android.newparkapp.entity.SpaceStatus"
/>
<import
type=
"ecom.android.newparkapp.entity.SpaceRate"
/>
<import
type=
"ecom.android.newparkapp.entity.CaseStatus"
/>
<variable
name=
"t02StartViewModel"
type=
"ecom.android.newparkapp.viewModel.T02StartViewModel"
/>
...
...
@@ -37,42 +38,43 @@ tools:layout_editor_absoluteY="25dp">
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:orientation=
"horizontal"
>
android:orientation=
"horizontal"
android:layout_marginTop=
"5dp"
>
<TextView
android:id=
"@+id/textView23"
android:layout_width=
"
wrap_content
"
android:layout_width=
"
0dp
"
android:layout_height=
"match_parent"
android:layout_weight=
"1"
android:layout_weight=
"0.6"
android:paddingStart=
"3dp"
android:text=
"印表機"
android:textAlignment=
"center"
android:textSize=
"20sp"
/>
android:textSize=
"21sp"
/>
<TextView
android:id=
"@+id/textView21"
android:layout_width=
"
wrap_content
"
android:layout_width=
"
0dp
"
android:layout_height=
"match_parent"
android:layout_weight=
"
1
"
android:layout_weight=
"
0.95
"
android:text=
"@{blueToothViewModel.bluetoothDevice.name}"
android:textAlignment=
"center"
android:textSize=
"20sp"
/>
<TextView
android:id=
"@+id/textView24"
android:layout_width=
"
wrap_content
"
android:layout_width=
"
0dp
"
android:layout_height=
"match_parent"
android:layout_weight=
"
1
"
android:layout_weight=
"
0.95
"
android:textAlignment=
"center"
android:textColor=
"#8BC34A"
android:textSize=
"20sp"
app:blueToothStatus2String=
"@{blueToothViewModel.blueToothStatus}"
/>
<LinearLayout
android:layout_width=
"
wrap_content
"
android:layout_height=
"
wrap_cont
ent"
android:layout_weight=
"
1
"
android:layout_width=
"
0dp
"
android:layout_height=
"
match_par
ent"
android:layout_weight=
"
0.5
"
android:orientation=
"vertical"
>
<ImageView
android:id=
"@+id/imageView"
android:layout_width=
"match_parent"
...
...
@@ -122,7 +124,8 @@ tools:layout_editor_absoluteY="25dp">
android:layout_weight=
"0.47"
android:gravity=
"center"
android:textSize=
"21sp"
android:text=
"@{t02StartViewModel.currentCase.billingNumber2}"
/>
android:text=
"@{(t02StartViewModel.currentCase.caseStatus == CaseStatus.LOCK ? `[註]` : ``) + t02StartViewModel.currentCase.billingNumber2}"
app:caseStatus2Color=
"@{t02StartViewModel.currentCase.caseStatus}"
/>
<Button
android:id=
"@+id/btn_start_back"
...
...
app/src/main/res/values/strings.xml
View file @
88785ac4
...
...
@@ -79,5 +79,5 @@
<string
name=
"hello_first_fragment"
>
Hello first fragment
</string>
<string
name=
"hello_second_fragment"
>
Hello second fragment. Arg: %1$s
</string>
<string
name=
"current_user"
>
當前使用者: %s
</string>
<string
name=
"current_user"
>
當前使用者:
\n
%s
</string>
</resources>
\ No newline at end of file
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