114 lines
4.9 KiB
Java
114 lines
4.9 KiB
Java
/*
|
|
* Copyright (C) 2009 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.example.android.notepad;
|
|
|
|
import com.example.android.notepad.NotePad;
|
|
|
|
import android.app.Activity;
|
|
import android.content.Intent;
|
|
import android.content.Intent.ShortcutIconResource;
|
|
import android.os.Bundle;
|
|
import android.provider.LiveFolders;
|
|
|
|
/**
|
|
* This Activity creates a live folder Intent and
|
|
* sends it back to HOME. From the data in the Intent, HOME creates a live folder and displays
|
|
* its icon in the Home view.
|
|
* When the user clicks the icon, Home uses the data it got from the Intent to retrieve information
|
|
* from a content provider and display it in a View.
|
|
*
|
|
* The intent filter for this Activity is set to ACTION_CREATE_LIVE_FOLDER, which
|
|
* HOME sends in response to a long press and selection of Live Folder.
|
|
*/
|
|
public class NotesLiveFolder extends Activity {
|
|
|
|
/**
|
|
* All of the work is done in onCreate(). The Activity doesn't actually display a UI.
|
|
* Instead, it sets up an Intent and returns it to its caller (the HOME activity).
|
|
*/
|
|
@Override
|
|
protected void onCreate(Bundle savedInstanceState) {
|
|
super.onCreate(savedInstanceState);
|
|
|
|
/*
|
|
* Gets the incoming Intent and its action. If the incoming Intent was
|
|
* ACTION_CREATE_LIVE_FOLDER, then create an outgoing Intent with the
|
|
* necessary data and send back OK. Otherwise, send back CANCEL.
|
|
*/
|
|
final Intent intent = getIntent();
|
|
final String action = intent.getAction();
|
|
|
|
if (LiveFolders.ACTION_CREATE_LIVE_FOLDER.equals(action)) {
|
|
|
|
// Creates a new Intent.
|
|
final Intent liveFolderIntent = new Intent();
|
|
|
|
/*
|
|
* The following statements put data into the outgoing Intent. Please see
|
|
* {@link android.provider.LiveFolders for a detailed description of these
|
|
* data values. From this data, HOME sets up a live folder.
|
|
*/
|
|
// Sets the URI pattern for the content provider backing the folder.
|
|
liveFolderIntent.setData(NotePad.Notes.LIVE_FOLDER_URI);
|
|
|
|
// Adds the display name of the live folder as an Extra string.
|
|
String foldername = getString(R.string.live_folder_name);
|
|
liveFolderIntent.putExtra(LiveFolders.EXTRA_LIVE_FOLDER_NAME, foldername);
|
|
|
|
// Adds the display icon of the live folder as an Extra resource.
|
|
ShortcutIconResource foldericon =
|
|
Intent.ShortcutIconResource.fromContext(this, R.drawable.live_folder_notes);
|
|
liveFolderIntent.putExtra(LiveFolders.EXTRA_LIVE_FOLDER_ICON, foldericon);
|
|
|
|
// Add the display mode of the live folder as an integer. The specified
|
|
// mode causes the live folder to display as a list.
|
|
liveFolderIntent.putExtra(
|
|
LiveFolders.EXTRA_LIVE_FOLDER_DISPLAY_MODE,
|
|
LiveFolders.DISPLAY_MODE_LIST);
|
|
|
|
/*
|
|
* Adds a base action for items in the live folder list, as an Intent. When the
|
|
* user clicks an individual note in the list, the live folder fires this Intent.
|
|
*
|
|
* Its action is ACTION_EDIT, so it triggers the Note Editor activity. Its
|
|
* data is the URI pattern for a single note identified by its ID. The live folder
|
|
* automatically adds the ID value of the selected item to the URI pattern.
|
|
*
|
|
* As a result, Note Editor is triggered and gets a single note to retrieve by ID.
|
|
*/
|
|
Intent returnIntent
|
|
= new Intent(Intent.ACTION_EDIT, NotePad.Notes.CONTENT_ID_URI_PATTERN);
|
|
liveFolderIntent.putExtra(LiveFolders.EXTRA_LIVE_FOLDER_BASE_INTENT, returnIntent);
|
|
|
|
/* Creates an ActivityResult object to propagate back to HOME. Set its result indicator
|
|
* to OK, and sets the returned Intent to the live folder Intent that was just
|
|
* constructed.
|
|
*/
|
|
setResult(RESULT_OK, liveFolderIntent);
|
|
|
|
} else {
|
|
|
|
// If the original action was not ACTION_CREATE_LIVE_FOLDER, creates an
|
|
// ActivityResult with the indicator set to CANCELED, but do not return an Intent
|
|
setResult(RESULT_CANCELED);
|
|
}
|
|
|
|
// Closes the Activity. The ActivityObject is propagated back to the caller.
|
|
finish();
|
|
}
|
|
}
|