Added fragment for adding new podcasts
This commit is contained in:
parent
628103de45
commit
8b6f16b918
@ -52,16 +52,6 @@
|
|||||||
<action android:name="android.intent.action.MAIN"/>
|
<action android:name="android.intent.action.MAIN"/>
|
||||||
<category android:name="android.intent.category.LAUNCHER"/>
|
<category android:name="android.intent.category.LAUNCHER"/>
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
</activity>
|
|
||||||
<activity
|
|
||||||
android:name="de.danoeh.antennapod.activity.AddFeedActivity"
|
|
||||||
android:configChanges="keyboardHidden|orientation"
|
|
||||||
android:label="@string/add_new_feed_label"
|
|
||||||
android:windowSoftInputMode="adjustResize">
|
|
||||||
<meta-data
|
|
||||||
android:name="android.support.PARENT_ACTIVITY"
|
|
||||||
android:value="de.danoeh.antennapod.activity.MainActivity"/>
|
|
||||||
|
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.intent.action.VIEW"/>
|
<action android:name="android.intent.action.VIEW"/>
|
||||||
|
|
||||||
@ -109,6 +99,18 @@
|
|||||||
|
|
||||||
<data android:mimeType="text/plain"/>
|
<data android:mimeType="text/plain"/>
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
|
|
||||||
|
</activity>
|
||||||
|
<activity
|
||||||
|
android:name="de.danoeh.antennapod.activity.AddFeedActivity"
|
||||||
|
android:configChanges="keyboardHidden|orientation"
|
||||||
|
android:label="@string/add_new_feed_label"
|
||||||
|
android:windowSoftInputMode="adjustResize">
|
||||||
|
<meta-data
|
||||||
|
android:name="android.support.PARENT_ACTIVITY"
|
||||||
|
android:value="de.danoeh.antennapod.activity.MainActivity"/>
|
||||||
|
|
||||||
|
|
||||||
</activity>
|
</activity>
|
||||||
<activity
|
<activity
|
||||||
android:name="de.danoeh.antennapod.activity.FeedItemlistActivity"
|
android:name="de.danoeh.antennapod.activity.FeedItemlistActivity"
|
||||||
|
@ -53,28 +53,29 @@
|
|||||||
android:textStyle="italic"
|
android:textStyle="italic"
|
||||||
android:text="@string/podcastdirectories_label"/>
|
android:text="@string/podcastdirectories_label"/>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/txtvPodcastDirectoriesDescr"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/podcastdirectories_descr"
|
||||||
|
android:textSize="@dimen/text_size_medium"
|
||||||
|
android:layout_below="@id/txtvPodcastDirectories"
|
||||||
|
android:layout_margin="8dp"/>
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
android:id="@+id/butBrowseGpoddernet"
|
android:id="@+id/butBrowseGpoddernet"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_below="@id/txtvPodcastDirectories"
|
android:layout_below="@id/txtvPodcastDirectoriesDescr"
|
||||||
android:layout_margin="8dp"
|
android:layout_margin="8dp"
|
||||||
android:text="@string/gpodnet_main_label"/>
|
android:text="@string/browse_gpoddernet_label"/>
|
||||||
|
|
||||||
<Button
|
|
||||||
android:id="@+id/butBrowseMiroguide"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_below="@id/butBrowseGpoddernet"
|
|
||||||
android:layout_margin="8dp"
|
|
||||||
android:text="@string/miro_guide_label"/>
|
|
||||||
|
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/txtvOpmlImport"
|
android:id="@+id/txtvOpmlImport"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_below="@id/butBrowseMiroguide"
|
android:layout_below="@id/butBrowseGpoddernet"
|
||||||
android:layout_margin="8dp"
|
android:layout_margin="8dp"
|
||||||
android:textSize="@dimen/text_size_large"
|
android:textSize="@dimen/text_size_large"
|
||||||
android:textColor="@color/bright_blue"
|
android:textColor="@color/bright_blue"
|
||||||
@ -87,6 +88,7 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_below="@id/txtvOpmlImport"
|
android:layout_below="@id/txtvOpmlImport"
|
||||||
android:layout_margin="8dp"
|
android:layout_margin="8dp"
|
||||||
|
android:textSize="@dimen/text_size_medium"
|
||||||
android:text="@string/opml_import_txtv_button_lable"/>
|
android:text="@string/opml_import_txtv_button_lable"/>
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
|
@ -70,7 +70,9 @@
|
|||||||
<!-- 'Add Feed' Activity labels -->
|
<!-- 'Add Feed' Activity labels -->
|
||||||
<string name="feedurl_label">Feed URL</string>
|
<string name="feedurl_label">Feed URL</string>
|
||||||
<string name="txtvfeedurl_label">Add Podcast by URL</string>
|
<string name="txtvfeedurl_label">Add Podcast by URL</string>
|
||||||
<string name="podcastdirectories_label">Podcast directories</string>
|
<string name="podcastdirectories_label">Find podcast in directory</string>
|
||||||
|
<string name="podcastdirectories_descr">You can search for new podcasts by name, category or popularity in the gpodder.net directory.</string>
|
||||||
|
<string name="browse_gpoddernet_label">Browse gpodder.net</string>
|
||||||
|
|
||||||
<!-- Actions on feeds -->
|
<!-- Actions on feeds -->
|
||||||
<string name="mark_all_read_label">Mark all as read</string>
|
<string name="mark_all_read_label">Mark all as read</string>
|
||||||
|
@ -50,7 +50,6 @@ public class AddFeedActivity extends ActionBarActivity {
|
|||||||
etxtFeedurl.setText(getIntent().getDataString());
|
etxtFeedurl.setText(getIntent().getDataString());
|
||||||
}
|
}
|
||||||
|
|
||||||
butBrowseMiroGuide = (Button) findViewById(R.id.butBrowseMiroguide);
|
|
||||||
butBrowserGpoddernet = (Button) findViewById(R.id.butBrowseGpoddernet);
|
butBrowserGpoddernet = (Button) findViewById(R.id.butBrowseGpoddernet);
|
||||||
butOpmlImport = (Button) findViewById(R.id.butOpmlImport);
|
butOpmlImport = (Button) findViewById(R.id.butOpmlImport);
|
||||||
butConfirm = (Button) findViewById(R.id.butConfirm);
|
butConfirm = (Button) findViewById(R.id.butConfirm);
|
||||||
|
@ -31,7 +31,7 @@ import de.danoeh.antennapod.fragment.*;
|
|||||||
import de.danoeh.antennapod.preferences.UserPreferences;
|
import de.danoeh.antennapod.preferences.UserPreferences;
|
||||||
import de.danoeh.antennapod.storage.DBReader;
|
import de.danoeh.antennapod.storage.DBReader;
|
||||||
import de.danoeh.antennapod.util.StorageUtils;
|
import de.danoeh.antennapod.util.StorageUtils;
|
||||||
import de.danoeh.antennapod.util.ThemeUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -96,7 +96,6 @@ public class MainActivity extends ActionBarActivity {
|
|||||||
transaction.replace(R.id.playerFragment, externalPlayerFragment);
|
transaction.replace(R.id.playerFragment, externalPlayerFragment);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
transaction.commit();
|
transaction.commit();
|
||||||
|
|
||||||
Fragment mainFragment = fm.findFragmentByTag("main");
|
Fragment mainFragment = fm.findFragmentByTag("main");
|
||||||
@ -105,7 +104,7 @@ public class MainActivity extends ActionBarActivity {
|
|||||||
transaction.replace(R.id.main_view, mainFragment);
|
transaction.replace(R.id.main_view, mainFragment);
|
||||||
transaction.commit();
|
transaction.commit();
|
||||||
} else {
|
} else {
|
||||||
loadFragment(NavListAdapter.VIEW_TYPE_NAV, 0);
|
loadFragment(NavListAdapter.VIEW_TYPE_NAV, NavListAdapter.POS_NEW, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||||
@ -123,24 +122,33 @@ public class MainActivity extends ActionBarActivity {
|
|||||||
return getSupportActionBar();
|
return getSupportActionBar();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void loadFragment(int viewType, int relPos) {
|
private void loadFragment(int viewType, int relPos, Bundle args) {
|
||||||
FragmentManager fragmentManager = getSupportFragmentManager();
|
FragmentManager fragmentManager = getSupportFragmentManager();
|
||||||
|
// clear back stack
|
||||||
|
for (int i = 0; i < fragmentManager.getBackStackEntryCount(); i++) {
|
||||||
|
fragmentManager.popBackStack();
|
||||||
|
}
|
||||||
|
|
||||||
FragmentTransaction fT = fragmentManager.beginTransaction();
|
FragmentTransaction fT = fragmentManager.beginTransaction();
|
||||||
Fragment fragment = null;
|
Fragment fragment = null;
|
||||||
if (viewType == NavListAdapter.VIEW_TYPE_NAV) {
|
if (viewType == NavListAdapter.VIEW_TYPE_NAV) {
|
||||||
switch (relPos) {
|
switch (relPos) {
|
||||||
case 0:
|
case NavListAdapter.POS_NEW:
|
||||||
fragment = new NewEpisodesFragment();
|
fragment = new NewEpisodesFragment();
|
||||||
break;
|
break;
|
||||||
case 1:
|
case NavListAdapter.POS_QUEUE:
|
||||||
fragment = new QueueFragment();
|
fragment = new QueueFragment();
|
||||||
break;
|
break;
|
||||||
case 2:
|
case NavListAdapter.POS_DOWNLOADS:
|
||||||
fragment = new DownloadsFragment();
|
fragment = new DownloadsFragment();
|
||||||
break;
|
break;
|
||||||
case 3:
|
case NavListAdapter.POS_HISTORY:
|
||||||
fragment = new PlaybackHistoryFragment();
|
fragment = new PlaybackHistoryFragment();
|
||||||
break;
|
break;
|
||||||
|
case NavListAdapter.POS_ADD:
|
||||||
|
fragment = new AddFeedFragment();
|
||||||
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
currentTitle = getString(NavListAdapter.NAV_TITLES[relPos]);
|
currentTitle = getString(NavListAdapter.NAV_TITLES[relPos]);
|
||||||
|
|
||||||
@ -151,18 +159,30 @@ public class MainActivity extends ActionBarActivity {
|
|||||||
|
|
||||||
}
|
}
|
||||||
if (fragment != null) {
|
if (fragment != null) {
|
||||||
fT.replace(R.id.main_view, fragment, "main");
|
if (args != null) {
|
||||||
|
fragment.setArguments(args);
|
||||||
|
}
|
||||||
|
fT.replace(R.id.main_view, fragment, "main");fragmentManager.popBackStack();
|
||||||
}
|
}
|
||||||
fT.commit();
|
fT.commit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void loadChildFragment(Fragment fragment) {
|
||||||
|
if (fragment == null) throw new IllegalArgumentException("fragment = null");
|
||||||
|
FragmentManager fm = getSupportFragmentManager();
|
||||||
|
fm.beginTransaction()
|
||||||
|
.replace(R.id.main_view, fragment, "main")
|
||||||
|
.addToBackStack(null)
|
||||||
|
.commit();
|
||||||
|
}
|
||||||
|
|
||||||
private AdapterView.OnItemClickListener navListClickListener = new AdapterView.OnItemClickListener() {
|
private AdapterView.OnItemClickListener navListClickListener = new AdapterView.OnItemClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
||||||
int viewType = parent.getAdapter().getItemViewType(position);
|
int viewType = parent.getAdapter().getItemViewType(position);
|
||||||
if (viewType != NavListAdapter.VIEW_TYPE_SECTION_DIVIDER && position != selectedNavListIndex) {
|
if (viewType != NavListAdapter.VIEW_TYPE_SECTION_DIVIDER && position != selectedNavListIndex) {
|
||||||
int relPos = (viewType == NavListAdapter.VIEW_TYPE_NAV) ? position : position - NavListAdapter.SUBSCRIPTION_OFFSET;
|
int relPos = (viewType == NavListAdapter.VIEW_TYPE_NAV) ? position : position - NavListAdapter.SUBSCRIPTION_OFFSET;
|
||||||
loadFragment(viewType, relPos);
|
loadFragment(viewType, relPos, null);
|
||||||
selectedNavListIndex = position;
|
selectedNavListIndex = position;
|
||||||
navAdapter.notifyDataSetChanged();
|
navAdapter.notifyDataSetChanged();
|
||||||
}
|
}
|
||||||
@ -207,6 +227,18 @@ public class MainActivity extends ActionBarActivity {
|
|||||||
super.onResume();
|
super.onResume();
|
||||||
StorageUtils.checkStorageAvailability(this);
|
StorageUtils.checkStorageAvailability(this);
|
||||||
EventDistributor.getInstance().register(contentUpdate);
|
EventDistributor.getInstance().register(contentUpdate);
|
||||||
|
|
||||||
|
Intent intent = getIntent();
|
||||||
|
if (StringUtils.equals(intent.getAction(), Intent.ACTION_SEND)) {
|
||||||
|
String extra = intent.getStringExtra(Intent.EXTRA_TEXT);
|
||||||
|
if (extra != null) {
|
||||||
|
Bundle args = new Bundle();
|
||||||
|
args.putString(AddFeedFragment.ARG_FEED_URL, extra);
|
||||||
|
loadFragment(NavListAdapter.VIEW_TYPE_NAV, NavListAdapter.POS_ADD, args);
|
||||||
|
selectedNavListIndex = NavListAdapter.POS_ADD;
|
||||||
|
navAdapter.notifyDataSetChanged();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -335,6 +367,12 @@ public class MainActivity extends ActionBarActivity {
|
|||||||
static final int VIEW_TYPE_SECTION_DIVIDER = 1;
|
static final int VIEW_TYPE_SECTION_DIVIDER = 1;
|
||||||
static final int VIEW_TYPE_SUBSCRIPTION = 2;
|
static final int VIEW_TYPE_SUBSCRIPTION = 2;
|
||||||
|
|
||||||
|
static final int POS_NEW = 0,
|
||||||
|
POS_QUEUE = 1,
|
||||||
|
POS_DOWNLOADS = 2,
|
||||||
|
POS_HISTORY = 3,
|
||||||
|
POS_ADD = 4;
|
||||||
|
|
||||||
static final int[] NAV_TITLES = {R.string.new_episodes_label, R.string.queue_label, R.string.downloads_label, R.string.playback_history_label, R.string.add_feed_label};
|
static final int[] NAV_TITLES = {R.string.new_episodes_label, R.string.queue_label, R.string.downloads_label, R.string.playback_history_label, R.string.add_feed_label};
|
||||||
|
|
||||||
|
|
||||||
|
76
src/de/danoeh/antennapod/fragment/AddFeedFragment.java
Normal file
76
src/de/danoeh/antennapod/fragment/AddFeedFragment.java
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
package de.danoeh.antennapod.fragment;
|
||||||
|
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.support.v4.app.Fragment;
|
||||||
|
import android.view.LayoutInflater;
|
||||||
|
import android.view.View;
|
||||||
|
import android.view.ViewGroup;
|
||||||
|
import android.widget.Button;
|
||||||
|
import android.widget.EditText;
|
||||||
|
import de.danoeh.antennapod.R;
|
||||||
|
import de.danoeh.antennapod.activity.DefaultOnlineFeedViewActivity;
|
||||||
|
import de.danoeh.antennapod.activity.MainActivity;
|
||||||
|
import de.danoeh.antennapod.activity.OnlineFeedViewActivity;
|
||||||
|
import de.danoeh.antennapod.activity.OpmlImportFromPathActivity;
|
||||||
|
import de.danoeh.antennapod.fragment.gpodnet.GpodnetMainFragment;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Provides actions for adding new podcast subscriptions
|
||||||
|
*/
|
||||||
|
public class AddFeedFragment extends Fragment {
|
||||||
|
private static final String TAG = "AddFeedFragment";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Preset value for url text field.
|
||||||
|
*/
|
||||||
|
public static final String ARG_FEED_URL = "feedurl";
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||||
|
super.onCreateView(inflater, container, savedInstanceState);
|
||||||
|
View root = inflater.inflate(R.layout.addfeed, container, false);
|
||||||
|
|
||||||
|
final EditText etxtFeedurl = (EditText) root.findViewById(R.id.etxtFeedurl);
|
||||||
|
|
||||||
|
Bundle args = getArguments();
|
||||||
|
if (args != null && args.getString(ARG_FEED_URL) != null) {
|
||||||
|
etxtFeedurl.setText(args.getString(ARG_FEED_URL));
|
||||||
|
}
|
||||||
|
|
||||||
|
Button butBrowserGpoddernet = (Button) root.findViewById(R.id.butBrowseGpoddernet);
|
||||||
|
Button butOpmlImport = (Button) root.findViewById(R.id.butOpmlImport);
|
||||||
|
Button butConfirm = (Button) root.findViewById(R.id.butConfirm);
|
||||||
|
|
||||||
|
final MainActivity activity = (MainActivity) getActivity();
|
||||||
|
activity.getMainActivtyActionBar().setTitle(R.string.add_feed_label);
|
||||||
|
|
||||||
|
butBrowserGpoddernet.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
activity.loadChildFragment(new GpodnetMainFragment());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
butOpmlImport.setOnClickListener(new View.OnClickListener() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
startActivity(new Intent(getActivity(),
|
||||||
|
OpmlImportFromPathActivity.class));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
butConfirm.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
Intent intent = new Intent(getActivity(), DefaultOnlineFeedViewActivity.class);
|
||||||
|
intent.putExtra(OnlineFeedViewActivity.ARG_FEEDURL, etxtFeedurl.getText().toString());
|
||||||
|
intent.putExtra(OnlineFeedViewActivity.ARG_TITLE, getString(R.string.add_feed_label));
|
||||||
|
startActivity(intent);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return root;
|
||||||
|
}
|
||||||
|
}
|
@ -27,7 +27,7 @@ public class DownloadsFragment extends Fragment {
|
|||||||
@Override
|
@Override
|
||||||
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||||
super.onCreateView(inflater, container, savedInstanceState);
|
super.onCreateView(inflater, container, savedInstanceState);
|
||||||
View root = inflater.inflate(R.layout.downloads_fragment, container, false);
|
View root = inflater.inflate(R.layout.pager_fragment, container, false);
|
||||||
pager = (ViewPager) root.findViewById(R.id.pager);
|
pager = (ViewPager) root.findViewById(R.id.pager);
|
||||||
DownloadsPagerAdapter pagerAdapter = new DownloadsPagerAdapter(getChildFragmentManager(), getResources());
|
DownloadsPagerAdapter pagerAdapter = new DownloadsPagerAdapter(getChildFragmentManager(), getResources());
|
||||||
pager.setAdapter(pagerAdapter);
|
pager.setAdapter(pagerAdapter);
|
||||||
|
@ -0,0 +1,131 @@
|
|||||||
|
package de.danoeh.antennapod.fragment.gpodnet;
|
||||||
|
|
||||||
|
import android.app.Activity;
|
||||||
|
import android.content.res.Resources;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.support.v4.app.Fragment;
|
||||||
|
import android.support.v4.app.FragmentManager;
|
||||||
|
import android.support.v4.app.FragmentPagerAdapter;
|
||||||
|
import android.support.v4.app.FragmentTransaction;
|
||||||
|
import android.support.v4.view.ViewPager;
|
||||||
|
import android.support.v7.app.ActionBar;
|
||||||
|
import android.view.LayoutInflater;
|
||||||
|
import android.view.View;
|
||||||
|
import android.view.ViewGroup;
|
||||||
|
import de.danoeh.antennapod.R;
|
||||||
|
import de.danoeh.antennapod.activity.MainActivity;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Main navigation hub for gpodder.net podcast directory
|
||||||
|
*/
|
||||||
|
public class GpodnetMainFragment extends Fragment {
|
||||||
|
|
||||||
|
private ViewPager pager;
|
||||||
|
private MainActivity activity;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||||
|
super.onCreateView(inflater, container, savedInstanceState);
|
||||||
|
View root = inflater.inflate(R.layout.pager_fragment, container, false);
|
||||||
|
pager = (ViewPager) root.findViewById(R.id.pager);
|
||||||
|
GpodnetPagerAdapter pagerAdapter = new GpodnetPagerAdapter(getChildFragmentManager(), getResources());
|
||||||
|
pager.setAdapter(pagerAdapter);
|
||||||
|
final ActionBar actionBar = activity.getMainActivtyActionBar();
|
||||||
|
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
|
||||||
|
ActionBar.TabListener tabListener = new ActionBar.TabListener() {
|
||||||
|
@Override
|
||||||
|
public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
|
||||||
|
pager.setCurrentItem(tab.getPosition());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onTabReselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
|
||||||
|
|
||||||
|
}
|
||||||
|
};
|
||||||
|
actionBar.removeAllTabs();
|
||||||
|
actionBar.addTab(actionBar.newTab()
|
||||||
|
.setText(R.string.gpodnet_taglist_header)
|
||||||
|
.setTabListener(tabListener));
|
||||||
|
actionBar.addTab(actionBar.newTab()
|
||||||
|
.setText(R.string.gpodnet_toplist_header)
|
||||||
|
.setTabListener(tabListener));
|
||||||
|
actionBar.setTitle(R.string.gpodnet_main_label);
|
||||||
|
|
||||||
|
pager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
|
||||||
|
@Override
|
||||||
|
public void onPageSelected(int position) {
|
||||||
|
super.onPageSelected(position);
|
||||||
|
actionBar.setSelectedNavigationItem(position);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return root;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDestroyView() {
|
||||||
|
super.onDestroyView();
|
||||||
|
activity.getMainActivtyActionBar().removeAllTabs();
|
||||||
|
activity.getMainActivtyActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onAttach(Activity activity) {
|
||||||
|
super.onAttach(activity);
|
||||||
|
this.activity = (MainActivity) activity;
|
||||||
|
}
|
||||||
|
|
||||||
|
public class GpodnetPagerAdapter extends FragmentPagerAdapter {
|
||||||
|
|
||||||
|
|
||||||
|
private static final int NUM_PAGES = 2;
|
||||||
|
private static final int POS_TAGS = 0;
|
||||||
|
private static final int POS_TOPLIST = 1;
|
||||||
|
private static final int POS_SUGGESTIONS = 2;
|
||||||
|
|
||||||
|
Resources resources;
|
||||||
|
|
||||||
|
public GpodnetPagerAdapter(FragmentManager fm, Resources resources) {
|
||||||
|
super(fm);
|
||||||
|
this.resources = resources;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Fragment getItem(int i) {
|
||||||
|
switch (i) {
|
||||||
|
case POS_TAGS:
|
||||||
|
return new TagListFragment();
|
||||||
|
case POS_TOPLIST:
|
||||||
|
return new PodcastTopListFragment();
|
||||||
|
case POS_SUGGESTIONS:
|
||||||
|
return new SuggestionListFragment();
|
||||||
|
default:
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CharSequence getPageTitle(int position) {
|
||||||
|
switch (position) {
|
||||||
|
case POS_TAGS:
|
||||||
|
return getString(R.string.gpodnet_taglist_header);
|
||||||
|
case POS_TOPLIST:
|
||||||
|
return getString(R.string.gpodnet_toplist_header);
|
||||||
|
case POS_SUGGESTIONS:
|
||||||
|
return getString(R.string.gpodnet_suggestions_header);
|
||||||
|
default:
|
||||||
|
return super.getPageTitle(position);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getCount() {
|
||||||
|
return NUM_PAGES;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -34,7 +34,6 @@ public abstract class PodcastListFragment extends Fragment {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||||
setRetainInstance(true);
|
|
||||||
View root = inflater.inflate(R.layout.gpodnet_podcast_list, container, false);
|
View root = inflater.inflate(R.layout.gpodnet_podcast_list, container, false);
|
||||||
|
|
||||||
gridView = (GridView) root.findViewById(R.id.gridView);
|
gridView = (GridView) root.findViewById(R.id.gridView);
|
||||||
|
47
src/de/danoeh/antennapod/fragment/gpodnet/TagFragment.java
Normal file
47
src/de/danoeh/antennapod/fragment/gpodnet/TagFragment.java
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
package de.danoeh.antennapod.fragment.gpodnet;
|
||||||
|
|
||||||
|
import android.os.Bundle;
|
||||||
|
import de.danoeh.antennapod.activity.MainActivity;
|
||||||
|
import de.danoeh.antennapod.gpoddernet.GpodnetService;
|
||||||
|
import de.danoeh.antennapod.gpoddernet.GpodnetServiceException;
|
||||||
|
import de.danoeh.antennapod.gpoddernet.model.GpodnetPodcast;
|
||||||
|
import de.danoeh.antennapod.gpoddernet.model.GpodnetTag;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Shows all podcasts from gpodder.net that belong to a specific tag.
|
||||||
|
* Use the newInstance method of this class to create a new TagFragment.
|
||||||
|
*/
|
||||||
|
public class TagFragment extends PodcastListFragment {
|
||||||
|
|
||||||
|
private static final String TAG = "TagFragment";
|
||||||
|
private static final int PODCAST_COUNT = 50;
|
||||||
|
|
||||||
|
private GpodnetTag tag;
|
||||||
|
|
||||||
|
public static TagFragment newInstance(String tagName) {
|
||||||
|
if (tagName == null) throw new IllegalArgumentException("tagName = null");
|
||||||
|
TagFragment fragment = new TagFragment();
|
||||||
|
Bundle args = new Bundle();
|
||||||
|
args.putString("tag", tagName);
|
||||||
|
fragment.setArguments(args);
|
||||||
|
return fragment;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
|
||||||
|
Bundle args = getArguments();
|
||||||
|
if (args == null || args.getString("tag") == null) throw new IllegalArgumentException("args invalid");
|
||||||
|
|
||||||
|
tag = new GpodnetTag(args.getString("tag"));
|
||||||
|
((MainActivity) getActivity()).getMainActivtyActionBar().setTitle(tag.getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected List<GpodnetPodcast> loadPodcastData(GpodnetService service) throws GpodnetServiceException {
|
||||||
|
return service.getPodcastsForTag(tag, PODCAST_COUNT);
|
||||||
|
}
|
||||||
|
}
|
@ -9,6 +9,7 @@ import android.view.View;
|
|||||||
import android.widget.AdapterView;
|
import android.widget.AdapterView;
|
||||||
import android.widget.ArrayAdapter;
|
import android.widget.ArrayAdapter;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
import de.danoeh.antennapod.activity.MainActivity;
|
||||||
import de.danoeh.antennapod.activity.gpoddernet.GpodnetTagActivity;
|
import de.danoeh.antennapod.activity.gpoddernet.GpodnetTagActivity;
|
||||||
import de.danoeh.antennapod.gpoddernet.GpodnetService;
|
import de.danoeh.antennapod.gpoddernet.GpodnetService;
|
||||||
import de.danoeh.antennapod.gpoddernet.GpodnetServiceException;
|
import de.danoeh.antennapod.gpoddernet.GpodnetServiceException;
|
||||||
@ -24,15 +25,13 @@ public class TagListFragment extends ListFragment {
|
|||||||
@Override
|
@Override
|
||||||
public void onViewCreated(View view, Bundle savedInstanceState) {
|
public void onViewCreated(View view, Bundle savedInstanceState) {
|
||||||
super.onViewCreated(view, savedInstanceState);
|
super.onViewCreated(view, savedInstanceState);
|
||||||
setRetainInstance(true);
|
|
||||||
|
|
||||||
getListView().setOnItemClickListener(new AdapterView.OnItemClickListener() {
|
getListView().setOnItemClickListener(new AdapterView.OnItemClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
||||||
String selectedTag = (String) getListAdapter().getItem(position);
|
String selectedTag = (String) getListAdapter().getItem(position);
|
||||||
Intent intent = new Intent(getActivity(), GpodnetTagActivity.class);
|
MainActivity activity = (MainActivity) getActivity();
|
||||||
intent.putExtra(GpodnetTagActivity.ARG_TAGNAME, selectedTag);
|
activity.loadChildFragment(TagFragment.newInstance(selectedTag));
|
||||||
startActivity(intent);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user