android-ibc-forum

Unnamed repository; edit this file 'description' to name the repository.
git clone http://git.code.weiherhei.de/android-ibc-forum.git
Log | Files | Refs

SubscriptionTopicsActivity.java (4758B)


      1 /**
      2  * 
      3  */
      4 package de.mtbnews.android;
      5 
      6 import java.io.IOException;
      7 
      8 import android.content.Intent;
      9 import android.content.SharedPreferences;
     10 import android.os.Bundle;
     11 import android.preference.PreferenceManager;
     12 import android.view.ContextMenu;
     13 import android.view.MenuInflater;
     14 import android.view.MenuItem;
     15 import android.view.View;
     16 import android.view.ContextMenu.ContextMenuInfo;
     17 import android.view.View.OnCreateContextMenuListener;
     18 import android.widget.AdapterView;
     19 import android.widget.ListAdapter;
     20 import android.widget.ListView;
     21 import android.widget.Toast;
     22 import android.widget.AdapterView.OnItemClickListener;
     23 import de.mtbnews.android.adapter.ListEntryContentAdapter;
     24 import de.mtbnews.android.tapatalk.TapatalkClient;
     25 import de.mtbnews.android.tapatalk.TapatalkException;
     26 import de.mtbnews.android.tapatalk.wrapper.ListHolder;
     27 import de.mtbnews.android.tapatalk.wrapper.Topic;
     28 import de.mtbnews.android.util.ServerAsyncTask;
     29 import de.mtbnews.android.util.Utils;
     30 
     31 /**
     32  * Anzeige aller Beiträge eines Themas.
     33  * 
     34  * @author dankert
     35  * 
     36  */
     37 public class SubscriptionTopicsActivity extends EndlessListActivity<Topic>
     38 {
     39 	private int totalSize;
     40 	private SharedPreferences prefs;
     41 
     42 	/**
     43 	 * Diese Liste immer von oben beginnen.
     44 	 * 
     45 	 * @see de.mtbnews.android.EndlessListActivity#isAutoScrolldown()
     46 	 */
     47 	@Override
     48 	protected boolean isAutoScrolldown()
     49 	{
     50 		return false;
     51 	}
     52 
     53 	@Override
     54 	protected void onCreate(Bundle savedInstanceState)
     55 	{
     56 		super.onCreate(savedInstanceState);
     57 		prefs = PreferenceManager.getDefaultSharedPreferences(this);
     58 
     59 		setTheme(((IBCApplication) getApplication()).themeResId);
     60 		setContentView(R.layout.listing);
     61 
     62 		ListAdapter adapter = new ListEntryContentAdapter(SubscriptionTopicsActivity.this, entries);
     63 		setListAdapter(adapter);
     64 
     65 		initialLoad();
     66 
     67 		final ListView list = getListView();
     68 		list.setOnCreateContextMenuListener(new OnCreateContextMenuListener()
     69 		{
     70 
     71 			@Override
     72 			public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo)
     73 			{
     74 				MenuInflater menuInflater = new MenuInflater(getApplication());
     75 				menuInflater.inflate(R.menu.topic_context, menu);
     76 
     77 			}
     78 		});
     79 		list.setOnItemClickListener(new OnItemClickListener()
     80 		{
     81 			@Override
     82 			public void onItemClick(AdapterView<?> parent, View view, int position, long id)
     83 			{
     84 				// int aktPosition = displayFrom + position + 1;
     85 				final Intent intent = new Intent(SubscriptionTopicsActivity.this, TopicActivity.class);
     86 				Topic topic = SubscriptionTopicsActivity.super.entries.get(position);
     87 				intent.putExtra(TopicActivity.TOPIC_ID, topic.getId());
     88 				startActivity(intent);
     89 			}
     90 		});
     91 
     92 	}
     93 
     94 	@Override
     95 	public boolean onContextItemSelected(MenuItem item)
     96 	{
     97 		AdapterView.AdapterContextMenuInfo menuInfo = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
     98 
     99 		switch (item.getItemId())
    100 		{
    101 			case R.id.menu_goto_top:
    102 
    103 				final Intent intent = new Intent(SubscriptionTopicsActivity.this, TopicActivity.class);
    104 				intent.putExtra(TopicActivity.TOPIC_ID, super.entries.get(menuInfo.position).getId());
    105 				intent.putExtra(EndlessListActivity.FIRST_POST, true);
    106 				startActivity(intent);
    107 				return true;
    108 
    109 			case R.id.menu_goto_bottom:
    110 
    111 				final Intent intent2 = new Intent(SubscriptionTopicsActivity.this, TopicActivity.class);
    112 				intent2.putExtra(TopicActivity.TOPIC_ID, super.entries.get(menuInfo.position).getId());
    113 				intent2.putExtra(EndlessListActivity.LAST_POST, true);
    114 				startActivity(intent2);
    115 				return true;
    116 		}
    117 
    118 		return super.onContextItemSelected(item);
    119 	}
    120 
    121 	@Override
    122 	protected int getTotalSize()
    123 	{
    124 		return this.totalSize;
    125 	}
    126 
    127 	@Override
    128 	protected void loadEntries(final OnListLoadedListener<Topic> onListLoadedListener, final int from, final int to,
    129 			final boolean firstLoad)
    130 	{
    131 		new ServerAsyncTask(SubscriptionTopicsActivity.this, firstLoad ? R.string.waitingfor_subscription_topics
    132 				: R.string.waitingfor_loadmore)
    133 		{
    134 			private ListHolder<Topic> topicHolder;
    135 
    136 			@Override
    137 			protected void callServer() throws IOException, TapatalkException
    138 			{
    139 				TapatalkClient client = ((IBCApplication) getApplication()).getTapatalkClient();
    140 
    141 				// Login.
    142 				if (Utils.loginExceeded(client))
    143 					client.login(prefs.getString("username", ""), prefs.getString("password", ""));
    144 
    145 				topicHolder = client.getSubscribedTopics(from, to, false);
    146 
    147 				totalSize = topicHolder.totalCount;
    148 			}
    149 
    150 			protected void doOnSuccess()
    151 			{
    152 				// SubscriptionTopicsActivity.this.setTitle(topicHolder.getTitle());
    153 				onListLoadedListener.listLoaded(this.topicHolder.getChildren());
    154 
    155 				if (firstLoad)
    156 					if (prefs.getBoolean("show_hints", true))
    157 						Toast.makeText(SubscriptionTopicsActivity.this, R.string.hint_press_long, Toast.LENGTH_SHORT)
    158 								.show();
    159 
    160 			}
    161 
    162 		}.execute();
    163 	}
    164 }