mirror of https://github.com/tasks/tasks
Remove CalendarReminderActivity
parent
4c61353411
commit
2bfc46f32b
@ -1,99 +0,0 @@
|
||||
package com.todoroo.astrid.gcal;
|
||||
|
||||
import static com.google.common.collect.Iterables.any;
|
||||
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
import com.todoroo.andlib.utility.DateUtilities;
|
||||
import dagger.hilt.android.AndroidEntryPoint;
|
||||
import java.util.List;
|
||||
import javax.inject.Inject;
|
||||
import org.tasks.BuildConfig;
|
||||
import org.tasks.R;
|
||||
import org.tasks.calendars.AndroidCalendarEvent;
|
||||
import org.tasks.calendars.AndroidCalendarEventAttendee;
|
||||
import org.tasks.calendars.CalendarEventProvider;
|
||||
import org.tasks.gtasks.GoogleAccountManager;
|
||||
import org.tasks.preferences.Preferences;
|
||||
import org.tasks.scheduling.CalendarNotificationIntentService;
|
||||
import timber.log.Timber;
|
||||
|
||||
@AndroidEntryPoint
|
||||
public class CalendarAlarmReceiver extends BroadcastReceiver {
|
||||
|
||||
public static final int REQUEST_CODE_CAL_REMINDER = 100;
|
||||
public static final String BROADCAST_CALENDAR_REMINDER =
|
||||
BuildConfig.APPLICATION_ID + ".CALENDAR_EVENT";
|
||||
|
||||
@Inject Preferences preferences;
|
||||
@Inject CalendarEventProvider calendarEventProvider;
|
||||
@Inject GoogleAccountManager accountManager;
|
||||
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
if (!preferences.getBoolean(R.string.p_calendar_reminders, true)) {
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
Uri data = intent.getData();
|
||||
if (data == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
String uriString = data.toString();
|
||||
int pathIndex = uriString.indexOf("://");
|
||||
if (pathIndex > 0) {
|
||||
pathIndex += 3;
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
long eventId = Long.parseLong(uriString.substring(pathIndex));
|
||||
if (eventId > 0) {
|
||||
boolean fromPostpone =
|
||||
CalendarNotificationIntentService.URI_PREFIX_POSTPONE.equals(data.getScheme());
|
||||
showCalReminder(context, eventId, fromPostpone);
|
||||
}
|
||||
} catch (IllegalArgumentException e) {
|
||||
// Some cursor read failed, or badly formed uri
|
||||
Timber.e(e);
|
||||
}
|
||||
}
|
||||
|
||||
private void showCalReminder(Context context, final long eventId, final boolean fromPostpone) {
|
||||
final AndroidCalendarEvent event = calendarEventProvider.getEvent(eventId);
|
||||
if (event == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
boolean shouldShowReminder;
|
||||
if (fromPostpone) {
|
||||
long timeAfter = DateUtilities.now() - event.getEnd();
|
||||
shouldShowReminder = (timeAfter > DateUtilities.ONE_MINUTE * 2);
|
||||
} else {
|
||||
long timeUntil = event.getStart() - DateUtilities.now();
|
||||
shouldShowReminder = (timeUntil > 0 && timeUntil < DateUtilities.ONE_MINUTE * 20);
|
||||
}
|
||||
|
||||
if (shouldShowReminder && isMeeting(event)) {
|
||||
Intent intent = new Intent(context, CalendarReminderActivity.class);
|
||||
intent.putExtra(CalendarReminderActivity.TOKEN_EVENT_ID, eventId);
|
||||
intent.putExtra(CalendarReminderActivity.TOKEN_EVENT_NAME, event.getTitle());
|
||||
intent.putExtra(CalendarReminderActivity.TOKEN_EVENT_END_TIME, event.getEnd());
|
||||
intent.putExtra(CalendarReminderActivity.TOKEN_FROM_POSTPONE, fromPostpone);
|
||||
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
|
||||
context.startActivity(intent);
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isMeeting(AndroidCalendarEvent event) {
|
||||
List<AndroidCalendarEventAttendee> attendees = event.getAttendees();
|
||||
if (attendees.size() < 2) {
|
||||
return false;
|
||||
}
|
||||
final List<String> myAccounts = accountManager.getAccounts();
|
||||
return any(attendees, attendee -> myAccounts.contains(attendee.getEmail()));
|
||||
}
|
||||
}
|
||||
@ -1,172 +0,0 @@
|
||||
package com.todoroo.astrid.gcal;
|
||||
|
||||
import android.app.PendingIntent;
|
||||
import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.view.View.OnClickListener;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.todoroo.andlib.utility.DateUtilities;
|
||||
import com.todoroo.astrid.activity.MainActivity;
|
||||
|
||||
import org.tasks.R;
|
||||
import org.tasks.dialogs.DialogBuilder;
|
||||
import org.tasks.injection.ThemedInjectingAppCompatActivity;
|
||||
import org.tasks.preferences.MainPreferences;
|
||||
import org.tasks.preferences.Preferences;
|
||||
import org.tasks.scheduling.AlarmManager;
|
||||
import org.tasks.scheduling.CalendarNotificationIntentService;
|
||||
import org.tasks.themes.ThemeAccent;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import dagger.hilt.android.AndroidEntryPoint;
|
||||
|
||||
@AndroidEntryPoint
|
||||
public class CalendarReminderActivity extends ThemedInjectingAppCompatActivity {
|
||||
|
||||
public static final String TOKEN_EVENT_ID = "eventId";
|
||||
public static final String TOKEN_EVENT_NAME = "eventName";
|
||||
public static final String TOKEN_EVENT_END_TIME = "eventEndTime";
|
||||
|
||||
public static final String TOKEN_FROM_POSTPONE = "fromPostpone";
|
||||
|
||||
private static final String PREF_IGNORE_PRESSES = "calEventsIgnored";
|
||||
|
||||
// Prompt user to ignore all missed calls after this many ignore presses
|
||||
private static final int IGNORE_PROMPT_COUNT = 3;
|
||||
private final OnClickListener dismissListener = v -> finish();
|
||||
@Inject Preferences preferences;
|
||||
@Inject DialogBuilder dialogBuilder;
|
||||
private final OnClickListener ignoreListener =
|
||||
new OnClickListener() {
|
||||
@Override
|
||||
public void onClick(final View v) {
|
||||
// Check for number of ignore presses
|
||||
int ignorePresses = preferences.getInt(PREF_IGNORE_PRESSES, 0);
|
||||
ignorePresses++;
|
||||
if (ignorePresses == IGNORE_PROMPT_COUNT) {
|
||||
dialogBuilder
|
||||
.newDialog()
|
||||
.setMessage(R.string.CRA_ignore_body)
|
||||
.setPositiveButton(
|
||||
R.string.CRA_ignore_all,
|
||||
(dialog, which) -> {
|
||||
preferences.setBoolean(R.string.p_calendar_reminders, false);
|
||||
dismissListener.onClick(v);
|
||||
})
|
||||
.setNegativeButton(
|
||||
R.string.CRA_ignore_this, (dialog, which) -> dismissListener.onClick(v))
|
||||
.show();
|
||||
} else {
|
||||
dismissListener.onClick(v);
|
||||
}
|
||||
preferences.setInt(PREF_IGNORE_PRESSES, ignorePresses);
|
||||
}
|
||||
};
|
||||
@Inject AlarmManager alarmManager;
|
||||
@Inject ThemeAccent themeAccent;
|
||||
private String eventName;
|
||||
private long endTime;
|
||||
private long eventId;
|
||||
private boolean fromPostpone;
|
||||
private TextView ignoreButton;
|
||||
private TextView createListButton;
|
||||
private TextView postponeButton;
|
||||
private View dismissButton;
|
||||
private View ignoreSettingsButton;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
setContentView(R.layout.calendar_reminder_activity);
|
||||
|
||||
Intent intent = getIntent();
|
||||
fromPostpone = intent.getBooleanExtra(TOKEN_FROM_POSTPONE, false);
|
||||
eventId = intent.getLongExtra(TOKEN_EVENT_ID, -1);
|
||||
eventName = intent.getStringExtra(TOKEN_EVENT_NAME);
|
||||
endTime =
|
||||
intent.getLongExtra(TOKEN_EVENT_END_TIME, DateUtilities.now() + DateUtilities.ONE_HOUR);
|
||||
|
||||
createListButton = findViewById(R.id.create_list);
|
||||
postponeButton = findViewById(R.id.postpone);
|
||||
ignoreButton = findViewById(R.id.ignore);
|
||||
ignoreSettingsButton = findViewById(R.id.ignore_settings);
|
||||
dismissButton = findViewById(R.id.dismiss);
|
||||
|
||||
setupUi();
|
||||
|
||||
addListeners();
|
||||
}
|
||||
|
||||
private void setupUi() {
|
||||
((TextView) findViewById(R.id.reminder_title)).setText(getString(R.string.CRA_title));
|
||||
|
||||
TextView dialogView = findViewById(R.id.reminder_message);
|
||||
String speechText;
|
||||
if (fromPostpone) {
|
||||
speechText = getString(R.string.CRA_speech_bubble_end, eventName);
|
||||
} else {
|
||||
speechText = getString(R.string.CRA_speech_bubble_start, eventName);
|
||||
}
|
||||
|
||||
dialogView.setText(speechText);
|
||||
|
||||
createListButton.setBackgroundColor(themeAccent.getAccentColor());
|
||||
|
||||
if (fromPostpone) {
|
||||
postponeButton.setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
|
||||
private void addListeners() {
|
||||
ignoreButton.setOnClickListener(ignoreListener);
|
||||
dismissButton.setOnClickListener(dismissListener);
|
||||
|
||||
ignoreSettingsButton.setOnClickListener(
|
||||
v -> {
|
||||
Intent editPreferences =
|
||||
new Intent(CalendarReminderActivity.this, MainPreferences.class);
|
||||
startActivity(editPreferences);
|
||||
dismissListener.onClick(v);
|
||||
});
|
||||
|
||||
if (!fromPostpone) {
|
||||
postponeButton.setOnClickListener(v -> postpone());
|
||||
}
|
||||
|
||||
createListButton.setOnClickListener(
|
||||
v -> createNewList(getString(R.string.CRA_default_list_name, eventName)));
|
||||
}
|
||||
|
||||
private void createNewList(final String name) {
|
||||
Intent intent = new Intent(CalendarReminderActivity.this, MainActivity.class);
|
||||
intent.putExtra(MainActivity.TOKEN_CREATE_NEW_LIST_NAME, name);
|
||||
startActivity(intent);
|
||||
dismissButton.performClick(); // finish with animation
|
||||
}
|
||||
|
||||
private void postpone() {
|
||||
Intent eventAlarm = new Intent(this, CalendarAlarmReceiver.class);
|
||||
eventAlarm.setAction(CalendarAlarmReceiver.BROADCAST_CALENDAR_REMINDER);
|
||||
eventAlarm.setData(
|
||||
Uri.parse(CalendarNotificationIntentService.URI_PREFIX_POSTPONE + "://" + eventId));
|
||||
|
||||
PendingIntent pendingIntent =
|
||||
PendingIntent.getBroadcast(
|
||||
this,
|
||||
CalendarAlarmReceiver.REQUEST_CODE_CAL_REMINDER,
|
||||
eventAlarm,
|
||||
PendingIntent.FLAG_IMMUTABLE | PendingIntent.FLAG_UPDATE_CURRENT
|
||||
);
|
||||
|
||||
alarmManager.cancel(pendingIntent);
|
||||
|
||||
long alarmTime = endTime + DateUtilities.ONE_MINUTE * 5;
|
||||
alarmManager.wakeup(alarmTime, pendingIntent);
|
||||
dismissButton.performClick();
|
||||
}
|
||||
}
|
||||
@ -1,28 +0,0 @@
|
||||
package org.tasks.calendars;
|
||||
|
||||
public class AndroidCalendarEventAttendee {
|
||||
|
||||
private final String name;
|
||||
private final String email;
|
||||
|
||||
public AndroidCalendarEventAttendee(String name, String email) {
|
||||
this.name = name;
|
||||
this.email = email;
|
||||
}
|
||||
|
||||
public String getEmail() {
|
||||
return email;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "AndroidCalendarEventAttendee{"
|
||||
+ "name='"
|
||||
+ name
|
||||
+ '\''
|
||||
+ ", email='"
|
||||
+ email
|
||||
+ '\''
|
||||
+ '}';
|
||||
}
|
||||
}
|
||||
@ -1,58 +0,0 @@
|
||||
package org.tasks.calendars;
|
||||
|
||||
import android.content.ContentResolver;
|
||||
import android.content.Context;
|
||||
import android.database.Cursor;
|
||||
import android.provider.CalendarContract;
|
||||
import dagger.hilt.android.qualifiers.ApplicationContext;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import javax.inject.Inject;
|
||||
import org.tasks.preferences.PermissionChecker;
|
||||
import timber.log.Timber;
|
||||
|
||||
class CalendarEventAttendeeProvider {
|
||||
|
||||
private static final String[] COLUMNS = {
|
||||
CalendarContract.Attendees.ATTENDEE_NAME, CalendarContract.Attendees.ATTENDEE_EMAIL,
|
||||
};
|
||||
|
||||
private final PermissionChecker permissionChecker;
|
||||
private final ContentResolver contentResolver;
|
||||
|
||||
@Inject
|
||||
public CalendarEventAttendeeProvider(
|
||||
@ApplicationContext Context context, PermissionChecker permissionChecker) {
|
||||
this.permissionChecker = permissionChecker;
|
||||
contentResolver = context.getContentResolver();
|
||||
}
|
||||
|
||||
public List<AndroidCalendarEventAttendee> getAttendees(long id) {
|
||||
if (!permissionChecker.canAccessCalendars()) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
List<AndroidCalendarEventAttendee> attendees = new ArrayList<>();
|
||||
try (Cursor cursor =
|
||||
contentResolver.query(
|
||||
CalendarContract.Attendees.CONTENT_URI,
|
||||
COLUMNS,
|
||||
CalendarContract.Attendees.EVENT_ID + " = ? ",
|
||||
new String[] {Long.toString(id)},
|
||||
null)) {
|
||||
if (cursor != null && cursor.getCount() > 0) {
|
||||
int emailIndex = cursor.getColumnIndexOrThrow(CalendarContract.Attendees.ATTENDEE_EMAIL);
|
||||
int nameIndex = cursor.getColumnIndexOrThrow(CalendarContract.Attendees.ATTENDEE_NAME);
|
||||
while (cursor.moveToNext()) {
|
||||
attendees.add(
|
||||
new AndroidCalendarEventAttendee(
|
||||
cursor.getString(nameIndex), cursor.getString(emailIndex)));
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
Timber.e(e);
|
||||
}
|
||||
return attendees;
|
||||
}
|
||||
}
|
||||
@ -1,69 +0,0 @@
|
||||
package org.tasks.scheduling
|
||||
|
||||
import android.app.PendingIntent
|
||||
import android.content.BroadcastReceiver
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.net.Uri
|
||||
import com.todoroo.andlib.utility.DateUtilities
|
||||
import com.todoroo.astrid.gcal.CalendarAlarmReceiver
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
import dagger.hilt.android.qualifiers.ApplicationContext
|
||||
import org.tasks.R
|
||||
import org.tasks.calendars.CalendarEventProvider
|
||||
import org.tasks.preferences.Preferences
|
||||
import timber.log.Timber
|
||||
import java.util.concurrent.TimeUnit
|
||||
import javax.inject.Inject
|
||||
|
||||
@AndroidEntryPoint
|
||||
class CalendarNotificationIntentService : RecurringIntervalIntentService() {
|
||||
@Inject lateinit var preferences: Preferences
|
||||
@Inject lateinit var calendarEventProvider: CalendarEventProvider
|
||||
@Inject @ApplicationContext lateinit var context: Context
|
||||
|
||||
override val broadcastClass = Broadcast::class.java
|
||||
|
||||
override suspend fun run() {
|
||||
val now = DateUtilities.now()
|
||||
val end = now + TimeUnit.DAYS.toMillis(1)
|
||||
for (event in calendarEventProvider.getEventsBetween(now, end)) {
|
||||
val eventAlarm = Intent(context, CalendarAlarmReceiver::class.java)
|
||||
eventAlarm.action = CalendarAlarmReceiver.BROADCAST_CALENDAR_REMINDER
|
||||
eventAlarm.data = Uri.parse(URI_PREFIX + "://" + event.id)
|
||||
val pendingIntent = PendingIntent.getBroadcast(
|
||||
context,
|
||||
CalendarAlarmReceiver.REQUEST_CODE_CAL_REMINDER,
|
||||
eventAlarm,
|
||||
PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT
|
||||
)
|
||||
val reminderTime = event.start - FIFTEEN_MINUTES
|
||||
alarmManager.wakeup(reminderTime, pendingIntent)
|
||||
Timber.d("Scheduled reminder for %s at %s", event, reminderTime)
|
||||
}
|
||||
}
|
||||
|
||||
override fun intervalMillis() =
|
||||
if (preferences.getBoolean(R.string.p_calendar_reminders, false))
|
||||
TimeUnit.HOURS.toMillis(12)
|
||||
else 0
|
||||
|
||||
class Broadcast : BroadcastReceiver() {
|
||||
override fun onReceive(context: Context, intent: Intent) {
|
||||
enqueueWork(context)
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
const val URI_PREFIX_POSTPONE = "cal-postpone"
|
||||
private val FIFTEEN_MINUTES = TimeUnit.MINUTES.toMillis(15)
|
||||
private const val URI_PREFIX = "cal-reminder"
|
||||
fun enqueueWork(context: Context?) {
|
||||
enqueueWork(
|
||||
context!!,
|
||||
CalendarNotificationIntentService::class.java,
|
||||
JOB_ID_CALENDAR_NOTIFICATION,
|
||||
Intent(context, CalendarNotificationIntentService::class.java))
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,137 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
** Copyright (c) 2012 Todoroo Inc
|
||||
**
|
||||
** See the file "LICENSE" for the full license governing this code.
|
||||
-->
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_marginStart="10dip"
|
||||
android:layout_marginEnd="10dip"
|
||||
android:background="@drawable/reminder_dialog_background"
|
||||
android:orientation="vertical">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="5dip"
|
||||
android:layout_marginBottom="15dip"
|
||||
android:layout_marginStart="10dip"
|
||||
android:layout_marginEnd="5dip"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/reminder_title"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:layout_marginTop="1dip"
|
||||
android:text="@string/CRA_title"
|
||||
android:textColor="@android:color/white"
|
||||
android:textSize="24sp"/>
|
||||
<ImageView
|
||||
android:id="@+id/dismiss"
|
||||
android:layout_width="25dip"
|
||||
android:layout_height="25dip"
|
||||
android:scaleType="fitCenter"
|
||||
android:src="@drawable/ic_outline_clear_24px"
|
||||
app:tint="@android:color/white"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<FrameLayout
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content">
|
||||
<LinearLayout
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="10dip"
|
||||
android:layout_marginStart="2dip"
|
||||
android:layout_marginEnd="5dip"
|
||||
android:gravity="bottom"
|
||||
android:orientation="horizontal">
|
||||
<ImageView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="5dip"
|
||||
android:scaleType="fitCenter"
|
||||
android:src="@mipmap/ic_launcher_blue"/>
|
||||
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="5dip"
|
||||
android:layout_marginEnd="5dip"
|
||||
android:background="@drawable/speech_bubble_reminder"
|
||||
android:gravity="center_vertical"
|
||||
android:minHeight="60dip">
|
||||
<TextView
|
||||
android:id="@+id/reminder_message"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center_vertical"
|
||||
android:textColor="#000000"
|
||||
android:textSize="16sp"/>
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
</FrameLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/create_list"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="35dip"
|
||||
android:layout_marginBottom="10dip"
|
||||
android:layout_marginStart="10dip"
|
||||
android:layout_marginEnd="10dip"
|
||||
android:gravity="center"
|
||||
android:text="@string/new_tag"
|
||||
android:textColor="@android:color/white"
|
||||
android:textSize="24sp"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/postpone"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="35dip"
|
||||
android:layout_marginBottom="10dip"
|
||||
android:layout_marginStart="10dip"
|
||||
android:layout_marginEnd="10dip"
|
||||
android:background="#707070"
|
||||
android:gravity="center"
|
||||
android:text="@string/CRA_postpone"
|
||||
android:textColor="@android:color/white"
|
||||
android:textSize="24sp"/>
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="10dip"
|
||||
android:layout_marginStart="10dip"
|
||||
android:layout_marginEnd="10dip">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/ignore"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="35dip"
|
||||
android:background="#707070"
|
||||
android:gravity="center"
|
||||
android:text="@string/CRA_ignore"
|
||||
android:textColor="@android:color/white"
|
||||
android:textSize="24sp"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/ignore_settings"
|
||||
android:layout_width="35dip"
|
||||
android:layout_height="35dip"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:padding="4dip"
|
||||
android:background="@android:color/transparent"
|
||||
android:scaleType="fitCenter"
|
||||
android:src="@drawable/ic_outline_settings_24px"
|
||||
app:tint="@android:color/white"/>
|
||||
</RelativeLayout>
|
||||
|
||||
|
||||
</LinearLayout>
|
||||
@ -1,14 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
** Copyright (c) 2012 Todoroo Inc
|
||||
**
|
||||
** See the file "LICENSE" for the full license governing this code.
|
||||
-->
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:gravity="center"
|
||||
android:orientation="vertical">
|
||||
|
||||
<include layout="@layout/astrid_calendar_reminder_view"/>
|
||||
</LinearLayout>
|
||||
Loading…
Reference in New Issue