diff options
Diffstat (limited to 'src/de/danoeh/antennapod/activity')
26 files changed, 280 insertions, 212 deletions
diff --git a/src/de/danoeh/antennapod/activity/AddFeedActivity.java b/src/de/danoeh/antennapod/activity/AddFeedActivity.java index 44486b5ef..39434fa87 100644 --- a/src/de/danoeh/antennapod/activity/AddFeedActivity.java +++ b/src/de/danoeh/antennapod/activity/AddFeedActivity.java @@ -18,9 +18,9 @@ import com.actionbarsherlock.view.Menu; import com.actionbarsherlock.view.MenuItem; import de.danoeh.antennapod.AppConfig; -import de.danoeh.antennapod.PodcastApp; import de.danoeh.antennapod.R; import de.danoeh.antennapod.feed.Feed; +import de.danoeh.antennapod.preferences.UserPreferences; import de.danoeh.antennapod.storage.DownloadRequestException; import de.danoeh.antennapod.storage.DownloadRequester; import de.danoeh.antennapod.util.ConnectionTester; @@ -44,7 +44,7 @@ public class AddFeedActivity extends SherlockActivity { @Override protected void onCreate(Bundle savedInstanceState) { - setTheme(PodcastApp.getThemeResourceId()); + setTheme(UserPreferences.getTheme()); super.onCreate(savedInstanceState); getSupportActionBar().setDisplayHomeAsUpEnabled(true); StorageUtils.checkStorageAvailability(this); diff --git a/src/de/danoeh/antennapod/activity/AudioplayerActivity.java b/src/de/danoeh/antennapod/activity/AudioplayerActivity.java index 48b09b92b..3e38d7b5c 100644 --- a/src/de/danoeh/antennapod/activity/AudioplayerActivity.java +++ b/src/de/danoeh/antennapod/activity/AudioplayerActivity.java @@ -1,5 +1,7 @@ package de.danoeh.antennapod.activity; +import java.io.File; + import android.content.Intent; import android.content.res.TypedArray; import android.os.Bundle; @@ -20,13 +22,15 @@ import com.actionbarsherlock.view.Window; import de.danoeh.antennapod.AppConfig; import de.danoeh.antennapod.R; import de.danoeh.antennapod.adapter.ChapterListAdapter; -import de.danoeh.antennapod.asynctask.FeedImageLoader; +import de.danoeh.antennapod.asynctask.ImageLoader; import de.danoeh.antennapod.feed.Chapter; -import de.danoeh.antennapod.feed.FeedMedia; +import de.danoeh.antennapod.feed.MediaType; import de.danoeh.antennapod.feed.SimpleChapter; import de.danoeh.antennapod.fragment.CoverFragment; import de.danoeh.antennapod.fragment.ItemDescriptionFragment; import de.danoeh.antennapod.service.PlaybackService; +import de.danoeh.antennapod.util.playback.ExternalMedia; +import de.danoeh.antennapod.util.playback.Playable; /** Activity for playing audio files. */ public class AudioplayerActivity extends MediaplayerActivity { @@ -71,10 +75,32 @@ public class AudioplayerActivity extends MediaplayerActivity { protected void onCreate(Bundle savedInstanceState) { requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); super.onCreate(savedInstanceState); + getSupportActionBar().setDisplayShowTitleEnabled(false); detachedFragments = new Fragment[NUM_CONTENT_FRAGMENTS]; } @Override + protected void onResume() { + super.onResume(); + if (getIntent().getAction() != null + && getIntent().getAction().equals(Intent.ACTION_VIEW)) { + Intent intent = getIntent(); + if (AppConfig.DEBUG) + Log.d(TAG, "Received VIEW intent: " + + intent.getData().getPath()); + ExternalMedia media = new ExternalMedia(intent.getData().getPath(), MediaType.AUDIO); + Intent launchIntent = new Intent(this, PlaybackService.class); + launchIntent.putExtra(PlaybackService.EXTRA_PLAYABLE, media); + launchIntent.putExtra(PlaybackService.EXTRA_START_WHEN_PREPARED, + true); + launchIntent.putExtra(PlaybackService.EXTRA_SHOULD_STREAM, false); + launchIntent.putExtra(PlaybackService.EXTRA_PREPARE_IMMEDIATELY, + true); + startService(launchIntent); + } + } + + @Override protected void onAwaitingVideoSurface() { startActivity(new Intent(this, VideoplayerActivity.class)); } @@ -101,7 +127,7 @@ public class AudioplayerActivity extends MediaplayerActivity { if (AppConfig.DEBUG) Log.d(TAG, "Switching contentView to position " + pos); if (currentlyShownPosition != pos) { - FeedMedia media = controller.getMedia(); + Playable media = controller.getMedia(); if (media != null) { FragmentTransaction ft = getSupportFragmentManager() .beginTransaction(); @@ -113,15 +139,14 @@ public class AudioplayerActivity extends MediaplayerActivity { case POS_COVER: if (coverFragment == null) { Log.i(TAG, "Using new coverfragment"); - coverFragment = CoverFragment.newInstance(media - .getItem()); + coverFragment = CoverFragment.newInstance(media); } currentlyShownFragment = coverFragment; break; case POS_DESCR: if (descriptionFragment == null) { descriptionFragment = ItemDescriptionFragment - .newInstance(media.getItem()); + .newInstance(media); } currentlyShownFragment = descriptionFragment; break; @@ -140,7 +165,7 @@ public class AudioplayerActivity extends MediaplayerActivity { }; chapterFragment.setListAdapter(new ChapterListAdapter( - AudioplayerActivity.this, 0, media.getItem() + AudioplayerActivity.this, 0, media .getChapters(), media)); } currentlyShownFragment = chapterFragment; @@ -167,7 +192,7 @@ public class AudioplayerActivity extends MediaplayerActivity { private void updateNavButtonDrawable() { TypedArray drawables = obtainStyledAttributes(new int[] { R.attr.navigation_shownotes, R.attr.navigation_chapters }); - final FeedMedia media = controller.getMedia(); + final Playable media = controller.getMedia(); if (butNavLeft != null && butNavRight != null && media != null) { switch (currentlyShownPosition) { case POS_COVER: @@ -181,9 +206,8 @@ public class AudioplayerActivity extends MediaplayerActivity { @Override public void run() { - FeedImageLoader.getInstance().loadThumbnailBitmap( - media.getItem().getFeed().getImage(), - butNavLeft); + ImageLoader.getInstance().loadThumbnailBitmap( + media.getImageFileUrl(), butNavLeft); } }); butNavRight.setImageDrawable(drawables.getDrawable(1)); @@ -194,9 +218,8 @@ public class AudioplayerActivity extends MediaplayerActivity { @Override public void run() { - FeedImageLoader.getInstance().loadThumbnailBitmap( - media.getItem().getFeed().getImage(), - butNavLeft); + ImageLoader.getInstance().loadThumbnailBitmap( + media.getImageFileUrl(), butNavLeft); } }); butNavRight.setImageDrawable(drawables.getDrawable(0)); @@ -251,11 +274,11 @@ public class AudioplayerActivity extends MediaplayerActivity { @Override protected void loadMediaInfo() { super.loadMediaInfo(); - final FeedMedia media = controller.getMedia(); + final Playable media = controller.getMedia(); if (media != null) { - txtvTitle.setText(media.getItem().getTitle()); - txtvFeed.setText(media.getItem().getFeed().getTitle()); - if (media.getItem().getChapters() != null) { + txtvTitle.setText(media.getEpisodeTitle()); + txtvFeed.setText(media.getFeedTitle()); + if (media.getChapters() != null) { butNavRight.setVisibility(View.VISIBLE); } else { butNavRight.setVisibility(View.GONE); @@ -302,7 +325,7 @@ public class AudioplayerActivity extends MediaplayerActivity { } public interface AudioplayerContentFragment { - public void onDataSetChanged(FeedMedia media); + public void onDataSetChanged(Playable media); } } diff --git a/src/de/danoeh/antennapod/activity/DirectoryChooserActivity.java b/src/de/danoeh/antennapod/activity/DirectoryChooserActivity.java index 6e1163508..54c4f0589 100644 --- a/src/de/danoeh/antennapod/activity/DirectoryChooserActivity.java +++ b/src/de/danoeh/antennapod/activity/DirectoryChooserActivity.java @@ -30,8 +30,8 @@ import com.actionbarsherlock.view.MenuInflater; import com.actionbarsherlock.view.MenuItem; import de.danoeh.antennapod.AppConfig; -import de.danoeh.antennapod.PodcastApp; import de.danoeh.antennapod.R; +import de.danoeh.antennapod.preferences.UserPreferences; /** * Let's the user choose a directory on the storage device. The selected folder @@ -61,7 +61,7 @@ public class DirectoryChooserActivity extends SherlockActivity { @Override protected void onCreate(Bundle savedInstanceState) { - setTheme(PodcastApp.getThemeResourceId()); + setTheme(UserPreferences.getTheme()); super.onCreate(savedInstanceState); getSupportActionBar().setDisplayHomeAsUpEnabled(true); diff --git a/src/de/danoeh/antennapod/activity/DownloadActivity.java b/src/de/danoeh/antennapod/activity/DownloadActivity.java index 0c10abefd..10ebb1285 100644 --- a/src/de/danoeh/antennapod/activity/DownloadActivity.java +++ b/src/de/danoeh/antennapod/activity/DownloadActivity.java @@ -22,10 +22,10 @@ import com.actionbarsherlock.view.Menu; import com.actionbarsherlock.view.MenuItem; import de.danoeh.antennapod.AppConfig; -import de.danoeh.antennapod.PodcastApp; import de.danoeh.antennapod.R; import de.danoeh.antennapod.adapter.DownloadlistAdapter; import de.danoeh.antennapod.asynctask.DownloadStatus; +import de.danoeh.antennapod.preferences.UserPreferences; import de.danoeh.antennapod.service.download.DownloadService; import de.danoeh.antennapod.storage.DownloadRequester; @@ -52,7 +52,7 @@ public class DownloadActivity extends SherlockListActivity implements @Override protected void onCreate(Bundle savedInstanceState) { - setTheme(PodcastApp.getThemeResourceId()); + setTheme(UserPreferences.getTheme()); super.onCreate(savedInstanceState); if (AppConfig.DEBUG) Log.d(TAG, "Creating Activity"); diff --git a/src/de/danoeh/antennapod/activity/DownloadLogActivity.java b/src/de/danoeh/antennapod/activity/DownloadLogActivity.java index 45d31cda9..232a7ba1d 100644 --- a/src/de/danoeh/antennapod/activity/DownloadLogActivity.java +++ b/src/de/danoeh/antennapod/activity/DownloadLogActivity.java @@ -1,18 +1,15 @@ package de.danoeh.antennapod.activity; -import android.content.BroadcastReceiver; -import android.content.Context; -import android.content.Intent; -import android.content.IntentFilter; import android.os.Bundle; import com.actionbarsherlock.app.SherlockListActivity; import com.actionbarsherlock.view.Menu; import com.actionbarsherlock.view.MenuItem; -import de.danoeh.antennapod.PodcastApp; import de.danoeh.antennapod.adapter.DownloadLogAdapter; +import de.danoeh.antennapod.feed.EventDistributor; import de.danoeh.antennapod.feed.FeedManager; +import de.danoeh.antennapod.preferences.UserPreferences; /** * Displays completed and failed downloads in a list. The data comes from the @@ -26,11 +23,11 @@ public class DownloadLogActivity extends SherlockListActivity { @Override protected void onCreate(Bundle savedInstanceState) { - setTheme(PodcastApp.getThemeResourceId()); + setTheme(UserPreferences.getTheme()); super.onCreate(savedInstanceState); manager = FeedManager.getInstance(); - dla = new DownloadLogAdapter(this, 0, manager.getDownloadLog()); + dla = new DownloadLogAdapter(this); getSupportActionBar().setDisplayHomeAsUpEnabled(true); setListAdapter(dla); } @@ -38,14 +35,13 @@ public class DownloadLogActivity extends SherlockListActivity { @Override protected void onPause() { super.onPause(); - unregisterReceiver(contentUpdate); + EventDistributor.getInstance().unregister(contentUpdate); } @Override protected void onResume() { super.onResume(); - registerReceiver(contentUpdate, new IntentFilter( - FeedManager.ACTION_DOWNLOADLOG_UPDATE)); + EventDistributor.getInstance().register(contentUpdate); dla.notifyDataSetChanged(); } @@ -66,12 +62,11 @@ public class DownloadLogActivity extends SherlockListActivity { return true; } - private BroadcastReceiver contentUpdate = new BroadcastReceiver() { - + private EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() { + @Override - public void onReceive(Context context, Intent intent) { - if (intent.getAction() - .equals(FeedManager.ACTION_DOWNLOADLOG_UPDATE)) { + public void update(EventDistributor eventDistributor, Integer arg) { + if ((arg & EventDistributor.DOWNLOADLOG_UPDATE) != 0) { dla.notifyDataSetChanged(); } } diff --git a/src/de/danoeh/antennapod/activity/FeedInfoActivity.java b/src/de/danoeh/antennapod/activity/FeedInfoActivity.java index 0ff1d7c1c..c57a5794b 100644 --- a/src/de/danoeh/antennapod/activity/FeedInfoActivity.java +++ b/src/de/danoeh/antennapod/activity/FeedInfoActivity.java @@ -11,12 +11,12 @@ import com.actionbarsherlock.view.MenuInflater; import com.actionbarsherlock.view.MenuItem; import de.danoeh.antennapod.AppConfig; -import de.danoeh.antennapod.PodcastApp; import de.danoeh.antennapod.R; -import de.danoeh.antennapod.asynctask.FeedImageLoader; +import de.danoeh.antennapod.asynctask.ImageLoader; import de.danoeh.antennapod.dialog.DownloadRequestErrorDialogCreator; import de.danoeh.antennapod.feed.Feed; import de.danoeh.antennapod.feed.FeedManager; +import de.danoeh.antennapod.preferences.UserPreferences; import de.danoeh.antennapod.storage.DownloadRequestException; import de.danoeh.antennapod.util.LangUtils; import de.danoeh.antennapod.util.menuhandler.FeedMenuHandler; @@ -37,7 +37,7 @@ public class FeedInfoActivity extends SherlockActivity { @Override protected void onCreate(Bundle savedInstanceState) { - setTheme(PodcastApp.getThemeResourceId()); + setTheme(UserPreferences.getTheme()); super.onCreate(savedInstanceState); setContentView(R.layout.feedinfo); getSupportActionBar().setDisplayHomeAsUpEnabled(true); @@ -58,7 +58,7 @@ public class FeedInfoActivity extends SherlockActivity { @Override public void run() { - FeedImageLoader.getInstance().loadThumbnailBitmap( + ImageLoader.getInstance().loadThumbnailBitmap( feed.getImage(), imgvCover); } }); diff --git a/src/de/danoeh/antennapod/activity/FeedItemlistActivity.java b/src/de/danoeh/antennapod/activity/FeedItemlistActivity.java index 1be29ddbe..fdca48e8a 100644 --- a/src/de/danoeh/antennapod/activity/FeedItemlistActivity.java +++ b/src/de/danoeh/antennapod/activity/FeedItemlistActivity.java @@ -15,7 +15,6 @@ import com.actionbarsherlock.view.MenuInflater; import com.actionbarsherlock.view.MenuItem; import com.actionbarsherlock.view.Window; -import de.danoeh.antennapod.PodcastApp; import de.danoeh.antennapod.R; import de.danoeh.antennapod.asynctask.FeedRemover; import de.danoeh.antennapod.dialog.ConfirmationDialog; @@ -25,6 +24,7 @@ import de.danoeh.antennapod.feed.FeedManager; import de.danoeh.antennapod.fragment.ExternalPlayerFragment; import de.danoeh.antennapod.fragment.FeedlistFragment; import de.danoeh.antennapod.fragment.ItemlistFragment; +import de.danoeh.antennapod.preferences.UserPreferences; import de.danoeh.antennapod.storage.DownloadRequestException; import de.danoeh.antennapod.util.StorageUtils; import de.danoeh.antennapod.util.menuhandler.FeedMenuHandler; @@ -42,7 +42,7 @@ public class FeedItemlistActivity extends SherlockFragmentActivity { @Override public void onCreate(Bundle savedInstanceState) { - setTheme(PodcastApp.getThemeResourceId()); + setTheme(UserPreferences.getTheme()); super.onCreate(savedInstanceState); StorageUtils.checkStorageAvailability(this); requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); diff --git a/src/de/danoeh/antennapod/activity/FlattrAuthActivity.java b/src/de/danoeh/antennapod/activity/FlattrAuthActivity.java index b78b37afa..75e513816 100644 --- a/src/de/danoeh/antennapod/activity/FlattrAuthActivity.java +++ b/src/de/danoeh/antennapod/activity/FlattrAuthActivity.java @@ -17,8 +17,8 @@ import com.actionbarsherlock.view.Menu; import com.actionbarsherlock.view.MenuItem; import de.danoeh.antennapod.AppConfig; -import de.danoeh.antennapod.PodcastApp; import de.danoeh.antennapod.R; +import de.danoeh.antennapod.preferences.UserPreferences; import de.danoeh.antennapod.util.flattr.FlattrUtils; /** Guides the user through the authentication process */ @@ -36,7 +36,7 @@ public class FlattrAuthActivity extends SherlockActivity { @Override protected void onCreate(Bundle savedInstanceState) { - setTheme(PodcastApp.getThemeResourceId()); + setTheme(UserPreferences.getTheme()); super.onCreate(savedInstanceState); singleton = this; authSuccessful = false; diff --git a/src/de/danoeh/antennapod/activity/ItemviewActivity.java b/src/de/danoeh/antennapod/activity/ItemviewActivity.java index 668cb3a28..63dcb78f1 100644 --- a/src/de/danoeh/antennapod/activity/ItemviewActivity.java +++ b/src/de/danoeh/antennapod/activity/ItemviewActivity.java @@ -16,7 +16,6 @@ import com.actionbarsherlock.view.MenuItem; import com.actionbarsherlock.view.Window; import de.danoeh.antennapod.AppConfig; -import de.danoeh.antennapod.PodcastApp; import de.danoeh.antennapod.R; import de.danoeh.antennapod.dialog.DownloadRequestErrorDialogCreator; import de.danoeh.antennapod.feed.Feed; @@ -25,6 +24,7 @@ import de.danoeh.antennapod.feed.FeedManager; import de.danoeh.antennapod.fragment.FeedlistFragment; import de.danoeh.antennapod.fragment.ItemDescriptionFragment; import de.danoeh.antennapod.fragment.ItemlistFragment; +import de.danoeh.antennapod.preferences.UserPreferences; import de.danoeh.antennapod.storage.DownloadRequestException; import de.danoeh.antennapod.util.StorageUtils; import de.danoeh.antennapod.util.menuhandler.FeedItemMenuHandler; @@ -42,7 +42,7 @@ public class ItemviewActivity extends SherlockFragmentActivity { @Override public void onCreate(Bundle savedInstanceState) { - setTheme(PodcastApp.getThemeResourceId()); + setTheme(UserPreferences.getTheme()); super.onCreate(savedInstanceState); StorageUtils.checkStorageAvailability(this); manager = FeedManager.getInstance(); diff --git a/src/de/danoeh/antennapod/activity/MainActivity.java b/src/de/danoeh/antennapod/activity/MainActivity.java index 67d7424b6..0ec66ff35 100644 --- a/src/de/danoeh/antennapod/activity/MainActivity.java +++ b/src/de/danoeh/antennapod/activity/MainActivity.java @@ -1,9 +1,7 @@ package de.danoeh.antennapod.activity; -import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; -import android.content.IntentFilter; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; @@ -20,12 +18,13 @@ import com.actionbarsherlock.view.Window; import com.viewpagerindicator.TabPageIndicator; import de.danoeh.antennapod.AppConfig; -import de.danoeh.antennapod.PodcastApp; import de.danoeh.antennapod.R; +import de.danoeh.antennapod.feed.EventDistributor; import de.danoeh.antennapod.feed.FeedManager; import de.danoeh.antennapod.fragment.EpisodesFragment; import de.danoeh.antennapod.fragment.ExternalPlayerFragment; import de.danoeh.antennapod.fragment.FeedlistFragment; +import de.danoeh.antennapod.preferences.UserPreferences; import de.danoeh.antennapod.service.PlaybackService; import de.danoeh.antennapod.service.download.DownloadService; import de.danoeh.antennapod.storage.DownloadRequester; @@ -35,6 +34,9 @@ import de.danoeh.antennapod.util.StorageUtils; public class MainActivity extends SherlockFragmentActivity { private static final String TAG = "MainActivity"; + private static final int EVENTS = EventDistributor.DOWNLOAD_HANDLED + | EventDistributor.DOWNLOAD_QUEUED; + private FeedManager manager; private ViewPager viewpager; private MainPagerAdapter pagerAdapter; @@ -45,7 +47,7 @@ public class MainActivity extends SherlockFragmentActivity { @Override public void onCreate(Bundle savedInstanceState) { - setTheme(PodcastApp.getThemeResourceId()); + setTheme(UserPreferences.getTheme()); super.onCreate(savedInstanceState); StorageUtils.checkStorageAvailability(this); manager = FeedManager.getInstance(); @@ -69,7 +71,7 @@ public class MainActivity extends SherlockFragmentActivity { if (!appLaunched && getIntent().getAction() != null && getIntent().getAction().equals(Intent.ACTION_MAIN)) { appLaunched = true; - if (manager.getUnreadItems().size() > 0) { + if (manager.getUnreadItemsSize(true) > 0) { viewpager.setCurrentItem(MainPagerAdapter.POS_EPISODES); } @@ -79,7 +81,7 @@ public class MainActivity extends SherlockFragmentActivity { @Override protected void onPause() { super.onPause(); - unregisterReceiver(contentUpdate); + EventDistributor.getInstance().unregister(contentUpdate); } @Override @@ -87,18 +89,19 @@ public class MainActivity extends SherlockFragmentActivity { super.onResume(); StorageUtils.checkStorageAvailability(this); updateProgressBarVisibility(); - IntentFilter filter = new IntentFilter(); - filter.addAction(DownloadService.ACTION_DOWNLOAD_HANDLED); - filter.addAction(DownloadRequester.ACTION_DOWNLOAD_QUEUED); - registerReceiver(contentUpdate, filter); + EventDistributor.getInstance().register(contentUpdate); + } - private BroadcastReceiver contentUpdate = new BroadcastReceiver() { + private EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() { + @Override - public void onReceive(Context context, Intent intent) { - if (AppConfig.DEBUG) - Log.d(TAG, "Received contentUpdate Intent."); - updateProgressBarVisibility(); + public void update(EventDistributor eventDistributor, Integer arg) { + if ((EVENTS & arg) != 0) { + if (AppConfig.DEBUG) + Log.d(TAG, "Received contentUpdate Intent."); + updateProgressBarVisibility(); + } } }; @@ -109,7 +112,7 @@ public class MainActivity extends SherlockFragmentActivity { } else { setSupportProgressBarIndeterminateVisibility(false); } - invalidateOptionsMenu(); + supportInvalidateOptionsMenu(); } @Override @@ -151,7 +154,7 @@ public class MainActivity extends SherlockFragmentActivity { refreshAll.setVisible(true); } - boolean hasFeeds = !manager.getFeeds().isEmpty(); + boolean hasFeeds = manager.getFeedsSize() > 0; menu.findItem(R.id.all_feed_refresh).setVisible(hasFeeds); return true; } diff --git a/src/de/danoeh/antennapod/activity/MediaplayerActivity.java b/src/de/danoeh/antennapod/activity/MediaplayerActivity.java index 952cddf8b..c217a4628 100644 --- a/src/de/danoeh/antennapod/activity/MediaplayerActivity.java +++ b/src/de/danoeh/antennapod/activity/MediaplayerActivity.java @@ -5,6 +5,7 @@ import android.content.DialogInterface; import android.content.Intent; import android.content.res.Configuration; import android.graphics.PixelFormat; +import android.net.Uri; import android.os.Bundle; import android.util.Log; import android.widget.ImageButton; @@ -18,19 +19,18 @@ import com.actionbarsherlock.view.MenuInflater; import com.actionbarsherlock.view.MenuItem; import de.danoeh.antennapod.AppConfig; -import de.danoeh.antennapod.PodcastApp; import de.danoeh.antennapod.R; -import de.danoeh.antennapod.dialog.DownloadRequestErrorDialogCreator; +import de.danoeh.antennapod.asynctask.FlattrClickWorker; import de.danoeh.antennapod.dialog.TimeDialog; import de.danoeh.antennapod.feed.FeedManager; -import de.danoeh.antennapod.feed.FeedMedia; +import de.danoeh.antennapod.preferences.UserPreferences; import de.danoeh.antennapod.service.PlaybackService; -import de.danoeh.antennapod.storage.DownloadRequestException; import de.danoeh.antennapod.util.Converter; -import de.danoeh.antennapod.util.MediaPlayerError; -import de.danoeh.antennapod.util.PlaybackController; +import de.danoeh.antennapod.util.ShareUtils; import de.danoeh.antennapod.util.StorageUtils; -import de.danoeh.antennapod.util.menuhandler.FeedItemMenuHandler; +import de.danoeh.antennapod.util.playback.MediaPlayerError; +import de.danoeh.antennapod.util.playback.Playable; +import de.danoeh.antennapod.util.playback.PlaybackController; /** * Provides general features which are both needed for playing audio and video @@ -91,7 +91,7 @@ public abstract class MediaplayerActivity extends SherlockFragmentActivity @Override public void onSleepTimerUpdate() { - invalidateOptionsMenu(); + supportInvalidateOptionsMenu(); } @Override @@ -133,12 +133,12 @@ public abstract class MediaplayerActivity extends SherlockFragmentActivity } protected void onServiceQueried() { - invalidateOptionsMenu(); + supportInvalidateOptionsMenu(); } @Override protected void onCreate(Bundle savedInstanceState) { - setTheme(PodcastApp.getThemeResourceId()); + setTheme(UserPreferences.getTheme()); super.onCreate(savedInstanceState); if (AppConfig.DEBUG) Log.d(TAG, "Creating Activity"); @@ -219,14 +219,14 @@ public abstract class MediaplayerActivity extends SherlockFragmentActivity @Override public boolean onPrepareOptionsMenu(Menu menu) { - FeedMedia media = controller.getMedia(); + Playable media = controller.getMedia(); menu.findItem(R.id.support_item).setVisible( - media != null && media.getItem().getPaymentLink() != null); + media != null && media.getPaymentLink() != null); menu.findItem(R.id.share_link_item).setVisible( - media != null && media.getItem().getLink() != null); + media != null && media.getWebsiteLink() != null); menu.findItem(R.id.visit_website_item).setVisible( - media != null && media.getItem().getLink() != null); + media != null && media.getWebsiteLink() != null); boolean sleepTimerSet = controller.sleepTimerActive(); boolean sleepTimerNotSet = controller.sleepTimerNotActive(); @@ -237,69 +237,80 @@ public abstract class MediaplayerActivity extends SherlockFragmentActivity @Override public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case android.R.id.home: + Playable media = controller.getMedia(); + if (item.getItemId() == android.R.id.home) { Intent intent = new Intent(MediaplayerActivity.this, MainActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); - break; - case R.id.disable_sleeptimer_item: - if (controller.serviceAvailable()) { - AlertDialog.Builder stDialog = new AlertDialog.Builder(this); - stDialog.setTitle(R.string.sleep_timer_label); - stDialog.setMessage(getString(R.string.time_left_label) - + Converter.getDurationStringLong((int) controller - .getSleepTimerTimeLeft())); - stDialog.setPositiveButton(R.string.disable_sleeptimer_label, - new DialogInterface.OnClickListener() { - - @Override - public void onClick(DialogInterface dialog, - int which) { - dialog.dismiss(); - controller.disableSleepTimer(); - } - }); - stDialog.setNegativeButton(R.string.cancel_label, - new DialogInterface.OnClickListener() { - - @Override - public void onClick(DialogInterface dialog, - int which) { - dialog.dismiss(); - } - }); - stDialog.create().show(); - } - break; - case R.id.set_sleeptimer_item: - if (controller.serviceAvailable()) { - TimeDialog td = new TimeDialog(this, - R.string.set_sleeptimer_label, - R.string.set_sleeptimer_label) { - - @Override - public void onTimeEntered(long millis) { - controller.setSleepTimer(millis); - } - }; - td.show(); + return true; + } else if (media != null) { + switch (item.getItemId()) { + case R.id.disable_sleeptimer_item: + if (controller.serviceAvailable()) { + AlertDialog.Builder stDialog = new AlertDialog.Builder(this); + stDialog.setTitle(R.string.sleep_timer_label); + stDialog.setMessage(getString(R.string.time_left_label) + + Converter.getDurationStringLong((int) controller + .getSleepTimerTimeLeft())); + stDialog.setPositiveButton( + R.string.disable_sleeptimer_label, + new DialogInterface.OnClickListener() { + + @Override + public void onClick(DialogInterface dialog, + int which) { + dialog.dismiss(); + controller.disableSleepTimer(); + } + }); + stDialog.setNegativeButton(R.string.cancel_label, + new DialogInterface.OnClickListener() { + + @Override + public void onClick(DialogInterface dialog, + int which) { + dialog.dismiss(); + } + }); + stDialog.create().show(); + } + break; + case R.id.set_sleeptimer_item: + if (controller.serviceAvailable()) { + TimeDialog td = new TimeDialog(this, + R.string.set_sleeptimer_label, + R.string.set_sleeptimer_label) { + + @Override + public void onTimeEntered(long millis) { + controller.setSleepTimer(millis); + } + }; + td.show(); + break; + + } + case R.id.visit_website_item: + Uri uri = Uri.parse(media.getWebsiteLink()); + startActivity(new Intent(Intent.ACTION_VIEW, uri)); break; + case R.id.support_item: + new FlattrClickWorker(this, media.getPaymentLink()) + .executeAsync(); + break; + case R.id.share_link_item: + ShareUtils.shareLink(this, media.getWebsiteLink()); + break; + default: + return false; } - default: - try { - return FeedItemMenuHandler.onMenuItemClicked(this, item.getItemId(), - controller.getMedia().getItem()); - } catch (DownloadRequestException e) { - e.printStackTrace(); - DownloadRequestErrorDialogCreator.newRequestErrorDialog(this, - e.getMessage()); - } + return true; + } else { + return false; } - return true; } @Override @@ -363,7 +374,7 @@ public abstract class MediaplayerActivity extends SherlockFragmentActivity protected void loadMediaInfo() { if (AppConfig.DEBUG) Log.d(TAG, "Loading media info"); - FeedMedia media = controller.getMedia(); + Playable media = controller.getMedia(); if (media != null) { txtvPosition.setText(Converter.getDurationStringLong((media .getPosition()))); diff --git a/src/de/danoeh/antennapod/activity/MiroGuideCategoryActivity.java b/src/de/danoeh/antennapod/activity/MiroGuideCategoryActivity.java index 7a765a893..bb50944cc 100644 --- a/src/de/danoeh/antennapod/activity/MiroGuideCategoryActivity.java +++ b/src/de/danoeh/antennapod/activity/MiroGuideCategoryActivity.java @@ -12,9 +12,9 @@ import com.actionbarsherlock.view.Menu; import com.actionbarsherlock.view.MenuItem; import com.viewpagerindicator.TabPageIndicator; -import de.danoeh.antennapod.PodcastApp; import de.danoeh.antennapod.R; import de.danoeh.antennapod.fragment.MiroGuideChannellistFragment; +import de.danoeh.antennapod.preferences.UserPreferences; /** * Shows channels of a category sorted by different criteria in lists. The @@ -34,7 +34,7 @@ public class MiroGuideCategoryActivity extends SherlockFragmentActivity { @Override protected void onCreate(Bundle arg0) { - setTheme(PodcastApp.getThemeResourceId()); + setTheme(UserPreferences.getTheme()); super.onCreate(arg0); getSupportActionBar().setDisplayHomeAsUpEnabled(true); setContentView(R.layout.miroguide_category); diff --git a/src/de/danoeh/antennapod/activity/MiroGuideChannelViewActivity.java b/src/de/danoeh/antennapod/activity/MiroGuideChannelViewActivity.java index 05d346bb4..f9fe912cd 100644 --- a/src/de/danoeh/antennapod/activity/MiroGuideChannelViewActivity.java +++ b/src/de/danoeh/antennapod/activity/MiroGuideChannelViewActivity.java @@ -21,7 +21,6 @@ import com.actionbarsherlock.view.MenuInflater; import com.actionbarsherlock.view.MenuItem; import de.danoeh.antennapod.AppConfig; -import de.danoeh.antennapod.PodcastApp; import de.danoeh.antennapod.R; import de.danoeh.antennapod.adapter.MiroGuideItemlistAdapter; import de.danoeh.antennapod.dialog.DownloadRequestErrorDialogCreator; @@ -30,6 +29,7 @@ import de.danoeh.antennapod.feed.FeedManager; import de.danoeh.antennapod.miroguide.conn.MiroGuideException; import de.danoeh.antennapod.miroguide.conn.MiroGuideService; import de.danoeh.antennapod.miroguide.model.MiroGuideChannel; +import de.danoeh.antennapod.preferences.UserPreferences; import de.danoeh.antennapod.storage.DownloadRequestException; import de.danoeh.antennapod.storage.DownloadRequester; @@ -62,7 +62,7 @@ public class MiroGuideChannelViewActivity extends SherlockActivity { @SuppressLint("NewApi") @Override protected void onCreate(Bundle savedInstanceState) { - setTheme(PodcastApp.getThemeResourceId()); + setTheme(UserPreferences.getTheme()); super.onCreate(savedInstanceState); getSupportActionBar().setDisplayHomeAsUpEnabled(true); setContentView(R.layout.miroguide_channelview); diff --git a/src/de/danoeh/antennapod/activity/MiroGuideMainActivity.java b/src/de/danoeh/antennapod/activity/MiroGuideMainActivity.java index 6dcb1bdca..8b33ef1da 100644 --- a/src/de/danoeh/antennapod/activity/MiroGuideMainActivity.java +++ b/src/de/danoeh/antennapod/activity/MiroGuideMainActivity.java @@ -15,10 +15,10 @@ import com.actionbarsherlock.view.Menu; import com.actionbarsherlock.view.MenuItem; import de.danoeh.antennapod.AppConfig; -import de.danoeh.antennapod.PodcastApp; import de.danoeh.antennapod.R; import de.danoeh.antennapod.miroguide.conn.MiroGuideException; import de.danoeh.antennapod.miroguide.conn.MiroGuideService; +import de.danoeh.antennapod.preferences.UserPreferences; /** * Shows a list of available categories and offers a search button. If the user @@ -34,7 +34,7 @@ public class MiroGuideMainActivity extends SherlockListActivity { @Override protected void onCreate(Bundle savedInstanceState) { - setTheme(PodcastApp.getThemeResourceId()); + setTheme(UserPreferences.getTheme()); super.onCreate(savedInstanceState); getSupportActionBar().setDisplayHomeAsUpEnabled(true); setContentView(R.layout.miroguide_categorylist); diff --git a/src/de/danoeh/antennapod/activity/MiroGuideSearchActivity.java b/src/de/danoeh/antennapod/activity/MiroGuideSearchActivity.java index 2943339ad..a30777fb1 100644 --- a/src/de/danoeh/antennapod/activity/MiroGuideSearchActivity.java +++ b/src/de/danoeh/antennapod/activity/MiroGuideSearchActivity.java @@ -11,9 +11,9 @@ import com.actionbarsherlock.view.Menu; import com.actionbarsherlock.view.MenuItem; import de.danoeh.antennapod.AppConfig; -import de.danoeh.antennapod.PodcastApp; import de.danoeh.antennapod.R; import de.danoeh.antennapod.fragment.MiroGuideChannellistFragment; +import de.danoeh.antennapod.preferences.UserPreferences; /** * Displays results when a search for miroguide channels has been performed. It @@ -26,7 +26,7 @@ public class MiroGuideSearchActivity extends SherlockFragmentActivity { @Override protected void onCreate(Bundle arg0) { - setTheme(PodcastApp.getThemeResourceId()); + setTheme(UserPreferences.getTheme()); super.onCreate(arg0); getSupportActionBar().setDisplayHomeAsUpEnabled(true); setContentView(R.layout.miroguidesearch); diff --git a/src/de/danoeh/antennapod/activity/OpmlFeedChooserActivity.java b/src/de/danoeh/antennapod/activity/OpmlFeedChooserActivity.java index 2301d2f0f..9ba355baf 100644 --- a/src/de/danoeh/antennapod/activity/OpmlFeedChooserActivity.java +++ b/src/de/danoeh/antennapod/activity/OpmlFeedChooserActivity.java @@ -16,9 +16,9 @@ import com.actionbarsherlock.app.SherlockActivity; import com.actionbarsherlock.view.Menu; import com.actionbarsherlock.view.MenuItem; -import de.danoeh.antennapod.PodcastApp; import de.danoeh.antennapod.R; import de.danoeh.antennapod.opml.OpmlElement; +import de.danoeh.antennapod.preferences.UserPreferences; /** * Displays the feeds that the OPML-Importer has read and lets the user choose @@ -36,7 +36,7 @@ public class OpmlFeedChooserActivity extends SherlockActivity { @Override protected void onCreate(Bundle savedInstanceState) { - setTheme(PodcastApp.getThemeResourceId()); + setTheme(UserPreferences.getTheme()); super.onCreate(savedInstanceState); setContentView(R.layout.opml_selection); diff --git a/src/de/danoeh/antennapod/activity/OpmlImportBaseActivity.java b/src/de/danoeh/antennapod/activity/OpmlImportBaseActivity.java index cf3028307..f887fdd94 100644 --- a/src/de/danoeh/antennapod/activity/OpmlImportBaseActivity.java +++ b/src/de/danoeh/antennapod/activity/OpmlImportBaseActivity.java @@ -1,14 +1,17 @@ package de.danoeh.antennapod.activity; +import java.io.Reader; +import java.util.ArrayList; + import android.content.Intent; import android.util.Log; + import com.actionbarsherlock.app.SherlockActivity; + import de.danoeh.antennapod.AppConfig; import de.danoeh.antennapod.asynctask.OpmlFeedQueuer; import de.danoeh.antennapod.asynctask.OpmlImportWorker; import de.danoeh.antennapod.opml.OpmlElement; -import java.io.Reader; -import java.util.ArrayList; /** * Base activity for Opml Import - e.g. with code what to do afterwards diff --git a/src/de/danoeh/antennapod/activity/OpmlImportFromIntentActivity.java b/src/de/danoeh/antennapod/activity/OpmlImportFromIntentActivity.java index cbe69d48c..dc698a851 100644 --- a/src/de/danoeh/antennapod/activity/OpmlImportFromIntentActivity.java +++ b/src/de/danoeh/antennapod/activity/OpmlImportFromIntentActivity.java @@ -1,17 +1,19 @@ package de.danoeh.antennapod.activity; +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.net.URL; + import android.app.AlertDialog; import android.os.Bundle; -import de.danoeh.antennapod.PodcastApp; -import java.io.*; -import java.net.URL; +import de.danoeh.antennapod.preferences.UserPreferences; /** Lets the user start the OPML-import process. */ public class OpmlImportFromIntentActivity extends OpmlImportBaseActivity { @Override protected void onCreate(Bundle savedInstanceState) { - setTheme(PodcastApp.getThemeResourceId()); + setTheme(UserPreferences.getTheme()); super.onCreate(savedInstanceState); getSupportActionBar().setDisplayHomeAsUpEnabled(true); diff --git a/src/de/danoeh/antennapod/activity/OpmlImportFromPathActivity.java b/src/de/danoeh/antennapod/activity/OpmlImportFromPathActivity.java index bb5734b57..b38e0c443 100644 --- a/src/de/danoeh/antennapod/activity/OpmlImportFromPathActivity.java +++ b/src/de/danoeh/antennapod/activity/OpmlImportFromPathActivity.java @@ -1,5 +1,10 @@ package de.danoeh.antennapod.activity; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileReader; +import java.io.Reader; + import android.app.AlertDialog; import android.content.DialogInterface; import android.os.Bundle; @@ -9,18 +14,15 @@ import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; + import com.actionbarsherlock.view.Menu; import com.actionbarsherlock.view.MenuItem; + import de.danoeh.antennapod.AppConfig; -import de.danoeh.antennapod.PodcastApp; import de.danoeh.antennapod.R; +import de.danoeh.antennapod.preferences.UserPreferences; import de.danoeh.antennapod.util.StorageUtils; -import java.io.File; -import java.io.FileNotFoundException; -import java.io.FileReader; -import java.io.Reader; - /** * Lets the user start the OPML-import process from a path */ @@ -33,7 +35,7 @@ public class OpmlImportFromPathActivity extends OpmlImportBaseActivity { @Override protected void onCreate(Bundle savedInstanceState) { - setTheme(PodcastApp.getThemeResourceId()); + setTheme(UserPreferences.getTheme()); super.onCreate(savedInstanceState); getSupportActionBar().setDisplayHomeAsUpEnabled(true); @@ -63,7 +65,7 @@ public class OpmlImportFromPathActivity extends OpmlImportBaseActivity { * directory. */ private void setImportPath() { - File importDir = PodcastApp.getDataFolder(this, IMPORT_DIR); + File importDir = UserPreferences.getDataFolder(this, IMPORT_DIR); boolean success = true; if (!importDir.exists()) { if (AppConfig.DEBUG) diff --git a/src/de/danoeh/antennapod/activity/OpmlImportHolder.java b/src/de/danoeh/antennapod/activity/OpmlImportHolder.java index ec53ed7b6..8d51eb3de 100644 --- a/src/de/danoeh/antennapod/activity/OpmlImportHolder.java +++ b/src/de/danoeh/antennapod/activity/OpmlImportHolder.java @@ -1,9 +1,9 @@ package de.danoeh.antennapod.activity; -import de.danoeh.antennapod.opml.OpmlElement; - import java.util.ArrayList; +import de.danoeh.antennapod.opml.OpmlElement; + /** * Hold infos gathered by Ompl-Import * <p/> diff --git a/src/de/danoeh/antennapod/activity/OrganizeQueueActivity.java b/src/de/danoeh/antennapod/activity/OrganizeQueueActivity.java index a7017d2fb..56e42f79f 100644 --- a/src/de/danoeh/antennapod/activity/OrganizeQueueActivity.java +++ b/src/de/danoeh/antennapod/activity/OrganizeQueueActivity.java @@ -1,17 +1,12 @@ package de.danoeh.antennapod.activity; -import java.util.List; - -import android.content.BroadcastReceiver; import android.content.Context; -import android.content.Intent; -import android.content.IntentFilter; import android.content.res.TypedArray; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.widget.ArrayAdapter; +import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; @@ -20,11 +15,12 @@ import com.actionbarsherlock.view.Menu; import com.actionbarsherlock.view.MenuItem; import com.mobeta.android.dslv.DragSortListView; -import de.danoeh.antennapod.PodcastApp; import de.danoeh.antennapod.R; -import de.danoeh.antennapod.asynctask.FeedImageLoader; +import de.danoeh.antennapod.asynctask.ImageLoader; +import de.danoeh.antennapod.feed.EventDistributor; import de.danoeh.antennapod.feed.FeedItem; import de.danoeh.antennapod.feed.FeedManager; +import de.danoeh.antennapod.preferences.UserPreferences; public class OrganizeQueueActivity extends SherlockListActivity { private static final String TAG = "OrganizeQueueActivity"; @@ -35,7 +31,7 @@ public class OrganizeQueueActivity extends SherlockListActivity { @Override protected void onCreate(Bundle savedInstanceState) { - setTheme(PodcastApp.getThemeResourceId()); + setTheme(UserPreferences.getTheme()); super.onCreate(savedInstanceState); setContentView(R.layout.organize_queue); @@ -43,38 +39,32 @@ public class OrganizeQueueActivity extends SherlockListActivity { listView.setDropListener(dropListener); listView.setRemoveListener(removeListener); - adapter = new OrganizeAdapter(this, 0, FeedManager.getInstance() - .getQueue()); + adapter = new OrganizeAdapter(this); setListAdapter(adapter); } @Override protected void onPause() { super.onPause(); - try { - unregisterReceiver(contentUpdate); - } catch (IllegalArgumentException e) { - - } + EventDistributor.getInstance().unregister(contentUpdate); } @Override protected void onResume() { super.onResume(); - IntentFilter filter = new IntentFilter(FeedManager.ACTION_QUEUE_UPDATE); - filter.addAction(FeedManager.ACTION_FEED_LIST_UPDATE); - registerReceiver(contentUpdate, filter); + EventDistributor.getInstance().register(contentUpdate); } - private BroadcastReceiver contentUpdate = new BroadcastReceiver() { + private EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() { @Override - public void onReceive(Context context, Intent intent) { - if (adapter != null) { - adapter.notifyDataSetChanged(); + public void update(EventDistributor eventDistributor, Integer arg) { + if (((EventDistributor.QUEUE_UPDATE | EventDistributor.FEED_LIST_UPDATE) & arg) != 0) { + if (adapter != null) { + adapter.notifyDataSetChanged(); + } } } - }; private DragSortListView.DropListener dropListener = new DragSortListView.DropListener() { @@ -120,13 +110,12 @@ public class OrganizeQueueActivity extends SherlockListActivity { } } - private static class OrganizeAdapter extends ArrayAdapter<FeedItem> { + private static class OrganizeAdapter extends BaseAdapter { private Context context; - public OrganizeAdapter(Context context, int textViewResourceId, - List<FeedItem> objects) { - super(context, textViewResourceId, objects); + public OrganizeAdapter(Context context) { + super(); this.context = context; } @@ -156,8 +145,9 @@ public class OrganizeQueueActivity extends SherlockListActivity { holder.title.setText(item.getTitle()); holder.feedTitle.setText(item.getFeed().getTitle()); - holder.feedImage.setTag(item.getFeed().getImage()); - FeedImageLoader.getInstance().loadThumbnailBitmap( + holder.feedImage.setTag((item.getFeed().getImage() != null) ? item + .getFeed().getImage().getFile_url() : null); + ImageLoader.getInstance().loadThumbnailBitmap( item.getFeed().getImage(), holder.feedImage, (int) convertView.getResources().getDimension( @@ -172,6 +162,22 @@ public class OrganizeQueueActivity extends SherlockListActivity { ImageView feedImage; } + @Override + public int getCount() { + return FeedManager.getInstance().getQueueSize(true); + } + + @Override + public FeedItem getItem(int position) { + return FeedManager.getInstance() + .getQueueItemAtIndex(position, true); + } + + @Override + public long getItemId(int position) { + return position; + } + } } diff --git a/src/de/danoeh/antennapod/activity/PlaybackHistoryActivity.java b/src/de/danoeh/antennapod/activity/PlaybackHistoryActivity.java index 22958b058..1a5a2cac9 100644 --- a/src/de/danoeh/antennapod/activity/PlaybackHistoryActivity.java +++ b/src/de/danoeh/antennapod/activity/PlaybackHistoryActivity.java @@ -10,10 +10,10 @@ import com.actionbarsherlock.view.Menu; import com.actionbarsherlock.view.MenuItem; import de.danoeh.antennapod.AppConfig; -import de.danoeh.antennapod.PodcastApp; import de.danoeh.antennapod.R; import de.danoeh.antennapod.feed.FeedManager; import de.danoeh.antennapod.fragment.PlaybackHistoryFragment; +import de.danoeh.antennapod.preferences.UserPreferences; public class PlaybackHistoryActivity extends SherlockFragmentActivity { private static final String TAG = "PlaybackHistoryActivity"; @@ -44,7 +44,7 @@ public class PlaybackHistoryActivity extends SherlockFragmentActivity { @Override protected void onCreate(Bundle arg0) { - setTheme(PodcastApp.getThemeResourceId()); + setTheme(UserPreferences.getTheme()); super.onCreate(arg0); if (AppConfig.DEBUG) diff --git a/src/de/danoeh/antennapod/activity/PreferenceActivity.java b/src/de/danoeh/antennapod/activity/PreferenceActivity.java index fa0c42b37..360ff610d 100644 --- a/src/de/danoeh/antennapod/activity/PreferenceActivity.java +++ b/src/de/danoeh/antennapod/activity/PreferenceActivity.java @@ -15,11 +15,11 @@ import com.actionbarsherlock.view.Menu; import com.actionbarsherlock.view.MenuItem; import de.danoeh.antennapod.AppConfig; -import de.danoeh.antennapod.PodcastApp; import de.danoeh.antennapod.R; import de.danoeh.antennapod.asynctask.FlattrClickWorker; import de.danoeh.antennapod.asynctask.OpmlExportWorker; import de.danoeh.antennapod.feed.FeedManager; +import de.danoeh.antennapod.preferences.UserPreferences; import de.danoeh.antennapod.util.flattr.FlattrUtils; /** The main preference activity */ @@ -36,7 +36,7 @@ public class PreferenceActivity extends SherlockPreferenceActivity { @SuppressWarnings("deprecation") @Override public void onCreate(Bundle savedInstanceState) { - setTheme(PodcastApp.getThemeResourceId()); + setTheme(UserPreferences.getTheme()); super.onCreate(savedInstanceState); getSupportActionBar().setDisplayHomeAsUpEnabled(true); @@ -82,7 +82,7 @@ public class PreferenceActivity extends SherlockPreferenceActivity { @Override public boolean onPreferenceClick(Preference preference) { - if (!FeedManager.getInstance().getFeeds().isEmpty()) { + if (FeedManager.getInstance().getFeedsSize() > 0) { new OpmlExportWorker(PreferenceActivity.this) .executeAsync(); } @@ -102,7 +102,7 @@ public class PreferenceActivity extends SherlockPreferenceActivity { return true; } }); - findPreference(PodcastApp.PREF_THEME).setOnPreferenceChangeListener( + findPreference(UserPreferences.PREF_THEME).setOnPreferenceChangeListener( new OnPreferenceChangeListener() { @Override @@ -137,7 +137,7 @@ public class PreferenceActivity extends SherlockPreferenceActivity { } private void setDataFolderText() { - File f = PodcastApp.getDataFolder(this, null); + File f = UserPreferences.getDataFolder(this, null); if (f != null) { findPreference(PREF_CHOOSE_DATA_DIR) .setSummary(f.getAbsolutePath()); @@ -165,7 +165,7 @@ public class PreferenceActivity extends SherlockPreferenceActivity { @Override protected void onApplyThemeResource(Theme theme, int resid, boolean first) { - theme.applyStyle(PodcastApp.getThemeResourceId(), true); + theme.applyStyle(UserPreferences.getTheme(), true); } @Override @@ -176,7 +176,7 @@ public class PreferenceActivity extends SherlockPreferenceActivity { .getStringExtra(DirectoryChooserActivity.RESULT_SELECTED_DIR); if (AppConfig.DEBUG) Log.d(TAG, "Setting data folder"); - PodcastApp.getInstance().setDataFolder(dir); + UserPreferences.setDataFolder(dir); } } diff --git a/src/de/danoeh/antennapod/activity/SearchActivity.java b/src/de/danoeh/antennapod/activity/SearchActivity.java index bb2eb54cc..152710112 100644 --- a/src/de/danoeh/antennapod/activity/SearchActivity.java +++ b/src/de/danoeh/antennapod/activity/SearchActivity.java @@ -16,7 +16,6 @@ import com.actionbarsherlock.view.Menu; import com.actionbarsherlock.view.MenuItem; import de.danoeh.antennapod.AppConfig; -import de.danoeh.antennapod.PodcastApp; import de.danoeh.antennapod.R; import de.danoeh.antennapod.adapter.SearchlistAdapter; import de.danoeh.antennapod.feed.Feed; @@ -26,6 +25,7 @@ import de.danoeh.antennapod.feed.FeedSearcher; import de.danoeh.antennapod.feed.SearchResult; import de.danoeh.antennapod.fragment.FeedlistFragment; import de.danoeh.antennapod.fragment.ItemlistFragment; +import de.danoeh.antennapod.preferences.UserPreferences; /** Displays the results when the user searches for FeedItems or Feeds. */ public class SearchActivity extends SherlockListActivity { @@ -43,7 +43,7 @@ public class SearchActivity extends SherlockListActivity { @Override protected void onCreate(Bundle savedInstanceState) { - setTheme(PodcastApp.getThemeResourceId()); + setTheme(UserPreferences.getTheme()); super.onCreate(savedInstanceState); getSupportActionBar().setDisplayHomeAsUpEnabled(true); diff --git a/src/de/danoeh/antennapod/activity/StorageErrorActivity.java b/src/de/danoeh/antennapod/activity/StorageErrorActivity.java index 514b1f69d..4d9184dcf 100644 --- a/src/de/danoeh/antennapod/activity/StorageErrorActivity.java +++ b/src/de/danoeh/antennapod/activity/StorageErrorActivity.java @@ -10,8 +10,8 @@ import android.util.Log; import com.actionbarsherlock.app.SherlockActivity; import de.danoeh.antennapod.AppConfig; -import de.danoeh.antennapod.PodcastApp; import de.danoeh.antennapod.R; +import de.danoeh.antennapod.preferences.UserPreferences; import de.danoeh.antennapod.util.StorageUtils; /** Is show if there is now external storage available. */ @@ -20,7 +20,7 @@ public class StorageErrorActivity extends SherlockActivity { @Override protected void onCreate(Bundle savedInstanceState) { - setTheme(PodcastApp.getThemeResourceId()); + setTheme(UserPreferences.getTheme()); super.onCreate(savedInstanceState); setContentView(R.layout.storage_error); diff --git a/src/de/danoeh/antennapod/activity/VideoplayerActivity.java b/src/de/danoeh/antennapod/activity/VideoplayerActivity.java index f6ea4f69e..2d9834a3e 100644 --- a/src/de/danoeh/antennapod/activity/VideoplayerActivity.java +++ b/src/de/danoeh/antennapod/activity/VideoplayerActivity.java @@ -18,11 +18,13 @@ import android.widget.VideoView; import com.actionbarsherlock.view.Window; import de.danoeh.antennapod.AppConfig; -import de.danoeh.antennapod.PodcastApp; import de.danoeh.antennapod.R; -import de.danoeh.antennapod.feed.FeedMedia; +import de.danoeh.antennapod.feed.MediaType; +import de.danoeh.antennapod.preferences.UserPreferences; import de.danoeh.antennapod.service.PlaybackService; import de.danoeh.antennapod.service.PlayerStatus; +import de.danoeh.antennapod.util.playback.ExternalMedia; +import de.danoeh.antennapod.util.playback.Playable; /** Activity for playing audio files. */ public class VideoplayerActivity extends MediaplayerActivity implements @@ -41,7 +43,7 @@ public class VideoplayerActivity extends MediaplayerActivity implements @Override protected void onCreate(Bundle savedInstanceState) { requestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY); - setTheme(PodcastApp.getThemeResourceId()); + setTheme(UserPreferences.getTheme()); super.onCreate(savedInstanceState); } @@ -55,13 +57,34 @@ public class VideoplayerActivity extends MediaplayerActivity implements } @Override + protected void onResume() { + super.onResume(); + if (getIntent().getAction() != null + && getIntent().getAction().equals(Intent.ACTION_VIEW)) { + Intent intent = getIntent(); + if (AppConfig.DEBUG) + Log.d(TAG, "Received VIEW intent: " + + intent.getData().getPath()); + ExternalMedia media = new ExternalMedia(intent.getData().getPath(), + MediaType.VIDEO); + Intent launchIntent = new Intent(this, PlaybackService.class); + launchIntent.putExtra(PlaybackService.EXTRA_PLAYABLE, media); + launchIntent.putExtra(PlaybackService.EXTRA_START_WHEN_PREPARED, + true); + launchIntent.putExtra(PlaybackService.EXTRA_SHOULD_STREAM, false); + launchIntent.putExtra(PlaybackService.EXTRA_PREPARE_IMMEDIATELY, + true); + startService(launchIntent); + } + } + + @Override protected void loadMediaInfo() { super.loadMediaInfo(); - FeedMedia media = controller.getMedia(); + Playable media = controller.getMedia(); if (media != null) { - getSupportActionBar().setSubtitle(media.getItem().getTitle()); - getSupportActionBar() - .setTitle(media.getItem().getFeed().getTitle()); + getSupportActionBar().setSubtitle(media.getEpisodeTitle()); + getSupportActionBar().setTitle(media.getFeedTitle()); } } |