/**
* JBoss, Home of Professional Open Source
* Copyright Red Hat, Inc., and individual contributors
* by the @authors tag. See the copyright.txt in the distribution for a
* full listing of individual contributors.
*
* 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 org.jboss.aerogear.todo.activities;
import org.jboss.aerogear.android.Callback;
import org.jboss.aerogear.todo.R;
import org.jboss.aerogear.todo.ToDoApplication;
import org.jboss.aerogear.todo.callback.LogoutCallback;
import org.jboss.aerogear.todo.data.Project;
import org.jboss.aerogear.todo.data.Tag;
import org.jboss.aerogear.todo.data.Task;
import org.jboss.aerogear.todo.fragments.ProjectFormFragment;
import org.jboss.aerogear.todo.fragments.ProjectListFragment;
import org.jboss.aerogear.todo.fragments.TagFormFragment;
import org.jboss.aerogear.todo.fragments.TagListFragment;
import org.jboss.aerogear.todo.fragments.TaskFormFragment;
import org.jboss.aerogear.todo.fragments.TaskListFragment;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import com.actionbarsherlock.app.SherlockFragmentActivity;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuItem;
/**
* @author <a href="mailto:marko.strukelj@gmail.com">Marko Strukelj</a>
*/
public class TodoActivity extends SherlockFragmentActivity {
private FragmentTransaction fragmentTransaction;
public enum Lists {TASK, TAG, PROJECT};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.todo);
if (savedInstanceState == null) {
fragmentTransaction = getSupportFragmentManager()
.beginTransaction();
if (isTablet()) {
fragmentTransaction.replace(R.id.project,
new ProjectListFragment()).replace(R.id.tag,
new TagListFragment()).replace(R.id.task,
new TaskListFragment());
} else {
fragmentTransaction.replace(R.id.todo, new TaskListFragment());
}
fragmentTransaction.commit();
}
}
private boolean isTablet() {
return getResources().getBoolean(R.bool.isTablet);
}
public boolean onCreateOptionsMenu(Menu menu) {
if (!isTablet()) {
getSupportMenuInflater().inflate(R.menu.todo, menu);
} else {
getSupportMenuInflater().inflate(R.menu.logout, menu);
}
return super.onCreateOptionsMenu(menu);
}
public boolean onMenuItemSelected(int featureId, MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_item_project :
showList(Lists.PROJECT);
break;
case R.id.menu_item_tag :
showList(Lists.TAG);
break;
case R.id.menu_item_task :
showList(Lists.TASK);
break;
case R.id.menu_logout :
((ToDoApplication) getApplication())
.logout(this, new LogoutCallback());
break;
}
return super.onMenuItemSelected(featureId, item);
}
public void showProjectForm() {
transaction(R.id.project, new ProjectFormFragment());
}
public void showProjectForm(Project project) {
transaction(R.id.project, new ProjectFormFragment(project));
}
public void showList(Lists list) {
switch (list) {
case PROJECT:
transaction(R.id.project, new ProjectListFragment());
break;
case TASK:
transaction(R.id.task, new TaskListFragment());
break;
case TAG:
transaction(R.id.tag, new TagListFragment());
break;
default:
break;
}
}
public void showTagForm() {
transaction(R.id.tag, new TagFormFragment());
}
public void showTagForm(Tag tag) {
transaction(R.id.tag, new TagFormFragment(tag));
}
public void showTaskForm() {
transaction(R.id.task, new TaskFormFragment());
}
public void showTaskForm(Task task) {
transaction(R.id.task, new TaskFormFragment(task));
}
private void transaction(int tabletFragmentId, Fragment fragment) {
fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.setCustomAnimations(android.R.anim.slide_in_left,
android.R.anim.slide_out_right, android.R.anim.slide_in_left,
android.R.anim.slide_out_right);
if (isTablet()) {
fragmentTransaction.replace(tabletFragmentId, fragment);
} else {
fragmentTransaction.replace(R.id.todo, fragment);
}
fragmentTransaction.commit();
}
}