package com.ringtone.music;
import com.admob.android.ads.AdManager;
import com.admob.android.ads.AdView;
import com.ringdroid.RingdroidSelectActivity;
import com.ringtone.music.R;
import com.ringtone.music.download.DownloadActivity;
import com.ringtone.music.updater.AppUpdater;
import com.ringtone.music.updater.UpdateInfo;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.text.Html;
import android.text.TextUtils;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnKeyListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends Activity {
private SearchBar mSearch;
private static Activity sActivity;
private static boolean sFeedsAndUpdateChecked = false;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
sActivity = this;
Thread.setDefaultUncaughtExceptionHandler(new CustomExceptionHandler(this));
setContentView(R.layout.main);
Utils.addAds(this);
if (!EulaActivity.checkEula(this)) {
return;
}
mSearch = new SearchBar(this);
TextView downloads = (TextView)findViewById(R.id.downloads);
downloads.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, DownloadActivity.class);
startActivity(intent);
}
});
TextView viewMusic = (TextView)findViewById(R.id.music_library);
viewMusic.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
ViewDownloadedActivity.listFiles();
Intent intent = new Intent(MainActivity.this, ViewDownloadedActivity.class);
startActivity(intent);
}
});
TextView ringtone = (TextView)findViewById(R.id.ringtone);
ringtone.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Intent i = new Intent(MainActivity.this, RingdroidSelectActivity.class);
startActivity(i);
}
});
checkFeedsAndUpdate();
}
@Override
protected void onResume() {
super.onResume();
}
@Override
protected Dialog onCreateDialog(int id) {
if (id == Feed.DOWNLOAD_APP_DIG) {
return Feed.createDownloadDialog(this);
}
return null;
}
@Override
protected void onDestroy() {
super.onDestroy();
sActivity = null;
Bookmark.addBookmark(this, getContentResolver());
}
private void checkFeedsAndUpdate() {
if (sFeedsAndUpdateChecked)
return;
sFeedsAndUpdateChecked = true;
if (!Feed.runFeed(this, R.raw.feed)) {
// Check update only when feed is not shown. We don't want to annoy users too much.
checkUpdate();
}
}
private void checkUpdate() {
Utils.D("Checking update");
new CheckUpdateTask().execute();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main_menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.ringtone:
Intent i = new Intent(this, RingdroidSelectActivity.class);
this.startActivity(i);
break;
case R.id.share_app:
String url = AppUpdater.getNewUpdateUrl(this);
if (TextUtils.isEmpty(url)) {
url = "market://search?q=pname:" + getPackageName();
}
StringBuilder sb = new StringBuilder();
final String prefix = "market://search?q=";
if (url.startsWith(prefix)) {
sb.append("<html><body>");
sb.append("Hi,<br><br>I recently found a cool music search app on Android based smartphones and I strongly recommend it. Just search the following in Android Market:<br><br>");
sb.append(url.substring(prefix.length(), url.length()));
sb.append("<br><br>Cheers,<br><br>");
sb.append("</body></html>");
} else {
sb.append("<html><body>");
sb.append("Hi,<br><br>I recently found a cool music search app on Android based smartphones and I strongly recommend it. Just use the following link to download:<br><br>");
sb.append("<a href=\"" + url + "\">" + url + "</a>");
sb.append("<br><br>Cheers,<br><br>");
sb.append("</body></html>");
}
Intent sendIntent = new Intent(Intent.ACTION_SEND);
sendIntent.setType("text/html");
sendIntent.putExtra(Intent.EXTRA_TEXT, Html.fromHtml(sb.toString()));
sendIntent.putExtra(Intent.EXTRA_SUBJECT, getString(R.string.share_email_subject));
sendIntent.setType("message/rfc822");
startActivity(Intent.createChooser(
sendIntent, "Choose an email application:"));
return true;
case R.id.about:
new AlertDialog.Builder(this)
.setTitle(R.string.about)
.setIcon(R.drawable.ic_dialog_info)
.setMessage(VersionUtils.getApplicationName(this) + " v" +
VersionUtils.getVersionNumber(this)).setPositiveButton("Update",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int whichButton) {
String url = AppUpdater.getNewUpdateUrl(getApplication());
if (url != null) {
// Start the new activity
try {
Uri uri = Uri.parse(url);
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
} catch (Exception ex) {
ex.printStackTrace();
}
} else {
Utils.Info(MainActivity.this, "You app is update to date");
}
}
}).setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
}).create().show();
return true;
}
return false;
}
private class CheckUpdateTask extends AsyncTask<Void, Void, UpdateInfo> {
@Override
protected UpdateInfo doInBackground(Void... params) {
return AppUpdater.checkUpdate(getApplication());
}
@Override
protected void onPostExecute(final UpdateInfo update) {
if (update == null)
return;
if (sActivity == null)
return;
new AlertDialog.Builder(sActivity)
.setIcon(R.drawable.alert_dialog_icon)
.setTitle(R.string.updater_dialog_title)
.setMessage(update.getMessage()).setPositiveButton("Download",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int whichButton) {
// Start the new activity
try {
Uri uri = Uri.parse(update.getUrl());
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
} catch (Exception ex) {
ex.printStackTrace();
}
}
}).setNegativeButton("Cancel",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int whichButton) {
}
}).create().show();
}
}
}