package hello.dcsms.omzen.Panel;
import hello.dcsms.omzen.R;
import hello.dcsms.omzen.downloader.Download;
import hello.dcsms.omzen.theme.ThemeKontsran;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.os.Environment;
import android.support.v4.app.FragmentActivity;
import android.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.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import com.facebook.HttpMethod;
import com.facebook.Request;
import com.facebook.Response;
import com.facebook.Session;
import com.facebook.Session.NewPermissionsRequest;
import com.facebook.SessionState;
import com.facebook.model.GraphUser;
public class ONLINE extends FragmentActivity {
private int ol = -1;
private static final ArrayList<String> PERMISSIONS = new ArrayList<String>() {
{
add("user_groups");
add("public_profile");
}
};
private ProgressDialog pdialog;
private String sdcard = Environment.getExternalStorageDirectory() + "/";
private String app_id = "304153656422785";
private String repo = "https://graph.facebook.com/v2.0/317403811760151?fields=files";
Intent intent;
ListView lvtheme;
List<OLTData> oltdatas;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.onlinetheme);
if (savedInstanceState != null) {
ol = savedInstanceState.getInt("oltheme");
}
lvtheme = (ListView) findViewById(R.id.list_theme);
lvtheme.setOnItemClickListener(ItemClick);
Session.openActiveSession(this, true, sessCallback);
getActionBar().setBackgroundDrawable(
getResources().getDrawable(R.drawable.ab_bg));
getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setHomeButtonEnabled(true);
getActionBar().setTitle("");
getActionBar().setSubtitle("");
getActionBar().setLogo(getResources().getDrawable(R.drawable.ic_omzen));
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Session.getActiveSession().onActivityResult(this, requestCode,
resultCode, data);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
finish();
break;
default:
break;
}
return super.onOptionsItemSelected(item);
}
private OnItemClickListener ItemClick = new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> av, View v, int pos, long id) {
final OLTData dd = oltdatas.get(pos);
final String url = dd.getURLTEMA();
AlertDialog.Builder dialog = new AlertDialog.Builder(ONLINE.this);
dialog.setMessage(dd.isDOWNLOADED() ? "Tema ini sudah ada, yakin mau download ulang?"
: "Dengan ini kite donlot themenya.. pastikan kuota cukup. dan baca bismillah");
dialog.setTitle("Mengunduh Tema");
dialog.setNegativeButton("Nope!",
new DialogInterface.OnClickListener() {
@Override
public void onClick(
DialogInterface paramDialogInterface,
int paramInt) {
// TODO Auto-generated method stub
}
});
dialog.setPositiveButton("Yap",
new DialogInterface.OnClickListener() {
@Override
public void onClick(
DialogInterface paramDialogInterface,
int paramInt) {
Download dl = new Download(getApplicationContext());
dl.execute(url, ThemeKontsran.OMZENTHEMEDIR + "/"
+ dd.getNAMATEMA());
}
});
dialog.show();
}
};
private Session.StatusCallback sessCallback = new Session.StatusCallback() {
// callback when session changes state
@Override
public void call(Session session, SessionState state,
Exception exception) {
// make request to the /me API
if (session.isOpened()) {
if (sessionHasNecessaryPerms(session)) {
Bundle d = new Bundle();
d.putString("fields",
"files.limit(100).fields(download_link,from,message,updated_time)");
new Request(session, "317403811760151", d, HttpMethod.GET,
new Request.Callback() {
public void onCompleted(Response response) {
// "data": [
// {
// "download_link":
// "https://www.facebook.com/download/533885603379189/dummyfile.txt",
// "from": {
// "id": "1397987382",
// "name": "Jul Cuih"
// },
// "updated_time":
// "2014-08-06T08:48:53+0000",
// "id": "318092155024650"
// },
oltdatas = new ArrayList<OLTData>();
String jsonStr = response.getRawResponse();
if (jsonStr != null) {
try {
JSONObject j = new JSONObject(
jsonStr);
JSONObject ja = (JSONObject) j
.get("files");
JSONArray jar = ja
.getJSONArray("data");
for (int i = 0; i < jar.length(); i++) {
JSONObject jx = jar
.getJSONObject(i);
String lnk = jx
.getString("download_link");
Log.i("LINK TEMA DEFAULT", lnk);
JSONObject juser = jx
.getJSONObject("from");
String uploader = juser
.getString("name");
OLTData data = new OLTData();
String namatema = lnk.substring(lnk
.lastIndexOf("/") + 1);
if (namatema
.contains(".omztheme")) {
data.setURLTEMA(lnk);
data.setNAMATEMA(namatema);
data.setNAMAUPLOADER(uploader);
data.setDOWNLOADED(cekisdownloaderornot(namatema));
oltdatas.add(data);
}
}
} catch (JSONException e) {
// TODO Auto-generated catch
// block
e.printStackTrace();
}
try {
lvtheme.setAdapter(new OLTAdapter(
ONLINE.this, oltdatas));
} catch (Exception e) {
e.printStackTrace();
}
}
}
}).executeAsync();
Request.newMeRequest(session,
new Request.GraphUserCallback() {
@Override
public void onCompleted(GraphUser user,
Response response) {
if (user != null) {
TextView welcome = (TextView) findViewById(R.id.user);
welcome.setText("Hello "
+ user.getName() + "!");
}
}
}).executeAsync();
} else {
session.requestNewReadPermissions(new NewPermissionsRequest(
ONLINE.this, PERMISSIONS));
}
}
}
};
private boolean cekisdownloaderornot(String string) {
File[] themes = new File(ThemeKontsran.OMZENTHEMEDIR).listFiles();
boolean downloaded = false;
for (File file : themes) {
if (file.getName().endsWith("omztheme")) {
if (file.getName().equals(string))
downloaded = true;
}
}
return downloaded;
}
private boolean sessionHasNecessaryPerms(Session session) {
if (session != null && session.getPermissions() != null) {
for (String requestedPerm : PERMISSIONS) {
if (!session.getPermissions().contains(requestedPerm)) {
return false;
}
}
return true;
}
return false;
}
private class OLTData {
String URLTEMA;
public String getURLTEMA() {
return URLTEMA;
}
public void setURLTEMA(String uRLTEMA) {
URLTEMA = uRLTEMA;
}
String NAMATEMA;
String NAMAUPLOADER;
boolean DOWNLOADED;
public String getNAMATEMA() {
return NAMATEMA;
}
public void setNAMATEMA(String nAMATEMA) {
NAMATEMA = nAMATEMA;
}
public String getNAMAUPLOADER() {
return NAMAUPLOADER;
}
public void setNAMAUPLOADER(String nAMAUPLOADER) {
NAMAUPLOADER = nAMAUPLOADER;
}
public boolean isDOWNLOADED() {
return DOWNLOADED;
}
public void setDOWNLOADED(boolean dOWNLOADED) {
DOWNLOADED = dOWNLOADED;
}
}
private class OLTAdapter extends BaseAdapter {
private Activity activity;
private List<OLTData> data;
LayoutInflater inflater = null;
public OLTAdapter(Activity a, List<OLTData> d) {
activity = a;
data = d;
inflater = (LayoutInflater) activity
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return data.size();
}
@Override
public Object getItem(int paramInt) {
// TODO Auto-generated method stub
return paramInt;
}
@Override
public long getItemId(int paramInt) {
// TODO Auto-generated method stub
return paramInt;
}
@Override
public View getView(int pos, View convertView, ViewGroup paramViewGroup) {
View vi = convertView;
if (convertView == null) {
vi = inflater.inflate(R.layout.ontitem, null);
}
TextView tv_namatema = (TextView) vi
.findViewById(R.id.olt_namatema);
TextView tv_namauploader = (TextView) vi
.findViewById(R.id.olt_uploader);
ImageView donlot = (ImageView) vi.findViewById(R.id.olt_donlot);
OLTData d = data.get(pos);
tv_namatema.setText("Nama Tema : " + d.getNAMATEMA());
tv_namauploader.setText("Uploader : " + d.getNAMAUPLOADER());
donlot.setImageDrawable(d.isDOWNLOADED() ? getApplicationContext()
.getResources().getDrawable(
R.drawable.com_facebook_button_check_on)
: getApplicationContext().getResources().getDrawable(
R.drawable.com_facebook_button_check_off));
return vi;
}
}
}