mirror of
https://github.com/Etar-Group/Etar-Calendar.git
synced 2024-09-11 10:05:47 +03:00
Merge remote-tracking branch 'goog/ics-ub-calendar-cream' into catchup
This commit is contained in:
commit
8ee471e8aa
@ -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)
|
||||
|
||||
|
@ -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
|
||||
|
BIN
res/drawable-hdpi/ic_menu_colorpicker_holo_dark.png
Normal file
BIN
res/drawable-hdpi/ic_menu_colorpicker_holo_dark.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.4 KiB |
BIN
res/drawable-hdpi/ic_menu_colorpicker_holo_light.png
Normal file
BIN
res/drawable-hdpi/ic_menu_colorpicker_holo_light.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.5 KiB |
BIN
res/drawable-mdpi/ic_menu_colorpicker_holo_dark.png
Normal file
BIN
res/drawable-mdpi/ic_menu_colorpicker_holo_dark.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 994 B |
BIN
res/drawable-mdpi/ic_menu_colorpicker_holo_light.png
Normal file
BIN
res/drawable-mdpi/ic_menu_colorpicker_holo_light.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.0 KiB |
BIN
res/drawable-xhdpi/ic_menu_colorpicker_holo_dark.png
Normal file
BIN
res/drawable-xhdpi/ic_menu_colorpicker_holo_dark.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.9 KiB |
BIN
res/drawable-xhdpi/ic_menu_colorpicker_holo_light.png
Normal file
BIN
res/drawable-xhdpi/ic_menu_colorpicker_holo_light.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.0 KiB |
@ -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 -->
|
||||
|
@ -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"
|
||||
|
@ -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 -->
|
||||
|
@ -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"
|
||||
|
@ -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>
|
||||
|
||||
|
124
res/layout/event_info_headline.xml
Normal file
124
res/layout/event_info_headline.xml
Normal 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>
|
@ -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"
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
||||
|
@ -17,7 +17,7 @@
|
||||
** limitations under the License.
|
||||
*/
|
||||
-->
|
||||
<resources>
|
||||
<resources xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
|
||||
|
||||
|
@ -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" />
|
||||
|
@ -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());
|
||||
|
182
src/com/android/calendar/CalendarColorPickerDialog.java
Normal file
182
src/com/android/calendar/CalendarColorPickerDialog.java
Normal 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);
|
||||
}
|
||||
}
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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();
|
||||
|
@ -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
|
||||
|
@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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);
|
||||
|
109
src/com/android/calendar/event/EventColorCache.java
Normal file
109
src/com/android/calendar/event/EventColorCache.java
Normal 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();
|
||||
}
|
||||
}
|
65
src/com/android/calendar/event/EventColorPickerDialog.java
Normal file
65
src/com/android/calendar/event/EventColorPickerDialog.java
Normal 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);
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
@ -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) {
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
|
@ -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) {
|
||||
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user