Rearrange a few settings into System category page.

- Use activity-alias to define which activity shows up in what category.
  We choose activity-alias because it creates a reference to UI we need
  without having to define a new set of intent-filter and/or category
  keys. This reduces maintainence in the long run. We should merge
  metadata from activity-alias into targetActivity when cleaning up.

- Created new System dashboard activity that hosts all system category
  tiles dynamically, and a static tile for checking system update.

Bug: 31781480
Test: manual
Test: make RunSettingsRoboTests -j40
Change-Id: Ia2d762e3e1aebd17423a395c5e6c286dc3326492
This commit is contained in:
Fan Zhang
2016-09-29 14:37:14 -07:00
parent 9fc9f0f177
commit cc335d9509
11 changed files with 398 additions and 15 deletions

View File

@@ -16,6 +16,7 @@
package com.android.settings.dashboard;
import com.android.settingslib.drawer.DashboardCategory;
import com.android.settingslib.drawer.Tile;
import java.util.List;
@@ -34,8 +35,20 @@ public interface DashboardFeatureProvider {
*/
DashboardCategory getTilesForHomepage();
/**
* Get tiles (wrapped in {@link DashboardCategory}) for system category.
*/
DashboardCategory getTilesForSystemCategory();
/**
* Get all tiles, grouped by category.
*/
List<DashboardCategory> getAllCategories();
/**
* Returns a priority group for tile. priority level is grouped into hundreds. tiles with
* priority 100 - 199 belongs to priority level 100, tiles with priority 200 - 299 is in
* group 200, and so on.
*/
int getPriorityGroup(Tile tile);
}

View File

@@ -21,6 +21,7 @@ import android.content.Context;
import com.android.settingslib.drawer.CategoryKey;
import com.android.settingslib.drawer.CategoryManager;
import com.android.settingslib.drawer.DashboardCategory;
import com.android.settingslib.drawer.Tile;
import java.util.List;
@@ -48,8 +49,18 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider {
return mCategoryManager.getTilesByCategory(mContext, CategoryKey.CATEGORY_HOMEPAGE);
}
@Override
public DashboardCategory getTilesForSystemCategory() {
return mCategoryManager.getTilesByCategory(mContext, CategoryKey.CATEGORY_SYSTEM);
}
@Override
public List<DashboardCategory> getAllCategories() {
return mCategoryManager.getCategories(mContext);
}
@Override
public int getPriorityGroup(Tile tile) {
return tile.priority / 100;
}
}

View File

@@ -0,0 +1,45 @@
/**
* Copyright (C) 2016 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.settings.dashboard;
import android.content.Context;
import android.util.AttributeSet;
import com.android.settings.DividerPreference;
import com.android.settings.R;
/**
* A {@code Preference} styled as a dashboard tile.
*/
public class DashboardTilePreference extends DividerPreference {
public DashboardTilePreference(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public DashboardTilePreference(Context context) {
super(context);
init();
}
private void init() {
setLayoutResource(R.layout.dashboard_tile);
setDividerAllowedAbove(false);
setDividerAllowedBelow(false);
}
}