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

Commit 0b8348cf authored by Stefan Niedermann's avatar Stefan Niedermann Committed by Niedermann IT-Dienstleistungen
Browse files

#1085 Open app when clicking on the list widget header

parent 9c3023b7
Loading
Loading
Loading
Loading
+3 −9
Original line number Diff line number Diff line
@@ -19,10 +19,6 @@ import it.niedermann.owncloud.notes.persistence.NotesDatabase;
public class NoteListWidget extends AppWidgetProvider {
    private static final String TAG = NoteListWidget.class.getSimpleName();

    public static final int PENDING_INTENT_NEW_NOTE_RQ = 0;
    public static final int PENDING_INTENT_EDIT_NOTE_RQ = 1;
    public static final int PENDING_INTENT_OPEN_APP_RQ = 2;

    static void updateAppWidget(Context context, AppWidgetManager awm, int[] appWidgetIds) {
        final NotesDatabase db = NotesDatabase.getInstance(context);

@@ -32,19 +28,17 @@ public class NoteListWidget extends AppWidgetProvider {
            try {
                final NoteListsWidgetData data = db.getNoteListWidgetData(appWidgetId);

                Intent serviceIntent = new Intent(context, NoteListWidgetService.class);
                final Intent serviceIntent = new Intent(context, NoteListWidgetService.class);
                serviceIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
                serviceIntent.setData(Uri.parse(serviceIntent.toUri(Intent.URI_INTENT_SCHEME)));

                PendingIntent templatePI = PendingIntent.getActivity(context, PENDING_INTENT_EDIT_NOTE_RQ,
                        new Intent(context, EditNoteActivity.class),
                        PendingIntent.FLAG_UPDATE_CURRENT);
                final PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, new Intent(), PendingIntent.FLAG_UPDATE_CURRENT | Intent.FILL_IN_COMPONENT);

                Log.v(TAG, "-- data - " + data);

                views = new RemoteViews(context.getPackageName(), R.layout.widget_note_list);
                views.setPendingIntentTemplate(R.id.note_list_widget_lv, templatePI);
                views.setRemoteAdapter(R.id.note_list_widget_lv, serviceIntent);
                views.setPendingIntentTemplate(R.id.note_list_widget_lv, pendingIntent);
                views.setEmptyView(R.id.note_list_widget_lv, R.id.widget_note_list_placeholder_tv);

                awm.notifyAppWidgetViewDataChanged(appWidgetId, R.id.note_list_widget_lv);
+7 −22
Original line number Diff line number Diff line
package it.niedermann.owncloud.notes.widget.notelist;

import android.app.PendingIntent;
import android.appwidget.AppWidgetManager;
import android.content.ComponentName;
import android.content.Context;
@@ -11,16 +10,13 @@ import android.util.Log;
import android.widget.RemoteViews;
import android.widget.RemoteViewsService;

import androidx.annotation.ColorInt;
import androidx.annotation.NonNull;
import androidx.core.content.ContextCompat;

import java.util.ArrayList;
import java.util.List;

import it.niedermann.android.util.ColorUtil;
import it.niedermann.owncloud.notes.R;
import it.niedermann.owncloud.notes.branding.BrandingUtil;
import it.niedermann.owncloud.notes.edit.EditNoteActivity;
import it.niedermann.owncloud.notes.main.MainActivity;
import it.niedermann.owncloud.notes.persistence.NotesDatabase;
@@ -100,20 +96,8 @@ public class NoteListWidgetFactory implements RemoteViewsService.RemoteViewsFact

        if (position == 0) {
            final LocalAccount localAccount = db.getAccount(data.getAccountId());
            final Intent createIntent = new Intent();

            // Launch application when user taps the header icon or app title
            final Intent openIntent = new Intent(Intent.ACTION_MAIN);
            openIntent.setComponent(new ComponentName(context.getPackageName(),
                    MainActivity.class.getName()));

            // Open the main app if the user taps the widget header
            PendingIntent openAppI = PendingIntent.getActivity(context, 2,
                    openIntent,
                    PendingIntent.FLAG_UPDATE_CURRENT);



            final Intent openIntent = new Intent(Intent.ACTION_MAIN).setComponent(new ComponentName(context.getPackageName(), MainActivity.class.getName()));
            final Intent createIntent = new Intent(context, EditNoteActivity.class);
            final Bundle extras = new Bundle();

            String category = null;
@@ -129,8 +113,9 @@ public class NoteListWidgetFactory implements RemoteViewsService.RemoteViewsFact
            createIntent.setData(Uri.parse(createIntent.toUri(Intent.URI_INTENT_SCHEME)));

            note_content = new RemoteViews(context.getPackageName(), R.layout.widget_entry_add);
            note_content.setOnClickFillInIntent(R.id.widget_entry_content_tv, openIntent);
            note_content.setOnClickFillInIntent(R.id.widget_entry_fav_icon, createIntent);
            note_content.setTextViewText(R.id.widget_entry_content_tv, getAddButtonText(context, data.getMode(), category));
            note_content.setTextViewText(R.id.widget_entry_content_tv, getCategoryTitle(context, data.getMode(), category));
            note_content.setImageViewResource(R.id.widget_entry_fav_icon, R.drawable.ic_add_blue_24dp);
            note_content.setInt(R.id.widget_entry_fav_icon, "setColorFilter", NotesColorUtil.contrastRatioIsSufficient(ContextCompat.getColor(context, R.color.widget_background), localAccount.getColor())
                    ? localAccount.getColor()
@@ -142,8 +127,8 @@ public class NoteListWidgetFactory implements RemoteViewsService.RemoteViewsFact
                return null;
            }

            DBNote note = dbNotes.get(position);
            final Intent fillInIntent = new Intent();
            final DBNote note = dbNotes.get(position);
            final Intent fillInIntent = new Intent(context, EditNoteActivity.class);
            final Bundle extras = new Bundle();
            extras.putLong(EditNoteActivity.PARAM_NOTE_ID, note.getId());
            extras.putLong(EditNoteActivity.PARAM_ACCOUNT_ID, note.getAccountId());
@@ -164,7 +149,7 @@ public class NoteListWidgetFactory implements RemoteViewsService.RemoteViewsFact
    }

    @NonNull
    private static String getAddButtonText(@NonNull Context context, int displayMode, String category) {
    private static String getCategoryTitle(@NonNull Context context, int displayMode, String category) {
        switch (displayMode) {
            case MODE_DISPLAY_STARRED:
                return context.getString(R.string.label_favorites);
+5 −2
Original line number Diff line number Diff line
@@ -6,7 +6,10 @@
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:padding="@dimen/spacer_1x">
    android:paddingTop="@dimen/spacer_1x"
    android:paddingStart="@null"
    android:paddingEnd="@dimen/spacer_1hx"
    android:paddingBottom="@dimen/spacer_1x">

    <ImageView
        android:id="@+id/widget_entry_fav_icon"
@@ -22,7 +25,7 @@
    <TextView
        android:id="@+id/widget_entry_content_tv"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:layout_weight="1"
        android:ellipsize="end"
+7 −6
Original line number Diff line number Diff line
@@ -14,15 +14,15 @@
        android:layout_gravity="center_vertical"
        android:layout_weight="1"
        android:ellipsize="middle"
        android:paddingStart="38dp"
        android:paddingTop="@dimen/spacer_1x"
        android:paddingStart="30dp"
        android:paddingTop="@null"
        android:paddingEnd="@dimen/widget_note_list_outer_padding"
        android:paddingBottom="@dimen/spacer_1x"
        android:singleLine="true"
        android:textColor="@color/widget_foreground"
        android:textSize="14sp"
        android:textSize="16sp"
        android:textStyle="bold"
        tools:text="@string/widget_note_list_add" />
        tools:text="@string/app_name" />


    <ImageView
@@ -32,7 +32,8 @@
        android:layout_gravity="center_vertical"
        android:contentDescription="@string/widget_entry_fav_contentDescription"
        android:foregroundGravity="center_vertical"
        android:paddingStart="@dimen/widget_note_list_inner_padding"
        android:paddingEnd="12dp"
        android:paddingStart="@dimen/spacer_1x"
        android:paddingEnd="@dimen/spacer_1x"
        android:paddingBottom="@dimen/spacer_1hx"
        app:srcCompat="@drawable/ic_add_blue_24dp" />
</LinearLayout>
+5 −1
Original line number Diff line number Diff line
@@ -4,7 +4,11 @@
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/widget_background"
    android:orientation="vertical">
    android:orientation="vertical"
    android:paddingStart="@dimen/spacer_1x"
    android:paddingTop="@dimen/spacer_1x"
    android:paddingEnd="@dimen/spacer_1hx"
    android:paddingBottom="@dimen/spacer_1x">

    <ListView
        android:id="@+id/note_list_widget_lv"
Loading