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

Commit 955177d1 authored by Mathieu Schopfer's avatar Mathieu Schopfer Committed by Jochen Sprickerhof
Browse files

Strike through title of canceled events in all views (#278)

parent b086b592
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -2800,6 +2800,13 @@ public class DayView extends View implements View.OnCreateContextMenuListener,
                    break;
            }

            if (event.status == Events.STATUS_CANCELED) {
                // Strike event title if its status is `canceled`
                paint.setStrikeThruText(true);
            } else {
                paint.setStrikeThruText(false);
            }

            // Leave a one pixel boundary on the left and right of the rectangle for the event
            layout = new StaticLayout(bob, 0, bob.length(), new TextPaint(paint), r.width(),
                    Alignment.ALIGN_NORMAL, 1.0f, 0.0f, true, null, r.width());
+28 −19
Original line number Diff line number Diff line
@@ -39,6 +39,7 @@ import android.content.pm.PackageManager.NameNotFoundException;
import android.content.res.Resources;
import android.database.Cursor;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.net.Uri;
@@ -228,16 +229,17 @@ public class EventInfoFragment extends DialogFragment implements OnCheckedChange
        Calendars.CALENDAR_ACCESS_LEVEL, // 10
        Events.CALENDAR_COLOR,       // 11
        Events.EVENT_COLOR,          // 12
        Events.HAS_ATTENDEE_DATA,    // 13
        Events.ORGANIZER,            // 14
        Events.HAS_ALARM,            // 15
        Calendars.MAX_REMINDERS,     // 16
        Calendars.ALLOWED_REMINDERS, // 17
        Events.CUSTOM_APP_PACKAGE,   // 18
        Events.CUSTOM_APP_URI,       // 19
        Events.DTEND,                // 20
        Events.DURATION,             // 21
        Events.ORIGINAL_SYNC_ID      // 22 do not remove; used in DeleteEventHelper
        Events.STATUS,               // 13
        Events.HAS_ATTENDEE_DATA,    // 14
        Events.ORGANIZER,            // 15
        Events.HAS_ALARM,            // 16
        Calendars.MAX_REMINDERS,     // 17
        Calendars.ALLOWED_REMINDERS, // 18
        Events.CUSTOM_APP_PACKAGE,   // 19
        Events.CUSTOM_APP_URI,       // 20
        Events.DTEND,                // 21
        Events.DURATION,             // 22
        Events.ORIGINAL_SYNC_ID      // 23 do not remove; used in DeleteEventHelper
    };
    private static final int EVENT_INDEX_ID = 0;
    private static final int EVENT_INDEX_TITLE = 1;
@@ -252,15 +254,16 @@ public class EventInfoFragment extends DialogFragment implements OnCheckedChange
    private static final int EVENT_INDEX_ACCESS_LEVEL = 10;
    private static final int EVENT_INDEX_CALENDAR_COLOR = 11;
    private static final int EVENT_INDEX_EVENT_COLOR = 12;
    private static final int EVENT_INDEX_HAS_ATTENDEE_DATA = 13;
    private static final int EVENT_INDEX_ORGANIZER = 14;
    private static final int EVENT_INDEX_HAS_ALARM = 15;
    private static final int EVENT_INDEX_MAX_REMINDERS = 16;
    private static final int EVENT_INDEX_ALLOWED_REMINDERS = 17;
    private static final int EVENT_INDEX_CUSTOM_APP_PACKAGE = 18;
    private static final int EVENT_INDEX_CUSTOM_APP_URI = 19;
    private static final int EVENT_INDEX_DTEND = 20;
    private static final int EVENT_INDEX_DURATION = 21;
    private static final int EVENT_INDEX_STATUS = 13;
    private static final int EVENT_INDEX_HAS_ATTENDEE_DATA = 14;
    private static final int EVENT_INDEX_ORGANIZER = 15;
    private static final int EVENT_INDEX_HAS_ALARM = 16;
    private static final int EVENT_INDEX_MAX_REMINDERS = 17;
    private static final int EVENT_INDEX_ALLOWED_REMINDERS = 18;
    private static final int EVENT_INDEX_CUSTOM_APP_PACKAGE = 19;
    private static final int EVENT_INDEX_CUSTOM_APP_URI = 20;
    private static final int EVENT_INDEX_DTEND = 21;
    private static final int EVENT_INDEX_DURATION = 22;
    private static final String[] ATTENDEES_PROJECTION = new String[] {
        Attendees._ID,                      // 0
        Attendees.ATTENDEE_NAME,            // 1
@@ -1475,6 +1478,12 @@ public class EventInfoFragment extends DialogFragment implements OnCheckedChange
            setTextCommon(view, R.id.title, eventName);
        }

        Integer status = mEventCursor.getInt(EVENT_INDEX_STATUS);
        if (status == Events.STATUS_CANCELED) {
            TextView textView = (TextView) view.findViewById(R.id.title);
            textView.setPaintFlags(textView.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
        }

        // When
        // Set the date and repeats (if any)
        String localTimezone = Utils.getTimeZone(mActivity, mTZUpdater);
+7 −0
Original line number Diff line number Diff line
@@ -19,6 +19,8 @@ package com.android.calendar.agenda;
import android.content.Context;
import android.content.res.Resources;
import android.database.Cursor;
import android.graphics.Paint;
import android.provider.CalendarContract.Events;
import android.provider.CalendarContract.Attendees;
import android.text.TextUtils;
import android.text.format.DateFormat;
@@ -151,6 +153,11 @@ public class AgendaAdapter extends ResourceCursorAdapter {
            }
        }

        int status = cursor.getInt(AgendaWindowAdapter.INDEX_STATUS);
        if (status == Events.STATUS_CANCELED) {
            holder.title.setPaintFlags(holder.title.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
        }

        TextView title = holder.title;
        TextView when = holder.when;
        TextView where = holder.where;
+12 −10
Original line number Diff line number Diff line
@@ -89,11 +89,12 @@ public class AgendaWindowAdapter extends BaseAdapter
    public static final int INDEX_EVENT_ID = 9;
    public static final int INDEX_START_DAY = 10;
    public static final int INDEX_END_DAY = 11;
    public static final int INDEX_SELF_ATTENDEE_STATUS = 12;
    public static final int INDEX_ORGANIZER = 13;
    public static final int INDEX_OWNER_ACCOUNT = 14;
    public static final int INDEX_CAN_ORGANIZER_RESPOND= 15;
    public static final int INDEX_TIME_ZONE = 16;
    public static final int INDEX_STATUS = 12;
    public static final int INDEX_SELF_ATTENDEE_STATUS = 13;
    public static final int INDEX_ORGANIZER = 14;
    public static final int INDEX_OWNER_ACCOUNT = 15;
    public static final int INDEX_CAN_ORGANIZER_RESPOND= 16;
    public static final int INDEX_TIME_ZONE = 17;
    static final boolean BASICLOG = false;
    static final boolean DEBUGLOG = false;
    private static final String TAG = "AgendaWindowAdapter";
@@ -114,11 +115,12 @@ public class AgendaWindowAdapter extends BaseAdapter
            Instances.EVENT_ID, // 9
            Instances.START_DAY, // 10 Julian start day
            Instances.END_DAY, // 11 Julian end day
            Instances.SELF_ATTENDEE_STATUS, // 12
            Instances.ORGANIZER, // 13
            Instances.OWNER_ACCOUNT, // 14
            Instances.CAN_ORGANIZER_RESPOND, // 15
            Instances.EVENT_TIMEZONE, // 16
            Instances.STATUS, // 12
            Instances.SELF_ATTENDEE_STATUS, // 13
            Instances.ORGANIZER, // 14
            Instances.OWNER_ACCOUNT, // 15
            Instances.CAN_ORGANIZER_RESPOND, // 16
            Instances.EVENT_TIMEZONE, // 17
    };
    // Listview may have a bug where the index/position is not consistent when there's a header.
    // position == positionInListView - OFF_BY_ONE_BUG
+26 −5
Original line number Diff line number Diff line
@@ -37,6 +37,7 @@ import android.graphics.Paint.Style;
import android.graphics.Typeface;
import android.graphics.drawable.Drawable;
import android.provider.CalendarContract.Attendees;
import android.provider.CalendarContract.Events;
import android.text.DynamicLayout;
import android.text.Layout;
import android.text.TextPaint;
@@ -1500,6 +1501,10 @@ public class MonthWeekEventsView extends SimpleWeekView {
            mEvent = event;
        }

        protected boolean isCanceled() {
            return mEvent.status == Events.STATUS_CANCELED;
        }

        protected boolean isDeclined() {
            return mEvent.selfAttendeeStatus == Attendees.ATTENDEE_STATUS_DECLINED;
        }
@@ -1573,19 +1578,35 @@ public class MonthWeekEventsView extends SimpleWeekView {
        }

        protected Paint getTextPaint() {

            TextPaint paint;

            if (!isAttendeeStatusInvited() && mEvent.drawAsAllday()){
                // Text color needs to contrast with solid background.
                return mSolidBackgroundEventPaint;
                paint = mSolidBackgroundEventPaint;
            } else if (isDeclined()) {
                // Use "declined event" color.
                return mDeclinedEventPaint;
                paint = mDeclinedEventPaint;
            } else if (mEvent.drawAsAllday()) {
                // Text inside frame is same color as frame.
                mFramedEventPaint.setColor(getRectangleColor());
                return mFramedEventPaint;
            }
                paint = mFramedEventPaint;
            } else {
                // Use generic event text color.
            return mEventPaint;
                paint = mEventPaint;
            }

            if (isCanceled()) {
                // Strike event title if its status is `canceled`
                // (copy current Paint to conserve other formatting)
                TextPaint canceledPaint;
                canceledPaint = new TextPaint();
                canceledPaint.set(paint);
                canceledPaint.setStrikeThruText(true);
                paint = canceledPaint;
            }

            return paint;
        }

        protected void drawText(Canvas canvas, ViewDetailsPreferences.Preferences preferences, int day) {
Loading