package com.gapp.gvoa;
import java.io.File;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.concurrent.TimeUnit;
import android.app.TabActivity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.widget.TabHost;
import android.widget.TabHost.TabSpec;
import com.gapp.gvoa.datatype.RssItem;
import com.gapp.gvoa.db.DbRssItem;
import com.gapp.gvoa.db.GRSSDbHandler;
import com.gapp.gvoa.ui.GVOASettings;
import com.gapp.gvoa.ui.RssFeedListActivity;
import com.gapp.gvoa.util.GPreference;
import com.gapp.gvoa.util.GvoaUtil;
public class MainActivity extends TabActivity {
private static final String TAG = "MainActivity";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.globalInit();
setTitle(R.string.app_name);
setContentView(R.layout.main_tab);
/* TabHost will have Tabs */
TabHost tabHost = (TabHost)findViewById(android.R.id.tabhost);
tabHost.setup();
/* tid1 is firstTabSpec Id. Its used to access outside. */
TabSpec firstTabSpec = tabHost.newTabSpec("RSS");
TabSpec secondTabSpec = tabHost.newTabSpec("Setting");
firstTabSpec.setIndicator("RSS").setContent(new Intent(this,RssFeedListActivity.class));
secondTabSpec.setIndicator("Setting").setContent(new Intent(this,GVOASettings.class));
/* Add tabSpec to the TabHost to display. */
tabHost.addTab(firstTabSpec);
tabHost.addTab(secondTabSpec);
tabHost.setCurrentTab(0);
}
public void globalInit()
{
//init database
GRSSDbHandler.initInstance(this.getBaseContext());
GPreference.init(this);
this.clearOldCache();
}
private void clearOldCache()
{
int days = GPreference.getPreferredExpireDays();
List<RssItem> rssItemList = DbRssItem.getAllItems(-1);
Date dateNow = new Date();
long nowTime = dateNow.getTime();
for (RssItem item: rssItemList){
SimpleDateFormat fmt =new SimpleDateFormat("yyyy-MM-dd");
try {
Date date1 = fmt.parse(item.getPubDate().trim());
long daysBetween = TimeUnit.MILLISECONDS.toDays(nowTime - date1.getTime());
if(daysBetween >= days)
{
if(item.getLocalmp3()!=null && GvoaUtil.isFileExists(item.getLocalmp3()))
{
File file = new File(item.getLocalmp3());
file.delete();
}
DbRssItem.deleteItem(item);
}
} catch (ParseException e) {
e.printStackTrace();
}
}
String sdRoot=Environment.getExternalStorageDirectory().getPath();
File gvoaDir = new File(sdRoot + "/" +"gvoa");
if(!gvoaDir.exists())
{
return;
}
File[] files = gvoaDir.listFiles();
if (files == null)
return;
for (int i = 0; i < files.length; i++) {
if (!files[i].isDirectory()) {
String fileName = files[i].getName();
if(!fileName.matches("\\d{8}_.*"))
{
Log.i(TAG, "pattern not matched, delete "+fileName);
files[i].delete();
continue;
}
try {
SimpleDateFormat fmt =new SimpleDateFormat("yyyyMMdd");
Date date1 = fmt.parse(fileName.substring(0,8));
long daysBetween = TimeUnit.MILLISECONDS.toDays(nowTime - date1.getTime())+1;
if(daysBetween >= days)
{
Log.i(TAG, "normal delete "+fileName);
files[i].delete();
}
} catch (ParseException e) {
Log.i(TAG, "parse date failed",e);
Log.i(TAG, "exception delete "+fileName);
files[i].delete();
}
}
}
}
}