Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 319245cd authored by Paulz Chen's avatar Paulz Chen Committed by Android (Google) Code Review
Browse files

Merge "Add FeatureProvider for SyncAcrossDevices Settings integration." into main

parents 311a6751 132e7341
Loading
Loading
Loading
Loading
+38 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2024 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.notification.syncacrossdevices;

import androidx.annotation.Nullable;
import androidx.preference.Preference;

/** Callback to add or remove {@link Preference} in Sync Across Devices feature. */
public interface SyncAcrossDevicesFeatureCallback {

    /**
     * Called when a sync across devices feature is added
     *
     * @param preference present the feature
     */
    void onFeatureAdded(@Nullable Preference preference);

    /**
     * Called when a sync across devices feature is removed
     *
     * @param preference present the feature
     */
    void onFeatureRemoved(@Nullable Preference preference);
}
+32 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2024 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.notification.syncacrossdevices;

import android.content.Context;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

/** Feature provider for the Sync Across Devices. */
public interface SyncAcrossDevicesFeatureProvider {

    /** Returns the SyncAcrossDevicesFeatureUpdater of the Sync Across Devices feature */
    @Nullable
    SyncAcrossDevicesFeatureUpdater getSyncAcrossDevicesFeatureUpdater(
            @NonNull Context context,
            @NonNull SyncAcrossDevicesFeatureCallback featurePreferenceCallback);
}
+34 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2024 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.notification.syncacrossdevices;

import android.content.Context;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

/** Default implementation for {@link SyncAcrossDevicesFeatureProvider} */
public class SyncAcrossDevicesFeatureProviderImpl implements SyncAcrossDevicesFeatureProvider {

    @Override
    @Nullable
    public SyncAcrossDevicesFeatureUpdater getSyncAcrossDevicesFeatureUpdater(
            @NonNull Context context,
            @NonNull SyncAcrossDevicesFeatureCallback featurePreferenceCallback) {
        return new SyncAcrossDevicesFeatureUpdater() {};
    }
}
+34 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2024 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.notification.syncacrossdevices;

import android.content.Context;

import androidx.annotation.Nullable;

/**
 * Updates the sync across devices feature state. It notifies the upper level whether to add/remove
 * the preference through {@link SyncAcrossDevicesFeatureCallback}
 */
public interface SyncAcrossDevicesFeatureUpdater {

    /** Forces to update the list of the Sync Across Devices feature. */
    default void forceUpdate() {}

    /** Sets the context to generate the {@link Preference}, so it could get the correct theme. */
    default void setPreferenceContext(@Nullable Context preferenceContext) {}
}
+6 −0
Original line number Diff line number Diff line
@@ -38,6 +38,7 @@ import com.android.settings.fuelgauge.PowerUsageFeatureProvider
import com.android.settings.homepage.contextualcards.ContextualCardFeatureProvider
import com.android.settings.inputmethod.KeyboardSettingsFeatureProvider
import com.android.settings.localepicker.LocaleFeatureProvider
import com.android.settings.notification.syncacrossdevices.SyncAcrossDevicesFeatureProvider
import com.android.settings.onboarding.OnboardingFeatureProvider
import com.android.settings.overlay.FeatureFactory.Companion.setFactory
import com.android.settings.panel.PanelFeatureProvider
@@ -188,6 +189,11 @@ abstract class FeatureFactory {
     */
    abstract val audioSharingFeatureProvider: AudioSharingFeatureProvider

    /**
     * Gets implementation for sync across devices related feature.
     */
    abstract val syncAcrossDevicesFeatureProvider: SyncAcrossDevicesFeatureProvider

    companion object {
        private var _factory: FeatureFactory? = null

Loading