/* * Copyright (C) 2014 barter.li * * 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 li.barter.activities; import android.os.Bundle; import android.support.v4.app.Fragment; import android.text.TextUtils; import android.view.MenuItem; import li.barter.R; import li.barter.fragments.AbstractBarterLiFragment; import li.barter.fragments.ChatsFragment; import li.barter.http.IBlRequestContract; import li.barter.http.ResponseInfo; import li.barter.utils.AppConstants; /** * Activity that displays a list of chats and take care of swapping between the chats and chat * detail fragments * <p/> * Created by vinay.shenoy on 13/07/14. */ @ActivityTransition(createEnterAnimation = R.anim.slide_in_from_right, createExitAnimation = R.anim.zoom_out, destroyEnterAnimation = R.anim.zoom_in, destroyExitAnimation = R.anim.slide_out_to_right) public class ChatsActivity extends AbstractDrawerActivity { public static final String ACTION_LOAD_CHAT = "li.barter.ACTION_LOAD_CHAT"; /** * User id to load a chat for immediately after loading chats list */ private String mUserIdToLoad; /** * Whether a chat should be loaded instantly */ private boolean mShouldLoadChat; /** * In the case of loading a chat message directly, * the message that should be displayed as soon as it opens */ private String mPrefilledChatMessage; @Override protected void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_drawer); initDrawer(R.id.drawer_layout, isMultipane() ? R.id.frame_side_content : R.id.frame_nav_drawer, isMultipane()); if (savedInstanceState == null) { checkIfShouldLoadChat(); loadChatsListFragment(); } } /** * Checks if a particular chat should be loaded immediately */ private void checkIfShouldLoadChat() { final String action = getIntent().getAction(); if (action != null && action.equals(ACTION_LOAD_CHAT)) { mUserIdToLoad = getIntent().getStringExtra(AppConstants.Keys.USER_ID); if (!TextUtils.isEmpty(mUserIdToLoad)) { mShouldLoadChat = true; mPrefilledChatMessage = getIntent().getStringExtra(AppConstants.Keys.CHAT_MESSAGE); } } } /** * Loads the chats fragment into the screen */ private void loadChatsListFragment() { Bundle args = null; if (mShouldLoadChat) { args = new Bundle(3); args.putBoolean(AppConstants.Keys.LOAD_CHAT, true); args.putString(AppConstants.Keys.USER_ID, mUserIdToLoad); args.putString(AppConstants.Keys.CHAT_MESSAGE, mPrefilledChatMessage); } loadFragment(R.id.frame_content, (AbstractBarterLiFragment) Fragment.instantiate(this, ChatsFragment.class .getName(), args ), AppConstants.FragmentTags.CHATS, false, null ); } @Override public boolean onOptionsItemSelected(final MenuItem item) { if (item.getItemId() == android.R.id.home) { finish(); return true; } else { return super.onOptionsItemSelected(item); } } @Override protected boolean isDrawerActionBarToggleEnabled() { return false; } @Override protected String getAnalyticsScreenName() { return null; } @Override protected Object getTaskTag() { return hashCode(); } @Override public void onSuccess(final int requestId, final IBlRequestContract request, final ResponseInfo response) { } @Override public void onBadRequestError(final int requestId, final IBlRequestContract request, final int errorCode, final String errorMessage, final Bundle errorResponseBundle) { } }