project_files/Android-build/SDL-android-project/src/org/hedgewars/mobile/Downloader/DownloadActivity.java
author Xeli
Thu, 14 Jul 2011 15:41:26 +0200
branchhedgeroid
changeset 5412 ab055114c788
parent 5397 project_files/Android-build/SDL-android-project/src/org/hedgewars/mobile/DownloadActivity.java@4ae1b082e4ba
child 5621 ea796c83ea47
permissions -rw-r--r--
Moved download classes to their own dir and fixed the way the dest dir is being 'build'
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
5412
ab055114c788 Moved download classes to their own dir and fixed the way the dest dir is being 'build'
Xeli
parents: 5397
diff changeset
     1
package org.hedgewars.mobile.Downloader;
ab055114c788 Moved download classes to their own dir and fixed the way the dest dir is being 'build'
Xeli
parents: 5397
diff changeset
     2
ab055114c788 Moved download classes to their own dir and fixed the way the dest dir is being 'build'
Xeli
parents: 5397
diff changeset
     3
import org.hedgewars.mobile.MainActivity;
ab055114c788 Moved download classes to their own dir and fixed the way the dest dir is being 'build'
Xeli
parents: 5397
diff changeset
     4
import org.hedgewars.mobile.R;
5397
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
     5
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
     6
import android.app.Activity;
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
     7
import android.content.ComponentName;
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
     8
import android.content.Context;
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
     9
import android.content.Intent;
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    10
import android.content.ServiceConnection;
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    11
import android.os.Bundle;
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    12
import android.os.Handler;
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    13
import android.os.IBinder;
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    14
import android.os.Message;
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    15
import android.os.Messenger;
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    16
import android.os.RemoteException;
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    17
import android.view.View;
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    18
import android.view.View.OnClickListener;
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    19
import android.widget.Button;
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    20
import android.widget.ProgressBar;
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    21
import android.widget.TextView;
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    22
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    23
public class DownloadActivity extends Activity{
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    24
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    25
	private Messenger messageService;
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    26
	private boolean boundToService = false;
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    27
	
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    28
	private TextView progress_sub;
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    29
	private ProgressBar progress;
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    30
	private Button positive, negative;
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    31
	
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    32
	public static final int MSG_START = 0;
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    33
	public static final int MSG_UPDATE = 1;
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    34
	public static final int MSG_DONE = 2;
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    35
	private Handler.Callback messageCallback = new Handler.Callback() {
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    36
		
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    37
		@Override
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    38
		public boolean handleMessage(Message msg) {
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    39
			switch(msg.what){
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    40
			case MSG_START:
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    41
				progress.setMax(msg.arg1);
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    42
				progress_sub.setText(String.format("%dkb/%dkb\n%s", 0, msg.arg1, ""));
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    43
				break;
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    44
			case MSG_UPDATE:
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    45
				progress_sub.setText(String.format("%d%% - %dkb/%dkb\n%s",(msg.arg1*100)/msg.arg2, msg.arg1, msg.arg2, msg.obj));
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    46
				progress.setProgress(msg.arg1);
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    47
				break;
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    48
			case MSG_DONE:
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    49
				progress.setProgress(progress.getMax());
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    50
				progress_sub.setText(R.string.download_done);
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    51
				
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    52
				positive.setText(R.string.download_back);
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    53
				positive.setOnClickListener(doneClicker);
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    54
				break;
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    55
			}
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    56
			return false;
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    57
		}
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    58
	};
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    59
	private Handler messageHandler = new Handler(messageCallback);
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    60
	private Messenger messenger = new Messenger(messageHandler);
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    61
	
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    62
	public void onCreate(Bundle savedInstanceState){
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    63
		super.onCreate(savedInstanceState);
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    64
		setContentView(R.layout.download);
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    65
		
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    66
		progress_sub = (TextView)findViewById(R.id.progressbar_sub);
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    67
		progress = (ProgressBar)findViewById(R.id.progressbar);
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    68
		
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    69
		positive = (Button) findViewById(R.id.background);
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    70
		negative = (Button) findViewById(R.id.cancelDownload);
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    71
		positive.setOnClickListener(backgroundClicker);
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    72
		negative.setOnClickListener(cancelClicker);
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    73
		
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    74
	}
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    75
	
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    76
	private OnClickListener backgroundClicker = new OnClickListener(){
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    77
		public void onClick(View v){
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    78
			finish();
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    79
		}
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    80
	};
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    81
	private OnClickListener cancelClicker = new OnClickListener(){
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    82
		public void onClick(View v){
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    83
			Intent i = new Intent(getApplicationContext(), DownloadService.class);
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    84
			i.putExtra("taskID", DownloadService.TASKID_CANCEL);
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    85
			startService(i);
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    86
			finish();
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    87
		}
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    88
	};
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    89
	private OnClickListener doneClicker = new OnClickListener(){
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    90
		public void onClick(View v){
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    91
			finish();
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    92
			startActivity(new Intent(getApplicationContext(), MainActivity.class));
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    93
		}
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    94
	};
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    95
	
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    96
	public void onStart(){
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    97
		super.onStart();
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    98
		bindToService();
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
    99
	}
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
   100
	
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
   101
	public void onStop(){
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
   102
		super.onStop();
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
   103
		unBindFromService();
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
   104
	}
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
   105
	
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
   106
	private ServiceConnection connection = new ServiceConnection(){
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
   107
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
   108
		@Override
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
   109
		public void onServiceConnected(ComponentName name, IBinder service) {
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
   110
			messageService = new Messenger(service);
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
   111
			
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
   112
			try{
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
   113
				Message msg = Message.obtain(null, DownloadService.MSG_REGISTER_CLIENT);
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
   114
				msg.replyTo = messenger;
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
   115
				messageService.send(msg);
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
   116
				
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
   117
			}catch (RemoteException e){}
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
   118
		}
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
   119
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
   120
		@Override
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
   121
		public void onServiceDisconnected(ComponentName name) {
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
   122
			messageService = null;
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
   123
		}
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
   124
		
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
   125
	};
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
   126
	
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
   127
	private void bindToService(){
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
   128
		Intent i = new Intent(getApplicationContext(), DownloadService.class);
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
   129
		i.putExtra("taskID", DownloadService.TASKID_START);
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
   130
		startService(i);
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
   131
		bindService(new Intent(getApplicationContext(), DownloadService.class), connection, Context.BIND_AUTO_CREATE);
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
   132
		boundToService = true;
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
   133
	}
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
   134
	
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
   135
	private void unBindFromService(){
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
   136
		if(boundToService){
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
   137
			boundToService = false;
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
   138
			unbindService(connection);
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
   139
		}	
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
   140
	}
4ae1b082e4ba Added download functionality and changed some icons
Xeli
parents:
diff changeset
   141
}