/** * Starts a new download with the given DownloadRequest. This method should only be used from * outside classes if the DownloadRequest was created by the DownloadService to ensure that the * data is valid. Use downloadFeed(), downloadImage() or downloadMedia() instead. * * @param context Context object for starting the DownloadService * @param request The DownloadRequest. If another DownloadRequest with the same source URL is * already stored, this method call will return false. * @return True if the download request was accepted, false otherwise. */ public synchronized boolean download(Context context, DownloadRequest request) { Validate.notNull(context); Validate.notNull(request); if (downloads.containsKey(request.getSource())) { if (BuildConfig.DEBUG) Log.i(TAG, "DownloadRequest is already stored."); return false; } downloads.put(request.getSource(), request); Intent launchIntent = new Intent(context, DownloadService.class); launchIntent.putExtra(DownloadService.EXTRA_REQUEST, request); context.startService(launchIntent); EventDistributor.getInstance().sendDownloadQueuedBroadcast(); return true; }
@Override protected void onStop() { super.onStop(); EventDistributor.getInstance().unregister(listener); }
@Override protected void showFeedInformation(final Feed feed, final Map<String, String> alternateFeedUrls) { super.showFeedInformation(feed, alternateFeedUrls); setContentView(R.layout.listview_activity); this.feed = feed; this.selectedDownloadUrl = feed.getDownload_url(); EventDistributor.getInstance().register(listener); ListView listView = (ListView) findViewById(R.id.listview); LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); View header = inflater.inflate(R.layout.onlinefeedview_header, listView, false); listView.addHeaderView(header); listView.setAdapter(new FeedItemlistDescriptionAdapter(this, 0, feed.getItems())); ImageView cover = (ImageView) header.findViewById(R.id.imgvCover); TextView title = (TextView) header.findViewById(R.id.txtvTitle); TextView author = (TextView) header.findViewById(R.id.txtvAuthor); TextView description = (TextView) header.findViewById(R.id.txtvDescription); Spinner spAlternateUrls = (Spinner) header.findViewById(R.id.spinnerAlternateUrls); subscribeButton = (Button) header.findViewById(R.id.butSubscribe); if (feed.getImage() != null && StringUtils.isNotBlank(feed.getImage().getDownload_url())) { Glide.with(this) .load(feed.getImage().getDownload_url()) .placeholder(R.color.light_gray) .error(R.color.light_gray) .diskCacheStrategy(ApGlideSettings.AP_DISK_CACHE_STRATEGY) .fitCenter() .dontAnimate() .into(cover); } title.setText(feed.getTitle()); author.setText(feed.getAuthor()); description.setText(feed.getDescription()); subscribeButton.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { try { Feed f = new Feed(selectedDownloadUrl, new Date(0), feed.getTitle()); f.setPreferences(feed.getPreferences()); DefaultOnlineFeedViewActivity.this.feed = f; DownloadRequester.getInstance().downloadFeed(DefaultOnlineFeedViewActivity.this, f); } catch (DownloadRequestException e) { e.printStackTrace(); DownloadRequestErrorDialogCreator.newRequestErrorDialog( DefaultOnlineFeedViewActivity.this, e.getMessage()); } setSubscribeButtonState(feed); } }); if (alternateFeedUrls.isEmpty()) { spAlternateUrls.setVisibility(View.GONE); } else { spAlternateUrls.setVisibility(View.VISIBLE); final List<String> alternateUrlsList = new ArrayList<String>(); final List<String> alternateUrlsTitleList = new ArrayList<String>(); alternateUrlsList.add(feed.getDownload_url()); alternateUrlsTitleList.add(feed.getTitle()); alternateUrlsList.addAll(alternateFeedUrls.keySet()); for (String url : alternateFeedUrls.keySet()) { alternateUrlsTitleList.add(alternateFeedUrls.get(url)); } ArrayAdapter<String> adapter = new ArrayAdapter<String>( this, android.R.layout.simple_spinner_item, alternateUrlsTitleList); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spAlternateUrls.setAdapter(adapter); spAlternateUrls.setOnItemSelectedListener( new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { selectedDownloadUrl = alternateUrlsList.get(position); } @Override public void onNothingSelected(AdapterView<?> parent) {} }); } setSubscribeButtonState(feed); }