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

Commit 3b0f0c24 authored by Suphon Thanakornpakapong's avatar Suphon Thanakornpakapong
Browse files

Don't add widget if it already exists

parent 9f9e27f9
Loading
Loading
Loading
Loading
Loading
+11 −3
Original line number Diff line number Diff line
@@ -420,22 +420,30 @@ public class LauncherActivity extends AppCompatActivity implements
    }

    private void addDefaultWidgets() {
        int[] widgetIds = mAppWidgetHost.getAppWidgetIds();
        Set<ComponentName> existingProviders = new HashSet<>();
        for (int widgetId : widgetIds) {
            AppWidgetProviderInfo info = mAppWidgetManager.getAppWidgetInfo(widgetId);
            existingProviders.add(info.provider);
        }

        if (!Preferences.getAddedEcloudWidget(this)) {
            ComponentName provider = DefaultWidgets.INSTANCE.getEcloudWidget();
            if (allocateAndBindWidget(provider)) {
            if (existingProviders.contains(provider) || allocateAndBindWidget(provider)) {
                Preferences.setAddedEcloudWidget(this);
            }
        }

        if (!Preferences.getAddedPrivacyWidget(this)) {
            ComponentName provider = DefaultWidgets.INSTANCE.getPrivacyWidget();
            if (allocateAndBindWidget(provider)) {
            if (existingProviders.contains(provider) || allocateAndBindWidget(provider)) {
                Preferences.setAddedPrivacyWidget(this);
            }
        }

        if (!Preferences.getAddedWeatherWidget(this)) {
            if (allocateAndBindWidget(WeatherAppWidgetProvider.COMPONENT_NAME)) {
            ComponentName provider = DefaultWidgets.INSTANCE.getWeatherWidget();
            if (existingProviders.contains(provider) || allocateAndBindWidget(provider)) {
                Preferences.setAddedWeatherWidget(this);
            }
        }
+3 −0
Original line number Diff line number Diff line
@@ -3,10 +3,13 @@ package foundation.e.blisslauncher.features.weather;
import android.appwidget.AppWidgetProvider;
import android.content.ComponentName;

import androidx.annotation.NonNull;

import foundation.e.blisslauncher.BuildConfig;

public class WeatherAppWidgetProvider extends AppWidgetProvider {

    @NonNull
    public static final ComponentName COMPONENT_NAME = new ComponentName(
            BuildConfig.APPLICATION_ID, WeatherAppWidgetProvider.class.getName());
}
+2 −0
Original line number Diff line number Diff line
package foundation.e.blisslauncher.features.widgets

import android.content.ComponentName
import foundation.e.blisslauncher.features.weather.WeatherAppWidgetProvider

object DefaultWidgets {
    val ecloudWidget = ComponentName("foundation.e.drive", "foundation.e.drive.widgets.EDriveWidget")
    val privacyWidget = ComponentName("foundation.e.advancedprivacy", "foundation.e.privacycentralapp.Widget")
    val weatherWidget = WeatherAppWidgetProvider.COMPONENT_NAME

    val widgets = setOf(ecloudWidget, privacyWidget)
}