package what.whatandroid.request; import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; import android.support.v4.app.FragmentManager; import android.view.Window; import android.widget.Toast; import api.requests.Request; import api.soup.MySoup; import what.whatandroid.R; import what.whatandroid.announcements.AnnouncementsActivity; import what.whatandroid.artist.ArtistActivity; import what.whatandroid.barcode.BarcodeActivity; import what.whatandroid.bookmarks.BookmarksActivity; import what.whatandroid.callbacks.ViewArtistCallbacks; import what.whatandroid.callbacks.ViewTorrentCallbacks; import what.whatandroid.callbacks.ViewUserCallbacks; import what.whatandroid.forums.ForumActivity; import what.whatandroid.inbox.InboxActivity; import what.whatandroid.login.LoggedInActivity; import what.whatandroid.notifications.NotificationsActivity; import what.whatandroid.profile.ProfileActivity; import what.whatandroid.search.SearchActivity; import what.whatandroid.subscriptions.SubscriptionsActivity; import what.whatandroid.top10.Top10Activity; import what.whatandroid.torrentgroup.TorrentGroupActivity; /** * View information about a request */ public class RequestActivity extends LoggedInActivity implements ViewArtistCallbacks, ViewUserCallbacks, ViewTorrentCallbacks, VoteDialog.VoteDialogListener { /** * Param to pass the request id to be shown */ public final static String REQUEST_ID = "what.whatandroid.REQUEST_ID"; private RequestFragment fragment; @Override protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_frame); setupNavDrawer(); setTitle(getTitle()); FragmentManager manager = getSupportFragmentManager(); int intentId = getIntent().getIntExtra(REQUEST_ID, 1); if (savedInstanceState != null){ fragment = (RequestFragment)manager.findFragmentById(R.id.container); } else { fragment = RequestFragment.newInstance(intentId); manager.beginTransaction().add(R.id.container, fragment).commit(); } } @Override public void onLoggedIn(){ fragment.onLoggedIn(); } @Override public void viewArtist(int id){ Intent intent = new Intent(this, ArtistActivity.class); intent.putExtra(ArtistActivity.ARTIST_ID, id); startActivity(intent); } @Override public void viewUser(int id){ Intent intent = new Intent(this, ProfileActivity.class); intent.putExtra(ProfileActivity.USER_ID, id); startActivity(intent); } @Override public void viewTorrentGroup(int id){ Intent intent = new Intent(this, TorrentGroupActivity.class); intent.putExtra(TorrentGroupActivity.GROUP_ID, id); startActivity(intent); } @Override public void viewTorrent(int group, int torrent){ Intent intent = new Intent(this, TorrentGroupActivity.class); intent.putExtra(TorrentGroupActivity.GROUP_ID, group); intent.putExtra(TorrentGroupActivity.TORRENT_ID, torrent); startActivity(intent); } @Override public void addBounty(int request, long amt){ if (request != -1){ new AddBountyTask().execute(request, amt); } else { Toast.makeText(this, "Invalid request id", Toast.LENGTH_SHORT).show(); } } @Override public void onNavigationDrawerItemSelected(int position){ if (navDrawer == null){ return; } String selection = navDrawer.getItem(position); if (selection.equalsIgnoreCase(getString(R.string.announcements))){ Intent intent = new Intent(this, AnnouncementsActivity.class); intent.putExtra(AnnouncementsActivity.SHOW, AnnouncementsActivity.ANNOUNCEMENTS); startActivity(intent); } else if (selection.equalsIgnoreCase(getString(R.string.profile))){ Intent intent = new Intent(this, ProfileActivity.class); intent.putExtra(ProfileActivity.USER_ID, MySoup.getUserId()); startActivity(intent); } else if (selection.equalsIgnoreCase(getString(R.string.bookmarks))){ Intent intent = new Intent(this, BookmarksActivity.class); startActivity(intent); } else if (selection.contains(getString(R.string.messages))){ Intent intent = new Intent(this, InboxActivity.class); startActivity(intent); } else if (selection.contains(getString(R.string.notifications))){ Intent intent = new Intent(this, NotificationsActivity.class); startActivity(intent); } else if (selection.contains(getString(R.string.subscriptions))){ Intent intent = new Intent(this, SubscriptionsActivity.class); startActivity(intent); } else if (selection.equalsIgnoreCase(getString(R.string.forums))){ Intent intent = new Intent(this, ForumActivity.class); startActivity(intent); } else if (selection.equalsIgnoreCase(getString(R.string.top10))){ Intent intent = new Intent(this, Top10Activity.class); startActivity(intent); } else if (selection.equalsIgnoreCase(getString(R.string.blog))){ Intent intent = new Intent(this, AnnouncementsActivity.class); intent.putExtra(AnnouncementsActivity.SHOW, AnnouncementsActivity.BLOGS); startActivity(intent); } else if (selection.equalsIgnoreCase(getString(R.string.torrents))){ Intent intent = new Intent(this, SearchActivity.class); intent.putExtra(SearchActivity.SEARCH, SearchActivity.TORRENT); startActivity(intent); } else if (selection.equalsIgnoreCase(getString(R.string.artists))){ Intent intent = new Intent(this, SearchActivity.class); intent.putExtra(SearchActivity.SEARCH, SearchActivity.ARTIST); startActivity(intent); } else if (selection.equalsIgnoreCase(getString(R.string.requests))){ Intent intent = new Intent(this, SearchActivity.class); intent.putExtra(SearchActivity.SEARCH, SearchActivity.REQUEST); startActivity(intent); } else if (selection.equalsIgnoreCase(getString(R.string.users))){ Intent intent = new Intent(this, SearchActivity.class); intent.putExtra(SearchActivity.SEARCH, SearchActivity.USER); startActivity(intent); } else if (selection.equalsIgnoreCase(getString(R.string.barcode_lookup))){ Intent intent = new Intent(this, BarcodeActivity.class); startActivity(intent); } } /** * Add bounty to some request. params should be { requestId, voteAmount } */ private class AddBountyTask extends AsyncTask<Number, Void, Boolean> { @Override protected Boolean doInBackground(Number... params){ int id = params[0].intValue(); long amt = params[1].longValue(); return Request.addBounty(id, amt); } @Override protected void onPreExecute(){ setProgressBarIndeterminate(true); setProgressBarIndeterminateVisibility(true); } @Override protected void onPostExecute(Boolean status){ setProgressBarIndeterminate(false); setProgressBarIndeterminateVisibility(false); if (status){ Toast.makeText(RequestActivity.this, "Bounty added", Toast.LENGTH_LONG).show(); fragment.refresh(); } else { Toast.makeText(RequestActivity.this, "Could not add bounty", Toast.LENGTH_LONG).show(); } } } }