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

Unverified Commit a78ee276 authored by alperozturk's avatar alperozturk
Browse files

fix

parent ee34ff72
Loading
Loading
Loading
Loading
+4 −2
Original line number Original line Diff line number Diff line
@@ -174,11 +174,13 @@


        <service
        <service
            android:name=".widget.singlenote.SingleNoteWidgetService"
            android:name=".widget.singlenote.SingleNoteWidgetService"
            android:permission="android.permission.BIND_REMOTEVIEWS" />
            android:permission="android.permission.BIND_REMOTEVIEWS"
            android:exported="false"/>


        <service
        <service
            android:name=".widget.notelist.NoteListWidgetService"
            android:name=".widget.notelist.NoteListWidgetService"
            android:permission="android.permission.BIND_REMOTEVIEWS" />
            android:permission="android.permission.BIND_REMOTEVIEWS"
            android:exported="false"/>


        <service
        <service
            android:name=".quicksettings.NewNoteTileService"
            android:name=".quicksettings.NewNoteTileService"
+110 −93
Original line number Original line Diff line number Diff line
/*
/*
 * Nextcloud Notes - Android Client
 * Nextcloud Notes - Android Client
 *
 *
 * SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors
 * SPDX-FileCopyrightText: 2017-2025 Nextcloud GmbH and Nextcloud contributors
 * SPDX-License-Identifier: GPL-3.0-or-later
 * SPDX-License-Identifier: GPL-3.0-or-later
 */
 */
package it.niedermann.owncloud.notes.widget.notelist;
package it.niedermann.owncloud.notes.widget.notelist


import static it.niedermann.owncloud.notes.shared.util.WidgetUtil.pendingIntentFlagCompat;
import android.app.PendingIntent

import android.appwidget.AppWidgetManager
import android.app.PendingIntent;
import android.appwidget.AppWidgetProvider
import android.appwidget.AppWidgetManager;
import android.content.ComponentName
import android.appwidget.AppWidgetProvider;
import android.content.Context
import android.content.ComponentName;
import android.content.Intent
import android.content.Context;
import android.net.Uri
import android.content.Intent;
import android.util.Log
import android.net.Uri;
import android.widget.RemoteViews
import android.util.Log;
import com.owncloud.android.lib.common.utils.Log_OC
import android.widget.RemoteViews;
import it.niedermann.owncloud.notes.R

import it.niedermann.owncloud.notes.edit.EditNoteActivity
import java.util.NoSuchElementException;
import it.niedermann.owncloud.notes.persistence.NotesRepository
import java.util.concurrent.ExecutorService;
import it.niedermann.owncloud.notes.shared.util.WidgetUtil
import java.util.concurrent.Executors;
import java.util.concurrent.ExecutorService

import java.util.concurrent.Executors
import it.niedermann.owncloud.notes.R;
import androidx.core.net.toUri
import it.niedermann.owncloud.notes.edit.EditNoteActivity;

import it.niedermann.owncloud.notes.persistence.NotesRepository;
class NoteListWidget : AppWidgetProvider() {
    private val executor: ExecutorService = Executors.newCachedThreadPool()

    override fun onUpdate(
        context: Context,
        appWidgetManager: AppWidgetManager,
        appWidgetIds: IntArray
    ) {
        super.onUpdate(context, appWidgetManager, appWidgetIds)
        updateAppWidget(context, appWidgetManager, appWidgetIds)
    }


public class NoteListWidget extends AppWidgetProvider {
    override fun onReceive(context: Context, intent: Intent) {
    private static final String TAG = NoteListWidget.class.getSimpleName();
        super.onReceive(context, intent)
    private final ExecutorService executor = Executors.newCachedThreadPool();
        val awm = AppWidgetManager.getInstance(context)


    static void updateAppWidget(Context context, AppWidgetManager awm, int[] appWidgetIds) {
        if (intent.action == null) {
        final var repo = NotesRepository.getInstance(context);
            Log.w(TAG, "Intent action is null")
            return
        }


        RemoteViews views;
        if (intent.action != AppWidgetManager.ACTION_APPWIDGET_UPDATE) {
            Log.w(TAG, "Intent action is not ACTION_APPWIDGET_UPDATE")
            return
        }


        for (int appWidgetId : appWidgetIds) {
        if (!intent.hasExtra(AppWidgetManager.EXTRA_APPWIDGET_ID)) {
            try {
            Log.w(TAG, "Update widget via default appWidgetIds")
                final var data = repo.getNoteListWidgetData(appWidgetId);
            updateAppWidget(
                context,
                awm,
                awm.getAppWidgetIds(ComponentName(context, NoteListWidget::class.java))
            )
        }


                final var serviceIntent = new Intent(context, NoteListWidgetService.class);
        if (intent.extras == null) {
                serviceIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
            Log.w(TAG, "Intent doesn't have bundle")
                serviceIntent.setData(Uri.parse(serviceIntent.toUri(Intent.URI_INTENT_SCHEME)));
            return
        }


                Log.v(TAG, "-- data - " + data);
        Log.w(TAG, "Update widget via given appWidgetIds")


                Intent editNoteIntent = new Intent(context, EditNoteActivity.class);
        val appWidgetIds = intArrayOf(intent.extras?.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, -1) ?: -1)
                editNoteIntent.setPackage(context.getPackageName());


                int pendingIntentFlags = pendingIntentFlagCompat(PendingIntent.FLAG_UPDATE_CURRENT | Intent.FILL_IN_COMPONENT);
        updateAppWidget(
                PendingIntent editNotePendingIntent = PendingIntent.getActivity(context, 0, editNoteIntent, pendingIntentFlags);
            context,
            awm,
            appWidgetIds
        )
    }


                views = new RemoteViews(context.getPackageName(), R.layout.widget_note_list);
    override fun onDeleted(context: Context, appWidgetIds: IntArray) {
                views.setRemoteAdapter(R.id.note_list_widget_lv, serviceIntent);
        super.onDeleted(context, appWidgetIds)
                views.setPendingIntentTemplate(R.id.note_list_widget_lv, editNotePendingIntent);
        val repo = NotesRepository.getInstance(context)
                views.setEmptyView(R.id.note_list_widget_lv, R.id.widget_note_list_placeholder_tv);


                awm.notifyAppWidgetViewDataChanged(appWidgetId, R.id.note_list_widget_lv);
        for (appWidgetId in appWidgetIds) {
                awm.updateAppWidget(appWidgetId, views);
            executor.submit(Runnable { repo.removeNoteListWidget(appWidgetId) })
            } catch (NoSuchElementException e) {
                Log.i(TAG, "onUpdate has been triggered before the user finished configuring the widget");
            }
        }
        }
    }
    }


    @Override
    companion object {
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
        private val TAG: String = NoteListWidget::class.java.getSimpleName()
        super.onUpdate(context, appWidgetManager, appWidgetIds);
        fun updateAppWidget(context: Context, awm: AppWidgetManager, appWidgetIds: IntArray) {
        updateAppWidget(context, appWidgetManager, appWidgetIds);
            val repo = NotesRepository.getInstance(context)
            appWidgetIds.forEach { appWidgetId ->
                repo.getNoteListWidgetData(appWidgetId)?.let { data ->
                    val serviceIntent = Intent(context, NoteListWidgetService::class.java).apply {
                        putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId)
                        setData(toUri(Intent.URI_INTENT_SCHEME).toUri())
                    }
                    }


    @Override
    public void onReceive(Context context, Intent intent) {
        super.onReceive(context, intent);
        final var awm = AppWidgetManager.getInstance(context);


        if (intent.getAction() == null) {
                    Log.v(TAG, "-- data - $data")
            Log.w(TAG, "Intent action is null");
            return;
        }


        if (!intent.getAction().equals(AppWidgetManager.ACTION_APPWIDGET_UPDATE)) {
                    val editNoteIntent = Intent(context, EditNoteActivity::class.java).apply {
            Log.w(TAG, "Intent action is not ACTION_APPWIDGET_UPDATE");
                        setPackage(context.packageName)
            return;
                    }
                    }


        if (!intent.hasExtra(AppWidgetManager.EXTRA_APPWIDGET_ID)) {
                    val pendingIntentFlags =
            Log.w(TAG,"Update widget via default appWidgetIds");
                        WidgetUtil.pendingIntentFlagCompat(PendingIntent.FLAG_UPDATE_CURRENT or Intent.FILL_IN_COMPONENT)
            updateAppWidget(context, awm, awm.getAppWidgetIds(new ComponentName(context, NoteListWidget.class)));
                    val editNotePendingIntent =
                        PendingIntent.getActivity(context, 0, editNoteIntent, pendingIntentFlags)

                    val views = RemoteViews(context.packageName, R.layout.widget_note_list).apply {
                        setRemoteAdapter(R.id.note_list_widget_lv, serviceIntent)
                        setPendingIntentTemplate(R.id.note_list_widget_lv, editNotePendingIntent)
                        setEmptyView(
                            R.id.note_list_widget_lv,
                            R.id.widget_note_list_placeholder_tv
                        )
                    }
                    }


        if (intent.getExtras() == null) {
                    awm.run {
            Log.w(TAG, "Intent doesn't have bundle");
                        updateAppWidget(appWidgetId, views)
            return;
                        notifyAppWidgetViewDataChanged(appWidgetId, R.id.note_list_widget_lv)
                    }
                    }

        Log.w(TAG,"Update widget via given appWidgetIds");
        updateAppWidget(context, awm, new int[]{intent.getExtras().getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, -1)});
                }
                }

    @Override
    public void onDeleted(Context context, int[] appWidgetIds) {
        super.onDeleted(context, appWidgetIds);
        final var repo = NotesRepository.getInstance(context);

        for (final int appWidgetId : appWidgetIds) {
            executor.submit(() -> repo.removeNoteListWidget(appWidgetId));
            }
            }
        }
        }


    /**
        @JvmStatic
     * Update note list widgets, if the note data was changed.
        fun updateNoteListWidgets(context: Context) {
     */
            val intent = Intent(context, NoteListWidget::class.java).apply {
    public static void updateNoteListWidgets(Context context) {
                setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE)
        context.sendBroadcast(new Intent(context, NoteListWidget.class).setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE));
            }
            context.sendBroadcast(intent)
        }
    }
    }
}
}
+30 −97
Original line number Original line Diff line number Diff line
@@ -7,25 +7,21 @@
package it.niedermann.owncloud.notes.widget.notelist
package it.niedermann.owncloud.notes.widget.notelist


import android.appwidget.AppWidgetManager
import android.appwidget.AppWidgetManager
import android.content.ComponentName
import android.content.Context
import android.content.Context
import android.content.Intent
import android.content.Intent
import android.os.Bundle
import android.os.Bundle
import android.util.Log
import android.util.Log
import android.widget.RemoteViews
import android.widget.RemoteViews
import android.widget.RemoteViewsService.RemoteViewsFactory
import android.widget.RemoteViewsService.RemoteViewsFactory
import androidx.core.content.ContextCompat
import androidx.core.net.toUri
import it.niedermann.owncloud.notes.R
import it.niedermann.owncloud.notes.R
import it.niedermann.owncloud.notes.edit.EditNoteActivity
import it.niedermann.owncloud.notes.edit.EditNoteActivity
import it.niedermann.owncloud.notes.main.MainActivity
import it.niedermann.owncloud.notes.persistence.NotesRepository
import it.niedermann.owncloud.notes.persistence.NotesRepository
import it.niedermann.owncloud.notes.persistence.entity.Account
import it.niedermann.owncloud.notes.persistence.entity.Account
import it.niedermann.owncloud.notes.persistence.entity.Note
import it.niedermann.owncloud.notes.persistence.entity.Note
import it.niedermann.owncloud.notes.persistence.entity.NotesListWidgetData
import it.niedermann.owncloud.notes.persistence.entity.NotesListWidgetData
import it.niedermann.owncloud.notes.shared.model.ENavigationCategoryType
import it.niedermann.owncloud.notes.shared.model.ENavigationCategoryType
import it.niedermann.owncloud.notes.shared.model.NavigationCategory
import it.niedermann.owncloud.notes.shared.model.NavigationCategory
import it.niedermann.owncloud.notes.shared.util.NotesColorUtil
import androidx.core.net.toUri


class NoteListWidgetFactory internal constructor(private val context: Context, intent: Intent) :
class NoteListWidgetFactory internal constructor(private val context: Context, intent: Intent) :
    RemoteViewsFactory {
    RemoteViewsFactory {
@@ -37,9 +33,7 @@ class NoteListWidgetFactory internal constructor(private val context: Context, i
    private val dbNotes: MutableList<Note> = ArrayList()
    private val dbNotes: MutableList<Note> = ArrayList()
    private var data: NotesListWidgetData? = null
    private var data: NotesListWidgetData? = null


    override fun onCreate() {
    override fun onCreate() = Unit
        // Nothing to do here…
    }


    override fun onDataSetChanged() {
    override fun onDataSetChanged() {
        dbNotes.clear()
        dbNotes.clear()
@@ -90,12 +84,10 @@ class NoteListWidgetFactory internal constructor(private val context: Context, i
        }
        }
    }
    }


    override fun onDestroy() {
    override fun onDestroy() = Unit
        //NoOp
    }


    override fun getCount(): Int {
    override fun getCount(): Int {
        return dbNotes.size + 1
        return dbNotes.size
    }
    }


    private fun getEditNoteIntent(bundle: Bundle): Intent {
    private fun getEditNoteIntent(bundle: Bundle): Intent {
@@ -130,74 +122,41 @@ class NoteListWidgetFactory internal constructor(private val context: Context, i
        return getEditNoteIntent(bundle)
        return getEditNoteIntent(bundle)
    }
    }


    private fun getRemoteViewFromData(): RemoteViews? {
    override fun getViewAt(position: Int): RemoteViews? {
        val widgetData = data ?: return null
        val note = dbNotes.getOrNull(position) ?: return null


        val localAccount = repo.getAccountById(widgetData.accountId)
        val openNoteIntent = getOpenNoteIntent(note)
        val createNoteIntent = getCreateNoteIntent(localAccount)
        val openIntent = Intent(Intent.ACTION_MAIN).setComponent(
            ComponentName(
                context.packageName,
                MainActivity::class.java.getName()
            )
        )


        return RemoteViews(context.packageName, R.layout.widget_entry_add).apply {
        return RemoteViews(context.packageName, R.layout.widget_entry).apply {
            setOnClickFillInIntent(R.id.widget_entry_content_tv, openIntent)
            setOnClickFillInIntent(R.id.widget_note_list_entry, openNoteIntent)
            setOnClickFillInIntent(R.id.widget_entry_fav_icon, createNoteIntent)
            setTextViewText(R.id.widget_entry_content_tv,
            setTextViewText(
                (note.title + getCategoryTitle(context))
                R.id.widget_entry_content_tv,
                getCategoryTitle(context, widgetData.mode, widgetData.category)
            )
            setImageViewResource(
                R.id.widget_entry_fav_icon,
                R.drawable.ic_add_blue_24dp
            )
            setInt(
                R.id.widget_entry_fav_icon,
                "setColorFilter",
                if (NotesColorUtil.contrastRatioIsSufficient(
                        ContextCompat.getColor(
                            context,
                            R.color.widget_background
                        ), localAccount.color
                    )
                )
                    localAccount.color
                else
                    ContextCompat.getColor(context, R.color.widget_foreground)
            )
            )

            val starIconId = if (note.favorite) {
                R.drawable.ic_star_yellow_24dp
            } else {
                R.drawable.ic_star_grey_ccc_24dp
            }
            setImageViewResource(R.id.widget_entry_fav_icon, starIconId)
        }
        }
    }
    }


    private fun getRemoteViewFromPosition(position: Int): RemoteViews? {
    private fun getCategoryTitle(context: Context): String? {
        var position = position
        if (data == null) {
        position--
        if (position < 0 || position >= dbNotes.size) {
            Log.e(TAG, "Could not find position \"$position\" in dbNotes list.")
            return null
            return null
        }
        }


        val note = dbNotes[position]
        val widgetData = data ?: return null
        val openNoteIntent = getOpenNoteIntent(note)


        return RemoteViews(context.packageName, R.layout.widget_entry).apply {
        return when (widgetData.mode) {
            setOnClickFillInIntent(R.id.widget_note_list_entry, openNoteIntent)
            NotesListWidgetData.MODE_DISPLAY_STARRED -> context.getString(R.string.label_favorites)
            setTextViewText(R.id.widget_entry_content_tv, note.title)
            NotesListWidgetData.MODE_DISPLAY_CATEGORY -> if ("" == widgetData.category)
            setImageViewResource(
                context.getString(R.string.action_uncategorized)
                R.id.widget_entry_fav_icon, if (note.favorite)
                    R.drawable.ic_star_yellow_24dp
            else
            else
                    R.drawable.ic_star_grey_ccc_24dp
                widgetData.category
            )
        }
    }


    override fun getViewAt(position: Int): RemoteViews? {
            else -> context.getString(R.string.app_name)
        return if (position == 0 && data != null) {
            getRemoteViewFromData()
        } else {
            getRemoteViewFromPosition(position)
        }
        }
    }
    }


@@ -210,18 +169,8 @@ class NoteListWidgetFactory internal constructor(private val context: Context, i
    }
    }


    override fun getItemId(position: Int): Long {
    override fun getItemId(position: Int): Long {
        var position = position
        if (position == 0) {
            return -1
        } else {
            position--
            if (position > dbNotes.size - 1 || dbNotes.get(position) == null) {
                Log.e(TAG, "Could not find position \"" + position + "\" in dbNotes list.")
                return -2
            }
        return dbNotes[position].id
        return dbNotes[position].id
    }
    }
    }


    override fun hasStableIds(): Boolean {
    override fun hasStableIds(): Boolean {
        return true
        return true
@@ -229,21 +178,5 @@ class NoteListWidgetFactory internal constructor(private val context: Context, i


    companion object {
    companion object {
        private val TAG: String = NoteListWidgetFactory::class.java.getSimpleName()
        private val TAG: String = NoteListWidgetFactory::class.java.getSimpleName()

        private fun getCategoryTitle(
            context: Context,
            displayMode: Int,
            category: String?
        ): String {
            return when (displayMode) {
                NotesListWidgetData.MODE_DISPLAY_STARRED -> context.getString(R.string.label_favorites)
                NotesListWidgetData.MODE_DISPLAY_CATEGORY -> if ("" == category)
                    context.getString(R.string.action_uncategorized)
                else
                    category

                else -> context.getString(R.string.app_name)
            }!!
        }
    }
    }
}
}
+84 −76
Original line number Original line Diff line number Diff line
@@ -4,90 +4,98 @@
 * SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors
 * SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors
 * SPDX-License-Identifier: GPL-3.0-or-later
 * SPDX-License-Identifier: GPL-3.0-or-later
 */
 */
package it.niedermann.owncloud.notes.widget.singlenote;
package it.niedermann.owncloud.notes.widget.singlenote


import static it.niedermann.owncloud.notes.shared.util.WidgetUtil.pendingIntentFlagCompat;
import android.app.PendingIntent

import android.appwidget.AppWidgetManager
import android.app.PendingIntent;
import android.appwidget.AppWidgetProvider
import android.appwidget.AppWidgetManager;
import android.content.ComponentName
import android.appwidget.AppWidgetProvider;
import android.content.Context
import android.content.ComponentName;
import android.content.Intent
import android.content.Context;
import android.widget.RemoteViews
import android.content.Intent;
import it.niedermann.owncloud.notes.R
import android.net.Uri;
import it.niedermann.owncloud.notes.edit.BaseNoteFragment
import android.util.Log;
import it.niedermann.owncloud.notes.edit.EditNoteActivity
import android.widget.RemoteViews;
import it.niedermann.owncloud.notes.persistence.NotesRepository
import it.niedermann.owncloud.notes.shared.util.WidgetUtil
import java.util.concurrent.ExecutorService
import java.util.concurrent.Executors
import androidx.core.net.toUri

class SingleNoteWidget : AppWidgetProvider() {
    private val executor: ExecutorService = Executors.newCachedThreadPool()

    override fun onUpdate(
        context: Context,
        appWidgetManager: AppWidgetManager,
        appWidgetIds: IntArray
    ) {
        super.onUpdate(context, appWidgetManager, appWidgetIds)
        updateAppWidget(context, appWidgetManager, appWidgetIds)
    }


import java.util.concurrent.ExecutorService;
    override fun onReceive(context: Context, intent: Intent?) {
import java.util.concurrent.Executors;
        super.onReceive(context, intent)
        val awm = AppWidgetManager.getInstance(context)


import it.niedermann.owncloud.notes.R;
        val provider = ComponentName(context, SingleNoteWidget::class.java)
import it.niedermann.owncloud.notes.edit.BaseNoteFragment;
        val appWidgetIds = awm.getAppWidgetIds(provider)
import it.niedermann.owncloud.notes.edit.EditNoteActivity;
        updateAppWidget(context, awm, appWidgetIds)
import it.niedermann.owncloud.notes.persistence.NotesRepository;
    }
import it.niedermann.owncloud.notes.persistence.entity.SingleNoteWidgetData;


public class SingleNoteWidget extends AppWidgetProvider {
    override fun onDeleted(context: Context, appWidgetIds: IntArray) {
        val repo = NotesRepository.getInstance(context)


    private static final String TAG = SingleNoteWidget.class.getSimpleName();
        for (appWidgetId in appWidgetIds) {
    private final ExecutorService executor = Executors.newCachedThreadPool();
            executor.submit { repo.removeSingleNoteWidget(appWidgetId) }
        }
        super.onDeleted(context, appWidgetIds)
    }


    static void updateAppWidget(Context context, AppWidgetManager awm, int[] appWidgetIds) {
    companion object {
        final var templateIntent = new Intent(context, EditNoteActivity.class);
        private val TAG: String = SingleNoteWidget::class.java.getSimpleName()
        final var repo = NotesRepository.getInstance(context);
        fun updateAppWidget(context: Context, awm: AppWidgetManager, appWidgetIds: IntArray) {
            val templateIntent = Intent(context, EditNoteActivity::class.java)
            val repo = NotesRepository.getInstance(context)


        for (int appWidgetId : appWidgetIds) {
            appWidgetIds.forEach { appWidgetId ->
            final var data = repo.getSingleNoteWidgetData(appWidgetId);
                repo.getSingleNoteWidgetData(appWidgetId)?.let { data ->
            if (data != null) {
                    templateIntent.putExtra(BaseNoteFragment.PARAM_ACCOUNT_ID, data.accountId)
                templateIntent.putExtra(BaseNoteFragment.PARAM_ACCOUNT_ID, data.getAccountId());


                final var serviceIntent = new Intent(context, SingleNoteWidgetService.class);
                    val serviceIntent = Intent(context, SingleNoteWidgetService::class.java).apply {
                serviceIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
                        putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId)
                serviceIntent.setData(Uri.parse(serviceIntent.toUri(Intent.URI_INTENT_SCHEME)));
                        setData(toUri(Intent.URI_INTENT_SCHEME).toUri())
                    }


                final var views = new RemoteViews(context.getPackageName(), R.layout.widget_single_note);
                views.setPendingIntentTemplate(R.id.single_note_widget_lv, PendingIntent.getActivity(context, appWidgetId, templateIntent,
                        pendingIntentFlagCompat(PendingIntent.FLAG_UPDATE_CURRENT)));
                views.setRemoteAdapter(R.id.single_note_widget_lv, serviceIntent);
                views.setEmptyView(R.id.single_note_widget_lv, R.id.widget_single_note_placeholder_tv);


                awm.notifyAppWidgetViewDataChanged(appWidgetId, R.id.single_note_widget_lv);
                    val views = RemoteViews(context.packageName, R.layout.widget_single_note).apply {
                awm.updateAppWidget(appWidgetId, views);
                        setPendingIntentTemplate(
            } else {
                            R.id.single_note_widget_lv, PendingIntent.getActivity(
                Log.i(TAG, "onUpdate has been triggered before the user finished configuring the widget");
                                context, appWidgetId, templateIntent,
                                WidgetUtil.pendingIntentFlagCompat(PendingIntent.FLAG_UPDATE_CURRENT)
                            )
                        )
                        setRemoteAdapter(R.id.single_note_widget_lv, serviceIntent)
                        setEmptyView(
                            R.id.single_note_widget_lv,
                            R.id.widget_single_note_placeholder_tv
                        )
                    }
                    }

                    awm.run {
                        updateAppWidget(appWidgetId, views)
                        notifyAppWidgetViewDataChanged(appWidgetId, R.id.single_note_widget_lv)
                    }
                    }
                }
                }

    @Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
        super.onUpdate(context, appWidgetManager, appWidgetIds);
        updateAppWidget(context, appWidgetManager, appWidgetIds);
            }
            }

    @Override
    public void onReceive(Context context, Intent intent) {
        super.onReceive(context, intent);
        final var awm = AppWidgetManager.getInstance(context);

        updateAppWidget(context, AppWidgetManager.getInstance(context),
                (awm.getAppWidgetIds(new ComponentName(context, SingleNoteWidget.class))));
        }
        }


    @Override
        @JvmStatic
    public void onDeleted(Context context, int[] appWidgetIds) {
        fun updateSingleNoteWidgets(context: Context) {
        final var repo = NotesRepository.getInstance(context);
            val intent = Intent(context, SingleNoteWidget::class.java).apply {

                setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE)
        for (int appWidgetId : appWidgetIds) {
            executor.submit(() -> repo.removeSingleNoteWidget(appWidgetId));
            }
            }
        super.onDeleted(context, appWidgetIds);
            context.sendBroadcast(intent)
        }
        }

    /**
     * Update single note widget, if the note data was changed.
     */
    public static void updateSingleNoteWidgets(Context context) {
        context.sendBroadcast(new Intent(context, SingleNoteWidget.class).setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE));
    }
    }
}
}
+1 −1

File changed.

Preview size limit exceeded, changes collapsed.