17c8325de829ca029ce4547e4f0fa266124301367Scott Kennedy/* 27c8325de829ca029ce4547e4f0fa266124301367Scott Kennedy * Copyright (C) 2013 Google Inc. 37c8325de829ca029ce4547e4f0fa266124301367Scott Kennedy * Licensed to The Android Open Source Project. 47c8325de829ca029ce4547e4f0fa266124301367Scott Kennedy * 57c8325de829ca029ce4547e4f0fa266124301367Scott Kennedy * Licensed under the Apache License, Version 2.0 (the "License"); 67c8325de829ca029ce4547e4f0fa266124301367Scott Kennedy * you may not use this file except in compliance with the License. 77c8325de829ca029ce4547e4f0fa266124301367Scott Kennedy * You may obtain a copy of the License at 87c8325de829ca029ce4547e4f0fa266124301367Scott Kennedy * 97c8325de829ca029ce4547e4f0fa266124301367Scott Kennedy * http://www.apache.org/licenses/LICENSE-2.0 107c8325de829ca029ce4547e4f0fa266124301367Scott Kennedy * 117c8325de829ca029ce4547e4f0fa266124301367Scott Kennedy * Unless required by applicable law or agreed to in writing, software 127c8325de829ca029ce4547e4f0fa266124301367Scott Kennedy * distributed under the License is distributed on an "AS IS" BASIS, 137c8325de829ca029ce4547e4f0fa266124301367Scott Kennedy * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 147c8325de829ca029ce4547e4f0fa266124301367Scott Kennedy * See the License for the specific language governing permissions and 157c8325de829ca029ce4547e4f0fa266124301367Scott Kennedy * limitations under the License. 167c8325de829ca029ce4547e4f0fa266124301367Scott Kennedy */ 177c8325de829ca029ce4547e4f0fa266124301367Scott Kennedypackage com.android.mail.ui; 187c8325de829ca029ce4547e4f0fa266124301367Scott Kennedy 197c8325de829ca029ce4547e4f0fa266124301367Scott Kennedyimport android.app.LoaderManager; 2032ddb84f2d4f53bfc4b53656461068c0c69d6325Scott Kennedyimport android.os.Bundle; 21b45d1418887d8595c230788e20516bbe10c2f3eaScott Kennedyimport android.widget.Adapter; 227c8325de829ca029ce4547e4f0fa266124301367Scott Kennedy 237c8325de829ca029ce4547e4f0fa266124301367Scott Kennedyimport com.android.mail.browse.ConversationCursor; 247c8325de829ca029ce4547e4f0fa266124301367Scott Kennedyimport com.android.mail.providers.Folder; 257c8325de829ca029ce4547e4f0fa266124301367Scott Kennedy 267c8325de829ca029ce4547e4f0fa266124301367Scott Kennedy/** 277c8325de829ca029ce4547e4f0fa266124301367Scott Kennedy * An interface for a view that can be inserted into an {@link AnimatedAdapter} at an arbitrary 287c8325de829ca029ce4547e4f0fa266124301367Scott Kennedy * point. The methods described here control whether the view gets displayed, and what it displays. 297c8325de829ca029ce4547e4f0fa266124301367Scott Kennedy */ 307c8325de829ca029ce4547e4f0fa266124301367Scott Kennedypublic interface ConversationSpecialItemView { 317c8325de829ca029ce4547e4f0fa266124301367Scott Kennedy /** 327c8325de829ca029ce4547e4f0fa266124301367Scott Kennedy * Called when there as an update to the information being displayed. 337c8325de829ca029ce4547e4f0fa266124301367Scott Kennedy * 347c8325de829ca029ce4547e4f0fa266124301367Scott Kennedy * @param cursor The {@link ConversationCursor}. May be <code>null</code> 357c8325de829ca029ce4547e4f0fa266124301367Scott Kennedy */ 360e8dc84326ad3e6d146a203538665f98dd98f688Scott Kennedy void onUpdate(Folder folder, ConversationCursor cursor); 377c8325de829ca029ce4547e4f0fa266124301367Scott Kennedy 3837a20ca39be842b4b4cb54d5b5ed418d49d950cfVikram Aggarwal /** 39b45d1418887d8595c230788e20516bbe10c2f3eaScott Kennedy * Called before returning this view from 40b45d1418887d8595c230788e20516bbe10c2f3eaScott Kennedy * {@link Adapter#getView(int, android.view.View, android.view.ViewGroup)} 41b45d1418887d8595c230788e20516bbe10c2f3eaScott Kennedy */ 42f45e0e7f65eb421fc5c2acf7bb76a714e12dc68bScott Kennedy void onGetView(); 43b45d1418887d8595c230788e20516bbe10c2f3eaScott Kennedy 44b45d1418887d8595c230788e20516bbe10c2f3eaScott Kennedy /** 4537a20ca39be842b4b4cb54d5b5ed418d49d950cfVikram Aggarwal * Returns whether this view is to be displayed in the list or not. A view can be added freely 4637a20ca39be842b4b4cb54d5b5ed418d49d950cfVikram Aggarwal * and it might decide to disable itself by returning false here. 4737a20ca39be842b4b4cb54d5b5ed418d49d950cfVikram Aggarwal * @return true if this view should be displayed, false otherwise. 4837a20ca39be842b4b4cb54d5b5ed418d49d950cfVikram Aggarwal */ 497c8325de829ca029ce4547e4f0fa266124301367Scott Kennedy boolean getShouldDisplayInList(); 507c8325de829ca029ce4547e4f0fa266124301367Scott Kennedy 5137a20ca39be842b4b4cb54d5b5ed418d49d950cfVikram Aggarwal /** 5237a20ca39be842b4b4cb54d5b5ed418d49d950cfVikram Aggarwal * Returns the position (0 indexed) where this element expects to be inserted. 5337a20ca39be842b4b4cb54d5b5ed418d49d950cfVikram Aggarwal * @return 5437a20ca39be842b4b4cb54d5b5ed418d49d950cfVikram Aggarwal */ 557c8325de829ca029ce4547e4f0fa266124301367Scott Kennedy int getPosition(); 567c8325de829ca029ce4547e4f0fa266124301367Scott Kennedy 572102b2c87a6cb39bc63fb7eff13dda64da56b72eMark Wei void setAdapter(AnimatedAdapter adapter); 587c8325de829ca029ce4547e4f0fa266124301367Scott Kennedy 5932ddb84f2d4f53bfc4b53656461068c0c69d6325Scott Kennedy void bindFragment(LoaderManager loaderManager, Bundle savedInstanceState); 607c8325de829ca029ce4547e4f0fa266124301367Scott Kennedy 617c8325de829ca029ce4547e4f0fa266124301367Scott Kennedy /** 627c8325de829ca029ce4547e4f0fa266124301367Scott Kennedy * Called when the view is being destroyed. 637c8325de829ca029ce4547e4f0fa266124301367Scott Kennedy */ 647c8325de829ca029ce4547e4f0fa266124301367Scott Kennedy void cleanup(); 65fe8e081d6230f343dc74b45d69e5f4634a332b5aAlice Yang 66fe8e081d6230f343dc74b45d69e5f4634a332b5aAlice Yang /** 67fe8e081d6230f343dc74b45d69e5f4634a332b5aAlice Yang * Called when a regular conversation item was clicked. 68fe8e081d6230f343dc74b45d69e5f4634a332b5aAlice Yang */ 69fe8e081d6230f343dc74b45d69e5f4634a332b5aAlice Yang void onConversationSelected(); 7037a20ca39be842b4b4cb54d5b5ed418d49d950cfVikram Aggarwal 712f542873183b37fa38a0d468f46bbfebc1f537e2Andrew Sapperstein /** 722f542873183b37fa38a0d468f46bbfebc1f537e2Andrew Sapperstein * Called whenever Cab Mode has been entered via long press or selecting a sender image. 732f542873183b37fa38a0d468f46bbfebc1f537e2Andrew Sapperstein */ 742f542873183b37fa38a0d468f46bbfebc1f537e2Andrew Sapperstein void onCabModeEntered(); 757d257af54aba47ab662e34f0c9faf54d86ebd4a4Andrew Sapperstein 76cc139833bc5829ba70244519e9870de783c41848Scott Kennedy /** 77cc139833bc5829ba70244519e9870de783c41848Scott Kennedy * Called whenever Cab Mode has been exited. 78cc139833bc5829ba70244519e9870de783c41848Scott Kennedy */ 79cc139833bc5829ba70244519e9870de783c41848Scott Kennedy void onCabModeExited(); 80cc139833bc5829ba70244519e9870de783c41848Scott Kennedy 8137a20ca39be842b4b4cb54d5b5ed418d49d950cfVikram Aggarwal /** Returns whether this special view is enabled (= accepts user taps). */ 8237a20ca39be842b4b4cb54d5b5ed418d49d950cfVikram Aggarwal boolean acceptsUserTaps(); 8332ddb84f2d4f53bfc4b53656461068c0c69d6325Scott Kennedy 8432ddb84f2d4f53bfc4b53656461068c0c69d6325Scott Kennedy /** Called when the conversation list's visibility changes */ 8532ddb84f2d4f53bfc4b53656461068c0c69d6325Scott Kennedy void onConversationListVisibilityChanged(boolean visible); 8632ddb84f2d4f53bfc4b53656461068c0c69d6325Scott Kennedy 8732ddb84f2d4f53bfc4b53656461068c0c69d6325Scott Kennedy /** 8832ddb84f2d4f53bfc4b53656461068c0c69d6325Scott Kennedy * Saves any state for the view to the fragment so it will be restored on configuration change 8932ddb84f2d4f53bfc4b53656461068c0c69d6325Scott Kennedy */ 9032ddb84f2d4f53bfc4b53656461068c0c69d6325Scott Kennedy void saveInstanceState(Bundle outState); 917c8325de829ca029ce4547e4f0fa266124301367Scott Kennedy} 92