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

SubscriptionForenActivity.java (5116B)


      1 /**
      2  * 
      3  */
      4 package de.mtbnews.android;
      5 
      6 import java.io.IOException;
      7 import java.util.ArrayList;
      8 import java.util.List;
      9 
     10 import android.app.ListActivity;
     11 import android.content.Intent;
     12 import android.content.SharedPreferences;
     13 import android.os.Bundle;
     14 import android.preference.PreferenceManager;
     15 import android.view.ContextMenu;
     16 import android.view.Menu;
     17 import android.view.MenuInflater;
     18 import android.view.MenuItem;
     19 import android.view.View;
     20 import android.view.ContextMenu.ContextMenuInfo;
     21 import android.view.View.OnCreateContextMenuListener;
     22 import android.widget.AdapterView;
     23 import android.widget.BaseAdapter;
     24 import android.widget.ListAdapter;
     25 import android.widget.ListView;
     26 import android.widget.AdapterView.OnItemClickListener;
     27 import de.mtbnews.android.adapter.ListEntryContentAdapter;
     28 import de.mtbnews.android.tapatalk.TapatalkClient;
     29 import de.mtbnews.android.tapatalk.TapatalkException;
     30 import de.mtbnews.android.tapatalk.wrapper.Forum;
     31 import de.mtbnews.android.util.ServerAsyncTask;
     32 import de.mtbnews.android.util.Utils;
     33 
     34 /**
     35  * @author dankert
     36  * 
     37  */
     38 public class SubscriptionForenActivity extends ListActivity
     39 {
     40 	private SharedPreferences prefs;
     41 	private TapatalkClient client;
     42 
     43 	private final List<Forum> forumList = new ArrayList<Forum>();
     44 
     45 	@Override
     46 	protected void onCreate(Bundle savedInstanceState)
     47 	{
     48 		super.onCreate(savedInstanceState);
     49 
     50 		setTheme(((IBCApplication) getApplication()).themeResId);
     51 		setContentView(R.layout.listing);
     52 
     53 		client = ((IBCApplication) getApplication()).getTapatalkClient();
     54 		prefs = PreferenceManager.getDefaultSharedPreferences(this);
     55 
     56 		ListAdapter adapter = new ListEntryContentAdapter(SubscriptionForenActivity.this, forumList);
     57 		setListAdapter(adapter);
     58 
     59 		ListView list = getListView();
     60 		list.setOnCreateContextMenuListener(new OnCreateContextMenuListener()
     61 		{
     62 
     63 			@Override
     64 			public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo)
     65 			{
     66 				MenuInflater menuInflater = new MenuInflater(getApplication());
     67 				menuInflater.inflate(R.menu.topic_context, menu);
     68 
     69 			}
     70 		});
     71 
     72 		list.setOnItemClickListener(new OnItemClickListener()
     73 		{
     74 			@Override
     75 			public void onItemClick(AdapterView<?> parent, View view, int position, long id)
     76 			{
     77 				final Intent intent = new Intent(SubscriptionForenActivity.this, ForumActivity.class);
     78 				intent.putExtra(ForumActivity.FORUM_ID, forumList.get(position).getId());
     79 				startActivity(intent);
     80 			}
     81 		});
     82 
     83 		loadForumList();
     84 	}
     85 
     86 	private void loadForumList()
     87 	{
     88 		new ServerAsyncTask(this, R.string.waitingfor_subscription_forums)
     89 		{
     90 
     91 			private List<Forum> newForumList;
     92 
     93 			@Override
     94 			protected void callServer() throws IOException, TapatalkException
     95 			{
     96 
     97 				// Login.
     98 				if (Utils.loginExceeded(client))
     99 					client.login(prefs.getString("username", ""), prefs.getString("password", ""));
    100 
    101 				newForumList = client.getSubscribedForum(false);
    102 			}
    103 
    104 			protected void doOnSuccess()
    105 			{
    106 				// Die Referenz der Liste darf nicht geändert werden, da der
    107 				// ListAdapter mit der Instanz verknüpft ist!
    108 				forumList.clear();
    109 				forumList.addAll(newForumList);
    110 
    111 				((BaseAdapter) SubscriptionForenActivity.this.getListAdapter()).notifyDataSetChanged();
    112 			}
    113 
    114 		}.executeSynchronized();
    115 	}
    116 
    117 	@Override
    118 	public boolean onContextItemSelected(MenuItem item)
    119 	{
    120 		AdapterView.AdapterContextMenuInfo menuInfo = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
    121 
    122 		switch (item.getItemId())
    123 		{
    124 			case R.id.menu_goto_top:
    125 
    126 				final Intent intent = new Intent(SubscriptionForenActivity.this, ForumActivity.class);
    127 				intent.putExtra("forum_id", forumList.get(menuInfo.position).getId());
    128 				intent.putExtra("first_post", true);
    129 				startActivity(intent);
    130 				return true;
    131 
    132 			case R.id.menu_goto_bottom:
    133 
    134 				final Intent intent2 = new Intent(SubscriptionForenActivity.this, ForumActivity.class);
    135 				intent2.putExtra("forum_id", forumList.get(menuInfo.position).getId());
    136 				intent2.putExtra("last_post", true);
    137 				startActivity(intent2);
    138 				return true;
    139 		}
    140 
    141 		return super.onContextItemSelected(item);
    142 	}
    143 
    144 	public boolean onCreateOptionsMenu(Menu menu)
    145 	{
    146 		return super.onCreateOptionsMenu(menu);
    147 	}
    148 
    149 	public boolean onOptionsItemSelected(MenuItem item)
    150 	{
    151 		switch (item.getItemId())
    152 		{
    153 			case R.id.menu_preferences:
    154 				startActivity(new Intent(this, Configuration.class));
    155 				return true;
    156 
    157 			case R.id.menu_mailbox:
    158 				startActivity(new Intent(this, MailboxActivity.class));
    159 				return true;
    160 
    161 			case R.id.menu_participated_topics:
    162 				Intent intent = new Intent(this, SearchActivity.class);
    163 				intent.setAction(SearchActivity.ACTION_SEARCH_PARTICIPATED_TOPICS);
    164 				startActivity(intent);
    165 				return true;
    166 
    167 			case R.id.menu_latest_topics:
    168 				Intent intent2 = new Intent(this, SearchActivity.class);
    169 				intent2.setAction(SearchActivity.ACTION_SEARCH_LATEST_TOPICS);
    170 				startActivity(intent2);
    171 				return true;
    172 			case R.id.menu_unread_topics:
    173 				Intent intent3 = new Intent(this, SearchActivity.class);
    174 				intent3.setAction(SearchActivity.ACTION_SEARCH_UNREAD_TOPICS);
    175 				startActivity(intent3);
    176 				return true;
    177 
    178 		}
    179 		return false;
    180 	}
    181 
    182 }