blob: 4beb610ee0f38b77774dfc6bdba96048d9bcd1ef [file] [log] [blame]
/*
* Copyright (C) 2010 The Android Open Source Project
*
* 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.android.videoeditor;
import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ListView;
import android.widget.TextView;
/**
* Activity that lists all transition effects for user to choose.
*/
public class TransitionsActivity extends ListActivity {
// Input transition category
public static final String PARAM_AFTER_MEDIA_ITEM_ID = "media_item_id";
public static final String PARAM_TRANSITION_ID = "transition_id";
public static final String PARAM_MINIMUM_DURATION = "min_duration";
public static final String PARAM_DEFAULT_DURATION = "default_duration";
public static final String PARAM_MAXIMUM_DURATION = "max_duration";
// Increment transition duration in milliseconds
private static final long INCREMENT_TRANSITION = 100;
// Output transition type
public static final String PARAM_TRANSITION_TYPE = "transition";
public static final String PARAM_TRANSITION_DURATION = "duration";
// State keys
private static final String STATE_KEY_TRANSITION_DURATION = "duration";
// Instance variables
private TextView mTransitionDurationView;
private View mTransitionLeftBtn, mTransitionRightBtn;
private TransitionsAdapter mAdapter;
private long mMinTransitionDurationMs, mMaxTransitionDurationMs, mTransitionDurationMs;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.transition_list_view);
setFinishOnTouchOutside(true);
mTransitionDurationView = (TextView)findViewById(R.id.transition_duration);
mTransitionLeftBtn = findViewById(R.id.duration_left);
mTransitionRightBtn = findViewById(R.id.duration_right);
mMinTransitionDurationMs = getIntent().getLongExtra(PARAM_MINIMUM_DURATION, 0);
mMinTransitionDurationMs = (mMinTransitionDurationMs / INCREMENT_TRANSITION) *
INCREMENT_TRANSITION;
mMaxTransitionDurationMs = getIntent().getLongExtra(PARAM_MAXIMUM_DURATION, 0);
mMaxTransitionDurationMs = (mMaxTransitionDurationMs / INCREMENT_TRANSITION) *
INCREMENT_TRANSITION;
if (savedInstanceState == null) {
mTransitionDurationMs = getIntent().getLongExtra(PARAM_DEFAULT_DURATION, 0);
} else {
mTransitionDurationMs = savedInstanceState.getLong(STATE_KEY_TRANSITION_DURATION);
}
mTransitionDurationMs = (mTransitionDurationMs / INCREMENT_TRANSITION) *
INCREMENT_TRANSITION;
updateTransitionDuration();
// Create the list adapter
mAdapter = new TransitionsAdapter(this, getListView());
setListAdapter(mAdapter);
final int transitionType = getIntent().getIntExtra(PARAM_TRANSITION_TYPE, -1);
if (transitionType >= 0) {
// Select the current transition
final TransitionType[] transitions = mAdapter.getTransitions();
for (int i = 0; i < transitions.length; i++) {
if (transitions[i].getType() == transitionType) {
setSelection(i);
break;
}
}
}
}
@Override
public void onPause() {
super.onPause();
if (mAdapter != null) {
mAdapter.onPause();
}
}
@Override
public void onDestroy() {
super.onDestroy();
if (mAdapter != null) {
mAdapter.onDestroy();
mAdapter = null;
}
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putLong(STATE_KEY_TRANSITION_DURATION, mTransitionDurationMs);
}
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
final Intent extras = new Intent();
extras.putExtra(PARAM_TRANSITION_TYPE,
((TransitionType)mAdapter.getItem(position)).getType());
extras.putExtra(PARAM_AFTER_MEDIA_ITEM_ID,
getIntent().getStringExtra(PARAM_AFTER_MEDIA_ITEM_ID));
extras.putExtra(PARAM_TRANSITION_ID,
getIntent().getStringExtra(PARAM_TRANSITION_ID));
extras.putExtra(PARAM_TRANSITION_DURATION, mTransitionDurationMs);
setResult(RESULT_OK, extras);
finish();
}
public void onClickHandler(View target) {
switch (target.getId()) {
case R.id.duration_left: {
if (mTransitionDurationMs > mMinTransitionDurationMs) {
mTransitionDurationMs -= INCREMENT_TRANSITION;
updateTransitionDuration();
}
break;
}
case R.id.duration_right: {
if (mTransitionDurationMs < mMaxTransitionDurationMs) {
mTransitionDurationMs += INCREMENT_TRANSITION;
updateTransitionDuration();
}
break;
}
default: {
break;
}
}
}
@Override
public boolean onSearchRequested() {
return false;
}
/**
* Updates the transition duration and the state of the buttons.
*/
private void updateTransitionDuration() {
mTransitionDurationView.setText(getString(R.string.transitions_duration,
(((float)mTransitionDurationMs) / 1000)));
mTransitionLeftBtn.setEnabled(mTransitionDurationMs > mMinTransitionDurationMs);
mTransitionRightBtn.setEnabled(mTransitionDurationMs < mMaxTransitionDurationMs);
}
}