diff options
-rw-r--r-- | res/layout/settings_pane_list_header.xml | 6 | ||||
-rw-r--r-- | res/layout/settings_pane_list_item.xml | 18 | ||||
-rw-r--r-- | res/values/dimens.xml | 4 | ||||
-rw-r--r-- | src/com/android/launcher3/Launcher.java | 46 | ||||
-rw-r--r-- | src/com/android/launcher3/Workspace.java | 19 | ||||
-rw-r--r-- | src/com/android/launcher3/list/SettingsPinnedHeaderAdapter.java | 75 |
6 files changed, 124 insertions, 44 deletions
diff --git a/res/layout/settings_pane_list_header.xml b/res/layout/settings_pane_list_header.xml index a7d04e36e..8c35fb865 100644 --- a/res/layout/settings_pane_list_header.xml +++ b/res/layout/settings_pane_list_header.xml @@ -15,7 +15,7 @@ --> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" - android:layout_height="wrap_content" + android:layout_height="@dimen/overview_panel_list_header_height" android:layout_gravity="center_horizontal|bottom" android:background="@color/settings_bg_color" android:paddingLeft="@dimen/overview_panel_list_padding" @@ -27,8 +27,8 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:drawablePadding="4dp" - android:fontFamily="sans-serif-condensed" + android:fontFamily="sans-serif-medium" android:gravity="left" - android:textSize="16sp" + android:textSize="14sp" android:textColor="@color/settings_header_text"/> </RelativeLayout>
\ No newline at end of file diff --git a/res/layout/settings_pane_list_item.xml b/res/layout/settings_pane_list_item.xml index 58b2de862..6c8c3c719 100644 --- a/res/layout/settings_pane_list_item.xml +++ b/res/layout/settings_pane_list_item.xml @@ -1,6 +1,6 @@ <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" - android:layout_height="wrap_content" + android:layout_height="@dimen/overview_panel_list_item_height" android:layout_gravity="center_horizontal|bottom" android:background="@drawable/listitem_bg" android:paddingStart="@dimen/overview_panel_list_padding" @@ -9,13 +9,21 @@ android:paddingTop="@dimen/overview_panel_list_padding" android:orientation="horizontal" > + <Switch + android:id="@+id/setting_switch" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_centerVertical="true" + android:layout_alignParentEnd="true" + android:visibility="invisible"/> + <TextView android:id="@+id/item_state" android:layout_width="wrap_content" android:layout_height="wrap_content" android:drawablePadding="4dp" - android:fontFamily="sans-serif-condensed" - android:textSize="20sp" + android:fontFamily="sans-serif" + android:textSize="16sp" android:textAllCaps="true" android:textColor="@drawable/listitem_text" android:layout_alignParentEnd="true" @@ -28,8 +36,8 @@ android:layout_height="wrap_content" android:layout_alignParentRight="true" android:drawablePadding="4dp" - android:fontFamily="sans-serif-condensed" - android:textSize="20sp" + android:fontFamily="sans-serif" + android:textSize="16sp" android:textColor="@drawable/listitem_text" android:layout_toStartOf="@id/item_state" android:layout_alignParentStart="true" diff --git a/res/values/dimens.xml b/res/values/dimens.xml index d73bd33db..44edfcb6e 100644 --- a/res/values/dimens.xml +++ b/res/values/dimens.xml @@ -172,11 +172,13 @@ <!-- Overview panel --> <dimen name="sliding_panel_padding">175dp</dimen> + <dimen name="overview_panel_list_header_height">48dp</dimen> + <dimen name="overview_panel_list_item_height">56dp</dimen> <dimen name="overview_panel_top_padding">20dp</dimen> <dimen name="overview_panel_bottom_padding">50dp</dimen> <dimen name="overview_panel_button_spacing">30dp</dimen> <dimen name="overview_panel_list_padding">16dp</dimen> <dimen name="overview_mode_page_offset">60dp</dimen> <dimen name="overview_scaling_padding">50dp</dimen> - + </resources> diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java index 3198c0ff5..729b9949f 100644 --- a/src/com/android/launcher3/Launcher.java +++ b/src/com/android/launcher3/Launcher.java @@ -108,6 +108,7 @@ import com.android.launcher3.compat.LauncherActivityInfoCompat; import com.android.launcher3.compat.LauncherAppsCompat; import com.android.launcher3.compat.UserHandleCompat; import com.android.launcher3.compat.UserManagerCompat; +import com.android.launcher3.list.SettingsPinnedHeaderAdapter; import com.android.launcher3.model.WidgetsModel; import com.android.launcher3.settings.SettingsProvider; import com.android.launcher3.util.ComponentKey; @@ -369,6 +370,8 @@ public class Launcher extends Activity // the press state and keep this reference to reset the press state when we return to launcher. private BubbleTextView mWaitingForResume; + private long mDefaultScreenId; + public Animator.AnimatorListener mAnimatorListener = new Animator.AnimatorListener() { @Override public void onAnimationStart(Animator arg0) {} @@ -382,7 +385,7 @@ public class Launcher extends Activity public void onAnimationCancel(Animator arg0) {} }; - Runnable mUpdateDynamicGridRunnable = new Runnable() { + Runnable mReloadLauncherRunnable = new Runnable() { @Override public void run() { reloadLauncher(mWorkspace.getRestorePage(), true, false); @@ -393,7 +396,19 @@ public class Launcher extends Activity @Override public void onReceive(Context context, Intent intent) { // Update the workspace - if (waitUntilResume(mUpdateDynamicGridRunnable, true)) { + if (waitUntilResume(mReloadLauncherRunnable, true)) { + return; + } + + reloadLauncher(mWorkspace.getRestorePage(), true, false); + } + }; + + private BroadcastReceiver searchBarVisibilityChangedReceiver = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + // Update the workspace + if (waitUntilResume(mReloadLauncherRunnable, true)) { return; } @@ -572,6 +587,10 @@ public class Launcher extends Activity cyanogenmod.content.Intent.ACTION_PROTECTED_CHANGED); registerReceiver(protectedAppsChangedReceiver, protectedAppsFilter, cyanogenmod.platform.Manifest.permission.PROTECTED_APP, null); + + IntentFilter searchBarVisibilityFilter = new IntentFilter( + SettingsPinnedHeaderAdapter.ACTION_SEARCH_BAR_VISIBILITY_CHANGED); + registerReceiver(searchBarVisibilityChangedReceiver, searchBarVisibilityFilter); } @Override @@ -1788,6 +1807,8 @@ public class Launcher extends Activity mHideIconLabels = SettingsProvider.getBoolean(this, SettingsProvider.SETTINGS_UI_HOMESCREEN_HIDE_ICON_LABELS, R.bool.preferences_interface_homescreen_hide_icon_labels_default); + mDefaultScreenId = SettingsProvider.getLongCustomDefault(this, + SettingsProvider.SETTINGS_UI_HOMESCREEN_DEFAULT_SCREEN_ID, 1); mModel = app.setLauncher(this); mIconCache = app.getIconCache(); @@ -1829,7 +1850,6 @@ public class Launcher extends Activity mWorkspace.updateCustomContentVisibility(); mSearchDropTargetBar.setupQsb(this); - mSearchDropTargetBar.setVisibility(View.INVISIBLE); if (reloadAppDrawer) { reloadAppDrawer(); @@ -2313,6 +2333,7 @@ public class Launcher extends Activity } unregisterReceiver(protectedAppsChangedReceiver); + unregisterReceiver(searchBarVisibilityChangedReceiver); } public DragController getDragController() { @@ -3097,7 +3118,24 @@ public class Launcher extends Activity protected void onClickDefaultScreenButton(View v) { if (LOGD) Log.d(TAG, "onClickDefaultScreenButton"); - // TODO + + if (!mWorkspace.isInOverviewMode()) return; + + mDefaultScreenId = mWorkspace.getScreenIdForPageIndex(mWorkspace.getPageNearestToCenterOfScreen()); + updateDefaultScreenButton(); + SettingsProvider.get(this).edit() + .putLong(SettingsProvider.SETTINGS_UI_HOMESCREEN_DEFAULT_SCREEN_ID, + mDefaultScreenId) + .commit(); + } + + protected void updateDefaultScreenButton() { + if (mOverviewPanel != null) { + View defaultPageButton = mOverviewPanel.findViewById(R.id.default_screen_button); + defaultPageButton.setActivated( + mWorkspace.getScreenIdForPageIndex(mWorkspace.getPageNearestToCenterOfScreen()) + == mDefaultScreenId); + } } public View.OnTouchListener getHapticFeedbackTouchListener() { diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java index 59c870a8d..09a0a9889 100644 --- a/src/com/android/launcher3/Workspace.java +++ b/src/com/android/launcher3/Workspace.java @@ -574,6 +574,11 @@ public class Workspace extends PagedView mScreenOrder.add(insertIndex, screenId); addView(newScreen, insertIndex); + if (getDefaultScreenId() == screenId) { + int defaultPage = getPageIndexForScreenId(screenId); + moveToScreen(defaultPage, false); + } + LauncherAccessibilityDelegate delegate = LauncherAppState.getInstance().getAccessibilityDelegate(); if (delegate != null && delegate.isInAccessibleDrag()) { @@ -1546,6 +1551,10 @@ public class Workspace extends PagedView super.computeScroll(); if (mScrollWallpaper) mWallpaperOffset.syncWithScroll(); + + if (isInOverviewMode() && !isReordering(true)) { + mLauncher.updateDefaultScreenButton(); + } } @Override @@ -1985,6 +1994,9 @@ public class Workspace extends PagedView // Re-enable auto layout transitions for page deletion. enableLayoutTransitions(); + + // Show the default screen button + mLauncher.updateDefaultScreenButton(); } public boolean isInOverviewMode() { @@ -4436,7 +4448,7 @@ public class Workspace extends PagedView } void moveToDefaultScreen(boolean animate) { - moveToScreen(mDefaultPage, animate); + moveToScreen(getPageIndexForScreenId(getDefaultScreenId()), animate); } void moveToCustomContentScreen(boolean animate) { @@ -4521,6 +4533,11 @@ public class Workspace extends PagedView } } + private long getDefaultScreenId() { + return SettingsProvider.getLongCustomDefault(mLauncher, + SettingsProvider.SETTINGS_UI_HOMESCREEN_DEFAULT_SCREEN_ID, 1); + } + /** * Used as a workaround to ensure that the AppWidgetService receives the * PACKAGE_ADDED broadcast before updating widgets. diff --git a/src/com/android/launcher3/list/SettingsPinnedHeaderAdapter.java b/src/com/android/launcher3/list/SettingsPinnedHeaderAdapter.java index 034fd4903..505b6b4ed 100644 --- a/src/com/android/launcher3/list/SettingsPinnedHeaderAdapter.java +++ b/src/com/android/launcher3/list/SettingsPinnedHeaderAdapter.java @@ -12,6 +12,7 @@ import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; +import android.widget.Switch; import android.widget.TextView; import android.widget.Toast; import com.android.launcher3.InvariantDeviceProfile; @@ -22,6 +23,9 @@ import com.android.launcher3.Utilities; import com.android.launcher3.settings.SettingsProvider; public class SettingsPinnedHeaderAdapter extends PinnedHeaderListAdapter { + public static final String ACTION_SEARCH_BAR_VISIBILITY_CHANGED = + "cyanogenmod.intent.action.SEARCH_BAR_VISIBILITY_CHANGED"; + private Launcher mLauncher; private Context mContext; @@ -59,9 +63,6 @@ public class SettingsPinnedHeaderAdapter extends PinnedHeaderListAdapter { protected void bindHeaderView(View view, int partition, Cursor cursor) { TextView textView = (TextView) view.findViewById(R.id.item_name); textView.setText(mHeaders[partition]); - textView.setTypeface(textView.getTypeface(), Typeface.BOLD); - - textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 16); } @Override @@ -73,15 +74,19 @@ public class SettingsPinnedHeaderAdapter extends PinnedHeaderListAdapter { @Override protected void bindView(View v, int partition, Cursor cursor, int position) { - TextView text = (TextView)v.findViewById(R.id.item_name); + TextView nameView = (TextView)v.findViewById(R.id.item_name); + TextView stateView = (TextView)v.findViewById(R.id.item_state); + Switch settingSwitch = (Switch)v.findViewById(R.id.setting_switch); + settingSwitch.setClickable(false); + // RTL Configuration config = mLauncher.getResources().getConfiguration(); if (config.getLayoutDirection() == View.LAYOUT_DIRECTION_RTL) { - text.setGravity(Gravity.RIGHT); + nameView.setGravity(Gravity.RIGHT); } String title = cursor.getString(1); - text.setText(title); + nameView.setText(title); v.setTag(new SettingsPosition(partition, position)); @@ -97,9 +102,7 @@ public class SettingsPinnedHeaderAdapter extends PinnedHeaderListAdapter { current = SettingsProvider.getBoolean(mContext, SettingsProvider.SETTINGS_UI_HOMESCREEN_SEARCH, R.bool.preferences_interface_homescreen_search_default); - state = current ? res.getString(R.string.setting_state_on) - : res.getString(R.string.setting_state_off); - ((TextView) v.findViewById(R.id.item_state)).setText(state); + setSettingSwitch(stateView, settingSwitch, current); break; case 1: current = SettingsProvider.getBoolean(mContext, @@ -107,21 +110,19 @@ public class SettingsPinnedHeaderAdapter extends PinnedHeaderListAdapter { R.bool.preferences_interface_homescreen_hide_icon_labels_default); state = current ? res.getString(R.string.icon_labels_hide) : res.getString(R.string.icon_labels_show); - ((TextView) v.findViewById(R.id.item_state)).setText(state); + setStateText(stateView, settingSwitch, state); break; case 2: current = SettingsProvider.getBoolean(mContext, SettingsProvider.SETTINGS_UI_HOMESCREEN_SCROLLING_WALLPAPER_SCROLL, R.bool.preferences_interface_homescreen_scrolling_wallpaper_scroll_default); - state = current ? res.getString(R.string.setting_state_on) - : res.getString(R.string.setting_state_off); - ((TextView) v.findViewById(R.id.item_state)).setText(state); + setSettingSwitch(stateView, settingSwitch, current); break; case 3: updateDynamicGridSizeSettingsItem(v); break; default: - ((TextView) v.findViewById(R.id.item_state)).setText(""); + hideStates(stateView, settingSwitch); } break; case OverviewSettingsPanel.DRAWER_SETTINGS_POSITION: @@ -132,7 +133,7 @@ public class SettingsPinnedHeaderAdapter extends PinnedHeaderListAdapter { R.bool.preferences_interface_drawer_hide_icon_labels_default); state = current ? res.getString(R.string.icon_labels_hide) : res.getString(R.string.icon_labels_show); - ((TextView) v.findViewById(R.id.item_state)).setText(state); + setStateText(stateView, settingSwitch, state); break; case 1: current = SettingsProvider.getBoolean(mContext, @@ -140,7 +141,7 @@ public class SettingsPinnedHeaderAdapter extends PinnedHeaderListAdapter { R.bool.preferences_interface_drawer_compact_default); state = current ? res.getString(R.string.app_drawer_style_compact) : res.getString(R.string.app_drawer_style_sections); - ((TextView) v.findViewById(R.id.item_state)).setText(state); + setStateText(stateView, settingSwitch, state); break; case 2: current = SettingsProvider.getBoolean(mContext, @@ -148,7 +149,7 @@ public class SettingsPinnedHeaderAdapter extends PinnedHeaderListAdapter { R.bool.preferences_interface_drawer_dark_default); state = current ? res.getString(R.string.app_drawer_color_dark) : res.getString(R.string.app_drawer_color_light); - ((TextView) v.findViewById(R.id.item_state)).setText(state); + setStateText(stateView, settingSwitch, state); break; case 3: current = SettingsProvider.getBoolean(mContext, @@ -156,24 +157,22 @@ public class SettingsPinnedHeaderAdapter extends PinnedHeaderListAdapter { R.bool.preferences_interface_use_horizontal_scrubber_default); state = current ? res.getString(R.string.fast_scroller_type_horizontal) : res.getString(R.string.fast_scroller_type_vertical); - ((TextView) v.findViewById(R.id.item_state)).setText(state); + setStateText(stateView, settingSwitch, state); break; default: - ((TextView) v.findViewById(R.id.item_state)).setText(""); + hideStates(stateView, settingSwitch); } break; - default: + case OverviewSettingsPanel.APP_SETTINGS_POSITION: switch (position) { case 0: current = SettingsProvider.getBoolean(mContext, SettingsProvider.SETTINGS_UI_GENERAL_ICONS_LARGE, R.bool.preferences_interface_general_icons_large_default); - state = current ? res.getString(R.string.setting_state_on) - : res.getString(R.string.setting_state_off); - ((TextView) v.findViewById(R.id.item_state)).setText(state); + setSettingSwitch(stateView, settingSwitch, current); break; default: - ((TextView) v.findViewById(R.id.item_state)).setText(""); + hideStates(stateView, settingSwitch); } } @@ -234,7 +233,6 @@ public class SettingsPinnedHeaderAdapter extends PinnedHeaderListAdapter { switch (position) { case 0: updateSearchBarVisibility(v); - mLauncher.reloadLauncher(false, false); break; case 1: onIconLabelsBooleanChanged(v, @@ -282,7 +280,7 @@ public class SettingsPinnedHeaderAdapter extends PinnedHeaderListAdapter { break; } break; - default: + case OverviewSettingsPanel.APP_SETTINGS_POSITION: switch (position) { case 0: onSettingsBooleanChanged(v, @@ -320,6 +318,9 @@ public class SettingsPinnedHeaderAdapter extends PinnedHeaderListAdapter { onSettingsBooleanChanged(v, SettingsProvider.SETTINGS_UI_HOMESCREEN_SEARCH, R.bool.preferences_interface_homescreen_search_default); + + Intent intent = new Intent(ACTION_SEARCH_BAR_VISIBILITY_CHANGED); + mContext.sendBroadcast(intent); } private void onSettingsBooleanChanged(View v, String key, int res) { @@ -330,10 +331,7 @@ public class SettingsPinnedHeaderAdapter extends PinnedHeaderListAdapter { SettingsProvider.putBoolean(mContext, key, !current); SettingsProvider.putBoolean(mContext, SettingsProvider.SETTINGS_CHANGED, true); - String state = current ? mLauncher.getResources().getString( - R.string.setting_state_off) : mLauncher.getResources().getString( - R.string.setting_state_on); - ((TextView) v.findViewById(R.id.item_state)).setText(state); + ((Switch)v.findViewById(R.id.setting_switch)).setChecked(!current); } private void onIconLabelsBooleanChanged(View v, String key, int res) { @@ -391,4 +389,21 @@ public class SettingsPinnedHeaderAdapter extends PinnedHeaderListAdapter { R.string.fast_scroller_type_horizontal); ((TextView) v.findViewById(R.id.item_state)).setText(state); } + + private void setStateText(TextView stateView, Switch settingSwitch, String state) { + stateView.setText(state); + stateView.setVisibility(View.VISIBLE); + settingSwitch.setVisibility(View.INVISIBLE); + } + + private void setSettingSwitch(TextView stateView, Switch settingSwitch, boolean isChecked) { + settingSwitch.setChecked(isChecked); + settingSwitch.setVisibility(View.VISIBLE); + stateView.setVisibility(View.INVISIBLE); + } + + private void hideStates(TextView stateView, Switch settingSwitch) { + settingSwitch.setVisibility(View.INVISIBLE); + stateView.setVisibility(View.INVISIBLE); + } }
\ No newline at end of file |