package com.sgxp.asgmt1.assignment;
import android.app.Activity;
import android.app.DownloadManager;
import android.app.DownloadManager.Query;
import android.app.DownloadManager.Request;
import android.app.LoaderManager.LoaderCallbacks;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.CursorLoader;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.Loader;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.CursorAdapter;
import android.widget.ListView;
import android.widget.PopupWindow;
import android.widget.Toast;
import com.group.studyproject.R;
import com.sgxp.asgmt1.customadapter.CustomAdapter;
import com.sgxp.asgmt1.provider.ItunesRssDb;
import com.sgxp.asgmt1.provider.MyContentProvider;
import com.sgxp.asgmt1.quickaction.ActionItem;
import com.sgxp.asgmt1.quickaction.QuickAction;
public class MainActivity extends Activity implements LoaderCallbacks<Cursor>{
private static int LOADER = 0x01;
ListView listview;
CustomAdapter sca;
private static final int ID_DL_IMG = 1;
private static final int ID_GOTO_WEB = 2;
private static final int ID_DL_PRW = 3;
private long enqueue;
private DownloadManager dm;
BroadcastReceiver receiver;
String sImage_55;
String sImage_60;
String sImage_170;
String sTitle;
String sGenre;
String sReleasedate;
String sPrice;
String sAlbum;
String sCompany;
String sWebLink;
String sPreview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.asgmt1_main_activity);
receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (DownloadManager.ACTION_DOWNLOAD_COMPLETE.equals(action)) {
long downloadId = intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, 0);
Query query = new Query();
query.setFilterById(enqueue);
Cursor c = dm.query(query);
if (c.moveToFirst()) {
int columnIndex = c
.getColumnIndex(DownloadManager.COLUMN_STATUS);
if (DownloadManager.STATUS_SUCCESSFUL == c
.getInt(columnIndex)) {
Toast.makeText(MainActivity.this, "Download Successful", Toast.LENGTH_SHORT).show();
}
}
}
}
};
registerReceiver(receiver, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));
listview = (ListView) findViewById(R.id.listview);
/**
* Custom quickAction menu code.
* */
final QuickAction mQuickAction = new QuickAction(this);
ActionItem addItem = new ActionItem(ID_DL_IMG, "Dload Img", getResources().getDrawable(R.drawable.asgmt1_ic_add));
ActionItem acceptItem = new ActionItem(ID_GOTO_WEB, "Goto webPage", getResources().getDrawable(R.drawable.asgmt1_ic_accept));
ActionItem uploadItem = new ActionItem(ID_DL_PRW, "Dload Preview", getResources().getDrawable(R.drawable.asgmt1_ic_up));
mQuickAction.addActionItem(addItem);
mQuickAction.addActionItem(acceptItem);
mQuickAction.addActionItem(uploadItem);
//setup the action item click listener
mQuickAction.setOnActionItemClickListener(new QuickAction.OnActionItemClickListener() {
@Override
public void onItemClick(QuickAction quickAction, int pos, int actionId) {
ActionItem actionItem = quickAction.getActionItem(pos);
switch (actionId) {
case ID_DL_IMG:{
Toast.makeText(getApplicationContext(), "Downloading Image ... " , Toast.LENGTH_SHORT).show();
dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
Request request = new Request(Uri.parse(sImage_170));
enqueue = dm.enqueue(request);
}
break;
case ID_DL_PRW:{
Toast.makeText(getApplicationContext(), "Downloading Preview ... " , Toast.LENGTH_SHORT).show();
dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
Toast.makeText(MainActivity.this, "Preview Link: "+sPreview, Toast.LENGTH_LONG).show();
Request request = new Request(Uri.parse(sPreview));
enqueue = dm.enqueue(request);
}
break;
case ID_GOTO_WEB:
Intent i = new Intent(MainActivity.this, MainWebActivity.class);
i.putExtra("address", sWebLink);
startActivity(i);
break;
default:
break;
}
}
});
//setup on dismiss listener, set the icon back to normal
mQuickAction.setOnDismissListener(new PopupWindow.OnDismissListener() {
@Override
public void onDismiss() {
}
});
String[] from = {
};
int[] to ={
};
sca = new CustomAdapter(getApplicationContext(), R.layout.asgmt1_list_item, null, from, to, CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);
listview.setAdapter(sca);
listview.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if(sca.items!=null && !sca.items.isClosed())
if(sca.items.moveToPosition(position)){
sImage_55 = sca.items.getString(sca.items.getColumnIndex(ItunesRssDb.Top40Table.IMAGE_LINK_55));
sImage_60 = sca.items.getString(sca.items.getColumnIndex(ItunesRssDb.Top40Table.IMAGE_LINK_60));
sImage_170 = sca.items.getString(sca.items.getColumnIndex(ItunesRssDb.Top40Table.IMAGE_LINK_170));
sTitle = sca.items.getString(sca.items.getColumnIndex(ItunesRssDb.Top40Table.ENTRY_TITLE));
sGenre = sca.items.getString(sca.items.getColumnIndex(ItunesRssDb.Top40Table.ENTRY_GENRE));
sReleasedate = sca.items.getString(sca.items.getColumnIndex(ItunesRssDb.Top40Table.RELEASEDATE));
sPrice = sca.items.getString(sca.items.getColumnIndex(ItunesRssDb.Top40Table.ENTRY_PRICE));
sAlbum = sca.items.getString(sca.items.getColumnIndex(ItunesRssDb.Top40Table.ENTRY_NAME));
sCompany = sca.items.getString(sca.items.getColumnIndex(ItunesRssDb.Top40Table.COPYRIGHT));
sPreview = sca.items.getString(sca.items.getColumnIndex(ItunesRssDb.Top40Table.ENTRY_PREVIEW_LINK));
sWebLink = sca.items.getString(sca.items.getColumnIndex(ItunesRssDb.Top40Table.ITUNE_MAIN_LINK));
Toast.makeText(MainActivity.this, sTitle, Toast.LENGTH_SHORT).show();
mQuickAction.show(view);
}
}
});
getLoaderManager().restartLoader(LOADER, null, this);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_settings:
if(sca!=null){
if(sca.imageLoader!=null)
sca.imageLoader.clearCache();
sca.notifyDataSetChanged();
}
break;
case R.id.goto_download:
Intent i = new Intent();
i.setAction(DownloadManager.ACTION_VIEW_DOWNLOADS);
startActivity(i);
break;
case R.id.try_rss_again:
Intent i2 = new Intent(this, MainIntentService.class);
startService(i2);
break;
}
return true;
}
@Override
protected void onDestroy() {
listview.setAdapter(null);
unregisterReceiver(receiver);
super.onDestroy();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.asgmt1_main, menu);
return true;
}
/**
* Loader Manager code
* */
@Override
public Loader<Cursor> onCreateLoader(int arg0, Bundle arg1) {
String[] projection = {
ItunesRssDb.Top40Table._ID,
ItunesRssDb.Top40Table.ITUNE_ID,
ItunesRssDb.Top40Table.ITUNE_MAIN_LINK,
ItunesRssDb.Top40Table.ENTRY_TITLE,
ItunesRssDb.Top40Table.ENTRY_NAME,
ItunesRssDb.Top40Table.ENTRY_LINK,
ItunesRssDb.Top40Table.ENTRY_GENRE,
ItunesRssDb.Top40Table.ENTRY_PREVIEW_LINK,
ItunesRssDb.Top40Table.ARTIST_BIO_LINK,
ItunesRssDb.Top40Table.ARTIST_NAME,
ItunesRssDb.Top40Table.ENTRY_PRICE,
ItunesRssDb.Top40Table.IMAGE_LINK_55,
ItunesRssDb.Top40Table.IMAGE_LINK_60,
ItunesRssDb.Top40Table.IMAGE_LINK_170,
ItunesRssDb.Top40Table.COPYRIGHT,
ItunesRssDb.Top40Table.RELEASEDATE
};
CursorLoader cursorLoader = new CursorLoader(this,
MyContentProvider.TOP_40_URI, projection, null, null, null);
return cursorLoader;
}
@Override
public void onLoadFinished(android.content.Loader<Cursor> arg0, Cursor cursor) {
sca.swapCursor(cursor);
}
@Override
public void onLoaderReset(android.content.Loader<Cursor> arg0) {
sca.swapCursor(null);
}
}