1/*
2 * Copyright (C) 2011 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package com.android.calendar.selectcalendars;
18
19import android.app.ActionBar;
20import android.app.FragmentTransaction;
21import android.content.Intent;
22import android.database.ContentObserver;
23import android.os.Bundle;
24import android.os.Handler;
25import android.provider.CalendarContract;
26import android.view.Menu;
27import android.view.MenuItem;
28import android.view.View;
29
30import com.android.calendar.AbstractCalendarActivity;
31import com.android.calendar.CalendarController;
32import com.android.calendar.CalendarController.EventType;
33import com.android.calendar.CalendarController.ViewType;
34import com.android.calendar.R;
35import com.android.calendar.Utils;
36
37public class SelectVisibleCalendarsActivity extends AbstractCalendarActivity {
38    private SelectVisibleCalendarsFragment mFragment;
39    private CalendarController mController;
40
41    // Create an observer so that we can update the views whenever a
42    // Calendar event changes.
43    private final ContentObserver mObserver = new ContentObserver(new Handler()) {
44        @Override
45        public boolean deliverSelfNotifications() {
46            return true;
47        }
48
49        @Override
50        public void onChange(boolean selfChange) {
51          mController.sendEvent(this, EventType.EVENTS_CHANGED, null, null, -1, ViewType.CURRENT);
52        }
53    };
54
55    @Override
56    protected void onCreate(Bundle icicle) {
57        super.onCreate(icicle);
58
59        setContentView(R.layout.simple_frame_layout);
60
61        mController = CalendarController.getInstance(this);
62        mFragment = (SelectVisibleCalendarsFragment) getFragmentManager().findFragmentById(
63                R.id.main_frame);
64
65        if (mFragment == null) {
66            mFragment = new SelectVisibleCalendarsFragment(R.layout.calendar_sync_item);
67
68            FragmentTransaction ft = getFragmentManager().beginTransaction();
69            ft.replace(R.id.main_frame, mFragment);
70            ft.show(mFragment);
71            ft.commit();
72        }
73    }
74
75    @Override
76    public void onResume() {
77        super.onResume();
78        getContentResolver().registerContentObserver(CalendarContract.Events.CONTENT_URI,
79                true, mObserver);
80    }
81
82    @Override
83    public void onPause() {
84        super.onPause();
85        getContentResolver().unregisterContentObserver(mObserver);
86    }
87
88    // Needs to be in proguard whitelist
89    // Specified as listener via android:onClick in a layout xml
90    public void handleSelectSyncedCalendarsClicked(View v) {
91        Intent intent = new Intent(Intent.ACTION_VIEW);
92        intent.setClass(this, SelectSyncedCalendarsMultiAccountActivity.class);
93        intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_SINGLE_TOP);
94        startActivity(intent);
95    }
96
97    @Override
98    public boolean onCreateOptionsMenu(Menu menu) {
99        getActionBar()
100                .setDisplayOptions(ActionBar.DISPLAY_HOME_AS_UP, ActionBar.DISPLAY_HOME_AS_UP);
101        return true;
102    }
103
104    @Override
105    public boolean onOptionsItemSelected(MenuItem item) {
106        switch (item.getItemId()) {
107            case android.R.id.home:
108                Utils.returnToCalendarHome(this);
109                return true;
110        }
111        return super.onOptionsItemSelected(item);
112    }
113}
114