project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/Downloader/DownloadListActivity.java
Hedgeroid improvements:
- Moved frontlib initialization to a slightly better place
- Added new JNA type ByteArrayPtr to move more JNA code into the frontlib
package and to improve pointer type safety
/*
* Hedgewars for Android. An Android port of Hedgewars, a free turn based strategy game
* Copyright (c) 2011-2012 Richard Deurwaarder <xeli@xelification.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package org.hedgewars.hedgeroid.Downloader;
import org.hedgewars.hedgeroid.R;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.view.Gravity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
public class DownloadListActivity extends FragmentActivity implements OnItemMovementListener{
private FrameLayout layout = null;
private LinearLayout downloadQueueContainer = null;
private View infoView = null;
private ImageView arrow = null;
private int halfSize = 0;
private DownloadPackage task = null;
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.download_listactivity);
//FragmentManager fm = this.getSupportFragmentManager();
//if(fm.findFragmentById(android.R.id.content) == null){
// DownloadListFragment listfrag = new DownloadListFragment();
// fm.beginTransaction().add(android.R.id.content, listfrag).commit();
//}
layout = (FrameLayout)findViewById(R.id.downloadFrameLayout);
downloadQueueContainer = (LinearLayout) findViewById(R.id.downloadQueueContainer);
}
public void onNewItemSelected(DownloadPackage _task, int x, int minX, int maxX, int size) {
if(layout != null){
if(!_task.equals(task)){//if it's a new task refresh the whole thing
task = _task;
layout.removeView(infoView);
infoView = null;
}
if(infoView == null){//build iv if it hasn't been created yet
infoView = this.getLayoutInflater().inflate(R.layout.download_info, layout, false);
FrameLayout.LayoutParams params = (android.widget.FrameLayout.LayoutParams) infoView.getLayoutParams();
params.gravity = Gravity.NO_GRAVITY;
params.height = size;
arrow = (ImageView)infoView.findViewById(R.id.arrow);
arrow.setVisibility(View.INVISIBLE);
halfSize = size/2;
Button yes = (Button)infoView.findViewById(R.id.download);
Button no = (Button)infoView.findViewById(R.id.cancel);
yes.setOnClickListener(yesClicker);
no.setOnClickListener(noClicker);
layout.addView(infoView, params);
}
}
}
public void onViewMoved(int x, int minX, int maxX) {
if(halfSize == -1){
if(infoView.getHeight() != 0){
halfSize = infoView.getHeight()/2;
}
}
if(layout != null && infoView != null){
FrameLayout.LayoutParams params = ((FrameLayout.LayoutParams)infoView.getLayoutParams());
if(x - halfSize < minX){
params.topMargin = 0;
arrow.setVisibility(View.INVISIBLE);
params.gravity = Gravity.TOP;
}else if (x + halfSize >= maxX){
params.topMargin = 0;
arrow.setVisibility(View.INVISIBLE);
params.gravity = Gravity.BOTTOM;
}else{
params.topMargin = x - halfSize;
params.gravity = Gravity.NO_GRAVITY;
arrow.setVisibility(View.VISIBLE);
}
infoView.requestLayout();
}
}
private OnClickListener yesClicker = new OnClickListener(){
public void onClick(View v){
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft= fm.beginTransaction();
DownloadFragment df = DownloadFragment.getInstance(task);
ft.add(R.id.downloadQueueContainer, df).commit();
//ft.show(new DownloadFragment());
task = null;
layout.removeView(infoView);
}
};
private OnClickListener noClicker = new OnClickListener(){
public void onClick(View v){
task = null;
layout.removeView(infoView);
}
};
}