Files
EhViewer/src/com/hippo/ehviewer/activity/FavouriteActivity.java
T

243 lines
8.5 KiB
Java

package com.hippo.ehviewer.activity;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Intent;
import android.content.res.Configuration;
import android.os.Build;
import android.os.Bundle;
import com.hippo.ehviewer.util.Log;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.Toast;
import com.hippo.ehviewer.AppContext;
import com.hippo.ehviewer.BeautifyScreen;
import com.hippo.ehviewer.GalleryInfo;
import com.hippo.ehviewer.ImageLoadManager;
import com.hippo.ehviewer.R;
import com.hippo.ehviewer.data.Data;
import com.hippo.ehviewer.service.DownloadService;
import com.hippo.ehviewer.service.DownloadServiceConnection;
import com.hippo.ehviewer.util.Cache;
import com.hippo.ehviewer.util.Config;
import com.hippo.ehviewer.util.EhClient;
import com.hippo.ehviewer.util.Ui;
import com.hippo.ehviewer.view.AlertButton;
import com.hippo.ehviewer.view.OlImageView;
import com.hippo.ehviewer.widget.DialogBuilder;
import com.hippo.ehviewer.widget.LoadImageView;
public class FavouriteActivity extends Activity{
private static final String TAG = "FavouriteActivity";
private AppContext mAppContext;
private Data mData;
private FlAdapter flAdapter;
private List<GalleryInfo> mFavouriteLmd;
private int longClickItemIndex;
private ImageLoadManager mImageLoadManager;
private DownloadServiceConnection mServiceConn = new DownloadServiceConnection();
// List item long click dialog
private AlertDialog longClickDialog;
private AlertDialog setLongClickDialog() {
return new DialogBuilder(this).setTitle(R.string.what_to_do)
.setItems(R.array.favourite_item_long_click, new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1,
int position, long arg3) {
switch (position) {
case 0: // Remove favourite item
mData.deleteLocalFavourite(mFavouriteLmd.get(longClickItemIndex).gid);
flAdapter.notifyDataSetChanged();
break;
case 1:
GalleryInfo lmd = mFavouriteLmd.get(longClickItemIndex);
Intent it = new Intent(FavouriteActivity.this, DownloadService.class);
startService(it);
mServiceConn.getService().add(lmd.gid, lmd.thumb,
EhClient.detailHeader + lmd.gid + "/" + lmd.token, lmd.title);
Toast.makeText(FavouriteActivity.this,
getString(R.string.toast_add_download),
Toast.LENGTH_SHORT).show();
break;
default:
break;
}
longClickDialog.cancel();
}
}).setNegativeButton(android.R.string.cancel, new View.OnClickListener() {
@Override
public void onClick(View v) {
((AlertButton)v).dialog.dismiss();
}
}).create();
}
private class FlAdapter extends BaseAdapter {
private LayoutInflater mInflater;
public FlAdapter() {
mInflater = LayoutInflater.from(FavouriteActivity.this);
}
@Override
public int getCount() {
return mFavouriteLmd.size();
}
@Override
public Object getItem(int arg0) {
return mFavouriteLmd.get(arg0);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
GalleryInfo lmd= mFavouriteLmd.get(position);
if (convertView == null)
convertView = mInflater.inflate(R.layout.list_item, null);
LoadImageView thumb = (LoadImageView)convertView.findViewById(R.id.cover);
if (!lmd.gid.equals(thumb.getKey())) {
thumb.setLoadInfo(lmd.thumb, lmd.gid);
mImageLoadManager.add(thumb, true);
// Set manga name
TextView name = (TextView) convertView.findViewById(R.id.name);
name.setText(lmd.title);
// Set Tpye
ImageView type = (ImageView) convertView.findViewById(R.id.type);
Ui.setType(type, lmd.category);
// Add star
LinearLayout rate = (LinearLayout) convertView
.findViewById(R.id.rate);
Ui.addStar(rate, lmd.rating);
}
return convertView;
}
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (Build.VERSION.SDK_INT >= 19) {
BeautifyScreen.fixColour(this);
}
}
@Override
protected void onResume() {
super.onResume();
int screenOri = Config.getScreenOriMode();
if (screenOri != getRequestedOrientation())
setRequestedOrientation(screenOri);
if (flAdapter != null)
flAdapter.notifyDataSetChanged();
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.favourite);
mAppContext = (AppContext)getApplication();
mData = mAppContext.getData();
int screenOri = Config.getScreenOriMode();
if (screenOri != getRequestedOrientation())
setRequestedOrientation(screenOri);
// Download service
Intent it = new Intent(FavouriteActivity.this, DownloadService.class);
bindService(it, mServiceConn, BIND_AUTO_CREATE);
longClickDialog = setLongClickDialog();
mImageLoadManager = new ImageLoadManager(getApplicationContext(), Cache.memoryCache, Cache.cpCache);
getActionBar().setDisplayHomeAsUpEnabled(true);
// For colourfy the activity
if (Build.VERSION.SDK_INT >= 19) {
BeautifyScreen.ColourfyScreen(this);
}
mFavouriteLmd = mData.getAllLocalFavourites();
ListView listView = (ListView)findViewById(R.id.favourite);
flAdapter = new FlAdapter();
listView.setAdapter(flAdapter);
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1,
int position, long arg3) {
Intent intent = new Intent(FavouriteActivity.this,
MangaDetailActivity.class);
GalleryInfo gi = mFavouriteLmd.get(position);
intent.putExtra("url", EhClient.detailHeader + gi.gid + "/" + gi.token);
intent.putExtra(MangaDetailActivity.KEY_G_INFO, gi);
startActivity(intent);
}
});
listView.setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
int position, long arg3) {
longClickItemIndex = position;
longClickDialog.show();
return true;
}
});
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle item selection
switch (item.getItemId()) {
case android.R.id.home:
finish();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
@Override
protected void onDestroy() {
super.onDestroy();
unbindService(mServiceConn);
}
public void buttonListItemCancel(View v) {
longClickDialog.cancel();
}
}