Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
M
MobileManager
Project
Overview
Details
Activity
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
Wang Xu
MobileManager
Commits
5896f532
Commit
5896f532
authored
Mar 21, 2020
by
Baoxy
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix: 禁止桌面摆放多个相同图标/优化激活逻辑
parent
7808bffa
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
442 additions
and
421 deletions
+442
-421
AndroidManifest.xml
Launcher3/AndroidManifest.xml
+1
-1
activity_setting.xml
Launcher3/res/layout/activity_setting.xml
+1
-1
Launcher.java
Launcher3/src/com/android/launcher3/Launcher.java
+2
-7
ManagerAuthActivity.java
Launcher3/src/com/android/launcher3/ManagerAuthActivity.java
+4
-4
Workspace.java
Launcher3/src/com/android/launcher3/Workspace.java
+361
-307
SettingAdminActivity.kt
...ndroid/launcher3/function/setting/SettingAdminActivity.kt
+1
-1
SettingPwdActivity.kt
.../android/launcher3/function/setting/SettingPwdActivity.kt
+0
-72
BlankActivity.java
...er3/src/com/android/launcher3/settings/BlankActivity.java
+8
-0
ActivationHelper.kt
...java/com/secspace/lib/common/function/ActivationHelper.kt
+1
-1
BuyCodeDialog.kt
...in/java/com/secspace/lib/common/function/BuyCodeDialog.kt
+1
-8
DialogManager.kt
...in/java/com/secspace/lib/common/function/DialogManager.kt
+12
-0
PrivacyPolicyDialog.java
...com/secspace/lib/common/function/PrivacyPolicyDialog.java
+5
-1
WorkManager.kt
...main/java/com/secspace/lib/common/function/WorkManager.kt
+36
-11
dialogui_holder_alert.xml
lib_common/src/main/res/layout/dialogui_holder_alert.xml
+9
-7
No files found.
Launcher3/AndroidManifest.xml
View file @
5896f532
...
@@ -80,7 +80,7 @@
...
@@ -80,7 +80,7 @@
<activity
android:name=
".settings.wifi.WifiWhiteListActivity"
<activity
android:name=
".settings.wifi.WifiWhiteListActivity"
android:excludeFromRecents=
"true"
/>
android:excludeFromRecents=
"true"
/>
<activity
android:name=
".function.setting.
AdminSetting
Activity"
<activity
android:name=
".function.setting.
SettingAdmin
Activity"
android:theme=
"@style/SettingTheme"
android:theme=
"@style/SettingTheme"
android:excludeFromRecents=
"true"
/>
android:excludeFromRecents=
"true"
/>
...
...
Launcher3/res/layout/activity_setting.xml
View file @
5896f532
...
@@ -5,7 +5,7 @@
...
@@ -5,7 +5,7 @@
android:layout_height=
"match_parent"
android:layout_height=
"match_parent"
android:fitsSystemWindows=
"true"
android:fitsSystemWindows=
"true"
android:orientation=
"vertical"
android:orientation=
"vertical"
tools:context=
"com.android.launcher3.function.setting.
AdminSetting
Activity"
>
tools:context=
"com.android.launcher3.function.setting.
SettingAdmin
Activity"
>
<TextView
<TextView
android:id=
"@+id/tv_setting_title"
android:id=
"@+id/tv_setting_title"
...
...
Launcher3/src/com/android/launcher3/Launcher.java
View file @
5896f532
...
@@ -153,6 +153,7 @@ import com.android.launcher3.widget.WidgetAddFlowHandler;
...
@@ -153,6 +153,7 @@ import com.android.launcher3.widget.WidgetAddFlowHandler;
import
com.android.launcher3.widget.WidgetHostViewLoader
;
import
com.android.launcher3.widget.WidgetHostViewLoader
;
import
com.android.launcher3.widget.WidgetsContainerView
;
import
com.android.launcher3.widget.WidgetsContainerView
;
import
com.google.gson.Gson
;
import
com.google.gson.Gson
;
import
com.secspace.lib.common.dialog.other.DialogUIUtils
;
import
com.secspace.lib.common.event.ChangeWallPaperEvent
;
import
com.secspace.lib.common.event.ChangeWallPaperEvent
;
import
com.secspace.lib.common.event.InitEvent
;
import
com.secspace.lib.common.event.InitEvent
;
import
com.secspace.lib.common.event.RefreshWorkSpaceEvent
;
import
com.secspace.lib.common.event.RefreshWorkSpaceEvent
;
...
@@ -1211,12 +1212,6 @@ public class Launcher extends BaseActivity
...
@@ -1211,12 +1212,6 @@ public class Launcher extends BaseActivity
}
}
private
void
activationNext
()
{
private
void
activationNext
()
{
String
pwd
=
Prefs
.
getLoginPwd
(
this
);
if
(
TextUtils
.
isEmpty
(
pwd
))
{
Intent
intent
=
new
Intent
(
this
,
PwdPinSetPwdActivity
.
class
);
startActivity
(
intent
);
return
;
}
LauncherAppState
app
=
LauncherAppState
.
getInstanceNoCreate
();
LauncherAppState
app
=
LauncherAppState
.
getInstanceNoCreate
();
if
(
app
!=
null
)
{
if
(
app
!=
null
)
{
app
.
getModel
().
forceReload
();
app
.
getModel
().
forceReload
();
...
@@ -3121,7 +3116,7 @@ public class Launcher extends BaseActivity
...
@@ -3121,7 +3116,7 @@ public class Launcher extends BaseActivity
if
(
TextUtils
.
equals
(((
EditText
)
view
).
getText
().
toString
(),
Prefs
.
getLoginPwd
(
mAppContext
)))
{
if
(
TextUtils
.
equals
(((
EditText
)
view
).
getText
().
toString
(),
Prefs
.
getLoginPwd
(
mAppContext
)))
{
IntentUtil
.
startExitService
(
mAppContext
);
IntentUtil
.
startExitService
(
mAppContext
);
}
else
{
}
else
{
ToastUtil
.
showLong
(
mAppContext
,
"密码错误!
"
);
DialogUIUtils
.
showToastCenter
(
"密码错误
"
);
ErrorTimeHelper
.
getInstance
(
mAppContext
).
addErrorCount
();
ErrorTimeHelper
.
getInstance
(
mAppContext
).
addErrorCount
();
}
}
}
}
...
...
Launcher3/src/com/android/launcher3/ManagerAuthActivity.java
View file @
5896f532
...
@@ -9,8 +9,9 @@ import android.text.TextUtils;
...
@@ -9,8 +9,9 @@ import android.text.TextUtils;
import
android.view.View
;
import
android.view.View
;
import
android.widget.EditText
;
import
android.widget.EditText
;
import
com.android.launcher3.function.setting.
AdminSetting
Activity
;
import
com.android.launcher3.function.setting.
SettingAdmin
Activity
;
import
com.android.launcher3.settings.ErrorTimeHelper
;
import
com.android.launcher3.settings.ErrorTimeHelper
;
import
com.secspace.lib.common.dialog.other.DialogUIUtils
;
import
com.secspace.lib.common.function.DialogManager
;
import
com.secspace.lib.common.function.DialogManager
;
import
com.secspace.lib.common.utils.InputUtil
;
import
com.secspace.lib.common.utils.InputUtil
;
import
com.secspace.lib.common.utils.Prefs
;
import
com.secspace.lib.common.utils.Prefs
;
...
@@ -37,14 +38,13 @@ public class ManagerAuthActivity extends BaseActivity {
...
@@ -37,14 +38,13 @@ public class ManagerAuthActivity extends BaseActivity {
boolean
canInputPwd
=
ErrorTimeHelper
.
getInstance
(
mAppContext
).
canInputPwd
();
boolean
canInputPwd
=
ErrorTimeHelper
.
getInstance
(
mAppContext
).
canInputPwd
();
if
(
canInputPwd
){
if
(
canInputPwd
){
if
(
TextUtils
.
equals
(
editText
.
getText
().
toString
(),
Prefs
.
getLoginPwd
(
mAppContext
)))
{
if
(
TextUtils
.
equals
(
editText
.
getText
().
toString
(),
Prefs
.
getLoginPwd
(
mAppContext
)))
{
ToastUtil
.
showLong
(
mAppContext
,
"密码正确!"
);
finish
();
finish
();
ErrorTimeHelper
.
getInstance
(
mAppContext
).
resetLockTimeAndCount
();
ErrorTimeHelper
.
getInstance
(
mAppContext
).
resetLockTimeAndCount
();
Intent
intent
=
new
Intent
();
Intent
intent
=
new
Intent
();
intent
.
setClass
(
mAppContext
,
AdminSetting
Activity
.
class
);
intent
.
setClass
(
mAppContext
,
SettingAdmin
Activity
.
class
);
startActivity
(
intent
);
startActivity
(
intent
);
}
else
{
}
else
{
ToastUtil
.
showLong
(
mAppContext
,
"密码错误!
"
);
DialogUIUtils
.
showToastCenter
(
"密码错误
"
);
ErrorTimeHelper
.
getInstance
(
mAppContext
).
addErrorCount
();
ErrorTimeHelper
.
getInstance
(
mAppContext
).
addErrorCount
();
finish
();
finish
();
}
}
...
...
Launcher3/src/com/android/launcher3/Workspace.java
View file @
5896f532
...
@@ -105,12 +105,16 @@ public class Workspace extends PagedView
...
@@ -105,12 +105,16 @@ public class Workspace extends PagedView
Insettable
,
DropTargetSource
{
Insettable
,
DropTargetSource
{
private
static
final
String
TAG
=
"Launcher.Workspace"
;
private
static
final
String
TAG
=
"Launcher.Workspace"
;
/** The value that {@link #mTransitionProgress} must be greater than for
/**
* {@link #transitionStateShouldAllowDrop()} to return true. */
* The value that {@link #mTransitionProgress} must be greater than for
* {@link #transitionStateShouldAllowDrop()} to return true.
*/
private
static
final
float
ALLOW_DROP_TRANSITION_PROGRESS
=
0.25f
;
private
static
final
float
ALLOW_DROP_TRANSITION_PROGRESS
=
0.25f
;
/** The value that {@link #mTransitionProgress} must be greater than for
/**
* {@link #isFinishedSwitchingState()} ()} to return true. */
* The value that {@link #mTransitionProgress} must be greater than for
* {@link #isFinishedSwitchingState()} ()} to return true.
*/
private
static
final
float
FINISHED_SWITCHING_STATE_TRANSITION_PROGRESS
=
0.5f
;
private
static
final
float
FINISHED_SWITCHING_STATE_TRANSITION_PROGRESS
=
0.5f
;
private
static
boolean
ENFORCE_DRAG_EVENT_ORDER
=
false
;
private
static
boolean
ENFORCE_DRAG_EVENT_ORDER
=
false
;
...
@@ -135,15 +139,20 @@ public class Workspace extends PagedView
...
@@ -135,15 +139,20 @@ public class Workspace extends PagedView
private
long
mCustomContentShowTime
=
-
1
;
private
long
mCustomContentShowTime
=
-
1
;
private
LayoutTransition
mLayoutTransition
;
private
LayoutTransition
mLayoutTransition
;
@Thunk
final
WallpaperManager
mWallpaperManager
;
@Thunk
final
WallpaperManager
mWallpaperManager
;
private
ShortcutAndWidgetContainer
mDragSourceInternal
;
private
ShortcutAndWidgetContainer
mDragSourceInternal
;
@Thunk
LongArrayMap
<
CellLayout
>
mWorkspaceScreens
=
new
LongArrayMap
<>();
@Thunk
@Thunk
ArrayList
<
Long
>
mScreenOrder
=
new
ArrayList
<
Long
>();
LongArrayMap
<
CellLayout
>
mWorkspaceScreens
=
new
LongArrayMap
<>();
@Thunk
ArrayList
<
Long
>
mScreenOrder
=
new
ArrayList
<
Long
>();
@Thunk
Runnable
mRemoveEmptyScreenRunnable
;
@Thunk
@Thunk
boolean
mDeferRemoveExtraEmptyScreen
=
false
;
Runnable
mRemoveEmptyScreenRunnable
;
@Thunk
boolean
mDeferRemoveExtraEmptyScreen
=
false
;
/**
/**
* CellInfo for the cell that is currently being dragged
* CellInfo for the cell that is currently being dragged
...
@@ -153,7 +162,8 @@ public class Workspace extends PagedView
...
@@ -153,7 +162,8 @@ public class Workspace extends PagedView
/**
/**
* Target drop area calculated during last acceptDrop call.
* Target drop area calculated during last acceptDrop call.
*/
*/
@Thunk
int
[]
mTargetCell
=
new
int
[
2
];
@Thunk
int
[]
mTargetCell
=
new
int
[
2
];
private
int
mDragOverX
=
-
1
;
private
int
mDragOverX
=
-
1
;
private
int
mDragOverY
=
-
1
;
private
int
mDragOverY
=
-
1
;
...
@@ -165,7 +175,8 @@ public class Workspace extends PagedView
...
@@ -165,7 +175,8 @@ public class Workspace extends PagedView
/**
/**
* The CellLayout that is currently being dragged over
* The CellLayout that is currently being dragged over
*/
*/
@Thunk
CellLayout
mDragTargetLayout
=
null
;
@Thunk
CellLayout
mDragTargetLayout
=
null
;
/**
/**
* The CellLayout that we will show as highlighted
* The CellLayout that we will show as highlighted
*/
*/
...
@@ -176,15 +187,18 @@ public class Workspace extends PagedView
...
@@ -176,15 +187,18 @@ public class Workspace extends PagedView
*/
*/
private
CellLayout
mDropToLayout
=
null
;
private
CellLayout
mDropToLayout
=
null
;
@Thunk
Launcher
mLauncher
;
@Thunk
@Thunk
DragController
mDragController
;
Launcher
mLauncher
;
@Thunk
DragController
mDragController
;
// These are temporary variables to prevent having to allocate a new object just to
// These are temporary variables to prevent having to allocate a new object just to
// return an (x, y) value from helper functions. Do NOT use them to maintain other state.
// return an (x, y) value from helper functions. Do NOT use them to maintain other state.
private
static
final
Rect
sTempRect
=
new
Rect
();
private
static
final
Rect
sTempRect
=
new
Rect
();
private
final
int
[]
mTempXY
=
new
int
[
2
];
private
final
int
[]
mTempXY
=
new
int
[
2
];
@Thunk
float
[]
mDragViewVisualCenter
=
new
float
[
2
];
@Thunk
float
[]
mDragViewVisualCenter
=
new
float
[
2
];
private
float
[]
mTempTouchCoordinates
=
new
float
[
2
];
private
float
[]
mTempTouchCoordinates
=
new
float
[
2
];
private
SpringLoadedDragController
mSpringLoadedDragController
;
private
SpringLoadedDragController
mSpringLoadedDragController
;
...
@@ -194,11 +208,11 @@ public class Workspace extends PagedView
...
@@ -194,11 +208,11 @@ public class Workspace extends PagedView
// in all apps or customize mode)
// in all apps or customize mode)
public
enum
State
{
public
enum
State
{
NORMAL
(
false
,
false
,
ContainerType
.
WORKSPACE
),
NORMAL
(
false
,
false
,
ContainerType
.
WORKSPACE
),
NORMAL_HIDDEN
(
false
,
false
,
ContainerType
.
ALLAPPS
),
NORMAL_HIDDEN
(
false
,
false
,
ContainerType
.
ALLAPPS
),
SPRING_LOADED
(
false
,
true
,
ContainerType
.
WORKSPACE
),
SPRING_LOADED
(
false
,
true
,
ContainerType
.
WORKSPACE
),
OVERVIEW
(
true
,
true
,
ContainerType
.
OVERVIEW
),
OVERVIEW
(
true
,
true
,
ContainerType
.
OVERVIEW
),
OVERVIEW_HIDDEN
(
true
,
false
,
ContainerType
.
WIDGETS
);
OVERVIEW_HIDDEN
(
true
,
false
,
ContainerType
.
WIDGETS
);
public
final
boolean
shouldUpdateWidget
;
public
final
boolean
shouldUpdateWidget
;
public
final
boolean
hasMultipleVisiblePages
;
public
final
boolean
hasMultipleVisiblePages
;
...
@@ -213,8 +227,8 @@ public class Workspace extends PagedView
...
@@ -213,8 +227,8 @@ public class Workspace extends PagedView
// Direction used for moving the workspace and hotseat UI
// Direction used for moving the workspace and hotseat UI
public
enum
Direction
{
public
enum
Direction
{
X
(
TRANSLATION_X
),
X
(
TRANSLATION_X
),
Y
(
TRANSLATION_Y
);
Y
(
TRANSLATION_Y
);
private
final
Property
<
View
,
Float
>
viewProperty
;
private
final
Property
<
View
,
Float
>
viewProperty
;
...
@@ -228,13 +242,13 @@ public class Workspace extends PagedView
...
@@ -228,13 +242,13 @@ public class Workspace extends PagedView
/**
/**
* These values correspond to {@link Direction#X} & {@link Direction#Y}
* These values correspond to {@link Direction#X} & {@link Direction#Y}
*/
*/
private
float
[]
mPageAlpha
=
new
float
[]
{
1
,
1
};
private
float
[]
mPageAlpha
=
new
float
[]{
1
,
1
};
/**
/**
* Hotseat alpha can be changed when moving horizontally, vertically, changing states.
* Hotseat alpha can be changed when moving horizontally, vertically, changing states.
* The values correspond to {@link Direction#X}, {@link Direction#Y} &
* The values correspond to {@link Direction#X}, {@link Direction#Y} &
* {@link #HOTSEAT_STATE_ALPHA_INDEX} respectively.
* {@link #HOTSEAT_STATE_ALPHA_INDEX} respectively.
*/
*/
private
float
[]
mHotseatAlpha
=
new
float
[]
{
1
,
1
,
1
};
private
float
[]
mHotseatAlpha
=
new
float
[]{
1
,
1
,
1
};
public
static
final
int
QSB_ALPHA_INDEX_STATE_CHANGE
=
0
;
public
static
final
int
QSB_ALPHA_INDEX_STATE_CHANGE
=
0
;
public
static
final
int
QSB_ALPHA_INDEX_Y_TRANSLATION
=
1
;
public
static
final
int
QSB_ALPHA_INDEX_Y_TRANSLATION
=
1
;
...
@@ -259,7 +273,8 @@ public class Workspace extends PagedView
...
@@ -259,7 +273,8 @@ public class Workspace extends PagedView
final
WallpaperOffsetInterpolator
mWallpaperOffset
;
final
WallpaperOffsetInterpolator
mWallpaperOffset
;
private
boolean
mUnlockWallpaperFromDefaultPageOnLayout
;
private
boolean
mUnlockWallpaperFromDefaultPageOnLayout
;
@Thunk
Runnable
mDelayedResizeRunnable
;
@Thunk
Runnable
mDelayedResizeRunnable
;
private
Runnable
mDelayedSnapToPageRunnable
;
private
Runnable
mDelayedSnapToPageRunnable
;
// Variables relating to the creation of user folders by hovering shortcuts over shortcuts
// Variables relating to the creation of user folders by hovering shortcuts over shortcuts
...
@@ -295,8 +310,10 @@ public class Workspace extends PagedView
...
@@ -295,8 +310,10 @@ public class Workspace extends PagedView
private
static
final
int
DRAG_MODE_ADD_TO_FOLDER
=
2
;
private
static
final
int
DRAG_MODE_ADD_TO_FOLDER
=
2
;
private
static
final
int
DRAG_MODE_REORDER
=
3
;
private
static
final
int
DRAG_MODE_REORDER
=
3
;
private
int
mDragMode
=
DRAG_MODE_NONE
;
private
int
mDragMode
=
DRAG_MODE_NONE
;
@Thunk
int
mLastReorderX
=
-
1
;
@Thunk
@Thunk
int
mLastReorderY
=
-
1
;
int
mLastReorderX
=
-
1
;
@Thunk
int
mLastReorderY
=
-
1
;
private
SparseArray
<
Parcelable
>
mSavedStates
;
private
SparseArray
<
Parcelable
>
mSavedStates
;
private
final
ArrayList
<
Integer
>
mRestoredPages
=
new
ArrayList
<
Integer
>();
private
final
ArrayList
<
Integer
>
mRestoredPages
=
new
ArrayList
<
Integer
>();
...
@@ -304,7 +321,8 @@ public class Workspace extends PagedView
...
@@ -304,7 +321,8 @@ public class Workspace extends PagedView
private
float
mCurrentScale
;
private
float
mCurrentScale
;
private
float
mTransitionProgress
;
private
float
mTransitionProgress
;
@Thunk
Runnable
mDeferredAction
;
@Thunk
Runnable
mDeferredAction
;
private
boolean
mDeferDropAfterUninstall
;
private
boolean
mDeferDropAfterUninstall
;
private
boolean
mUninstallSuccessful
;
private
boolean
mUninstallSuccessful
;
...
@@ -331,7 +349,7 @@ public class Workspace extends PagedView
...
@@ -331,7 +349,7 @@ public class Workspace extends PagedView
* Used to inflate the Workspace from XML.
* Used to inflate the Workspace from XML.
*
*
* @param context The application's context.
* @param context The application's context.
* @param attrs The attributes set containing the Workspace's customization values.
* @param attrs
The attributes set containing the Workspace's customization values.
*/
*/
public
Workspace
(
Context
context
,
AttributeSet
attrs
)
{
public
Workspace
(
Context
context
,
AttributeSet
attrs
)
{
this
(
context
,
attrs
,
0
);
this
(
context
,
attrs
,
0
);
...
@@ -340,8 +358,8 @@ public class Workspace extends PagedView
...
@@ -340,8 +358,8 @@ public class Workspace extends PagedView
/**
/**
* Used to inflate the Workspace from XML.
* Used to inflate the Workspace from XML.
*
*
* @param context The application's context.
* @param context
The application's context.
* @param attrs The attributes set containing the Workspace's customization values.
* @param attrs
The attributes set containing the Workspace's customization values.
* @param defStyle Unused.
* @param defStyle Unused.
*/
*/
public
Workspace
(
Context
context
,
AttributeSet
attrs
,
int
defStyle
)
{
public
Workspace
(
Context
context
,
AttributeSet
attrs
,
int
defStyle
)
{
...
@@ -559,6 +577,7 @@ public class Workspace extends PagedView
...
@@ -559,6 +577,7 @@ public class Workspace extends PagedView
void
enableLayoutTransitions
()
{
void
enableLayoutTransitions
()
{
setLayoutTransition
(
mLayoutTransition
);
setLayoutTransition
(
mLayoutTransition
);
}
}
void
disableLayoutTransitions
()
{
void
disableLayoutTransitions
()
{
setLayoutTransition
(
null
);
setLayoutTransition
(
null
);
}
}
...
@@ -586,6 +605,7 @@ public class Workspace extends PagedView
...
@@ -586,6 +605,7 @@ public class Workspace extends PagedView
/**
/**
* Initializes and binds the first page
* Initializes and binds the first page
*
* @param qsb an existing qsb to recycle or null.
* @param qsb an existing qsb to recycle or null.
*/
*/
public
void
bindAndInitFirstWorkspaceScreen
(
View
qsb
)
{
public
void
bindAndInitFirstWorkspaceScreen
(
View
qsb
)
{
...
@@ -712,7 +732,7 @@ public class Workspace extends PagedView
...
@@ -712,7 +732,7 @@ public class Workspace extends PagedView
// Inflate the cell layout, but do not add it automatically so that we can get the newly
// Inflate the cell layout, but do not add it automatically so that we can get the newly
// created CellLayout.
// created CellLayout.
CellLayout
newScreen
=
(
CellLayout
)
mLauncher
.
getLayoutInflater
().
inflate
(
CellLayout
newScreen
=
(
CellLayout
)
mLauncher
.
getLayoutInflater
().
inflate
(
R
.
layout
.
workspace_screen
,
this
,
false
/* attachToRoot */
);
R
.
layout
.
workspace_screen
,
this
,
false
/* attachToRoot */
);
newScreen
.
setOnLongClickListener
(
mLongClickListener
);
newScreen
.
setOnLongClickListener
(
mLongClickListener
);
newScreen
.
setOnClickListener
(
mLauncher
);
newScreen
.
setOnClickListener
(
mLauncher
);
newScreen
.
setSoundEffectsEnabled
(
false
);
newScreen
.
setSoundEffectsEnabled
(
false
);
...
@@ -767,7 +787,7 @@ public class Workspace extends PagedView
...
@@ -767,7 +787,7 @@ public class Workspace extends PagedView
}
}
public
void
addToCustomContentPage
(
View
customContent
,
CustomContentCallbacks
callbacks
,
public
void
addToCustomContentPage
(
View
customContent
,
CustomContentCallbacks
callbacks
,
String
description
)
{
String
description
)
{
if
(
getPageIndexForScreenId
(
CUSTOM_CONTENT_SCREEN_ID
)
<
0
)
{
if
(
getPageIndexForScreenId
(
CUSTOM_CONTENT_SCREEN_ID
)
<
0
)
{
throw
new
RuntimeException
(
"Expected custom content screen to exist"
);
throw
new
RuntimeException
(
"Expected custom content screen to exist"
);
}
}
...
@@ -777,10 +797,10 @@ public class Workspace extends PagedView
...
@@ -777,10 +797,10 @@ public class Workspace extends PagedView
int
spanX
=
customScreen
.
getCountX
();
int
spanX
=
customScreen
.
getCountX
();
int
spanY
=
customScreen
.
getCountY
();
int
spanY
=
customScreen
.
getCountY
();
CellLayout
.
LayoutParams
lp
=
new
CellLayout
.
LayoutParams
(
0
,
0
,
spanX
,
spanY
);
CellLayout
.
LayoutParams
lp
=
new
CellLayout
.
LayoutParams
(
0
,
0
,
spanX
,
spanY
);
lp
.
canReorder
=
false
;
lp
.
canReorder
=
false
;
lp
.
isFullscreen
=
true
;
lp
.
isFullscreen
=
true
;
if
(
customContent
instanceof
Insettable
)
{
if
(
customContent
instanceof
Insettable
)
{
((
Insettable
)
customContent
).
setInsets
(
mInsets
);
((
Insettable
)
customContent
).
setInsets
(
mInsets
);
}
}
// Verify that the child is removed from any existing parent.
// Verify that the child is removed from any existing parent.
...
@@ -865,7 +885,7 @@ public class Workspace extends PagedView
...
@@ -865,7 +885,7 @@ public class Workspace extends PagedView
}
}
public
void
removeExtraEmptyScreenDelayed
(
final
boolean
animate
,
final
Runnable
onComplete
,
public
void
removeExtraEmptyScreenDelayed
(
final
boolean
animate
,
final
Runnable
onComplete
,
final
int
delay
,
final
boolean
stripEmptyScreens
)
{
final
int
delay
,
final
boolean
stripEmptyScreens
)
{
if
(
mLauncher
.
isWorkspaceLoading
())
{
if
(
mLauncher
.
isWorkspaceLoading
())
{
// Don't strip empty screens if the workspace is still loading
// Don't strip empty screens if the workspace is still loading
return
;
return
;
...
@@ -906,7 +926,7 @@ public class Workspace extends PagedView
...
@@ -906,7 +926,7 @@ public class Workspace extends PagedView
}
}
private
void
fadeAndRemoveEmptyScreen
(
int
delay
,
int
duration
,
final
Runnable
onComplete
,
private
void
fadeAndRemoveEmptyScreen
(
int
delay
,
int
duration
,
final
Runnable
onComplete
,
final
boolean
stripEmptyScreens
)
{
final
boolean
stripEmptyScreens
)
{
// XXX: Do we need to update LM workspace screens below?
// XXX: Do we need to update LM workspace screens below?
PropertyValuesHolder
alpha
=
PropertyValuesHolder
.
ofFloat
(
"alpha"
,
0
f
);
PropertyValuesHolder
alpha
=
PropertyValuesHolder
.
ofFloat
(
"alpha"
,
0
f
);
PropertyValuesHolder
bgAlpha
=
PropertyValuesHolder
.
ofFloat
(
"backgroundAlpha"
,
0
f
);
PropertyValuesHolder
bgAlpha
=
PropertyValuesHolder
.
ofFloat
(
"backgroundAlpha"
,
0
f
);
...
@@ -1034,7 +1054,7 @@ public class Workspace extends PagedView
...
@@ -1034,7 +1054,7 @@ public class Workspace extends PagedView
int
minScreens
=
1
+
numCustomPages
();
int
minScreens
=
1
+
numCustomPages
();
int
pageShift
=
0
;
int
pageShift
=
0
;
for
(
Long
id:
removeScreens
)
{
for
(
Long
id
:
removeScreens
)
{
CellLayout
cl
=
mWorkspaceScreens
.
get
(
id
);
CellLayout
cl
=
mWorkspaceScreens
.
get
(
id
);
mWorkspaceScreens
.
remove
(
id
);
mWorkspaceScreens
.
remove
(
id
);
mScreenOrder
.
remove
(
id
);
mScreenOrder
.
remove
(
id
);
...
@@ -1095,15 +1115,15 @@ public class Workspace extends PagedView
...
@@ -1095,15 +1115,15 @@ public class Workspace extends PagedView
* Adds the specified child in the specified screen. The position and dimension of
* Adds the specified child in the specified screen. The position and dimension of
* the child are defined by x, y, spanX and spanY.
* the child are defined by x, y, spanX and spanY.
*
*
* @param child The child to add in one of the workspace's screens.
* @param child
The child to add in one of the workspace's screens.
* @param screenId The screen in which to add the child.
* @param screenId The screen in which to add the child.
* @param x The X position of the child in the screen's grid.
* @param x
The X position of the child in the screen's grid.
* @param y The Y position of the child in the screen's grid.
* @param y
The Y position of the child in the screen's grid.
* @param spanX The number of cells spanned horizontally by the child.
* @param spanX
The number of cells spanned horizontally by the child.
* @param spanY The number of cells spanned vertically by the child.
* @param spanY
The number of cells spanned vertically by the child.
*/
*/
private
void
addInScreen
(
View
child
,
long
container
,
long
screenId
,
int
x
,
int
y
,
private
void
addInScreen
(
View
child
,
long
container
,
long
screenId
,
int
x
,
int
y
,
int
spanX
,
int
spanY
)
{
int
spanX
,
int
spanY
)
{
if
(
container
==
LauncherSettings
.
Favorites
.
CONTAINER_DESKTOP
)
{
if
(
container
==
LauncherSettings
.
Favorites
.
CONTAINER_DESKTOP
)
{
if
(
getScreenWithId
(
screenId
)
==
null
)
{
if
(
getScreenWithId
(
screenId
)
==
null
)
{
Log
.
e
(
TAG
,
"Skipping child, screenId "
+
screenId
+
" not found"
);
Log
.
e
(
TAG
,
"Skipping child, screenId "
+
screenId
+
" not found"
);
...
@@ -1192,14 +1212,16 @@ public class Workspace extends PagedView
...
@@ -1192,14 +1212,16 @@ public class Workspace extends PagedView
return
mIsSwitchingState
;
return
mIsSwitchingState
;
}
}
/** This differs from isSwitchingState in that we take into account how far the transition
/**
* has completed. */
* This differs from isSwitchingState in that we take into account how far the transition
* has completed.
*/
public
boolean
isFinishedSwitchingState
()
{
public
boolean
isFinishedSwitchingState
()
{
return
!
mIsSwitchingState
return
!
mIsSwitchingState
||
(
mTransitionProgress
>
FINISHED_SWITCHING_STATE_TRANSITION_PROGRESS
);
||
(
mTransitionProgress
>
FINISHED_SWITCHING_STATE_TRANSITION_PROGRESS
);
}
}
protected
void
onWindowVisibilityChanged
(
int
visibility
)
{
protected
void
onWindowVisibilityChanged
(
int
visibility
)
{
mLauncher
.
onWindowVisibilityChanged
(
visibility
);
mLauncher
.
onWindowVisibilityChanged
(
visibility
);
}
}
...
@@ -1215,19 +1237,19 @@ public class Workspace extends PagedView
...
@@ -1215,19 +1237,19 @@ public class Workspace extends PagedView
@Override
@Override
public
boolean
onInterceptTouchEvent
(
MotionEvent
ev
)
{
public
boolean
onInterceptTouchEvent
(
MotionEvent
ev
)
{
switch
(
ev
.
getAction
()
&
MotionEvent
.
ACTION_MASK
)
{
switch
(
ev
.
getAction
()
&
MotionEvent
.
ACTION_MASK
)
{
case
MotionEvent
.
ACTION_DOWN
:
case
MotionEvent
.
ACTION_DOWN
:
mXDown
=
ev
.
getX
();
mXDown
=
ev
.
getX
();
mYDown
=
ev
.
getY
();
mYDown
=
ev
.
getY
();
mTouchDownTime
=
System
.
currentTimeMillis
();
mTouchDownTime
=
System
.
currentTimeMillis
();
break
;
break
;
case
MotionEvent
.
ACTION_POINTER_UP
:
case
MotionEvent
.
ACTION_POINTER_UP
:
case
MotionEvent
.
ACTION_UP
:
case
MotionEvent
.
ACTION_UP
:
if
(
mTouchState
==
TOUCH_STATE_REST
)
{
if
(
mTouchState
==
TOUCH_STATE_REST
)
{
final
CellLayout
currentPage
=
(
CellLayout
)
getChildAt
(
mCurrentPage
);
final
CellLayout
currentPage
=
(
CellLayout
)
getChildAt
(
mCurrentPage
);
if
(
currentPage
!=
null
)
{
if
(
currentPage
!=
null
)
{
onWallpaperTap
(
ev
);
onWallpaperTap
(
ev
);
}
}
}
}
}
}
return
super
.
onInterceptTouchEvent
(
ev
);
return
super
.
onInterceptTouchEvent
(
ev
);
}
}
...
@@ -1500,8 +1522,9 @@ public class Workspace extends PagedView
...
@@ -1500,8 +1522,9 @@ public class Workspace extends PagedView
/**
/**
* Moves the workspace UI in the Y direction.
* Moves the workspace UI in the Y direction.
*
* @param translation the amount of shift.
* @param translation the amount of shift.
* @param alpha the alpha for the workspace page
* @param alpha
the alpha for the workspace page
*/
*/
public
void
setWorkspaceYTranslationAndAlpha
(
float
translation
,
float
alpha
)
{
public
void
setWorkspaceYTranslationAndAlpha
(
float
translation
,
float
alpha
)
{
setWorkspaceTranslationAndAlpha
(
Direction
.
Y
,
translation
,
alpha
);
setWorkspaceTranslationAndAlpha
(
Direction
.
Y
,
translation
,
alpha
);
...
@@ -1512,9 +1535,10 @@ public class Workspace extends PagedView
...
@@ -1512,9 +1535,10 @@ public class Workspace extends PagedView
/**
/**
* Moves the workspace UI in the provided direction.
* Moves the workspace UI in the provided direction.
* @param direction the direction to move the workspace
*
* @param direction the direction to move the workspace
* @param translation the amount of shift.
* @param translation the amount of shift.
* @param alpha the alpha for the workspace page
* @param alpha
the alpha for the workspace page
*/
*/
private
void
setWorkspaceTranslationAndAlpha
(
Direction
direction
,
float
translation
,
float
alpha
)
{
private
void
setWorkspaceTranslationAndAlpha
(
Direction
direction
,
float
translation
,
float
alpha
)
{
Property
<
View
,
Float
>
property
=
direction
.
viewProperty
;
Property
<
View
,
Float
>
property
=
direction
.
viewProperty
;
...
@@ -1539,9 +1563,10 @@ public class Workspace extends PagedView
...
@@ -1539,9 +1563,10 @@ public class Workspace extends PagedView
/**
/**
* Moves the Hotseat UI in the provided direction.
* Moves the Hotseat UI in the provided direction.
* @param direction the direction to move the workspace
*
* @param direction the direction to move the workspace
* @param translation the amount of shift.
* @param translation the amount of shift.
* @param alpha the alpha for the hotseat page
* @param alpha
the alpha for the hotseat page
*/
*/
public
void
setHotseatTranslationAndAlpha
(
Direction
direction
,
float
translation
,
float
alpha
)
{
public
void
setHotseatTranslationAndAlpha
(
Direction
direction
,
float
translation
,
float
alpha
)
{
Property
<
View
,
Float
>
property
=
direction
.
viewProperty
;
Property
<
View
,
Float
>
property
=
direction
.
viewProperty
;
...
@@ -1843,12 +1868,15 @@ public class Workspace extends PagedView
...
@@ -1843,12 +1868,15 @@ public class Workspace extends PagedView
return
mState
!=
State
.
NORMAL
;
return
mState
!=
State
.
NORMAL
;
}
}
/** Returns whether a drag should be allowed to be started from the current workspace state. */
/**
* Returns whether a drag should be allowed to be started from the current workspace state.
*/
public
boolean
workspaceIconsCanBeDragged
()
{
public
boolean
workspaceIconsCanBeDragged
()
{
return
mState
==
State
.
NORMAL
||
mState
==
State
.
SPRING_LOADED
;
return
mState
==
State
.
NORMAL
||
mState
==
State
.
SPRING_LOADED
;
}
}
@Thunk
void
updateChildrenLayersEnabled
(
boolean
force
)
{
@Thunk
void
updateChildrenLayersEnabled
(
boolean
force
)
{
boolean
small
=
mState
==
State
.
OVERVIEW
||
mIsSwitchingState
;
boolean
small
=
mState
==
State
.
OVERVIEW
||
mIsSwitchingState
;
boolean
enableChildrenLayers
=
force
||
small
||
mAnimatingViewIntoPlace
||
isPageInTransition
();
boolean
enableChildrenLayers
=
force
||
small
||
mAnimatingViewIntoPlace
||
isPageInTransition
();
...
@@ -1894,9 +1922,9 @@ public class Workspace extends PagedView
...
@@ -1894,9 +1922,9 @@ public class Workspace extends PagedView
if
(
mForceDrawAdjacentPages
)
{
if
(
mForceDrawAdjacentPages
)
{
// In overview mode, make sure that the two side pages are visible.
// In overview mode, make sure that the two side pages are visible.
leftScreen
=
Utilities
.
boundToRange
(
getCurrentPage
()
-
1
,
leftScreen
=
Utilities
.
boundToRange
(
getCurrentPage
()
-
1
,
numCustomPages
(),
rightScreen
);
numCustomPages
(),
rightScreen
);
rightScreen
=
Utilities
.
boundToRange
(
getCurrentPage
()
+
1
,
rightScreen
=
Utilities
.
boundToRange
(
getCurrentPage
()
+
1
,
leftScreen
,
getPageCount
()
-
1
);
leftScreen
,
getPageCount
()
-
1
);
}
}
if
(
leftScreen
==
rightScreen
)
{
if
(
leftScreen
==
rightScreen
)
{
...
@@ -2047,14 +2075,14 @@ public class Workspace extends PagedView
...
@@ -2047,14 +2075,14 @@ public class Workspace extends PagedView
* to that new state.
* to that new state.
*/
*/
public
Animator
setStateWithAnimation
(
State
toState
,
boolean
animated
,
public
Animator
setStateWithAnimation
(
State
toState
,
boolean
animated
,
AnimationLayerSet
layerViews
)
{
AnimationLayerSet
layerViews
)
{
final
State
fromState
=
mState
;
final
State
fromState
=
mState
;
// Update the current state
// Update the current state
mState
=
toState
;
mState
=
toState
;
// Create the animation to the new state
// Create the animation to the new state
AnimatorSet
workspaceAnim
=
mStateTransitionAnimation
.
getAnimationToState
(
fromState
,
AnimatorSet
workspaceAnim
=
mStateTransitionAnimation
.
getAnimationToState
(
fromState
,
toState
,
animated
,
layerViews
);
toState
,
animated
,
layerViews
);
...
@@ -2122,7 +2150,7 @@ public class Workspace extends PagedView
...
@@ -2122,7 +2150,7 @@ public class Workspace extends PagedView
}
else
{
}
else
{
int
accessible
=
mState
==
State
.
NORMAL
?
int
accessible
=
mState
==
State
.
NORMAL
?
IMPORTANT_FOR_ACCESSIBILITY_AUTO
:
IMPORTANT_FOR_ACCESSIBILITY_AUTO
:
IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS
;
IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS
;
page
.
setImportantForAccessibility
(
IMPORTANT_FOR_ACCESSIBILITY_NO
);
page
.
setImportantForAccessibility
(
IMPORTANT_FOR_ACCESSIBILITY_NO
);
page
.
getShortcutsAndWidgets
().
setImportantForAccessibility
(
accessible
);
page
.
getShortcutsAndWidgets
().
setImportantForAccessibility
(
accessible
);
page
.
setContentDescription
(
null
);
page
.
setContentDescription
(
null
);
...
@@ -2163,14 +2191,14 @@ public class Workspace extends PagedView
...
@@ -2163,14 +2191,14 @@ public class Workspace extends PagedView
}
}
void
showCustomContentIfNecessary
()
{
void
showCustomContentIfNecessary
()
{
boolean
show
=
mState
==
Workspace
.
State
.
NORMAL
;
boolean
show
=
mState
==
Workspace
.
State
.
NORMAL
;
if
(
show
&&
hasCustomContent
())
{
if
(
show
&&
hasCustomContent
())
{
mWorkspaceScreens
.
get
(
CUSTOM_CONTENT_SCREEN_ID
).
setVisibility
(
VISIBLE
);
mWorkspaceScreens
.
get
(
CUSTOM_CONTENT_SCREEN_ID
).
setVisibility
(
VISIBLE
);
}
}
}
}
void
hideCustomContentIfNecessary
()
{
void
hideCustomContentIfNecessary
()
{
boolean
hide
=
mState
!=
Workspace
.
State
.
NORMAL
;
boolean
hide
=
mState
!=
Workspace
.
State
.
NORMAL
;
if
(
hide
&&
hasCustomContent
())
{
if
(
hide
&&
hasCustomContent
())
{
disableLayoutTransitions
();
disableLayoutTransitions
();
mWorkspaceScreens
.
get
(
CUSTOM_CONTENT_SCREEN_ID
).
setVisibility
(
INVISIBLE
);
mWorkspaceScreens
.
get
(
CUSTOM_CONTENT_SCREEN_ID
).
setVisibility
(
INVISIBLE
);
...
@@ -2208,7 +2236,7 @@ public class Workspace extends PagedView
...
@@ -2208,7 +2236,7 @@ public class Workspace extends PagedView
@Override
@Override
protected
void
enableAccessibleDrag
(
boolean
enable
)
{
protected
void
enableAccessibleDrag
(
boolean
enable
)
{
super
.
enableAccessibleDrag
(
enable
);
super
.
enableAccessibleDrag
(
enable
);
setEnableForLayout
(
mLauncher
.
getHotseat
().
getLayout
(),
enable
);
setEnableForLayout
(
mLauncher
.
getHotseat
().
getLayout
(),
enable
);
// We need to allow our individual children to become click handlers in this
// We need to allow our individual children to become click handlers in this
// case, so temporarily unset the click handlers.
// case, so temporarily unset the click handlers.
...
@@ -2234,7 +2262,7 @@ public class Workspace extends PagedView
...
@@ -2234,7 +2262,7 @@ public class Workspace extends PagedView
public
DragView
beginDragShared
(
View
child
,
DragSource
source
,
ItemInfo
dragObject
,
public
DragView
beginDragShared
(
View
child
,
DragSource
source
,
ItemInfo
dragObject
,
DragPreviewProvider
previewProvider
,
DragOptions
dragOptions
)
{
DragPreviewProvider
previewProvider
,
DragOptions
dragOptions
)
{
child
.
clearFocus
();
child
.
clearFocus
();
child
.
setPressed
(
false
);
child
.
setPressed
(
false
);
mOutlineProvider
=
previewProvider
;
mOutlineProvider
=
previewProvider
;
...
@@ -2256,13 +2284,13 @@ public class Workspace extends PagedView
...
@@ -2256,13 +2284,13 @@ public class Workspace extends PagedView
dragLayerY
+=
dragRect
.
top
;
dragLayerY
+=
dragRect
.
top
;
// Note: The dragRect is used to calculate drag layer offsets, but the
// Note: The dragRect is used to calculate drag layer offsets, but the
// dragVisualizeOffset in addition to the dragRect (the size) to position the outline.
// dragVisualizeOffset in addition to the dragRect (the size) to position the outline.
dragVisualizeOffset
=
new
Point
(-
halfPadding
,
halfPadding
);
dragVisualizeOffset
=
new
Point
(-
halfPadding
,
halfPadding
);
}
else
if
(
child
instanceof
FolderIcon
)
{
}
else
if
(
child
instanceof
FolderIcon
)
{
int
previewSize
=
grid
.
folderIconSizePx
;
int
previewSize
=
grid
.
folderIconSizePx
;
dragVisualizeOffset
=
new
Point
(-
halfPadding
,
halfPadding
-
child
.
getPaddingTop
());
dragVisualizeOffset
=
new
Point
(-
halfPadding
,
halfPadding
-
child
.
getPaddingTop
());
dragRect
=
new
Rect
(
0
,
child
.
getPaddingTop
(),
child
.
getWidth
(),
previewSize
);
dragRect
=
new
Rect
(
0
,
child
.
getPaddingTop
(),
child
.
getWidth
(),
previewSize
);
}
else
if
(
previewProvider
instanceof
ShortcutDragPreviewProvider
)
{
}
else
if
(
previewProvider
instanceof
ShortcutDragPreviewProvider
)
{
dragVisualizeOffset
=
new
Point
(-
halfPadding
,
halfPadding
);
dragVisualizeOffset
=
new
Point
(-
halfPadding
,
halfPadding
);
}
}
// Clear the pressed state if necessary
// Clear the pressed state if necessary
...
@@ -2297,141 +2325,10 @@ public class Workspace extends PagedView
...
@@ -2297,141 +2325,10 @@ public class Workspace extends PagedView
(
mState
==
State
.
NORMAL
||
mState
==
State
.
SPRING_LOADED
));
(
mState
==
State
.
NORMAL
||
mState
==
State
.
SPRING_LOADED
));
}
}
// /**
// /**
// * {@inheritDoc}
// * {@inheritDoc}
// */
// */
// @Override
@Override
// public boolean acceptDrop(DragObject d) {
// // If it's an external drop (e.g. from All Apps), check if it should be accepted
// CellLayout dropTargetLayout = mDropToLayout;
// if (d.dragSource != this) {
// // Don't accept the drop if we're not over a screen at time of drop
// if (dropTargetLayout == null) {
// return false;
// }
//
// // Don't accept the drop if intent of drop is empty
// if (d.dragInfo == null || d.dragInfo.getIntent() == null) {
// return false;
// }
//
// // Don't accept the drop if intent exists
// Intent dragIntent = d.dragInfo.getIntent();
// Intent cloneIntent = dragIntent.cloneFilter();
// cloneIntent.putExtras(dragIntent);
//
// String intentUriWithPackage = cloneIntent.toUri(0);
// String intentUriOnlyComponent = null;
// if (dragIntent.getComponent() != null) {
// if (dragIntent.getPackage() == null) {
// intentUriWithPackage = cloneIntent.setPackage(dragIntent.getComponent().getPackageName()).toUri(0);
// }
// intentUriOnlyComponent = new Intent().setComponent(dragIntent.getComponent()).toUri(0);
// }
// String intentUriWithoutPackage = cloneIntent.setPackage(null).toUri(0);
// synchronized (LauncherModel.sBgDataModel) {
// List<ItemInfo> itemInfos = LauncherModel.sBgDataModel.workspaceItems;
// if (itemInfos.size() > 0) {
// for (ItemInfo info : itemInfos) {
// if (info.itemType == LauncherSettings.Favorites.ITEM_TYPE_FOLDER) {
// FolderInfo folderInfo = (FolderInfo) info;
// if (folderInfo.contents != null && folderInfo.contents.size() > 0) {
// for (ShortcutInfo shortcutInfo : folderInfo.contents) {
// if (shortcutInfo.intent != null) {
// Intent shortcutIntent = shortcutInfo.intent.cloneFilter().putExtras(shortcutInfo.intent);
//
// String intentUri = shortcutIntent.toUri(0);
// if (intentUriWithoutPackage.equals(intentUri) || intentUriWithPackage.equals(intentUri) || intentUri.equals(intentUriOnlyComponent)) {
// return false;
// }
// }
// }
// }
// } else {
// if (info.getIntent() != null) {
// Intent shortcutIntent = info.getIntent().cloneFilter().putExtras(info.getIntent());
// String intentUri = shortcutIntent.toUri(0);
// if (intentUriWithoutPackage.equals(intentUri) || intentUriWithPackage.equals(intentUri) || intentUri.equals(intentUriOnlyComponent)) {
// return false;
// }
// }
// }
// }
// }
// }
//
// if (!transitionStateShouldAllowDrop()) return false;
//
// mDragViewVisualCenter = d.getVisualCenter(mDragViewVisualCenter);
//
// // We want the point to be mapped to the dragTarget.
// if (mLauncher.isHotseatLayout(dropTargetLayout)) {
// mapPointFromSelfToHotseatLayout(mLauncher.getHotseat(), mDragViewVisualCenter);
// } else {
// mapPointFromSelfToChild(dropTargetLayout, mDragViewVisualCenter);
// }
//
// int spanX;
// int spanY;
// if (mDragInfo != null) {
// final CellLayout.CellInfo dragCellInfo = mDragInfo;
// spanX = dragCellInfo.spanX;
// spanY = dragCellInfo.spanY;
// } else {
// spanX = d.dragInfo.spanX;
// spanY = d.dragInfo.spanY;
// }
//
// int minSpanX = spanX;
// int minSpanY = spanY;
// if (d.dragInfo instanceof PendingAddWidgetInfo) {
// minSpanX = ((PendingAddWidgetInfo) d.dragInfo).minSpanX;
// minSpanY = ((PendingAddWidgetInfo) d.dragInfo).minSpanY;
// }
//
// mTargetCell = findNearestArea((int) mDragViewVisualCenter[0],
// (int) mDragViewVisualCenter[1], minSpanX, minSpanY, dropTargetLayout,
// mTargetCell);
// float distance = dropTargetLayout.getDistanceFromCell(mDragViewVisualCenter[0],
// mDragViewVisualCenter[1], mTargetCell);
// if (mCreateUserFolderOnDrop && willCreateUserFolder(d.dragInfo,
// dropTargetLayout, mTargetCell, distance, true)) {
// // Don't directly create folder on hotseat.
// return !mLauncher.isHotseatLayout(dropTargetLayout);
// }
//
// if (mAddToExistingFolderOnDrop && willAddToExistingUserFolder(d.dragInfo,
// dropTargetLayout, mTargetCell, distance)) {
// return true;
// }
//
// int[] resultSpan = new int[2];
// mTargetCell = dropTargetLayout.performReorder((int) mDragViewVisualCenter[0],
// (int) mDragViewVisualCenter[1], minSpanX, minSpanY, spanX, spanY,
// null, mTargetCell, resultSpan, CellLayout.MODE_ACCEPT_DROP);
// boolean foundCell = mTargetCell[0] >= 0 && mTargetCell[1] >= 0;
//
// // Don't accept the drop if there's no room for the item
// if (!foundCell) {
// // Don't show the message if we are dropping on the AllApps button and the hotseat
// // is full
// boolean isHotseat = mLauncher.isHotseatLayout(dropTargetLayout);
// return false;
// }
// }
//
// long screenId = getIdForScreen(dropTargetLayout);
// if (screenId == EXTRA_EMPTY_SCREEN_ID) {
// commitExtraEmptyScreen();
// }
//
// return true;
// }
/**
* {@inheritDoc}
*/
public
boolean
acceptDrop
(
DragObject
d
)
{
public
boolean
acceptDrop
(
DragObject
d
)
{
// If it's an external drop (e.g. from All Apps), check if it should be accepted
// If it's an external drop (e.g. from All Apps), check if it should be accepted
CellLayout
dropTargetLayout
=
mDropToLayout
;
CellLayout
dropTargetLayout
=
mDropToLayout
;
...
@@ -2440,6 +2337,57 @@ public class Workspace extends PagedView
...
@@ -2440,6 +2337,57 @@ public class Workspace extends PagedView
if
(
dropTargetLayout
==
null
)
{
if
(
dropTargetLayout
==
null
)
{
return
false
;
return
false
;
}
}
// Don't accept the drop if intent of drop is empty
if
(
d
.
dragInfo
==
null
||
d
.
dragInfo
.
getIntent
()
==
null
)
{
return
false
;
}
// Don't accept the drop if intent exists
Intent
dragIntent
=
d
.
dragInfo
.
getIntent
();
Intent
cloneIntent
=
dragIntent
.
cloneFilter
();
cloneIntent
.
putExtras
(
dragIntent
);
String
intentUriWithPackage
=
cloneIntent
.
toUri
(
0
);
String
intentUriOnlyComponent
=
null
;
if
(
dragIntent
.
getComponent
()
!=
null
)
{
if
(
dragIntent
.
getPackage
()
==
null
)
{
intentUriWithPackage
=
cloneIntent
.
setPackage
(
dragIntent
.
getComponent
().
getPackageName
()).
toUri
(
0
);
}
intentUriOnlyComponent
=
new
Intent
().
setComponent
(
dragIntent
.
getComponent
()).
toUri
(
0
);
}
String
intentUriWithoutPackage
=
cloneIntent
.
setPackage
(
null
).
toUri
(
0
);
synchronized
(
LauncherModel
.
sBgDataModel
)
{
List
<
ItemInfo
>
itemInfos
=
LauncherModel
.
sBgDataModel
.
workspaceItems
;
if
(
itemInfos
.
size
()
>
0
)
{
for
(
ItemInfo
info
:
itemInfos
)
{
if
(
info
.
itemType
==
LauncherSettings
.
Favorites
.
ITEM_TYPE_FOLDER
)
{
FolderInfo
folderInfo
=
(
FolderInfo
)
info
;
if
(
folderInfo
.
contents
!=
null
&&
folderInfo
.
contents
.
size
()
>
0
)
{
for
(
ShortcutInfo
shortcutInfo
:
folderInfo
.
contents
)
{
if
(
shortcutInfo
.
intent
!=
null
)
{
Intent
shortcutIntent
=
shortcutInfo
.
intent
.
cloneFilter
().
putExtras
(
shortcutInfo
.
intent
);
String
intentUri
=
shortcutIntent
.
toUri
(
0
);
if
(
intentUriWithoutPackage
.
equals
(
intentUri
)
||
intentUriWithPackage
.
equals
(
intentUri
)
||
intentUri
.
equals
(
intentUriOnlyComponent
))
{
return
false
;
}
}
}
}
}
else
{
if
(
info
.
getIntent
()
!=
null
)
{
Intent
shortcutIntent
=
info
.
getIntent
().
cloneFilter
().
putExtras
(
info
.
getIntent
());
String
intentUri
=
shortcutIntent
.
toUri
(
0
);
if
(
intentUriWithoutPackage
.
equals
(
intentUri
)
||
intentUriWithPackage
.
equals
(
intentUri
)
||
intentUri
.
equals
(
intentUriOnlyComponent
))
{
return
false
;
}
}
}
}
}
}
if
(!
transitionStateShouldAllowDrop
())
return
false
;
if
(!
transitionStateShouldAllowDrop
())
return
false
;
mDragViewVisualCenter
=
d
.
getVisualCenter
(
mDragViewVisualCenter
);
mDragViewVisualCenter
=
d
.
getVisualCenter
(
mDragViewVisualCenter
);
...
@@ -2451,8 +2399,8 @@ public class Workspace extends PagedView
...
@@ -2451,8 +2399,8 @@ public class Workspace extends PagedView
mapPointFromSelfToChild
(
dropTargetLayout
,
mDragViewVisualCenter
);
mapPointFromSelfToChild
(
dropTargetLayout
,
mDragViewVisualCenter
);
}
}
int
spanX
=
1
;
int
spanX
;
int
spanY
=
1
;
int
spanY
;
if
(
mDragInfo
!=
null
)
{
if
(
mDragInfo
!=
null
)
{
final
CellLayout
.
CellInfo
dragCellInfo
=
mDragInfo
;
final
CellLayout
.
CellInfo
dragCellInfo
=
mDragInfo
;
spanX
=
dragCellInfo
.
spanX
;
spanX
=
dragCellInfo
.
spanX
;
...
@@ -2476,7 +2424,8 @@ public class Workspace extends PagedView
...
@@ -2476,7 +2424,8 @@ public class Workspace extends PagedView
mDragViewVisualCenter
[
1
],
mTargetCell
);
mDragViewVisualCenter
[
1
],
mTargetCell
);
if
(
mCreateUserFolderOnDrop
&&
willCreateUserFolder
(
d
.
dragInfo
,
if
(
mCreateUserFolderOnDrop
&&
willCreateUserFolder
(
d
.
dragInfo
,
dropTargetLayout
,
mTargetCell
,
distance
,
true
))
{
dropTargetLayout
,
mTargetCell
,
distance
,
true
))
{
return
true
;
// Don't directly create folder on hotseat.
return
!
mLauncher
.
isHotseatLayout
(
dropTargetLayout
);
}
}
if
(
mAddToExistingFolderOnDrop
&&
willAddToExistingUserFolder
(
d
.
dragInfo
,
if
(
mAddToExistingFolderOnDrop
&&
willAddToExistingUserFolder
(
d
.
dragInfo
,
...
@@ -2492,7 +2441,9 @@ public class Workspace extends PagedView
...
@@ -2492,7 +2441,9 @@ public class Workspace extends PagedView
// Don't accept the drop if there's no room for the item
// Don't accept the drop if there's no room for the item
if
(!
foundCell
)
{
if
(!
foundCell
)
{
onNoCellFound
(
dropTargetLayout
);
// Don't show the message if we are dropping on the AllApps button and the hotseat
// is full
boolean
isHotseat
=
mLauncher
.
isHotseatLayout
(
dropTargetLayout
);
return
false
;
return
false
;
}
}
}
}
...
@@ -2505,8 +2456,84 @@ public class Workspace extends PagedView
...
@@ -2505,8 +2456,84 @@ public class Workspace extends PagedView
return
true
;
return
true
;
}
}
/**
* {@inheritDoc}
*/
// public boolean acceptDrop(DragObject d) {
// // If it's an external drop (e.g. from All Apps), check if it should be accepted
// CellLayout dropTargetLayout = mDropToLayout;
// if (d.dragSource != this) {
// // Don't accept the drop if we're not over a screen at time of drop
// if (dropTargetLayout == null) {
// return false;
// }
// if (!transitionStateShouldAllowDrop()) return false;
//
// mDragViewVisualCenter = d.getVisualCenter(mDragViewVisualCenter);
//
// // We want the point to be mapped to the dragTarget.
// if (mLauncher.isHotseatLayout(dropTargetLayout)) {
// mapPointFromSelfToHotseatLayout(mLauncher.getHotseat(), mDragViewVisualCenter);
// } else {
// mapPointFromSelfToChild(dropTargetLayout, mDragViewVisualCenter);
// }
//
// int spanX = 1;
// int spanY = 1;
// if (mDragInfo != null) {
// final CellLayout.CellInfo dragCellInfo = mDragInfo;
// spanX = dragCellInfo.spanX;
// spanY = dragCellInfo.spanY;
// } else {
// spanX = d.dragInfo.spanX;
// spanY = d.dragInfo.spanY;
// }
//
// int minSpanX = spanX;
// int minSpanY = spanY;
// if (d.dragInfo instanceof PendingAddWidgetInfo) {
// minSpanX = ((PendingAddWidgetInfo) d.dragInfo).minSpanX;
// minSpanY = ((PendingAddWidgetInfo) d.dragInfo).minSpanY;
// }
//
// mTargetCell = findNearestArea((int) mDragViewVisualCenter[0],
// (int) mDragViewVisualCenter[1], minSpanX, minSpanY, dropTargetLayout,
// mTargetCell);
// float distance = dropTargetLayout.getDistanceFromCell(mDragViewVisualCenter[0],
// mDragViewVisualCenter[1], mTargetCell);
// if (mCreateUserFolderOnDrop && willCreateUserFolder(d.dragInfo,
// dropTargetLayout, mTargetCell, distance, true)) {
// return true;
// }
//
// if (mAddToExistingFolderOnDrop && willAddToExistingUserFolder(d.dragInfo,
// dropTargetLayout, mTargetCell, distance)) {
// return true;
// }
//
// int[] resultSpan = new int[2];
// mTargetCell = dropTargetLayout.performReorder((int) mDragViewVisualCenter[0],
// (int) mDragViewVisualCenter[1], minSpanX, minSpanY, spanX, spanY,
// null, mTargetCell, resultSpan, CellLayout.MODE_ACCEPT_DROP);
// boolean foundCell = mTargetCell[0] >= 0 && mTargetCell[1] >= 0;
//
// // Don't accept the drop if there's no room for the item
// if (!foundCell) {
// onNoCellFound(dropTargetLayout);
// return false;
// }
// }
//
// long screenId = getIdForScreen(dropTargetLayout);
// if (screenId == EXTRA_EMPTY_SCREEN_ID) {
// commitExtraEmptyScreen();
// }
//
// return true;
// }
boolean
willCreateUserFolder
(
ItemInfo
info
,
CellLayout
target
,
int
[]
targetCell
,
boolean
willCreateUserFolder
(
ItemInfo
info
,
CellLayout
target
,
int
[]
targetCell
,
float
distance
,
boolean
considerTimeout
)
{
float
distance
,
boolean
considerTimeout
)
{
if
(
distance
>
mMaxDistanceForFolderCreation
)
return
false
;
if
(
distance
>
mMaxDistanceForFolderCreation
)
return
false
;
View
dropOverView
=
target
.
getChildAt
(
targetCell
[
0
],
targetCell
[
1
]);
View
dropOverView
=
target
.
getChildAt
(
targetCell
[
0
],
targetCell
[
1
]);
return
willCreateUserFolder
(
info
,
dropOverView
,
considerTimeout
);
return
willCreateUserFolder
(
info
,
dropOverView
,
considerTimeout
);
...
@@ -2539,12 +2566,13 @@ public class Workspace extends PagedView
...
@@ -2539,12 +2566,13 @@ public class Workspace extends PagedView
}
}
boolean
willAddToExistingUserFolder
(
ItemInfo
dragInfo
,
CellLayout
target
,
int
[]
targetCell
,
boolean
willAddToExistingUserFolder
(
ItemInfo
dragInfo
,
CellLayout
target
,
int
[]
targetCell
,
float
distance
)
{
float
distance
)
{
if
(
distance
>
mMaxDistanceForFolderCreation
)
return
false
;
if
(
distance
>
mMaxDistanceForFolderCreation
)
return
false
;
View
dropOverView
=
target
.
getChildAt
(
targetCell
[
0
],
targetCell
[
1
]);
View
dropOverView
=
target
.
getChildAt
(
targetCell
[
0
],
targetCell
[
1
]);
return
willAddToExistingUserFolder
(
dragInfo
,
dropOverView
);
return
willAddToExistingUserFolder
(
dragInfo
,
dropOverView
);
}
}
boolean
willAddToExistingUserFolder
(
ItemInfo
dragInfo
,
View
dropOverView
)
{
boolean
willAddToExistingUserFolder
(
ItemInfo
dragInfo
,
View
dropOverView
)
{
if
(
dropOverView
!=
null
)
{
if
(
dropOverView
!=
null
)
{
CellLayout
.
LayoutParams
lp
=
(
CellLayout
.
LayoutParams
)
dropOverView
.
getLayoutParams
();
CellLayout
.
LayoutParams
lp
=
(
CellLayout
.
LayoutParams
)
dropOverView
.
getLayoutParams
();
...
@@ -2563,9 +2591,9 @@ public class Workspace extends PagedView
...
@@ -2563,9 +2591,9 @@ public class Workspace extends PagedView
}
}
boolean
createUserFolderIfNecessary
(
View
newView
,
long
container
,
CellLayout
target
,
boolean
createUserFolderIfNecessary
(
View
newView
,
long
container
,
CellLayout
target
,
int
[]
targetCell
,
float
distance
,
boolean
external
,
DragView
dragView
,
int
[]
targetCell
,
float
distance
,
boolean
external
,
DragView
dragView
,
Runnable
postAnimationRunnable
)
{
Runnable
postAnimationRunnable
)
{
if
(
true
)
return
false
;
if
(
true
)
return
false
;
if
(
distance
>
mMaxDistanceForFolderCreation
)
return
false
;
if
(
distance
>
mMaxDistanceForFolderCreation
)
return
false
;
View
v
=
target
.
getChildAt
(
targetCell
[
0
],
targetCell
[
1
]);
View
v
=
target
.
getChildAt
(
targetCell
[
0
],
targetCell
[
1
]);
...
@@ -2596,7 +2624,7 @@ public class Workspace extends PagedView
...
@@ -2596,7 +2624,7 @@ public class Workspace extends PagedView
target
.
removeView
(
v
);
target
.
removeView
(
v
);
FolderIcon
fi
=
FolderIcon
fi
=
mLauncher
.
addFolder
(
target
,
container
,
screenId
,
targetCell
[
0
],
targetCell
[
1
]);
mLauncher
.
addFolder
(
target
,
container
,
screenId
,
targetCell
[
0
],
targetCell
[
1
]);
destInfo
.
cellX
=
-
1
;
destInfo
.
cellX
=
-
1
;
destInfo
.
cellY
=
-
1
;
destInfo
.
cellY
=
-
1
;
sourceInfo
.
cellX
=
-
1
;
sourceInfo
.
cellX
=
-
1
;
...
@@ -2622,7 +2650,7 @@ public class Workspace extends PagedView
...
@@ -2622,7 +2650,7 @@ public class Workspace extends PagedView
}
}
boolean
addToExistingFolderIfNecessary
(
View
newView
,
CellLayout
target
,
int
[]
targetCell
,
boolean
addToExistingFolderIfNecessary
(
View
newView
,
CellLayout
target
,
int
[]
targetCell
,
float
distance
,
DragObject
d
,
boolean
external
)
{
float
distance
,
DragObject
d
,
boolean
external
)
{
if
(
distance
>
mMaxDistanceForFolderCreation
)
return
false
;
if
(
distance
>
mMaxDistanceForFolderCreation
)
return
false
;
View
dropOverView
=
target
.
getChildAt
(
targetCell
[
0
],
targetCell
[
1
]);
View
dropOverView
=
target
.
getChildAt
(
targetCell
[
0
],
targetCell
[
1
]);
...
@@ -2645,9 +2673,11 @@ public class Workspace extends PagedView
...
@@ -2645,9 +2673,11 @@ public class Workspace extends PagedView
}
}
@Override
@Override
public
void
prepareAccessibilityDrop
()
{
}
public
void
prepareAccessibilityDrop
()
{
}
public
void
onDrop
(
final
DragObject
d
)
{
public
void
onDrop
(
final
DragObject
d
)
{
Log
.
e
(
"TAG1"
,
"workspace onDrop: "
);
mDragViewVisualCenter
=
d
.
getVisualCenter
(
mDragViewVisualCenter
);
mDragViewVisualCenter
=
d
.
getVisualCenter
(
mDragViewVisualCenter
);
CellLayout
dropTargetLayout
=
mDropToLayout
;
CellLayout
dropTargetLayout
=
mDropToLayout
;
...
@@ -2665,8 +2695,8 @@ public class Workspace extends PagedView
...
@@ -2665,8 +2695,8 @@ public class Workspace extends PagedView
int
snapScreen
=
-
1
;
int
snapScreen
=
-
1
;
boolean
resizeOnDrop
=
false
;
boolean
resizeOnDrop
=
false
;
if
(
d
.
dragSource
!=
this
)
{
if
(
d
.
dragSource
!=
this
)
{
final
int
[]
touchXY
=
new
int
[]
{
(
int
)
mDragViewVisualCenter
[
0
],
final
int
[]
touchXY
=
new
int
[]
{
(
int
)
mDragViewVisualCenter
[
0
],
(
int
)
mDragViewVisualCenter
[
1
]
};
(
int
)
mDragViewVisualCenter
[
1
]};
onDropExternal
(
touchXY
,
dropTargetLayout
,
d
);
onDropExternal
(
touchXY
,
dropTargetLayout
,
d
);
}
else
if
(
mDragInfo
!=
null
)
{
}
else
if
(
mDragInfo
!=
null
)
{
final
View
cell
=
mDragInfo
.
cell
;
final
View
cell
=
mDragInfo
.
cell
;
...
@@ -3036,47 +3066,47 @@ public class Workspace extends PagedView
...
@@ -3036,47 +3066,47 @@ public class Workspace extends PagedView
mLastReorderY
=
-
1
;
mLastReorderY
=
-
1
;
}
}
/*
/*
*
*
* Convert the 2D coordinate xy from the parent View's coordinate space to this CellLayout's
* Convert the 2D coordinate xy from the parent View's coordinate space to this CellLayout's
* coordinate space. The argument xy is modified with the return result.
* coordinate space. The argument xy is modified with the return result.
*/
*/
void
mapPointFromSelfToChild
(
View
v
,
float
[]
xy
)
{
void
mapPointFromSelfToChild
(
View
v
,
float
[]
xy
)
{
xy
[
0
]
=
xy
[
0
]
-
v
.
getLeft
();
xy
[
0
]
=
xy
[
0
]
-
v
.
getLeft
();
xy
[
1
]
=
xy
[
1
]
-
v
.
getTop
();
xy
[
1
]
=
xy
[
1
]
-
v
.
getTop
();
}
}
boolean
isPointInSelfOverHotseat
(
int
x
,
int
y
)
{
boolean
isPointInSelfOverHotseat
(
int
x
,
int
y
)
{
mTempXY
[
0
]
=
x
;
mTempXY
[
0
]
=
x
;
mTempXY
[
1
]
=
y
;
mTempXY
[
1
]
=
y
;
mLauncher
.
getDragLayer
().
getDescendantCoordRelativeToSelf
(
this
,
mTempXY
,
true
);
mLauncher
.
getDragLayer
().
getDescendantCoordRelativeToSelf
(
this
,
mTempXY
,
true
);
View
hotseat
=
mLauncher
.
getHotseat
();
View
hotseat
=
mLauncher
.
getHotseat
();
return
mTempXY
[
0
]
>=
hotseat
.
getLeft
()
&&
return
mTempXY
[
0
]
>=
hotseat
.
getLeft
()
&&
mTempXY
[
0
]
<=
hotseat
.
getRight
()
&&
mTempXY
[
0
]
<=
hotseat
.
getRight
()
&&
mTempXY
[
1
]
>=
hotseat
.
getTop
()
&&
mTempXY
[
1
]
>=
hotseat
.
getTop
()
&&
mTempXY
[
1
]
<=
hotseat
.
getBottom
();
mTempXY
[
1
]
<=
hotseat
.
getBottom
();
}
}
void
mapPointFromSelfToHotseatLayout
(
Hotseat
hotseat
,
float
[]
xy
)
{
void
mapPointFromSelfToHotseatLayout
(
Hotseat
hotseat
,
float
[]
xy
)
{
mTempXY
[
0
]
=
(
int
)
xy
[
0
];
mTempXY
[
0
]
=
(
int
)
xy
[
0
];
mTempXY
[
1
]
=
(
int
)
xy
[
1
];
mTempXY
[
1
]
=
(
int
)
xy
[
1
];
mLauncher
.
getDragLayer
().
getDescendantCoordRelativeToSelf
(
this
,
mTempXY
,
true
);
mLauncher
.
getDragLayer
().
getDescendantCoordRelativeToSelf
(
this
,
mTempXY
,
true
);
mLauncher
.
getDragLayer
().
mapCoordInSelfToDescendant
(
hotseat
.
getLayout
(),
mTempXY
);
mLauncher
.
getDragLayer
().
mapCoordInSelfToDescendant
(
hotseat
.
getLayout
(),
mTempXY
);
xy
[
0
]
=
mTempXY
[
0
];
xy
[
0
]
=
mTempXY
[
0
];
xy
[
1
]
=
mTempXY
[
1
];
xy
[
1
]
=
mTempXY
[
1
];
}
}
/*
/*
*
*
* Convert the 2D coordinate xy from this CellLayout's coordinate space to
* Convert the 2D coordinate xy from this CellLayout's coordinate space to
* the parent View's coordinate space. The argument xy is modified with the return result.
* the parent View's coordinate space. The argument xy is modified with the return result.
*
*
*/
*/
void
mapPointFromChildToSelf
(
View
v
,
float
[]
xy
)
{
void
mapPointFromChildToSelf
(
View
v
,
float
[]
xy
)
{
xy
[
0
]
+=
v
.
getLeft
();
xy
[
0
]
+=
v
.
getLeft
();
xy
[
1
]
+=
v
.
getTop
();
xy
[
1
]
+=
v
.
getTop
();
}
}
private
boolean
isDragWidget
(
DragObject
d
)
{
private
boolean
isDragWidget
(
DragObject
d
)
{
return
(
d
.
dragInfo
instanceof
LauncherAppWidgetInfo
||
return
(
d
.
dragInfo
instanceof
LauncherAppWidgetInfo
||
...
@@ -3138,7 +3168,7 @@ public class Workspace extends PagedView
...
@@ -3138,7 +3168,7 @@ public class Workspace extends PagedView
manageFolderFeedback
(
mDragTargetLayout
,
mTargetCell
,
targetCellDistance
,
d
);
manageFolderFeedback
(
mDragTargetLayout
,
mTargetCell
,
targetCellDistance
,
d
);
boolean
nearestDropOccupied
=
mDragTargetLayout
.
isNearestDropLocationOccupied
((
int
)
boolean
nearestDropOccupied
=
mDragTargetLayout
.
isNearestDropLocationOccupied
((
int
)
mDragViewVisualCenter
[
0
],
(
int
)
mDragViewVisualCenter
[
1
],
item
.
spanX
,
mDragViewVisualCenter
[
0
],
(
int
)
mDragViewVisualCenter
[
1
],
item
.
spanX
,
item
.
spanY
,
child
,
mTargetCell
);
item
.
spanY
,
child
,
mTargetCell
);
if
(!
nearestDropOccupied
)
{
if
(!
nearestDropOccupied
)
{
...
@@ -3173,7 +3203,7 @@ public class Workspace extends PagedView
...
@@ -3173,7 +3203,7 @@ public class Workspace extends PagedView
/**
/**
* Updates {@link #mDragTargetLayout} and {@link #mDragOverlappingLayout}
* Updates {@link #mDragTargetLayout} and {@link #mDragOverlappingLayout}
* based on the DragObject's position.
* based on the DragObject's position.
*
*
<p>
* The layout will be:
* The layout will be:
* - The Hotseat if the drag object is over it
* - The Hotseat if the drag object is over it
* - A side page if we are in spring-loaded mode and the drag object is over it
* - A side page if we are in spring-loaded mode and the drag object is over it
...
@@ -3220,7 +3250,7 @@ public class Workspace extends PagedView
...
@@ -3220,7 +3250,7 @@ public class Workspace extends PagedView
/**
/**
* Returns the child CellLayout if the point is inside the page coordinates, null otherwise.
* Returns the child CellLayout if the point is inside the page coordinates, null otherwise.
*/
*/
private
CellLayout
verifyInsidePage
(
int
pageNo
,
float
[]
touchXy
)
{
private
CellLayout
verifyInsidePage
(
int
pageNo
,
float
[]
touchXy
)
{
if
(
pageNo
>=
numCustomPages
()
&&
pageNo
<
getPageCount
())
{
if
(
pageNo
>=
numCustomPages
()
&&
pageNo
<
getPageCount
())
{
CellLayout
cl
=
(
CellLayout
)
getChildAt
(
pageNo
);
CellLayout
cl
=
(
CellLayout
)
getChildAt
(
pageNo
);
mapPointFromSelfToChild
(
cl
,
touchXy
);
mapPointFromSelfToChild
(
cl
,
touchXy
);
...
@@ -3234,7 +3264,7 @@ public class Workspace extends PagedView
...
@@ -3234,7 +3264,7 @@ public class Workspace extends PagedView
}
}
private
void
manageFolderFeedback
(
CellLayout
targetLayout
,
private
void
manageFolderFeedback
(
CellLayout
targetLayout
,
int
[]
targetCell
,
float
distance
,
DragObject
dragObject
)
{
int
[]
targetCell
,
float
distance
,
DragObject
dragObject
)
{
if
(
distance
>
mMaxDistanceForFolderCreation
)
return
;
if
(
distance
>
mMaxDistanceForFolderCreation
)
return
;
final
View
dragOverView
=
mDragTargetLayout
.
getChildAt
(
mTargetCell
[
0
],
mTargetCell
[
1
]);
final
View
dragOverView
=
mDragTargetLayout
.
getChildAt
(
mTargetCell
[
0
],
mTargetCell
[
1
]);
...
@@ -3321,7 +3351,7 @@ public class Workspace extends PagedView
...
@@ -3321,7 +3351,7 @@ public class Workspace extends PagedView
View
child
;
View
child
;
public
ReorderAlarmListener
(
float
[]
dragViewCenter
,
int
minSpanX
,
int
minSpanY
,
int
spanX
,
public
ReorderAlarmListener
(
float
[]
dragViewCenter
,
int
minSpanX
,
int
minSpanY
,
int
spanX
,
int
spanY
,
DragObject
dragObject
,
View
child
)
{
int
spanY
,
DragObject
dragObject
,
View
child
)
{
this
.
dragViewCenter
=
dragViewCenter
;
this
.
dragViewCenter
=
dragViewCenter
;
this
.
minSpanX
=
minSpanX
;
this
.
minSpanX
=
minSpanX
;
this
.
minSpanY
=
minSpanY
;
this
.
minSpanY
=
minSpanY
;
...
@@ -3340,8 +3370,8 @@ public class Workspace extends PagedView
...
@@ -3340,8 +3370,8 @@ public class Workspace extends PagedView
mLastReorderY
=
mTargetCell
[
1
];
mLastReorderY
=
mTargetCell
[
1
];
mTargetCell
=
mDragTargetLayout
.
performReorder
((
int
)
mDragViewVisualCenter
[
0
],
mTargetCell
=
mDragTargetLayout
.
performReorder
((
int
)
mDragViewVisualCenter
[
0
],
(
int
)
mDragViewVisualCenter
[
1
],
minSpanX
,
minSpanY
,
spanX
,
spanY
,
(
int
)
mDragViewVisualCenter
[
1
],
minSpanX
,
minSpanY
,
spanX
,
spanY
,
child
,
mTargetCell
,
resultSpan
,
CellLayout
.
MODE_DRAG_OVER
);
child
,
mTargetCell
,
resultSpan
,
CellLayout
.
MODE_DRAG_OVER
);
if
(
mTargetCell
[
0
]
<
0
||
mTargetCell
[
1
]
<
0
)
{
if
(
mTargetCell
[
0
]
<
0
||
mTargetCell
[
1
]
<
0
)
{
mDragTargetLayout
.
revertTempState
();
mDragTargetLayout
.
revertTempState
();
...
@@ -3351,7 +3381,7 @@ public class Workspace extends PagedView
...
@@ -3351,7 +3381,7 @@ public class Workspace extends PagedView
boolean
resize
=
resultSpan
[
0
]
!=
spanX
||
resultSpan
[
1
]
!=
spanY
;
boolean
resize
=
resultSpan
[
0
]
!=
spanX
||
resultSpan
[
1
]
!=
spanY
;
mDragTargetLayout
.
visualizeDropLocation
(
child
,
mOutlineProvider
,
mDragTargetLayout
.
visualizeDropLocation
(
child
,
mOutlineProvider
,
mTargetCell
[
0
],
mTargetCell
[
1
],
resultSpan
[
0
],
resultSpan
[
1
],
resize
,
dragObject
);
mTargetCell
[
0
],
mTargetCell
[
1
],
resultSpan
[
0
],
resultSpan
[
1
],
resize
,
dragObject
);
}
}
}
}
...
@@ -3366,10 +3396,11 @@ public class Workspace extends PagedView
...
@@ -3366,10 +3396,11 @@ public class Workspace extends PagedView
* Drop an item that didn't originate on one of the workspace screens.
* Drop an item that didn't originate on one of the workspace screens.
* It may have come from Launcher (e.g. from all apps or customize), or it may have
* It may have come from Launcher (e.g. from all apps or customize), or it may have
* come from another app altogether.
* come from another app altogether.
*
*
<p>
* NOTE: This can also be called when we are outside of a drag event, when we want
* NOTE: This can also be called when we are outside of a drag event, when we want
* to add an item to one of the workspace screens.
* to add an item to one of the workspace screens.
*/
*/
private
void
onDropExternal
(
final
int
[]
touchXY
,
final
CellLayout
cellLayout
,
DragObject
d
)
{
private
void
onDropExternal
(
final
int
[]
touchXY
,
final
CellLayout
cellLayout
,
DragObject
d
)
{
final
Runnable
exitSpringLoadedRunnable
=
new
Runnable
()
{
final
Runnable
exitSpringLoadedRunnable
=
new
Runnable
()
{
@Override
@Override
...
@@ -3387,6 +3418,26 @@ public class Workspace extends PagedView
...
@@ -3387,6 +3418,26 @@ public class Workspace extends PagedView
}
}
}
}
// String className = null;
// ItemInfo current = d.dragInfo;
// if(current != null){
// ComponentName cpm = current.getTargetComponent();
// if(cpm != null){
// className = cpm.getClassName();
// }
// }
//
// final LongArrayMap<ItemInfo> shortcutMapCopy =
// LauncherModel.sBgDataModel.itemsIdMap.clone();
// for (ItemInfo itemInfo : shortcutMapCopy) {
// ComponentName cpm = itemInfo.getTargetComponent();
// if(cpm != null){
// if(TextUtils.equals(className, cpm.getClassName())){
// return;
// }
// }
// }
ItemInfo
info
=
d
.
dragInfo
;
ItemInfo
info
=
d
.
dragInfo
;
int
spanX
=
info
.
spanX
;
int
spanX
=
info
.
spanX
;
int
spanY
=
info
.
spanY
;
int
spanY
=
info
.
spanY
;
...
@@ -3397,7 +3448,7 @@ public class Workspace extends PagedView
...
@@ -3397,7 +3448,7 @@ public class Workspace extends PagedView
final
long
container
=
mLauncher
.
isHotseatLayout
(
cellLayout
)
?
final
long
container
=
mLauncher
.
isHotseatLayout
(
cellLayout
)
?
LauncherSettings
.
Favorites
.
CONTAINER_HOTSEAT
:
LauncherSettings
.
Favorites
.
CONTAINER_HOTSEAT
:
LauncherSettings
.
Favorites
.
CONTAINER_DESKTOP
;
LauncherSettings
.
Favorites
.
CONTAINER_DESKTOP
;
final
long
screenId
=
getIdForScreen
(
cellLayout
);
final
long
screenId
=
getIdForScreen
(
cellLayout
);
if
(!
mLauncher
.
isHotseatLayout
(
cellLayout
)
if
(!
mLauncher
.
isHotseatLayout
(
cellLayout
)
&&
screenId
!=
getScreenIdForPageIndex
(
mCurrentPage
)
&&
screenId
!=
getScreenIdForPageIndex
(
mCurrentPage
)
...
@@ -3416,7 +3467,7 @@ public class Workspace extends PagedView
...
@@ -3416,7 +3467,7 @@ public class Workspace extends PagedView
mDragViewVisualCenter
[
1
],
mTargetCell
);
mDragViewVisualCenter
[
1
],
mTargetCell
);
if
(
willCreateUserFolder
(
d
.
dragInfo
,
cellLayout
,
mTargetCell
,
distance
,
true
)
if
(
willCreateUserFolder
(
d
.
dragInfo
,
cellLayout
,
mTargetCell
,
distance
,
true
)
||
willAddToExistingUserFolder
(
||
willAddToExistingUserFolder
(
d
.
dragInfo
,
cellLayout
,
mTargetCell
,
distance
))
{
d
.
dragInfo
,
cellLayout
,
mTargetCell
,
distance
))
{
findNearestVacantCell
=
false
;
findNearestVacantCell
=
false
;
}
}
}
}
...
@@ -3479,22 +3530,22 @@ public class Workspace extends PagedView
...
@@ -3479,22 +3530,22 @@ public class Workspace extends PagedView
View
view
=
null
;
View
view
=
null
;
switch
(
info
.
itemType
)
{
switch
(
info
.
itemType
)
{
case
LauncherSettings
.
Favorites
.
ITEM_TYPE_APPLICATION
:
case
LauncherSettings
.
Favorites
.
ITEM_TYPE_APPLICATION
:
case
LauncherSettings
.
Favorites
.
ITEM_TYPE_SHORTCUT
:
case
LauncherSettings
.
Favorites
.
ITEM_TYPE_SHORTCUT
:
case
LauncherSettings
.
Favorites
.
ITEM_TYPE_DEEP_SHORTCUT
:
case
LauncherSettings
.
Favorites
.
ITEM_TYPE_DEEP_SHORTCUT
:
if
(
info
.
container
==
NO_ID
&&
info
instanceof
AppInfo
)
{
if
(
info
.
container
==
NO_ID
&&
info
instanceof
AppInfo
)
{
// Came from all apps -- make a copy
// Came from all apps -- make a copy
info
=
((
AppInfo
)
info
).
makeShortcut
();
info
=
((
AppInfo
)
info
).
makeShortcut
();
d
.
dragInfo
=
info
;
d
.
dragInfo
=
info
;
}
}
view
=
mLauncher
.
createShortcut
(
cellLayout
,
(
ShortcutInfo
)
info
);
view
=
mLauncher
.
createShortcut
(
cellLayout
,
(
ShortcutInfo
)
info
);
break
;
break
;
case
LauncherSettings
.
Favorites
.
ITEM_TYPE_FOLDER
:
case
LauncherSettings
.
Favorites
.
ITEM_TYPE_FOLDER
:
view
=
FolderIcon
.
fromXml
(
R
.
layout
.
folder_icon
,
mLauncher
,
cellLayout
,
view
=
FolderIcon
.
fromXml
(
R
.
layout
.
folder_icon
,
mLauncher
,
cellLayout
,
(
FolderInfo
)
info
);
(
FolderInfo
)
info
);
break
;
break
;
default
:
default
:
throw
new
IllegalStateException
(
"Unknown item type: "
+
info
.
itemType
);
throw
new
IllegalStateException
(
"Unknown item type: "
+
info
.
itemType
);
}
}
// First we find the cell nearest to point at which the item is
// First we find the cell nearest to point at which the item is
...
@@ -3565,7 +3616,7 @@ public class Workspace extends PagedView
...
@@ -3565,7 +3616,7 @@ public class Workspace extends PagedView
}
}
private
void
getFinalPositionForDropAnimation
(
int
[]
loc
,
float
[]
scaleXY
,
private
void
getFinalPositionForDropAnimation
(
int
[]
loc
,
float
[]
scaleXY
,
DragView
dragView
,
CellLayout
layout
,
ItemInfo
info
,
int
[]
targetCell
,
boolean
scale
)
{
DragView
dragView
,
CellLayout
layout
,
ItemInfo
info
,
int
[]
targetCell
,
boolean
scale
)
{
// Now we animate the dragView, (ie. the widget or shortcut preview) into its final
// Now we animate the dragView, (ie. the widget or shortcut preview) into its final
// location and size on the home screen.
// location and size on the home screen.
int
spanX
=
info
.
spanX
;
int
spanX
=
info
.
spanX
;
...
@@ -3613,8 +3664,8 @@ public class Workspace extends PagedView
...
@@ -3613,8 +3664,8 @@ public class Workspace extends PagedView
}
}
public
void
animateWidgetDrop
(
ItemInfo
info
,
CellLayout
cellLayout
,
final
DragView
dragView
,
public
void
animateWidgetDrop
(
ItemInfo
info
,
CellLayout
cellLayout
,
final
DragView
dragView
,
final
Runnable
onCompleteRunnable
,
int
animationType
,
final
View
finalView
,
final
Runnable
onCompleteRunnable
,
int
animationType
,
final
View
finalView
,
boolean
external
)
{
boolean
external
)
{
Rect
from
=
new
Rect
();
Rect
from
=
new
Rect
();
mLauncher
.
getDragLayer
().
getViewRectRelativeToSelf
(
dragView
,
from
);
mLauncher
.
getDragLayer
().
getViewRectRelativeToSelf
(
dragView
,
from
);
...
@@ -3634,7 +3685,7 @@ public class Workspace extends PagedView
...
@@ -3634,7 +3685,7 @@ public class Workspace extends PagedView
dragView
.
setCrossFadeBitmap
(
crossFadeBitmap
);
dragView
.
setCrossFadeBitmap
(
crossFadeBitmap
);
dragView
.
crossFade
((
int
)
(
duration
*
0.8f
));
dragView
.
crossFade
((
int
)
(
duration
*
0.8f
));
}
else
if
(
isWidget
&&
external
)
{
}
else
if
(
isWidget
&&
external
)
{
scaleXY
[
0
]
=
scaleXY
[
1
]
=
Math
.
min
(
scaleXY
[
0
],
scaleXY
[
1
]);
scaleXY
[
0
]
=
scaleXY
[
1
]
=
Math
.
min
(
scaleXY
[
0
],
scaleXY
[
1
]);
}
}
DragLayer
dragLayer
=
mLauncher
.
getDragLayer
();
DragLayer
dragLayer
=
mLauncher
.
getDragLayer
();
...
@@ -3673,6 +3724,7 @@ public class Workspace extends PagedView
...
@@ -3673,6 +3724,7 @@ public class Workspace extends PagedView
setScaleY
(
mStateTransitionAnimation
.
getFinalScale
());
setScaleY
(
mStateTransitionAnimation
.
getFinalScale
());
}
}
}
}
public
void
resetTransitionTransform
(
CellLayout
layout
)
{
public
void
resetTransitionTransform
(
CellLayout
layout
)
{
if
(
isSwitchingState
())
{
if
(
isSwitchingState
())
{
setScaleX
(
mCurrentScale
);
setScaleX
(
mCurrentScale
);
...
@@ -3688,7 +3740,6 @@ public class Workspace extends PagedView
...
@@ -3688,7 +3740,6 @@ public class Workspace extends PagedView
* Return the current CellInfo describing our current drag; this method exists
* Return the current CellInfo describing our current drag; this method exists
* so that Launcher can sync this object with the correct info when the activity is created/
* so that Launcher can sync this object with the correct info when the activity is created/
* destroyed
* destroyed
*
*/
*/
public
CellLayout
.
CellInfo
getDragInfo
()
{
public
CellLayout
.
CellInfo
getDragInfo
()
{
return
mDragInfo
;
return
mDragInfo
;
...
@@ -3700,11 +3751,12 @@ public class Workspace extends PagedView
...
@@ -3700,11 +3751,12 @@ public class Workspace extends PagedView
/**
/**
* Calculate the nearest cell where the given object would be dropped.
* Calculate the nearest cell where the given object would be dropped.
*
*
<p>
* pixelX and pixelY should be in the coordinate system of layout
* pixelX and pixelY should be in the coordinate system of layout
*/
*/
@Thunk
int
[]
findNearestArea
(
int
pixelX
,
int
pixelY
,
@Thunk
int
spanX
,
int
spanY
,
CellLayout
layout
,
int
[]
recycle
)
{
int
[]
findNearestArea
(
int
pixelX
,
int
pixelY
,
int
spanX
,
int
spanY
,
CellLayout
layout
,
int
[]
recycle
)
{
return
layout
.
findNearestArea
(
return
layout
.
findNearestArea
(
pixelX
,
pixelY
,
spanX
,
spanY
,
recycle
);
pixelX
,
pixelY
,
spanX
,
spanY
,
recycle
);
}
}
...
@@ -3722,7 +3774,7 @@ public class Workspace extends PagedView
...
@@ -3722,7 +3774,7 @@ public class Workspace extends PagedView
* Called at the end of a drag which originated on the workspace.
* Called at the end of a drag which originated on the workspace.
*/
*/
public
void
onDropCompleted
(
final
View
target
,
final
DragObject
d
,
public
void
onDropCompleted
(
final
View
target
,
final
DragObject
d
,
final
boolean
isFlingToDelete
,
final
boolean
success
)
{
final
boolean
isFlingToDelete
,
final
boolean
success
)
{
if
(
mDeferDropAfterUninstall
)
{
if
(
mDeferDropAfterUninstall
)
{
final
CellLayout
.
CellInfo
dragInfo
=
mDragInfo
;
final
CellLayout
.
CellInfo
dragInfo
=
mDragInfo
;
mDeferredAction
=
new
Runnable
()
{
mDeferredAction
=
new
Runnable
()
{
...
@@ -3749,7 +3801,8 @@ public class Workspace extends PagedView
...
@@ -3749,7 +3801,8 @@ public class Workspace extends PagedView
}
else
if
(
ProviderConfig
.
IS_DOGFOOD_BUILD
)
{
}
else
if
(
ProviderConfig
.
IS_DOGFOOD_BUILD
)
{
throw
new
RuntimeException
(
"Invalid state: cellLayout == null in "
throw
new
RuntimeException
(
"Invalid state: cellLayout == null in "
+
"Workspace#onDropCompleted. Please file a bug. "
);
+
"Workspace#onDropCompleted. Please file a bug. "
);
};
}
;
}
}
if
((
d
.
cancelled
||
(
beingCalledAfterUninstall
&&
!
mUninstallSuccessful
))
if
((
d
.
cancelled
||
(
beingCalledAfterUninstall
&&
!
mUninstallSuccessful
))
&&
mDragInfo
.
cell
!=
null
)
{
&&
mDragInfo
.
cell
!=
null
)
{
...
@@ -3995,7 +4048,7 @@ public class Workspace extends PagedView
...
@@ -3995,7 +4048,7 @@ public class Workspace extends PagedView
*/
*/
public
void
removeItemsByMatcher
(
final
ItemInfoMatcher
matcher
)
{
public
void
removeItemsByMatcher
(
final
ItemInfoMatcher
matcher
)
{
ArrayList
<
CellLayout
>
cellLayouts
=
getWorkspaceAndHotseatCellLayouts
();
ArrayList
<
CellLayout
>
cellLayouts
=
getWorkspaceAndHotseatCellLayouts
();
for
(
final
CellLayout
layoutParent:
cellLayouts
)
{
for
(
final
CellLayout
layoutParent
:
cellLayouts
)
{
final
ViewGroup
layout
=
layoutParent
.
getShortcutsAndWidgets
();
final
ViewGroup
layout
=
layoutParent
.
getShortcutsAndWidgets
();
LongArrayMap
<
View
>
idToViewMap
=
new
LongArrayMap
<>();
LongArrayMap
<
View
>
idToViewMap
=
new
LongArrayMap
<>();
...
@@ -4050,7 +4103,7 @@ public class Workspace extends PagedView
...
@@ -4050,7 +4103,7 @@ public class Workspace extends PagedView
* Map the operator over the shortcuts and widgets, return the first-non-null value.
* Map the operator over the shortcuts and widgets, return the first-non-null value.
*
*
* @param recurse true: iterate over folder children. false: op get the folders themselves.
* @param recurse true: iterate over folder children. false: op get the folders themselves.
* @param op the operator to map over the shortcuts
* @param op
the operator to map over the shortcuts
*/
*/
void
mapOverItems
(
boolean
recurse
,
ItemOperator
op
)
{
void
mapOverItems
(
boolean
recurse
,
ItemOperator
op
)
{
ArrayList
<
ShortcutAndWidgetContainer
>
containers
=
getAllShortcutAndWidgetContainers
();
ArrayList
<
ShortcutAndWidgetContainer
>
containers
=
getAllShortcutAndWidgetContainers
();
...
@@ -4084,7 +4137,7 @@ public class Workspace extends PagedView
...
@@ -4084,7 +4137,7 @@ public class Workspace extends PagedView
}
}
void
updateShortcuts
(
ArrayList
<
ShortcutInfo
>
shortcuts
)
{
void
updateShortcuts
(
ArrayList
<
ShortcutInfo
>
shortcuts
)
{
int
total
=
shortcuts
.
size
();
int
total
=
shortcuts
.
size
();
final
HashSet
<
ShortcutInfo
>
updates
=
new
HashSet
<
ShortcutInfo
>(
total
);
final
HashSet
<
ShortcutInfo
>
updates
=
new
HashSet
<
ShortcutInfo
>(
total
);
final
HashSet
<
Long
>
folderIds
=
new
HashSet
<>();
final
HashSet
<
Long
>
folderIds
=
new
HashSet
<>();
...
@@ -4254,7 +4307,7 @@ public class Workspace extends PagedView
...
@@ -4254,7 +4307,7 @@ public class Workspace extends PagedView
if
(
child
!=
null
)
{
if
(
child
!=
null
)
{
child
.
requestFocus
();
child
.
requestFocus
();
}
}
}
}
exitWidgetResizeMode
();
exitWidgetResizeMode
();
}
}
...
@@ -4326,7 +4379,7 @@ public class Workspace extends PagedView
...
@@ -4326,7 +4379,7 @@ public class Workspace extends PagedView
private
boolean
mRefreshPending
;
private
boolean
mRefreshPending
;
public
DeferredWidgetRefresh
(
ArrayList
<
LauncherAppWidgetInfo
>
infos
,
public
DeferredWidgetRefresh
(
ArrayList
<
LauncherAppWidgetInfo
>
infos
,
LauncherAppWidgetHost
host
)
{
LauncherAppWidgetHost
host
)
{
mInfos
=
infos
;
mInfos
=
infos
;
mHost
=
host
;
mHost
=
host
;
mHandler
=
new
Handler
();
mHandler
=
new
Handler
();
...
@@ -4367,7 +4420,8 @@ public class Workspace extends PagedView
...
@@ -4367,7 +4420,8 @@ public class Workspace extends PagedView
/**
/**
* Called when the workspace state is changing.
* Called when the workspace state is changing.
* @param toState final state
*
* @param toState final state
* @param targetAnim animation which will be played during the transition or null.
* @param targetAnim animation which will be played during the transition or null.
*/
*/
void
prepareStateChange
(
State
toState
,
AnimatorSet
targetAnim
);
void
prepareStateChange
(
State
toState
,
AnimatorSet
targetAnim
);
...
...
Launcher3/src/com/android/launcher3/function/setting/
AdminSetting
Activity.kt
→
Launcher3/src/com/android/launcher3/function/setting/
SettingAdmin
Activity.kt
View file @
5896f532
...
@@ -27,7 +27,7 @@ import kotlinx.coroutines.delay
...
@@ -27,7 +27,7 @@ import kotlinx.coroutines.delay
import
kotlinx.coroutines.launch
import
kotlinx.coroutines.launch
import
org.greenrobot.eventbus.EventBus
import
org.greenrobot.eventbus.EventBus
class
AdminSetting
Activity
:
BaseActivity
()
{
class
SettingAdmin
Activity
:
BaseActivity
()
{
private
var
mContext
:
Context
?
=
null
private
var
mContext
:
Context
?
=
null
private
var
icon
:
QMUICommonListItemView
?
=
null
private
var
icon
:
QMUICommonListItemView
?
=
null
private
var
reinforce
:
QMUICommonListItemView
?
=
null
private
var
reinforce
:
QMUICommonListItemView
?
=
null
...
...
Launcher3/src/com/android/launcher3/function/setting/SettingPwdActivity.kt
View file @
5896f532
package
com.android.launcher3.function.setting
package
com.android.launcher3.function.setting
import
android.app.Activity
import
android.app.AlertDialog
import
android.content.Context
import
android.content.Context
import
android.content.Intent
import
android.content.Intent
import
android.os.Bundle
import
android.os.Bundle
import
android.util.Log
import
android.view.LayoutInflater
import
android.view.View
import
android.view.View
import
android.widget.GridLayout
import
android.widget.GridLayout
import
android.widget.LinearLayout
import
android.widget.TextView
import
com.android.launcher3.BaseActivity
import
com.android.launcher3.BaseActivity
import
com.android.launcher3.R
import
com.android.launcher3.R
import
com.android.launcher3.mdm.DisableCompat
import
com.android.launcher3.mdm.DisableCompat
import
com.android.launcher3.settings.Contants
import
com.android.launcher3.settings.Contants
import
com.qmuiteam.qmui.widget.grouplist.QMUICommonListItemView
import
com.qmuiteam.qmui.widget.grouplist.QMUICommonListItemView
import
com.qmuiteam.qmui.widget.grouplist.QMUIGroupListView
import
com.qmuiteam.qmui.widget.grouplist.QMUIGroupListView
import
com.secspace.lib.common.dialog.SwitcherDialog
import
com.secspace.lib.common.event.ChangeWallPaperEvent
import
com.secspace.lib.common.utils.PkgManager
import
com.secspace.lib.common.utils.PkgManager
import
com.secspace.lib.common.utils.Prefs
import
com.secspace.lib.common.utils.Prefs
import
com.secspace.lib.common.utils.ToastUtil
import
com.secspace.lib.common.utils.ToastUtil
import
com.secspace.lib.common.utils.UninstallUtil.removeForbidden
import
com.secspace.lib.common.utils.UninstallUtil.uninstallService
import
com.secspace.lib.common.utils.dp2px
import
com.secspace.lib.common.utils.dp2px
import
kotlinx.android.synthetic.main.activity_setting.*
import
kotlinx.android.synthetic.main.activity_setting.*
import
kotlinx.coroutines.Dispatchers
import
kotlinx.coroutines.GlobalScope
import
kotlinx.coroutines.delay
import
kotlinx.coroutines.launch
import
org.greenrobot.eventbus.EventBus
class
SettingPwdActivity
:
BaseActivity
(){
class
SettingPwdActivity
:
BaseActivity
(){
private
var
mContext
:
Context
?
=
null
private
var
mContext
:
Context
?
=
null
...
@@ -85,60 +70,4 @@ class SettingPwdActivity : BaseActivity(){
...
@@ -85,60 +70,4 @@ class SettingPwdActivity : BaseActivity(){
DisableCompat
.
disableApplication
(
mContext
,
packageName
)
DisableCompat
.
disableApplication
(
mContext
,
packageName
)
}
}
}
}
private
fun
uninstall
()
{
GlobalScope
.
launch
(
Dispatchers
.
Main
)
{
SwitcherDialog
.
getInstance
(
mContext
).
show
(
getString
(
R
.
string
.
edu_uninstall
),
"unInstall"
)
removeForbidden
(
mContext
)
delay
(
1000
)
uninstallService
(
mContext
)
delay
(
800
)
SwitcherDialog
.
getInstance
(
mContext
).
dismiss
(
"unInstall"
)
}
}
override
fun
onActivityResult
(
requestCode
:
Int
,
resultCode
:
Int
,
data
:
Intent
?)
{
if
(
requestCode
==
REQUEST_PICK_WALLPAPER
)
{
if
(
resultCode
==
Activity
.
RESULT_OK
)
{
Log
.
e
(
"WWWW"
,
"AAAAA"
)
val
selectedImage
=
data
!!
.
data
EventBus
.
getDefault
().
postSticky
(
ChangeWallPaperEvent
(
selectedImage
))
ToastUtil
.
showShort
(
this
,
"壁纸修改成功"
)
}
}
}
private
inline
fun
showTipDialog
(
crossinline
block
:
()
->
Unit
,
text
:
String
)
{
val
alertDialog
:
AlertDialog
val
textView
=
TextView
(
this
)
val
view
=
LayoutInflater
.
from
(
this
).
inflate
(
R
.
layout
.
item_ll
,
null
)
textView
.
text
=
text
val
ll
=
view
.
findViewById
<
LinearLayout
>(
R
.
id
.
item_ll
)
ll
.
addView
(
textView
)
alertDialog
=
AlertDialog
.
Builder
(
this
)
.
setTitle
(
getString
(
R
.
string
.
tip
))
.
setCancelable
(
false
)
.
setView
(
view
)
.
setNegativeButton
(
R
.
string
.
work_cancel
)
{
dialog
,
_
->
dialog
.
dismiss
()
}
.
setPositiveButton
(
R
.
string
.
work_sure
)
{
dialog
,
_
->
run
{
dialog
.
dismiss
()
block
()
}
}
.
create
()
if
(!
alertDialog
.
isShowing
)
{
alertDialog
.
show
()
}
}
companion
object
{
private
const
val
REQUEST_PICK_WALLPAPER
=
10
private
const
val
ACTION_CHANGE_WALLPAPER
=
"action_change_wallpaper"
//允许添加先安装应用
const
val
ALLOW_NEW_APP
=
0
//允许本身自启
const
val
AUTO_START_SELF
=
1
}
}
}
\ No newline at end of file
Launcher3/src/com/android/launcher3/settings/BlankActivity.java
View file @
5896f532
package
com
.
android
.
launcher3
.
settings
;
package
com
.
android
.
launcher3
.
settings
;
import
android.content.Intent
;
import
android.content.Intent
;
import
android.text.TextUtils
;
import
com.android.launcher3.function.pwd.PwdPinSetPwdActivity
;
import
com.secspace.lib.common.base.BaseActivity
;
import
com.secspace.lib.common.base.BaseActivity
;
import
com.secspace.lib.common.function.DialogManager
;
import
com.secspace.lib.common.function.DialogManager
;
import
com.secspace.lib.common.utils.IntentUtil
;
import
com.secspace.lib.common.utils.IntentUtil
;
...
@@ -26,6 +28,12 @@ public class BlankActivity extends BaseActivity {
...
@@ -26,6 +28,12 @@ public class BlankActivity extends BaseActivity {
DialogManager
.
INSTANCE
.
showPrivacyPolicyDialog
(
this
);
DialogManager
.
INSTANCE
.
showPrivacyPolicyDialog
(
this
);
return
;
return
;
}
}
String
pwd
=
Prefs
.
getLoginPwd
(
this
);
if
(
TextUtils
.
isEmpty
(
pwd
))
{
Intent
intent
=
new
Intent
(
this
,
PwdPinSetPwdActivity
.
class
);
startActivity
(
intent
);
return
;
}
IntentUtil
.
startEduLauncher
(
this
);
IntentUtil
.
startEduLauncher
(
this
);
}
}
...
...
lib_common/src/main/java/com/secspace/lib/common/function/ActivationHelper.kt
View file @
5896f532
...
@@ -96,7 +96,7 @@ object ActivationHelper {
...
@@ -96,7 +96,7 @@ object ActivationHelper {
return
File
(
FILE_PATH
+
context
.
packageName
,
PROBATION_FILE_NAME
).
exists
()
return
File
(
FILE_PATH
+
context
.
packageName
,
PROBATION_FILE_NAME
).
exists
()
}
}
private
suspend
fun
isProbationFromLocal
(
context
:
Context
):
Boolean
{
suspend
fun
isProbationFromLocal
(
context
:
Context
):
Boolean
{
return
withContext
(
Dispatchers
.
IO
)
{
return
withContext
(
Dispatchers
.
IO
)
{
val
file
=
File
(
FILE_PATH
+
context
.
packageName
,
PROBATION_FILE_NAME
)
val
file
=
File
(
FILE_PATH
+
context
.
packageName
,
PROBATION_FILE_NAME
)
if
(!
file
.
exists
())
{
if
(!
file
.
exists
())
{
...
...
lib_common/src/main/java/com/secspace/lib/common/function/BuyCodeDialog.kt
View file @
5896f532
...
@@ -11,10 +11,6 @@ import com.secspace.lib.common.R
...
@@ -11,10 +11,6 @@ import com.secspace.lib.common.R
import
com.secspace.lib.common.function.ActivationHelper.ActivationListener
import
com.secspace.lib.common.function.ActivationHelper.ActivationListener
import
com.secspace.lib.common.function.ActivationHelper.active
import
com.secspace.lib.common.function.ActivationHelper.active
import
com.secspace.lib.common.utils.IntentUtil
import
com.secspace.lib.common.utils.IntentUtil
import
com.secspace.lib.common.utils.Prefs
import
kotlinx.coroutines.Dispatchers
import
kotlinx.coroutines.GlobalScope
import
kotlinx.coroutines.launch
class
BuyCodeDialog
(
activity
:
Activity
)
:
DialogInterface
.
OnDismissListener
,
View
.
OnClickListener
{
class
BuyCodeDialog
(
activity
:
Activity
)
:
DialogInterface
.
OnDismissListener
,
View
.
OnClickListener
{
private
var
mActivity
:
Activity
?
private
var
mActivity
:
Activity
?
...
@@ -64,10 +60,7 @@ class BuyCodeDialog(activity: Activity) : DialogInterface.OnDismissListener, Vie
...
@@ -64,10 +60,7 @@ class BuyCodeDialog(activity: Activity) : DialogInterface.OnDismissListener, Vie
}
}
},
true
)
},
true
)
dismiss
()
dismiss
()
Prefs
.
setMdmInitializedWhenEnter
(
mContext
,
false
)
WorkManager
.
removeForbidden
(
mContext
)
GlobalScope
.
launch
(
Dispatchers
.
IO
)
{
SwitchOutMdm
.
onInit
(
mContext
)
}
}
}
}
}
...
...
lib_common/src/main/java/com/secspace/lib/common/function/DialogManager.kt
View file @
5896f532
...
@@ -94,6 +94,18 @@ object DialogManager{
...
@@ -94,6 +94,18 @@ object DialogManager{
}).
show
()
}).
show
()
}
}
fun
showActivateLoseDialog
(
activity
:
Activity
?,
title
:
String
?,
content
:
String
?,
listener
:
MessageListener
)
{
DialogUIUtils
.
showAlert
(
activity
,
title
,
content
,
""
,
""
,
"确定"
,
"输入激活码"
,
false
,
false
,
false
,
object
:
DialogUIListener
()
{
override
fun
onPositive
()
{
listener
.
onPositive
()
}
override
fun
onNegative
()
{
listener
.
onNegative
()
}
}).
show
()
}
fun
showMessageDialogBySure
(
activity
:
Activity
?,
title
:
String
?,
content
:
String
?,
listener
:
MessageListener
)
{
fun
showMessageDialogBySure
(
activity
:
Activity
?,
title
:
String
?,
content
:
String
?,
listener
:
MessageListener
)
{
DialogUIUtils
.
showAlert
(
activity
,
title
,
content
,
""
,
""
,
"确定"
,
""
,
false
,
false
,
false
,
object
:
DialogUIListener
()
{
DialogUIUtils
.
showAlert
(
activity
,
title
,
content
,
""
,
""
,
"确定"
,
""
,
false
,
false
,
false
,
object
:
DialogUIListener
()
{
override
fun
onPositive
()
{
override
fun
onPositive
()
{
...
...
lib_common/src/main/java/com/secspace/lib/common/function/PrivacyPolicyDialog.java
View file @
5896f532
...
@@ -176,7 +176,11 @@ public class PrivacyPolicyDialog implements DialogInterface.OnDismissListener, V
...
@@ -176,7 +176,11 @@ public class PrivacyPolicyDialog implements DialogInterface.OnDismissListener, V
mActivity
.
finish
();
mActivity
.
finish
();
}
else
if
(
v
.
getId
()
==
R
.
id
.
btn_accept
)
{
}
else
if
(
v
.
getId
()
==
R
.
id
.
btn_accept
)
{
Prefs
.
setPrivacyPolicyState
(
mActivity
,
true
);
Prefs
.
setPrivacyPolicyState
(
mActivity
,
true
);
IntentUtil
.
startEduLauncher
(
mActivity
);
try
{
mActivity
.
startActivity
(
new
Intent
(
mActivity
,
Class
.
forName
(
"com.android.launcher3.settings.BlankActivity"
)));
}
catch
(
ClassNotFoundException
e
)
{
e
.
printStackTrace
();
}
dismiss
();
dismiss
();
mActivity
.
finish
();
mActivity
.
finish
();
}
}
...
...
lib_common/src/main/java/com/secspace/lib/common/function/WorkManager.kt
View file @
5896f532
...
@@ -19,7 +19,7 @@ import kotlinx.coroutines.GlobalScope
...
@@ -19,7 +19,7 @@ import kotlinx.coroutines.GlobalScope
import
kotlinx.coroutines.launch
import
kotlinx.coroutines.launch
import
java.io.File
import
java.io.File
object
WorkManager
{
object
WorkManager
{
private
val
TAG
=
"SecSpaceWorkManager"
private
val
TAG
=
"SecSpaceWorkManager"
private
lateinit
var
mContext
:
Context
private
lateinit
var
mContext
:
Context
private
val
mHandler
:
Handler
=
Handler
(
Looper
.
getMainLooper
(),
Handler
.
Callback
{
true
})
private
val
mHandler
:
Handler
=
Handler
(
Looper
.
getMainLooper
(),
Handler
.
Callback
{
true
})
...
@@ -50,7 +50,7 @@ object WorkManager{
...
@@ -50,7 +50,7 @@ object WorkManager{
//安装耗时,检查是否都是最新的
//安装耗时,检查是否都是最新的
if
(!
DpmHelper
.
getInstance
(
mContext
).
isMiddlewareLatest
)
{
if
(!
DpmHelper
.
getInstance
(
mContext
).
isMiddlewareLatest
)
{
Log
.
i
(
TAG
,
"will install delay"
)
Log
.
i
(
TAG
,
"will install delay"
)
mHandler
.
postDelayed
(
{
enter
(
launcher
)
},
2000
)
mHandler
.
postDelayed
({
enter
(
launcher
)
},
2000
)
return
return
}
}
LoadingDialog
.
getInstance
(
launcher
).
show
(
"切换中"
)
LoadingDialog
.
getInstance
(
launcher
).
show
(
"切换中"
)
...
@@ -63,7 +63,7 @@ object WorkManager{
...
@@ -63,7 +63,7 @@ object WorkManager{
Prefs
.
setMdmInitializedWhenEnter
(
mContext
,
true
)
Prefs
.
setMdmInitializedWhenEnter
(
mContext
,
true
)
}
}
fun
exit
(
context
:
Context
?){
fun
exit
(
context
:
Context
?)
{
GlobalScope
.
launch
(
Dispatchers
.
IO
)
{
GlobalScope
.
launch
(
Dispatchers
.
IO
)
{
context
?.
let
{
SwitchOutMdm
.
onExit
(
it
)
}
context
?.
let
{
SwitchOutMdm
.
onExit
(
it
)
}
}
}
...
@@ -140,18 +140,43 @@ object WorkManager{
...
@@ -140,18 +140,43 @@ object WorkManager{
install
(
path
)
install
(
path
)
}
}
fun
removeForbidden
(
context
:
Context
){
Prefs
.
setMdmInitializedWhenEnter
(
context
,
false
)
GlobalScope
.
launch
(
Dispatchers
.
IO
)
{
SwitchOutMdm
.
onInit
(
context
)
UninstallUtil
.
removeForbidden
(
context
)
}
}
internal
class
EduCheckActiveStatusListener
(
var
activity
:
Activity
)
:
CheckActiveStatusListener
{
internal
class
EduCheckActiveStatusListener
(
var
activity
:
Activity
)
:
CheckActiveStatusListener
{
override
fun
needActivate
()
{
override
fun
needActivate
()
{
Log
.
i
(
TAG
,
"activedFailed: "
)
Log
.
i
(
TAG
,
"activedFailed: "
)
DialogManager
.
showMessageDialogBySure
(
activity
,
activity
.
getString
(
R
.
string
.
common_remind
),
activity
.
getString
(
R
.
string
.
dialog_tip_activate_lose
),
object
:
DialogManager
.
MessageListener
{
GlobalScope
.
launch
(
Dispatchers
.
Main
)
{
override
fun
onPositive
()
{
val
isActivateLocal
=
ActivationHelper
.
isProbationFromLocal
(
activity
)
IntentUtil
.
startExitService
(
activity
)
if
(
isActivateLocal
)
{
return
@launch
}
}
DialogManager
.
showActivateLoseDialog
(
activity
,
activity
.
getString
(
R
.
string
.
common_remind
),
activity
.
getString
(
R
.
string
.
dialog_tip_activate_lose
),
object
:
DialogManager
.
MessageListener
{
override
fun
onNegative
()
{
override
fun
onPositive
()
{
IntentUtil
.
startExitService
(
activity
)
}
removeForbidden
(
activity
)
})
}
override
fun
onNegative
()
{
ActivationHelper
.
active
(
activity
,
object
:
ActivationHelper
.
ActivationListener
{
override
fun
activated
()
{
IntentUtil
.
startEduLauncher
(
activity
)
}
override
fun
activationFailed
()
{
IntentUtil
.
startExitService
(
activity
)
removeForbidden
(
activity
)
}
},
true
)
removeForbidden
(
activity
)
}
})
}
}
}
override
fun
trialCodeWillPastDue
()
{
override
fun
trialCodeWillPastDue
()
{
...
...
lib_common/src/main/res/layout/dialogui_holder_alert.xml
View file @
5896f532
...
@@ -92,15 +92,16 @@
...
@@ -92,15 +92,16 @@
android:orientation=
"horizontal"
>
android:orientation=
"horizontal"
>
<Button
<Button
android:id=
"@+id/btn_
1
"
android:id=
"@+id/btn_
2
"
android:layout_width=
"0dp"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center"
android:layout_gravity=
"center"
android:layout_weight=
"1"
android:layout_weight=
"1"
android:background=
"@drawable/dialogui_selector_
left_bottom
"
android:background=
"@drawable/dialogui_selector_
all_no
"
android:gravity=
"center"
android:gravity=
"center"
android:minHeight=
"48dp"
android:padding=
"5dp"
android:padding=
"5dp"
android:text=
"
1
"
android:text=
"
2
"
android:textColor=
"@color/ios_btntext_blue"
android:textColor=
"@color/ios_btntext_blue"
android:textSize=
"@dimen/dialogui_btn_txt_size"
/>
android:textSize=
"@dimen/dialogui_btn_txt_size"
/>
...
@@ -111,19 +112,20 @@
...
@@ -111,19 +112,20 @@
android:background=
"@color/line_dd"
/>
android:background=
"@color/line_dd"
/>
<Button
<Button
android:id=
"@+id/btn_
2
"
android:id=
"@+id/btn_
1
"
android:layout_width=
"0dp"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center"
android:layout_gravity=
"center"
android:layout_weight=
"1"
android:layout_weight=
"1"
android:background=
"@drawable/dialogui_selector_
all_no
"
android:background=
"@drawable/dialogui_selector_
left_bottom
"
android:gravity=
"center"
android:gravity=
"center"
android:minHeight=
"48dp"
android:padding=
"5dp"
android:padding=
"5dp"
android:text=
"
2
"
android:text=
"
1
"
android:textColor=
"@color/ios_btntext_blue"
android:textColor=
"@color/ios_btntext_blue"
android:textSize=
"@dimen/dialogui_btn_txt_size"
/>
android:textSize=
"@dimen/dialogui_btn_txt_size"
/>
<View
<View
android:id=
"@+id/line_btn3"
android:id=
"@+id/line_btn3"
android:layout_width=
"1px"
android:layout_width=
"1px"
...
...
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