package com.jobmineplus.mobile.activities; import android.app.AlertDialog; import android.app.AlertDialog.Builder; import android.content.Context; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.support.v4.*; import com.jobmineplus.mobile.R; import com.jobmineplus.mobile.database.users.UserDataSource; import com.jobmineplus.mobile.services.InterviewsAlarm; import com.jobmineplus.mobile.widgets.DatabaseTask; import com.jobmineplus.mobile.widgets.DatabaseTask.Action; import com.jobmineplus.mobile.widgets.DatabaseTask.IDatabaseTask; import com.jobmineplus.mobile.widgets.JbmnplsHttpClient; public abstract class LoggedInActivityBase extends SimpleActivityBase { private static InterviewsAlarm interviewsAlarm = null; private AlertDialog.Builder aboutDialog; @Override protected void onlineModeChanged(boolean isOnline){ if (!isOnline) { cancelInterviewsAlarm(); } else { startInterviewsAlarm(); } super.onlineModeChanged(isOnline); } @Override protected void onCreate(Bundle arg0) { super.onCreate(arg0); // Setup about dialog aboutDialog = new Builder(this); aboutDialog.setNeutralButton(android.R.string.ok, null); aboutDialog.setTitle(R.string.about_dialog_title); aboutDialog.setMessage(R.string.about_dialog_message); // Setup the interview notifier if (interviewsAlarm == null) { synchronized (this) { if (interviewsAlarm == null) { interviewsAlarm = new InterviewsAlarm(this, arg0); if (preferences.getBoolean("settingsEnableInterCheck", false) && isOnline()) { startInterviewsAlarm(); } } } } } protected void cancelInterviewsAlarm() { interviewsAlarm.cancel(); } protected void startInterviewsAlarm() { int timeoutSec = Integer.parseInt(preferences.getString("settingsCheckFreq", getString(R.string.settings_check_freq_default_value))); interviewsAlarm.scheduleNextAlarm(timeoutSec * 60, client.getUsername(), client.getPassword()); } protected void logout() { client = new JbmnplsHttpClient(); // Going to login, do not let it auto login Intent intent = new Intent(this, LoginActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); intent.putExtra(LoginActivity.DO_AUTO_LOGIN_EXTRA, false); startActivity(intent); // Remove the last user status from the database final Context that = this; new DatabaseTask<Void>(new IDatabaseTask<Void>() { @Override public Void doPutTask() { UserDataSource source = new UserDataSource(that); source.open(); source.clearLastUser(); source.close(); return null; } @Override public Void doGetTask() { return null; } @Override public void finishedTask(Void result, Action action) { } }).executePut(); finish(); } protected int getMenuId() { return R.menu.main_menu; } @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater menuInflater = getMenuInflater(); menuInflater.inflate(getMenuId(), menu); return super.onCreateOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch(item.getItemId()) { case R.id.menuitem_logout: logout(); break; case R.id.menuitem_about: aboutDialog.show(); break; case R.id.menuitem_no_ads: showJbmnplsmblProInMarket(); break; } return super.onOptionsItemSelected(item); } protected void showJbmnplsmblProInMarket() { final String appPackageName = getString(R.string.promo_package_name); try { startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + appPackageName))); } catch (android.content.ActivityNotFoundException anfe) { startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://play.google.com/store/apps/details?id=" + appPackageName))); } } }