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

Unverified Commit 8a78ed0b authored by LuK1337's avatar LuK1337
Browse files

Merge tag 'v1.0.54' of https://github.com/Etar-Group/Etar-Calendar into lineage-23.2

* tag 'v1.0.54' of https://github.com/Etar-Group/Etar-Calendar:
  New version 1.0.54
  Fix timezone bug when processing allday events
  Don't reuse timeObj to avoid incorrect alarm time
  Translated using Weblate (Korean)
  Translated using Weblate (Italian)
  Translated using Weblate (Portuguese (Brazil))
  Translated using Weblate (Romanian)
  Translated using Weblate (Viossa)
  Translated using Weblate (Turkish)
  Translated using Weblate (Viossa)
  Translated using Weblate (Dutch)
  Translated using Weblate (Viossa)
  Added translation using Weblate (Viossa)
  Translated using Weblate (Dutch)
  Translated using Weblate (Czech)
  Update dependencies
  Fix for the border issue with overlapping events
  Sort events by column to ensure correct draw order.
  Add stacked events
  Load events when scrolling in month view
  Fix UTC bug in goto
  Add WRITE_SYNC_SETTINGS permission to prevent calendar duplication on sync toggle
  Bump gradle/actions from 5 to 6

Change-Id: Ib86276964df4cbecfca4822291bf7b76670c1ba6
parents a55ee620 19701ae3
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -24,8 +24,8 @@ android {
	defaultConfig {
		minSdk = 23
		targetSdk = 36
		versionCode = 53
		versionName = "1.0.53"
		versionCode = 54
		versionName = "1.0.54"
		applicationId = "ws.xsoh.etar"
		testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
	}
+1 −0
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@
    <uses-permission android:name="android.permission.WRITE_CALENDAR" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.READ_SYNC_SETTINGS" />
    <uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" />
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE_SYSTEM_EXEMPTED" />
    <uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM" />
+9 −5
Original line number Diff line number Diff line
@@ -1235,7 +1235,7 @@ public class AllInOneActivity extends AbstractCalendarActivity implements EventH
        MaterialPickerOnPositiveButtonClickListener<Long> materialPickerOnPositiveButtonClickListener = new MaterialPickerOnPositiveButtonClickListener<>() {
            @Override
            public void onPositiveButtonClick(Long selection) {
                Calendar calendar = Calendar.getInstance();
                Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
                calendar.setTime(new Date(selection));

                Time selectedTime = new Time(mTimeZone);
@@ -1347,10 +1347,14 @@ public class AllInOneActivity extends AbstractCalendarActivity implements EventH
                if (event.startTime != null && event.endTime != null) {
                    // Event is all day , adjust the goto time to local time
                    if (event.isAllDay()) {
                        Utils.convertAlldayUtcToLocal(
                                event.startTime, event.startTime.toMillis(), mTimeZone);
                        Utils.convertAlldayUtcToLocal(
                                event.endTime, event.endTime.toMillis(), mTimeZone);
                        long start = Utils.convertAlldayUtcToLocal(
                                null, event.startTime.toMillis(), mTimeZone);
                        long end = Utils.convertAlldayUtcToLocal(
                                null, event.endTime.toMillis(), mTimeZone);
                        event.startTime.setTimezone(mTimeZone);
                        event.startTime.set(start);
                        event.endTime.setTimezone(mTimeZone);
                        event.endTime.set(end);
                    }
                    mController.sendEvent(this, EventType.GO_TO, event.startTime, event.endTime,
                            event.selectedTime, event.id, ViewType.AGENDA,
+18 −2
Original line number Diff line number Diff line
@@ -87,6 +87,7 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Comparator;
import java.util.Formatter;
import java.util.Locale;
import java.util.regex.Matcher;
@@ -3133,6 +3134,12 @@ public class DayView extends View implements View.OnCreateContextMenuListener,
        selectionArea.right = selectionArea.left + cellWidth;

        final ArrayList<Event> events = mEvents;

        // Sort events by column, so they are drawn in order of column. This
        // leads to events with the higher column number being drawn last, which
        // ensures proper z-sorting when multiple events overlap.
        events.sort(Comparator.comparingInt(Event::getColumn));

        int numEvents = events.size();
        EventGeometry geometry = mEventGeometry;

@@ -3163,6 +3170,7 @@ public class DayView extends View implements View.OnCreateContextMenuListener,
            if (r.top > viewEndY || r.bottom < mViewStartY) {
                continue;
            }

            StaticLayout layout = getEventLayout(mLayouts, i, event, eventTextPaint, r);
            // TODO: not sure why we are 4 pixels off
            drawEventText(layout, r, canvas, mViewStartY + 4, mViewStartY + mViewHeight
@@ -4762,16 +4770,24 @@ public class DayView extends View implements View.OnCreateContextMenuListener,

        // If there are any events in the selected region, then assign the
        // closest one to mSelectedEvent.
        if (mSelectedEvents.size() > 0) {
        if (!mSelectedEvents.isEmpty()) {
            int len = mSelectedEvents.size();
            Event closestEvent = null;
            float minDist = mViewWidth + mViewHeight; // some large distance
            float maxCol = -99999;
            for (int index = 0; index < len; index++) {
                Event ev = mSelectedEvents.get(index);

                // dist will yield 0.0 for all events overlapping each other.
                // In order to select the correct one we use the topmost event (i.e. the one with
                // the highest col value!

                float dist = geometry.pointToEvent(x, y, ev);
                if (dist < minDist) {
                float col  = ev.getColumn();
                if (dist <= minDist && col > maxCol) {
                    minDist = dist;
                    closestEvent = ev;
                    maxCol = col;
                }
            }
            setSelectedEvent(closestEvent);
+7 −4
Original line number Diff line number Diff line
@@ -24,6 +24,11 @@ public class EventGeometry {

    private float mMinuteHeight;

    // How many pixels is each column set off from the
    // very left of column 0?
    // This is used to enable stacked parallel events.
    private static final float mPerColMargin  = 32;

    private float mHourGap;
    private float mMinEventHeight;

@@ -74,7 +79,6 @@ public class EventGeometry {
        }

        int col = event.getColumn();
        int maxCols = event.getMaxColumns();
        int startHour = startTime / 60;
        int endHour = endTime / 60;

@@ -97,9 +101,8 @@ public class EventGeometry {
            event.bottom = event.top + mMinEventHeight;
        }

        float colWidth = (float) (cellWidth - (maxCols + 1) * mCellMargin) / (float) maxCols;
        event.left = left + col * (colWidth + mCellMargin);
        event.right = event.left + colWidth;
        event.left = left + (col) * mPerColMargin;
        event.right = left + cellWidth - mCellMargin;
        return true;
    }

Loading