Merge remote-tracking branch 'goog/ics-ub-calendar-cream' into catchup

This commit is contained in:
Michael Chan 2013-02-25 16:44:23 -08:00
commit 8ee471e8aa
90 changed files with 2922 additions and 323 deletions

View File

@ -3,7 +3,9 @@ include $(CLEAR_VARS)
# Include res dir from chips
chips_dir := ../../../frameworks/ex/chips/res
res_dirs := $(chips_dir) res
color_picker_dir := ../../../frameworks/opt/colorpicker/res
res_dirs := $(chips_dir) $(color_picker_dir) res
src_dirs := src
LOCAL_EMMA_COVERAGE_FILTER := +com.android.calendar.*
@ -22,6 +24,7 @@ LOCAL_SRC_FILES := $(call all-java-files-under,$(src_dirs))
LOCAL_STATIC_JAVA_LIBRARIES := \
android-common \
android-common-chips \
colorpicker \
android-support-v4 \
calendar-common
@ -35,6 +38,7 @@ LOCAL_PROGUARD_FLAG_FILES := proguard.flags
LOCAL_AAPT_FLAGS := --auto-add-overlay
LOCAL_AAPT_FLAGS += --extra-packages com.android.ex.chips
LOCAL_AAPT_FLAGS += --extra-packages com.android.colorpicker
include $(BUILD_PACKAGE)

View File

@ -15,3 +15,4 @@ target=android-17
android.library=false
android.library.reference.1=../../../frameworks/ex/chips
android.library.reference.2=../../../frameworks/opt/calendar
android.library.reference.3=../../../frameworks/opt/colorpicker

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 994 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@ -28,24 +28,37 @@
android:text="@string/edit_event_calendar_label"
style="@style/TextAppearance.EditEvent_Label"
android:gravity="center_vertical" />
<FrameLayout
android:id="@+id/calendar_selector_wrapper"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:layout_marginRight="12dip"
android:layout_marginLeft="12dip"
android:focusable="true" >
<Spinner
android:id="@+id/calendars_spinner"
android:prompt="@string/edit_event_calendar_label"
android:layout_gravity="center_vertical"
android:gravity="center_vertical"
android:layout_height="wrap_content"
<LinearLayout
android:id="@+id/calendar_selector_wrapper"
android:layout_width="match_parent"
android:layout_marginRight="0dip"
android:layout_marginLeft="0dip"
style="@style/TextAppearance.EditEvent_Spinner"/>
</FrameLayout>
android:layout_height="wrap_content"
android:layout_marginLeft="12dip"
android:layout_marginRight="12dip"
android:focusable="true" >
<Spinner
android:id="@+id/calendars_spinner"
style="@style/TextAppearance.EditEvent_Spinner"
android:layout_width="0dip"
android:layout_weight="1"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="0dip"
android:layout_marginRight="0dip"
android:gravity="center_vertical"
android:prompt="@string/edit_event_calendar_label" />
<ImageButton
android:id="@+id/change_color_new_event"
style="?android:attr/buttonBarButtonStyle"
android:src="@drawable/ic_menu_colorpicker_holo_dark"
android:contentDescription="@string/choose_event_color_label"
android:layout_width="48dip"
android:layout_height="48dip"
android:enabled="false"
android:layout_gravity="center_vertical"
android:padding="8dip"
android:scaleType="centerInside"
android:visibility="invisible" />
</LinearLayout>
</TableRow>
<!-- CALENDAR DISPLAY for existing events -->
@ -57,13 +70,37 @@
<TextView
android:text="@string/edit_event_calendar_label"
style="@style/TextAppearance.EditEvent_Label" />
<TextView
android:id="@+id/calendar_textview"
android:textColor="#FFFFFFFF"
android:minHeight="48dip"
android:paddingLeft="12dip"
android:paddingRight="12dip"
style="@style/TextAppearance.EditEvent_Value" />
<LinearLayout
android:id="@+id/calendar_textview_with_colorpicker"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="12dip"
android:layout_marginRight="12dip" >
<TextView
android:id="@+id/calendar_textview"
style="@style/TextAppearance.EditEvent_Value"
android:layout_width="0dip"
android:layout_weight="1"
android:paddingLeft="12dip"
android:paddingRight="12dip"
android:layout_marginLeft="0dip"
android:layout_marginRight="0dip"
android:layout_height="wrap_content"
android:minHeight="48dip"
android:textColor="#FFFFFFFF" />
<ImageButton
android:id="@+id/change_color_existing_event"
style="?android:attr/buttonBarButtonStyle"
android:src="@drawable/ic_menu_colorpicker_holo_dark"
android:contentDescription="@string/choose_event_color_label"
android:layout_width="48dip"
android:layout_height="48dip"
android:enabled="false"
android:layout_gravity="center_vertical"
android:padding="8dip"
android:scaleType="centerInside"
android:visibility="gone" />
</LinearLayout>
</TableRow>
<!-- WHAT -->

View File

@ -23,13 +23,17 @@
android:layout_marginTop="6dip"
android:layout_marginBottom="6dip">
<View
android:id="@+id/color"
android:layout_width="16dip"
android:layout_height="16dip"
<FrameLayout
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="16dip"
android:layout_marginRight="16dip" />
android:padding="@dimen/color_view_touch_area_increase" >
<View
android:id="@+id/color"
android:layout_width="16dip"
android:layout_height="16dip" />
</FrameLayout>
<LinearLayout
android:layout_width="0dip"

View File

@ -22,7 +22,7 @@
<!-- CALENDARS SELECTOR for new events -->
<LinearLayout
android:id="@+id/calendar_selector_group"
android:orientation="vertical"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:focusable="true" >
@ -30,41 +30,74 @@
android:id="@+id/calendars_spinner"
android:prompt="@string/edit_event_calendar_label"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:layout_width="0dip"
android:layout_weight="1"
android:layout_gravity="center_vertical"
android:paddingBottom="10dip"
android:paddingTop="10dip"
android:layout_marginLeft="12dip"
android:layout_marginRight="12dip"
android:gravity="center_vertical" />
<ImageButton
android:id="@+id/change_color_new_event"
style="?android:attr/buttonBarButtonStyle"
android:src="@drawable/ic_menu_colorpicker_holo_dark"
android:contentDescription="@string/choose_event_color_label"
android:layout_width="48dip"
android:layout_height="48dip"
android:enabled="false"
android:layout_marginRight="8dip"
android:layout_gravity="center_vertical"
android:padding="8dip"
android:scaleType="centerInside"
android:visibility="invisible" />
</LinearLayout>
<!-- CALENDAR DISPLAY for existing events -->
<LinearLayout
android:id="@+id/calendar_group"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="5dip"
android:paddingTop="5dip"
android:focusable="true">
<TextView
android:id="@+id/calendar_textview"
<LinearLayout
android:layout_width="0dip"
android:layout_weight="1"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:textColor="#FFFFFFFF"
android:layout_marginLeft="24dip"
android:layout_marginRight="24dip"
style="@style/TextAppearance.EditEvent_Value" />
<TextView
android:id="@+id/calendar_textview_secondary"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:textColor="#FFFFFFFF"
android:layout_marginLeft="24dip"
android:layout_marginRight="24dip"
android:textSize="14sp"
style="@style/TextAppearance.EditEvent_Value" />
android:focusable="true"
android:orientation="vertical" >
<TextView
android:id="@+id/calendar_textview"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:textColor="#FFFFFFFF"
android:layout_marginLeft="24dip"
android:layout_marginRight="24dip"
style="@style/TextAppearance.EditEvent_Value" />
<TextView
android:id="@+id/calendar_textview_secondary"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:textColor="#FFFFFFFF"
android:layout_marginLeft="24dip"
android:layout_marginRight="24dip"
android:textSize="14sp"
style="@style/TextAppearance.EditEvent_Value" />
</LinearLayout>
<ImageButton
android:id="@+id/change_color_existing_event"
style="?android:attr/buttonBarButtonStyle"
android:src="@drawable/ic_menu_colorpicker_holo_dark"
android:contentDescription="@string/choose_event_color_label"
android:layout_width="48dip"
android:layout_height="48dip"
android:enabled="false"
android:layout_marginRight="8dip"
android:layout_gravity="center_vertical"
android:padding="8dip"
android:scaleType="centerInside"
android:visibility="gone" />
</LinearLayout>
<!-- WHAT -->

View File

@ -54,95 +54,7 @@
<!-- Container for the event's headline
Name, Date, Time & Location
-->
<LinearLayout
android:id="@+id/event_info_headline"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingLeft="16dip"
android:paddingRight="16dip"
android:paddingTop="8dip"
android:paddingBottom="16dip"
android:layout_weight="1"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<!-- WHAT -->
<TextView
android:id="@+id/title"
android:layout_weight=".8"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:autoLink="all"
android:textIsSelectable="true"
android:textStyle="bold"
android:textColor="@color/event_info_headline_color"
android:textColorLink="@color/event_info_headline_color"
style="?android:attr/textAppearanceLarge"
android:textSize="24sp" />
<!-- BUTTONS -->
<LinearLayout
android:id="@+id/event_info_buttons_container"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right">
<Button
android:id="@+id/edit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:enabled="false"
style="?android:attr/buttonBarButtonStyle"
android:textColor="@color/event_info_headline_color"
android:text="@string/edit_event_label" />
<Button
android:id="@+id/delete"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
style="?android:attr/buttonBarButtonStyle"
android:textColor="@color/event_info_headline_color"
android:text="@string/delete_label" />
</LinearLayout>
</LinearLayout>
<!-- WHEN -->
<TextView
android:id="@+id/when_datetime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="4dip"
android:textIsSelectable="true"
android:textSize="14sp"
android:textColor="@color/event_info_headline_color"
style="?android:attr/textAppearanceLarge" />
<TextView
android:id="@+id/when_repeat"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="-3dip"
android:textSize="14sp"
android:textColor="@color/event_info_headline_transparent_color"
style="?android:attr/textAppearanceLarge" />
<!-- WHERE -->
<TextView
android:id="@+id/where"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="end"
android:singleLine="false"
android:layout_marginTop="4dip"
android:textIsSelectable="true"
android:textSize="14sp"
android:textColor="@color/event_info_headline_color"
android:textColorLink="@color/event_info_headline_link_color"
style="?android:attr/textAppearanceLarge" />
</LinearLayout>
<include layout="@layout/event_info_headline" />
<LinearLayout
android:layout_width="match_parent"

View File

@ -93,8 +93,22 @@
android:layout_marginLeft="16dip"
android:layout_marginRight="16dip"
android:layout_gravity="right">
<ImageButton
android:id="@+id/change_color"
style="?android:attr/buttonBarButtonStyle"
android:src="@drawable/ic_menu_colorpicker_holo_dark"
android:contentDescription="@string/choose_event_color_label"
android:layout_width="48dip"
android:layout_height="48dip"
android:enabled="false"
android:visibility="gone"
android:layout_marginRight="8dip"
android:padding="8dip"
android:scaleType="centerInside" />
<ImageButton
android:id="@+id/edit"
style="?android:attr/buttonBarButtonStyle"
android:src="@drawable/ic_menu_compose_holo_dark"
android:contentDescription="@string/edit_label"
android:layout_width="48dip"
android:layout_height="48dip"
@ -102,21 +116,18 @@
android:visibility="gone"
android:layout_marginRight="8dip"
android:padding="8dip"
android:scaleType="centerInside"
style="?android:attr/buttonBarButtonStyle"
android:src="@drawable/ic_menu_compose_holo_dark" />
android:scaleType="centerInside" />
<ImageButton
android:id="@+id/delete"
style="?android:attr/buttonBarButtonStyle"
android:src="@drawable/ic_menu_trash_holo_dark"
android:contentDescription="@string/delete_label"
android:layout_width="48dip"
android:layout_height="48dip"
android:layout_marginLeft="8dip"
android:padding="8dip"
android:scaleType="centerInside"
android:enabled="false"
android:visibility="gone"
style="?android:attr/buttonBarButtonStyle"
android:src="@drawable/ic_menu_trash_holo_dark" />
android:padding="8dip"
android:scaleType="centerInside" />
</LinearLayout>
</LinearLayout>

View File

@ -0,0 +1,124 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2013 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/event_info_headline"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical"
android:paddingBottom="16dip"
android:paddingLeft="16dip"
android:paddingRight="16dip"
android:paddingTop="8dip" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<!-- WHAT -->
<TextView
android:id="@+id/title"
style="?android:attr/textAppearanceLarge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight=".8"
android:autoLink="all"
android:textColor="@color/event_info_headline_color"
android:textColorLink="@color/event_info_headline_color"
android:textIsSelectable="true"
android:textSize="24sp"
android:textStyle="bold" />
<!-- BUTTONS -->
<LinearLayout
android:id="@+id/event_info_buttons_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:orientation="horizontal" >
<Button
android:id="@+id/change_color"
style="?android:attr/buttonBarButtonStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:enabled="false"
android:visibility="gone"
android:text="@string/choose_event_color_label"
android:textColor="@color/event_info_headline_color" />
<Button
android:id="@+id/edit"
style="?android:attr/buttonBarButtonStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:enabled="false"
android:text="@string/edit_event_label"
android:textColor="@color/event_info_headline_color" />
<Button
android:id="@+id/delete"
style="?android:attr/buttonBarButtonStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/delete_label"
android:textColor="@color/event_info_headline_color" />
</LinearLayout>
</LinearLayout>
<!-- WHEN -->
<TextView
android:id="@+id/when_datetime"
style="?android:attr/textAppearanceLarge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="4dip"
android:textColor="@color/event_info_headline_color"
android:textIsSelectable="true"
android:textSize="14sp" />
<TextView
android:id="@+id/when_repeat"
style="?android:attr/textAppearanceLarge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="-3dip"
android:textColor="@color/event_info_headline_transparent_color"
android:textSize="14sp" />
<!-- WHERE -->
<TextView
android:id="@+id/where"
style="?android:attr/textAppearanceLarge"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="4dip"
android:ellipsize="end"
android:singleLine="false"
android:textColor="@color/event_info_headline_color"
android:textColorLink="@color/event_info_headline_link_color"
android:textIsSelectable="true"
android:textSize="14sp" />
</LinearLayout>

View File

@ -16,6 +16,13 @@
<menu
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id='@+id/info_action_change_color'
android:alphabeticShortcut="c"
android:title="@string/choose_event_color_label"
android:icon="@drawable/ic_menu_colorpicker_holo_light"
android:showAsAction="withText|always"
android:enabled="false"
android:visible="false" />
<item android:id="@+id/info_action_edit"
android:alphabeticShortcut="e"
android:title="@string/edit_label"

View File

@ -99,6 +99,10 @@
<string name="add_account" msgid="1669072099756774952">"Voeg rekening by"</string>
<string name="view_event_calendar_label" msgid="6126231656338241140">"Kalender:"</string>
<string name="view_event_organizer_label" msgid="2753151795647402277">"Organiseerder:"</string>
<string name="choose_event_color_label" msgid="2192923501857428854">"Kies geleentheidkleur"</string>
<string name="event_color_picker_dialog_title" msgid="4631938661655159511">"Geleentheidkleur"</string>
<string name="event_color_set_to_default" msgid="3447218820785647967">"Stel na verstek kalenderkleur"</string>
<string name="calendar_color_picker_dialog_title" msgid="3595509200561433667">"Kalenderkleur"</string>
<string name="view_event_response_label" msgid="8382281658458798329">"Gaan jy bywoon?"</string>
<string name="response_yes" msgid="2027484304899988350">"Ja"</string>
<string name="response_maybe" msgid="7791500973627841695">"Miskien"</string>
@ -188,6 +192,24 @@
<item quantity="other" msgid="1997405398178470838">"+<xliff:g id="NUMBER">%d</xliff:g>"</item>
</plurals>
<string name="gadget_no_events" msgid="5209110911088302855">"Geen komende kalendergebeurtenisse nie"</string>
<!-- no translation found for preferences_experimental_category (8111213192001230350) -->
<skip />
<!-- no translation found for preferences_reminders_category (3179315692653755740) -->
<skip />
<!-- no translation found for preferences_reminders_responded_label (1832493092701800837) -->
<skip />
<!-- no translation found for preferences_reminders_responded_description (4110643636441722713) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_label (8529712276644546893) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_description (65969073433791290) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_start (3433058529220285232) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_end (7492883554865119346) -->
<skip />
<!-- no translation found for preferences_debug_category (6203278208385095018) -->
<skip />
<string name="copy_db" msgid="437691290566699292">"Stuur databasis"</string>
<string name="directory_searching_fmt" msgid="1232037509095606687">"Deursoek tans <xliff:g id="DOMAIN">%s</xliff:g>…"</string>
<string name="accessibility_remove_attendee" msgid="7082751172654698863">"Verwyder deelnemer"</string>

View File

@ -99,6 +99,10 @@
<string name="add_account" msgid="1669072099756774952">"መለያ አክል"</string>
<string name="view_event_calendar_label" msgid="6126231656338241140">"የቀን አቆጣጠር:"</string>
<string name="view_event_organizer_label" msgid="2753151795647402277">"አዘጋጅ፡"</string>
<string name="choose_event_color_label" msgid="2192923501857428854">"የክስተት ቀለም ምረጥ"</string>
<string name="event_color_picker_dialog_title" msgid="4631938661655159511">"የክስተት ቀለም"</string>
<string name="event_color_set_to_default" msgid="3447218820785647967">"ወደ ነባሪ የቀን መቁጠሪያ ቀለም አዋቅር"</string>
<string name="calendar_color_picker_dialog_title" msgid="3595509200561433667">"የቀን መቁጠሪያ ቀለም"</string>
<string name="view_event_response_label" msgid="8382281658458798329">"ይካፈላሉ?"</string>
<string name="response_yes" msgid="2027484304899988350">"አዎ"</string>
<string name="response_maybe" msgid="7791500973627841695">"ምናልባት"</string>
@ -188,6 +192,24 @@
<item quantity="other" msgid="1997405398178470838">"+<xliff:g id="NUMBER">%d</xliff:g>"</item>
</plurals>
<string name="gadget_no_events" msgid="5209110911088302855">"በቅርቡ ምንም ክስተቶች የሉም"</string>
<!-- no translation found for preferences_experimental_category (8111213192001230350) -->
<skip />
<!-- no translation found for preferences_reminders_category (3179315692653755740) -->
<skip />
<!-- no translation found for preferences_reminders_responded_label (1832493092701800837) -->
<skip />
<!-- no translation found for preferences_reminders_responded_description (4110643636441722713) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_label (8529712276644546893) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_description (65969073433791290) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_start (3433058529220285232) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_end (7492883554865119346) -->
<skip />
<!-- no translation found for preferences_debug_category (6203278208385095018) -->
<skip />
<string name="copy_db" msgid="437691290566699292">"የውሂብ ጎታ ላክ"</string>
<string name="directory_searching_fmt" msgid="1232037509095606687">"በመፈለግ ላይ<xliff:g id="DOMAIN">%s</xliff:g>..."</string>
<string name="accessibility_remove_attendee" msgid="7082751172654698863">"ተካፋይ አስወግድ"</string>

View File

@ -99,6 +99,10 @@
<string name="add_account" msgid="1669072099756774952">"إضافة حساب"</string>
<string name="view_event_calendar_label" msgid="6126231656338241140">"التقويم:"</string>
<string name="view_event_organizer_label" msgid="2753151795647402277">"المنظِّم:"</string>
<string name="choose_event_color_label" msgid="2192923501857428854">"اختيار لون الحدث"</string>
<string name="event_color_picker_dialog_title" msgid="4631938661655159511">"لون الحدث"</string>
<string name="event_color_set_to_default" msgid="3447218820785647967">"تعيين على لون التقويم الافتراضي"</string>
<string name="calendar_color_picker_dialog_title" msgid="3595509200561433667">"لون التقويم"</string>
<string name="view_event_response_label" msgid="8382281658458798329">"هل ستحضر؟"</string>
<string name="response_yes" msgid="2027484304899988350">"نعم"</string>
<string name="response_maybe" msgid="7791500973627841695">"ربما"</string>
@ -188,6 +192,24 @@
<item quantity="other" msgid="1997405398178470838">"+<xliff:g id="NUMBER">%d</xliff:g>"</item>
</plurals>
<string name="gadget_no_events" msgid="5209110911088302855">"لا توجد أحداث تقويم قادمة"</string>
<!-- no translation found for preferences_experimental_category (8111213192001230350) -->
<skip />
<!-- no translation found for preferences_reminders_category (3179315692653755740) -->
<skip />
<!-- no translation found for preferences_reminders_responded_label (1832493092701800837) -->
<skip />
<!-- no translation found for preferences_reminders_responded_description (4110643636441722713) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_label (8529712276644546893) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_description (65969073433791290) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_start (3433058529220285232) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_end (7492883554865119346) -->
<skip />
<!-- no translation found for preferences_debug_category (6203278208385095018) -->
<skip />
<string name="copy_db" msgid="437691290566699292">"إرسال قاعدة البيانات"</string>
<string name="directory_searching_fmt" msgid="1232037509095606687">"جارِ البحث في <xliff:g id="DOMAIN">%s</xliff:g>…"</string>
<string name="accessibility_remove_attendee" msgid="7082751172654698863">"إزالة أحد الحضور"</string>

View File

@ -99,6 +99,10 @@
<string name="add_account" msgid="1669072099756774952">"Дадаць уліковы запіс"</string>
<string name="view_event_calendar_label" msgid="6126231656338241140">"Каляндар:"</string>
<string name="view_event_organizer_label" msgid="2753151795647402277">"Арганізатар:"</string>
<string name="choose_event_color_label" msgid="2192923501857428854">"Выберыце колер мерапрыемства"</string>
<string name="event_color_picker_dialog_title" msgid="4631938661655159511">"Колер мерапрыемства"</string>
<string name="event_color_set_to_default" msgid="3447218820785647967">"Усталяваць колер календара па змаўчаннi"</string>
<string name="calendar_color_picker_dialog_title" msgid="3595509200561433667">"Колер календара"</string>
<string name="view_event_response_label" msgid="8382281658458798329">"Удзел?"</string>
<string name="response_yes" msgid="2027484304899988350">"Так"</string>
<string name="response_maybe" msgid="7791500973627841695">"Магчыма"</string>
@ -188,6 +192,24 @@
<item quantity="other" msgid="1997405398178470838">"+<xliff:g id="NUMBER">%d</xliff:g>"</item>
</plurals>
<string name="gadget_no_events" msgid="5209110911088302855">"Няма падзей календара, якія павiнны адбыцца"</string>
<!-- no translation found for preferences_experimental_category (8111213192001230350) -->
<skip />
<!-- no translation found for preferences_reminders_category (3179315692653755740) -->
<skip />
<!-- no translation found for preferences_reminders_responded_label (1832493092701800837) -->
<skip />
<!-- no translation found for preferences_reminders_responded_description (4110643636441722713) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_label (8529712276644546893) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_description (65969073433791290) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_start (3433058529220285232) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_end (7492883554865119346) -->
<skip />
<!-- no translation found for preferences_debug_category (6203278208385095018) -->
<skip />
<string name="copy_db" msgid="437691290566699292">"Адправіць базу дадзеных"</string>
<string name="directory_searching_fmt" msgid="1232037509095606687">"Пошук дамена <xliff:g id="DOMAIN">%s</xliff:g>..."</string>
<string name="accessibility_remove_attendee" msgid="7082751172654698863">"Выдаліць удзельніка"</string>

View File

@ -99,6 +99,10 @@
<string name="add_account" msgid="1669072099756774952">"Добавяне на профил"</string>
<string name="view_event_calendar_label" msgid="6126231656338241140">"Календар:"</string>
<string name="view_event_organizer_label" msgid="2753151795647402277">"Организатор:"</string>
<string name="choose_event_color_label" msgid="2192923501857428854">"Избиране на цвят на събитието"</string>
<string name="event_color_picker_dialog_title" msgid="4631938661655159511">"Цвят на събитието"</string>
<string name="event_color_set_to_default" msgid="3447218820785647967">"Задаване на цвета на стандартния за календара"</string>
<string name="calendar_color_picker_dialog_title" msgid="3595509200561433667">"Цвят на календара"</string>
<string name="view_event_response_label" msgid="8382281658458798329">"Ще присъствате ли?"</string>
<string name="response_yes" msgid="2027484304899988350">"Да"</string>
<string name="response_maybe" msgid="7791500973627841695">"Може би"</string>
@ -188,6 +192,24 @@
<item quantity="other" msgid="1997405398178470838">"+<xliff:g id="NUMBER">%d</xliff:g>"</item>
</plurals>
<string name="gadget_no_events" msgid="5209110911088302855">"Няма предстоящи събития от календара"</string>
<!-- no translation found for preferences_experimental_category (8111213192001230350) -->
<skip />
<!-- no translation found for preferences_reminders_category (3179315692653755740) -->
<skip />
<!-- no translation found for preferences_reminders_responded_label (1832493092701800837) -->
<skip />
<!-- no translation found for preferences_reminders_responded_description (4110643636441722713) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_label (8529712276644546893) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_description (65969073433791290) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_start (3433058529220285232) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_end (7492883554865119346) -->
<skip />
<!-- no translation found for preferences_debug_category (6203278208385095018) -->
<skip />
<string name="copy_db" msgid="437691290566699292">"Изпращане на базата от данни"</string>
<string name="directory_searching_fmt" msgid="1232037509095606687">"Търси се <xliff:g id="DOMAIN">%s</xliff:g>…"</string>
<string name="accessibility_remove_attendee" msgid="7082751172654698863">"Премахване на участник"</string>

View File

@ -99,6 +99,10 @@
<string name="add_account" msgid="1669072099756774952">"Afegeix un compte"</string>
<string name="view_event_calendar_label" msgid="6126231656338241140">"Calendari:"</string>
<string name="view_event_organizer_label" msgid="2753151795647402277">"Organitzador:"</string>
<string name="choose_event_color_label" msgid="2192923501857428854">"Tria el color de l\'esdeveniment"</string>
<string name="event_color_picker_dialog_title" msgid="4631938661655159511">"Color de l\'esdeveniment"</string>
<string name="event_color_set_to_default" msgid="3447218820785647967">"Defineix el color del calendari predeterminat"</string>
<string name="calendar_color_picker_dialog_title" msgid="3595509200561433667">"Color del calendari"</string>
<string name="view_event_response_label" msgid="8382281658458798329">"Hi assistireu?"</string>
<string name="response_yes" msgid="2027484304899988350">"Sí"</string>
<string name="response_maybe" msgid="7791500973627841695">"Potser"</string>
@ -188,6 +192,24 @@
<item quantity="other" msgid="1997405398178470838">"+<xliff:g id="NUMBER">%d</xliff:g>"</item>
</plurals>
<string name="gadget_no_events" msgid="5209110911088302855">"No hi ha cap esdeveniment del calendari proper"</string>
<!-- no translation found for preferences_experimental_category (8111213192001230350) -->
<skip />
<!-- no translation found for preferences_reminders_category (3179315692653755740) -->
<skip />
<!-- no translation found for preferences_reminders_responded_label (1832493092701800837) -->
<skip />
<!-- no translation found for preferences_reminders_responded_description (4110643636441722713) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_label (8529712276644546893) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_description (65969073433791290) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_start (3433058529220285232) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_end (7492883554865119346) -->
<skip />
<!-- no translation found for preferences_debug_category (6203278208385095018) -->
<skip />
<string name="copy_db" msgid="437691290566699292">"Envia la base de dades"</string>
<string name="directory_searching_fmt" msgid="1232037509095606687">"S\'està cercant <xliff:g id="DOMAIN">%s</xliff:g>…"</string>
<string name="accessibility_remove_attendee" msgid="7082751172654698863">"Elimina un assistent"</string>

View File

@ -99,6 +99,10 @@
<string name="add_account" msgid="1669072099756774952">"Přidat účet"</string>
<string name="view_event_calendar_label" msgid="6126231656338241140">"Kalendář:"</string>
<string name="view_event_organizer_label" msgid="2753151795647402277">"Organizátor:"</string>
<string name="choose_event_color_label" msgid="2192923501857428854">"Vyberte barvu události."</string>
<string name="event_color_picker_dialog_title" msgid="4631938661655159511">"Barva události"</string>
<string name="event_color_set_to_default" msgid="3447218820785647967">"Nastavit na výchozí barvu kalendáře"</string>
<string name="calendar_color_picker_dialog_title" msgid="3595509200561433667">"Barva kalendáře"</string>
<string name="view_event_response_label" msgid="8382281658458798329">"Zúčastníte se?"</string>
<string name="response_yes" msgid="2027484304899988350">"Ano"</string>
<string name="response_maybe" msgid="7791500973627841695">"Možná"</string>
@ -188,6 +192,24 @@
<item quantity="other" msgid="1997405398178470838">"+<xliff:g id="NUMBER">%d</xliff:g>"</item>
</plurals>
<string name="gadget_no_events" msgid="5209110911088302855">"Žádné nadcházející události"</string>
<!-- no translation found for preferences_experimental_category (8111213192001230350) -->
<skip />
<!-- no translation found for preferences_reminders_category (3179315692653755740) -->
<skip />
<!-- no translation found for preferences_reminders_responded_label (1832493092701800837) -->
<skip />
<!-- no translation found for preferences_reminders_responded_description (4110643636441722713) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_label (8529712276644546893) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_description (65969073433791290) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_start (3433058529220285232) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_end (7492883554865119346) -->
<skip />
<!-- no translation found for preferences_debug_category (6203278208385095018) -->
<skip />
<string name="copy_db" msgid="437691290566699292">"Odeslat databázi"</string>
<string name="directory_searching_fmt" msgid="1232037509095606687">"Vyhledávání na webu <xliff:g id="DOMAIN">%s</xliff:g>…"</string>
<string name="accessibility_remove_attendee" msgid="7082751172654698863">"Odebrat účastníka"</string>

View File

@ -99,6 +99,10 @@
<string name="add_account" msgid="1669072099756774952">"Tilføj konto"</string>
<string name="view_event_calendar_label" msgid="6126231656338241140">"Kalender:"</string>
<string name="view_event_organizer_label" msgid="2753151795647402277">"Organisator:"</string>
<string name="choose_event_color_label" msgid="2192923501857428854">"Vælg begivenhedsfarve"</string>
<string name="event_color_picker_dialog_title" msgid="4631938661655159511">"Begivenhedsfarve"</string>
<string name="event_color_set_to_default" msgid="3447218820785647967">"Indstil som standardkalenderfarve"</string>
<string name="calendar_color_picker_dialog_title" msgid="3595509200561433667">"Kalenderfarve"</string>
<string name="view_event_response_label" msgid="8382281658458798329">"Deltager?"</string>
<string name="response_yes" msgid="2027484304899988350">"Ja"</string>
<string name="response_maybe" msgid="7791500973627841695">"Måske"</string>
@ -188,6 +192,24 @@
<item quantity="other" msgid="1997405398178470838">"+<xliff:g id="NUMBER">%d</xliff:g>"</item>
</plurals>
<string name="gadget_no_events" msgid="5209110911088302855">"Ingen kommende kalenderbegivenheder"</string>
<!-- no translation found for preferences_experimental_category (8111213192001230350) -->
<skip />
<!-- no translation found for preferences_reminders_category (3179315692653755740) -->
<skip />
<!-- no translation found for preferences_reminders_responded_label (1832493092701800837) -->
<skip />
<!-- no translation found for preferences_reminders_responded_description (4110643636441722713) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_label (8529712276644546893) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_description (65969073433791290) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_start (3433058529220285232) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_end (7492883554865119346) -->
<skip />
<!-- no translation found for preferences_debug_category (6203278208385095018) -->
<skip />
<string name="copy_db" msgid="437691290566699292">"Send database"</string>
<string name="directory_searching_fmt" msgid="1232037509095606687">"Søger efter <xliff:g id="DOMAIN">%s</xliff:g>…"</string>
<string name="accessibility_remove_attendee" msgid="7082751172654698863">"Fjern deltager"</string>

View File

@ -99,6 +99,10 @@
<string name="add_account" msgid="1669072099756774952">"Konto hinzufügen"</string>
<string name="view_event_calendar_label" msgid="6126231656338241140">"Kalender:"</string>
<string name="view_event_organizer_label" msgid="2753151795647402277">"Organizer:"</string>
<string name="choose_event_color_label" msgid="2192923501857428854">"Terminfarbe auswählen"</string>
<string name="event_color_picker_dialog_title" msgid="4631938661655159511">"Terminfarbe"</string>
<string name="event_color_set_to_default" msgid="3447218820785647967">"Auf Standardkalenderfarbe zurücksetzen"</string>
<string name="calendar_color_picker_dialog_title" msgid="3595509200561433667">"Kalenderfarbe"</string>
<string name="view_event_response_label" msgid="8382281658458798329">"Teilnahme?"</string>
<string name="response_yes" msgid="2027484304899988350">"Ja"</string>
<string name="response_maybe" msgid="7791500973627841695">"Vielleicht"</string>
@ -188,6 +192,24 @@
<item quantity="other" msgid="1997405398178470838">"+<xliff:g id="NUMBER">%d</xliff:g>"</item>
</plurals>
<string name="gadget_no_events" msgid="5209110911088302855">"Keine anstehenden Termine"</string>
<!-- no translation found for preferences_experimental_category (8111213192001230350) -->
<skip />
<!-- no translation found for preferences_reminders_category (3179315692653755740) -->
<skip />
<!-- no translation found for preferences_reminders_responded_label (1832493092701800837) -->
<skip />
<!-- no translation found for preferences_reminders_responded_description (4110643636441722713) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_label (8529712276644546893) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_description (65969073433791290) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_start (3433058529220285232) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_end (7492883554865119346) -->
<skip />
<!-- no translation found for preferences_debug_category (6203278208385095018) -->
<skip />
<string name="copy_db" msgid="437691290566699292">"Datenbank senden"</string>
<string name="directory_searching_fmt" msgid="1232037509095606687">"<xliff:g id="DOMAIN">%s</xliff:g> wird durchsucht…"</string>
<string name="accessibility_remove_attendee" msgid="7082751172654698863">"Teilnehmer entfernen"</string>

View File

@ -99,6 +99,10 @@
<string name="add_account" msgid="1669072099756774952">"Προσθήκη λογαριασμού"</string>
<string name="view_event_calendar_label" msgid="6126231656338241140">"Ημερολόγιο:"</string>
<string name="view_event_organizer_label" msgid="2753151795647402277">"Διοργανωτής:"</string>
<string name="choose_event_color_label" msgid="2192923501857428854">"Επιλέξτε το χρώμα συμβάντος"</string>
<string name="event_color_picker_dialog_title" msgid="4631938661655159511">"Χρώμα συμβάντος"</string>
<string name="event_color_set_to_default" msgid="3447218820785647967">"Ορισμός ως προεπιλεγμένου χρώματος ημερολογίου"</string>
<string name="calendar_color_picker_dialog_title" msgid="3595509200561433667">"Χρώμα ημερολογίου"</string>
<string name="view_event_response_label" msgid="8382281658458798329">"Θα παραβρεθείτε;"</string>
<string name="response_yes" msgid="2027484304899988350">"Ναι"</string>
<string name="response_maybe" msgid="7791500973627841695">"Ίσως"</string>
@ -188,6 +192,24 @@
<item quantity="other" msgid="1997405398178470838">"+<xliff:g id="NUMBER">%d</xliff:g>"</item>
</plurals>
<string name="gadget_no_events" msgid="5209110911088302855">"Δεν υπάρχουν προσεχή συμβάντα ημερολογίου"</string>
<!-- no translation found for preferences_experimental_category (8111213192001230350) -->
<skip />
<!-- no translation found for preferences_reminders_category (3179315692653755740) -->
<skip />
<!-- no translation found for preferences_reminders_responded_label (1832493092701800837) -->
<skip />
<!-- no translation found for preferences_reminders_responded_description (4110643636441722713) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_label (8529712276644546893) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_description (65969073433791290) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_start (3433058529220285232) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_end (7492883554865119346) -->
<skip />
<!-- no translation found for preferences_debug_category (6203278208385095018) -->
<skip />
<string name="copy_db" msgid="437691290566699292">"Αποστολή βάσης δεδομένων"</string>
<string name="directory_searching_fmt" msgid="1232037509095606687">"Αναζήτηση <xliff:g id="DOMAIN">%s</xliff:g>…"</string>
<string name="accessibility_remove_attendee" msgid="7082751172654698863">"Κατάργηση συμμετέχοντα"</string>

View File

@ -99,6 +99,10 @@
<string name="add_account" msgid="1669072099756774952">"Add account"</string>
<string name="view_event_calendar_label" msgid="6126231656338241140">"Calendar:"</string>
<string name="view_event_organizer_label" msgid="2753151795647402277">"Organiser:"</string>
<string name="choose_event_color_label" msgid="2192923501857428854">"Choose event colour"</string>
<string name="event_color_picker_dialog_title" msgid="4631938661655159511">"Event Colour"</string>
<string name="event_color_set_to_default" msgid="3447218820785647967">"Set to default calendar colour"</string>
<string name="calendar_color_picker_dialog_title" msgid="3595509200561433667">"Calendar Colour"</string>
<string name="view_event_response_label" msgid="8382281658458798329">"Attending?"</string>
<string name="response_yes" msgid="2027484304899988350">"Yes"</string>
<string name="response_maybe" msgid="7791500973627841695">" Maybe"</string>
@ -188,6 +192,24 @@
<item quantity="other" msgid="1997405398178470838">"+<xliff:g id="NUMBER">%d</xliff:g>"</item>
</plurals>
<string name="gadget_no_events" msgid="5209110911088302855">"No upcoming calendar events"</string>
<!-- no translation found for preferences_experimental_category (8111213192001230350) -->
<skip />
<!-- no translation found for preferences_reminders_category (3179315692653755740) -->
<skip />
<!-- no translation found for preferences_reminders_responded_label (1832493092701800837) -->
<skip />
<!-- no translation found for preferences_reminders_responded_description (4110643636441722713) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_label (8529712276644546893) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_description (65969073433791290) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_start (3433058529220285232) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_end (7492883554865119346) -->
<skip />
<!-- no translation found for preferences_debug_category (6203278208385095018) -->
<skip />
<string name="copy_db" msgid="437691290566699292">"Send database"</string>
<string name="directory_searching_fmt" msgid="1232037509095606687">"Searching <xliff:g id="DOMAIN">%s</xliff:g>…"</string>
<string name="accessibility_remove_attendee" msgid="7082751172654698863">"Remove attendee"</string>

View File

@ -99,6 +99,10 @@
<string name="add_account" msgid="1669072099756774952">"Agregar cuenta"</string>
<string name="view_event_calendar_label" msgid="6126231656338241140">"Calendario:"</string>
<string name="view_event_organizer_label" msgid="2753151795647402277">"Organizador:"</string>
<string name="choose_event_color_label" msgid="2192923501857428854">"Elige un color para el evento."</string>
<string name="event_color_picker_dialog_title" msgid="4631938661655159511">"Color del evento"</string>
<string name="event_color_set_to_default" msgid="3447218820785647967">"Establecer el color predeterminado del calendario"</string>
<string name="calendar_color_picker_dialog_title" msgid="3595509200561433667">"Color del calendario"</string>
<string name="view_event_response_label" msgid="8382281658458798329">"¿Asistirás?"</string>
<string name="response_yes" msgid="2027484304899988350">"Sí"</string>
<string name="response_maybe" msgid="7791500973627841695">"Quizá"</string>
@ -188,6 +192,24 @@
<item quantity="other" msgid="1997405398178470838">"+<xliff:g id="NUMBER">%d</xliff:g>"</item>
</plurals>
<string name="gadget_no_events" msgid="5209110911088302855">"No hay próximos eventos en el calendario"</string>
<!-- no translation found for preferences_experimental_category (8111213192001230350) -->
<skip />
<!-- no translation found for preferences_reminders_category (3179315692653755740) -->
<skip />
<!-- no translation found for preferences_reminders_responded_label (1832493092701800837) -->
<skip />
<!-- no translation found for preferences_reminders_responded_description (4110643636441722713) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_label (8529712276644546893) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_description (65969073433791290) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_start (3433058529220285232) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_end (7492883554865119346) -->
<skip />
<!-- no translation found for preferences_debug_category (6203278208385095018) -->
<skip />
<string name="copy_db" msgid="437691290566699292">"Enviar base de datos"</string>
<string name="directory_searching_fmt" msgid="1232037509095606687">"Buscando <xliff:g id="DOMAIN">%s</xliff:g>…"</string>
<string name="accessibility_remove_attendee" msgid="7082751172654698863">"Eliminar asistente"</string>

View File

@ -99,6 +99,10 @@
<string name="add_account" msgid="1669072099756774952">"Añadir cuenta"</string>
<string name="view_event_calendar_label" msgid="6126231656338241140">"Calendario:"</string>
<string name="view_event_organizer_label" msgid="2753151795647402277">"Organizador:"</string>
<string name="choose_event_color_label" msgid="2192923501857428854">"Seleccionar color del evento"</string>
<string name="event_color_picker_dialog_title" msgid="4631938661655159511">"Color del evento"</string>
<string name="event_color_set_to_default" msgid="3447218820785647967">"Establecer en color predeterminado del calendario"</string>
<string name="calendar_color_picker_dialog_title" msgid="3595509200561433667">"Color del calendario"</string>
<string name="view_event_response_label" msgid="8382281658458798329">"¿Asistirás?"</string>
<string name="response_yes" msgid="2027484304899988350">"Sí"</string>
<string name="response_maybe" msgid="7791500973627841695">"Quizás"</string>
@ -188,6 +192,24 @@
<item quantity="other" msgid="1997405398178470838">"+<xliff:g id="NUMBER">%d</xliff:g>"</item>
</plurals>
<string name="gadget_no_events" msgid="5209110911088302855">"No hay futuros eventos en el calendario."</string>
<!-- no translation found for preferences_experimental_category (8111213192001230350) -->
<skip />
<!-- no translation found for preferences_reminders_category (3179315692653755740) -->
<skip />
<!-- no translation found for preferences_reminders_responded_label (1832493092701800837) -->
<skip />
<!-- no translation found for preferences_reminders_responded_description (4110643636441722713) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_label (8529712276644546893) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_description (65969073433791290) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_start (3433058529220285232) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_end (7492883554865119346) -->
<skip />
<!-- no translation found for preferences_debug_category (6203278208385095018) -->
<skip />
<string name="copy_db" msgid="437691290566699292">"Enviar base de datos"</string>
<string name="directory_searching_fmt" msgid="1232037509095606687">"Buscando <xliff:g id="DOMAIN">%s</xliff:g>…"</string>
<string name="accessibility_remove_attendee" msgid="7082751172654698863">"Eliminar asistente"</string>

View File

@ -99,6 +99,10 @@
<string name="add_account" msgid="1669072099756774952">"Lisa konto"</string>
<string name="view_event_calendar_label" msgid="6126231656338241140">"Kalender:"</string>
<string name="view_event_organizer_label" msgid="2753151795647402277">"Korraldaja:"</string>
<string name="choose_event_color_label" msgid="2192923501857428854">"Vali sündmuse värv"</string>
<string name="event_color_picker_dialog_title" msgid="4631938661655159511">"Sündmuse värv"</string>
<string name="event_color_set_to_default" msgid="3447218820785647967">"Määra kalendrile vaikevärv"</string>
<string name="calendar_color_picker_dialog_title" msgid="3595509200561433667">"Kalendri värv"</string>
<string name="view_event_response_label" msgid="8382281658458798329">"Kas osalete?"</string>
<string name="response_yes" msgid="2027484304899988350">"Jah"</string>
<string name="response_maybe" msgid="7791500973627841695">"Võib-olla"</string>
@ -188,6 +192,24 @@
<item quantity="other" msgid="1997405398178470838">"+<xliff:g id="NUMBER">%d</xliff:g>"</item>
</plurals>
<string name="gadget_no_events" msgid="5209110911088302855">"Tulevasi kalendrisündmusi pole"</string>
<!-- no translation found for preferences_experimental_category (8111213192001230350) -->
<skip />
<!-- no translation found for preferences_reminders_category (3179315692653755740) -->
<skip />
<!-- no translation found for preferences_reminders_responded_label (1832493092701800837) -->
<skip />
<!-- no translation found for preferences_reminders_responded_description (4110643636441722713) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_label (8529712276644546893) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_description (65969073433791290) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_start (3433058529220285232) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_end (7492883554865119346) -->
<skip />
<!-- no translation found for preferences_debug_category (6203278208385095018) -->
<skip />
<string name="copy_db" msgid="437691290566699292">"Saatke andmebaas"</string>
<string name="directory_searching_fmt" msgid="1232037509095606687">"Domeeni <xliff:g id="DOMAIN">%s</xliff:g> otsimine ..."</string>
<string name="accessibility_remove_attendee" msgid="7082751172654698863">"Eemalda osaleja"</string>

View File

@ -99,6 +99,10 @@
<string name="add_account" msgid="1669072099756774952">"افزودن حساب"</string>
<string name="view_event_calendar_label" msgid="6126231656338241140">"تقویم:"</string>
<string name="view_event_organizer_label" msgid="2753151795647402277">"سازمان دهنده:"</string>
<string name="choose_event_color_label" msgid="2192923501857428854">"انتخاب رنگ رویداد"</string>
<string name="event_color_picker_dialog_title" msgid="4631938661655159511">"رنگ رویداد"</string>
<string name="event_color_set_to_default" msgid="3447218820785647967">"تنظیم روی رنگ تقویم پیش‌فرض"</string>
<string name="calendar_color_picker_dialog_title" msgid="3595509200561433667">"رنگ تقویم"</string>
<string name="view_event_response_label" msgid="8382281658458798329">"حاضر می‌شوید؟"</string>
<string name="response_yes" msgid="2027484304899988350">"بله"</string>
<string name="response_maybe" msgid="7791500973627841695">"شاید"</string>
@ -188,6 +192,24 @@
<item quantity="other" msgid="1997405398178470838">"+<xliff:g id="NUMBER">%d</xliff:g>"</item>
</plurals>
<string name="gadget_no_events" msgid="5209110911088302855">"رویداد تقویمی برای روزهای آینده وجود ندارد"</string>
<!-- no translation found for preferences_experimental_category (8111213192001230350) -->
<skip />
<!-- no translation found for preferences_reminders_category (3179315692653755740) -->
<skip />
<!-- no translation found for preferences_reminders_responded_label (1832493092701800837) -->
<skip />
<!-- no translation found for preferences_reminders_responded_description (4110643636441722713) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_label (8529712276644546893) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_description (65969073433791290) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_start (3433058529220285232) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_end (7492883554865119346) -->
<skip />
<!-- no translation found for preferences_debug_category (6203278208385095018) -->
<skip />
<string name="copy_db" msgid="437691290566699292">"ارسال پایگاه داده"</string>
<string name="directory_searching_fmt" msgid="1232037509095606687">"در حال جستجو <xliff:g id="DOMAIN">%s</xliff:g>..."</string>
<string name="accessibility_remove_attendee" msgid="7082751172654698863">"حذف شرکت کنندگان"</string>

View File

@ -99,6 +99,10 @@
<string name="add_account" msgid="1669072099756774952">"Lisää tili"</string>
<string name="view_event_calendar_label" msgid="6126231656338241140">"Kalenteri:"</string>
<string name="view_event_organizer_label" msgid="2753151795647402277">"Järjestäjä:"</string>
<string name="choose_event_color_label" msgid="2192923501857428854">"Valitse tapahtuman väri"</string>
<string name="event_color_picker_dialog_title" msgid="4631938661655159511">"Tapahtuman väri"</string>
<string name="event_color_set_to_default" msgid="3447218820785647967">"Käytä kalenterin oletusväriä"</string>
<string name="calendar_color_picker_dialog_title" msgid="3595509200561433667">"Kalenterin väri"</string>
<string name="view_event_response_label" msgid="8382281658458798329">"Osallistutko?"</string>
<string name="response_yes" msgid="2027484304899988350">"Kyllä"</string>
<string name="response_maybe" msgid="7791500973627841695">"Ehkä"</string>
@ -188,6 +192,24 @@
<item quantity="other" msgid="1997405398178470838">"+<xliff:g id="NUMBER">%d</xliff:g>"</item>
</plurals>
<string name="gadget_no_events" msgid="5209110911088302855">"Ei tulevia kalenteritapahtumia"</string>
<!-- no translation found for preferences_experimental_category (8111213192001230350) -->
<skip />
<!-- no translation found for preferences_reminders_category (3179315692653755740) -->
<skip />
<!-- no translation found for preferences_reminders_responded_label (1832493092701800837) -->
<skip />
<!-- no translation found for preferences_reminders_responded_description (4110643636441722713) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_label (8529712276644546893) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_description (65969073433791290) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_start (3433058529220285232) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_end (7492883554865119346) -->
<skip />
<!-- no translation found for preferences_debug_category (6203278208385095018) -->
<skip />
<string name="copy_db" msgid="437691290566699292">"Lähetä tietokanta"</string>
<string name="directory_searching_fmt" msgid="1232037509095606687">"Haetaan <xliff:g id="DOMAIN">%s</xliff:g>…"</string>
<string name="accessibility_remove_attendee" msgid="7082751172654698863">"Poista osallistuja"</string>

View File

@ -99,6 +99,10 @@
<string name="add_account" msgid="1669072099756774952">"Ajouter un compte"</string>
<string name="view_event_calendar_label" msgid="6126231656338241140">"Agenda :"</string>
<string name="view_event_organizer_label" msgid="2753151795647402277">"Organisateur :"</string>
<string name="choose_event_color_label" msgid="2192923501857428854">"Sélectionnez la couleur de l\'événement"</string>
<string name="event_color_picker_dialog_title" msgid="4631938661655159511">"Couleur de l\'événement"</string>
<string name="event_color_set_to_default" msgid="3447218820785647967">"Choisir la couleur de l\'agenda par défaut"</string>
<string name="calendar_color_picker_dialog_title" msgid="3595509200561433667">"Couleur de l\'agenda"</string>
<string name="view_event_response_label" msgid="8382281658458798329">"Participer ?"</string>
<string name="response_yes" msgid="2027484304899988350">"Oui"</string>
<string name="response_maybe" msgid="7791500973627841695">"Peut-être"</string>
@ -188,6 +192,24 @@
<item quantity="other" msgid="1997405398178470838">"+ <xliff:g id="NUMBER">%d</xliff:g>"</item>
</plurals>
<string name="gadget_no_events" msgid="5209110911088302855">"Aucun événement à venir"</string>
<!-- no translation found for preferences_experimental_category (8111213192001230350) -->
<skip />
<!-- no translation found for preferences_reminders_category (3179315692653755740) -->
<skip />
<!-- no translation found for preferences_reminders_responded_label (1832493092701800837) -->
<skip />
<!-- no translation found for preferences_reminders_responded_description (4110643636441722713) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_label (8529712276644546893) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_description (65969073433791290) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_start (3433058529220285232) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_end (7492883554865119346) -->
<skip />
<!-- no translation found for preferences_debug_category (6203278208385095018) -->
<skip />
<string name="copy_db" msgid="437691290566699292">"Envoyer la base de données"</string>
<string name="directory_searching_fmt" msgid="1232037509095606687">"Recherche en cours dans <xliff:g id="DOMAIN">%s</xliff:g>…"</string>
<string name="accessibility_remove_attendee" msgid="7082751172654698863">"Supprimer participant"</string>

View File

@ -99,6 +99,10 @@
<string name="add_account" msgid="1669072099756774952">"खाता जोड़ें"</string>
<string name="view_event_calendar_label" msgid="6126231656338241140">"कैलेंडर:"</string>
<string name="view_event_organizer_label" msgid="2753151795647402277">"आयोजक:"</string>
<string name="choose_event_color_label" msgid="2192923501857428854">"ईवेंट का रंग चुनें"</string>
<string name="event_color_picker_dialog_title" msgid="4631938661655159511">"ईवेंट का रंग"</string>
<string name="event_color_set_to_default" msgid="3447218820785647967">"डिफ़ॉल्ट कैलेंडर रंग पर सेट करें"</string>
<string name="calendar_color_picker_dialog_title" msgid="3595509200561433667">"कैलेंडर का रंग"</string>
<string name="view_event_response_label" msgid="8382281658458798329">"उपस्थित हो रहे हैं?"</string>
<string name="response_yes" msgid="2027484304899988350">"हां"</string>
<string name="response_maybe" msgid="7791500973627841695">" शायद"</string>
@ -188,6 +192,24 @@
<item quantity="other" msgid="1997405398178470838">"+<xliff:g id="NUMBER">%d</xliff:g>"</item>
</plurals>
<string name="gadget_no_events" msgid="5209110911088302855">"कोई आगामी कैलेंडर ईवेंट नहीं"</string>
<!-- no translation found for preferences_experimental_category (8111213192001230350) -->
<skip />
<!-- no translation found for preferences_reminders_category (3179315692653755740) -->
<skip />
<!-- no translation found for preferences_reminders_responded_label (1832493092701800837) -->
<skip />
<!-- no translation found for preferences_reminders_responded_description (4110643636441722713) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_label (8529712276644546893) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_description (65969073433791290) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_start (3433058529220285232) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_end (7492883554865119346) -->
<skip />
<!-- no translation found for preferences_debug_category (6203278208385095018) -->
<skip />
<string name="copy_db" msgid="437691290566699292">"डेटाबेस भेजें"</string>
<string name="directory_searching_fmt" msgid="1232037509095606687">"<xliff:g id="DOMAIN">%s</xliff:g> खोज रहा है..."</string>
<string name="accessibility_remove_attendee" msgid="7082751172654698863">"अतिथि निकालें"</string>

View File

@ -99,6 +99,10 @@
<string name="add_account" msgid="1669072099756774952">"Dodavanje računa"</string>
<string name="view_event_calendar_label" msgid="6126231656338241140">"Kalendar:"</string>
<string name="view_event_organizer_label" msgid="2753151795647402277">"Organizator:"</string>
<string name="choose_event_color_label" msgid="2192923501857428854">"Odabir boje za događaj"</string>
<string name="event_color_picker_dialog_title" msgid="4631938661655159511">"Boja za događaj"</string>
<string name="event_color_set_to_default" msgid="3447218820785647967">"Postavi na zadanu boju kalendara"</string>
<string name="calendar_color_picker_dialog_title" msgid="3595509200561433667">"Boja kalendara"</string>
<string name="view_event_response_label" msgid="8382281658458798329">"Sudionici?"</string>
<string name="response_yes" msgid="2027484304899988350">"Da"</string>
<string name="response_maybe" msgid="7791500973627841695">"Možda"</string>
@ -188,6 +192,24 @@
<item quantity="other" msgid="1997405398178470838">"+<xliff:g id="NUMBER">%d</xliff:g>"</item>
</plurals>
<string name="gadget_no_events" msgid="5209110911088302855">"Nema skorih događaja kalendara"</string>
<!-- no translation found for preferences_experimental_category (8111213192001230350) -->
<skip />
<!-- no translation found for preferences_reminders_category (3179315692653755740) -->
<skip />
<!-- no translation found for preferences_reminders_responded_label (1832493092701800837) -->
<skip />
<!-- no translation found for preferences_reminders_responded_description (4110643636441722713) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_label (8529712276644546893) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_description (65969073433791290) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_start (3433058529220285232) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_end (7492883554865119346) -->
<skip />
<!-- no translation found for preferences_debug_category (6203278208385095018) -->
<skip />
<string name="copy_db" msgid="437691290566699292">"Pošaljite bazu podataka"</string>
<string name="directory_searching_fmt" msgid="1232037509095606687">"Pretraživanje <xliff:g id="DOMAIN">%s</xliff:g>…"</string>
<string name="accessibility_remove_attendee" msgid="7082751172654698863">"Ukloni sudionika"</string>

View File

@ -99,6 +99,10 @@
<string name="add_account" msgid="1669072099756774952">"Fiók hozzáadása"</string>
<string name="view_event_calendar_label" msgid="6126231656338241140">"Naptár:"</string>
<string name="view_event_organizer_label" msgid="2753151795647402277">"Szervező:"</string>
<string name="choose_event_color_label" msgid="2192923501857428854">"Válasszon egy eseményszínt"</string>
<string name="event_color_picker_dialog_title" msgid="4631938661655159511">"Esemény színe"</string>
<string name="event_color_set_to_default" msgid="3447218820785647967">"Beállítva alapértelmezett naptárszínre"</string>
<string name="calendar_color_picker_dialog_title" msgid="3595509200561433667">"A naptár színe"</string>
<string name="view_event_response_label" msgid="8382281658458798329">"Részt vesz?"</string>
<string name="response_yes" msgid="2027484304899988350">"Igen"</string>
<string name="response_maybe" msgid="7791500973627841695">"Lehet"</string>
@ -188,6 +192,24 @@
<item quantity="other" msgid="1997405398178470838">"+<xliff:g id="NUMBER">%d</xliff:g>"</item>
</plurals>
<string name="gadget_no_events" msgid="5209110911088302855">"Nincsenek közelgő események a naptárban"</string>
<!-- no translation found for preferences_experimental_category (8111213192001230350) -->
<skip />
<!-- no translation found for preferences_reminders_category (3179315692653755740) -->
<skip />
<!-- no translation found for preferences_reminders_responded_label (1832493092701800837) -->
<skip />
<!-- no translation found for preferences_reminders_responded_description (4110643636441722713) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_label (8529712276644546893) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_description (65969073433791290) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_start (3433058529220285232) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_end (7492883554865119346) -->
<skip />
<!-- no translation found for preferences_debug_category (6203278208385095018) -->
<skip />
<string name="copy_db" msgid="437691290566699292">"Adatbázis küldése"</string>
<string name="directory_searching_fmt" msgid="1232037509095606687">"Keresés <xliff:g id="DOMAIN">%s</xliff:g>…"</string>
<string name="accessibility_remove_attendee" msgid="7082751172654698863">"Résztvevő eltávolítása"</string>

View File

@ -99,6 +99,10 @@
<string name="add_account" msgid="1669072099756774952">"Tambahkan akun"</string>
<string name="view_event_calendar_label" msgid="6126231656338241140">"Kalender:"</string>
<string name="view_event_organizer_label" msgid="2753151795647402277">"Penyelenggara:"</string>
<string name="choose_event_color_label" msgid="2192923501857428854">"Pilih warna acara"</string>
<string name="event_color_picker_dialog_title" msgid="4631938661655159511">"Warna Acara"</string>
<string name="event_color_set_to_default" msgid="3447218820785647967">"Setel ke warna default kalendar"</string>
<string name="calendar_color_picker_dialog_title" msgid="3595509200561433667">"Warna Kalender"</string>
<string name="view_event_response_label" msgid="8382281658458798329">"Datang?"</string>
<string name="response_yes" msgid="2027484304899988350">"Ya"</string>
<string name="response_maybe" msgid="7791500973627841695">"Tentatif"</string>
@ -188,6 +192,24 @@
<item quantity="other" msgid="1997405398178470838">"+<xliff:g id="NUMBER">%d</xliff:g>"</item>
</plurals>
<string name="gadget_no_events" msgid="5209110911088302855">"Tidak ada acara kalender yang akan datang"</string>
<!-- no translation found for preferences_experimental_category (8111213192001230350) -->
<skip />
<!-- no translation found for preferences_reminders_category (3179315692653755740) -->
<skip />
<!-- no translation found for preferences_reminders_responded_label (1832493092701800837) -->
<skip />
<!-- no translation found for preferences_reminders_responded_description (4110643636441722713) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_label (8529712276644546893) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_description (65969073433791290) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_start (3433058529220285232) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_end (7492883554865119346) -->
<skip />
<!-- no translation found for preferences_debug_category (6203278208385095018) -->
<skip />
<string name="copy_db" msgid="437691290566699292">"Kirim basis data"</string>
<string name="directory_searching_fmt" msgid="1232037509095606687">"Menelusuri <xliff:g id="DOMAIN">%s</xliff:g>…"</string>
<string name="accessibility_remove_attendee" msgid="7082751172654698863">"Hapus tamu"</string>

View File

@ -99,6 +99,10 @@
<string name="add_account" msgid="1669072099756774952">"Aggiungi account"</string>
<string name="view_event_calendar_label" msgid="6126231656338241140">"Calendario:"</string>
<string name="view_event_organizer_label" msgid="2753151795647402277">"Agenda:"</string>
<string name="choose_event_color_label" msgid="2192923501857428854">"Scegli colore evento"</string>
<string name="event_color_picker_dialog_title" msgid="4631938661655159511">"Colore evento"</string>
<string name="event_color_set_to_default" msgid="3447218820785647967">"Imposta colore calendario predefinito"</string>
<string name="calendar_color_picker_dialog_title" msgid="3595509200561433667">"Colore calendario"</string>
<string name="view_event_response_label" msgid="8382281658458798329">"Partecipi?"</string>
<string name="response_yes" msgid="2027484304899988350">"Sì"</string>
<string name="response_maybe" msgid="7791500973627841695">"Forse"</string>
@ -188,6 +192,24 @@
<item quantity="other" msgid="1997405398178470838">"+<xliff:g id="NUMBER">%d</xliff:g>"</item>
</plurals>
<string name="gadget_no_events" msgid="5209110911088302855">"Nessun evento di calendario imminente"</string>
<!-- no translation found for preferences_experimental_category (8111213192001230350) -->
<skip />
<!-- no translation found for preferences_reminders_category (3179315692653755740) -->
<skip />
<!-- no translation found for preferences_reminders_responded_label (1832493092701800837) -->
<skip />
<!-- no translation found for preferences_reminders_responded_description (4110643636441722713) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_label (8529712276644546893) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_description (65969073433791290) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_start (3433058529220285232) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_end (7492883554865119346) -->
<skip />
<!-- no translation found for preferences_debug_category (6203278208385095018) -->
<skip />
<string name="copy_db" msgid="437691290566699292">"Invia database"</string>
<string name="directory_searching_fmt" msgid="1232037509095606687">"Ricerca in <xliff:g id="DOMAIN">%s</xliff:g> in corso..."</string>
<string name="accessibility_remove_attendee" msgid="7082751172654698863">"Rimuovi partecipante"</string>

View File

@ -99,6 +99,10 @@
<string name="add_account" msgid="1669072099756774952">"הוסף חשבון"</string>
<string name="view_event_calendar_label" msgid="6126231656338241140">"יומן:"</string>
<string name="view_event_organizer_label" msgid="2753151795647402277">"מארגן:"</string>
<string name="choose_event_color_label" msgid="2192923501857428854">"בחר צבע אירוע"</string>
<string name="event_color_picker_dialog_title" msgid="4631938661655159511">"צבע אירוע"</string>
<string name="event_color_set_to_default" msgid="3447218820785647967">"הגדר כצבע ברירת המחדל של לוח השנה"</string>
<string name="calendar_color_picker_dialog_title" msgid="3595509200561433667">"צבע לוח שנה"</string>
<string name="view_event_response_label" msgid="8382281658458798329">"משתתף?"</string>
<string name="response_yes" msgid="2027484304899988350">"כן"</string>
<string name="response_maybe" msgid="7791500973627841695">"אולי"</string>
@ -188,6 +192,24 @@
<item quantity="other" msgid="1997405398178470838">"+<xliff:g id="NUMBER">%d</xliff:g>"</item>
</plurals>
<string name="gadget_no_events" msgid="5209110911088302855">"אין אירועים צפויים בלוח השנה"</string>
<!-- no translation found for preferences_experimental_category (8111213192001230350) -->
<skip />
<!-- no translation found for preferences_reminders_category (3179315692653755740) -->
<skip />
<!-- no translation found for preferences_reminders_responded_label (1832493092701800837) -->
<skip />
<!-- no translation found for preferences_reminders_responded_description (4110643636441722713) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_label (8529712276644546893) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_description (65969073433791290) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_start (3433058529220285232) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_end (7492883554865119346) -->
<skip />
<!-- no translation found for preferences_debug_category (6203278208385095018) -->
<skip />
<string name="copy_db" msgid="437691290566699292">"שלח מסד נתונים"</string>
<string name="directory_searching_fmt" msgid="1232037509095606687">"מחפש את <xliff:g id="DOMAIN">%s</xliff:g>…"</string>
<string name="accessibility_remove_attendee" msgid="7082751172654698863">"הסר משתתף"</string>

View File

@ -99,6 +99,10 @@
<string name="add_account" msgid="1669072099756774952">"アカウントを追加"</string>
<string name="view_event_calendar_label" msgid="6126231656338241140">"カレンダー:"</string>
<string name="view_event_organizer_label" msgid="2753151795647402277">"主催者:"</string>
<string name="choose_event_color_label" msgid="2192923501857428854">"予定の色を選択"</string>
<string name="event_color_picker_dialog_title" msgid="4631938661655159511">"予定の色"</string>
<string name="event_color_set_to_default" msgid="3447218820785647967">"デフォルトのカレンダーの色に設定"</string>
<string name="calendar_color_picker_dialog_title" msgid="3595509200561433667">"カレンダーの色"</string>
<string name="view_event_response_label" msgid="8382281658458798329">"参加しますか?"</string>
<string name="response_yes" msgid="2027484304899988350">"はい"</string>
<string name="response_maybe" msgid="7791500973627841695">"未定"</string>
@ -188,6 +192,24 @@
<item quantity="other" msgid="1997405398178470838">"+<xliff:g id="NUMBER">%d</xliff:g>"</item>
</plurals>
<string name="gadget_no_events" msgid="5209110911088302855">"近日中の予定はありません"</string>
<!-- no translation found for preferences_experimental_category (8111213192001230350) -->
<skip />
<!-- no translation found for preferences_reminders_category (3179315692653755740) -->
<skip />
<!-- no translation found for preferences_reminders_responded_label (1832493092701800837) -->
<skip />
<!-- no translation found for preferences_reminders_responded_description (4110643636441722713) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_label (8529712276644546893) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_description (65969073433791290) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_start (3433058529220285232) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_end (7492883554865119346) -->
<skip />
<!-- no translation found for preferences_debug_category (6203278208385095018) -->
<skip />
<string name="copy_db" msgid="437691290566699292">"データベースを送信"</string>
<string name="directory_searching_fmt" msgid="1232037509095606687">"<xliff:g id="DOMAIN">%s</xliff:g>を検索中..."</string>
<string name="accessibility_remove_attendee" msgid="7082751172654698863">"参加者を削除"</string>

View File

@ -99,6 +99,10 @@
<string name="add_account" msgid="1669072099756774952">"계정 추가"</string>
<string name="view_event_calendar_label" msgid="6126231656338241140">"캘린더:"</string>
<string name="view_event_organizer_label" msgid="2753151795647402277">"주최자:"</string>
<string name="choose_event_color_label" msgid="2192923501857428854">"이벤트 색상 선택"</string>
<string name="event_color_picker_dialog_title" msgid="4631938661655159511">"이벤트 색상"</string>
<string name="event_color_set_to_default" msgid="3447218820785647967">"기본 캘린더 색상으로 설정"</string>
<string name="calendar_color_picker_dialog_title" msgid="3595509200561433667">"캘린더 색상"</string>
<string name="view_event_response_label" msgid="8382281658458798329">"참석하시겠습니까?"</string>
<string name="response_yes" msgid="2027484304899988350">"예"</string>
<string name="response_maybe" msgid="7791500973627841695">"미정"</string>
@ -188,6 +192,24 @@
<item quantity="other" msgid="1997405398178470838">"+ <xliff:g id="NUMBER">%d</xliff:g>개"</item>
</plurals>
<string name="gadget_no_events" msgid="5209110911088302855">"예정된 캘린더 일정이 없습니다."</string>
<!-- no translation found for preferences_experimental_category (8111213192001230350) -->
<skip />
<!-- no translation found for preferences_reminders_category (3179315692653755740) -->
<skip />
<!-- no translation found for preferences_reminders_responded_label (1832493092701800837) -->
<skip />
<!-- no translation found for preferences_reminders_responded_description (4110643636441722713) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_label (8529712276644546893) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_description (65969073433791290) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_start (3433058529220285232) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_end (7492883554865119346) -->
<skip />
<!-- no translation found for preferences_debug_category (6203278208385095018) -->
<skip />
<string name="copy_db" msgid="437691290566699292">"데이터베이스 보내기"</string>
<string name="directory_searching_fmt" msgid="1232037509095606687">"<xliff:g id="DOMAIN">%s</xliff:g> 검색 중..."</string>
<string name="accessibility_remove_attendee" msgid="7082751172654698863">"참석자 삭제"</string>

View File

@ -99,6 +99,10 @@
<string name="add_account" msgid="1669072099756774952">"Pridėti paskyrą"</string>
<string name="view_event_calendar_label" msgid="6126231656338241140">"Kalendorius:"</string>
<string name="view_event_organizer_label" msgid="2753151795647402277">"Tvarkytuvė:"</string>
<string name="choose_event_color_label" msgid="2192923501857428854">"Pasirinkti įvykio spalvą"</string>
<string name="event_color_picker_dialog_title" msgid="4631938661655159511">"Įvykio spalva"</string>
<string name="event_color_set_to_default" msgid="3447218820785647967">"Nustatyti numatytąją kalendoriaus spalvą"</string>
<string name="calendar_color_picker_dialog_title" msgid="3595509200561433667">"Kalendoriaus spalva"</string>
<string name="view_event_response_label" msgid="8382281658458798329">"Dalyvausite?"</string>
<string name="response_yes" msgid="2027484304899988350">"Taip"</string>
<string name="response_maybe" msgid="7791500973627841695">"Gal"</string>
@ -188,6 +192,24 @@
<item quantity="other" msgid="1997405398178470838">"+<xliff:g id="NUMBER">%d</xliff:g>"</item>
</plurals>
<string name="gadget_no_events" msgid="5209110911088302855">"Nėra būsimų kalendoriaus įvykių"</string>
<!-- no translation found for preferences_experimental_category (8111213192001230350) -->
<skip />
<!-- no translation found for preferences_reminders_category (3179315692653755740) -->
<skip />
<!-- no translation found for preferences_reminders_responded_label (1832493092701800837) -->
<skip />
<!-- no translation found for preferences_reminders_responded_description (4110643636441722713) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_label (8529712276644546893) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_description (65969073433791290) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_start (3433058529220285232) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_end (7492883554865119346) -->
<skip />
<!-- no translation found for preferences_debug_category (6203278208385095018) -->
<skip />
<string name="copy_db" msgid="437691290566699292">"Siųsti duomenis"</string>
<string name="directory_searching_fmt" msgid="1232037509095606687">"Ieškoma <xliff:g id="DOMAIN">%s</xliff:g>…"</string>
<string name="accessibility_remove_attendee" msgid="7082751172654698863">"Pašalinti dalyvį"</string>

View File

@ -99,6 +99,10 @@
<string name="add_account" msgid="1669072099756774952">"Pievienot kontu"</string>
<string name="view_event_calendar_label" msgid="6126231656338241140">"Kalendārs:"</string>
<string name="view_event_organizer_label" msgid="2753151795647402277">"Rīkotājs:"</string>
<string name="choose_event_color_label" msgid="2192923501857428854">"Izvēlieties notikuma teksta krāsu"</string>
<string name="event_color_picker_dialog_title" msgid="4631938661655159511">"Notikuma teksta krāsa"</string>
<string name="event_color_set_to_default" msgid="3447218820785647967">"Iestatīt kā kalendāra noklusējuma krāsu"</string>
<string name="calendar_color_picker_dialog_title" msgid="3595509200561433667">"Kalendāra krāsa"</string>
<string name="view_event_response_label" msgid="8382281658458798329">"Vai apmeklēsiet?"</string>
<string name="response_yes" msgid="2027484304899988350">"Jā"</string>
<string name="response_maybe" msgid="7791500973627841695">"Varbūt"</string>
@ -188,6 +192,24 @@
<item quantity="other" msgid="1997405398178470838">"+<xliff:g id="NUMBER">%d</xliff:g>"</item>
</plurals>
<string name="gadget_no_events" msgid="5209110911088302855">"Kalendārā nav plānotu pasākumu."</string>
<!-- no translation found for preferences_experimental_category (8111213192001230350) -->
<skip />
<!-- no translation found for preferences_reminders_category (3179315692653755740) -->
<skip />
<!-- no translation found for preferences_reminders_responded_label (1832493092701800837) -->
<skip />
<!-- no translation found for preferences_reminders_responded_description (4110643636441722713) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_label (8529712276644546893) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_description (65969073433791290) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_start (3433058529220285232) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_end (7492883554865119346) -->
<skip />
<!-- no translation found for preferences_debug_category (6203278208385095018) -->
<skip />
<string name="copy_db" msgid="437691290566699292">"Nosūtīt datu bāzi"</string>
<string name="directory_searching_fmt" msgid="1232037509095606687">"Notiek domēna <xliff:g id="DOMAIN">%s</xliff:g> meklēšana…"</string>
<string name="accessibility_remove_attendee" msgid="7082751172654698863">"Noņemt dalībnieku"</string>

View File

@ -99,6 +99,10 @@
<string name="add_account" msgid="1669072099756774952">"Tambah akaun"</string>
<string name="view_event_calendar_label" msgid="6126231656338241140">"Kalendar"</string>
<string name="view_event_organizer_label" msgid="2753151795647402277">"Penganjur:"</string>
<string name="choose_event_color_label" msgid="2192923501857428854">"Pilih warna acara"</string>
<string name="event_color_picker_dialog_title" msgid="4631938661655159511">"Warna Acara"</string>
<string name="event_color_set_to_default" msgid="3447218820785647967">"Tetapkan kepada warna kalendar lalai"</string>
<string name="calendar_color_picker_dialog_title" msgid="3595509200561433667">"Warna Kalendar"</string>
<string name="view_event_response_label" msgid="8382281658458798329">"Hadir?"</string>
<string name="response_yes" msgid="2027484304899988350">"Ya"</string>
<string name="response_maybe" msgid="7791500973627841695">"Mungkin"</string>
@ -188,6 +192,24 @@
<item quantity="other" msgid="1997405398178470838">"+<xliff:g id="NUMBER">%d</xliff:g>"</item>
</plurals>
<string name="gadget_no_events" msgid="5209110911088302855">"Tiada acara kalendar yang akan datang"</string>
<!-- no translation found for preferences_experimental_category (8111213192001230350) -->
<skip />
<!-- no translation found for preferences_reminders_category (3179315692653755740) -->
<skip />
<!-- no translation found for preferences_reminders_responded_label (1832493092701800837) -->
<skip />
<!-- no translation found for preferences_reminders_responded_description (4110643636441722713) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_label (8529712276644546893) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_description (65969073433791290) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_start (3433058529220285232) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_end (7492883554865119346) -->
<skip />
<!-- no translation found for preferences_debug_category (6203278208385095018) -->
<skip />
<string name="copy_db" msgid="437691290566699292">"Hantar pangkalan data"</string>
<string name="directory_searching_fmt" msgid="1232037509095606687">"Mencari <xliff:g id="DOMAIN">%s</xliff:g>..."</string>
<string name="accessibility_remove_attendee" msgid="7082751172654698863">"Alih keluar hadirin"</string>

View File

@ -99,6 +99,10 @@
<string name="add_account" msgid="1669072099756774952">"Legg til konto"</string>
<string name="view_event_calendar_label" msgid="6126231656338241140">"Kalender:"</string>
<string name="view_event_organizer_label" msgid="2753151795647402277">"Arrangør:"</string>
<string name="choose_event_color_label" msgid="2192923501857428854">"Velg aktivitetsfarge"</string>
<string name="event_color_picker_dialog_title" msgid="4631938661655159511">"Aktivitetsfarge"</string>
<string name="event_color_set_to_default" msgid="3447218820785647967">"Angi som standard kalenderfarge"</string>
<string name="calendar_color_picker_dialog_title" msgid="3595509200561433667">"Kalenderfarge"</string>
<string name="view_event_response_label" msgid="8382281658458798329">"Kommer du?"</string>
<string name="response_yes" msgid="2027484304899988350">"Ja"</string>
<string name="response_maybe" msgid="7791500973627841695">"Kanskje"</string>
@ -188,6 +192,24 @@
<item quantity="other" msgid="1997405398178470838">"+ <xliff:g id="NUMBER">%d</xliff:g>"</item>
</plurals>
<string name="gadget_no_events" msgid="5209110911088302855">"Ingen kommende kalenderaktiviteter"</string>
<!-- no translation found for preferences_experimental_category (8111213192001230350) -->
<skip />
<!-- no translation found for preferences_reminders_category (3179315692653755740) -->
<skip />
<!-- no translation found for preferences_reminders_responded_label (1832493092701800837) -->
<skip />
<!-- no translation found for preferences_reminders_responded_description (4110643636441722713) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_label (8529712276644546893) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_description (65969073433791290) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_start (3433058529220285232) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_end (7492883554865119346) -->
<skip />
<!-- no translation found for preferences_debug_category (6203278208385095018) -->
<skip />
<string name="copy_db" msgid="437691290566699292">"Send database"</string>
<string name="directory_searching_fmt" msgid="1232037509095606687">"Søker på <xliff:g id="DOMAIN">%s</xliff:g> …"</string>
<string name="accessibility_remove_attendee" msgid="7082751172654698863">"Fjern deltaker"</string>

View File

@ -99,6 +99,10 @@
<string name="add_account" msgid="1669072099756774952">"Account toevoegen"</string>
<string name="view_event_calendar_label" msgid="6126231656338241140">"Agenda:"</string>
<string name="view_event_organizer_label" msgid="2753151795647402277">"Organisator:"</string>
<string name="choose_event_color_label" msgid="2192923501857428854">"Kleur voor evenement kiezen"</string>
<string name="event_color_picker_dialog_title" msgid="4631938661655159511">"Kleur voor evenement"</string>
<string name="event_color_set_to_default" msgid="3447218820785647967">"Instellen op standaardkleur voor agenda"</string>
<string name="calendar_color_picker_dialog_title" msgid="3595509200561433667">"Kleur voor agenda"</string>
<string name="view_event_response_label" msgid="8382281658458798329">"Aanwezig?"</string>
<string name="response_yes" msgid="2027484304899988350">"Ja"</string>
<string name="response_maybe" msgid="7791500973627841695">"Misschien"</string>
@ -188,6 +192,24 @@
<item quantity="other" msgid="1997405398178470838">"+<xliff:g id="NUMBER">%d</xliff:g>"</item>
</plurals>
<string name="gadget_no_events" msgid="5209110911088302855">"Geen lopende agenda-afspraken"</string>
<!-- no translation found for preferences_experimental_category (8111213192001230350) -->
<skip />
<!-- no translation found for preferences_reminders_category (3179315692653755740) -->
<skip />
<!-- no translation found for preferences_reminders_responded_label (1832493092701800837) -->
<skip />
<!-- no translation found for preferences_reminders_responded_description (4110643636441722713) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_label (8529712276644546893) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_description (65969073433791290) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_start (3433058529220285232) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_end (7492883554865119346) -->
<skip />
<!-- no translation found for preferences_debug_category (6203278208385095018) -->
<skip />
<string name="copy_db" msgid="437691290566699292">"Database verzenden"</string>
<string name="directory_searching_fmt" msgid="1232037509095606687">"<xliff:g id="DOMAIN">%s</xliff:g> zoeken…"</string>
<string name="accessibility_remove_attendee" msgid="7082751172654698863">"Deelnemer verwijderen"</string>

View File

@ -99,6 +99,10 @@
<string name="add_account" msgid="1669072099756774952">"Dodaj konto"</string>
<string name="view_event_calendar_label" msgid="6126231656338241140">"Kalendarz:"</string>
<string name="view_event_organizer_label" msgid="2753151795647402277">"Organizator:"</string>
<string name="choose_event_color_label" msgid="2192923501857428854">"Wybierz kolor wydarzenia"</string>
<string name="event_color_picker_dialog_title" msgid="4631938661655159511">"Kolor wydarzenia"</string>
<string name="event_color_set_to_default" msgid="3447218820785647967">"Ustaw domyślny kolor kalendarza"</string>
<string name="calendar_color_picker_dialog_title" msgid="3595509200561433667">"Kolor kalendarza"</string>
<string name="view_event_response_label" msgid="8382281658458798329">"Będziesz?"</string>
<string name="response_yes" msgid="2027484304899988350">"Tak"</string>
<string name="response_maybe" msgid="7791500973627841695">"Może"</string>
@ -188,6 +192,24 @@
<item quantity="other" msgid="1997405398178470838">"+<xliff:g id="NUMBER">%d</xliff:g>"</item>
</plurals>
<string name="gadget_no_events" msgid="5209110911088302855">"Brak zbliżających się wydarzeń w kalendarzu"</string>
<!-- no translation found for preferences_experimental_category (8111213192001230350) -->
<skip />
<!-- no translation found for preferences_reminders_category (3179315692653755740) -->
<skip />
<!-- no translation found for preferences_reminders_responded_label (1832493092701800837) -->
<skip />
<!-- no translation found for preferences_reminders_responded_description (4110643636441722713) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_label (8529712276644546893) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_description (65969073433791290) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_start (3433058529220285232) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_end (7492883554865119346) -->
<skip />
<!-- no translation found for preferences_debug_category (6203278208385095018) -->
<skip />
<string name="copy_db" msgid="437691290566699292">"Wyślij bazę danych"</string>
<string name="directory_searching_fmt" msgid="1232037509095606687">"Trwa wyszukiwanie w witrynie <xliff:g id="DOMAIN">%s</xliff:g>…"</string>
<string name="accessibility_remove_attendee" msgid="7082751172654698863">"Usuń uczestnika"</string>

View File

@ -99,6 +99,10 @@
<string name="add_account" msgid="1669072099756774952">"Adicionar conta"</string>
<string name="view_event_calendar_label" msgid="6126231656338241140">"Calendário:"</string>
<string name="view_event_organizer_label" msgid="2753151795647402277">"Organizador:"</string>
<string name="choose_event_color_label" msgid="2192923501857428854">"Escolher a cor do evento"</string>
<string name="event_color_picker_dialog_title" msgid="4631938661655159511">"Cor do Evento"</string>
<string name="event_color_set_to_default" msgid="3447218820785647967">"Definir para a cor predefinida do calendário"</string>
<string name="calendar_color_picker_dialog_title" msgid="3595509200561433667">"Cor do Calendário"</string>
<string name="view_event_response_label" msgid="8382281658458798329">"Assistir?"</string>
<string name="response_yes" msgid="2027484304899988350">"Sim"</string>
<string name="response_maybe" msgid="7791500973627841695">"Talvez"</string>
@ -188,6 +192,24 @@
<item quantity="other" msgid="1997405398178470838">"+<xliff:g id="NUMBER">%d</xliff:g>"</item>
</plurals>
<string name="gadget_no_events" msgid="5209110911088302855">"Sem eventos futuros no calendário"</string>
<!-- no translation found for preferences_experimental_category (8111213192001230350) -->
<skip />
<!-- no translation found for preferences_reminders_category (3179315692653755740) -->
<skip />
<!-- no translation found for preferences_reminders_responded_label (1832493092701800837) -->
<skip />
<!-- no translation found for preferences_reminders_responded_description (4110643636441722713) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_label (8529712276644546893) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_description (65969073433791290) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_start (3433058529220285232) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_end (7492883554865119346) -->
<skip />
<!-- no translation found for preferences_debug_category (6203278208385095018) -->
<skip />
<string name="copy_db" msgid="437691290566699292">"Enviar base de dados"</string>
<string name="directory_searching_fmt" msgid="1232037509095606687">"A pesquisar <xliff:g id="DOMAIN">%s</xliff:g>…"</string>
<string name="accessibility_remove_attendee" msgid="7082751172654698863">"Remover participante"</string>

View File

@ -99,6 +99,10 @@
<string name="add_account" msgid="1669072099756774952">"Adicionar conta"</string>
<string name="view_event_calendar_label" msgid="6126231656338241140">"Agenda:"</string>
<string name="view_event_organizer_label" msgid="2753151795647402277">"Organizador:"</string>
<string name="choose_event_color_label" msgid="2192923501857428854">"Escolher cor do evento"</string>
<string name="event_color_picker_dialog_title" msgid="4631938661655159511">"Cor do evento"</string>
<string name="event_color_set_to_default" msgid="3447218820785647967">"Definir como cor de agenda padrão"</string>
<string name="calendar_color_picker_dialog_title" msgid="3595509200561433667">"Cor da agenda"</string>
<string name="view_event_response_label" msgid="8382281658458798329">"Você vai?"</string>
<string name="response_yes" msgid="2027484304899988350">"Sim"</string>
<string name="response_maybe" msgid="7791500973627841695">"Talvez"</string>
@ -188,6 +192,24 @@
<item quantity="other" msgid="1997405398178470838">"+<xliff:g id="NUMBER">%d</xliff:g>"</item>
</plurals>
<string name="gadget_no_events" msgid="5209110911088302855">"Não há eventos futuros na agenda"</string>
<!-- no translation found for preferences_experimental_category (8111213192001230350) -->
<skip />
<!-- no translation found for preferences_reminders_category (3179315692653755740) -->
<skip />
<!-- no translation found for preferences_reminders_responded_label (1832493092701800837) -->
<skip />
<!-- no translation found for preferences_reminders_responded_description (4110643636441722713) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_label (8529712276644546893) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_description (65969073433791290) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_start (3433058529220285232) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_end (7492883554865119346) -->
<skip />
<!-- no translation found for preferences_debug_category (6203278208385095018) -->
<skip />
<string name="copy_db" msgid="437691290566699292">"Enviar banco de dados"</string>
<string name="directory_searching_fmt" msgid="1232037509095606687">"Pesquisando <xliff:g id="DOMAIN">%s</xliff:g>…"</string>
<string name="accessibility_remove_attendee" msgid="7082751172654698863">"Remover participante"</string>

View File

@ -99,6 +99,10 @@
<string name="add_account" msgid="1669072099756774952">"Adăugaţi un cont"</string>
<string name="view_event_calendar_label" msgid="6126231656338241140">"Calendar:"</string>
<string name="view_event_organizer_label" msgid="2753151795647402277">"Organizator:"</string>
<string name="choose_event_color_label" msgid="2192923501857428854">"Alegeți o culoare pentru eveniment"</string>
<string name="event_color_picker_dialog_title" msgid="4631938661655159511">"Culoare eveniment"</string>
<string name="event_color_set_to_default" msgid="3447218820785647967">"Setați culoarea prestabilită pentru calendar"</string>
<string name="calendar_color_picker_dialog_title" msgid="3595509200561433667">"Culoare calendar"</string>
<string name="view_event_response_label" msgid="8382281658458798329">"Participaţi?"</string>
<string name="response_yes" msgid="2027484304899988350">"Da"</string>
<string name="response_maybe" msgid="7791500973627841695">"Posibil"</string>
@ -188,6 +192,24 @@
<item quantity="other" msgid="1997405398178470838">"+<xliff:g id="NUMBER">%d</xliff:g>"</item>
</plurals>
<string name="gadget_no_events" msgid="5209110911088302855">"Niciun eveniment viitor în calendar"</string>
<!-- no translation found for preferences_experimental_category (8111213192001230350) -->
<skip />
<!-- no translation found for preferences_reminders_category (3179315692653755740) -->
<skip />
<!-- no translation found for preferences_reminders_responded_label (1832493092701800837) -->
<skip />
<!-- no translation found for preferences_reminders_responded_description (4110643636441722713) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_label (8529712276644546893) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_description (65969073433791290) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_start (3433058529220285232) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_end (7492883554865119346) -->
<skip />
<!-- no translation found for preferences_debug_category (6203278208385095018) -->
<skip />
<string name="copy_db" msgid="437691290566699292">"Trimiteţi baza de date"</string>
<string name="directory_searching_fmt" msgid="1232037509095606687">"Se caută <xliff:g id="DOMAIN">%s</xliff:g>..."</string>
<string name="accessibility_remove_attendee" msgid="7082751172654698863">"Eliminaţi participantul"</string>

View File

@ -99,6 +99,10 @@
<string name="add_account" msgid="1669072099756774952">"Добавить аккаунт"</string>
<string name="view_event_calendar_label" msgid="6126231656338241140">"Календарь:"</string>
<string name="view_event_organizer_label" msgid="2753151795647402277">"Организатор:"</string>
<string name="choose_event_color_label" msgid="2192923501857428854">"Выбрать цвет мероприятия"</string>
<string name="event_color_picker_dialog_title" msgid="4631938661655159511">"Цвет мероприятия"</string>
<string name="event_color_set_to_default" msgid="3447218820785647967">"Сделать цветом календаря по умолчанию"</string>
<string name="calendar_color_picker_dialog_title" msgid="3595509200561433667">"Цвет календаря"</string>
<string name="view_event_response_label" msgid="8382281658458798329">"Принять приглашение?"</string>
<string name="response_yes" msgid="2027484304899988350">"Да"</string>
<string name="response_maybe" msgid="7791500973627841695">"Может быть"</string>
@ -188,6 +192,24 @@
<item quantity="other" msgid="1997405398178470838">" и еще <xliff:g id="NUMBER">%d</xliff:g>"</item>
</plurals>
<string name="gadget_no_events" msgid="5209110911088302855">"В календаре нет предстоящих мероприятий"</string>
<!-- no translation found for preferences_experimental_category (8111213192001230350) -->
<skip />
<!-- no translation found for preferences_reminders_category (3179315692653755740) -->
<skip />
<!-- no translation found for preferences_reminders_responded_label (1832493092701800837) -->
<skip />
<!-- no translation found for preferences_reminders_responded_description (4110643636441722713) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_label (8529712276644546893) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_description (65969073433791290) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_start (3433058529220285232) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_end (7492883554865119346) -->
<skip />
<!-- no translation found for preferences_debug_category (6203278208385095018) -->
<skip />
<string name="copy_db" msgid="437691290566699292">"Отправить базу данных"</string>
<string name="directory_searching_fmt" msgid="1232037509095606687">"Поиск в <xliff:g id="DOMAIN">%s</xliff:g>…"</string>
<string name="accessibility_remove_attendee" msgid="7082751172654698863">"Удалить участника"</string>

View File

@ -99,6 +99,10 @@
<string name="add_account" msgid="1669072099756774952">"Pridať účet"</string>
<string name="view_event_calendar_label" msgid="6126231656338241140">"Kalendár:"</string>
<string name="view_event_organizer_label" msgid="2753151795647402277">"Organizátor:"</string>
<string name="choose_event_color_label" msgid="2192923501857428854">"Vyberte farbu udalosti"</string>
<string name="event_color_picker_dialog_title" msgid="4631938661655159511">"Farba udalosti"</string>
<string name="event_color_set_to_default" msgid="3447218820785647967">"Nastaviť na predvolenú farbu kalendára"</string>
<string name="calendar_color_picker_dialog_title" msgid="3595509200561433667">"Farba kalendára"</string>
<string name="view_event_response_label" msgid="8382281658458798329">"Zúčastníte sa?"</string>
<string name="response_yes" msgid="2027484304899988350">"Áno"</string>
<string name="response_maybe" msgid="7791500973627841695">"Možno"</string>
@ -188,6 +192,24 @@
<item quantity="other" msgid="1997405398178470838">"+<xliff:g id="NUMBER">%d</xliff:g>"</item>
</plurals>
<string name="gadget_no_events" msgid="5209110911088302855">"Žiadne ďalšie udalosti v kalendári"</string>
<!-- no translation found for preferences_experimental_category (8111213192001230350) -->
<skip />
<!-- no translation found for preferences_reminders_category (3179315692653755740) -->
<skip />
<!-- no translation found for preferences_reminders_responded_label (1832493092701800837) -->
<skip />
<!-- no translation found for preferences_reminders_responded_description (4110643636441722713) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_label (8529712276644546893) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_description (65969073433791290) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_start (3433058529220285232) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_end (7492883554865119346) -->
<skip />
<!-- no translation found for preferences_debug_category (6203278208385095018) -->
<skip />
<string name="copy_db" msgid="437691290566699292">"Odoslať databázu"</string>
<string name="directory_searching_fmt" msgid="1232037509095606687">"Prebieha vyhľadávanie <xliff:g id="DOMAIN">%s</xliff:g>…"</string>
<string name="accessibility_remove_attendee" msgid="7082751172654698863">"Odstrániť účastníka"</string>

View File

@ -99,6 +99,10 @@
<string name="add_account" msgid="1669072099756774952">"Dodaj račun"</string>
<string name="view_event_calendar_label" msgid="6126231656338241140">"Koledar:"</string>
<string name="view_event_organizer_label" msgid="2753151795647402277">"Organizator:"</string>
<string name="choose_event_color_label" msgid="2192923501857428854">"Izberite barvo dogodka"</string>
<string name="event_color_picker_dialog_title" msgid="4631938661655159511">"Barva dogodka"</string>
<string name="event_color_set_to_default" msgid="3447218820785647967">"Nastavi na privzeto barvo koledarja"</string>
<string name="calendar_color_picker_dialog_title" msgid="3595509200561433667">"Barva koledarja"</string>
<string name="view_event_response_label" msgid="8382281658458798329">"Prisoten?"</string>
<string name="response_yes" msgid="2027484304899988350">"Da"</string>
<string name="response_maybe" msgid="7791500973627841695">"Morda"</string>
@ -188,6 +192,24 @@
<item quantity="other" msgid="1997405398178470838">"+ <xliff:g id="NUMBER">%d</xliff:g>"</item>
</plurals>
<string name="gadget_no_events" msgid="5209110911088302855">"Ni prihajajočih dogodkov v koledarju"</string>
<!-- no translation found for preferences_experimental_category (8111213192001230350) -->
<skip />
<!-- no translation found for preferences_reminders_category (3179315692653755740) -->
<skip />
<!-- no translation found for preferences_reminders_responded_label (1832493092701800837) -->
<skip />
<!-- no translation found for preferences_reminders_responded_description (4110643636441722713) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_label (8529712276644546893) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_description (65969073433791290) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_start (3433058529220285232) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_end (7492883554865119346) -->
<skip />
<!-- no translation found for preferences_debug_category (6203278208385095018) -->
<skip />
<string name="copy_db" msgid="437691290566699292">"Pošlji zbirko podatkov"</string>
<string name="directory_searching_fmt" msgid="1232037509095606687">"Iskanje <xliff:g id="DOMAIN">%s</xliff:g> ..."</string>
<string name="accessibility_remove_attendee" msgid="7082751172654698863">"Odstrani udeleženca"</string>

View File

@ -99,6 +99,10 @@
<string name="add_account" msgid="1669072099756774952">"Додај налог"</string>
<string name="view_event_calendar_label" msgid="6126231656338241140">"Календар:"</string>
<string name="view_event_organizer_label" msgid="2753151795647402277">"Организатор:"</string>
<string name="choose_event_color_label" msgid="2192923501857428854">"Изабери боју догађаја"</string>
<string name="event_color_picker_dialog_title" msgid="4631938661655159511">"Боја догађаја"</string>
<string name="event_color_set_to_default" msgid="3447218820785647967">"Подеси на подразумевану боју календара"</string>
<string name="calendar_color_picker_dialog_title" msgid="3595509200561433667">"Боја календара"</string>
<string name="view_event_response_label" msgid="8382281658458798329">"Желите ли да присуствујете овом догађају?"</string>
<string name="response_yes" msgid="2027484304899988350">"Да"</string>
<string name="response_maybe" msgid="7791500973627841695">"Можда"</string>
@ -188,6 +192,24 @@
<item quantity="other" msgid="1997405398178470838">"+<xliff:g id="NUMBER">%d</xliff:g>"</item>
</plurals>
<string name="gadget_no_events" msgid="5209110911088302855">"Нема предстојећих догађаја у календару"</string>
<!-- no translation found for preferences_experimental_category (8111213192001230350) -->
<skip />
<!-- no translation found for preferences_reminders_category (3179315692653755740) -->
<skip />
<!-- no translation found for preferences_reminders_responded_label (1832493092701800837) -->
<skip />
<!-- no translation found for preferences_reminders_responded_description (4110643636441722713) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_label (8529712276644546893) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_description (65969073433791290) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_start (3433058529220285232) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_end (7492883554865119346) -->
<skip />
<!-- no translation found for preferences_debug_category (6203278208385095018) -->
<skip />
<string name="copy_db" msgid="437691290566699292">"Пошаљи базу података"</string>
<string name="directory_searching_fmt" msgid="1232037509095606687">"Претраживање <xliff:g id="DOMAIN">%s</xliff:g>…"</string>
<string name="accessibility_remove_attendee" msgid="7082751172654698863">"Уклони учесника"</string>

View File

@ -99,6 +99,10 @@
<string name="add_account" msgid="1669072099756774952">"Lägg till konto"</string>
<string name="view_event_calendar_label" msgid="6126231656338241140">"Kalender:"</string>
<string name="view_event_organizer_label" msgid="2753151795647402277">"Organisatör:"</string>
<string name="choose_event_color_label" msgid="2192923501857428854">"Välj färg på eventet"</string>
<string name="event_color_picker_dialog_title" msgid="4631938661655159511">"Färg på event"</string>
<string name="event_color_set_to_default" msgid="3447218820785647967">"Ange som standardfärg på kalendern"</string>
<string name="calendar_color_picker_dialog_title" msgid="3595509200561433667">"Kalenderfärg"</string>
<string name="view_event_response_label" msgid="8382281658458798329">"Delta?"</string>
<string name="response_yes" msgid="2027484304899988350">"Ja"</string>
<string name="response_maybe" msgid="7791500973627841695">"Kanske"</string>
@ -188,6 +192,24 @@
<item quantity="other" msgid="1997405398178470838">"+ <xliff:g id="NUMBER">%d</xliff:g>"</item>
</plurals>
<string name="gadget_no_events" msgid="5209110911088302855">"Inga kommande händelser i kalendern"</string>
<!-- no translation found for preferences_experimental_category (8111213192001230350) -->
<skip />
<!-- no translation found for preferences_reminders_category (3179315692653755740) -->
<skip />
<!-- no translation found for preferences_reminders_responded_label (1832493092701800837) -->
<skip />
<!-- no translation found for preferences_reminders_responded_description (4110643636441722713) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_label (8529712276644546893) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_description (65969073433791290) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_start (3433058529220285232) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_end (7492883554865119346) -->
<skip />
<!-- no translation found for preferences_debug_category (6203278208385095018) -->
<skip />
<string name="copy_db" msgid="437691290566699292">"Skicka databas"</string>
<string name="directory_searching_fmt" msgid="1232037509095606687">"Söker <xliff:g id="DOMAIN">%s</xliff:g>…"</string>
<string name="accessibility_remove_attendee" msgid="7082751172654698863">"Ta bort deltagare"</string>

View File

@ -99,6 +99,10 @@
<string name="add_account" msgid="1669072099756774952">"Ongeza akaunti"</string>
<string name="view_event_calendar_label" msgid="6126231656338241140">"Kalenda:"</string>
<string name="view_event_organizer_label" msgid="2753151795647402277">"Mwandalizi:"</string>
<string name="choose_event_color_label" msgid="2192923501857428854">"Chagua rangi ya tukio"</string>
<string name="event_color_picker_dialog_title" msgid="4631938661655159511">"Rangi la Tukio"</string>
<string name="event_color_set_to_default" msgid="3447218820785647967">"Weka katika rangi chaguo msingi ya kalenda"</string>
<string name="calendar_color_picker_dialog_title" msgid="3595509200561433667">"Rangi ya Kalenda"</string>
<string name="view_event_response_label" msgid="8382281658458798329">"Unahudhuria?"</string>
<string name="response_yes" msgid="2027484304899988350">"Ndio"</string>
<string name="response_maybe" msgid="7791500973627841695">"Labda"</string>
@ -188,6 +192,24 @@
<item quantity="other" msgid="1997405398178470838">"+<xliff:g id="NUMBER">%d</xliff:g>"</item>
</plurals>
<string name="gadget_no_events" msgid="5209110911088302855">"Hakuna matukio ya kalenda yatakayofanyika hivi karibuni"</string>
<!-- no translation found for preferences_experimental_category (8111213192001230350) -->
<skip />
<!-- no translation found for preferences_reminders_category (3179315692653755740) -->
<skip />
<!-- no translation found for preferences_reminders_responded_label (1832493092701800837) -->
<skip />
<!-- no translation found for preferences_reminders_responded_description (4110643636441722713) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_label (8529712276644546893) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_description (65969073433791290) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_start (3433058529220285232) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_end (7492883554865119346) -->
<skip />
<!-- no translation found for preferences_debug_category (6203278208385095018) -->
<skip />
<string name="copy_db" msgid="437691290566699292">"Tuma hifadhidata"</string>
<string name="directory_searching_fmt" msgid="1232037509095606687">"Inatafuta <xliff:g id="DOMAIN">%s</xliff:g>…"</string>
<string name="accessibility_remove_attendee" msgid="7082751172654698863">"Ondoa mhudhuriaji"</string>

View File

@ -99,6 +99,10 @@
<string name="add_account" msgid="1669072099756774952">"เพิ่มบัญชี"</string>
<string name="view_event_calendar_label" msgid="6126231656338241140">"ปฏิทิน:"</string>
<string name="view_event_organizer_label" msgid="2753151795647402277">"ผู้จัด:"</string>
<string name="choose_event_color_label" msgid="2192923501857428854">"เลือกสีของกิจกรรม"</string>
<string name="event_color_picker_dialog_title" msgid="4631938661655159511">"สีของกิจกรรม"</string>
<string name="event_color_set_to_default" msgid="3447218820785647967">"ตั้งเป็นสีเริ่มต้นของปฏิทิน"</string>
<string name="calendar_color_picker_dialog_title" msgid="3595509200561433667">"สีปฏิทิน"</string>
<string name="view_event_response_label" msgid="8382281658458798329">"ต้องการเข้าร่วมหรือไม่"</string>
<string name="response_yes" msgid="2027484304899988350">"ใช่"</string>
<string name="response_maybe" msgid="7791500973627841695">"ไม่แน่นอน"</string>
@ -188,6 +192,24 @@
<item quantity="other" msgid="1997405398178470838">"+<xliff:g id="NUMBER">%d</xliff:g>"</item>
</plurals>
<string name="gadget_no_events" msgid="5209110911088302855">"ไม่มีกิจกรรมในปฏิทินที่กำลังมาถึง"</string>
<!-- no translation found for preferences_experimental_category (8111213192001230350) -->
<skip />
<!-- no translation found for preferences_reminders_category (3179315692653755740) -->
<skip />
<!-- no translation found for preferences_reminders_responded_label (1832493092701800837) -->
<skip />
<!-- no translation found for preferences_reminders_responded_description (4110643636441722713) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_label (8529712276644546893) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_description (65969073433791290) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_start (3433058529220285232) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_end (7492883554865119346) -->
<skip />
<!-- no translation found for preferences_debug_category (6203278208385095018) -->
<skip />
<string name="copy_db" msgid="437691290566699292">"ส่งฐานข้อมูล"</string>
<string name="directory_searching_fmt" msgid="1232037509095606687">"กำลังค้นหา <xliff:g id="DOMAIN">%s</xliff:g>…"</string>
<string name="accessibility_remove_attendee" msgid="7082751172654698863">"นำผู้เข้าร่วมออก"</string>

View File

@ -99,6 +99,10 @@
<string name="add_account" msgid="1669072099756774952">"Magdagdag ng account"</string>
<string name="view_event_calendar_label" msgid="6126231656338241140">"Kalendaryo:"</string>
<string name="view_event_organizer_label" msgid="2753151795647402277">"Organizer:"</string>
<string name="choose_event_color_label" msgid="2192923501857428854">"Pumili ng kulay ng kaganapan"</string>
<string name="event_color_picker_dialog_title" msgid="4631938661655159511">"Kulay ng Kaganapan"</string>
<string name="event_color_set_to_default" msgid="3447218820785647967">"Itakda sa default na kulay ng kalendaryo"</string>
<string name="calendar_color_picker_dialog_title" msgid="3595509200561433667">"Kulay ng Kalendaryo"</string>
<string name="view_event_response_label" msgid="8382281658458798329">"Dadalo?"</string>
<string name="response_yes" msgid="2027484304899988350">"Oo"</string>
<string name="response_maybe" msgid="7791500973627841695">"Siguro"</string>
@ -188,6 +192,24 @@
<item quantity="other" msgid="1997405398178470838">"+<xliff:g id="NUMBER">%d</xliff:g>"</item>
</plurals>
<string name="gadget_no_events" msgid="5209110911088302855">"Walang mga paparating na kaganapan sa kalendaryo"</string>
<!-- no translation found for preferences_experimental_category (8111213192001230350) -->
<skip />
<!-- no translation found for preferences_reminders_category (3179315692653755740) -->
<skip />
<!-- no translation found for preferences_reminders_responded_label (1832493092701800837) -->
<skip />
<!-- no translation found for preferences_reminders_responded_description (4110643636441722713) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_label (8529712276644546893) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_description (65969073433791290) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_start (3433058529220285232) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_end (7492883554865119346) -->
<skip />
<!-- no translation found for preferences_debug_category (6203278208385095018) -->
<skip />
<string name="copy_db" msgid="437691290566699292">"Ipadala ang database"</string>
<string name="directory_searching_fmt" msgid="1232037509095606687">"Naghahanap <xliff:g id="DOMAIN">%s</xliff:g>…"</string>
<string name="accessibility_remove_attendee" msgid="7082751172654698863">"Alisin ang dadalo"</string>

View File

@ -99,6 +99,10 @@
<string name="add_account" msgid="1669072099756774952">"Hesap ekle"</string>
<string name="view_event_calendar_label" msgid="6126231656338241140">"Takvim:"</string>
<string name="view_event_organizer_label" msgid="2753151795647402277">"Düzenleyici:"</string>
<string name="choose_event_color_label" msgid="2192923501857428854">"Etkinlik rengi seçin"</string>
<string name="event_color_picker_dialog_title" msgid="4631938661655159511">"Etkinlik Rengi"</string>
<string name="event_color_set_to_default" msgid="3447218820785647967">"Varsayılan takvim rengine ayarla"</string>
<string name="calendar_color_picker_dialog_title" msgid="3595509200561433667">"Takvim Rengi"</string>
<string name="view_event_response_label" msgid="8382281658458798329">"Katılıyor musunuz?"</string>
<string name="response_yes" msgid="2027484304899988350">"Evet"</string>
<string name="response_maybe" msgid="7791500973627841695">"Belki"</string>
@ -188,6 +192,24 @@
<item quantity="other" msgid="1997405398178470838">"+<xliff:g id="NUMBER">%d</xliff:g>"</item>
</plurals>
<string name="gadget_no_events" msgid="5209110911088302855">"Yakın takvim etkinliği yok"</string>
<!-- no translation found for preferences_experimental_category (8111213192001230350) -->
<skip />
<!-- no translation found for preferences_reminders_category (3179315692653755740) -->
<skip />
<!-- no translation found for preferences_reminders_responded_label (1832493092701800837) -->
<skip />
<!-- no translation found for preferences_reminders_responded_description (4110643636441722713) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_label (8529712276644546893) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_description (65969073433791290) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_start (3433058529220285232) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_end (7492883554865119346) -->
<skip />
<!-- no translation found for preferences_debug_category (6203278208385095018) -->
<skip />
<string name="copy_db" msgid="437691290566699292">"Veritabanını gönder"</string>
<string name="directory_searching_fmt" msgid="1232037509095606687">"<xliff:g id="DOMAIN">%s</xliff:g> aranıyor…"</string>
<string name="accessibility_remove_attendee" msgid="7082751172654698863">"Katılımcıyı kaldır"</string>

View File

@ -99,6 +99,10 @@
<string name="add_account" msgid="1669072099756774952">"Додати обліковий запис"</string>
<string name="view_event_calendar_label" msgid="6126231656338241140">"Календар:"</string>
<string name="view_event_organizer_label" msgid="2753151795647402277">"Організатор:"</string>
<string name="choose_event_color_label" msgid="2192923501857428854">"Виберіть колір події"</string>
<string name="event_color_picker_dialog_title" msgid="4631938661655159511">"Колір події"</string>
<string name="event_color_set_to_default" msgid="3447218820785647967">"Установити колір календаря за умовчанням"</string>
<string name="calendar_color_picker_dialog_title" msgid="3595509200561433667">"Колір календаря"</string>
<string name="view_event_response_label" msgid="8382281658458798329">"Підете?"</string>
<string name="response_yes" msgid="2027484304899988350">"Так"</string>
<string name="response_maybe" msgid="7791500973627841695">"Можливо"</string>
@ -188,6 +192,24 @@
<item quantity="other" msgid="1997405398178470838">"+<xliff:g id="NUMBER">%d</xliff:g>"</item>
</plurals>
<string name="gadget_no_events" msgid="5209110911088302855">"Немає майбутніх подій календаря"</string>
<!-- no translation found for preferences_experimental_category (8111213192001230350) -->
<skip />
<!-- no translation found for preferences_reminders_category (3179315692653755740) -->
<skip />
<!-- no translation found for preferences_reminders_responded_label (1832493092701800837) -->
<skip />
<!-- no translation found for preferences_reminders_responded_description (4110643636441722713) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_label (8529712276644546893) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_description (65969073433791290) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_start (3433058529220285232) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_end (7492883554865119346) -->
<skip />
<!-- no translation found for preferences_debug_category (6203278208385095018) -->
<skip />
<string name="copy_db" msgid="437691290566699292">"Надіслати базу даних"</string>
<string name="directory_searching_fmt" msgid="1232037509095606687">"Пошук <xliff:g id="DOMAIN">%s</xliff:g>…"</string>
<string name="accessibility_remove_attendee" msgid="7082751172654698863">"Видалити учасника"</string>

View File

@ -99,6 +99,10 @@
<string name="add_account" msgid="1669072099756774952">"Thêm tài khoản"</string>
<string name="view_event_calendar_label" msgid="6126231656338241140">"Lịch:"</string>
<string name="view_event_organizer_label" msgid="2753151795647402277">"Người tổ chức:"</string>
<string name="choose_event_color_label" msgid="2192923501857428854">"Chọn màu sự kiện"</string>
<string name="event_color_picker_dialog_title" msgid="4631938661655159511">"Màu sự kiện"</string>
<string name="event_color_set_to_default" msgid="3447218820785647967">"Đặt thành màu lịch mặc định"</string>
<string name="calendar_color_picker_dialog_title" msgid="3595509200561433667">"Màu lịch"</string>
<string name="view_event_response_label" msgid="8382281658458798329">"Tham dự?"</string>
<string name="response_yes" msgid="2027484304899988350">"Có"</string>
<string name="response_maybe" msgid="7791500973627841695">"Có thể"</string>
@ -188,6 +192,24 @@
<item quantity="other" msgid="1997405398178470838">"+<xliff:g id="NUMBER">%d</xliff:g>"</item>
</plurals>
<string name="gadget_no_events" msgid="5209110911088302855">"Không có sự kiện sắp tới trên lịch"</string>
<!-- no translation found for preferences_experimental_category (8111213192001230350) -->
<skip />
<!-- no translation found for preferences_reminders_category (3179315692653755740) -->
<skip />
<!-- no translation found for preferences_reminders_responded_label (1832493092701800837) -->
<skip />
<!-- no translation found for preferences_reminders_responded_description (4110643636441722713) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_label (8529712276644546893) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_description (65969073433791290) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_start (3433058529220285232) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_end (7492883554865119346) -->
<skip />
<!-- no translation found for preferences_debug_category (6203278208385095018) -->
<skip />
<string name="copy_db" msgid="437691290566699292">"Gửi cơ sở dữ liệu"</string>
<string name="directory_searching_fmt" msgid="1232037509095606687">"Đang tìm kiếm <xliff:g id="DOMAIN">%s</xliff:g>…"</string>
<string name="accessibility_remove_attendee" msgid="7082751172654698863">"Xóa người tham dự"</string>

View File

@ -99,6 +99,10 @@
<string name="add_account" msgid="1669072099756774952">"添加帐户"</string>
<string name="view_event_calendar_label" msgid="6126231656338241140">"日历:"</string>
<string name="view_event_organizer_label" msgid="2753151795647402277">"组织者:"</string>
<string name="choose_event_color_label" msgid="2192923501857428854">"选择活动颜色"</string>
<string name="event_color_picker_dialog_title" msgid="4631938661655159511">"活动颜色"</string>
<string name="event_color_set_to_default" msgid="3447218820785647967">"设为默认日历颜色"</string>
<string name="calendar_color_picker_dialog_title" msgid="3595509200561433667">"日历颜色"</string>
<string name="view_event_response_label" msgid="8382281658458798329">"参加吗?"</string>
<string name="response_yes" msgid="2027484304899988350">"参加"</string>
<string name="response_maybe" msgid="7791500973627841695">"待定"</string>
@ -188,6 +192,24 @@
<item quantity="other" msgid="1997405398178470838">"+<xliff:g id="NUMBER">%d</xliff:g>"</item>
</plurals>
<string name="gadget_no_events" msgid="5209110911088302855">"最近没有任何日历活动"</string>
<!-- no translation found for preferences_experimental_category (8111213192001230350) -->
<skip />
<!-- no translation found for preferences_reminders_category (3179315692653755740) -->
<skip />
<!-- no translation found for preferences_reminders_responded_label (1832493092701800837) -->
<skip />
<!-- no translation found for preferences_reminders_responded_description (4110643636441722713) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_label (8529712276644546893) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_description (65969073433791290) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_start (3433058529220285232) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_end (7492883554865119346) -->
<skip />
<!-- no translation found for preferences_debug_category (6203278208385095018) -->
<skip />
<string name="copy_db" msgid="437691290566699292">"发送数据库"</string>
<string name="directory_searching_fmt" msgid="1232037509095606687">"正在搜索 <xliff:g id="DOMAIN">%s</xliff:g>…"</string>
<string name="accessibility_remove_attendee" msgid="7082751172654698863">"删除参加者"</string>

View File

@ -99,6 +99,10 @@
<string name="add_account" msgid="1669072099756774952">"新增帳戶"</string>
<string name="view_event_calendar_label" msgid="6126231656338241140">"日曆:"</string>
<string name="view_event_organizer_label" msgid="2753151795647402277">"主辦人:"</string>
<string name="choose_event_color_label" msgid="2192923501857428854">"選擇活動顏色"</string>
<string name="event_color_picker_dialog_title" msgid="4631938661655159511">"活動顏色"</string>
<string name="event_color_set_to_default" msgid="3447218820785647967">"設為預設日曆顏色"</string>
<string name="calendar_color_picker_dialog_title" msgid="3595509200561433667">"日曆顏色"</string>
<string name="view_event_response_label" msgid="8382281658458798329">"是否參加?"</string>
<string name="response_yes" msgid="2027484304899988350">"是"</string>
<string name="response_maybe" msgid="7791500973627841695">"不確定"</string>
@ -188,6 +192,24 @@
<item quantity="other" msgid="1997405398178470838">"+<xliff:g id="NUMBER">%d</xliff:g>"</item>
</plurals>
<string name="gadget_no_events" msgid="5209110911088302855">"沒有即將開始的日曆活動"</string>
<!-- no translation found for preferences_experimental_category (8111213192001230350) -->
<skip />
<!-- no translation found for preferences_reminders_category (3179315692653755740) -->
<skip />
<!-- no translation found for preferences_reminders_responded_label (1832493092701800837) -->
<skip />
<!-- no translation found for preferences_reminders_responded_description (4110643636441722713) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_label (8529712276644546893) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_description (65969073433791290) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_start (3433058529220285232) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_end (7492883554865119346) -->
<skip />
<!-- no translation found for preferences_debug_category (6203278208385095018) -->
<skip />
<string name="copy_db" msgid="437691290566699292">"傳送資料庫"</string>
<string name="directory_searching_fmt" msgid="1232037509095606687">"正在搜尋 <xliff:g id="DOMAIN">%s</xliff:g>…"</string>
<string name="accessibility_remove_attendee" msgid="7082751172654698863">"移除參加者"</string>

View File

@ -99,6 +99,10 @@
<string name="add_account" msgid="1669072099756774952">"Faka i-akhawunti"</string>
<string name="view_event_calendar_label" msgid="6126231656338241140">"Ikhalenda:"</string>
<string name="view_event_organizer_label" msgid="2753151795647402277">"Umdidiyeli:"</string>
<string name="choose_event_color_label" msgid="2192923501857428854">"Khetha umbala womcimbi"</string>
<string name="event_color_picker_dialog_title" msgid="4631938661655159511">"Umbala womcimbi"</string>
<string name="event_color_set_to_default" msgid="3447218820785647967">"Misela kumbala wekhalenda ozenzakalelayo"</string>
<string name="calendar_color_picker_dialog_title" msgid="3595509200561433667">"Umbala wekhalenda"</string>
<string name="view_event_response_label" msgid="8382281658458798329">"Uyahlanganyela?"</string>
<string name="response_yes" msgid="2027484304899988350">"Yebo"</string>
<string name="response_maybe" msgid="7791500973627841695">"Mhlawumbe"</string>
@ -192,6 +196,24 @@
<item quantity="other" msgid="1997405398178470838">"+<xliff:g id="NUMBER">%d</xliff:g>"</item>
</plurals>
<string name="gadget_no_events" msgid="5209110911088302855">"Azikho izenzakalo zekhalenda ezizayo"</string>
<!-- no translation found for preferences_experimental_category (8111213192001230350) -->
<skip />
<!-- no translation found for preferences_reminders_category (3179315692653755740) -->
<skip />
<!-- no translation found for preferences_reminders_responded_label (1832493092701800837) -->
<skip />
<!-- no translation found for preferences_reminders_responded_description (4110643636441722713) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_label (8529712276644546893) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_description (65969073433791290) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_start (3433058529220285232) -->
<skip />
<!-- no translation found for preferences_reminders_quiet_hours_end (7492883554865119346) -->
<skip />
<!-- no translation found for preferences_debug_category (6203278208385095018) -->
<skip />
<string name="copy_db" msgid="437691290566699292">"Thumela imininingo egciniwe"</string>
<string name="directory_searching_fmt" msgid="1232037509095606687">"Iyasesha...<xliff:g id="DOMAIN">%s</xliff:g>"</string>
<string name="accessibility_remove_attendee" msgid="7082751172654698863">"Susa abaphelekezeli"</string>

View File

@ -52,4 +52,5 @@
<dimen name="calendar_controls_height">300dip</dimen>
<dimen name="agenda_item_right_margin">4dip</dimen>
<dimen name="today_icon_text_size">14sp</dimen>
<dimen name="color_view_touch_area_increase">16dp</dimen>
</resources>

View File

@ -278,6 +278,16 @@
<string name="view_event_organizer_label">Organizer:</string>
<!-- Label for the local timezone -->
<!-- Label for showing event color picker -->
<string name="choose_event_color_label">Choose event color</string>
<!-- Title for event color picker dialog -->
<string name="event_color_picker_dialog_title">Event Color</string>
<!-- Label for button which sets event color to default calendar color -->
<string name="event_color_set_to_default">Set to default calendar color</string>
<!-- Title for calendar color picker dialog -->
<string name="calendar_color_picker_dialog_title">Calendar Color</string>
<!-- Label for whether the user is attending this event. This is shown when
a user is invited to a meeting or event. The possible answers are
'yes', 'no', and 'maybe' (and, initially, 'no response'). -->
@ -552,6 +562,27 @@
<!-- DO NOT TRANSLATE -->
<string name="tardis">TARDIS</string>
<!-- Experimental settings [CHAR LIMIT = 30]-->
<string name="preferences_experimental_category">Experimental</string>
<!-- Reminders settings [CHAR LIMIT = 30]-->
<string name="preferences_reminders_category">Reminders</string>
<!-- Preference label for when to send reminders [CHAR LIMIT = 25] -->
<string name="preferences_reminders_responded_label">Limit reminders by attendance</string>
<!-- Preference description for when to send reminders [CHAR LIMIT = NONE]-->
<string name="preferences_reminders_responded_description">Don\'t post reminders unless you\'ve responded \"Yes\" or \"Maybe\"</string>
<!-- Preference label for quiet hours [CHAR LIMIT = 25]-->
<string name="preferences_reminders_quiet_hours_label">Quiet hours</string>
<!-- Preference description for quiet hours [CHAR LIMIT = NONE]-->
<string name="preferences_reminders_quiet_hours_description">Silence event reminders during specified time.</string>
<!-- Preference label for quiet hours start time [CHAR LIMIT = 25]-->
<string name="preferences_reminders_quiet_hours_start">Quiet hours start time</string>
<!-- Preference label for quiet hours end time [CHAR LIMIT = 25]-->
<string name="preferences_reminders_quiet_hours_end">Quiet hours end time</string>
<!-- Preferences used for debugging purposes [CHAR LIMIT = 30]-->
<string name="preferences_debug_category">Debugging</string>
<!-- Send a copy of the database to developers for debugging [CHAR LIMIT="NONE"] -->
<string name="copy_db">Send database</string>

View File

@ -17,7 +17,7 @@
** limitations under the License.
*/
-->
<resources>
<resources xmlns:android="http://schemas.android.com/apk/res/android">

View File

@ -16,11 +16,37 @@
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory
android:key="preferences_tardis_category"
android:title="@string/tardis">
android:key="preferences_debug_category"
android:title="@string/preferences_debug_category">
<Preference
android:key="preferences_copy_db"
android:title="@string/copy_db" />
</PreferenceCategory>
<PreferenceCategory
android:key="preferences_reminders_category"
android:title="@string/preferences_reminders_category" >
<CheckBoxPreference
android:key="preferences_reminders_responded"
android:title="@string/preferences_reminders_responded_label"
android:summary="@string/preferences_reminders_responded_description"/>
<CheckBoxPreference
android:key="preferences_reminders_quiet_hours"
android:title="@string/preferences_reminders_quiet_hours_label"
android:summary="@string/preferences_reminders_quiet_hours_description"/>
<Preference
android:key="preferences_reminders_quiet_hours_start"
android:dependency="preferences_reminders_quiet_hours"
android:title="@string/preferences_reminders_quiet_hours_start"
android:summary="10:00pm" />
<Preference
android:key="preferences_reminders_quiet_hours_end"
android:dependency="preferences_reminders_quiet_hours"
android:title="@string/preferences_reminders_quiet_hours_end"
android:summary="08:00am" />
</PreferenceCategory>
<PreferenceCategory
android:key="preferences_tardis_category"
android:title="@string/tardis">
<CheckBoxPreference
android:key="preferences_tardis_1"
android:title="@string/do_not_check" />

View File

@ -1188,7 +1188,8 @@ public class AllInOneActivity extends AbstractCalendarActivity implements EventH
EventInfoFragment fragment = new EventInfoFragment(this,
event.id, event.startTime.toMillis(false),
event.endTime.toMillis(false), response, true,
EventInfoFragment.DIALOG_WINDOW_STYLE);
EventInfoFragment.DIALOG_WINDOW_STYLE,
null /* No reminders to explicitly pass in. */);
fragment.setDialogParams(event.x, event.y, mActionBar.getHeight());
FragmentManager fm = getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
@ -1231,9 +1232,6 @@ public class AllInOneActivity extends AbstractCalendarActivity implements EventH
@Override
public boolean onQueryTextSubmit(String query) {
if ("TARDIS".equalsIgnoreCase(query)) {
Utils.tardis();
}
mSearchMenu.collapseActionView();
mController.sendEvent(this, EventType.SEARCH, null, null, -1, ViewType.CURRENT, 0, query,
getComponentName());

View File

@ -0,0 +1,182 @@
/*
* Copyright (C) 2013 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.calendar;
import android.app.Activity;
import android.content.ContentUris;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.CalendarContract.Calendars;
import android.provider.CalendarContract.Colors;
import android.util.SparseIntArray;
import com.android.colorpicker.ColorPickerDialog;
import com.android.colorpicker.ColorPickerSwatch.OnColorSelectedListener;
import com.android.colorpicker.HsvColorComparator;
import java.util.ArrayList;
import java.util.Arrays;
public class CalendarColorPickerDialog extends ColorPickerDialog {
private static final int NUM_COLUMNS = 4;
private static final int TOKEN_QUERY_CALENDARS = 1 << 1;
private static final int TOKEN_QUERY_COLORS = 1 << 2;
static final String[] CALENDARS_PROJECTION = new String[] {
Calendars.ACCOUNT_NAME,
Calendars.ACCOUNT_TYPE,
Calendars.CALENDAR_COLOR
};
static final int CALENDARS_INDEX_ACCOUNT_NAME = 0;
static final int CALENDARS_INDEX_ACCOUNT_TYPE = 1;
static final int CALENDARS_INDEX_CALENDAR_COLOR = 2;
static final String[] COLORS_PROJECTION = new String[] {
Colors.COLOR,
Colors.COLOR_KEY
};
static final String COLORS_WHERE = Colors.ACCOUNT_NAME + "=? AND " + Colors.ACCOUNT_TYPE +
"=? AND " + Colors.COLOR_TYPE + "=" + Colors.TYPE_CALENDAR;
public static final int COLORS_INDEX_COLOR = 0;
public static final int COLORS_INDEX_COLOR_KEY = 1;
private QueryService mService;
private Uri mUri;
private SparseIntArray mColorKeyMap = new SparseIntArray();
private long mCalendarId;
private class QueryService extends AsyncQueryService {
private QueryService(Context context) {
super(context);
}
@Override
protected void onQueryComplete(int token, Object cookie, Cursor cursor) {
// If the query didn't return a cursor for some reason return
if (cursor == null) {
return;
}
// If the Activity is finishing, then close the cursor.
// Otherwise, use the new cursor in the adapter.
final Activity activity = getActivity();
if (activity == null || activity.isFinishing()) {
cursor.close();
return;
}
switch (token) {
case TOKEN_QUERY_CALENDARS:
if (!cursor.moveToFirst()) {
cursor.close();
dismiss();
break;
}
mSelectedColor = Utils.getDisplayColorFromColor(
cursor.getInt(CALENDARS_INDEX_CALENDAR_COLOR));
Uri uri = Colors.CONTENT_URI;
String[] args = new String[] {
cursor.getString(CALENDARS_INDEX_ACCOUNT_NAME),
cursor.getString(CALENDARS_INDEX_ACCOUNT_TYPE) };
cursor.close();
startQuery(TOKEN_QUERY_COLORS, null, uri, COLORS_PROJECTION, COLORS_WHERE,
args, null);
break;
case TOKEN_QUERY_COLORS:
if (!cursor.moveToFirst()) {
cursor.close();
dismiss();
break;
}
ArrayList<Integer> colors = new ArrayList<Integer>();
do
{
int colorKey = cursor.getInt(COLORS_INDEX_COLOR_KEY);
int rawColor = cursor.getInt(COLORS_INDEX_COLOR);
int displayColor = Utils.getDisplayColorFromColor(rawColor);
mColorKeyMap.put(displayColor, colorKey);
colors.add(displayColor);
} while (cursor.moveToNext());
Integer[] colorsToSort = colors.toArray(new Integer[colors.size()]);
Arrays.sort(colorsToSort, new HsvColorComparator());
mColors = new int[colorsToSort.length];
for (int i = 0; i < mColors.length; i++) {
mColors[i] = colorsToSort[i];
}
showPalette();
cursor.close();
break;
}
}
}
private class OnCalendarColorSelectedListener implements OnColorSelectedListener {
@Override
public void onColorSelected(int color) {
if (color == mSelectedColor) {
return;
}
ContentValues values = new ContentValues();
values.put(Calendars.CALENDAR_COLOR_KEY, mColorKeyMap.get(color));
mService.startUpdate(mService.getNextToken(), null, mUri, values,
null, null, Utils.UNDO_DELAY);
}
}
public CalendarColorPickerDialog() {
// Empty constructor required for dialog fragments.
}
public CalendarColorPickerDialog(long calendarId, boolean isTablet) {
super(R.string.calendar_color_picker_dialog_title, null, -1, NUM_COLUMNS,
isTablet ? SIZE_LARGE : SIZE_SMALL);
mListener = new OnCalendarColorSelectedListener();
mCalendarId = calendarId;
mUri = ContentUris.withAppendedId(Calendars.CONTENT_URI, mCalendarId);
}
public void setCalendarId(long calendarId) {
mCalendarId = calendarId;
mUri = ContentUris.withAppendedId(Calendars.CONTENT_URI, mCalendarId);
if (mService != null) {
mService.startQuery(TOKEN_QUERY_CALENDARS, null, mUri, CALENDARS_PROJECTION,
null, null, null);
}
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
final Activity activity = getActivity();
mService = new QueryService(activity);
mService.startQuery(TOKEN_QUERY_CALENDARS, null, mUri, CALENDARS_PROJECTION,
null, null, null);
}
}

View File

@ -16,9 +16,6 @@
package com.android.calendar;
import com.android.calendar.event.EditEventHelper;
import com.android.common.Rfc822Validator;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
@ -29,6 +26,10 @@ import android.provider.CalendarContract.Reminders;
import android.text.TextUtils;
import android.text.util.Rfc822Token;
import com.android.calendar.event.EditEventHelper;
import com.android.calendar.event.EventColorCache;
import com.android.common.Rfc822Validator;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collections;
@ -201,6 +202,8 @@ public class CalendarEventModel implements Serializable {
public long mCalendarId = -1;
public String mCalendarDisplayName = ""; // Make sure this is in sync with the mCalendarId
public int mCalendarColor = 0;
public String mCalendarAccountName;
public String mCalendarAccountType;
public int mCalendarMaxReminders;
public String mCalendarAllowedReminders;
public String mCalendarAllowedAttendeeTypes;
@ -210,6 +213,9 @@ public class CalendarEventModel implements Serializable {
public String mSyncAccount = null;
public String mSyncAccountType = null;
public EventColorCache mEventColorCache;
public int mEventColor = -1;
// PROVIDER_NOTES owner account comes from the calendars table
public String mOwnerAccount = null;
public String mTitle = null;
@ -843,6 +849,11 @@ public class CalendarEventModel implements Serializable {
if (mEventStatus != originalModel.mEventStatus) {
return false;
}
if (mEventColor != originalModel.mEventColor) {
return false;
}
return true;
}
@ -872,4 +883,20 @@ public class CalendarEventModel implements Serializable {
return true;
}
public int[] getCalendarEventColors() {
if (mEventColorCache != null) {
return mEventColorCache.getColorArray(mCalendarAccountName, mCalendarAccountType);
}
return null;
}
public int getEventColorKey() {
if (mEventColorCache != null) {
return mEventColorCache.getColorKey(mCalendarAccountName, mCalendarAccountType,
mEventColor);
}
return -1;
}
}

View File

@ -64,7 +64,7 @@ public class CalendarSettingsActivity extends PreferenceActivity {
mAccounts = accounts;
if (Utils.getTardis() + DateUtils.MINUTE_IN_MILLIS > System.currentTimeMillis()) {
Header tardisHeader = new Header();
tardisHeader.title = getString(R.string.tardis);
tardisHeader.title = getString(R.string.preferences_experimental_category);
tardisHeader.fragment = "com.android.calendar.OtherPreferences";
target.add(tardisHeader);
}

View File

@ -19,16 +19,18 @@ package com.android.calendar;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnDismissListener;
import android.widget.Button;
/**
* A helper class for editing the response to an invitation when the invitation
* is a repeating event.
*/
public class EditResponseHelper implements DialogInterface.OnClickListener {
public class EditResponseHelper implements DialogInterface.OnClickListener, OnDismissListener {
private final Activity mParent;
private int mWhichEvents = -1;
private AlertDialog mAlertDialog;
private boolean mClickedOk = false;
/**
* This callback is passed in to this object when this object is created
@ -44,6 +46,14 @@ public class EditResponseHelper implements DialogInterface.OnClickListener {
mDialogListener = listener;
}
/**
* @return whichEvents, representing which events were selected on which to
* apply the response:
* -1 means no choice selected, or the dialog was
* canceled.
* 0 means just the single event.
* 1 means all events.
*/
public int getWhichEvents() {
return mWhichEvents;
}
@ -52,7 +62,33 @@ public class EditResponseHelper implements DialogInterface.OnClickListener {
mWhichEvents = which;
}
@Override
public void onClick(DialogInterface dialog, int which) {
setClickedOk(true);
}
@Override
public void onDismiss(DialogInterface dialog) {
// If the click was not "OK", clear out whichEvents to represent
// that the dialog was canceled.
if (!getClickedOk()) {
setWhichEvents(-1);
}
setClickedOk(false);
// Call the pre-set dismiss listener too.
if (mDismissListener != null) {
mDismissListener.onDismiss(dialog);
}
}
private boolean getClickedOk() {
return mClickedOk;
}
private void setClickedOk(boolean clickedOk) {
mClickedOk = clickedOk;
}
/**
@ -70,6 +106,20 @@ public class EditResponseHelper implements DialogInterface.OnClickListener {
}
};
private DialogInterface.OnDismissListener mDismissListener;
/**
* Set the dismiss listener to be called when the dialog is ended. There,
* use getWhichEvents() to see how the dialog was dismissed; if it returns
* -1, the dialog was canceled out. If it is not -1, it's the index of
* which events the user wants to respond to.
* @param onDismissListener
*/
public void setDismissListener(OnDismissListener onDismissListener) {
mDismissListener = onDismissListener;
}
public void showDialog(int whichEvents) {
// We need to have a non-null listener, otherwise we get null when
// we try to fetch the "Ok" button.
@ -81,6 +131,9 @@ public class EditResponseHelper implements DialogInterface.OnClickListener {
.setSingleChoiceItems(R.array.change_response_labels, whichEvents, mListListener)
.setPositiveButton(android.R.string.ok, mDialogListener)
.setNegativeButton(android.R.string.cancel, null).show();
// The caller may set a dismiss listener to hear back when the dialog is
// finished. Use getWhichEvents() to see how the dialog was dismissed.
dialog.setOnDismissListener(this);
mAlertDialog = dialog;
if (whichEvents == -1) {
@ -90,4 +143,11 @@ public class EditResponseHelper implements DialogInterface.OnClickListener {
ok.setEnabled(false);
}
}
public void dismissAlertDialog() {
if (mAlertDialog != null) {
mAlertDialog.dismiss();
}
}
}

View File

@ -25,12 +25,18 @@ import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.content.Intent;
import android.content.res.Resources;
import android.database.ContentObserver;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.provider.CalendarContract;
import android.provider.CalendarContract.Attendees;
import android.util.Log;
import android.widget.Toast;
import com.android.calendar.CalendarEventModel.ReminderEntry;
import java.util.ArrayList;
import java.util.List;
public class EventInfoActivity extends Activity {
@ -42,6 +48,23 @@ public class EventInfoActivity extends Activity {
private long mStartMillis, mEndMillis;
private long mEventId;
// Create an observer so that we can update the views whenever a
// Calendar event changes.
private final ContentObserver mObserver = new ContentObserver(new Handler()) {
@Override
public boolean deliverSelfNotifications() {
return false;
}
@Override
public void onChange(boolean selfChange) {
if (selfChange) return;
if (mInfoFragment != null) {
mInfoFragment.reloadEvents();
}
}
};
@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
@ -51,6 +74,7 @@ public class EventInfoActivity extends Activity {
int attendeeResponse = 0;
mEventId = -1;
boolean isDialog = false;
ArrayList<ReminderEntry> reminders = null;
if (icicle != null) {
mEventId = icicle.getLong(EventInfoFragment.BUNDLE_KEY_EVENT_ID);
@ -58,6 +82,8 @@ public class EventInfoActivity extends Activity {
mEndMillis = icicle.getLong(EventInfoFragment.BUNDLE_KEY_END_MILLIS);
attendeeResponse = icicle.getInt(EventInfoFragment.BUNDLE_KEY_ATTENDEE_RESPONSE);
isDialog = icicle.getBoolean(EventInfoFragment.BUNDLE_KEY_IS_DIALOG);
reminders = Utils.readRemindersFromBundle(icicle);
} else if (intent != null && Intent.ACTION_VIEW.equals(intent.getAction())) {
mStartMillis = intent.getLongExtra(EXTRA_EVENT_BEGIN_TIME, 0);
mEndMillis = intent.getLongExtra(EXTRA_EVENT_END_TIME, 0);
@ -127,61 +153,15 @@ public class EventInfoActivity extends Activity {
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction ft = fragmentManager.beginTransaction();
mInfoFragment = new EventInfoFragment(this, mEventId, mStartMillis, mEndMillis,
attendeeResponse, isDialog, isDialog ?
attendeeResponse, isDialog, (isDialog ?
EventInfoFragment.DIALOG_WINDOW_STYLE :
EventInfoFragment.FULL_WINDOW_STYLE);
EventInfoFragment.FULL_WINDOW_STYLE),
reminders);
ft.replace(R.id.main_frame, mInfoFragment);
ft.commit();
}
}
// @Override
// public boolean onOptionsItemSelected(MenuItem item) {
//
// // Handles option menu selections:
// // Home button - close event info activity and start the main calendar one
// // Edit button - start the event edit activity and close the info activity
// // Delete button - start a delete query that calls a runnable that close the info activity
//
// switch (item.getItemId()) {
// case android.R.id.home:
// Intent launchIntent = new Intent();
// launchIntent.setAction(Intent.ACTION_VIEW);
// launchIntent.setData(Uri.parse(CalendarContract.CONTENT_URI + "/time"));
// launchIntent.setFlags(
// Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED | Intent.FLAG_ACTIVITY_CLEAR_TOP);
// startActivity(launchIntent);
// finish();
// return true;
// case R.id.info_action_edit:
// Uri uri = ContentUris.withAppendedId(Events.CONTENT_URI, mEventId);
// Intent intent = new Intent(Intent.ACTION_EDIT, uri);
// intent.putExtra(EXTRA_EVENT_BEGIN_TIME, mStartMillis);
// intent.putExtra(EXTRA_EVENT_END_TIME, mEndMillis);
// intent.setClass(this, EditEventActivity.class);
// intent.putExtra(EVENT_EDIT_ON_LAUNCH, true);
// startActivity(intent);
// finish ();
// break;
// case R.id.info_action_delete:
// DeleteEventHelper deleteHelper = new DeleteEventHelper(
// this, this, true /* exitWhenDone */);
// deleteHelper.delete(mStartMillis, mEndMillis, mEventId, -1, onDeleteRunnable);
// break;
// default:
// break;
// }
// return super.onOptionsItemSelected(item);
// }
// runs at the end of a delete action and closes the activity
// private Runnable onDeleteRunnable = new Runnable() {
// @Override
// public void run() {
// finish ();
// }
// };
@Override
protected void onNewIntent(Intent intent) {
// From the Android Dev Guide: "It's important to note that when
@ -202,11 +182,14 @@ public class EventInfoActivity extends Activity {
@Override
protected void onResume() {
super.onResume();
getContentResolver().registerContentObserver(CalendarContract.Events.CONTENT_URI,
true, mObserver);
}
@Override
protected void onPause() {
super.onPause();
getContentResolver().unregisterContentObserver(mObserver);
}
@Override

View File

@ -42,6 +42,7 @@ import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.res.Resources;
import android.database.Cursor;
import android.graphics.Color;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.net.Uri;
@ -49,6 +50,7 @@ import android.os.Bundle;
import android.provider.CalendarContract;
import android.provider.CalendarContract.Attendees;
import android.provider.CalendarContract.Calendars;
import android.provider.CalendarContract.Colors;
import android.provider.CalendarContract.Events;
import android.provider.CalendarContract.Reminders;
import android.provider.ContactsContract;
@ -64,6 +66,7 @@ import android.text.method.MovementMethod;
import android.text.style.ForegroundColorSpan;
import android.text.util.Rfc822Token;
import android.util.Log;
import android.util.SparseIntArray;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.Menu;
@ -97,10 +100,13 @@ import com.android.calendar.alerts.QuickResponseActivity;
import com.android.calendar.event.AttendeesView;
import com.android.calendar.event.EditEventActivity;
import com.android.calendar.event.EditEventHelper;
import com.android.calendar.event.EventColorPickerDialog;
import com.android.calendar.event.EventViewUtils;
import com.android.calendarcommon2.DateException;
import com.android.calendarcommon2.Duration;
import com.android.calendarcommon2.EventRecurrence;
import com.android.colorpicker.ColorPickerSwatch.OnColorSelectedListener;
import com.android.colorpicker.HsvColorComparator;
import java.util.ArrayList;
import java.util.Arrays;
@ -108,22 +114,38 @@ import java.util.Collections;
import java.util.List;
public class EventInfoFragment extends DialogFragment implements OnCheckedChangeListener,
CalendarController.EventHandler, OnClickListener, DeleteEventHelper.DeleteNotifyListener {
CalendarController.EventHandler, OnClickListener, DeleteEventHelper.DeleteNotifyListener,
OnColorSelectedListener {
public static final boolean DEBUG = false;
public static final String TAG = "EventInfoFragment";
private static final int REQUEST_CODE_COLOR_PICKER = 0;
protected static final String BUNDLE_KEY_EVENT_ID = "key_event_id";
protected static final String BUNDLE_KEY_START_MILLIS = "key_start_millis";
protected static final String BUNDLE_KEY_END_MILLIS = "key_end_millis";
protected static final String BUNDLE_KEY_IS_DIALOG = "key_fragment_is_dialog";
protected static final String BUNDLE_KEY_DELETE_DIALOG_VISIBLE = "key_delete_dialog_visible";
protected static final String BUNDLE_KEY_WINDOW_STYLE = "key_window_style";
protected static final String BUNDLE_KEY_CALENDAR_COLOR = "key_calendar_color";
protected static final String BUNDLE_KEY_CURRENT_COLOR = "key_current_color";
protected static final String BUNDLE_KEY_ORIGINAL_COLOR = "key_original_color";
protected static final String BUNDLE_KEY_ATTENDEE_RESPONSE = "key_attendee_response";
protected static final String BUNDLE_KEY_USER_SET_ATTENDEE_RESPONSE =
"key_user_set_attendee_response";
protected static final String BUNDLE_KEY_TENTATIVE_USER_RESPONSE =
"key_tentative_user_response";
protected static final String BUNDLE_KEY_RESPONSE_WHICH_EVENTS = "key_response_which_events";
protected static final String BUNDLE_KEY_REMINDER_MINUTES = "key_reminder_minutes";
protected static final String BUNDLE_KEY_REMINDER_METHODS = "key_reminder_methods";
private static final String PERIOD_SPACE = ". ";
private static final String NO_EVENT_COLOR = "";
/**
* These are the corresponding indices into the array of strings
* "R.array.change_response_labels" in the resource file.
@ -144,9 +166,11 @@ public class EventInfoFragment extends DialogFragment implements OnCheckedChange
private static final int TOKEN_QUERY_DUPLICATE_CALENDARS = 1 << 3;
private static final int TOKEN_QUERY_REMINDERS = 1 << 4;
private static final int TOKEN_QUERY_VISIBLE_CALENDARS = 1 << 5;
private static final int TOKEN_QUERY_COLORS = 1 << 6;
private static final int TOKEN_QUERY_ALL = TOKEN_QUERY_DUPLICATE_CALENDARS
| TOKEN_QUERY_ATTENDEES | TOKEN_QUERY_CALENDARS | TOKEN_QUERY_EVENT
| TOKEN_QUERY_REMINDERS | TOKEN_QUERY_VISIBLE_CALENDARS;
| TOKEN_QUERY_REMINDERS | TOKEN_QUERY_VISIBLE_CALENDARS | TOKEN_QUERY_COLORS;
private int mCurrentQuery = 0;
@ -162,17 +186,18 @@ public class EventInfoFragment extends DialogFragment implements OnCheckedChange
Events.DESCRIPTION, // 8
Events.EVENT_LOCATION, // 9
Calendars.CALENDAR_ACCESS_LEVEL, // 10
Events.DISPLAY_COLOR, // 11 If SDK < 16, set to Calendars.CALENDAR_COLOR.
Events.HAS_ATTENDEE_DATA, // 12
Events.ORGANIZER, // 13
Events.HAS_ALARM, // 14
Calendars.MAX_REMINDERS, //15
Calendars.ALLOWED_REMINDERS, // 16
Events.CUSTOM_APP_PACKAGE, // 17
Events.CUSTOM_APP_URI, // 18
Events.ORIGINAL_SYNC_ID, // 19 do not remove; used in DeleteEventHelper
Events.CALENDAR_COLOR, // 11
Events.EVENT_COLOR, // 12
Events.HAS_ATTENDEE_DATA, // 13
Events.ORGANIZER, // 14
Events.HAS_ALARM, // 15
Calendars.MAX_REMINDERS, // 16
Calendars.ALLOWED_REMINDERS, // 17
Events.CUSTOM_APP_PACKAGE, // 18
Events.CUSTOM_APP_URI, // 19
Events.DTEND, // 20
Events.DURATION, // 21
Events.ORIGINAL_SYNC_ID // 22 do not remove; used in DeleteEventHelper
};
private static final int EVENT_INDEX_ID = 0;
private static final int EVENT_INDEX_TITLE = 1;
@ -185,14 +210,15 @@ public class EventInfoFragment extends DialogFragment implements OnCheckedChange
private static final int EVENT_INDEX_DESCRIPTION = 8;
private static final int EVENT_INDEX_EVENT_LOCATION = 9;
private static final int EVENT_INDEX_ACCESS_LEVEL = 10;
private static final int EVENT_INDEX_COLOR = 11;
private static final int EVENT_INDEX_HAS_ATTENDEE_DATA = 12;
private static final int EVENT_INDEX_ORGANIZER = 13;
private static final int EVENT_INDEX_HAS_ALARM = 14;
private static final int EVENT_INDEX_MAX_REMINDERS = 15;
private static final int EVENT_INDEX_ALLOWED_REMINDERS = 16;
private static final int EVENT_INDEX_CUSTOM_APP_PACKAGE = 17;
private static final int EVENT_INDEX_CUSTOM_APP_URI = 18;
private static final int EVENT_INDEX_CALENDAR_COLOR = 11;
private static final int EVENT_INDEX_EVENT_COLOR = 12;
private static final int EVENT_INDEX_HAS_ATTENDEE_DATA = 13;
private static final int EVENT_INDEX_ORGANIZER = 14;
private static final int EVENT_INDEX_HAS_ALARM = 15;
private static final int EVENT_INDEX_MAX_REMINDERS = 16;
private static final int EVENT_INDEX_ALLOWED_REMINDERS = 17;
private static final int EVENT_INDEX_CUSTOM_APP_PACKAGE = 18;
private static final int EVENT_INDEX_CUSTOM_APP_URI = 19;
private static final int EVENT_INDEX_DTEND = 20;
private static final int EVENT_INDEX_DURATION = 21;
@ -215,7 +241,6 @@ public class EventInfoFragment extends DialogFragment implements OnCheckedChange
static {
if (!Utils.isJellybeanOrLater()) {
EVENT_PROJECTION[EVENT_INDEX_COLOR] = Calendars.CALENDAR_COLOR;
EVENT_PROJECTION[EVENT_INDEX_CUSTOM_APP_PACKAGE] = Events._ID; // dummy value
EVENT_PROJECTION[EVENT_INDEX_CUSTOM_APP_URI] = Events._ID; // dummy value
@ -245,17 +270,30 @@ public class EventInfoFragment extends DialogFragment implements OnCheckedChange
Calendars.CALENDAR_DISPLAY_NAME, // 1
Calendars.OWNER_ACCOUNT, // 2
Calendars.CAN_ORGANIZER_RESPOND, // 3
Calendars.ACCOUNT_NAME // 4
Calendars.ACCOUNT_NAME, // 4
Calendars.ACCOUNT_TYPE // 5
};
static final int CALENDARS_INDEX_DISPLAY_NAME = 1;
static final int CALENDARS_INDEX_OWNER_ACCOUNT = 2;
static final int CALENDARS_INDEX_OWNER_CAN_RESPOND = 3;
static final int CALENDARS_INDEX_ACCOUNT_NAME = 4;
static final int CALENDARS_INDEX_ACCOUNT_TYPE = 5;
static final String CALENDARS_WHERE = Calendars._ID + "=?";
static final String CALENDARS_DUPLICATE_NAME_WHERE = Calendars.CALENDAR_DISPLAY_NAME + "=?";
static final String CALENDARS_VISIBLE_WHERE = Calendars.VISIBLE + "=?";
static final String[] COLORS_PROJECTION = new String[] {
Colors._ID, // 0
Colors.COLOR, // 1
Colors.COLOR_KEY // 2
};
static final String COLORS_WHERE = Colors.ACCOUNT_NAME + "=? AND " + Colors.ACCOUNT_TYPE +
"=? AND " + Colors.COLOR_TYPE + "=" + Colors.TYPE_EVENT;
public static final int COLORS_INDEX_COLOR = 1;
public static final int COLORS_INDEX_COLOR_KEY = 2;
private View mView;
@ -293,6 +331,10 @@ public class EventInfoFragment extends DialogFragment implements OnCheckedChange
private int mOriginalAttendeeResponse;
private int mAttendeeResponseFromIntent = Attendees.ATTENDEE_STATUS_NONE;
private int mUserSetResponse = Attendees.ATTENDEE_STATUS_NONE;
private int mWhichEvents = -1;
// Used as the temporary response until the dialog is confirmed. It is also
// able to be used as a state marker for configuration changes.
private int mTentativeUserSetResponse = Attendees.ATTENDEE_STATUS_NONE;
private boolean mIsRepeating;
private boolean mHasAlarm;
private int mMaxReminders;
@ -312,11 +354,19 @@ public class EventInfoFragment extends DialogFragment implements OnCheckedChange
private View mLoadingMsgView;
private ObjectAnimator mAnimateAlpha;
private long mLoadingMsgStartTime;
private EventColorPickerDialog mDialog;
private SparseIntArray mDisplayColorKeyMap = new SparseIntArray();
private int[] mColors;
private int mOriginalColor = -1;
private int mCalendarColor = -1;
private int mCurrentColor = -1;
private static final int FADE_IN_TIME = 300; // in milliseconds
private static final int LOADING_MSG_DELAY = 600; // in milliseconds
private static final int LOADING_MSG_MIN_DISPLAY_TIME = 600;
private boolean mNoCrossFade = false; // Used to prevent repeated cross-fade
private RadioGroup mResponseRadioGroup;
ArrayList<Attendee> mAcceptedAttendees = new ArrayList<Attendee>();
ArrayList<Attendee> mDeclinedAttendees = new ArrayList<Attendee>();
@ -324,8 +374,6 @@ public class EventInfoFragment extends DialogFragment implements OnCheckedChange
ArrayList<Attendee> mNoResponseAttendees = new ArrayList<Attendee>();
ArrayList<String> mToEmails = new ArrayList<String>();
ArrayList<String> mCcEmails = new ArrayList<String>();
private int mColor;
private int mDefaultReminderMinutes;
private final ArrayList<LinearLayout> mReminderViews = new ArrayList<LinearLayout>(0);
@ -386,6 +434,8 @@ public class EventInfoFragment extends DialogFragment implements OnCheckedChange
private Activity mActivity;
private Context mContext;
private CalendarController mController;
private class QueryHandler extends AsyncQueryService {
public QueryHandler(Context context) {
super(context);
@ -412,6 +462,21 @@ public class EventInfoFragment extends DialogFragment implements OnCheckedChange
activity.finish();
return;
}
if (mCalendarColor == -1) {
mCalendarColor = Utils.getDisplayColorFromColor(
mEventCursor.getInt(EVENT_INDEX_CALENDAR_COLOR));
}
if (mOriginalColor == -1) {
mOriginalColor = mEventCursor.isNull(EVENT_INDEX_EVENT_COLOR)
? mCalendarColor : Utils.getDisplayColorFromColor(
mEventCursor.getInt(EVENT_INDEX_EVENT_COLOR));
}
if (mCurrentColor == -1) {
mCurrentColor = mOriginalColor;
}
updateEvent(mView);
prepareReminders();
@ -428,6 +493,13 @@ public class EventInfoFragment extends DialogFragment implements OnCheckedChange
// FRAG_TODO fragments shouldn't set the title anymore
updateTitle();
args = new String[] {
mCalendarsCursor.getString(CALENDARS_INDEX_ACCOUNT_NAME),
mCalendarsCursor.getString(CALENDARS_INDEX_ACCOUNT_TYPE) };
uri = Colors.CONTENT_URI;
startQuery(TOKEN_QUERY_COLORS, null, uri, COLORS_PROJECTION, COLORS_WHERE, args,
null);
if (!mIsBusyFreeCalendar) {
args = new String[] { Long.toString(mEventId) };
@ -448,6 +520,38 @@ public class EventInfoFragment extends DialogFragment implements OnCheckedChange
sendAccessibilityEventIfQueryDone(TOKEN_QUERY_REMINDERS);
}
break;
case TOKEN_QUERY_COLORS:
ArrayList<Integer> colors = new ArrayList<Integer>();
if (cursor.moveToFirst()) {
do
{
int colorKey = cursor.getInt(COLORS_INDEX_COLOR_KEY);
int rawColor = cursor.getInt(COLORS_INDEX_COLOR);
int displayColor = Utils.getDisplayColorFromColor(rawColor);
mDisplayColorKeyMap.put(displayColor, colorKey);
colors.add(displayColor);
} while (cursor.moveToNext());
}
cursor.close();
Integer[] sortedColors = new Integer[colors.size()];
Arrays.sort(colors.toArray(sortedColors), new HsvColorComparator());
mColors = new int[sortedColors.length];
for (int i = 0; i < sortedColors.length; i++) {
mColors[i] = sortedColors[i].intValue();
float[] hsv = new float[3];
Color.colorToHSV(mColors[i], hsv);
if (DEBUG) {
Log.d("Color", "H:" + hsv[0] + ",S:" + hsv[1] + ",V:" + hsv[2]);
}
}
View button = mView.findViewById(R.id.change_color);
if (button != null && mColors.length > 0) {
button.setEnabled(true);
button.setVisibility(View.VISIBLE);
}
updateMenu();
break;
case TOKEN_QUERY_ATTENDEES:
mAttendeesCursor = Utils.matrixCursorFromCursor(cursor);
initAttendeesCursor(mView);
@ -523,7 +627,8 @@ public class EventInfoFragment extends DialogFragment implements OnCheckedChange
}
public EventInfoFragment(Context context, Uri uri, long startMillis, long endMillis,
int attendeeResponse, boolean isDialog, int windowStyle) {
int attendeeResponse, boolean isDialog, int windowStyle,
ArrayList<ReminderEntry> reminders) {
Resources r = context.getResources();
if (mScale == 0) {
@ -546,18 +651,22 @@ public class EventInfoFragment extends DialogFragment implements OnCheckedChange
mEndMillis = endMillis;
mAttendeeResponseFromIntent = attendeeResponse;
mWindowStyle = windowStyle;
// Pass in null if no reminders are being specified.
// This may be used to explicitly show certain reminders already known
// about, such as during configuration changes.
mReminders = reminders;
}
// This is currently required by the fragment manager.
public EventInfoFragment() {
}
public EventInfoFragment(Context context, long eventId, long startMillis, long endMillis,
int attendeeResponse, boolean isDialog, int windowStyle) {
int attendeeResponse, boolean isDialog, int windowStyle,
ArrayList<ReminderEntry> reminders) {
this(context, ContentUris.withAppendedId(Events.CONTENT_URI, eventId), startMillis,
endMillis, attendeeResponse, isDialog, windowStyle);
endMillis, attendeeResponse, isDialog, windowStyle, reminders);
mEventId = eventId;
}
@ -631,32 +740,87 @@ public class EventInfoFragment extends DialogFragment implements OnCheckedChange
// Implements OnCheckedChangeListener
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
// If we haven't finished the return from the dialog yet, don't display.
if (mTentativeUserSetResponse != Attendees.ATTENDEE_STATUS_NONE) {
return;
}
// If this is not a repeating event, then don't display the dialog
// asking which events to change.
mUserSetResponse = getResponseFromButtonId(checkedId);
int response = getResponseFromButtonId(checkedId);
if (!mIsRepeating) {
mUserSetResponse = response;
return;
}
// If the selection is the same as the original, then don't display the
// dialog asking which events to change.
if (checkedId == findButtonIdForResponse(mOriginalAttendeeResponse)) {
mUserSetResponse = response;
return;
}
// This is a repeating event. We need to ask the user if they mean to
// change just this one instance or all instances.
mEditResponseHelper.showDialog(mEditResponseHelper.getWhichEvents());
mTentativeUserSetResponse = response;
mEditResponseHelper.showDialog(mWhichEvents);
}
public void onNothingSelected(AdapterView<?> parent) {
}
@Override
public void onDetach() {
super.onDetach();
mController.deregisterEventHandler(R.layout.event_info);
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
mActivity = activity;
mController = CalendarController.getInstance(mActivity);
mController.registerEventHandler(R.layout.event_info, this);
mEditResponseHelper = new EditResponseHelper(activity);
mEditResponseHelper.setDismissListener(
new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
// If the user dismisses the dialog (without hitting OK),
// then we want to revert the selection that opened the dialog.
if (mEditResponseHelper.getWhichEvents() != -1) {
mUserSetResponse = mTentativeUserSetResponse;
mWhichEvents = mEditResponseHelper.getWhichEvents();
} else {
// Revert the attending response radio selection to whatever
// was selected prior to this selection (possibly nothing).
int oldResponse;
if (mUserSetResponse != Attendees.ATTENDEE_STATUS_NONE) {
oldResponse = mUserSetResponse;
} else {
oldResponse = mOriginalAttendeeResponse;
}
int buttonToCheck = findButtonIdForResponse(oldResponse);
if (mResponseRadioGroup != null) {
mResponseRadioGroup.check(buttonToCheck);
}
// If the radio group is being cleared, also clear the
// dialog's selection of which events should be included
// in this response.
if (buttonToCheck == -1) {
mEditResponseHelper.setWhichEvents(-1);
}
}
// Since OnPause will force the dialog to dismiss, do
// not change the dialog status
if (!mIsPaused) {
mTentativeUserSetResponse = Attendees.ATTENDEE_STATUS_NONE;
}
}
});
if (mAttendeeResponseFromIntent != Attendees.ATTENDEE_STATUS_NONE) {
mEditResponseHelper.setWhichEvents(UPDATE_ALL);
@ -677,7 +841,31 @@ public class EventInfoFragment extends DialogFragment implements OnCheckedChange
DIALOG_WINDOW_STYLE);
mDeleteDialogVisible =
savedInstanceState.getBoolean(BUNDLE_KEY_DELETE_DIALOG_VISIBLE,false);
mCalendarColor = savedInstanceState.getInt(BUNDLE_KEY_CALENDAR_COLOR);
mOriginalColor = savedInstanceState.getInt(BUNDLE_KEY_ORIGINAL_COLOR);
mCurrentColor = savedInstanceState.getInt(BUNDLE_KEY_CURRENT_COLOR);
mTentativeUserSetResponse = savedInstanceState.getInt(
BUNDLE_KEY_TENTATIVE_USER_RESPONSE,
Attendees.ATTENDEE_STATUS_NONE);
if (mTentativeUserSetResponse != Attendees.ATTENDEE_STATUS_NONE &&
mEditResponseHelper != null) {
// If the edit response helper dialog is open, we'll need to
// know if either of the choices were selected.
mEditResponseHelper.setWhichEvents(savedInstanceState.getInt(
BUNDLE_KEY_RESPONSE_WHICH_EVENTS, -1));
}
mUserSetResponse = savedInstanceState.getInt(
BUNDLE_KEY_USER_SET_ATTENDEE_RESPONSE,
Attendees.ATTENDEE_STATUS_NONE);
if (mUserSetResponse != Attendees.ATTENDEE_STATUS_NONE) {
// If the response was set by the user before a configuration
// change, we'll need to know which choice was selected.
mWhichEvents = savedInstanceState.getInt(
BUNDLE_KEY_RESPONSE_WHICH_EVENTS, -1);
}
mReminders = Utils.readRemindersFromBundle(savedInstanceState);
}
if (mWindowStyle == DIALOG_WINDOW_STYLE) {
@ -692,8 +880,10 @@ public class EventInfoFragment extends DialogFragment implements OnCheckedChange
mWhere = (TextView) mView.findViewById(R.id.where);
mDesc = (ExpandableTextView) mView.findViewById(R.id.description);
mHeadlines = mView.findViewById(R.id.event_info_headline);
mLongAttendees = (AttendeesView)mView.findViewById(R.id.long_attendee_list);
mLongAttendees = (AttendeesView) mView.findViewById(R.id.long_attendee_list);
mIsTabletConfig = Utils.getConfigBool(mActivity, R.bool.tablet_config);
mResponseRadioGroup = (RadioGroup) mView.findViewById(R.id.response_value);
if (mUri == null) {
// restore event ID from bundle
@ -757,6 +947,17 @@ public class EventInfoFragment extends DialogFragment implements OnCheckedChange
}
});
b = mView.findViewById(R.id.change_color);
b.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (!mCanModifyCalendar) {
return;
}
showEventColorPickerDialog();
}
});
// Hide Edit/Delete buttons if in full screen mode on a phone
if (!mIsDialog && !mIsTabletConfig || mWindowStyle == EventInfoFragment.FULL_WINDOW_STYLE) {
mView.findViewById(R.id.event_info_buttons_container).setVisibility(View.GONE);
@ -830,7 +1031,10 @@ public class EventInfoFragment extends DialogFragment implements OnCheckedChange
mEventId = mEventCursor.getInt(EVENT_INDEX_ID);
String rRule = mEventCursor.getString(EVENT_INDEX_RRULE);
mIsRepeating = !TextUtils.isEmpty(rRule);
mHasAlarm = (mEventCursor.getInt(EVENT_INDEX_HAS_ALARM) == 1)?true:false;
// mHasAlarm will be true if it was saved in the event already, or if
// we've explicitly been provided reminders (e.g. during rotation).
mHasAlarm = (mEventCursor.getInt(EVENT_INDEX_HAS_ALARM) == 1)? true :
(mReminders != null && mReminders.size() > 0);
mMaxReminders = mEventCursor.getInt(EVENT_INDEX_MAX_REMINDERS);
mCalendarAllowedReminders = mEventCursor.getString(EVENT_INDEX_ALLOWED_REMINDERS);
return false;
@ -922,9 +1126,48 @@ public class EventInfoFragment extends DialogFragment implements OnCheckedChange
outState.putBoolean(BUNDLE_KEY_IS_DIALOG, mIsDialog);
outState.putInt(BUNDLE_KEY_WINDOW_STYLE, mWindowStyle);
outState.putBoolean(BUNDLE_KEY_DELETE_DIALOG_VISIBLE, mDeleteDialogVisible);
outState.putInt(BUNDLE_KEY_ATTENDEE_RESPONSE, mAttendeeResponseFromIntent);
}
outState.putInt(BUNDLE_KEY_CALENDAR_COLOR, mCalendarColor);
outState.putInt(BUNDLE_KEY_ORIGINAL_COLOR, mOriginalColor);
outState.putInt(BUNDLE_KEY_CURRENT_COLOR, mCurrentColor);
// We'll need the temporary response for configuration changes.
outState.putInt(BUNDLE_KEY_TENTATIVE_USER_RESPONSE, mTentativeUserSetResponse);
if (mTentativeUserSetResponse != Attendees.ATTENDEE_STATUS_NONE &&
mEditResponseHelper != null) {
outState.putInt(BUNDLE_KEY_RESPONSE_WHICH_EVENTS,
mEditResponseHelper.getWhichEvents());
}
// Save the current response.
int response;
if (mAttendeeResponseFromIntent != Attendees.ATTENDEE_STATUS_NONE) {
response = mAttendeeResponseFromIntent;
} else {
response = mOriginalAttendeeResponse;
}
outState.putInt(BUNDLE_KEY_ATTENDEE_RESPONSE, response);
if (mUserSetResponse != Attendees.ATTENDEE_STATUS_NONE) {
response = mUserSetResponse;
outState.putInt(BUNDLE_KEY_USER_SET_ATTENDEE_RESPONSE, response);
outState.putInt(BUNDLE_KEY_RESPONSE_WHICH_EVENTS, mWhichEvents);
}
// Save the reminders.
mReminders = EventViewUtils.reminderItemsToReminders(mReminderViews,
mReminderMinuteValues, mReminderMethodValues);
int numReminders = mReminders.size();
ArrayList<Integer> reminderMinutes =
new ArrayList<Integer>(numReminders);
ArrayList<Integer> reminderMethods =
new ArrayList<Integer>(numReminders);
for (ReminderEntry reminder : mReminders) {
reminderMinutes.add(reminder.getMinutes());
reminderMethods.add(reminder.getMethod());
}
outState.putIntegerArrayList(
BUNDLE_KEY_REMINDER_MINUTES, reminderMinutes);
outState.putIntegerArrayList(
BUNDLE_KEY_REMINDER_METHODS, reminderMethods);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
@ -974,16 +1217,47 @@ public class EventInfoFragment extends DialogFragment implements OnCheckedChange
mDeleteHelper.setOnDismissListener(createDeleteOnDismissListener());
mDeleteDialogVisible = true;
mDeleteHelper.delete(mStartMillis, mEndMillis, mEventId, -1, onDeleteRunnable);
} else if (itemId == R.id.info_action_change_color) {
showEventColorPickerDialog();
}
return super.onOptionsItemSelected(item);
}
private void showEventColorPickerDialog() {
if (mDialog == null) {
mDialog = new EventColorPickerDialog(mColors, mCurrentColor, mCalendarColor,
mIsTabletConfig);
mDialog.setTargetFragment(this, REQUEST_CODE_COLOR_PICKER);
}
if (!mDialog.isAdded()) {
mDialog.show(getFragmentManager(), TAG);
}
}
private boolean saveEventColor() {
if (mCurrentColor == mOriginalColor) {
return false;
}
ContentValues values = new ContentValues();
if (mCurrentColor != mCalendarColor) {
values.put(Events.EVENT_COLOR_KEY, mDisplayColorKeyMap.get(mCurrentColor));
} else {
values.put(Events.EVENT_COLOR_KEY, NO_EVENT_COLOR);
}
Uri uri = ContentUris.withAppendedId(Events.CONTENT_URI, mEventId);
mHandler.startUpdate(mHandler.getNextToken(), null, uri, values,
null, null, Utils.UNDO_DELAY);
return true;
}
@Override
public void onStop() {
Activity act = getActivity();
if (!mEventDeletionStarted && act != null && !act.isChangingConfigurations()) {
boolean responseSaved = saveResponse();
if (saveReminders() || responseSaved) {
boolean eventColorSaved = saveEventColor();
if (saveReminders() || responseSaved || eventColorSaved) {
Toast.makeText(getActivity(), R.string.saving_event, Toast.LENGTH_SHORT).show();
}
}
@ -1015,8 +1289,8 @@ public class EventInfoFragment extends DialogFragment implements OnCheckedChange
return false;
}
RadioGroup radioGroup = (RadioGroup) getView().findViewById(R.id.response_value);
int status = getResponseFromButtonId(radioGroup.getCheckedRadioButtonId());
int status = getResponseFromButtonId(
mResponseRadioGroup.getCheckedRadioButtonId());
if (status == Attendees.ATTENDEE_STATUS_NONE) {
return false;
}
@ -1039,8 +1313,7 @@ public class EventInfoFragment extends DialogFragment implements OnCheckedChange
}
// This is a repeating event
int whichEvents = mEditResponseHelper.getWhichEvents();
switch (whichEvents) {
switch (mWhichEvents) {
case -1:
return false;
case UPDATE_SINGLE:
@ -1141,6 +1414,11 @@ public class EventInfoFragment extends DialogFragment implements OnCheckedChange
}
}
private void updateCurrentEventColor(int color) {
mCurrentColor = color;
mHeadlines.setBackgroundColor(color);
}
private void updateEvent(View view) {
if (mEventCursor == null || view == null) {
return;
@ -1189,8 +1467,7 @@ public class EventInfoFragment extends DialogFragment implements OnCheckedChange
String rRule = mEventCursor.getString(EVENT_INDEX_RRULE);
String eventTimezone = mEventCursor.getString(EVENT_INDEX_EVENT_TIMEZONE);
mColor = Utils.getDisplayColorFromColor(mEventCursor.getInt(EVENT_INDEX_COLOR));
mHeadlines.setBackgroundColor(mColor);
updateCurrentEventColor(mCurrentColor);
// What
if (eventName != null) {
@ -1386,12 +1663,12 @@ public class EventInfoFragment extends DialogFragment implements OnCheckedChange
addFieldToAccessibilityEvent(text, mWhere, null);
addFieldToAccessibilityEvent(text, null, mDesc);
RadioGroup response = (RadioGroup) getView().findViewById(R.id.response_value);
if (response.getVisibility() == View.VISIBLE) {
int id = response.getCheckedRadioButtonId();
if (mResponseRadioGroup.getVisibility() == View.VISIBLE) {
int id = mResponseRadioGroup.getCheckedRadioButtonId();
if (id != View.NO_ID) {
text.add(((TextView) getView().findViewById(R.id.response_label)).getText());
text.add((((RadioButton) (response.findViewById(id))).getText() + PERIOD_SPACE));
text.add((((RadioButton) (mResponseRadioGroup.findViewById(id)))
.getText() + PERIOD_SPACE));
}
}
@ -1419,6 +1696,7 @@ public class EventInfoFragment extends DialogFragment implements OnCheckedChange
}
private void updateCalendar(View view) {
mCalendarOwnerAccount = "";
if (mCalendarsCursor != null && mEventCursor != null) {
mCalendarsCursor.moveToFirst();
@ -1487,7 +1765,6 @@ public class EventInfoFragment extends DialogFragment implements OnCheckedChange
button.setVisibility(View.VISIBLE);
}
}
if ((!mIsDialog && !mIsTabletConfig ||
mWindowStyle == EventInfoFragment.FULL_WINDOW_STYLE) && mMenu != null) {
mActivity.invalidateOptionsMenu();
@ -1507,6 +1784,7 @@ public class EventInfoFragment extends DialogFragment implements OnCheckedChange
}
MenuItem delete = mMenu.findItem(R.id.info_action_delete);
MenuItem edit = mMenu.findItem(R.id.info_action_edit);
MenuItem changeColor = mMenu.findItem(R.id.info_action_change_color);
if (delete != null) {
delete.setVisible(mCanModifyCalendar);
delete.setEnabled(mCanModifyCalendar);
@ -1515,6 +1793,10 @@ public class EventInfoFragment extends DialogFragment implements OnCheckedChange
edit.setVisible(mCanModifyEvent);
edit.setEnabled(mCanModifyEvent);
}
if (changeColor != null && mColors != null && mColors.length > 0) {
changeColor.setVisible(mCanModifyCalendar);
changeColor.setEnabled(mCanModifyCalendar);
}
}
private void updateAttendees(View view) {
@ -1614,7 +1896,13 @@ public class EventInfoFragment extends DialogFragment implements OnCheckedChange
}
if (mHasAlarm) {
ArrayList<ReminderEntry> reminders = mOriginalReminders;
ArrayList<ReminderEntry> reminders;
// If applicable, use reminders saved in the bundle.
if (mReminders != null) {
reminders = mReminders;
} else {
reminders = mOriginalReminders;
}
// Insert any minute values that aren't represented in the minutes list.
for (ReminderEntry re : reminders) {
EventViewUtils.addMinutesToList(
@ -1656,7 +1944,9 @@ public class EventInfoFragment extends DialogFragment implements OnCheckedChange
int response;
if (mUserSetResponse != Attendees.ATTENDEE_STATUS_NONE) {
if (mTentativeUserSetResponse != Attendees.ATTENDEE_STATUS_NONE) {
response = mTentativeUserSetResponse;
} else if (mUserSetResponse != Attendees.ATTENDEE_STATUS_NONE) {
response = mUserSetResponse;
} else if (mAttendeeResponseFromIntent != Attendees.ATTENDEE_STATUS_NONE) {
response = mAttendeeResponseFromIntent;
@ -1665,9 +1955,8 @@ public class EventInfoFragment extends DialogFragment implements OnCheckedChange
}
int buttonToCheck = findButtonIdForResponse(response);
RadioGroup radioGroup = (RadioGroup) view.findViewById(R.id.response_value);
radioGroup.check(buttonToCheck); // -1 clear all radio buttons
radioGroup.setOnCheckedChangeListener(this);
mResponseRadioGroup.check(buttonToCheck); // -1 clear all radio buttons
mResponseRadioGroup.setOnCheckedChangeListener(this);
}
private void setTextCommon(View view, int id, CharSequence text) {
@ -1733,6 +2022,10 @@ public class EventInfoFragment extends DialogFragment implements OnCheckedChange
mDeleteHelper.dismissAlertDialog();
mDeleteHelper = null;
}
if (mTentativeUserSetResponse != Attendees.ATTENDEE_STATUS_NONE
&& mEditResponseHelper != null) {
mEditResponseHelper.dismissAlertDialog();
}
}
@Override
@ -1746,13 +2039,17 @@ public class EventInfoFragment extends DialogFragment implements OnCheckedChange
if (mDismissOnResume) {
mHandler.post(onDeleteRunnable);
}
// Display the "delete confirmation" dialog if needed
// Display the "delete confirmation" or "edit response helper" dialog if needed
if (mDeleteDialogVisible) {
mDeleteHelper = new DeleteEventHelper(
mContext, mActivity,
!mIsDialog && !mIsTabletConfig /* exitWhenDone */);
mDeleteHelper.setOnDismissListener(createDeleteOnDismissListener());
mDeleteHelper.delete(mStartMillis, mEndMillis, mEventId, -1, onDeleteRunnable);
} else if (mTentativeUserSetResponse != Attendees.ATTENDEE_STATUS_NONE) {
int buttonId = findButtonIdForResponse(mTentativeUserSetResponse);
mResponseRadioGroup.check(buttonId);
mEditResponseHelper.showDialog(mEditResponseHelper.getWhichEvents());
}
}
@ -1767,15 +2064,14 @@ public class EventInfoFragment extends DialogFragment implements OnCheckedChange
@Override
public void handleEvent(EventInfo event) {
if (event.eventType == EventType.EVENTS_CHANGED && mHandler != null) {
// reload the data
reloadEvents();
}
reloadEvents();
}
public void reloadEvents() {
mHandler.startQuery(TOKEN_QUERY_EVENT, null, mUri, EVENT_PROJECTION,
null, null, null);
if (mHandler != null) {
mHandler.startQuery(TOKEN_QUERY_EVENT, null, mUri, EVENT_PROJECTION,
null, null, null);
}
}
@Override
@ -1947,5 +2243,8 @@ public class EventInfoFragment extends DialogFragment implements OnCheckedChange
mDialogHeight = (int)r.getDimension(R.dimen.event_info_dialog_height);
}
@Override
public void onColorSelected(int color) {
updateCurrentEventColor(color);
}
}

View File

@ -16,22 +16,72 @@
package com.android.calendar;
import android.app.Activity;
import android.app.Dialog;
import android.app.TimePickerDialog;
import android.content.ComponentName;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.CheckBoxPreference;
import android.preference.Preference;
import android.preference.PreferenceFragment;
import android.preference.PreferenceManager;
import android.preference.PreferenceScreen;
import android.text.format.DateFormat;
import android.text.format.Time;
import android.util.Log;
import android.widget.TimePicker;
public class OtherPreferences extends PreferenceFragment {
private static final String TAG = "CalendarOtherPreferences";
// The name of the shared preferences file. This name must be maintained for
// historical reasons, as it's what PreferenceManager assigned the first
// time the file was created.
static final String SHARED_PREFS_NAME = "com.android.calendar_preferences";
// Must be the same keys that are used in the other_preferences.xml file.
public static final String KEY_OTHER_COPY_DB = "preferences_copy_db";
public static final String KEY_OTHER_QUIET_HOURS =
"preferences_reminders_quiet_hours";
public static final String KEY_OTHER_QUIET_HOURS_START =
"preferences_reminders_quiet_hours_start";
public static final String KEY_OTHER_QUIET_HOURS_START_HOUR =
"preferences_reminders_quiet_hours_start_hour";
public static final String KEY_OTHER_QUIET_HOURS_START_MINUTE =
"preferences_reminders_quiet_hours_start_minute";
public static final String KEY_OTHER_QUIET_HOURS_END =
"preferences_reminders_quiet_hours_end";
public static final String KEY_OTHER_QUIET_HOURS_END_HOUR =
"preferences_reminders_quiet_hours_end_hour";
public static final String KEY_OTHER_QUIET_HOURS_END_MINUTE =
"preferences_reminders_quiet_hours_end_minute";
public static final String KEY_OTHER_1 = "preferences_tardis_1";
public static final String KEY_OTHER_REMINDERS_RESPONDED =
"preferences_reminders_responded";
public static final int QUIET_HOURS_DEFAULT_START_HOUR = 22;
public static final int QUIET_HOURS_DEFAULT_START_MINUTE = 0;
public static final int QUIET_HOURS_DEFAULT_END_HOUR = 8;
public static final int QUIET_HOURS_DEFAULT_END_MINUTE = 0;
private static final int START_LISTENER = 1;
private static final int END_LISTENER = 2;
private static final String format24Hour = "%H:%M";
private static final String format12Hour = "%I:%M%P";
private Preference mCopyDb;
private CheckBoxPreference mQuietHours;
private Preference mQuietHoursStart;
private Preference mQuietHoursEnd;
private TimePickerDialog mTimePickerDialog;
private TimeSetListener mQuietHoursStartListener;
private TimePickerDialog mQuietHoursStartDialog;
private TimeSetListener mQuietHoursEndListener;
private TimePickerDialog mQuietHoursEndDialog;
private boolean mIs24HourMode;
public OtherPreferences() {
}
@ -39,9 +89,43 @@ public class OtherPreferences extends PreferenceFragment {
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
getPreferenceManager().setSharedPreferencesName(SHARED_PREFS_NAME);
PreferenceManager manager = getPreferenceManager();
manager.setSharedPreferencesName(SHARED_PREFS_NAME);
SharedPreferences prefs = manager.getSharedPreferences();
addPreferencesFromResource(R.xml.other_preferences);
mCopyDb = findPreference("preferences_copy_db");
mCopyDb = findPreference(KEY_OTHER_COPY_DB);
Activity activity = getActivity();
if (activity == null) {
Log.d(TAG, "Activity was null");
}
mIs24HourMode = DateFormat.is24HourFormat(activity);
mQuietHours =
(CheckBoxPreference) findPreference(KEY_OTHER_QUIET_HOURS);
int startHour = prefs.getInt(KEY_OTHER_QUIET_HOURS_START_HOUR,
QUIET_HOURS_DEFAULT_START_HOUR);
int startMinute = prefs.getInt(KEY_OTHER_QUIET_HOURS_START_MINUTE,
QUIET_HOURS_DEFAULT_START_MINUTE);
mQuietHoursStart = findPreference(KEY_OTHER_QUIET_HOURS_START);
mQuietHoursStartListener = new TimeSetListener(START_LISTENER);
mQuietHoursStartDialog = new TimePickerDialog(
activity, mQuietHoursStartListener,
startHour, startMinute, mIs24HourMode);
mQuietHoursStart.setSummary(formatTime(startHour, startMinute));
int endHour = prefs.getInt(KEY_OTHER_QUIET_HOURS_END_HOUR,
QUIET_HOURS_DEFAULT_END_HOUR);
int endMinute = prefs.getInt(KEY_OTHER_QUIET_HOURS_END_MINUTE,
QUIET_HOURS_DEFAULT_END_MINUTE);
mQuietHoursEnd = findPreference(KEY_OTHER_QUIET_HOURS_END);
mQuietHoursEndListener = new TimeSetListener(END_LISTENER);
mQuietHoursEndDialog = new TimePickerDialog(
activity, mQuietHoursEndListener,
endHour, endMinute, mIs24HourMode);
mQuietHoursEnd.setSummary(formatTime(endHour, endMinute));
}
@Override
@ -51,9 +135,71 @@ public class OtherPreferences extends PreferenceFragment {
intent.setComponent(new ComponentName("com.android.providers.calendar",
"com.android.providers.calendar.CalendarDebugActivity"));
startActivity(intent);
} else if (preference == mQuietHoursStart) {
if (mTimePickerDialog == null) {
mTimePickerDialog = mQuietHoursStartDialog;
mTimePickerDialog.show();
} else {
Log.v(TAG, "not null");
}
} else if (preference == mQuietHoursEnd) {
if (mTimePickerDialog == null) {
mTimePickerDialog = mQuietHoursEndDialog;
mTimePickerDialog.show();
} else {
Log.v(TAG, "not null");
}
} else {
return super.onPreferenceTreeClick(screen, preference);
}
return true;
}
private class TimeSetListener implements TimePickerDialog.OnTimeSetListener {
private int mListenerId;
public TimeSetListener(int listenerId) {
mListenerId = listenerId;
}
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
mTimePickerDialog = null;
SharedPreferences prefs = getPreferenceManager().getSharedPreferences();
SharedPreferences.Editor editor = prefs.edit();
String summary = formatTime(hourOfDay, minute);
switch (mListenerId) {
case (START_LISTENER):
mQuietHoursStart.setSummary(summary);
editor.putInt(KEY_OTHER_QUIET_HOURS_START_HOUR, hourOfDay);
editor.putInt(KEY_OTHER_QUIET_HOURS_START_MINUTE, minute);
break;
case (END_LISTENER):
mQuietHoursEnd.setSummary(summary);
editor.putInt(KEY_OTHER_QUIET_HOURS_END_HOUR, hourOfDay);
editor.putInt(KEY_OTHER_QUIET_HOURS_END_MINUTE, minute);
break;
default:
Log.d(TAG, "Set time for unknown listener: "+mListenerId);
}
editor.commit();
}
}
/**
* @param hourOfDay the hour of the day (0-24)
* @param minute
* @return human-readable string formatted based on 24-hour mode.
*/
private String formatTime(int hourOfDay, int minute) {
Time time = new Time();
time.hour = hourOfDay;
time.minute = minute;
String format = mIs24HourMode? format24Hour : format12Hour;
return time.format(format);
}
}

View File

@ -156,6 +156,9 @@ public class SearchActivity extends Activity implements CalendarController.Event
} else {
query = intent.getStringExtra(SearchManager.QUERY);
}
if ("TARDIS".equalsIgnoreCase(query)) {
Utils.tardis();
}
initFragments(millis, query);
}
}
@ -188,10 +191,10 @@ public class SearchActivity extends Activity implements CalendarController.Event
mEventInfoFragment = new EventInfoFragment(this, event.id,
event.startTime.toMillis(false), event.endTime.toMillis(false),
event.getResponse(), false, EventInfoFragment.DIALOG_WINDOW_STYLE);
event.getResponse(), false, EventInfoFragment.DIALOG_WINDOW_STYLE,
null /* No reminders to explicitly pass in. */);
ft.replace(R.id.agenda_event_info, mEventInfoFragment);
ft.commit();
mController.registerEventHandler(R.id.agenda_event_info, mEventInfoFragment);
} else {
Intent intent = new Intent(Intent.ACTION_VIEW);
Uri eventUri = ContentUris.withAppendedId(Events.CONTENT_URI, event.id);
@ -238,7 +241,6 @@ public class SearchActivity extends Activity implements CalendarController.Event
ft.remove(mEventInfoFragment);
ft.commit();
mEventInfoFragment = null;
mController.deregisterEventHandler(R.id.agenda_event_info);
mCurrentEventId = -1;
}
}

View File

@ -52,6 +52,7 @@ import android.util.Log;
import android.widget.SearchView;
import com.android.calendar.CalendarController.ViewType;
import com.android.calendar.CalendarEventModel.ReminderEntry;
import com.android.calendar.CalendarUtils.TimeZoneUtils;
import java.util.ArrayList;
@ -732,6 +733,13 @@ public class Utils {
return c.getResources().getBoolean(key);
}
/**
* For devices with Jellybean or later, darkens the given color to ensure that white text is
* clearly visible on top of it. For devices prior to Jellybean, does nothing, as the
* sync adapter handles the color change.
*
* @param color
*/
public static int getDisplayColorFromColor(int color) {
if (!isJellybeanOrLater()) {
return color;
@ -1965,4 +1973,46 @@ public class Utils {
return false;
}
/**
* @param bundle The incoming bundle that contains the reminder info.
* @return ArrayList<ReminderEntry> of the reminder minutes and methods.
*/
public static ArrayList<ReminderEntry> readRemindersFromBundle(Bundle bundle) {
ArrayList<ReminderEntry> reminders = null;
ArrayList<Integer> reminderMinutes = bundle.getIntegerArrayList(
EventInfoFragment.BUNDLE_KEY_REMINDER_MINUTES);
ArrayList<Integer> reminderMethods = bundle.getIntegerArrayList(
EventInfoFragment.BUNDLE_KEY_REMINDER_METHODS);
if (reminderMinutes == null || reminderMethods == null) {
if (reminderMinutes != null || reminderMethods != null) {
String nullList = (reminderMinutes == null?
"reminderMinutes" : "reminderMethods");
Log.d(TAG, String.format("Error resolving reminders: %s was null",
nullList));
}
return null;
}
int numReminders = reminderMinutes.size();
if (numReminders == reminderMethods.size()) {
// Only if the size of the reminder minutes we've read in is
// the same as the size of the reminder methods. Otherwise,
// something went wrong with bundling them.
reminders = new ArrayList<ReminderEntry>(numReminders);
for (int reminder_i = 0; reminder_i < numReminders;
reminder_i++) {
int minutes = reminderMinutes.get(reminder_i);
int method = reminderMethods.get(reminder_i);
reminders.add(ReminderEntry.valueOf(minutes, method));
}
} else {
Log.d(TAG, String.format("Error resolving reminders." +
" Found %d reminderMinutes, but %d reminderMethods.",
numReminders, reminderMethods.size()));
}
return reminders;
}
}

View File

@ -290,7 +290,6 @@ public class AgendaFragment extends Fragment implements CalendarController.Event
* @param fragmentManager
*/
public void removeFragments(FragmentManager fragmentManager) {
mController.deregisterEventHandler(R.id.agenda_event_info);
if (getActivity().isFinishing()) {
return;
}
@ -428,10 +427,8 @@ public class AgendaFragment extends Fragment implements CalendarController.Event
mEventFragment = new EventInfoFragment(mActivity, event.id,
startMillis, endMillis,
Attendees.ATTENDEE_STATUS_NONE, false,
EventInfoFragment.DIALOG_WINDOW_STYLE);
EventInfoFragment.DIALOG_WINDOW_STYLE, null);
ft.replace(R.id.agenda_event_info, mEventFragment);
mController.registerEventHandler(R.id.agenda_event_info,
mEventFragment);
ft.commit();
} else {
fOld.reloadEvents();

View File

@ -43,6 +43,7 @@ import android.text.format.Time;
import android.util.Log;
import com.android.calendar.GeneralPreferences;
import com.android.calendar.OtherPreferences;
import com.android.calendar.Utils;
import java.util.ArrayList;
@ -540,6 +541,40 @@ public class AlertService extends Service {
final long currentTime, ArrayList<NotificationInfo> highPriorityEvents,
ArrayList<NotificationInfo> mediumPriorityEvents,
ArrayList<NotificationInfo> lowPriorityEvents) {
// Experimental reminder setting to only remind for events that have
// been responded to with "yes" or "maybe".
boolean remindRespondedOnly = Utils.getSharedPreference(context,
OtherPreferences.KEY_OTHER_REMINDERS_RESPONDED, false);
// Experimental reminder setting to silence reminders when they are
// during the pre-defined quiet hours.
boolean useQuietHours = Utils.getSharedPreference(context,
OtherPreferences.KEY_OTHER_QUIET_HOURS, false);
// Note that the start time may be either before or after the end time,
// depending on whether quiet hours cross through midnight.
int quietHoursStartHour =
OtherPreferences.QUIET_HOURS_DEFAULT_START_HOUR;
int quietHoursStartMinute =
OtherPreferences.QUIET_HOURS_DEFAULT_START_MINUTE;
int quietHoursEndHour =
OtherPreferences.QUIET_HOURS_DEFAULT_END_HOUR;
int quietHoursEndMinute =
OtherPreferences.QUIET_HOURS_DEFAULT_END_MINUTE;
if (useQuietHours) {
quietHoursStartHour = Utils.getSharedPreference(context,
OtherPreferences.KEY_OTHER_QUIET_HOURS_START_HOUR,
OtherPreferences.QUIET_HOURS_DEFAULT_START_HOUR);
quietHoursStartMinute = Utils.getSharedPreference(context,
OtherPreferences.KEY_OTHER_QUIET_HOURS_START_MINUTE,
OtherPreferences.QUIET_HOURS_DEFAULT_START_MINUTE);
quietHoursEndHour = Utils.getSharedPreference(context,
OtherPreferences.KEY_OTHER_QUIET_HOURS_END_HOUR,
OtherPreferences.QUIET_HOURS_DEFAULT_END_HOUR);
quietHoursEndMinute = Utils.getSharedPreference(context,
OtherPreferences.KEY_OTHER_QUIET_HOURS_END_MINUTE,
OtherPreferences.QUIET_HOURS_DEFAULT_END_MINUTE);
}
Time time = new Time();
ContentResolver cr = context.getContentResolver();
HashMap<Long, NotificationInfo> eventIds = new HashMap<Long, NotificationInfo>();
int numFired = 0;
@ -553,11 +588,53 @@ public class AlertService extends Service {
final String location = alertCursor.getString(ALERT_INDEX_EVENT_LOCATION);
final int status = alertCursor.getInt(ALERT_INDEX_SELF_ATTENDEE_STATUS);
final boolean declined = status == Attendees.ATTENDEE_STATUS_DECLINED;
final boolean responded = status != Attendees.ATTENDEE_STATUS_NONE
&& status != Attendees.ATTENDEE_STATUS_INVITED;
final long beginTime = alertCursor.getLong(ALERT_INDEX_BEGIN);
final long endTime = alertCursor.getLong(ALERT_INDEX_END);
final Uri alertUri = ContentUris
.withAppendedId(CalendarAlerts.CONTENT_URI, alertId);
final long alarmTime = alertCursor.getLong(ALERT_INDEX_ALARM_TIME);
boolean forceQuiet = false;
if (useQuietHours) {
// Quiet hours have been set.
time.set(alarmTime);
// Check whether the alarm will fire after the quiet hours
// start time and/or before the quiet hours end time.
boolean alarmAfterQuietHoursStart =
(time.hour > quietHoursStartHour ||
(time.hour == quietHoursStartHour
&& time.minute >= quietHoursStartMinute));
boolean alarmBeforeQuietHoursEnd =
(time.hour < quietHoursEndHour ||
(time.hour == quietHoursEndHour
&& time.minute <= quietHoursEndMinute));
// Check if quiet hours crosses through midnight, iff:
// start hour is after end hour, or
// start hour is equal to end hour, and start minute is
// after end minute.
// i.e. 22:30 - 06:45; 12:45 - 12:00
// 01:05 - 10:30; 05:00 - 05:30
boolean quietHoursCrossesMidnight =
quietHoursStartHour > quietHoursEndHour ||
(quietHoursStartHour == quietHoursEndHour
&& quietHoursStartMinute > quietHoursEndMinute);
if (quietHoursCrossesMidnight) {
// Quiet hours crosses midnight. Alarm should be quiet
// if it's after start time OR before end time.
if (alarmAfterQuietHoursStart ||
alarmBeforeQuietHoursEnd) {
forceQuiet = true;
}
} else {
// Quiet hours doesn't cross midnight. Alarm should be
// quiet if it's after start time AND before end time.
if (alarmAfterQuietHoursStart &&
alarmBeforeQuietHoursEnd) {
forceQuiet = true;
}
}
}
int state = alertCursor.getInt(ALERT_INDEX_STATE);
final boolean allDay = alertCursor.getInt(ALERT_INDEX_ALL_DAY) != 0;
@ -584,9 +661,12 @@ public class AlertService extends Service {
.append(" state: ").append(state)
.append(" minutes:").append(minutes)
.append(" declined:").append(declined)
.append(" responded:").append(responded)
.append(" beginTime:").append(beginTime)
.append(" endTime:").append(endTime)
.append(" allDay:").append(allDay);
.append(" allDay:").append(allDay)
.append(" alarmTime:").append(alarmTime)
.append(" forceQuiet:").append(forceQuiet);
if (AlertUtils.BYPASS_DB) {
msgBuilder.append(" newAlertOverride: " + newAlertOverride);
}
@ -605,11 +685,22 @@ public class AlertService extends Service {
// } else
// Remove declined events
if (!declined) {
boolean sendAlert = !declined;
// Check for experimental reminder settings.
if (remindRespondedOnly) {
// If the experimental setting is turned on, then only send
// the alert if you've responded to the event.
sendAlert = sendAlert && responded;
}
if (sendAlert) {
if (state == CalendarAlerts.STATE_SCHEDULED || newAlertOverride) {
newState = CalendarAlerts.STATE_FIRED;
numFired++;
newAlert = true;
// If quiet hours are forcing the alarm to be silent,
// keep newAlert as false so it will not make noise.
if (!forceQuiet) {
newAlert = true;
}
// Record the received time in the CalendarAlerts table.
// This is useful for finding bugs that cause alarms to be

View File

@ -48,7 +48,15 @@ public class InitAlarmsService extends IntentService {
// Delay to avoid race condition of in-progress alarm scheduling in provider.
SystemClock.sleep(DELAY_MS);
Log.d(TAG, "Clearing and rescheduling alarms.");
getContentResolver().update(SCHEDULE_ALARM_REMOVE_URI, new ContentValues(), null,
null);
try {
getContentResolver().update(SCHEDULE_ALARM_REMOVE_URI, new ContentValues(), null,
null);
} catch (java.lang.IllegalArgumentException e) {
// java.lang.IllegalArgumentException:
// Unknown URI content://com.android.calendar/schedule_alarms_remove
// Until b/7742576 is resolved, just catch the exception so the app won't crash
Log.e(TAG, "update failed: " + e.toString());
}
}
}

View File

@ -35,6 +35,7 @@ import android.net.Uri;
import android.os.Bundle;
import android.provider.CalendarContract.Attendees;
import android.provider.CalendarContract.Calendars;
import android.provider.CalendarContract.Colors;
import android.provider.CalendarContract.Events;
import android.provider.CalendarContract.Reminders;
import android.text.TextUtils;
@ -61,14 +62,18 @@ import com.android.calendar.CalendarEventModel.ReminderEntry;
import com.android.calendar.DeleteEventHelper;
import com.android.calendar.R;
import com.android.calendar.Utils;
import com.android.colorpicker.ColorPickerSwatch.OnColorSelectedListener;
import com.android.colorpicker.HsvColorComparator;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collections;
public class EditEventFragment extends Fragment implements EventHandler {
public class EditEventFragment extends Fragment implements EventHandler, OnColorSelectedListener {
private static final String TAG = "EditEventActivity";
private static final int REQUEST_CODE_COLOR_PICKER = 0;
private static final String BUNDLE_KEY_MODEL = "key_model";
private static final String BUNDLE_KEY_EDIT_STATE = "key_edit_state";
private static final String BUNDLE_KEY_EVENT = "key_event";
@ -81,8 +86,10 @@ public class EditEventFragment extends Fragment implements EventHandler {
private static final int TOKEN_ATTENDEES = 1 << 1;
private static final int TOKEN_REMINDERS = 1 << 2;
private static final int TOKEN_CALENDARS = 1 << 3;
private static final int TOKEN_COLORS = 1 << 4;
private static final int TOKEN_ALL = TOKEN_EVENT | TOKEN_ATTENDEES | TOKEN_REMINDERS
| TOKEN_CALENDARS;
| TOKEN_CALENDARS | TOKEN_COLORS;
private static final int TOKEN_UNITIALIZED = 1 << 31;
/**
@ -109,6 +116,8 @@ public class EditEventFragment extends Fragment implements EventHandler {
private long mEnd;
private long mCalendarId = -1;
private EventColorPickerDialog mDialog;
private Activity mContext;
private final Done mOnDone = new Done();
@ -303,12 +312,41 @@ public class EditEventFragment extends Fragment implements EventHandler {
EditEventHelper.setModelFromCalendarCursor(mModel, cursor);
EditEventHelper.setModelFromCalendarCursor(mOriginalModel, cursor);
}
startQuery(TOKEN_COLORS, null, Colors.CONTENT_URI,
EditEventHelper.COLORS_PROJECTION,
Colors.COLOR_TYPE + "=" + Colors.TYPE_EVENT, null, null);
} finally {
cursor.close();
}
setModelIfDone(TOKEN_CALENDARS);
break;
case TOKEN_COLORS:
if (cursor.moveToFirst()) {
EventColorCache cache = new EventColorCache();
do
{
int colorKey = cursor.getInt(EditEventHelper.COLORS_INDEX_COLOR_KEY);
int rawColor = cursor.getInt(EditEventHelper.COLORS_INDEX_COLOR);
int displayColor = Utils.getDisplayColorFromColor(rawColor);
String accountName = cursor
.getString(EditEventHelper.COLORS_INDEX_ACCOUNT_NAME);
String accountType = cursor
.getString(EditEventHelper.COLORS_INDEX_ACCOUNT_TYPE);
cache.insertColor(accountName, accountType,
displayColor, colorKey);
} while (cursor.moveToNext());
cache.sortPalettes(new HsvColorComparator());
mModel.mEventColorCache = cache;
mView.mColorPickerNewEvent.setOnClickListener(mOnColorPickerClicked);
mView.mColorPickerExistingEvent.setOnClickListener(mOnColorPickerClicked);
}
if (cursor != null) {
cursor.close();
}
mView.setColorPickerButtonStates(mModel.getCalendarEventColors());
setModelIfDone(TOKEN_COLORS);
break;
default:
cursor.close();
break;
@ -316,6 +354,25 @@ public class EditEventFragment extends Fragment implements EventHandler {
}
}
private View.OnClickListener mOnColorPickerClicked = new View.OnClickListener() {
@Override
public void onClick(View v) {
int[] colors = mModel.getCalendarEventColors();
if (mDialog == null) {
mDialog = new EventColorPickerDialog(colors, mModel.mEventColor,
mModel.mCalendarColor, mView.mIsMultipane);
mDialog.setTargetFragment(EditEventFragment.this, REQUEST_CODE_COLOR_PICKER);
} else {
mDialog.setCalendarColor(mModel.mCalendarColor);
mDialog.setColors(colors, mModel.mEventColor);
}
if (!mDialog.isAdded()) {
mDialog.show(getFragmentManager(), TAG);
}
}
};
private void setModelIfDone(int queryType) {
synchronized (this) {
mOutstandingQueries &= ~queryType;
@ -840,4 +897,12 @@ public class EditEventFragment extends Fragment implements EventHandler {
long start = -1;
long end = -1;
}
@Override
public void onColorSelected(int color) {
if (mModel.mEventColor != color) {
mModel.mEventColor = color;
mView.updateHeadlineColor(mModel, color);
}
}
}

View File

@ -25,6 +25,7 @@ import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.provider.CalendarContract.Attendees;
import android.provider.CalendarContract.Calendars;
import android.provider.CalendarContract.Colors;
import android.provider.CalendarContract.Events;
import android.provider.CalendarContract.Reminders;
import android.text.TextUtils;
@ -59,6 +60,8 @@ public class EditEventHelper {
private static final boolean DEBUG = false;
private static final String NO_EVENT_COLOR = "";
public static final String[] EVENT_PROJECTION = new String[] {
Events._ID, // 0
Events.TITLE, // 1
@ -82,6 +85,9 @@ public class EditEventHelper {
Events.GUESTS_CAN_MODIFY, // 19
Events.ORIGINAL_ID, // 20
Events.STATUS, // 21
Events.CALENDAR_COLOR, // 22
Events.EVENT_COLOR, // 23
Events.EVENT_COLOR_KEY // 24
};
protected static final int EVENT_INDEX_ID = 0;
protected static final int EVENT_INDEX_TITLE = 1;
@ -105,6 +111,9 @@ public class EditEventHelper {
protected static final int EVENT_INDEX_GUESTS_CAN_MODIFY = 19;
protected static final int EVENT_INDEX_ORIGINAL_ID = 20;
protected static final int EVENT_INDEX_EVENT_STATUS = 21;
protected static final int EVENT_INDEX_CALENDAR_COLOR = 22;
protected static final int EVENT_INDEX_EVENT_COLOR = 23;
protected static final int EVENT_INDEX_EVENT_COLOR_KEY = 24;
public static final String[] REMINDERS_PROJECTION = new String[] {
Reminders._ID, // 0
@ -191,6 +200,22 @@ public class EditEventHelper {
static final String CALENDARS_WHERE = Calendars._ID + "=?";
static final String[] COLORS_PROJECTION = new String[] {
Colors._ID, // 0
Colors.ACCOUNT_NAME,
Colors.ACCOUNT_TYPE,
Colors.COLOR, // 1
Colors.COLOR_KEY // 2
};
static final String COLORS_WHERE = Colors.ACCOUNT_NAME + "=? AND " + Colors.ACCOUNT_TYPE +
"=? AND " + Colors.COLOR_TYPE + "=" + Colors.TYPE_EVENT;
static final int COLORS_INDEX_ACCOUNT_NAME = 1;
static final int COLORS_INDEX_ACCOUNT_TYPE = 2;
static final int COLORS_INDEX_COLOR = 3;
static final int COLORS_INDEX_COLOR_KEY = 4;
static final String[] ATTENDEES_PROJECTION = new String[] {
Attendees._ID, // 0
Attendees.ATTENDEE_NAME, // 1
@ -1044,6 +1069,14 @@ public class EditEventHelper {
model.mIsOrganizer = model.mOwnerAccount.equalsIgnoreCase(model.mOrganizer);
model.mGuestsCanModify = cursor.getInt(EVENT_INDEX_GUESTS_CAN_MODIFY) != 0;
int rawEventColor;
if (cursor.isNull(EVENT_INDEX_EVENT_COLOR)) {
rawEventColor = cursor.getInt(EVENT_INDEX_CALENDAR_COLOR);
} else {
rawEventColor = cursor.getInt(EVENT_INDEX_EVENT_COLOR);
}
model.mEventColor = Utils.getDisplayColorFromColor(rawEventColor);
if (accessLevel > 0) {
// For now the array contains the values 0, 2, and 3. We subtract
// one to make it easier to handle in code as 0,1,2.
@ -1100,7 +1133,11 @@ public class EditEventHelper {
model.mCalendarAccessLevel = cursor.getInt(CALENDARS_INDEX_ACCESS_LEVEL);
model.mCalendarDisplayName = cursor.getString(CALENDARS_INDEX_DISPLAY_NAME);
model.mCalendarColor = cursor.getInt(CALENDARS_INDEX_COLOR);
model.mCalendarColor = Utils.getDisplayColorFromColor(
cursor.getInt(CALENDARS_INDEX_COLOR));
model.mCalendarAccountName = cursor.getString(CALENDARS_INDEX_ACCOUNT_NAME);
model.mCalendarAccountType = cursor.getString(CALENDARS_INDEX_ACCOUNT_TYPE);
model.mCalendarMaxReminders = cursor.getInt(CALENDARS_INDEX_MAX_REMINDERS);
model.mCalendarAllowedReminders = cursor.getString(CALENDARS_INDEX_ALLOWED_REMINDERS);
@ -1248,6 +1285,11 @@ public class EditEventHelper {
}
values.put(Events.ACCESS_LEVEL, accessLevel);
values.put(Events.STATUS, model.mEventStatus);
if (model.mEventColor == -1 || model.mEventColor == model.mCalendarColor) {
values.put(Events.EVENT_COLOR_KEY, NO_EVENT_COLOR);
} else {
values.put(Events.EVENT_COLOR_KEY, model.getEventColorKey());
}
return values;
}

View File

@ -31,11 +31,11 @@ import android.content.SharedPreferences;
import android.content.res.Resources;
import android.database.Cursor;
import android.graphics.drawable.Drawable;
import android.provider.CalendarContract;
import android.provider.CalendarContract.Attendees;
import android.provider.CalendarContract.Calendars;
import android.provider.CalendarContract.Events;
import android.provider.CalendarContract.Reminders;
import android.provider.CalendarContract;
import android.provider.Settings;
import android.text.InputFilter;
import android.text.TextUtils;
@ -47,6 +47,7 @@ import android.util.Log;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.accessibility.AccessibilityEvent;
import android.view.accessibility.AccessibilityManager;
@ -115,6 +116,9 @@ public class EditEventView implements View.OnClickListener, DialogInterface.OnCa
Button mStartTimeButton;
Button mEndTimeButton;
Button mTimezoneButton;
View mColorPickerNewEvent;
View mColorPickerExistingEvent;
OnClickListener mChangeColorOnClickListener;
View mTimezoneRow;
TextView mStartTimeHome;
TextView mStartDateHome;
@ -150,7 +154,7 @@ public class EditEventView implements View.OnClickListener, DialogInterface.OnCa
private int[] mOriginalPadding = new int[4];
private int[] mOriginalSpinnerPadding = new int[4];
private boolean mIsMultipane;
public boolean mIsMultipane;
private ProgressDialog mLoadingCalendarsDialog;
private AlertDialog mNoCalendarsDialog;
private AlertDialog mTimezoneDialog;
@ -187,6 +191,11 @@ public class EditEventView implements View.OnClickListener, DialogInterface.OnCa
*/
private ArrayList<Integer> mAvailabilityValues;
private ArrayList<String> mAvailabilityLabels;
private ArrayList<String> mOriginalAvailabilityLabels;
private ArrayAdapter<String> mAvailabilityAdapter;
private boolean mAvailabilityExplicitlySet;
private boolean mAllDayChangingAvailability;
private int mAvailabilityCurrentlySelected;
private int mDefaultReminderMinutes;
@ -868,6 +877,9 @@ public class EditEventView implements View.OnClickListener, DialogInterface.OnCa
mEndHomeGroup = view.findViewById(R.id.to_row_home_tz);
mAttendeesList = (MultiAutoCompleteTextView) view.findViewById(R.id.attendees);
mColorPickerNewEvent = view.findViewById(R.id.change_color_new_event);
mColorPickerExistingEvent = view.findViewById(R.id.change_color_existing_event);
mTitleTextView.setTag(mTitleTextView.getBackground());
mLocationTextView.setTag(mLocationTextView.getBackground());
mLocationAdapter = new EventLocationAdapter(activity);
@ -884,6 +896,36 @@ public class EditEventView implements View.OnClickListener, DialogInterface.OnCa
}
});
mAvailabilityExplicitlySet = false;
mAllDayChangingAvailability = false;
mAvailabilityCurrentlySelected = -1;
mAvailabilitySpinner.setOnItemSelectedListener(
new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent,
View view, int position, long id) {
// The spinner's onItemSelected gets called while it is being
// initialized to the first item, and when we explicitly set it
// in the allDay checkbox toggling, so we need these checks to
// find out when the spinner is actually being clicked.
// Set the initial selection.
if (mAvailabilityCurrentlySelected == -1) {
mAvailabilityCurrentlySelected = position;
}
if (mAvailabilityCurrentlySelected != position &&
!mAllDayChangingAvailability) {
mAvailabilityExplicitlySet = true;
} else {
mAvailabilityCurrentlySelected = position;
mAllDayChangingAvailability = false;
}
}
@Override
public void onNothingSelected(AdapterView<?> arg0) { }
});
mDescriptionTextView.setTag(mDescriptionTextView.getBackground());
mRepeatsSpinner.setTag(mRepeatsSpinner.getBackground());
@ -957,16 +999,19 @@ public class EditEventView implements View.OnClickListener, DialogInterface.OnCa
mAvailabilityValues = loadIntegerArray(r, R.array.availability_values);
mAvailabilityLabels = loadStringArray(r, R.array.availability);
// Copy the unadulterated availability labels for all-day toggling.
mOriginalAvailabilityLabels = new ArrayList<String>();
mOriginalAvailabilityLabels.addAll(mAvailabilityLabels);
if (mModel.mCalendarAllowedAvailability != null) {
EventViewUtils.reduceMethodList(mAvailabilityValues, mAvailabilityLabels,
mModel.mCalendarAllowedAvailability);
}
ArrayAdapter<String> adapter = new ArrayAdapter<String>(mActivity,
mAvailabilityAdapter = new ArrayAdapter<String>(mActivity,
android.R.layout.simple_spinner_item, mAvailabilityLabels);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mAvailabilitySpinner.setAdapter(adapter);
mAvailabilityAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mAvailabilitySpinner.setAdapter(mAvailabilityAdapter);
}
/**
@ -1056,6 +1101,9 @@ public class EditEventView implements View.OnClickListener, DialogInterface.OnCa
boolean canRespond = EditEventHelper.canRespond(model);
final long eventId = model.mId;
final long calendarId = model.mCalendarId;
long begin = model.mStart;
long end = model.mEnd;
mTimezone = model.mTimezone; // this will be UTC for all day events
@ -1176,7 +1224,6 @@ public class EditEventView implements View.OnClickListener, DialogInterface.OnCa
mResponseGroup.setVisibility(View.GONE);
}
int displayColor = Utils.getDisplayColorFromColor(model.mCalendarColor);
if (model.mUri != null) {
// This is an existing event so hide the calendar spinner
// since we can't change the calendar.
@ -1188,15 +1235,11 @@ public class EditEventView implements View.OnClickListener, DialogInterface.OnCa
if (tv != null) {
tv.setText(model.mOwnerAccount);
}
if (mIsMultipane) {
mView.findViewById(R.id.calendar_textview).setBackgroundColor(displayColor);
} else {
mView.findViewById(R.id.calendar_group).setBackgroundColor(displayColor);
}
} else {
View calendarGroup = mView.findViewById(R.id.calendar_group);
calendarGroup.setVisibility(View.GONE);
}
updateHeadlineColor(model, model.mEventColor);
populateWhen();
populateRepeats();
@ -1208,6 +1251,23 @@ public class EditEventView implements View.OnClickListener, DialogInterface.OnCa
sendAccessibilityEvent();
}
public void updateHeadlineColor(CalendarEventModel model, int displayColor) {
if (model.mUri != null) {
if (mIsMultipane) {
mView.findViewById(R.id.calendar_textview_with_colorpicker)
.setBackgroundColor(displayColor);
} else {
mView.findViewById(R.id.calendar_group).setBackgroundColor(displayColor);
}
} else {
if (mIsMultipane) {
mCalendarSelectorWrapper.setBackgroundColor(displayColor);
} else {
mCalendarSelectorGroup.setBackgroundColor(displayColor);
}
}
}
private void sendAccessibilityEvent() {
AccessibilityManager am =
(AccessibilityManager) mActivity.getSystemService(Service.ACCESSIBILITY_SERVICE);
@ -1651,10 +1711,40 @@ public class EditEventView implements View.OnClickListener, DialogInterface.OnCa
mEndTimeButton.setVisibility(View.VISIBLE);
mTimezoneRow.setVisibility(View.VISIBLE);
}
// If this is a new event, and if availability has not yet been
// explicitly set, toggle busy/available as the inverse of all day.
if (mModel.mUri == null && !mAvailabilityExplicitlySet) {
// Values are from R.arrays.availability_values.
// 0 = busy
// 1 = available
int newAvailabilityValue = isChecked? 1 : 0;
if (mAvailabilityAdapter != null && mAvailabilityValues != null
&& mAvailabilityValues.contains(newAvailabilityValue)) {
// We'll need to let the spinner's listener know that we're
// explicitly toggling it.
mAllDayChangingAvailability = true;
String newAvailabilityLabel = mOriginalAvailabilityLabels.get(newAvailabilityValue);
int newAvailabilityPos = mAvailabilityAdapter.getPosition(newAvailabilityLabel);
mAvailabilitySpinner.setSelection(newAvailabilityPos);
}
}
mAllDay = isChecked;
updateHomeTime();
}
public void setColorPickerButtonStates(int[] eventColors) {
if (eventColors == null || eventColors.length == 0) {
mColorPickerNewEvent.setVisibility(View.INVISIBLE);
mColorPickerExistingEvent.setVisibility(View.GONE);
} else {
mColorPickerNewEvent.setVisibility(View.VISIBLE);
mColorPickerExistingEvent.setVisibility(View.VISIBLE);
}
}
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
// This is only used for the Calendar spinner in new events, and only fires when the
@ -1666,6 +1756,13 @@ public class EditEventView implements View.OnClickListener, DialogInterface.OnCa
return;
}
// Do nothing if the selection didn't change so that reminders will not get lost
int idColumn = c.getColumnIndexOrThrow(Calendars._ID);
long calendarId = c.getLong(idColumn);
if (calendarId == mModel.mCalendarId) {
return;
}
int colorColumn = c.getColumnIndexOrThrow(Calendars.CALENDAR_COLOR);
int color = c.getInt(colorColumn);
int displayColor = Utils.getDisplayColorFromColor(color);
@ -1676,14 +1773,14 @@ public class EditEventView implements View.OnClickListener, DialogInterface.OnCa
mCalendarSelectorGroup.setBackgroundColor(displayColor);
}
// Do nothing if the selection didn't change so that reminders will not get lost
int idColumn = c.getColumnIndexOrThrow(Calendars._ID);
long calendarId = c.getLong(idColumn);
if (calendarId == mModel.mCalendarId) {
return;
}
mModel.mCalendarId = calendarId;
mModel.mCalendarColor = color;
mModel.mCalendarColor = displayColor;
mModel.mCalendarAccountName = c.getString(EditEventHelper.CALENDARS_INDEX_ACCOUNT_NAME);
mModel.mCalendarAccountType = c.getString(EditEventHelper.CALENDARS_INDEX_ACCOUNT_TYPE);
mModel.mEventColor = mModel.mCalendarColor;
setColorPickerButtonStates(mModel.getCalendarEventColors());
// Update the max/allowed reminders with the new calendar properties.
int maxRemindersColumn = c.getColumnIndexOrThrow(Calendars.MAX_REMINDERS);
mModel.mCalendarMaxReminders = c.getInt(maxRemindersColumn);

View File

@ -0,0 +1,109 @@
/*
* Copyright (C) 2013 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.calendar.event;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Map;
/**
* A cache for event colors and event color keys stored based upon calendar account name and type.
*/
public class EventColorCache implements Serializable {
private static final long serialVersionUID = 2L;
private static final String SEPARATOR = "::";
private Map<String, ArrayList<Integer>> mColorPaletteMap;
private Map<String, Integer> mColorKeyMap;
public EventColorCache() {
mColorPaletteMap = new HashMap<String, ArrayList<Integer>>();
mColorKeyMap = new HashMap<String, Integer>();
}
/**
* Inserts a color into the cache.
*/
public void insertColor(String accountName, String accountType, int displayColor,
int colorKey) {
mColorKeyMap.put(createKey(accountName, accountType, displayColor), colorKey);
String key = createKey(accountName, accountType);
ArrayList<Integer> colorPalette;
if ((colorPalette = mColorPaletteMap.get(key)) == null) {
colorPalette = new ArrayList<Integer>();
}
colorPalette.add(displayColor);
mColorPaletteMap.put(key, colorPalette);
}
/**
* Retrieve an array of colors for a specific account name and type.
*/
public int[] getColorArray(String accountName, String accountType) {
ArrayList<Integer> colors = mColorPaletteMap.get(createKey(accountName, accountType));
if (colors == null) {
return null;
}
int[] ret = new int[colors.size()];
for (int i = 0; i < ret.length; i++) {
ret[i] = colors.get(i);
}
return ret;
}
/**
* Retrieve an event color's unique key based on account name, type, and color.
*/
public int getColorKey(String accountName, String accountType, int displayColor) {
return mColorKeyMap.get(createKey(accountName, accountType, displayColor));
}
/**
* Sorts the arrays of colors based on a comparator.
*/
public void sortPalettes(Comparator<Integer> comparator) {
for (String key : mColorPaletteMap.keySet()) {
ArrayList<Integer> palette = mColorPaletteMap.get(key);
Integer[] sortedColors = new Integer[palette.size()];
Arrays.sort(palette.toArray(sortedColors), comparator);
palette.clear();
for (Integer color : sortedColors) {
palette.add(color);
}
mColorPaletteMap.put(key, palette);
}
}
private String createKey(String accountName, String accountType) {
return new StringBuilder().append(accountName)
.append(SEPARATOR)
.append(accountType)
.toString();
}
private String createKey(String accountName, String accountType, int displayColor) {
return new StringBuilder(createKey(accountName, accountType))
.append(SEPARATOR)
.append(displayColor)
.toString();
}
}

View File

@ -0,0 +1,65 @@
/*
* Copyright (C) 2013 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.calendar.event;
import android.app.Activity;
import android.content.DialogInterface;
import android.os.Bundle;
import com.android.calendar.R;
import com.android.colorpicker.ColorPickerDialog;
/**
* A dialog which displays event colors, with an additional button for the calendar color.
*/
public class EventColorPickerDialog extends ColorPickerDialog {
private static final int NUM_COLUMNS = 4;
private int mCalendarColor;
public EventColorPickerDialog() {
// Empty constructor required for dialog fragment.
}
public EventColorPickerDialog(int[] colors, int selectedColor, int calendarColor,
boolean isTablet) {
super(R.string.event_color_picker_dialog_title, colors, selectedColor, NUM_COLUMNS,
isTablet ? SIZE_LARGE : SIZE_SMALL);
mCalendarColor = calendarColor;
}
public void setCalendarColor(int color) {
mCalendarColor = color;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
final Activity activity = getActivity();
mAlertDialog.setButton(DialogInterface.BUTTON_NEUTRAL,
activity.getString(R.string.event_color_set_to_default),
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
onColorSelected(mCalendarColor);
}
}
);
}
}

View File

@ -16,26 +16,33 @@
package com.android.calendar.selectcalendars;
import com.android.calendar.R;
import com.android.calendar.Utils;
import android.app.FragmentManager;
import android.content.Context;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.database.Cursor;
import android.graphics.Rect;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
import android.provider.CalendarContract.Calendars;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.TouchDelegate;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.widget.BaseAdapter;
import android.widget.CheckBox;
import android.widget.ImageView;
import android.widget.ListAdapter;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.android.calendar.CalendarColorPickerDialog;
import com.android.calendar.R;
import com.android.calendar.Utils;
public class SelectCalendarsSimpleAdapter extends BaseAdapter implements ListAdapter {
private static final String TAG = "SelectCalendarsAdapter";
private static int SELECTED_COLOR_CHIP_SIZE = 16;
@ -51,6 +58,7 @@ public class SelectCalendarsSimpleAdapter extends BaseAdapter implements ListAda
private static final int IS_BOTTOM = 1 << 2;
private static final int IS_BELOW_SELECTED = 1 << 3;
private CalendarColorPickerDialog mDialog;
private LayoutInflater mInflater;
Resources mRes;
@ -60,6 +68,10 @@ public class SelectCalendarsSimpleAdapter extends BaseAdapter implements ListAda
private Cursor mCursor;
private int mRowCount = 0;
private FragmentManager mFragmentManager;
private boolean mIsTablet;
private int mColorViewTouchAreaIncrease;
private int mIdColumn;
private int mNameColumn;
private int mColorColumn;
@ -79,7 +91,7 @@ public class SelectCalendarsSimpleAdapter extends BaseAdapter implements ListAda
boolean selected;
}
public SelectCalendarsSimpleAdapter(Context context, int layout, Cursor c) {
public SelectCalendarsSimpleAdapter(Context context, int layout, Cursor c, FragmentManager fm) {
super();
mLayout = layout;
mOrientation = context.getResources().getConfiguration().orientation;
@ -101,6 +113,11 @@ public class SelectCalendarsSimpleAdapter extends BaseAdapter implements ListAda
BOTTOM_ITEM_HEIGHT *= mScale;
NORMAL_ITEM_HEIGHT *= mScale;
}
mFragmentManager = fm;
mIsTablet = Utils.getConfigBool(context, R.bool.tablet_config);
mColorViewTouchAreaIncrease = context.getResources()
.getDimensionPixelSize(R.dimen.color_view_touch_area_increase);
}
private static class TabletCalendarItemBackgrounds {
@ -191,7 +208,7 @@ public class SelectCalendarsSimpleAdapter extends BaseAdapter implements ListAda
notifyDataSetChanged();
}
public View getView(int position, View convertView, ViewGroup parent) {
public View getView(final int position, View convertView, ViewGroup parent) {
if (position >= mRowCount) {
return null;
}
@ -202,6 +219,21 @@ public class SelectCalendarsSimpleAdapter extends BaseAdapter implements ListAda
View view;
if (convertView == null) {
view = mInflater.inflate(mLayout, parent, false);
final View delegate = view.findViewById(R.id.color);
final View delegateParent = (View) delegate.getParent();
delegateParent.post(new Runnable() {
@Override
public void run() {
final Rect r = new Rect();
delegate.getHitRect(r);
r.top -= mColorViewTouchAreaIncrease;
r.bottom += mColorViewTouchAreaIncrease;
r.left -= mColorViewTouchAreaIncrease;
r.right += mColorViewTouchAreaIncrease;
delegateParent.setTouchDelegate(new TouchDelegate(r, delegate));
}
});
} else {
view = convertView;
}
@ -211,6 +243,19 @@ public class SelectCalendarsSimpleAdapter extends BaseAdapter implements ListAda
View colorView = view.findViewById(R.id.color);
colorView.setBackgroundColor(color);
colorView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (mDialog == null) {
mDialog = new CalendarColorPickerDialog(mData[position].id, mIsTablet);
} else {
mDialog.setCalendarId(mData[position].id);
}
if (!mDialog.isAdded()) {
mDialog.show(mFragmentManager, "Fragment");
}
}
});
CheckBox syncCheckBox = (CheckBox) view.findViewById(R.id.sync);
if (syncCheckBox != null) {

View File

@ -16,21 +16,28 @@
package com.android.calendar.selectcalendars;
import android.app.FragmentManager;
import android.content.Context;
import android.content.res.Resources;
import android.database.Cursor;
import android.graphics.Rect;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.shapes.RectShape;
import android.provider.CalendarContract.Calendars;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.TouchDelegate;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.CheckBox;
import android.widget.ImageView;
import android.widget.ListAdapter;
import android.widget.TextView;
import com.android.calendar.CalendarColorPickerDialog;
import com.android.calendar.R;
import com.android.calendar.Utils;
@ -42,6 +49,8 @@ public class SelectCalendarsSyncAdapter extends BaseAdapter
private static int COLOR_CHIP_SIZE = 30;
private RectShape r = new RectShape();
private CalendarColorPickerDialog mDialog;
private LayoutInflater mInflater;
private static final int LAYOUT = R.layout.calendar_sync_item;
private CalendarRow[] mData;
@ -53,6 +62,11 @@ public class SelectCalendarsSyncAdapter extends BaseAdapter
private int mColorColumn;
private int mSyncedColumn;
private boolean mIsTablet;
private FragmentManager mFragmentManager;
private int mColorViewTouchAreaIncrease;
private final String mSyncedString;
private final String mNotSyncedString;
@ -64,9 +78,13 @@ public class SelectCalendarsSyncAdapter extends BaseAdapter
boolean originalSynced;
}
public SelectCalendarsSyncAdapter(Context context, Cursor c) {
public SelectCalendarsSyncAdapter(Context context, Cursor c, FragmentManager manager) {
super();
initData(c);
mFragmentManager = manager;
mColorViewTouchAreaIncrease = context.getResources()
.getDimensionPixelSize(R.dimen.color_view_touch_area_increase);
mIsTablet = Utils.getConfigBool(context, R.bool.tablet_config);
mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
COLOR_CHIP_SIZE *= context.getResources().getDisplayMetrics().density;
r.resize(COLOR_CHIP_SIZE, COLOR_CHIP_SIZE);
@ -113,7 +131,7 @@ public class SelectCalendarsSyncAdapter extends BaseAdapter
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
public View getView(final int position, View convertView, ViewGroup parent) {
if (position >= mRowCount) {
return null;
}
@ -123,6 +141,21 @@ public class SelectCalendarsSyncAdapter extends BaseAdapter
View view;
if (convertView == null) {
view = mInflater.inflate(LAYOUT, parent, false);
final View delegate = view.findViewById(R.id.color);
final View delegateParent = (View) delegate.getParent();
delegateParent.post(new Runnable() {
@Override
public void run() {
final Rect r = new Rect();
delegate.getHitRect(r);
r.top -= mColorViewTouchAreaIncrease;
r.bottom += mColorViewTouchAreaIncrease;
r.left -= mColorViewTouchAreaIncrease;
r.right += mColorViewTouchAreaIncrease;
delegateParent.setTouchDelegate(new TouchDelegate(r, delegate));
}
});
} else {
view = convertView;
}
@ -139,8 +172,21 @@ public class SelectCalendarsSyncAdapter extends BaseAdapter
}
View colorView = view.findViewById(R.id.color);
colorView.setBackgroundColor(color);
colorView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (mDialog == null) {
mDialog = new CalendarColorPickerDialog(mData[position].id, mIsTablet);
} else {
mDialog.setCalendarId(mData[position].id);
}
if (!mDialog.isAdded()) {
mDialog.show(mFragmentManager, TAG);
}
}
});
setText(view, R.id.calendar, name);
return view;

View File

@ -16,11 +16,6 @@
package com.android.calendar.selectcalendars;
import com.android.calendar.AsyncQueryService;
import com.android.calendar.R;
import com.android.calendar.Utils;
import com.android.calendar.selectcalendars.SelectCalendarsSyncAdapter.CalendarRow;
import android.accounts.Account;
import android.app.Activity;
import android.app.ListFragment;
@ -41,15 +36,23 @@ import android.provider.CalendarContract;
import android.provider.CalendarContract.Calendars;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ListAdapter;
import android.widget.TextView;
import com.android.calendar.AsyncQueryService;
import com.android.calendar.CalendarColorPickerDialog;
import com.android.calendar.R;
import com.android.calendar.Utils;
import com.android.calendar.selectcalendars.SelectCalendarsSyncAdapter.CalendarRow;
import java.util.HashMap;
public class SelectCalendarsSyncFragment extends ListFragment
implements View.OnClickListener, LoaderManager.LoaderCallbacks<Cursor> {
private static final String TAG = "SelectCalendarSync";
private static final String COLLATE_NOCASE = " COLLATE NOCASE";
@ -191,7 +194,7 @@ public class SelectCalendarsSyncFragment extends ListFragment
public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
SelectCalendarsSyncAdapter adapter = (SelectCalendarsSyncAdapter) getListAdapter();
if (adapter == null) {
adapter = new SelectCalendarsSyncAdapter(getActivity(), data);
adapter = new SelectCalendarsSyncAdapter(getActivity(), data, getFragmentManager());
setListAdapter(adapter);
} else {
adapter.changeCursor(data);

View File

@ -19,17 +19,38 @@ package com.android.calendar.selectcalendars;
import android.app.ActionBar;
import android.app.FragmentTransaction;
import android.content.Intent;
import android.database.ContentObserver;
import android.os.Bundle;
import android.os.Handler;
import android.provider.CalendarContract;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import com.android.calendar.AbstractCalendarActivity;
import com.android.calendar.CalendarController;
import com.android.calendar.CalendarController.EventType;
import com.android.calendar.CalendarController.ViewType;
import com.android.calendar.R;
import com.android.calendar.Utils;
public class SelectVisibleCalendarsActivity extends AbstractCalendarActivity {
private SelectVisibleCalendarsFragment mFragment;
private CalendarController mController;
// Create an observer so that we can update the views whenever a
// Calendar event changes.
private final ContentObserver mObserver = new ContentObserver(new Handler()) {
@Override
public boolean deliverSelfNotifications() {
return true;
}
@Override
public void onChange(boolean selfChange) {
mController.sendEvent(this, EventType.EVENTS_CHANGED, null, null, -1, ViewType.CURRENT);
}
};
@Override
protected void onCreate(Bundle icicle) {
@ -37,6 +58,7 @@ public class SelectVisibleCalendarsActivity extends AbstractCalendarActivity {
setContentView(R.layout.simple_frame_layout);
mController = CalendarController.getInstance(this);
mFragment = (SelectVisibleCalendarsFragment) getFragmentManager().findFragmentById(
R.id.main_frame);
@ -50,6 +72,19 @@ public class SelectVisibleCalendarsActivity extends AbstractCalendarActivity {
}
}
@Override
public void onResume() {
super.onResume();
getContentResolver().registerContentObserver(CalendarContract.Events.CONTENT_URI,
true, mObserver);
}
@Override
public void onPause() {
super.onPause();
getContentResolver().unregisterContentObserver(mObserver);
}
// Needs to be in proguard whitelist
// Specified as listener via android:onClick in a layout xml
public void handleSelectSyncedCalendarsClicked(View v) {

View File

@ -61,6 +61,7 @@ public class SelectVisibleCalendarsFragment extends Fragment
private static int mCalendarItemLayout = R.layout.mini_calendar_item;
private View mView = null;
private CalendarController mController;
private ListView mList;
private SelectCalendarsSimpleAdapter mAdapter;
private Activity mContext;
@ -78,6 +79,8 @@ public class SelectVisibleCalendarsFragment extends Fragment
public void onAttach(Activity activity) {
super.onAttach(activity);
mContext = activity;
mController = CalendarController.getInstance(activity);
mController.registerEventHandler(R.layout.select_calendars_fragment, this);
mService = new AsyncQueryService(activity) {
@Override
protected void onQueryComplete(int token, Object cookie, Cursor cursor) {
@ -90,6 +93,7 @@ public class SelectVisibleCalendarsFragment extends Fragment
@Override
public void onDetach() {
super.onDetach();
mController.deregisterEventHandler(R.layout.select_calendars_fragment);
if (mCursor != null) {
mAdapter.changeCursor(null);
mCursor.close();
@ -125,7 +129,8 @@ public class SelectVisibleCalendarsFragment extends Fragment
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
mAdapter = new SelectCalendarsSimpleAdapter(mContext, mCalendarItemLayout, null);
mAdapter = new SelectCalendarsSimpleAdapter(mContext, mCalendarItemLayout, null,
getFragmentManager());
mList.setAdapter(mAdapter);
mList.setOnItemClickListener(this);
}
@ -149,7 +154,6 @@ public class SelectVisibleCalendarsFragment extends Fragment
* Write back the changes that have been made.
*/
public void toggleVisibility(int position) {
Log.d(TAG, "Toggling calendar at " + position);
mUpdateToken = mService.getNextToken();
Uri uri = ContentUris.withAppendedId(Calendars.CONTENT_URI, mAdapter.getItemId(position));
ContentValues values = new ContentValues();
@ -177,8 +181,6 @@ public class SelectVisibleCalendarsFragment extends Fragment
@Override
public void handleEvent(EventInfo event) {
if (event.eventType == EventType.EVENTS_CHANGED) {
eventsChanged();
}
eventsChanged();
}
}