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 }