import android.content.res.TypedArray;
import android.content.res.XmlResourceParser;
import android.nfc.NfcAdapter;
+import android.nfc.Tag;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
+import android.os.Process;
import android.os.UserHandle;
import android.os.UserManager;
import android.preference.Preference;
import com.android.settings.accessibility.CaptionPropertiesFragment;
import com.android.settings.accounts.AccountSettings;
import com.android.settings.accounts.AccountSyncSettings;
+import com.android.settings.applications.DrawOverlayDetails;
import com.android.settings.applications.InstalledAppDetails;
import com.android.settings.applications.ManageApplications;
import com.android.settings.applications.ManageAssist;
import com.android.settings.applications.ProcessStatsSummary;
import com.android.settings.applications.ProcessStatsUi;
import com.android.settings.applications.UsageAccessDetails;
+import com.android.settings.applications.WriteSettingsDetails;
+import com.android.settings.blacklist.BlacklistSettings;
import com.android.settings.bluetooth.BluetoothSettings;
+import com.android.settings.contributors.ContributorsCloudFragment;
+import com.android.settings.cyanogenmod.DisplayRotation;
+import com.android.settings.cyanogenmod.LiveLockScreenSettings;
+import com.android.settings.cyanogenmod.WeatherServiceSettings;
import com.android.settings.dashboard.DashboardCategory;
import com.android.settings.dashboard.DashboardSummary;
import com.android.settings.dashboard.DashboardTile;
import com.android.settings.deviceinfo.PrivateVolumeSettings;
import com.android.settings.deviceinfo.PublicVolumeSettings;
import com.android.settings.deviceinfo.StorageSettings;
-import com.android.settings.fuelgauge.BatterySaverSettings;
import com.android.settings.fuelgauge.PowerUsageDetail;
import com.android.settings.fuelgauge.PowerUsageSummary;
+import com.android.settings.livedisplay.LiveDisplay;
+import com.android.settings.notification.NotificationManagerSettings;
+import com.android.settings.notification.OtherSoundSettings;
+import com.android.settings.notification.SoundSettings;
+import com.android.settings.profiles.NFCProfileTagCallback;
+import com.android.settings.profiles.ProfilesSettings;
+import com.android.settings.search.DynamicIndexableContentMonitor;
+import com.android.settings.search.Index;
import com.android.settings.inputmethod.InputMethodAndLanguageSettings;
import com.android.settings.inputmethod.KeyboardLayoutPickerFragment;
import com.android.settings.inputmethod.SpellCheckersSettings;
import com.android.settings.nfc.PaymentSettings;
import com.android.settings.notification.AppNotificationSettings;
import com.android.settings.notification.NotificationAccessSettings;
-import com.android.settings.notification.NotificationSettings;
import com.android.settings.notification.NotificationStation;
import com.android.settings.notification.OtherSoundSettings;
import com.android.settings.notification.ZenAccessSettings;
+import com.android.settings.notification.ZenModeAutomationSettings;
import com.android.settings.notification.ZenModeEventRuleSettings;
import com.android.settings.notification.ZenModeExternalRuleSettings;
import com.android.settings.notification.ZenModePrioritySettings;
import com.android.settings.print.PrintSettingsFragment;
import com.android.settings.search.DynamicIndexableContentMonitor;
import com.android.settings.search.Index;
+import com.android.settings.privacyguard.PrivacyGuardPrefs;
import com.android.settings.sim.SimSettings;
import com.android.settings.tts.TextToSpeechSettings;
import com.android.settings.users.UserSettings;
import com.android.settings.wifi.WifiSettings;
import com.android.settings.wifi.p2p.WifiP2pSettings;
+import cyanogenmod.app.CMContextConstants;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
private CharSequence mInitialTitle;
private int mInitialTitleResId;
+ private NFCProfileTagCallback mNfcProfileCallback;
+
// Show only these settings for restricted users
private int[] SETTINGS_FOR_RESTRICTED = {
R.id.wireless_section,
R.id.sim_settings,
R.id.wireless_settings,
R.id.device_section,
- R.id.notification_settings,
- R.id.display_settings,
+ R.id.sound_settings,
+ R.id.display_and_lights_settings,
+ R.id.lockscreen_settings,
+ R.id.notification_manager,
+ R.id.status_bar_settings,
R.id.storage_settings,
R.id.application_settings,
R.id.battery_settings,
R.id.about_settings,
R.id.accessibility_settings,
R.id.print_settings,
- R.id.nfc_payment_settings,
R.id.home_settings,
- R.id.dashboard
+ R.id.dashboard,
+ R.id.privacy_settings_cyanogenmod,
};
private static final String[] ENTRY_FRAGMENTS = {
PaymentSettings.class.getName(),
KeyboardLayoutPickerFragment.class.getName(),
ZenModeSettings.class.getName(),
- NotificationSettings.class.getName(),
+ SoundSettings.class.getName(),
ChooseLockPassword.ChooseLockPasswordFragment.class.getName(),
ChooseLockPattern.ChooseLockPatternFragment.class.getName(),
InstalledAppDetails.class.getName(),
- BatterySaverSettings.class.getName(),
AppNotificationSettings.class.getName(),
OtherSoundSettings.class.getName(),
ApnSettings.class.getName(),
WifiCallingSettings.class.getName(),
ZenModePrioritySettings.class.getName(),
+ ZenModeAutomationSettings.class.getName(),
ZenModeScheduleRuleSettings.class.getName(),
ZenModeEventRuleSettings.class.getName(),
ZenModeExternalRuleSettings.class.getName(),
ProcessStatsUi.class.getName(),
PowerUsageDetail.class.getName(),
ProcessStatsSummary.class.getName(),
+ DrawOverlayDetails.class.getName(),
+ WriteSettingsDetails.class.getName(),
+ LiveDisplay.class.getName(),
+ com.android.settings.cyanogenmod.DisplayRotation.class.getName(),
+ com.android.settings.cyanogenmod.PrivacySettings.class.getName(),
+ BlacklistSettings.class.getName(),
+ ProfilesSettings.class.getName(),
+ ContributorsCloudFragment.class.getName(),
+ NotificationManagerSettings.class.getName(),
+ LiveLockScreenSettings.class.getName(),
+ WeatherServiceSettings.class.getName()
};
1 /* one home activity by default */);
} else {
if (!mIsShowingDashboard) {
- mDisplaySearch = false;
+ mDisplaySearch = Process.myUid() == Process.SYSTEM_UID;
// UP will be shown only if it is a sub settings
if (mIsShortcut) {
mDisplayHomeAsUpEnabled = isSubSettings;
com.android.internal.R.styleable.PreferenceHeader_fragment);
sa.recycle();
+ sa = context.obtainStyledAttributes(attrs, R.styleable.DashboardTile);
+ tile.switchControl = sa.getString(
+ R.styleable.DashboardTile_switchClass);
+ sa.recycle();
+
if (curBundle == null) {
curBundle = new Bundle();
}
curBundle = null;
}
- // Show the SIM Cards setting if there are more than 2 SIMs installed.
- if(tile.id != R.id.sim_settings || Utils.showSimCardTile(context)){
- category.addTile(tile);
- }
+ category.addTile(tile);
} else if (innerNodeName.equals("external-tiles")) {
category.externalIndex = category.getTilesCount();
if (!getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH)) {
removeTile = true;
}
+ } else if (id == R.id.mobile_networks) {
+ if (!getPackageManager().hasSystemFeature(PackageManager.FEATURE_TELEPHONY)
+ || Utils.showSimCardTile(this)) {
+ removeTile = true;
+ }
+ } else if (id == R.id.sim_settings) {
+ if (!Utils.showSimCardTile(this)) {
+ removeTile = true;
+ }
} else if (id == R.id.data_usage_settings) {
// Remove data usage when kernel module not enabled
if (!Utils.isBandwidthControlEnabled()) {
|| Utils.isMonkeyRunning()) {
removeTile = true;
}
- } else if (id == R.id.nfc_payment_settings) {
- if (!getPackageManager().hasSystemFeature(PackageManager.FEATURE_NFC)) {
- removeTile = true;
- } else {
- // Only show if NFC is on and we have the HCE feature
- NfcAdapter adapter = NfcAdapter.getDefaultAdapter(this);
- if (adapter == null || !adapter.isEnabled() ||
- !getPackageManager().hasSystemFeature(
- PackageManager.FEATURE_NFC_HOST_CARD_EMULATION)) {
- removeTile = true;
- }
- }
} else if (id == R.id.print_settings) {
boolean hasPrintingSupport = getPackageManager().hasSystemFeature(
PackageManager.FEATURE_PRINTING);
UserManager.DISALLOW_DEBUGGING_FEATURES)) {
removeTile = true;
}
+ } else if (id == R.id.button_settings) {
+ boolean hasDeviceKeys = getResources().getInteger(
+ com.android.internal.R.integer.config_deviceHardwareKeys) != 0;
+ if (!hasDeviceKeys) {
+ removeTile = true;
+ }
+ } else if (id == R.id.weather_settings) {
+ final boolean showWeatherMenu = getResources()
+ .getBoolean(R.bool.config_showWeatherMenu);
+
+ if (!getPackageManager().hasSystemFeature(
+ CMContextConstants.Features.WEATHER_SERVICES) || !showWeatherMenu) {
+ removeTile = true;
+ }
}
if (UserHandle.MU_ENABLED && UserHandle.myUserId() != 0
activityInfo.packageName, activityInfo.name);
Utils.updateTileToSpecificActivityFromMetaDataOrRemove(this, tile);
- if (category.externalIndex == -1) {
+ if (category.externalIndex == -1
+ || category.externalIndex > category.getTilesCount()) {
// If no location for external tiles has been specified for this category,
// then just put them at the end.
category.addTile(tile);
public void setResultIntentData(Intent resultIntentData) {
mResultIntentData = resultIntentData;
}
+
+ public void setNfcProfileCallback(NFCProfileTagCallback callback) {
+ mNfcProfileCallback = callback;
+ }
+
+ @Override
+ protected void onNewIntent(Intent intent) {
+ if (NfcAdapter.ACTION_TAG_DISCOVERED.equals(intent.getAction())) {
+ Tag detectedTag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
+ if (mNfcProfileCallback != null) {
+ mNfcProfileCallback.onTagRead(detectedTag);
+ }
+ return;
+ }
+ super.onNewIntent(intent);
+ }
+
}