Back to project page TuentiTV.
The source code is released under:
Apache License
If you think the Android project TuentiTV listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
/* * Copyright (C) 2014 Pedro Vicente Gmez Snchez. */*from w w w . j a va2 s .co m*/ * 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.github.pedrovgs.tuentitv.presenter; import com.github.pedrovgs.tuentitv.R; import com.github.pedrovgs.tuentitv.model.Accounts; import com.github.pedrovgs.tuentitv.model.Agenda; import com.github.pedrovgs.tuentitv.model.Chat; import com.github.pedrovgs.tuentitv.model.Contact; import com.github.pedrovgs.tuentitv.model.ConversationSummary; import com.github.pedrovgs.tuentitv.model.MediaElement; import com.github.pedrovgs.tuentitv.model.MediaGallery; import com.github.pedrovgs.tuentitv.ui.data.CardInfo; import com.github.pedrovgs.tuentitv.ui.data.IconInfo; import com.github.pedrovgs.tuentitv.ui.data.ImageInfo; import com.github.pedrovgs.tuentitv.ui.navigator.Navigator; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import javax.inject.Inject; /** * Class created to work as main view presenter. This presenter has all the responsibility related * to the main view presentation logic: obtain a list of favorite contacts, obtain a list of recent * conversations, show a list of all user's contacts sorted alphabetically. * * Main collaborators of this class ar Accounts, Agenda, MediaGallery and Chat. Collaborators * needed * to perform all the business/presentation logic related to this view. * * @author Pedro Vicente Gmez Snchez. */ public class MainPresenter { private final Accounts accounts; private final Agenda agenda; private final MediaGallery mediaGallery; private final Chat chat; private final Navigator navigator; private View view; @Inject public MainPresenter(Accounts accounts, Agenda agenda, MediaGallery mediaGallery, Chat chat, Navigator navigator) { this.accounts = accounts; this.agenda = agenda; this.mediaGallery = mediaGallery; this.chat = chat; this.navigator = navigator; } public void setView(View view) { this.view = view; } public void loadData() { view.showDefaultBackground(); List<CardInfo> favorites = getFavoriteContacts(); List<CardInfo> conversations = getConversations(); List<CardInfo> contacts = getAllContacts(); List<ImageInfo> mediaElements = getAllMediaElements(); List<IconInfo> preferences = getPreferences(); view.showMainInformation(favorites, conversations, contacts, mediaElements, preferences); } public void onCardInfoSelected(CardInfo cardInfo) { if (cardInfo != null) { view.updateBackground(cardInfo.getSecondaryImage()); } else { view.showDefaultBackground(); } } public void onCardInfoClicked(CardInfo item) { view.cancelPendingBackgroundUpdates(); navigator.openDetailView(item.getId()); } public void onImageInfoSelected(ImageInfo imageInfo) { if (imageInfo != null) { view.updateBackground(imageInfo.getImageUrl()); } } public void onImageInfoClicked(ImageInfo item) { navigator.openImageView(item.getImageUrl()); } public void onPreferencesSelected() { view.showDefaultBackground(); } public void onSearchIconClicked() { navigator.openSearchView(); } public void logout() { accounts.logout(); navigator.openLoginView(); view.closeView(); } private List<CardInfo> getFavoriteContacts() { List<Contact> favorites = agenda.getFavorites(); return new LinkedList<CardInfo>(favorites); } private List<CardInfo> getConversations() { List<ConversationSummary> conversations = chat.getRecentConversations(); return new ArrayList<CardInfo>(conversations); } private List<CardInfo> getAllContacts() { List<Contact> contacts = agenda.getContacts(); return new ArrayList<CardInfo>(contacts); } private List<ImageInfo> getAllMediaElements() { List<MediaElement> lastMediaElements = mediaGallery.getLatestMediaElements(); return new ArrayList<ImageInfo>(lastMediaElements); } private List<IconInfo> getPreferences() { List<IconInfo> preferences = new LinkedList<IconInfo>(); preferences.add(new IconInfo(R.string.change_pattern, R.drawable.icn_settings_change_pattern)); preferences.add(new IconInfo(R.string.account, R.drawable.icn_settings_account)); preferences.add(new IconInfo(R.string.settings, R.drawable.icn_settings)); preferences.add(new IconInfo(R.string.close_session, R.drawable.icn_settings_log_out)); return preferences; } public interface View { void updateBackground(String imageUrl); void showMainInformation(List<CardInfo> favorites, List<CardInfo> conversations, List<CardInfo> contacts, List<ImageInfo> mediaElements, List<IconInfo> preferences); void showDefaultBackground(); void closeView(); void cancelPendingBackgroundUpdates(); } }