Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Y
YGOMobile
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
List
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
fallenstardust
YGOMobile
Commits
8909def2
Commit
8909def2
authored
Jul 17, 2022
by
fallenstardust
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
设置fragment重置方法
移除不使用的initDecksListSpinners方法
parent
134ff294
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
30 additions
and
81 deletions
+30
-81
mobile/src/main/java/cn/garymb/ygomobile/ui/cards/DeckManagerFragment.java
...ava/cn/garymb/ygomobile/ui/cards/DeckManagerFragment.java
+6
-62
mobile/src/main/java/cn/garymb/ygomobile/ui/home/HomeActivity.java
...c/main/java/cn/garymb/ygomobile/ui/home/HomeActivity.java
+24
-17
mobile/src/main/java/cn/garymb/ygomobile/ui/settings/PersonalFragment.java
...ava/cn/garymb/ygomobile/ui/settings/PersonalFragment.java
+0
-2
No files found.
mobile/src/main/java/cn/garymb/ygomobile/ui/cards/DeckManagerFragment.java
View file @
8909def2
...
@@ -123,7 +123,6 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte
...
@@ -123,7 +123,6 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte
private
File
mPreLoadFile
;
private
File
mPreLoadFile
;
private
DeckItemTouchHelper
mDeckItemTouchHelper
;
private
DeckItemTouchHelper
mDeckItemTouchHelper
;
private
AppCompatSpinner
mDeckSpinner
;
private
TextView
tv_deck
;
private
TextView
tv_deck
;
private
TextView
tv_result_count
;
private
TextView
tv_result_count
;
private
AppCompatSpinner
mLimitSpinner
;
private
AppCompatSpinner
mLimitSpinner
;
...
@@ -166,8 +165,7 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte
...
@@ -166,8 +165,7 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte
tv_deck
=
layoutView
.
findViewById
(
R
.
id
.
tv_deck
);
tv_deck
=
layoutView
.
findViewById
(
R
.
id
.
tv_deck
);
tv_result_count
=
layoutView
.
findViewById
(
R
.
id
.
result_count
);
tv_result_count
=
layoutView
.
findViewById
(
R
.
id
.
result_count
);
mDeckSpinner
=
layoutView
.
findViewById
(
R
.
id
.
toolbar_list
);
mDeckSpinner
.
setPopupBackgroundResource
(
R
.
color
.
colorNavy
);
mLimitSpinner
=
layoutView
.
findViewById
(
R
.
id
.
sp_limit_list
);
mLimitSpinner
=
layoutView
.
findViewById
(
R
.
id
.
sp_limit_list
);
mLimitSpinner
.
setPopupBackgroundResource
(
R
.
color
.
colorNavy
);
mLimitSpinner
.
setPopupBackgroundResource
(
R
.
color
.
colorNavy
);
mRecyclerView
=
layoutView
.
findViewById
(
R
.
id
.
grid_cards
);
mRecyclerView
=
layoutView
.
findViewById
(
R
.
id
.
grid_cards
);
...
@@ -180,19 +178,6 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte
...
@@ -180,19 +178,6 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte
touchHelper
.
setEnableClickDrag
(
Constants
.
DECK_SINGLE_PRESS_DRAG
);
touchHelper
.
setEnableClickDrag
(
Constants
.
DECK_SINGLE_PRESS_DRAG
);
touchHelper
.
attachToRecyclerView
(
mRecyclerView
);
touchHelper
.
attachToRecyclerView
(
mRecyclerView
);
mRecyclerView
.
addOnItemTouchListener
(
new
RecyclerViewItemListener
(
mRecyclerView
,
this
));
mRecyclerView
.
addOnItemTouchListener
(
new
RecyclerViewItemListener
(
mRecyclerView
,
this
));
mDeckSpinner
.
setOnItemSelectedListener
(
new
AdapterView
.
OnItemSelectedListener
()
{
@Override
public
void
onItemSelected
(
AdapterView
<?>
adapterView
,
View
view
,
int
i
,
long
l
)
{
File
file
=
getSelectDeck
(
mDeckSpinner
);
if
(
file
!=
null
)
{
loadDeckFromFile
(
file
);
}
}
@Override
public
void
onNothingSelected
(
AdapterView
<?>
adapterView
)
{
}
});
initBoomMenuButton
(
layoutView
.
findViewById
(
R
.
id
.
bmb
));
initBoomMenuButton
(
layoutView
.
findViewById
(
R
.
id
.
bmb
));
layoutView
.
findViewById
(
R
.
id
.
btn_nav_search
).
setOnClickListener
((
v
)
->
doMenu
(
R
.
id
.
action_search
));
layoutView
.
findViewById
(
R
.
id
.
btn_nav_search
).
setOnClickListener
((
v
)
->
doMenu
(
R
.
id
.
action_search
));
layoutView
.
findViewById
(
R
.
id
.
btn_nav_list
).
setOnClickListener
((
v
)
->
doMenu
(
R
.
id
.
action_card_list
));
layoutView
.
findViewById
(
R
.
id
.
btn_nav_list
).
setOnClickListener
((
v
)
->
doMenu
(
R
.
id
.
action_card_list
));
...
@@ -205,6 +190,7 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte
...
@@ -205,6 +190,7 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte
String
preLoadFile
=
""
;
String
preLoadFile
=
""
;
if
(
getArguments
()
!=
null
)
{
if
(
getArguments
()
!=
null
)
{
preLoadFile
=
getArguments
().
getString
(
"setDeck"
);
preLoadFile
=
getArguments
().
getString
(
"setDeck"
);
getArguments
().
clear
();
}
}
final
File
_file
;
final
File
_file
;
//打开指定卡组
//打开指定卡组
...
@@ -265,19 +251,13 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte
...
@@ -265,19 +251,13 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte
}
}
@Override
@Override
public
void
onFirstUserVisible
()
{
public
void
onFirstUserVisible
()
{}
}
@Override
@Override
public
void
onUserVisible
()
{
public
void
onUserVisible
()
{}
}
@Override
@Override
public
void
onFirstUserInvisible
()
{
public
void
onFirstUserInvisible
()
{}
}
@Override
@Override
public
void
onUserInvisible
()
{
public
void
onUserInvisible
()
{
...
@@ -367,7 +347,7 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte
...
@@ -367,7 +347,7 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte
view
.
findViewById
(
R
.
id
.
cube2
).
startAnimation
(
shake
);
//给组件播放动画效果
view
.
findViewById
(
R
.
id
.
cube2
).
startAnimation
(
shake
);
//给组件播放动画效果
}
}
p
rotected
void
hideDrawers
()
{
p
ublic
void
hideDrawers
()
{
if
(
mDrawerLayout
.
isDrawerOpen
(
Gravity
.
RIGHT
))
{
if
(
mDrawerLayout
.
isDrawerOpen
(
Gravity
.
RIGHT
))
{
mDrawerLayout
.
closeDrawer
(
Gravity
.
RIGHT
);
mDrawerLayout
.
closeDrawer
(
Gravity
.
RIGHT
);
}
}
...
@@ -450,7 +430,6 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte
...
@@ -450,7 +430,6 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte
dlg
.
dismiss
();
dlg
.
dismiss
();
mCardSelector
.
initItems
();
mCardSelector
.
initItems
();
initLimitListSpinners
(
mLimitSpinner
,
mCardLoader
.
getLimitList
());
initLimitListSpinners
(
mLimitSpinner
,
mCardLoader
.
getLimitList
());
initDecksListSpinners
(
mDeckSpinner
,
rs
.
source
);
//设置当前卡组
//设置当前卡组
setCurDeck
(
rs
);
setCurDeck
(
rs
);
//设置收藏夹
//设置收藏夹
...
@@ -861,7 +840,6 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte
...
@@ -861,7 +840,6 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte
FileUtils
.
deleteFile
(
mDeckAdapater
.
getYdkFile
());
FileUtils
.
deleteFile
(
mDeckAdapater
.
getYdkFile
());
dlg
.
dismiss
();
dlg
.
dismiss
();
File
file
=
getFirstYdk
();
File
file
=
getFirstYdk
();
initDecksListSpinners
(
mDeckSpinner
,
file
);
loadDeckFromFile
(
file
);
loadDeckFromFile
(
file
);
}
}
});
});
...
@@ -1062,38 +1040,6 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte
...
@@ -1062,38 +1040,6 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte
return
null
;
return
null
;
}
}
private
void
initDecksListSpinners
(
Spinner
spinner
,
File
curYdk
)
{
List
<
File
>
files
=
getYdkFiles
();
List
<
SimpleSpinnerItem
>
items
=
new
ArrayList
<>();
String
name
=
curYdk
!=
null
?
curYdk
.
getName
()
:
null
;
int
index
=
-
1
;
if
(
files
!=
null
)
{
Collections
.
sort
(
files
,
(
ydk1
,
ydk2
)
->
{
if
(
ydk1
.
isDirectory
()
&&
ydk2
.
isFile
())
return
-
1
;
if
(
ydk1
.
isFile
()
&&
ydk2
.
isDirectory
())
return
1
;
return
ydk1
.
getName
().
compareTo
(
ydk2
.
getName
());
});
int
i
=
0
;
for
(
File
file
:
files
)
{
if
(
name
!=
null
&&
TextUtils
.
equals
(
name
,
file
.
getName
()))
{
index
=
i
;
}
String
filename
=
IOUtils
.
tirmName
(
file
.
getName
(),
Constants
.
YDK_FILE_EX
);
items
.
add
(
new
SimpleSpinnerItem
(
i
++,
filename
).
setTag
(
file
));
}
}
SimpleSpinnerAdapter
simpleSpinnerAdapter
=
new
SimpleSpinnerAdapter
(
getContext
());
simpleSpinnerAdapter
.
set
(
items
);
simpleSpinnerAdapter
.
setColor
(
Color
.
WHITE
);
simpleSpinnerAdapter
.
setSingleLine
(
true
);
spinner
.
setAdapter
(
simpleSpinnerAdapter
);
if
(
index
>=
0
)
{
spinner
.
setSelection
(
index
);
}
}
private
void
initLimitListSpinners
(
Spinner
spinner
,
LimitList
cur
)
{
private
void
initLimitListSpinners
(
Spinner
spinner
,
LimitList
cur
)
{
List
<
SimpleSpinnerItem
>
items
=
new
ArrayList
<>();
List
<
SimpleSpinnerItem
>
items
=
new
ArrayList
<>();
List
<
String
>
limitLists
=
mLimitManager
.
getLimitNames
();
List
<
String
>
limitLists
=
mLimitManager
.
getLimitNames
();
...
@@ -1174,7 +1120,6 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte
...
@@ -1174,7 +1120,6 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte
}
}
if
(!
keepOld
&&
oldYdk
!=
null
&&
oldYdk
.
exists
())
{
if
(!
keepOld
&&
oldYdk
!=
null
&&
oldYdk
.
exists
())
{
if
(
oldYdk
.
renameTo
(
ydk
))
{
if
(
oldYdk
.
renameTo
(
ydk
))
{
initDecksListSpinners
(
mDeckSpinner
,
ydk
);
dlg
.
dismiss
();
dlg
.
dismiss
();
loadDeckFromFile
(
ydk
);
loadDeckFromFile
(
ydk
);
}
}
...
@@ -1187,7 +1132,6 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte
...
@@ -1187,7 +1132,6 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte
boolean
ret
=
ydk
.
createNewFile
();
boolean
ret
=
ydk
.
createNewFile
();
}
catch
(
Throwable
ignore
)
{
}
catch
(
Throwable
ignore
)
{
}
}
initDecksListSpinners
(
mDeckSpinner
,
ydk
);
save
(
ydk
);
save
(
ydk
);
loadDeckFromFile
(
ydk
);
loadDeckFromFile
(
ydk
);
}
}
...
...
mobile/src/main/java/cn/garymb/ygomobile/ui/home/HomeActivity.java
View file @
8909def2
...
@@ -13,6 +13,7 @@ import android.widget.Toast;
...
@@ -13,6 +13,7 @@ import android.widget.Toast;
import
androidx.annotation.Nullable
;
import
androidx.annotation.Nullable
;
import
androidx.fragment.app.Fragment
;
import
androidx.fragment.app.Fragment
;
import
androidx.fragment.app.FragmentTransaction
;
import
com.ashokvarma.bottomnavigation.BottomNavigationBar
;
import
com.ashokvarma.bottomnavigation.BottomNavigationBar
;
import
com.ashokvarma.bottomnavigation.BottomNavigationItem
;
import
com.ashokvarma.bottomnavigation.BottomNavigationItem
;
...
@@ -102,20 +103,18 @@ public abstract class HomeActivity extends BaseActivity implements OnDuelAssista
...
@@ -102,20 +103,18 @@ public abstract class HomeActivity extends BaseActivity implements OnDuelAssista
super
.
onNewIntent
(
intent
);
super
.
onNewIntent
(
intent
);
int
mFlag
=
intent
.
getIntExtra
(
"flag"
,
0
);
int
mFlag
=
intent
.
getIntExtra
(
"flag"
,
0
);
if
(
mFlag
==
4
)
{
//判断获取到的flag值
if
(
mFlag
==
4
)
{
//判断获取到的flag值
switchFragment
(
fragment_personal
,
4
);
switchFragment
(
fragment_personal
,
4
,
false
);
}
else
if
(
mFlag
==
3
)
{
}
else
if
(
mFlag
==
3
)
{
switchFragment
(
fragment_mycard
,
3
);
switchFragment
(
fragment_mycard
,
3
,
false
);
}
else
if
(
intent
.
hasExtra
(
Intent
.
EXTRA_TEXT
))
{
}
else
if
(
intent
.
hasExtra
(
Intent
.
EXTRA_TEXT
))
{
String
strDeck
=
intent
.
getStringExtra
(
Intent
.
EXTRA_TEXT
);
String
strDeck
=
intent
.
getStringExtra
(
Intent
.
EXTRA_TEXT
);
if
(!
strDeck
.
isEmpty
())
{
if
(!
strDeck
.
isEmpty
())
{
mBundle
.
putString
(
"setDeck"
,
strDeck
);
mBundle
.
putString
(
"setDeck"
,
strDeck
);
fragment_deck_cards
.
setArguments
(
mBundle
);
fragment_deck_cards
.
setArguments
(
mBundle
);
}
}
switchFragment
(
fragment_deck_cards
,
2
);
switchFragment
(
fragment_deck_cards
,
2
,
true
);
}
else
if
(
mFlag
==
1
)
{
}
else
if
(
mFlag
==
1
)
{
switchFragment
(
fragment_search
,
1
);
switchFragment
(
fragment_search
,
1
,
false
);
}
}
}
}
...
@@ -151,39 +150,47 @@ public abstract class HomeActivity extends BaseActivity implements OnDuelAssista
...
@@ -151,39 +150,47 @@ public abstract class HomeActivity extends BaseActivity implements OnDuelAssista
public
void
onTabSelected
(
int
position
)
{
public
void
onTabSelected
(
int
position
)
{
switch
(
position
)
{
switch
(
position
)
{
case
0
:
case
0
:
switchFragment
(
fragment_home
,
0
);
switchFragment
(
fragment_home
,
0
,
false
);
break
;
break
;
case
1
:
case
1
:
switchFragment
(
fragment_search
,
1
);
switchFragment
(
fragment_search
,
1
,
false
);
break
;
break
;
case
2
:
case
2
:
switchFragment
(
fragment_deck_cards
,
2
);
switchFragment
(
fragment_deck_cards
,
2
,
false
);
break
;
break
;
case
3
:
case
3
:
switchFragment
(
fragment_mycard
,
3
);
switchFragment
(
fragment_mycard
,
3
,
false
);
break
;
break
;
case
4
:
case
4
:
switchFragment
(
fragment_personal
,
4
);
switchFragment
(
fragment_personal
,
4
,
false
);
break
;
break
;
}
}
}
}
public
void
switchFragment
(
Fragment
fragment
,
int
page
)
{
public
void
switchFragment
(
Fragment
fragment
,
int
page
,
boolean
replace
)
{
//用于intent到指定fragment时底部图标也跟着设置为选中状态
//用于intent到指定fragment时底部图标也跟着设置为选中状态
bottomNavigationBar
.
setFirstSelectedPosition
(
page
).
initialise
();
bottomNavigationBar
.
setFirstSelectedPosition
(
page
).
initialise
();
//
//
FragmentTransaction
transaction
=
getSupportFragmentManager
().
beginTransaction
();
if
(
mFragment
.
isHidden
())
if
(
mFragment
.
isHidden
())
getSupportFragmentManager
().
beginTransaction
()
.
show
(
mFragment
).
commit
();
transaction
.
show
(
mFragment
).
commit
();
//判断当前显示的Fragment是不是切换的Fragment
//判断当前显示的Fragment是不是切换的Fragment
if
(
mFragment
!=
fragment
)
{
if
(
mFragment
!=
fragment
)
{
//判断切换的Fragment是否已经添加过
//判断切换的Fragment是否已经添加过
if
(!
fragment
.
isAdded
())
{
if
(!
fragment
.
isAdded
())
{
//如果没有,则先把当前的Fragment隐藏,把切换的Fragment添加上
//如果没有,则先把当前的Fragment隐藏,把切换的Fragment添加上
getSupportFragmentManager
().
beginTransaction
()
.
hide
(
mFragment
)
transaction
.
hide
(
mFragment
)
.
add
(
R
.
id
.
fragment_content
,
fragment
).
commit
();
.
add
(
R
.
id
.
fragment_content
,
fragment
).
commit
();
}
else
{
}
else
{
//如果已经添加过,则先把当前的Fragment隐藏,把切换的Fragment显示出来
//如果已经添加过,则先把当前的Fragment隐藏,把切换的Fragment显示出来
getSupportFragmentManager
().
beginTransaction
().
hide
(
mFragment
).
show
(
fragment
).
commit
();
if
(
replace
)
{
//需要重新加载onCreateView需要detach再attach,而不是replace
transaction
.
hide
(
mFragment
).
detach
(
fragment
).
attach
(
fragment
)
.
show
(
fragment
)
//重启该fragment后需要重新show
.
commit
();
}
else
{
transaction
.
hide
(
mFragment
).
show
(
fragment
).
commit
();
}
}
}
mFragment
=
fragment
;
mFragment
=
fragment
;
}
}
...
@@ -330,7 +337,7 @@ public abstract class HomeActivity extends BaseActivity implements OnDuelAssista
...
@@ -330,7 +337,7 @@ public abstract class HomeActivity extends BaseActivity implements OnDuelAssista
mBundle
.
putString
(
"setDeck"
,
file
.
getAbsolutePath
());
mBundle
.
putString
(
"setDeck"
,
file
.
getAbsolutePath
());
fragment_deck_cards
.
setArguments
(
mBundle
);
fragment_deck_cards
.
setArguments
(
mBundle
);
}
}
switchFragment
(
fragment_deck_cards
,
2
);
switchFragment
(
fragment_deck_cards
,
2
,
true
);
}
else
{
}
else
{
//如果是卡组文本
//如果是卡组文本
try
{
try
{
...
@@ -340,7 +347,7 @@ public abstract class HomeActivity extends BaseActivity implements OnDuelAssista
...
@@ -340,7 +347,7 @@ public abstract class HomeActivity extends BaseActivity implements OnDuelAssista
mBundle
.
putString
(
"setDeck"
,
file
.
getAbsolutePath
());
mBundle
.
putString
(
"setDeck"
,
file
.
getAbsolutePath
());
fragment_deck_cards
.
setArguments
(
mBundle
);
fragment_deck_cards
.
setArguments
(
mBundle
);
}
}
switchFragment
(
fragment_deck_cards
,
2
);
switchFragment
(
fragment_deck_cards
,
2
,
true
);
}
catch
(
IOException
e
)
{
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
e
.
printStackTrace
();
Toast
.
makeText
(
this
,
getString
(
R
.
string
.
save_failed_bcos
)
+
e
,
Toast
.
LENGTH_SHORT
).
show
();
Toast
.
makeText
(
this
,
getString
(
R
.
string
.
save_failed_bcos
)
+
e
,
Toast
.
LENGTH_SHORT
).
show
();
...
...
mobile/src/main/java/cn/garymb/ygomobile/ui/settings/PersonalFragment.java
View file @
8909def2
...
@@ -18,7 +18,6 @@ import androidx.recyclerview.widget.RecyclerView;
...
@@ -18,7 +18,6 @@ import androidx.recyclerview.widget.RecyclerView;
import
cn.garymb.ygomobile.base.BaseFragemnt
;
import
cn.garymb.ygomobile.base.BaseFragemnt
;
import
cn.garymb.ygomobile.lite.R
;
import
cn.garymb.ygomobile.lite.R
;
import
cn.garymb.ygomobile.ui.adapters.SettingsListAdapter
;
import
cn.garymb.ygomobile.ui.home.HomeActivity
;
import
cn.garymb.ygomobile.ui.home.HomeActivity
;
import
cn.garymb.ygomobile.ui.mycard.MycardFragment
;
import
cn.garymb.ygomobile.ui.mycard.MycardFragment
;
import
cn.garymb.ygomobile.ui.mycard.base.OnMcUserListener
;
import
cn.garymb.ygomobile.ui.mycard.base.OnMcUserListener
;
...
@@ -33,7 +32,6 @@ public class PersonalFragment extends BaseFragemnt implements OnMcUserListener {
...
@@ -33,7 +32,6 @@ public class PersonalFragment extends BaseFragemnt implements OnMcUserListener {
private
ImageView
iv_avatar
;
private
ImageView
iv_avatar
;
private
McUserManagement
userManagement
;
private
McUserManagement
userManagement
;
private
RecyclerView
rv_list
;
private
RecyclerView
rv_list
;
private
SettingsListAdapter
settingsAdapter
;
private
MycardFragment
fragment_mycard
;
private
MycardFragment
fragment_mycard
;
private
PersonalFragment
fragment_personal
;
private
PersonalFragment
fragment_personal
;
...
...
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