/** * This file is part of TuCan Mobile. * * TuCan Mobile is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * TuCan Mobile is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with TuCan Mobile. If not, see <http://www.gnu.org/licenses/>. */ package com.dalthed.tucan.ui; import java.net.MalformedURLException; import java.net.URL; import java.util.ArrayList; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.os.Looper; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.app.ListFragment; import android.support.v4.view.ViewPager; import android.util.DisplayMetrics; import android.util.Log; import android.util.TypedValue; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView.OnItemClickListener; import android.widget.ArrayAdapter; import android.widget.ListAdapter; import android.widget.ListView; import com.actionbarsherlock.app.SherlockListFragment; import com.dalthed.tucan.R; import com.dalthed.tucan.TuCanMobileActivity; import com.dalthed.tucan.TucanMobile; import com.dalthed.tucan.Connection.AnswerObject; import com.dalthed.tucan.Connection.CookieManager; import com.dalthed.tucan.Connection.RequestObject; import com.dalthed.tucan.Connection.SimpleSecureBrowser; import com.dalthed.tucan.exceptions.LostSessionException; import com.dalthed.tucan.exceptions.TucanDownException; import com.dalthed.tucan.scraper.SingleEventScraper; import com.dalthed.tucan.util.ConfigurationChangeStorage; import com.viewpagerindicator.TitlePageIndicator; public class FragmentSingleEvent extends FragmentWebActivity { static final int NUM_ITEMS = 3; PagerAdapter mPageAdapter; ViewPager mPager; private CookieManager localCookieManager; private static final String LOG_TAG = "TuCanMobile"; private String URLStringtoCall; private Boolean PREPCall; protected String[] mTitles; private SingleEventScraper scrape; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState, true, 2); setContentView(R.layout.fragment_singleevent); // Wichtige Infos aus dem Intent holen String CookieHTTPString = getIntent().getExtras().getString("Cookie"); URLStringtoCall = getIntent().getExtras().getString("URL"); PREPCall = getIntent().getExtras().getBoolean("PREPLink"); URL URLtoCall; // FragmentTitel laden mTitles = getResources().getStringArray(R.array.singleevent_options); // PagerAdapter an ViewPager anbinden mPageAdapter = new PagerAdapter(getSupportFragmentManager(), mTitles); mPager = (ViewPager) findViewById(R.id.multipager); mPager.setAdapter(mPageAdapter); // TitlePageIndicator befüllen TitlePageIndicator titleIndicator = (TitlePageIndicator) findViewById(R.id.titles); titleIndicator.setViewPager(mPager); DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); titleIndicator.setTextSize(15*dm.scaledDensity); titleIndicator.setTextColor(0x33333333); titleIndicator.setSelectedColor(0xFF000000); titleIndicator.setFooterColor(getResources().getColor(R.color.tucan_green)); titleIndicator.setBackgroundColor(getResources().getColor(R.color.tucan_grey)); titleIndicator.setSelectedBold(false); try { // Seite aufrufen.. callResultBrowser = new SimpleSecureBrowser(this); if (TucanMobile.DEBUG) { callResultBrowser.HTTPS = this.HTTPS; } URLtoCall = new URL(URLStringtoCall); localCookieManager = new CookieManager(); localCookieManager.generateManagerfromHTTPString(URLtoCall.getHost(), CookieHTTPString); RequestObject thisRequest = new RequestObject(URLStringtoCall, localCookieManager, RequestObject.METHOD_GET, ""); callResultBrowser.execute(thisRequest); } catch (MalformedURLException e) { Log.e(LOG_TAG, e.getMessage()); } } /** * PagerAdapter für PageViewer * * @author Tyde * */ public static class PagerAdapter extends FragmentPagerAdapter { private String[] mtitles; private ArrayList<ArrayAdapter<String>> adapterList; FragmentManager fm; public OnItemClickListener clicklistener; public ArrayList<String> fileList; public PagerAdapter(FragmentManager fm, String[] titles) { super(fm); this.fm = fm; this.mtitles = titles; this.adapterList = new ArrayList<ArrayAdapter<String>>(); } @Override public ListFragment getItem(int position) { ArrayListFragment newFragment = ArrayListFragment.newInstance(position); Log.i(LOG_TAG,"getItem aufgerufen position: "+position); return (ListFragment) newFragment; } /** * Initialisiertes ListFragment abrufen * * @param position * x-Position des Fragments * @return ListFragment der position */ public ArrayListFragment getInitializedItem(int position) { ArrayListFragment fragment = (ArrayListFragment) fm .findFragmentByTag("android:switcher:" + R.id.multipager + ":" + position); return (ArrayListFragment) fragment; } /** * Speichert den entsprechenden ArrayAdapter in einer Liste des * PagerAdapters * * @param adapter * der zu speichernde Adapter */ public void setAdapter(ArrayAdapter<String> adapter) { adapterList.add(adapter); } public void setPrimaryItem(ViewGroup container, int position, Object object) { super.setPrimaryItem(container, position, object); //Log.i(LOG_TAG, "setPrimaryItem called"); if (object instanceof ArrayListFragment && position <= (adapterList.size() - 1)) { //Log.i(LOG_TAG, "is the right instance -> Position is " + position // + " and Object is: " + object.toString()); ArrayListFragment curFrag = ((ArrayListFragment) object); if (position == 2 && fileList != null) { curFrag.setFilelinks(fileList); } if (!curFrag.hasListAdapter) { curFrag.setListAdapter(adapterList.get(position)); } } /* * Liste wird eingebaut, wenn geupdated wird und die Liste noch leer * ist * * for (int ii = 0; ii <= 2; ii++) { if (getInitializedItem(ii) != * null && adapterList.size() > ii) { if * (getInitializedItem(ii).getListAdapter() == null) * getInitializedItem(ii).setListAdapter( adapterList.get(ii)); if * (ii == 2 && fileList != null) { * getInitializedItem(ii).setFilelinks(fileList); } } else { * Log.i(LOG_TAG, "hier ist schon was drin"); } * * } */ } public void initializeData(ViewGroup container) { setPrimaryItem(container, 0, getInitializedItem(0)); } @Override public void startUpdate(ViewGroup container) { super.startUpdate(container); Log.i(LOG_TAG, "startUpdate called"); } @Override public int getCount() { return NUM_ITEMS; } public CharSequence getTitle(int position) { return mtitles[position]; } @Override public CharSequence getPageTitle(int position) { return getTitle(position); } } public static class ArrayListFragment extends SherlockListFragment { int mNum; private boolean thereAreFiles; private ArrayList<String> materialLink; public boolean hasListAdapter = false; @Override public void setListAdapter(ListAdapter adapter) { super.setListAdapter(adapter); hasListAdapter = true; } static ArrayListFragment newInstance(int num) { ArrayListFragment f = new ArrayListFragment(); Bundle args = new Bundle(); args.putInt("num", num); f.setArguments(args); return f; } public int myid; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.fragment_pager_list, container, false); myid = this.getId(); return v; } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mNum = getArguments() != null ? getArguments().getInt("num") : 1; } public void setFilelinks(ArrayList<String> fileList) { thereAreFiles = true; materialLink = fileList; } @Override public void onListItemClick(ListView l, View v, int position, long id) { if (thereAreFiles) { if (!materialLink.get(position).equals("")) { String url = TucanMobile.TUCAN_PROT + TucanMobile.TUCAN_HOST + materialLink.get(position); Uri mUri = Uri.parse(url); Intent DownloadFile = new Intent(Intent.ACTION_VIEW, mUri); startActivity(DownloadFile); } } } } public void onPostExecute(AnswerObject result) { scrape = new SingleEventScraper(this, result, PREPCall, fsh, mPageAdapter, mPager); try { scrape.scrapeAdapter(0); this.PREPCall = scrape.PREPCall; } catch (LostSessionException e) { Intent BackToLoginIntent = new Intent(this, TuCanMobileActivity.class); BackToLoginIntent.putExtra("lostSession", true); startActivity(BackToLoginIntent); } catch (TucanDownException e) { TucanMobile.alertOnTucanDown(this, e.getMessage()); } } @Override public ConfigurationChangeStorage saveConfiguration() { return null; } @Override public void retainConfiguration(ConfigurationChangeStorage conf) { } }