Merge pull request #13 from SimpleMobileTools/master

upd
This commit is contained in:
solokot 2018-08-24 23:30:36 +03:00 committed by GitHub
commit 23877cfaeb
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
57 changed files with 621 additions and 175 deletions

View file

@ -1,6 +1,20 @@
Changelog
==========
Version 4.1.3 *(2018-08-06)*
----------------------------
* Added a Go To Today button at the monthly widget
* Increase the allowed length of event titles, locations, descriptions
* Couple other stability and UX improvements
Version 4.1.2 *(2018-07-14)*
----------------------------
* Made reminder sounds more reliable on Android Oreo
* Properly fetch running events at reboot, notify only if needed
* Couple UX and stability improvements
Version 4.1.1 *(2018-07-04)*
----------------------------

View file

@ -10,8 +10,8 @@ android {
applicationId "com.simplemobiletools.calendar"
minSdkVersion 16
targetSdkVersion 27
versionCode 125
versionName "4.1.1"
versionCode 127
versionName "4.1.3"
multiDexEnabled true
setProperty("archivesBaseName", "calendar")
}
@ -46,7 +46,7 @@ ext {
}
dependencies {
implementation 'com.simplemobiletools:commons:4.3.28'
implementation 'com.simplemobiletools:commons:4.6.10'
implementation 'joda-time:joda-time:2.9.9'
implementation 'com.facebook.stetho:stetho:1.5.0'
implementation 'com.android.support:multidex:1.0.3'

View file

@ -27,13 +27,7 @@
<activity
android:name=".activities.SplashActivity"
android:launchMode="singleTask"
android:theme="@style/SplashTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
android:theme="@style/SplashTheme"/>
<activity
android:name=".activities.MainActivity"
@ -199,19 +193,6 @@
android:resource="@xml/provider_paths"/>
</provider>
<!-- Do not append ".Orange" to the default alias "name", it would remove the old homescreen launcher of users at upgrade -->
<activity-alias
android:name=".activities.SplashActivity"
android:enabled="true"
android:icon="@mipmap/ic_launcher"
android:roundIcon="@mipmap/ic_launcher"
android:targetActivity=".activities.SplashActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity-alias>
<activity-alias
android:name=".activities.SplashActivity.Red"
android:enabled="false"
@ -394,6 +375,18 @@
</intent-filter>
</activity-alias>
<activity-alias
android:name=".activities.SplashActivity.Orange"
android:enabled="true"
android:icon="@mipmap/ic_launcher"
android:roundIcon="@mipmap/ic_launcher"
android:targetActivity=".activities.SplashActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity-alias>
<activity-alias
android:name=".activities.SplashActivity.Deep_orange"
android:enabled="false"

View file

@ -487,7 +487,7 @@ STATUS:CONFIRMED
RRULE:FREQ=YEARLY;INTERVAL=1
END:VEVENT
BEGIN:VEVENT
SUMMARY:Mariä Himmelfahrt
SUMMARY:Maria Himmelfahrt
UID:948278340
DTSTART;VALUE=DATE:20060815
DTEND;VALUE=DATE:20060816

View file

@ -29,6 +29,17 @@ import java.util.regex.Pattern
class EventActivity : SimpleActivity() {
private val LAT_LON_PATTERN = "^[-+]?([1-8]?\\d(\\.\\d+)?|90(\\.0+)?)([,;])\\s*[-+]?(180(\\.0+)?|((1[0-7]\\d)|([1-9]?\\d))(\\.\\d+)?)\$"
private val START_TS = "START_TS"
private val END_TS = "END_TS"
private val REMINDER_1_MINUTES = "REMINDER_1_MINUTES"
private val REMINDER_2_MINUTES = "REMINDER_2_MINUTES"
private val REMINDER_3_MINUTES = "REMINDER_3_MINUTES"
private val REPEAT_INTERVAL = "REPEAT_INTERVAL"
private val REPEAT_LIMIT = "REPEAT_LIMIT"
private val REPEAT_RULE = "REPEAT_RULE"
private val EVENT_TYPE_ID = "EVENT_TYPE_ID"
private val EVENT_CALENDAR_ID = "EVENT_CALENDAR_ID"
private var mReminder1Minutes = 0
private var mReminder2Minutes = 0
private var mReminder3Minutes = 0
@ -71,7 +82,9 @@ class EventActivity : SimpleActivity() {
if (event != null) {
mEvent = event
mEventOccurrenceTS = intent.getIntExtra(EVENT_OCCURRENCE_TS, 0)
setupEditEvent()
if (savedInstanceState == null) {
setupEditEvent()
}
if (intent.getBooleanExtra(IS_DUPLICATE_INTENT, false)) {
mEvent.id = 0
@ -81,15 +94,17 @@ class EventActivity : SimpleActivity() {
mReminder1Minutes = config.defaultReminderMinutes
mReminder2Minutes = config.defaultReminderMinutes3
mReminder3Minutes = config.defaultReminderMinutes2
setupNewEvent()
if (savedInstanceState == null) {
setupNewEvent()
}
}
checkReminderTexts()
updateRepetitionText()
updateStartTexts()
updateEndTexts()
updateEventType()
updateCalDAVCalendar()
if (savedInstanceState == null) {
updateTexts()
updateEventType()
updateCalDAVCalendar()
}
event_show_on_map.setOnClickListener { showOnMap() }
event_start_date.setOnClickListener { setupStartDate() }
@ -147,11 +162,60 @@ class EventActivity : SimpleActivity() {
return true
}
override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState)
outState.putInt(START_TS, mEventStartDateTime.seconds())
outState.putInt(END_TS, mEventEndDateTime.seconds())
outState.putInt(REMINDER_1_MINUTES, mReminder1Minutes)
outState.putInt(REMINDER_2_MINUTES, mReminder2Minutes)
outState.putInt(REMINDER_3_MINUTES, mReminder3Minutes)
outState.putInt(REPEAT_INTERVAL, mRepeatInterval)
outState.putInt(REPEAT_LIMIT, mRepeatLimit)
outState.putInt(REPEAT_RULE, mRepeatRule)
outState.putInt(EVENT_TYPE_ID, mEventTypeId)
outState.putInt(EVENT_CALENDAR_ID, mEventCalendarId)
}
override fun onRestoreInstanceState(savedInstanceState: Bundle) {
super.onRestoreInstanceState(savedInstanceState)
savedInstanceState.apply {
mEventStartDateTime = Formatter.getDateTimeFromTS(getInt(START_TS))
mEventEndDateTime = Formatter.getDateTimeFromTS(getInt(END_TS))
mReminder1Minutes = getInt(REMINDER_1_MINUTES)
mReminder2Minutes = getInt(REMINDER_2_MINUTES)
mReminder3Minutes = getInt(REMINDER_3_MINUTES)
mRepeatInterval = getInt(REPEAT_INTERVAL)
mRepeatLimit = getInt(REPEAT_LIMIT)
mRepeatRule = getInt(REPEAT_RULE)
mEventTypeId = getInt(EVENT_TYPE_ID)
mEventCalendarId = getInt(EVENT_CALENDAR_ID)
}
checkRepeatTexts(mRepeatInterval)
checkRepeatRule()
updateTexts()
updateEventType()
updateCalDAVCalendar()
}
private fun updateTexts() {
updateRepetitionText()
checkReminderTexts()
updateStartTexts()
updateEndTexts()
}
private fun setupEditEvent() {
val realStart = if (mEventOccurrenceTS == 0) mEvent.startTS else mEventOccurrenceTS
val duration = mEvent.endTS - mEvent.startTS
window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN)
supportActionBar?.title = resources.getString(R.string.edit_event)
updateActionBarTitle(getString(R.string.edit_event))
mEventStartDateTime = Formatter.getDateTimeFromTS(realStart)
mEventEndDateTime = Formatter.getDateTimeFromTS(realStart + duration)
event_title.setText(mEvent.title)
@ -174,7 +238,7 @@ class EventActivity : SimpleActivity() {
private fun setupNewEvent() {
window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE)
supportActionBar?.title = resources.getString(R.string.new_event)
updateActionBarTitle(getString(R.string.new_event))
val isLastCaldavCalendarOK = config.caldavSync && config.getSyncedCalendarIdsAsList().contains(config.lastUsedCaldavCalendarId.toString())
mEventCalendarId = if (isLastCaldavCalendarOK) config.lastUsedCaldavCalendarId else STORED_LOCALLY_ONLY
@ -862,8 +926,9 @@ class EventActivity : SimpleActivity() {
setRepeatRule(Math.pow(2.0, (mEventStartDateTime.dayOfWeek - 1).toDouble()).toInt())
}
} else if (mRepeatInterval.isXMonthlyRepetition() || mRepeatInterval.isXYearlyRepetition()) {
if (mRepeatRule == REPEAT_LAST_DAY && !isLastDayOfTheMonth())
if (mRepeatRule == REPEAT_LAST_DAY && !isLastDayOfTheMonth()) {
mRepeatRule = REPEAT_SAME_DAY
}
checkRepetitionRuleText()
}
}

View file

@ -84,6 +84,14 @@ class MainActivity : SimpleActivity(), RefreshRecyclerViewListener {
requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
}
if (!hasPermission(PERMISSION_WRITE_CALENDAR) || !hasPermission(PERMISSION_READ_CALENDAR)) {
config.caldavSync = false
}
if (config.caldavSync) {
refreshCalDAVCalendars(false)
}
if (!checkViewIntents()) {
return
}
@ -92,13 +100,7 @@ class MainActivity : SimpleActivity(), RefreshRecyclerViewListener {
updateViewPager()
}
if (!hasPermission(PERMISSION_WRITE_CALENDAR) || !hasPermission(PERMISSION_READ_CALENDAR)) {
config.caldavSync = false
}
if (config.caldavSync) {
refreshCalDAVCalendars(false)
}
checkAppOnSDCard()
}
override fun onResume() {
@ -328,8 +330,8 @@ class MainActivity : SimpleActivity(), RefreshRecyclerViewListener {
}
private fun resetActionBarTitle() {
supportActionBar?.title = getString(R.string.app_launcher_name)
supportActionBar?.subtitle = ""
updateActionBarTitle(getString(R.string.app_launcher_name))
updateActionBarSubtitle("")
}
private fun showFilterDialog() {
@ -693,15 +695,17 @@ class MainActivity : SimpleActivity(), RefreshRecyclerViewListener {
}
private fun launchAbout() {
val licenses = LICENSE_JODA or LICENSE_STETHO or LICENSE_MULTISELECT or LICENSE_LEAK_CANARY
val faqItems = arrayListOf(
FAQItem(R.string.faq_1_title_commons, R.string.faq_1_text_commons),
FAQItem(R.string.faq_2_title_commons, R.string.faq_2_text_commons),
FAQItem(R.string.faq_4_title_commons, R.string.faq_4_text_commons),
FAQItem(getString(R.string.faq_1_title), getString(R.string.faq_1_text)),
FAQItem(getString(R.string.faq_2_title), getString(R.string.faq_2_text)))
FAQItem(getString(R.string.faq_2_title), getString(R.string.faq_2_text)),
FAQItem(getString(R.string.faq_3_title), getString(R.string.faq_3_text)))
startAboutActivity(R.string.app_name, LICENSE_JODA or LICENSE_STETHO or LICENSE_MULTISELECT or LICENSE_LEAK_CANARY,
BuildConfig.VERSION_NAME, faqItems)
startAboutActivity(R.string.app_name, licenses, BuildConfig.VERSION_NAME, faqItems, true)
}
private fun searchQueryChanged(text: String) {

View file

@ -44,6 +44,7 @@ class SettingsActivity : SimpleActivity() {
override fun onResume() {
super.onResume()
setupPurchaseThankYou()
setupCustomizeColors()
setupUseEnglish()
setupManageEventTypes()
@ -95,6 +96,13 @@ class SettingsActivity : SimpleActivity() {
}
}
private fun setupPurchaseThankYou() {
settings_purchase_thank_you_holder.beVisibleIf(config.appRunCount > 10 && !isThankYouInstalled())
settings_purchase_thank_you_holder.setOnClickListener {
launchPurchaseThankYouIntent()
}
}
private fun setupCustomizeColors() {
settings_customize_colors_holder.setOnClickListener {
startCustomizationActivity()

View file

@ -199,7 +199,7 @@ class WidgetMonthlyConfigureActivity : SimpleActivity(), MonthlyCalendar {
}
}
override fun updateMonthlyCalendar(context: Context, month: String, days: ArrayList<DayMonthly>, checkedEvents: Boolean) {
override fun updateMonthlyCalendar(context: Context, month: String, days: ArrayList<DayMonthly>, checkedEvents: Boolean, currTargetDate: DateTime) {
runOnUiThread {
mDays = days
top_value.text = month

View file

@ -152,7 +152,9 @@ fun Context.getFilteredEvents(events: List<Event>): ArrayList<Event> {
}
fun Context.notifyRunningEvents() {
dbHelper.getRunningEvents().forEach { notifyEvent(it) }
dbHelper.getRunningEvents().filter { it.getReminders().isNotEmpty() }.forEach {
notifyEvent(it)
}
}
fun Context.notifyEvent(originalEvent: Event) {
@ -204,13 +206,12 @@ fun Context.getNotification(pendingIntent: PendingIntent, event: Event, content:
config.lastSoundUri = soundUri
}
val channelId = "simple_calendar_${config.lastReminderChannel}"
val channelId = "simple_calendar_${config.lastReminderChannel}_${config.reminderAudioStream}"
if (isOreoPlus()) {
val audioAttributes = AudioAttributes.Builder()
.setUsage(AudioAttributes.USAGE_ALARM)
.setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
.setLegacyStreamType(config.reminderAudioStream)
.setFlags(AudioAttributes.FLAG_AUDIBILITY_ENFORCED)
.build()
val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager

View file

@ -106,7 +106,7 @@ class DayFragment : Fragment() {
fun updateCalendar() {
val startTS = Formatter.getDayStartTS(mDayCode)
val endTS = Formatter.getDayEndTS(mDayCode)
context!!.dbHelper.getEvents(startTS, endTS) {
context?.dbHelper?.getEvents(startTS, endTS) {
receivedEvents(it)
}
}

View file

@ -13,6 +13,7 @@ import com.simplemobiletools.calendar.extensions.config
import com.simplemobiletools.calendar.helpers.DAY_CODE
import com.simplemobiletools.calendar.helpers.Formatter
import com.simplemobiletools.calendar.interfaces.NavigationListener
import com.simplemobiletools.commons.extensions.updateActionBarTitle
import com.simplemobiletools.commons.views.MyViewPager
import kotlinx.android.synthetic.main.fragment_days_holder.view.*
import org.joda.time.DateTime
@ -105,7 +106,7 @@ class DayFragmentsHolder : MyFragmentHolder(), NavigationListener {
override fun shouldGoToTodayBeVisible() = currentDayCode != todayDayCode
override fun updateActionBarTitle() {
(activity as MainActivity).supportActionBar?.title = getString(R.string.app_launcher_name)
(activity as MainActivity).updateActionBarTitle(getString(R.string.app_launcher_name))
}
override fun getNewEventDayCode() = currentDayCode

View file

@ -17,10 +17,7 @@ import com.simplemobiletools.calendar.helpers.EVENT_OCCURRENCE_TS
import com.simplemobiletools.calendar.helpers.Formatter
import com.simplemobiletools.calendar.models.Event
import com.simplemobiletools.calendar.models.ListEvent
import com.simplemobiletools.commons.extensions.beGoneIf
import com.simplemobiletools.commons.extensions.beVisibleIf
import com.simplemobiletools.commons.extensions.getAdjustedPrimaryColor
import com.simplemobiletools.commons.extensions.underlineText
import com.simplemobiletools.commons.extensions.*
import com.simplemobiletools.commons.helpers.MONTH_SECONDS
import com.simplemobiletools.commons.interfaces.RefreshRecyclerViewListener
import com.simplemobiletools.commons.views.MyRecyclerView
@ -182,7 +179,7 @@ class EventListFragment : MyFragmentHolder(), RefreshRecyclerViewListener {
override fun shouldGoToTodayBeVisible() = false
override fun updateActionBarTitle() {
(activity as MainActivity).supportActionBar?.title = getString(R.string.app_launcher_name)
(activity as? MainActivity)?.updateActionBarTitle(getString(R.string.app_launcher_name))
}
override fun getNewEventDayCode() = Formatter.getTodayCode(context!!)

View file

@ -89,7 +89,7 @@ class MonthFragment : Fragment(), MonthlyCalendar {
mCalendar?.updateMonthlyCalendar(Formatter.getDateTimeFromCode(mDayCode))
}
override fun updateMonthlyCalendar(context: Context, month: String, days: ArrayList<DayMonthly>, checkedEvents: Boolean) {
override fun updateMonthlyCalendar(context: Context, month: String, days: ArrayList<DayMonthly>, checkedEvents: Boolean, currTargetDate: DateTime) {
val newHash = month.hashCode() + days.hashCode().toLong()
if ((mLastHash != 0L && !checkedEvents) || mLastHash == newHash) {
return

View file

@ -14,6 +14,7 @@ import com.simplemobiletools.calendar.extensions.getMonthCode
import com.simplemobiletools.calendar.helpers.DAY_CODE
import com.simplemobiletools.calendar.helpers.Formatter
import com.simplemobiletools.calendar.interfaces.NavigationListener
import com.simplemobiletools.commons.extensions.updateActionBarTitle
import com.simplemobiletools.commons.views.MyViewPager
import kotlinx.android.synthetic.main.fragment_months_holder.view.*
import org.joda.time.DateTime
@ -105,7 +106,7 @@ class MonthFragmentsHolder : MyFragmentHolder(), NavigationListener {
override fun shouldGoToTodayBeVisible() = currentDayCode.getMonthCode() != todayDayCode.getMonthCode()
override fun updateActionBarTitle() {
(activity as MainActivity).supportActionBar?.title = getString(R.string.app_launcher_name)
(activity as? MainActivity)?.updateActionBarTitle(getString(R.string.app_launcher_name))
}
override fun getNewEventDayCode() = if (shouldGoToTodayBeVisible()) currentDayCode else todayDayCode

View file

@ -16,6 +16,8 @@ import com.simplemobiletools.calendar.helpers.Formatter
import com.simplemobiletools.calendar.helpers.WEEK_START_DATE_TIME
import com.simplemobiletools.calendar.interfaces.WeekFragmentListener
import com.simplemobiletools.calendar.views.MyScrollView
import com.simplemobiletools.commons.extensions.updateActionBarSubtitle
import com.simplemobiletools.commons.extensions.updateActionBarTitle
import com.simplemobiletools.commons.helpers.WEEK_SECONDS
import kotlinx.android.synthetic.main.fragment_week_holder.*
import kotlinx.android.synthetic.main.fragment_week_holder.view.*
@ -112,12 +114,12 @@ class WeekFragmentsHolder : MyFragmentHolder(), WeekFragmentListener {
if (startDateTime.year != DateTime().year) {
newTitle += " - ${startDateTime.year}"
}
(activity as? MainActivity)?.supportActionBar?.title = newTitle
(activity as MainActivity).updateActionBarTitle(newTitle)
} else {
val endMonthName = Formatter.getMonthName(context!!, endDateTime.monthOfYear)
(activity as? MainActivity)?.supportActionBar?.title = "$startMonthName - $endMonthName"
(activity as MainActivity).updateActionBarTitle("$startMonthName - $endMonthName")
}
(activity as? MainActivity)?.supportActionBar?.subtitle = "${getString(R.string.week)} ${startDateTime.plusDays(3).weekOfWeekyear}"
(activity as MainActivity).updateActionBarSubtitle("${getString(R.string.week)} ${startDateTime.plusDays(3).weekOfWeekyear}")
}
override fun goToToday() {

View file

@ -11,6 +11,7 @@ import com.simplemobiletools.calendar.activities.MainActivity
import com.simplemobiletools.calendar.adapters.MyYearPagerAdapter
import com.simplemobiletools.calendar.extensions.config
import com.simplemobiletools.calendar.helpers.Formatter
import com.simplemobiletools.commons.extensions.updateActionBarTitle
import com.simplemobiletools.commons.views.MyViewPager
import kotlinx.android.synthetic.main.fragment_years_holder.view.*
import org.joda.time.DateTime
@ -62,7 +63,7 @@ class YearFragmentsHolder : MyFragmentHolder() {
}
if (position < years.size) {
(activity as? MainActivity)?.supportActionBar?.title = "${getString(R.string.app_launcher_name)} - ${years[position]}"
(activity as? MainActivity)?.updateActionBarTitle("${getString(R.string.app_launcher_name)} - ${years[position]}")
}
}
})
@ -89,7 +90,7 @@ class YearFragmentsHolder : MyFragmentHolder() {
override fun shouldGoToTodayBeVisible() = currentYear != todayYear
override fun updateActionBarTitle() {
(activity as? MainActivity)?.supportActionBar?.title = "${getString(R.string.app_launcher_name)} - $currentYear"
(activity as? MainActivity)?.updateActionBarTitle("${getString(R.string.app_launcher_name)} - $currentYear")
}
override fun getNewEventDayCode() = Formatter.getTodayCode(context!!)

View file

@ -245,8 +245,8 @@ class CalDAVHandler(val context: Context) {
val importId = getCalDAVEventImportId(calendarId, id)
val source = "$CALDAV-$calendarId"
val repeatRule = Parser().parseRepeatInterval(rrule, startTS)
val event = Event(0, startTS, endTS, title, description, reminders.getOrElse(0, { -1 }),
reminders.getOrElse(1, { -1 }), reminders.getOrElse(2, { -1 }), repeatRule.repeatInterval,
val event = Event(0, startTS, endTS, title, description, reminders.getOrElse(0) { -1 },
reminders.getOrElse(1) { -1 }, reminders.getOrElse(2) { -1 }, repeatRule.repeatInterval,
importId, allDay, repeatRule.repeatLimit, repeatRule.repeatRule, eventTypeId, source = source, location = location)
if (event.getIsAllDay()) {

View file

@ -815,7 +815,7 @@ class DBHelper private constructor(val context: Context) : SQLiteOpenHelper(cont
val events = ArrayList<Event>()
val ts = getNowSeconds()
val selection = "$COL_START_TS <= ? AND $COL_END_TS >= ? AND $COL_REPEAT_INTERVAL IS 0 AND $COL_START_TS != 0"
val selection = "$COL_START_TS <= ? AND $COL_END_TS >= ? AND $COL_REPEAT_INTERVAL IS NULL AND $COL_START_TS != 0"
val selectionArgs = arrayOf(ts.toString(), ts.toString())
val cursor = getEventsCursor(selection, selectionArgs)
events.addAll(fillEvents(cursor))
@ -976,6 +976,7 @@ class DBHelper private constructor(val context: Context) : SQLiteOpenHelper(cont
eventTypes.add(eventType)
} while (cursor.moveToNext())
}
} catch (ignored: Exception) {
} finally {
cursor?.close()
}

View file

@ -232,7 +232,7 @@ class IcsImporter(val activity: SimpleActivity) {
return if (title.startsWith(";") && title.contains(":")) {
title.substring(title.lastIndexOf(':') + 1)
} else {
title.substring(1, Math.min(title.length, 80))
title.substring(1, Math.min(title.length, 180))
}
}

View file

@ -79,7 +79,7 @@ class MonthlyCalendarImpl(val mCallback: MonthlyCalendar, val mContext: Context)
if (markDaysWithEvents) {
markDaysWithEvents(days)
} else {
mCallback.updateMonthlyCalendar(mContext, monthName, days, false)
mCallback.updateMonthlyCalendar(mContext, monthName, days, false, mTargetDate)
}
}
@ -110,7 +110,7 @@ class MonthlyCalendarImpl(val mCallback: MonthlyCalendar, val mContext: Context)
days.filter { dayEvents.keys.contains(it.code) }.forEach {
it.dayEvents = dayEvents[it.code]!!
}
mCallback.updateMonthlyCalendar(mContext, monthName, days, true)
mCallback.updateMonthlyCalendar(mContext, monthName, days, true, mTargetDate)
}
}

View file

@ -21,6 +21,7 @@ import org.joda.time.DateTime
class MyWidgetMonthlyProvider : AppWidgetProvider() {
private val PREV = "prev"
private val NEXT = "next"
private val GO_TO_TODAY = "go_to_today"
private val NEW_EVENT = "new_event"
companion object {
@ -66,6 +67,7 @@ class MyWidgetMonthlyProvider : AppWidgetProvider() {
when (intent.action) {
PREV -> getPrevMonth(context)
NEXT -> getNextMonth(context)
GO_TO_TODAY -> goToToday(context)
NEW_EVENT -> context.launchNewEventIntent()
else -> super.onReceive(context, intent)
}
@ -81,6 +83,11 @@ class MyWidgetMonthlyProvider : AppWidgetProvider() {
MonthlyCalendarImpl(monthlyCalendar, context).getMonth(targetDate!!)
}
private fun goToToday(context: Context) {
targetDate = DateTime.now().withDayOfMonth(1)
MonthlyCalendarImpl(monthlyCalendar, context).getMonth(targetDate!!)
}
private fun updateDays(context: Context, views: RemoteViews, days: List<DayMonthly>) {
val displayWeekNumbers = context.config.showWeekNumbers
val textColor = context.config.widgetTextColor
@ -150,7 +157,7 @@ class MyWidgetMonthlyProvider : AppWidgetProvider() {
}
private val monthlyCalendar = object : MonthlyCalendar {
override fun updateMonthlyCalendar(context: Context, month: String, days: ArrayList<DayMonthly>, checkedEvents: Boolean) {
override fun updateMonthlyCalendar(context: Context, month: String, days: ArrayList<DayMonthly>, checkedEvents: Boolean, currTargetDate: DateTime) {
val largerFontSize = context.config.getFontSize() + 3f
val textColor = context.config.widgetTextColor
val resources = context.resources
@ -171,13 +178,21 @@ class MyWidgetMonthlyProvider : AppWidgetProvider() {
bmp = resources.getColoredBitmap(R.drawable.ic_pointer_right, textColor)
views.setImageViewBitmap(R.id.top_right_arrow, bmp)
bmp = resources.getColoredBitmap(R.drawable.ic_today, textColor)
views.setImageViewBitmap(R.id.top_go_to_today, bmp)
bmp = resources.getColoredBitmap(R.drawable.ic_plus, textColor)
views.setImageViewBitmap(R.id.top_new_event, bmp)
val shouldGoToTodayBeVisible = currTargetDate.withTime(0, 0, 0, 0) != DateTime.now().withDayOfMonth(1).withTime(0, 0, 0, 0)
views.setVisibleIf(R.id.top_go_to_today, shouldGoToTodayBeVisible)
updateDayLabels(context, views, resources, textColor)
updateDays(context, views, days)
setupIntent(context, views, PREV, R.id.top_left_arrow)
setupIntent(context, views, NEXT, R.id.top_right_arrow)
setupIntent(context, views, GO_TO_TODAY, R.id.top_go_to_today)
setupIntent(context, views, NEW_EVENT, R.id.top_new_event)
val monthCode = days.firstOrNull { it.code.substring(6) == "01" }?.code ?: Formatter.getTodayCode(context)

View file

@ -2,7 +2,8 @@ package com.simplemobiletools.calendar.interfaces
import android.content.Context
import com.simplemobiletools.calendar.models.DayMonthly
import org.joda.time.DateTime
interface MonthlyCalendar {
fun updateMonthlyCalendar(context: Context, month: String, days: ArrayList<DayMonthly>, checkedEvents: Boolean)
fun updateMonthlyCalendar(context: Context, month: String, days: ArrayList<DayMonthly>, checkedEvents: Boolean, currTargetDate: DateTime)
}

View file

@ -6,7 +6,7 @@ import android.content.Intent
import android.os.PowerManager
import com.simplemobiletools.calendar.extensions.dbHelper
import com.simplemobiletools.calendar.extensions.notifyEvent
import com.simplemobiletools.calendar.extensions.scheduleAllEvents
import com.simplemobiletools.calendar.extensions.scheduleNextEventReminder
import com.simplemobiletools.calendar.extensions.updateListWidget
import com.simplemobiletools.calendar.helpers.EVENT_ID
import com.simplemobiletools.calendar.helpers.Formatter
@ -37,6 +37,6 @@ class NotificationReceiver : BroadcastReceiver() {
if (!event.ignoreEventOccurrences.contains(Formatter.getDayCodeFromTS(event.startTS).toInt())) {
context.notifyEvent(event)
}
context.scheduleAllEvents()
context.scheduleNextEventReminder(event, context.dbHelper)
}
}

View file

@ -21,7 +21,7 @@
android:layout_marginTop="@dimen/activity_margin"
android:hint="@string/title"
android:inputType="textCapSentences"
android:maxLength="80"
android:maxLength="180"
android:maxLines="1"
android:minEms="20"
android:textCursorDrawable="@null"
@ -37,7 +37,7 @@
android:layout_toLeftOf="@+id/event_show_on_map"
android:hint="@string/location"
android:inputType="textCapWords"
android:maxLength="80"
android:maxLength="180"
android:maxLines="1"
android:minEms="20"
android:textCursorDrawable="@null"

View file

@ -11,6 +11,28 @@
android:layout_height="wrap_content"
android:orientation="vertical">
<RelativeLayout
android:id="@+id/settings_purchase_thank_you_holder"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/medium_margin"
android:background="?attr/selectableItemBackground"
android:paddingBottom="@dimen/activity_margin"
android:paddingLeft="@dimen/normal_margin"
android:paddingRight="@dimen/normal_margin"
android:paddingTop="@dimen/activity_margin">
<com.simplemobiletools.commons.views.MyTextView
android:id="@+id/settings_purchase_thank_you"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:paddingLeft="@dimen/medium_margin"
android:paddingStart="@dimen/medium_margin"
android:text="@string/purchase_simple_thank_you"/>
</RelativeLayout>
<RelativeLayout
android:id="@+id/settings_customize_colors_holder"
android:layout_width="match_parent"

View file

@ -7,7 +7,65 @@
android:layout_height="match_parent"
android:padding="@dimen/medium_margin">
<include layout="@layout/top_navigation_widget"/>
<ImageView
android:id="@+id/top_left_arrow"
style="@style/ArrowStyle"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignBottom="@+id/top_value"
android:layout_alignTop="@+id/top_value"
android:paddingLeft="@dimen/medium_margin"
android:paddingRight="@dimen/medium_margin"
android:src="@drawable/ic_pointer_left"/>
<TextView
android:id="@+id/top_value"
style="@style/MonthStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_toLeftOf="@+id/top_right_arrow"
android:layout_toRightOf="@+id/top_left_arrow"
android:gravity="center"
android:lines="1"
android:paddingBottom="@dimen/medium_margin"
android:paddingTop="@dimen/medium_margin"
android:textSize="@dimen/month_text_size"/>
<ImageView
android:id="@+id/top_right_arrow"
style="@style/ArrowStyle"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignBottom="@+id/top_value"
android:layout_alignTop="@+id/top_value"
android:layout_toLeftOf="@+id/top_go_to_today"
android:paddingLeft="@dimen/medium_margin"
android:paddingRight="@dimen/medium_margin"
android:src="@drawable/ic_pointer_right"/>
<ImageView
android:id="@+id/top_go_to_today"
style="@style/ArrowStyle"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignBottom="@+id/top_value"
android:layout_alignTop="@+id/top_value"
android:layout_toLeftOf="@+id/top_new_event"
android:paddingLeft="@dimen/medium_margin"
android:paddingRight="@dimen/medium_margin"
android:src="@drawable/ic_today"/>
<ImageView
android:id="@+id/top_new_event"
style="@style/ArrowStyle"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignBottom="@+id/top_value"
android:layout_alignParentRight="true"
android:layout_alignTop="@+id/top_value"
android:paddingLeft="@dimen/medium_margin"
android:paddingRight="@dimen/medium_margin"
android:src="@drawable/ic_plus"/>
<include
android:id="@+id/first_row_widget"

View file

@ -1,53 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<merge
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/calendar_holder">
<ImageView
android:id="@+id/top_left_arrow"
style="@style/ArrowStyle"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignBottom="@+id/top_value"
android:layout_alignTop="@+id/top_value"
android:paddingLeft="@dimen/activity_margin"
android:paddingRight="@dimen/activity_margin"
android:src="@drawable/ic_pointer_left"/>
<TextView
android:id="@+id/top_value"
style="@style/MonthStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_toLeftOf="@+id/top_right_arrow"
android:layout_toRightOf="@+id/top_left_arrow"
android:gravity="center"
android:paddingBottom="@dimen/medium_margin"
android:paddingTop="@dimen/medium_margin"
android:textSize="@dimen/month_text_size"/>
<ImageView
android:id="@+id/top_right_arrow"
style="@style/ArrowStyle"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignBottom="@+id/top_value"
android:layout_alignTop="@+id/top_value"
android:layout_toLeftOf="@+id/top_new_event"
android:paddingLeft="@dimen/activity_margin"
android:paddingRight="@dimen/activity_margin"
android:src="@drawable/ic_pointer_right"/>
<ImageView
android:id="@+id/top_new_event"
style="@style/ArrowStyle"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignBottom="@+id/top_value"
android:layout_alignParentRight="true"
android:layout_alignTop="@+id/top_value"
android:paddingLeft="@dimen/activity_margin"
android:paddingRight="@dimen/activity_margin"
android:src="@drawable/ic_plus"/>
</merge>

View file

@ -27,7 +27,7 @@
<string name="event_updated">Hadisə uğurla yeniləndi</string>
<string name="filter_events_by_type">Hadisələri yazıya görə sırala</string>
<string name="please_fill_location">Xahiş olunur məkan parametrini doldurun ki hadisədə görünsün</string>
<string name="public_event_notification_text">An event is upcoming</string>
<string name="public_event_notification_text">Bir hadisə günü yaxınlaşır</string>
<!-- Event Repetition -->
<string name="repetition">Təkrarlama</string>
@ -44,7 +44,7 @@
<string name="event_is_repeatable">Bu hadisə təkrarlanabilər</string>
<string name="selection_contains_repetition">Seçim təkrarlanan hadisələr ehtiva edir</string>
<string name="delete_one_only">Yalnız seçilmiş hadisəni sil</string>
<string name="delete_future_occurrences">Delete this and all future occurrences</string>
<string name="delete_future_occurrences">Bunu və bütün gələcək hadisələri sil</string>
<string name="delete_all_occurrences">Bütün hadisələri sil</string>
<string name="update_one_only">Yalnız seçilmiş hadisəni yenilə</string>
<string name="update_all_occurrences">Bütün hadisələri yenilə</string>
@ -60,7 +60,7 @@
<string name="the_last_day">Son gün</string>
<string name="repeat_on_the_same_day_monthly">Hər ayın eyni günü təkrarla</string>
<string name="repeat_on_the_last_day_monthly">Hər ayın son günü təkrarla</string>
<string name="repeat_on_the_same_day_yearly">Repeat on the same day every year</string>
<string name="repeat_on_the_same_day_yearly">Hər ilin eyni gündə təkrarla</string>
<string name="repeat_every_m">Təkrarla hər</string>
<string name="every_m">Hər</string>
<string name="first_m">birinci</string>
@ -71,7 +71,7 @@
<!-- alternative versions for some languages, use the same translations if you are not sure what this means -->
<!-- used in repetition, like "Every first Sunday" -->
<string name="repeat_every_f">Repeat every</string>
<string name="repeat_every_f">Təkrarla hər</string>
<string name="every_f">Hər</string>
<string name="first_f">birinci</string>
<string name="second_f">ikinci</string>
@ -106,7 +106,7 @@
<string name="export_past_events_too">Keçmiş hadisələri də xaric et</string>
<string name="include_event_types">Hadisə tiplərini ehtiva et</string>
<string name="filename_without_ics">Fayl adı (.ics\'sız)</string>
<string name="override_event_types">Override event types in the file</string>
<string name="override_event_types">Faylın içərisində hadisə tiplərini üstünə yaz</string>
<!-- Event details -->
<string name="title">Başlıq</string>
@ -135,7 +135,7 @@
<string name="add_holidays">Bayram əlavə et</string>
<string name="national_holidays">Milli bayramlar</string>
<string name="religious_holidays">Dini bayramlar</string>
<string name="holidays_imported_successfully">Holidays have been successfully imported into the \"Holidays\" event type</string>
<string name="holidays_imported_successfully">Bayramlar uğurla \"Bayramlar\" hadisə tipinə daxil edildi</string>
<string name="importing_some_holidays_failed">Bəzi bayramları daxil etmək alınmadı</string>
<string name="importing_holidays_failed">Bayramları daxil etmək alınmadı</string>
@ -155,15 +155,15 @@
<string name="replace_description_with_location">Hadisə əlavəsini məkan ilə dəyiş</string>
<string name="delete_all_events">Bütün hadisələri sil</string>
<string name="delete_all_events_confirmation">Bütün hadisələri silmək istədiyinizə əminsiniz? Bu hadisələri və parametrlərini bütövlüklə siləcək.</string>
<string name="show_a_grid">Show a grid</string>
<string name="loop_reminders">Loop reminders until dismissed</string>
<string name="dim_past_events">Dim past events</string>
<string name="events">Events</string>
<string name="reminder_stream">Audio stream used by reminders</string>
<string name="system_stream">System</string>
<string name="alarm_stream">Alarm</string>
<string name="notification_stream">Notification</string>
<string name="ring_stream">Ring</string>
<string name="show_a_grid">Cədvəl göstər</string>
<string name="loop_reminders">Buraxılana qədər xatırladıcıları təkrarla</string>
<string name="dim_past_events">Keçmiş hadisələri qaralt</string>
<string name="events">Hadisələr</string>
<string name="reminder_stream">Xatırladıcılar tərəfindən işlədilən səs axışı</string>
<string name="system_stream">Sistem</string>
<string name="alarm_stream">Zəng</string>
<string name="notification_stream">Bildiriş</string>
<string name="ring_stream">Zəng səsi</string>
<!-- CalDAV sync -->
<string name="caldav">CalDAV</string>
@ -204,6 +204,9 @@
<string name="faq_2_title">Can I sync my events via Google Calendar, or other service supporting CalDAV?</string>
<string name="faq_2_text">Yes, just toggle \"CalDAV sync\" in the app settings and select the calendars you want to sync. However, you will need some third party app handling the synchronization between the device and servers.
In case you want to synchronize a Google calendar, their official Calendar app will do the job. For other calendars you will need a third party sync adapter, for example DAVdroid.</string>
<string name="faq_3_title">I see the visual reminders, but hear no audio. What can I do?</string>
<string name="faq_3_text">Not just displaying the actual reminder, but playing the audio is hugely affected by the system too. If you can\'t hear any sound, try going in the app settings,
pressing the \"Audio stream used by reminders\" option and changing it to a different value. If it still won\'t work, check your sound settings, if the particular stream isn\'t muted.</string>
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
<!-- Short description has to have less than 80 chars -->

View file

@ -204,6 +204,9 @@
<string name="faq_2_title">Can I sync my events via Google Calendar, or other service supporting CalDAV?</string>
<string name="faq_2_text">Yes, just toggle \"CalDAV sync\" in the app settings and select the calendars you want to sync. However, you will need some third party app handling the synchronization between the device and servers.
In case you want to synchronize a Google calendar, their official Calendar app will do the job. For other calendars you will need a third party sync adapter, for example DAVdroid.</string>
<string name="faq_3_title">I see the visual reminders, but hear no audio. What can I do?</string>
<string name="faq_3_text">Not just displaying the actual reminder, but playing the audio is hugely affected by the system too. If you can\'t hear any sound, try going in the app settings,
pressing the \"Audio stream used by reminders\" option and changing it to a different value. If it still won\'t work, check your sound settings, if the particular stream isn\'t muted.</string>
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
<!-- Short description has to have less than 80 chars -->

View file

@ -204,6 +204,9 @@
<string name="faq_2_title">Can I sync my events via Google Calendar, or other service supporting CalDAV?</string>
<string name="faq_2_text">Yes, just toggle \"CalDAV sync\" in the app settings and select the calendars you want to sync. However, you will need some third party app handling the synchronization between the device and servers.
In case you want to synchronize a Google calendar, their official Calendar app will do the job. For other calendars you will need a third party sync adapter, for example DAVdroid.</string>
<string name="faq_3_title">I see the visual reminders, but hear no audio. What can I do?</string>
<string name="faq_3_text">Not just displaying the actual reminder, but playing the audio is hugely affected by the system too. If you can\'t hear any sound, try going in the app settings,
pressing the \"Audio stream used by reminders\" option and changing it to a different value. If it still won\'t work, check your sound settings, if the particular stream isn\'t muted.</string>
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
<!-- Short description has to have less than 80 chars -->

View file

@ -200,9 +200,11 @@
<!-- FAQ -->
<string name="faq_1_title">Hvordan kan jeg fjerne helligdage der er importeret med funktionen \"Tilføj helligdage\"?</string>
<string name="faq_1_text">Helligdage oprettet på den måde er indsat under begivenhedstypen \"Helligdage\". Gå til Indstillinger -> Håndter begivenhedstyper. Efter et par sekunders pres på en type kan du slette den ved at klikke på papirkurven.</string>
<string name="faq_2_title">Kan jeg synkronisere mine begivenheder med Googles kalender elleer en anden kalender der understøtter CalDAV?</string>
<string name="faq_2_title">Kan jeg synkronisere mine begivenheder med Googles kalender eller en anden kalender der understøtter CalDAV?</string>
<string name="faq_2_text">Ja, klik på \"CalDAV sync\" i appens indstillinger og vælg de kalendere du vil synkronisere. Det kræver dog at du har en app til at synkronisere mellem din enhed og kalenderservere.
Hvis du vil synkronisere en Googlekalender, kan deres officielle app klare det. For andre kalenderes vedkommende kan du bruge en 3. partsapp som for eksempel DAVdroid.</string>
<string name="faq_3_title">Jeg kan mine påmindelser, men der er ingen lyd på. Hvad kan jeg gøre ved det?</string>
<string name="faq_3_text">Såvel visning af påmindelser som afspilning af lyd til dem, er afhængig af systemet. Hvis ikke du kan høre nogen lyd, kan du prøve at gå ind i appens indstillinger. Her kan du trykke på \"Audio-stream anvendt af påmindelser\" og vælge en anden indstilling. Virker det stadig ikke skal du tjekke i dine lydindstillinger om lyden i det aktuelle valg er slået fra.</string>
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
<!-- Short description has to have less than 80 chars -->

View file

@ -44,7 +44,7 @@
<string name="event_is_repeatable">Termin ist wiederholbar</string>
<string name="selection_contains_repetition">Die Auswahl enthält Ereignisse mit Wiederholungen</string>
<string name="delete_one_only">Lösche nur die ausgewählte Wiederholung</string>
<string name="delete_future_occurrences">Delete this and all future occurrences</string>
<string name="delete_future_occurrences">Lösche diese und zukünftige Wiederholungen</string>
<string name="delete_all_occurrences">Lösche alle Wiederholungen</string>
<string name="update_one_only">Ändere nur die ausgewählte Wiederholung</string>
<string name="update_all_occurrences">Ändere alle Wiederholungen</string>
@ -159,11 +159,11 @@
<string name="loop_reminders">Erinnerungen wiederholen bis sie verworfen werden</string>
<string name="dim_past_events">Vergangene Termine ausgrauen</string>
<string name="events">Termine</string>
<string name="reminder_stream">Audio stream used by reminders</string>
<string name="system_stream">System</string>
<string name="alarm_stream">Alarm</string>
<string name="notification_stream">Notification</string>
<string name="ring_stream">Ring</string>
<string name="reminder_stream">Audio Ausgabekanal für Erinnerungen</string>
<string name="system_stream">Medien</string>
<string name="alarm_stream">Wecker</string>
<string name="notification_stream">Benachrichtigung</string>
<string name="ring_stream">Klingelton</string>
<!-- CalDAV sync -->
<string name="caldav">CalDAV</string>
@ -203,8 +203,11 @@
Du kannst in den Einstellungen -> Verwalte Termin-Typen auf den Termin-Typ gedrückt halten und über das Papierkorbsymbol löschen.</string>
<string name="faq_2_title">Kann ich meine Termine über Google Kalender oder andere CalDAV unterstützende Dienste synchronisieren?</string>
<string name="faq_2_text">Ja, aktiviere \"CalDAV Synchronisierung\" in den Einstellungen und wähle die Kalender aus, die du synchronisieren willst.
Jedoch benötigst du eine separate App, die die Synchronisierung zwischen Gerät und Servern handhabt. Falls du einen Google Kalender synchronisieren willst, kann die offizielle Kalender-App dies übernehmen.
Jedoch benötigst du eine separate App, die Synchronisierung zwischen Gerät und Servern handhabt. Falls du einen Google Kalender synchronisieren willst, kann die offizielle Kalender-App dies übernehmen.
Für andere Kalender benötigst du einen Synchronisierungsadapter, wie z. B. DAVdroid.</string>
<string name="faq_3_title">Ich sehe die Erinenrungen, aber ich höre keinen Ton. Was kann ich tun?</string>
<string name="faq_3_text">Erinnerungen nicht nur anzeigen, sondern Töne dazu abspielen ist ebenfalls stark vom jeweiligen (Android) System abhängig. Wenn Du keine Töne hörst, versuche in den App Einstellungen,
die Option \"Audio Ausgabekanal für Erinnerungen\" anzuklicken und eine andere Option auszuwählen. Wenn das immer noch nichts ändert, prüfe Deine Lautstärkeeinstellungen. of der gewählte Kanal nicht auf lautlos steht.</string>
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
<!-- Short description has to have less than 80 chars -->

View file

@ -0,0 +1,232 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Simple Calendar</string>
<string name="app_launcher_name">Ημερολόγιο</string>
<string name="change_view">Αλλαγή προβολής</string>
<string name="daily_view">Ημερήσια προβολή</string>
<string name="weekly_view">Εβδομαδιαία προβολή</string>
<string name="monthly_view">Μηνιαία προβολή</string>
<string name="yearly_view">Ετήσια προβολή</string>
<string name="simple_event_list">Απλή λίστα εκδηλώσεων</string>
<string name="no_upcoming_events">Φαίνεται πως δεν έχετε επερχόμενες εκδηλώσεις.</string>
<string name="go_to_today">Πηγαίνετε στο σήμερα</string>
<!-- Widget titles -->
<string name="widget_monthly">Μηνιαίο ημερολόγιο</string>
<string name="widget_list">Λίστα εκδηλώσεων ημερολογίου</string>
<!-- Event -->
<string name="event">Εκδηλώσεις</string>
<string name="edit_event">Επεξεργασία εκδηλώσεων</string>
<string name="new_event">Νέα εκδήλωση</string>
<string name="create_new_event">Δημιουργία νέας εκδήλωσης</string>
<string name="duplicate_event">Διπλότυπες εκδηλώσεις</string>
<string name="title_empty">Ο τίτλος δεν μπορεί να είναι κενός</string>
<string name="end_before_start">Η εκδήλωση δεν μπορεί να τερματιστεί νωρίτερα από την έναρξή της</string>
<string name="event_added">Η εκδήλωση προστέθηκε με επιτυχία</string>
<string name="event_updated">Η εκδήλωση ενημερώθηκε με επιτυχία</string>
<string name="filter_events_by_type">Φιλτράρισμα ανά τύπο</string>
<string name="please_fill_location">Συμπληρώστε μια τοποθεσία που θα εμφανίζεται στο χάρτη</string>
<string name="public_event_notification_text">Μια εκδήλωση είναι επερχόμενη</string>
<!-- Event Repetition -->
<string name="repetition">Επανάληψη</string>
<string name="no_repetition">Χωρίς Επανάληψη</string>
<string name="daily">Καθημερινά</string>
<string name="weekly">Εβδομαδιαία</string>
<string name="monthly">Μηνιαία</string>
<string name="yearly">Ετήσια</string>
<string name="weeks_raw">weeks</string>
<string name="months_raw">months</string>
<string name="years_raw">years</string>
<string name="repeat_till">Επανάληψη μέχρι</string>
<string name="forever">Για πάντα</string>
<string name="event_is_repeatable">Η εκδήλωση είναι επαναλαμβανόμενη</string>
<string name="selection_contains_repetition">Η επιλογή περιέχει επαναλαμβανόμενες εκδηλώσεις</string>
<string name="delete_one_only">Διαγράψτε μόνο το επιλεγμένο περιστατικό</string>
<string name="delete_future_occurrences">Διαγράψτε αυτό και όλα τα μελλοντικά συμβάντα</string>
<string name="delete_all_occurrences">Διαγράψτε όλα τα περιστατικά</string>
<string name="update_one_only">Ενημέρωση μόνο του επιλεγμένου περιστατικού</string>
<string name="update_all_occurrences">Ενημέρωση όλων των περιστατικών</string>
<string name="repeat_till_date">Επαναλάβετε μέχρι μια ημερομηνία</string>
<string name="repeat_x_times">Επαναλάβετε x φορές</string>
<string name="repeat_forever">Επαναλάβετε για πάντα</string>
<string name="times">times</string>
<string name="repeat">Επανάληψη</string>
<string name="repeat_on">Επανάληψη ενεργή</string>
<string name="every_day">Κάθε μέρα</string>
<string name="selected_days">Σε επιλεγμένες μέρες</string>
<string name="the_same_day">Την ίδια μέρα</string>
<string name="the_last_day">Την τελευταία μέρα</string>
<string name="repeat_on_the_same_day_monthly">Επαναλάβετε την ίδια ημέρα κάθε μήνα</string>
<string name="repeat_on_the_last_day_monthly">Επαναλάβετε την τελευταία ημέρα του μήνα</string>
<string name="repeat_on_the_same_day_yearly">Επαναλάβετε την τελευταία ημέρα του μήνα</string>
<string name="repeat_every_m">Επανάληψη κάθε</string>
<string name="every_m">Κάθε</string>
<string name="first_m">πρώτη</string>
<string name="second_m">δεύτερη</string>
<string name="third_m">τρίτη</string>
<string name="fourth_m">τέταρτη</string>
<string name="last_m">τελευταία</string>
<!-- alternative versions for some languages, use the same translations if you are not sure what this means -->
<!-- used in repetition, like "Every first Sunday" -->
<string name="repeat_every_f">Επανάληψη κάθε</string>
<string name="every_f">Κάθε</string>
<string name="first_f">πρώτη</string>
<string name="second_f">δεύτερη</string>
<string name="third_f">τρίτη</string>
<string name="fourth_f">τέταρτη</string>
<string name="last_f">τελευταία</string>
<!-- Birthdays -->
<string name="birthdays">Γενέθλια</string>
<string name="add_birthdays">Προσθήκη γενεθλίων επαφής</string>
<string name="no_birthdays">Δεν βρέθηκαν γενέθλια</string>
<string name="birthdays_added">Τα γενέθλια προστέθηκαν με επιτυχία</string>
<!-- Anniversaries -->
<string name="anniversaries">Επέτειοι</string>
<string name="add_anniversaries">Προσθέστε επετείους επαφής</string>
<string name="no_anniversaries">Δεν έχουν βρεθεί επέτειοι</string>
<string name="anniversaries_added">Οι επέτειοι προστέθηκαν με επιτυχία</string>
<!-- Event Reminders -->
<string name="reminder">Υπενθύμιση</string>
<string name="before">πρίν</string>
<string name="add_another_reminder">Προσθέστε μια άλλη υπενθύμιση</string>
<string name="event_reminders">Υπενθυμίσεις εκδηλώσεων</string>
<!-- Export / Import -->
<string name="import_events">Εισαγωγή εκδηλώσεων</string>
<string name="export_events">Εξαγωγή εκδηλώσεων</string>
<string name="import_events_from_ics">Εισαγωγή απο ένα .ics αρχείο</string>
<string name="export_events_to_ics">Εξαγωγή σε ένα .ics αρχείο</string>
<string name="default_event_type">Προεπιλεγμένος τύπος εκδήλωσης</string>
<string name="export_past_events_too">Εξαγωγή προηγούμενων εκδηλώσεων επίσης</string>
<string name="include_event_types">Συμπερίληψη τύπων εκδηλώσεων</string>
<string name="filename_without_ics">Όνομα αρχείου (χωρίς .ics)</string>
<string name="override_event_types">Κατάργηση τύπων εκδηλώσεων στο αρχείο</string>
<!-- Event details -->
<string name="title">Τίτλος</string>
<string name="location">Τοποθεσία</string>
<string name="description">Περιγραφή</string>
<string name="all_day">Ημερήσια</string>
<!-- Weekly view -->
<string name="week">Εβδομάδα</string>
<!-- Event types -->
<string name="event_types">Τύποι εκδηλώσεων</string>
<string name="add_new_type">Προσθέστε νέο τύπο</string>
<string name="edit_type">Επεξεργασία τύπου</string>
<string name="type_already_exists">Ο τύπος με αυτόν τον τίτλο υπάρχει ήδη</string>
<string name="color">Χρώμα</string>
<string name="regular_event">Κανονική εκδήλωση</string>
<string name="cannot_delete_default_type">Ο προεπιλεγμένος τύπος εκδήλωσης δεν μπορεί να διαγραφεί</string>
<string name="select_event_type">Επιλέξτε έναν τύπο εκδήλωσης</string>
<string name="move_events_into_default">Μετακινήστε τις επηρεαζόμενες εκδηλώσεις στον προεπιλεγμένο τύπο</string>
<string name="remove_affected_events">Αφαιρέστε μόνιμα τις επηρεαζόμενες εκδηλώσεις </string>
<string name="unsync_caldav_calendar">Για να καταργήσετε ένα ημερολόγιο CalDAV, πρέπει να το αποσυγχρονίσετε</string>
<!-- Holidays -->
<string name="holidays">Αργίες</string>
<string name="add_holidays">Προσθήκη αργιών</string>
<string name="national_holidays">Εθνικές αργίες</string>
<string name="religious_holidays">Θρησκευτικές αργίες</string>
<string name="holidays_imported_successfully">Οι αργίες έχουν εισαχθεί επιτυχώς στον τύπο συμβάντος \"Αργίες\" </string>
<string name="importing_some_holidays_failed">Η εισαγωγή κάποιων εκδηλώσεων απέτυχε</string>
<string name="importing_holidays_failed">Η εισαγωγή αργιών απέτυχε</string>
<!-- Settings -->
<string name="manage_event_types">Διαχείριση τύπων εκδηλώσεων</string>
<string name="start_day_at">Ημέρα έναρξης την</string>
<string name="end_day_at">Ημέρα λήξης την</string>
<string name="week_numbers">Εμφάνιση αριθμών εβδομάδων</string>
<string name="vibrate">Δόνηση στην ειδοποίηση υπενθύμισης</string>
<string name="reminder_sound">Ήχος υπενθύμισης</string>
<string name="no_ringtone_picker">Δεν υπάρχει εφαρμογή που να μπορεί να βρει ήχους</string>
<string name="no_ringtone_selected">Χωρίς</string>
<string name="day_end_before_start">Η ημέρα δεν μπορεί να τελειώσει νωρίτερα από ότι ξεκινά</string>
<string name="caldav_sync">CalDAV sync</string>
<string name="event_lists">Λίστες εκδηλώσεων</string>
<string name="display_past_events">Εμφάνιση προηγούμενων συμβάντων</string>
<string name="replace_description_with_location">Αντικατάσταση περιγραφής εκδήλωσης με τοποθεσία</string>
<string name="delete_all_events">Διαγραφή όλων των εκδηλώσεων</string>
<string name="delete_all_events_confirmation">Είστε βέβαιοι ότι θέλετε να διαγράψετε όλες τις εκδηλώσεις; Αυτό θα αφήσει τους τύπους και άλλες ρυθμίσεις ανέπαφες.</string>
<string name="show_a_grid">Εμφάνιση πλέγματος</string>
<string name="loop_reminders">Συνεχής επανάληψη μέχρι να απορριφθεί</string>
<string name="dim_past_events">Μείωση των προηγούμενων</string>
<string name="events">Εκδηλώσεις</string>
<string name="reminder_stream">Ροή ήχου που χρησιμοποιείται από τις υπενθυμίσεις</string>
<string name="system_stream">Σύστημα</string>
<string name="alarm_stream">Αφύπνιση</string>
<string name="notification_stream">Ειδοποίηση</string>
<string name="ring_stream">Κουδούνισμα</string>
<!-- CalDAV sync -->
<string name="caldav">CalDAV</string>
<string name="select_caldav_calendars">Επιλέξτε ημερολόγια για συγχρονισμό</string>
<string name="manage_synced_calendars">Διαχείριση συγχρονισμένων ημερολογίων</string>
<string name="store_locally_only">Αποθήκευση μόνο τοπικά</string>
<string name="refresh_caldav_calendars">Ανανεώστε τα ημερολόγια CalDAV</string>
<string name="refreshing">Ανανεώνεται…</string>
<string name="refreshing_complete">Ολοκλήρωση ανανέωσης</string>
<string name="editing_calendar_failed">Η επεξεργασία του ημερολογίου απέτυχε</string>
<string name="syncing">Συγχρονισμός…</string>
<string name="synchronization_completed">Ο συγχρονισμός ολοκληρώθηκε</string>
<!-- alternative versions for some languages, use the same translations if you are not sure what this means -->
<!-- used in repetition, like "Every last Sunday" -->
<string name="monday_alt">Δευτέρα</string>
<string name="tuesday_alt">Τρίτη</string>
<string name="wednesday_alt">Τετάρτη</string>
<string name="thursday_alt">Πέμπτη</string>
<string name="friday_alt">Παρασκευή</string>
<string name="saturday_alt">Σαββάτο</string>
<string name="sunday_alt">Κυριακή</string>
<!-- List widget config example events -->
<string name="sample_title_1">Άσκηση</string>
<string name="sample_description_1">Ημέρα ποδιών</string>
<string name="sample_title_2">Συνάντηση με τον Γιάννη</string>
<string name="sample_description_2">Στον κήπο Rockstone</string>
<string name="sample_title_3">Βιβλιοθήκη</string>
<string name="sample_title_4">Μεσημεριανό με την Μαίρη</string>
<string name="sample_description_4">Στην πλατεία</string>
<string name="sample_title_5">Ωρα για καφέ</string>
<!-- FAQ -->
<string name="faq_1_title">Πώς μπορώ να αφαιρέσω τις αργίες που εισήχθησαν μέσω του κουμπιού \"Προσθήκη αργιών\" ;</string>
<string name="faq_1_text">Οι αργίες που δημιουργήθηκαν με τον τρόπο αυτό εισάγονται σε ένα νέο τύπο εκδήλωσης που ονομάζεται \"Αργίες \". Μπορείτε να μεταβείτε στις Ρυθμίσεις -> Διαχείριση τύπων εκδηλώσεων,
πατώντας παρατεταμένα τον συγκεκριμένο τύπο εκδήλωσης και διαγράψτε το επιλέγοντας τον Κάδο.</string>
<string name="faq_2_title">Μπορώ να συγχρονίσω τα συμβάντα μου μέσω του Ημερολογίου Google ή άλλης υπηρεσίας που υποστηρίζει το CalDAV;</string>
<string name="faq_2_text">Ναι, απλά εναλλαγή \"CalDAV sync\" στις ρυθμίσεις της εφαρμογής και επιλέξτε τα ημερολόγια που θέλετε να συγχρονίσετε. Ωστόσο, θα χρειαστείτε κάποια εφαρμογή τρίτου μέρους που να χειρίζεται το συγχρονισμό μεταξύ της συσκευής και των διακομιστών.
Σε περίπτωση που θέλετε να συγχρονίσετε ένα ημερολόγιο Google, η επίσημη εφαρμογή Ημερολογίου θα κάνει την εργασία. Για άλλα ημερολόγια θα χρειαστείτε έναν προσαρμογέα συγχρονισμού τρίτου μέρους, για παράδειγμα DAVdroid.</string>
<string name="faq_3_title">Βλέπω τις οπτικές υπενθυμίσεις, αλλά δεν ακούω ήχο. Τι μπορώ να κάνω?</string>
<string name="faq_3_text">Όχι μόνο η εμφάνιση της πραγματικής υπενθύμισης, αλλά η αναπαραγωγή του ήχου επηρεάζεται έντονα και από το σύστημα. Εάν δεν μπορείτε να ακούσετε ήχο, δοκιμάστε να μεταβείτε στις ρυθμίσεις της εφαρμογής,
πατώντας την επιλογή "Ροή ήχου που χρησιμοποιείται από τις υπενθυμίσεις" και αλλάζοντας την σε διαφορετική τιμή. Εάν εξακολουθεί να μην λειτουργεί, ελέγξτε τις ρυθμίσεις ήχου σας, εάν η συγκεκριμένη ροή δεν είναι απενεργοποιημένη.</string>
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
<!-- Short description has to have less than 80 chars -->
<string name="app_short_description">Ένα απλό ημερολόγιο με εκδηλώσεις, προσαρμόσιμο widget και χωρίς διαφημίσεις.</string>
<string name="app_long_description">
Ένα απλό ημερολόγιο με προαιρετικό συγχρονισμό CalDAV. Μπορείτε εύκολα να δημιουργήσετε επαναλαμβανόμενες εκδηλώσεις με ρυθμίσεις υπενθυμίσεων, μπορεί επίσης να εμφανίσει αριθμούς εβδομάδων.
Περιέχει μια μηνιαία προβολή και ένα widget λίστας εκδηλώσεων, όπου μπορείτε να προσαρμόσετε το χρώμα του κειμένου, καθώς το alpha και το χρώμα του φόντου.
Δεν περιέχει διαφημίσεις ή περιττά δικαιώματα. Έιναι όλη ανοιχτού κώδικα και παρέχει προσαρμόσιμα χρώματα για την εφαρμογή.
Η άδεια αποθήκευσης απαιτείται μόνο για την εξαγωγή ή την εισαγωγή εκδηλώσεων από αρχεία .ics.
Η άδεια Επαφών χρησιμοποιείται μόνο κατά την εισαγωγή γενεθλίων επαφών και επετείων.
Αυτή η εφαρμογή είναι μέρος μιας σειράς εφαρμογών. Μπορείτε να βρείτε τις υπόλοιπες στο https://www.simplemobiletools.com
</string>
<!--
Haven't found some strings? There's more at
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
-->
</resources>

View file

@ -204,6 +204,9 @@
<string name="faq_2_title">Can I sync my events via Google Calendar, or other service supporting CalDAV?</string>
<string name="faq_2_text">Yes, just toggle \"CalDAV sync\" in the app settings and select the calendars you want to sync. However, you will need some third party app handling the synchronization between the device and servers.
In case you want to synchronize a Google calendar, their official Calendar app will do the job. For other calendars you will need a third party sync adapter, for example DAVdroid.</string>
<string name="faq_3_title">I see the visual reminders, but hear no audio. What can I do?</string>
<string name="faq_3_text">Not just displaying the actual reminder, but playing the audio is hugely affected by the system too. If you can\'t hear any sound, try going in the app settings,
pressing the \"Audio stream used by reminders\" option and changing it to a different value. If it still won\'t work, check your sound settings, if the particular stream isn\'t muted.</string>
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
<!-- Short description has to have less than 80 chars -->

View file

@ -44,7 +44,7 @@
<string name="event_is_repeatable">L\'événement est répétable</string>
<string name="selection_contains_repetition">La sélection contient des événements avec répétition</string>
<string name="delete_one_only">Supprimer seulement l\'occurrence sélectionnée</string>
<string name="delete_future_occurrences">Delete this and all future occurrences</string>
<string name="delete_future_occurrences">Supprimer ceci et toutes les occurrences futures</string>
<string name="delete_all_occurrences">Supprimer toutes les occurrences</string>
<string name="update_one_only">Mettre à jour seulement l\'occurrence sélectionnée</string>
<string name="update_all_occurrences">Mettre à jour toutes les occurrences</string>
@ -106,7 +106,7 @@
<string name="export_past_events_too">Exporter aussi les événements passés</string>
<string name="include_event_types">Inclure les types d\'événement</string>
<string name="filename_without_ics">Nom de fichier (sans .ics)</string>
<string name="override_event_types">Remplacer les types d'événement dans le fichier</string>
<string name="override_event_types">Remplacer les types d\'événement dans le fichier</string>
<!-- Event details -->
<string name="title">Titre</string>
@ -159,9 +159,9 @@
<string name="loop_reminders">Boucles de rappel jusqu\'à ce qu\'il soit rejeté</string>
<string name="dim_past_events">Diminuer l\'affichage des événements passés</string>
<string name="events">Evénements</string>
<string name="reminder_stream">Audio stream used by reminders</string>
<string name="reminder_stream">Flux audio utilisé par les rappels</string>
<string name="system_stream">System</string>
<string name="alarm_stream">Alarm</string>
<string name="alarm_stream">Alarme</string>
<string name="notification_stream">Notification</string>
<string name="ring_stream">Ring</string>
@ -204,6 +204,9 @@
<string name="faq_2_title">Puis-je synchroniser mes événements via Google Agenda, ou tout autre service proposant la synchronisation CalDAV ?</string>
<string name="faq_2_text">Oui, il faut juste activer l\'option « Synchronisation CalDAV » dans les paramètres de l\'application puis choisir les calendriers à synchroniser. Une application tierce pour gérer la synchronisation entre votre appareil et les serveurs sera par contre nécessaire.
Dans le cas d\'un calendrier Google Agenda, l\'application officielle fera l\'affaire. Pour les autres calendriers, il vous faudra une application comme DAVdroid par exemple.</string>
<string name="faq_3_title">I see the visual reminders, but hear no audio. What can I do?</string>
<string name="faq_3_text">Not just displaying the actual reminder, but playing the audio is hugely affected by the system too. If you can\'t hear any sound, try going in the app settings,
pressing the \"Audio stream used by reminders\" option and changing it to a different value. If it still won\'t work, check your sound settings, if the particular stream isn\'t muted.</string>
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
<!-- Short description has to have less than 80 chars -->

View file

@ -204,6 +204,9 @@
<string name="faq_2_title">Can I sync my events via Google Calendar, or other service supporting CalDAV?</string>
<string name="faq_2_text">Yes, just toggle \"CalDAV sync\" in the app settings and select the calendars you want to sync. However, you will need some third party app handling the synchronization between the device and servers.
In case you want to synchronize a Google calendar, their official Calendar app will do the job. For other calendars you will need a third party sync adapter, for example DAVdroid.</string>
<string name="faq_3_title">I see the visual reminders, but hear no audio. What can I do?</string>
<string name="faq_3_text">Not just displaying the actual reminder, but playing the audio is hugely affected by the system too. If you can\'t hear any sound, try going in the app settings,
pressing the \"Audio stream used by reminders\" option and changing it to a different value. If it still won\'t work, check your sound settings, if the particular stream isn\'t muted.</string>
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
<!-- Short description has to have less than 80 chars -->

View file

@ -205,6 +205,9 @@
<string name="faq_2_title">Can I sync my events via Google Calendar, or other service supporting CalDAV?</string>
<string name="faq_2_text">Yes, just toggle \"CalDAV sync\" in the app settings and select the calendars you want to sync. However, you will need some third party app handling the synchronization between the device and servers.
In case you want to synchronize a Google calendar, their official Calendar app will do the job. For other calendars you will need a third party sync adapter, for example DAVdroid.</string>
<string name="faq_3_title">I see the visual reminders, but hear no audio. What can I do?</string>
<string name="faq_3_text">Not just displaying the actual reminder, but playing the audio is hugely affected by the system too. If you can\'t hear any sound, try going in the app settings,
pressing the \"Audio stream used by reminders\" option and changing it to a different value. If it still won\'t work, check your sound settings, if the particular stream isn\'t muted.</string>
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
<!-- Short description has to have less than 80 chars -->

View file

@ -204,6 +204,9 @@
<string name="faq_2_title">Mogu li sinkronizirati događaje putem Google Kalendara ili druge usluge koje podržavaju CalDAV?</string>
<string name="faq_2_text">Da, samo uključite \"CalDAV sinkronizacija\" u postavkama aplikacije i odaberite kalendare koje želite sinkronizirati. Međutim, potrebna je aplikacija između Vašeg uređaja i poslužitelja.
U slučaju da želite sinkronizirati Google kalendar, njihova službena aplikacija Kalendar obavlja navedeni posao. Za ostale kalendare potreban Vam je aplikacija treće strane za upravljanje sinkronizacijom, na primjer DAVdroid.</string>
<string name="faq_3_title">I see the visual reminders, but hear no audio. What can I do?</string>
<string name="faq_3_text">Not just displaying the actual reminder, but playing the audio is hugely affected by the system too. If you can\'t hear any sound, try going in the app settings,
pressing the \"Audio stream used by reminders\" option and changing it to a different value. If it still won\'t work, check your sound settings, if the particular stream isn\'t muted.</string>
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
<!-- Short description has to have less than 80 chars -->

View file

@ -204,6 +204,9 @@
<string name="faq_2_title">Can I sync my events via Google Calendar, or other service supporting CalDAV?</string>
<string name="faq_2_text">Yes, just toggle \"CalDAV sync\" in the app settings and select the calendars you want to sync. However, you will need some third party app handling the synchronization between the device and servers.
In case you want to synchronize a Google calendar, their official Calendar app will do the job. For other calendars you will need a third party sync adapter, for example DAVdroid.</string>
<string name="faq_3_title">I see the visual reminders, but hear no audio. What can I do?</string>
<string name="faq_3_text">Not just displaying the actual reminder, but playing the audio is hugely affected by the system too. If you can\'t hear any sound, try going in the app settings,
pressing the \"Audio stream used by reminders\" option and changing it to a different value. If it still won\'t work, check your sound settings, if the particular stream isn\'t muted.</string>
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
<!-- Short description has to have less than 80 chars -->

View file

@ -204,6 +204,9 @@
<string name="faq_2_title">Can I sync my events via Google Calendar, or other service supporting CalDAV?</string>
<string name="faq_2_text">Yes, just toggle \"CalDAV sync\" in the app settings and select the calendars you want to sync. However, you will need some third party app handling the synchronization between the device and servers.
In case you want to synchronize a Google calendar, their official Calendar app will do the job. For other calendars you will need a third party sync adapter, for example DAVdroid.</string>
<string name="faq_3_title">I see the visual reminders, but hear no audio. What can I do?</string>
<string name="faq_3_text">Not just displaying the actual reminder, but playing the audio is hugely affected by the system too. If you can\'t hear any sound, try going in the app settings,
pressing the \"Audio stream used by reminders\" option and changing it to a different value. If it still won\'t work, check your sound settings, if the particular stream isn\'t muted.</string>
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
<!-- Short description has to have less than 80 chars -->

View file

@ -205,6 +205,9 @@
<string name="faq_2_title">Can I sync my events via Google Calendar, or other service supporting CalDAV?</string>
<string name="faq_2_text">Yes, just toggle \"CalDAV sync\" in the app settings and select the calendars you want to sync. However, you will need some third party app handling the synchronization between the device and servers.
In case you want to synchronize a Google calendar, their official Calendar app will do the job. For other calendars you will need a third party sync adapter, for example DAVdroid.</string>
<string name="faq_3_title">I see the visual reminders, but hear no audio. What can I do?</string>
<string name="faq_3_text">Not just displaying the actual reminder, but playing the audio is hugely affected by the system too. If you can\'t hear any sound, try going in the app settings,
pressing the \"Audio stream used by reminders\" option and changing it to a different value. If it still won\'t work, check your sound settings, if the particular stream isn\'t muted.</string>
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
<!-- Short description has to have less than 80 chars -->

View file

@ -204,6 +204,9 @@
<string name="faq_2_title">Can I sync my events via Google Calendar, or other service supporting CalDAV?</string>
<string name="faq_2_text">Yes, just toggle \"CalDAV sync\" in the app settings and select the calendars you want to sync. However, you will need some third party app handling the synchronization between the device and servers.
In case you want to synchronize a Google calendar, their official Calendar app will do the job. For other calendars you will need a third party sync adapter, for example DAVdroid.</string>
<string name="faq_3_title">I see the visual reminders, but hear no audio. What can I do?</string>
<string name="faq_3_text">Not just displaying the actual reminder, but playing the audio is hugely affected by the system too. If you can\'t hear any sound, try going in the app settings,
pressing the \"Audio stream used by reminders\" option and changing it to a different value. If it still won\'t work, check your sound settings, if the particular stream isn\'t muted.</string>
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
<!-- Short description has to have less than 80 chars -->

View file

@ -204,6 +204,9 @@
<string name="faq_2_title">Can I sync my events via Google Calendar, or other service supporting CalDAV?</string>
<string name="faq_2_text">Yes, just toggle \"CalDAV sync\" in the app settings and select the calendars you want to sync. However, you will need some third party app handling the synchronization between the device and servers.
In case you want to synchronize a Google calendar, their official Calendar app will do the job. For other calendars you will need a third party sync adapter, for example DAVdroid.</string>
<string name="faq_3_title">I see the visual reminders, but hear no audio. What can I do?</string>
<string name="faq_3_text">Not just displaying the actual reminder, but playing the audio is hugely affected by the system too. If you can\'t hear any sound, try going in the app settings,
pressing the \"Audio stream used by reminders\" option and changing it to a different value. If it still won\'t work, check your sound settings, if the particular stream isn\'t muted.</string>
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
<!-- Short description has to have less than 80 chars -->

View file

@ -204,6 +204,9 @@
<string name="faq_2_title">Ar galiu sinchronizuoti savo įvykius per Google Kalendorių, ar kitą paslaugą palaikančią CalDAV?</string>
<string name="faq_2_text">Taip, tiesiog pasirinkite \"CalDAV sinchronizavimas\" programėlės nustatymuose ir pasirinkite kalendorius kuriuos norite sinchronizuoti. Tačiau Jums reikės trečiosios šalies programėlės palaikančios sinchronizavimą tarp įrenginio ir serverių.
Jeigu norite sinchronizuoti Google kalendorių, jų oficiali kalendoriaus programėlė atliks šį darbą. Kitiems kalenoriams Jums reikės trečiosios šalies sinchronizavimo adapterio, pavyzdžiui DAVdroid.</string>
<string name="faq_3_title">I see the visual reminders, but hear no audio. What can I do?</string>
<string name="faq_3_text">Not just displaying the actual reminder, but playing the audio is hugely affected by the system too. If you can\'t hear any sound, try going in the app settings,
pressing the \"Audio stream used by reminders\" option and changing it to a different value. If it still won\'t work, check your sound settings, if the particular stream isn\'t muted.</string>
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
<!-- Short description has to have less than 80 chars -->

View file

@ -44,7 +44,7 @@
<string name="event_is_repeatable">Hendelsen er repeterbar</string>
<string name="selection_contains_repetition">Markeringen inneholder gjentagende hendelser</string>
<string name="delete_one_only">Slett bare den merkede forekomsten</string>
<string name="delete_future_occurrences">Delete this and all future occurrences</string>
<string name="delete_future_occurrences">Slett denne og alle framtidige forekomster</string>
<string name="delete_all_occurrences">Slett alle forekomster</string>
<string name="update_one_only">Oppdater bare den merkede forekomsten</string>
<string name="update_all_occurrences">Oppdater alle forekomster</string>
@ -159,11 +159,11 @@
<string name="loop_reminders">Gjenta påminnelser inntil avvist</string>
<string name="dim_past_events">Dim tidligere hendelser</string>
<string name="events">Hendelser</string>
<string name="reminder_stream">Audio stream used by reminders</string>
<string name="reminder_stream">Lydtype brukt for påminnelser</string>
<string name="system_stream">System</string>
<string name="alarm_stream">Alarm</string>
<string name="notification_stream">Notification</string>
<string name="ring_stream">Ring</string>
<string name="notification_stream">Varsel</string>
<string name="ring_stream">Ringetone</string>
<!-- CalDAV sync -->
<string name="caldav">CalDAV</string>
@ -204,6 +204,9 @@
<string name="faq_2_title">Kan jeg synkronisere hendelsene mine via Google Kalender eller annen tjeneste som støtter CalDAV?</string>
<string name="faq_2_text">Ja, bare aktiver \"CalDAV-synkronisering\" i innstillingene og velg kalenderne du vil synkronisere. Du trenger imidlertid program som håndterer synkroniseringen mellom enheten og serverne.
Hvis du vil synkronisere en Google-kalender, vil deres offisielle kalenderapp gjøre jobben. For andre kalendere trenger du en annen synkroniseringsapp, for eksempel DAVdroid.</string>
<string name="faq_3_title">I see the visual reminders, but hear no audio. What can I do?</string>
<string name="faq_3_text">Not just displaying the actual reminder, but playing the audio is hugely affected by the system too. If you can\'t hear any sound, try going in the app settings,
pressing the \"Audio stream used by reminders\" option and changing it to a different value. If it still won\'t work, check your sound settings, if the particular stream isn\'t muted.</string>
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
<!-- Short description has to have less than 80 chars -->

View file

@ -204,6 +204,9 @@
<string name="faq_2_title">Kan ik mijn afspraken synchroniseren met Google Calendar of een andere service die CalDAV ondersteunt?</string>
<string name="faq_2_text">Schakel \"CalDAV-synchronisatie\" in bij Instellingen en selecteer vervolgens de agenda\'s die gesynchroniseerd moeten worden. Er is wel een app nodig die de synchronisatie tussen het apparaat en de service zelf afhandelt.
Betreft het een agenda van Google Calendar, dan voldoet hun officiële app. Voor andere services zal een adapter zoals DAVdroid benodigd zijn.</string>
<string name="faq_3_title">Ik krijg wel herinneringen, maar ik hoor geen notificatiegeluid. Wat kan ik doen?</string>
<string name="faq_3_text">Geluiden afspelen bij een herinnering is sterk afhankelijk van het systeem. Als er geen geluid te horen is, ga dan naar instellingen en pas de optie
\"Type geluiden voor herinneringen gebruiken\" aan. Als dat niet werkt, controleer dan bij de geluidsinstellingen van Android of het volume van dit geluidstype niet te laag is ingesteld.</string>
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
<!-- Short description has to have less than 80 chars -->

View file

@ -204,6 +204,9 @@
<string name="faq_2_title">Can I sync my events via Google Calendar, or other service supporting CalDAV?</string>
<string name="faq_2_text">Yes, just toggle \"CalDAV sync\" in the app settings and select the calendars you want to sync. However, you will need some third party app handling the synchronization between the device and servers.
In case you want to synchronize a Google calendar, their official Calendar app will do the job. For other calendars you will need a third party sync adapter, for example DAVdroid.</string>
<string name="faq_3_title">I see the visual reminders, but hear no audio. What can I do?</string>
<string name="faq_3_text">Not just displaying the actual reminder, but playing the audio is hugely affected by the system too. If you can\'t hear any sound, try going in the app settings,
pressing the \"Audio stream used by reminders\" option and changing it to a different value. If it still won\'t work, check your sound settings, if the particular stream isn\'t muted.</string>
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
<!-- Short description has to have less than 80 chars -->

View file

@ -202,6 +202,9 @@
   <string name="faq_1_text">Święta dodane w ten sposób są wprowadzane do nowego typu wydarzeń - \'Święta\'. Usunąć je możesz, przechodząc do ustawień aplikacji, a następnie w sekcji \'Zarządzaj typami wydarzeń\' usunąć ową kategorię, klikając ikonę kosza.</string>
   <string name="faq_2_title">Czy mogę zsychronizować moje wydarzenia z Kalendarzem Google lub inną usługą wspierającą CalDAV?</string>
   <string name="faq_2_text">Tak. Wystarczy włączyć opcję \'Synchronizacja CalDAV\' w ustawieniach aplikacji i wybrać kalendarze do synchronizacji. Jeśli chcesz zsynchronizować wydarzenia z Kalendarzem Google, oficjalna aplikacja kalendarza powinna wystarczyć. W innych przypadkach potrzebna może być zewnętrzna aplikacja, np. DAVdroid.</string>
<string name="faq_3_title">I see the visual reminders, but hear no audio. What can I do?</string>
<string name="faq_3_text">Not just displaying the actual reminder, but playing the audio is hugely affected by the system too. If you can\'t hear any sound, try going in the app settings,
pressing the \"Audio stream used by reminders\" option and changing it to a different value. If it still won\'t work, check your sound settings, if the particular stream isn\'t muted.</string>
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
<!-- Short description has to have less than 80 chars -->

View file

@ -204,6 +204,9 @@
<string name="faq_2_title">Posso sincronizar meus eventos por meio do Google Agenda ou de outro serviço de suporte CalDAV?</string>
<string name="faq_2_text">Sim, basta ativar \ "CalDAV sync \" nas configurações do aplicativo e selecionar os calendários que você deseja sincronizar. No entanto, você precisará de algum aplicativo de terceiros que manipule a sincronização entre o dispositivo e os servidores.
Caso você queira sincronizar um calendário do Google, o aplicativo oficial do Google Agenda fará o trabalho. Para outros calendários, você precisará de um adaptador de sincronização de terceiros, por exemplo, o DAVdroid.</string>
<string name="faq_3_title">I see the visual reminders, but hear no audio. What can I do?</string>
<string name="faq_3_text">Not just displaying the actual reminder, but playing the audio is hugely affected by the system too. If you can\'t hear any sound, try going in the app settings,
pressing the \"Audio stream used by reminders\" option and changing it to a different value. If it still won\'t work, check your sound settings, if the particular stream isn\'t muted.</string>
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
<!-- Short description has to have less than 80 chars -->

View file

@ -93,7 +93,7 @@
<!-- Event Reminders -->
<string name="reminder">Lembrete</string>
<string name="before">antes</string>
<string name="before">Antes</string>
<string name="add_another_reminder">Adicionar outro lembrete</string>
<string name="event_reminders">Lembretes para eventos</string>
@ -159,11 +159,11 @@
<string name="loop_reminders">Mostrar lembretes até serem descartados</string>
<string name="dim_past_events">Desvanecer eventos passados</string>
<string name="events">Eventos</string>
<string name="reminder_stream">Audio stream used by reminders</string>
<string name="system_stream">System</string>
<string name="alarm_stream">Alarm</string>
<string name="notification_stream">Notification</string>
<string name="ring_stream">Ring</string>
<string name="reminder_stream">Fluxo áudio a utilizar nos lembretes</string>
<string name="system_stream">Sistema</string>
<string name="alarm_stream">Alarmw</string>
<string name="notification_stream">Notificação</string>
<string name="ring_stream">Toque</string>
<!-- CalDAV sync -->
<string name="caldav">CalDAV</string>
@ -204,6 +204,9 @@
<string name="faq_2_title">Can I sync my events via Google Calendar, or other service supporting CalDAV?</string>
<string name="faq_2_text">Yes, just toggle \"CalDAV sync\" in the app settings and select the calendars you want to sync. However, you will need some third party app handling the synchronization between the device and servers.
In case you want to synchronize a Google calendar, their official Calendar app will do the job. For other calendars you will need a third party sync adapter, for example DAVdroid.</string>
<string name="faq_3_title">I see the visual reminders, but hear no audio. What can I do?</string>
<string name="faq_3_text">Not just displaying the actual reminder, but playing the audio is hugely affected by the system too. If you can\'t hear any sound, try going in the app settings,
pressing the \"Audio stream used by reminders\" option and changing it to a different value. If it still won\'t work, check your sound settings, if the particular stream isn\'t muted.</string>
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
<!-- Short description has to have less than 80 chars -->

View file

@ -204,6 +204,9 @@
<string name="faq_2_title">Можно ли синхронизировать события с помощью Календаря Google или других служб, поддерживающих CalDAV?</string>
<string name="faq_2_text">Да, просто включите \"Cинхронизацию CalDAV\" в настройках приложения и выберите календари, которые хотите синхронизировать. Тем не менее, вам потребуется стороннее приложение, обрабатывающее синхронизацию между устройством и сервером.
Если вы хотите синхронизировать Календарь Google, то их официальное приложение выполнит данную работу. Для других календарей вам понадобится сторонний инструмент синхронизации, например DAVdroid.</string>
<string name="faq_3_title">I see the visual reminders, but hear no audio. What can I do?</string>
<string name="faq_3_text">Not just displaying the actual reminder, but playing the audio is hugely affected by the system too. If you can\'t hear any sound, try going in the app settings,
pressing the \"Audio stream used by reminders\" option and changing it to a different value. If it still won\'t work, check your sound settings, if the particular stream isn\'t muted.</string>
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
<!-- Short description has to have less than 80 chars -->

View file

@ -204,6 +204,9 @@
<string name="faq_2_title">Viem si zosynchronizovať udalosti pomocou Google Kalendára, alebo inej služby podporujúcej CalDAV?</string>
<string name="faq_2_text">Áno, stačí aktivovať funkciu \"CalDAV synchronizácia\" v nastaveniach a zvoliť si správne kalendáre. Pre synchronizáciu medzi zariadením a serverom ale budete potrebovať synchronizačný adaptér od tretej strany.
Ak chcete synchronizovať Google kalendár, ich oficiálna aplikácia Kalendár to spraví. Pre iné kalendáre budete potrebovať inú synchronizačnú aplikáciu, napr. DAVdroid.</string>
<string name="faq_3_title">Vidím vizuálnu pripomienku, ale nepočujem žiadny zvuk. Čo s tým viem spraviť?</string>
<string name="faq_3_text">Nie len zobrazovanie pripomienok, ale aj prehrávanie zvuku je ovplyvnené systémom. Ak nepočujete zvuk, skúste ísť do nastavení apky, použiť možnosť \"Zvukový kanál používaný pripomienkami\" a
zmeniť zvolenú hodnotu. Ak to ešte stále nebude fungovať, skúste sa pozrieť do zvukových nastavení vášho systému, či daný kanál nie je stlmený.</string>
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
<!-- Short description has to have less than 80 chars -->

View file

@ -44,7 +44,7 @@
<string name="event_is_repeatable">Händelsen är återkommande</string>
<string name="selection_contains_repetition">Markeringen innehåller återkommande händelser</string>
<string name="delete_one_only">Ta bara bort den markerade förekomsten</string>
<string name="delete_future_occurrences">Delete this and all future occurrences</string>
<string name="delete_future_occurrences">Ta bort denna och alla framtida förekomster</string>
<string name="delete_all_occurrences">Ta bort alla förekomster</string>
<string name="update_one_only">Uppdatera bara den markerade förekomsten</string>
<string name="update_all_occurrences">Uppdatera alla förekomster</string>
@ -143,10 +143,10 @@
<string name="manage_event_types">Hantera händelsetyper</string>
<string name="start_day_at">Starta veckovydagen vid</string>
<string name="end_day_at">Sluta veckovydagen vid</string>
<string name="week_numbers">Visa veckonumret i månadsvyn</string>
<string name="week_numbers">Visa veckonummer</string>
<string name="vibrate">Vibrera vid påminnelseaviseringen</string>
<string name="reminder_sound">Påminnelseljud</string>
<string name="no_ringtone_picker">Hittade ingen app som kan ställa in ljudet</string>
<string name="no_ringtone_picker">Ingen app som kan ställa in en ringsignal hittades</string>
<string name="no_ringtone_selected">Ingen</string>
<string name="day_end_before_start">Dagen kan inte börja innan den tar slut</string>
<string name="caldav_sync">CalDAV-synkronisering</string>
@ -159,10 +159,10 @@
<string name="loop_reminders">Upprepa påminnelser tills de tas bort</string>
<string name="dim_past_events">Tona ned tidigare händelser</string>
<string name="events">Händelser</string>
<string name="reminder_stream">Audio stream used by reminders</string>
<string name="reminder_stream">Ljudström för påminnelser</string>
<string name="system_stream">System</string>
<string name="alarm_stream">Alarm</string>
<string name="notification_stream">Notification</string>
<string name="notification_stream">Avisering</string>
<string name="ring_stream">Ring</string>
<!-- CalDAV sync -->
@ -204,6 +204,9 @@
<string name="faq_2_title">Can I sync my events via Google Calendar, or other service supporting CalDAV?</string>
<string name="faq_2_text">Yes, just toggle \"CalDAV sync\" in the app settings and select the calendars you want to sync. However, you will need some third party app handling the synchronization between the device and servers.
In case you want to synchronize a Google calendar, their official Calendar app will do the job. For other calendars you will need a third party sync adapter, for example DAVdroid.</string>
<string name="faq_3_title">I see the visual reminders, but hear no audio. What can I do?</string>
<string name="faq_3_text">Not just displaying the actual reminder, but playing the audio is hugely affected by the system too. If you can\'t hear any sound, try going in the app settings,
pressing the \"Audio stream used by reminders\" option and changing it to a different value. If it still won\'t work, check your sound settings, if the particular stream isn\'t muted.</string>
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
<!-- Short description has to have less than 80 chars -->

View file

@ -203,6 +203,9 @@
<string name="faq_2_title">Etkinliklerimi Google Takvim\'le veya CalDAV\'ı destekleyen başka bir hizmetle senkronize edebilir miyim?</string>
<string name="faq_2_text">Evet, uygulama ayarlarından \"CalDAV senkronizasyonu\" seçeneğini işaretleyin ve senkronize etmek istediğiniz takvimleri seçin. Bununla birlikte, cihaz ve sunucular arasındaki senkronizasyonu ele alan bazı üçüncü taraf uygulamalarına ihtiyacınız olacaktır.
Bu durumda bir Google takvimini senkronize etmek istiyorsanız, resmi Takvim uygulaması işi yapar. Diğer takvimler için, DAVdroid gibi üçüncü taraf senkronizasyon adaptörüne ihtiyacınız olacaktır.</string>
<string name="faq_3_title">I see the visual reminders, but hear no audio. What can I do?</string>
<string name="faq_3_text">Not just displaying the actual reminder, but playing the audio is hugely affected by the system too. If you can\'t hear any sound, try going in the app settings,
pressing the \"Audio stream used by reminders\" option and changing it to a different value. If it still won\'t work, check your sound settings, if the particular stream isn\'t muted.</string>
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
<!-- Short description has to have less than 80 chars -->

View file

@ -204,6 +204,9 @@
<string name="faq_2_title">我可以透過Google日曆或其它支援CalDAV的服務來同步我的活動嗎?</string>
<string name="faq_2_text">行的,只要打開程式設定內的[CalDAV同步],然後選擇你要同步的行事曆。然而你需要一些第三方應用程式來處理裝置和伺服器之間的同步。
如果你要同步Google日曆他們官方的行事曆程式就能做到了。而其它行事曆你需要有第三方同步工具才行像是DAVdroid。</string>
<string name="faq_3_title">我看到了視覺的提醒,但沒聽到音效。我能怎麼辦?</string>
<string name="faq_3_text">不只是顯示實際的提醒,播放音效也受到系統極大的影響。如果你聽不到任何聲音,試著到應用程式設定,
按\"用於提醒的音源串流\"選項,然後更改成不同數值。如果還是沒有用,檢查你的音量設定,指定串流是不是靜音的。</string>
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
<!-- Short description has to have less than 80 chars -->

View file

@ -204,6 +204,9 @@
<string name="faq_2_title">Can I sync my events via Google Calendar, or other service supporting CalDAV?</string>
<string name="faq_2_text">Yes, just toggle \"CalDAV sync\" in the app settings and select the calendars you want to sync. However, you will need some third party app handling the synchronization between the device and servers.
In case you want to synchronize a Google calendar, their official Calendar app will do the job. For other calendars you will need a third party sync adapter, for example DAVdroid.</string>
<string name="faq_3_title">I see the visual reminders, but hear no audio. What can I do?</string>
<string name="faq_3_text">Not just displaying the actual reminder, but playing the audio is hugely affected by the system too. If you can\'t hear any sound, try going in the app settings,
pressing the \"Audio stream used by reminders\" option and changing it to a different value. If it still won\'t work, check your sound settings, if the particular stream isn\'t muted.</string>
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
<!-- Short description has to have less than 80 chars -->

View file

@ -1,7 +1,7 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
ext.kotlin_version = '1.2.50'
ext.kotlin_version = '1.2.60'
repositories {
jcenter()
@ -9,7 +9,7 @@ buildscript {
}
dependencies {
classpath 'com.android.tools.build:gradle:3.1.3'
classpath 'com.android.tools.build:gradle:3.1.4'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
// NOTE: Do not place your application dependencies here; they belong