/*
* Copyright (C) 2014 Pedro Vicente Gómez Sánchez.
*
* 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.ui.navigator;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import com.github.pedrovgs.tuentitv.di.ActivityContext;
import com.github.pedrovgs.tuentitv.ui.activity.DetailActivity;
import com.github.pedrovgs.tuentitv.ui.activity.EnterPasswordActivity;
import com.github.pedrovgs.tuentitv.ui.activity.LoadingActivity;
import com.github.pedrovgs.tuentitv.ui.activity.LoginActivity;
import com.github.pedrovgs.tuentitv.ui.activity.MainActivity;
import com.github.pedrovgs.tuentitv.ui.activity.SearchActivity;
import com.github.pedrovgs.tuentitv.ui.activity.ShowImageActivity;
import javax.inject.Inject;
/**
* Class created to implement Application navigation based on activities as is explained in
* https://github.com/pedrovgs/EffectiveAndroidUI sample project.
*
* @author Pedro Vicente Gómez Sánchez.
*/
public class Navigator {
private final Activity context;
@Inject public Navigator(@ActivityContext Context context) {
this.context = (Activity) context;
}
public void openMainView() {
Intent intent = generateBaseIntent(MainActivity.class);
startActivity(intent);
}
public void openLoadingView() {
Intent intent = generateBaseIntent(LoadingActivity.class);
startActivity(intent);
}
public void startPasswordViewAndWaitForResult(int requestCode) {
Intent intent = generateBaseIntent(EnterPasswordActivity.class);
context.startActivityForResult(intent, requestCode);
}
public void openSearchView() {
Intent intent = generateBaseIntent(SearchActivity.class);
startActivity(intent);
}
public void openLoginView() {
Intent intent = generateBaseIntent(LoginActivity.class);
startActivity(intent);
}
public void openDetailView(String id) {
Intent intent = generateBaseIntent(DetailActivity.class);
intent.putExtra(DetailActivity.ID_EXTRA, id);
startActivity(intent);
}
public void openImageView(String imageUrl) {
Intent intent = generateBaseIntent(ShowImageActivity.class);
intent.putExtra(ShowImageActivity.IMAGE_URL_EXTRA, imageUrl);
startActivity(intent);
}
private Intent generateBaseIntent(Class clazz) {
return new Intent(context, clazz);
}
private void startActivity(Intent intent) {
context.startActivity(intent);
}
}