| 1 | ///////////////////////////////////////////////////////////////////////////////////////////////////
 | 
  
    | 2 | // Copyright 2016 Leszek Koltunski                                                               //
 | 
  
    | 3 | //                                                                                               //
 | 
  
    | 4 | // This file is part of Distorted.                                                               //
 | 
  
    | 5 | //                                                                                               //
 | 
  
    | 6 | // Distorted is free software: you can redistribute it and/or modify                             //
 | 
  
    | 7 | // it under the terms of the GNU General Public License as published by                          //
 | 
  
    | 8 | // the Free Software Foundation, either version 2 of the License, or                             //
 | 
  
    | 9 | // (at your option) any later version.                                                           //
 | 
  
    | 10 | //                                                                                               //
 | 
  
    | 11 | // Distorted is distributed in the hope that it will be useful,                                  //
 | 
  
    | 12 | // but WITHOUT ANY WARRANTY; without even the implied warranty of                                //
 | 
  
    | 13 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                                 //
 | 
  
    | 14 | // GNU General Public License for more details.                                                  //
 | 
  
    | 15 | //                                                                                               //
 | 
  
    | 16 | // You should have received a copy of the GNU General Public License                             //
 | 
  
    | 17 | // along with Distorted.  If not, see <http://www.gnu.org/licenses/>.                            //
 | 
  
    | 18 | ///////////////////////////////////////////////////////////////////////////////////////////////////
 | 
  
    | 19 | 
 | 
  
    | 20 | package org.distorted.examples;
 | 
  
    | 21 | 
 | 
  
    | 22 | import java.util.ArrayList;
 | 
  
    | 23 | import java.util.HashMap;
 | 
  
    | 24 | import java.util.List;
 | 
  
    | 25 | import java.util.Map;
 | 
  
    | 26 | 
 | 
  
    | 27 | import android.app.Activity;
 | 
  
    | 28 | import android.app.ListActivity;
 | 
  
    | 29 | import android.content.Intent;
 | 
  
    | 30 | import android.os.Bundle;
 | 
  
    | 31 | import android.util.SparseArray;
 | 
  
    | 32 | import android.view.View;
 | 
  
    | 33 | import android.widget.AdapterView;
 | 
  
    | 34 | import android.widget.AdapterView.OnItemClickListener;
 | 
  
    | 35 | import android.widget.SimpleAdapter;
 | 
  
    | 36 | 
 | 
  
    | 37 | import org.distorted.examples.monalisa.MonaLisaActivity;
 | 
  
    | 38 | import org.distorted.examples.sink.SinkActivity;
 | 
  
    | 39 | import org.distorted.examples.fov.FOVActivity;
 | 
  
    | 40 | import org.distorted.examples.deform.DeformActivity;
 | 
  
    | 41 | import org.distorted.examples.listener.ListenerActivity;
 | 
  
    | 42 | import org.distorted.examples.dynamic.DynamicActivity;
 | 
  
    | 43 | import org.distorted.examples.girl.GirlActivity;
 | 
  
    | 44 | import org.distorted.examples.macroblock.MacroblockActivity;
 | 
  
    | 45 | import org.distorted.examples.movingeffects.MovingEffectsActivity;
 | 
  
    | 46 | import org.distorted.examples.olimpic.OlimpicActivity;
 | 
  
    | 47 | import org.distorted.examples.differenteffects.DifferentEffectsActivity;
 | 
  
    | 48 | import org.distorted.examples.differentbitmaps.DifferentBitmapsActivity;
 | 
  
    | 49 | import org.distorted.examples.effects2d.Effects2DActivity;
 | 
  
    | 50 | import org.distorted.examples.check.CheckActivity;
 | 
  
    | 51 | import org.distorted.examples.bean.BeanActivity;
 | 
  
    | 52 | import org.distorted.examples.fbo.FBOActivity;
 | 
  
    | 53 | import org.distorted.examples.starwars.StarWarsActivity;
 | 
  
    | 54 | import org.distorted.examples.cubes.CubesActivity;
 | 
  
    | 55 | import org.distorted.examples.quaternion.QuaternionActivity;
 | 
  
    | 56 | import org.distorted.examples.effects3d.Effects3DActivity;
 | 
  
    | 57 | import org.distorted.examples.plainmonalisa.PlainMonaLisaActivity;
 | 
  
    | 58 | import org.distorted.examples.save.SaveActivity;
 | 
  
    | 59 | 
 | 
  
    | 60 | ///////////////////////////////////////////////////////////////////////////////////////////////////
 | 
  
    | 61 | 
 | 
  
    | 62 | public class TableOfContents extends ListActivity 
 | 
  
    | 63 |   {
 | 
  
    | 64 |   private static final String ITEM_IMAGE = "item_image";
 | 
  
    | 65 |   private static final String ITEM_TITLE = "item_title";
 | 
  
    | 66 |   private static final String ITEM_SUBTITLE = "item_subtitle"; 
 | 
  
    | 67 | 
 | 
  
    | 68 | ///////////////////////////////////////////////////////////////////////////////////////////////////
 | 
  
    | 69 |    
 | 
  
    | 70 |   @Override
 | 
  
    | 71 |   public void onCreate(Bundle savedInstanceState) 
 | 
  
    | 72 |    {
 | 
  
    | 73 |    super.onCreate(savedInstanceState);
 | 
  
    | 74 |    setTitle(R.string.toc);
 | 
  
    | 75 |    setContentView(R.layout.table_of_contents);
 | 
  
    | 76 |       
 | 
  
    | 77 |    final List<Map<String, Object>> data = new ArrayList<>();
 | 
  
    | 78 |    final SparseArray<Class<? extends Activity>> activityMapping = new SparseArray<>();
 | 
  
    | 79 |       
 | 
  
    | 80 |    int i = 0;
 | 
  
    | 81 |    
 | 
  
    | 82 |    {
 | 
  
    | 83 |       final Map<String, Object> item = new HashMap<>();
 | 
  
    | 84 |       item.put(ITEM_IMAGE, R.drawable.icon_example_monalisa);
 | 
  
    | 85 |       item.put(ITEM_TITLE, (i+1)+". "+getText(R.string.example_monalisa));
 | 
  
    | 86 |       item.put(ITEM_SUBTITLE, getText(R.string.example_monalisa_subtitle));
 | 
  
    | 87 |       data.add(item);
 | 
  
    | 88 |       activityMapping.put(i++, MonaLisaActivity.class);        
 | 
  
    | 89 |    }
 | 
  
    | 90 |       
 | 
  
    | 91 |    {
 | 
  
    | 92 |       final Map<String, Object> item = new HashMap<>();
 | 
  
    | 93 |       item.put(ITEM_IMAGE, R.drawable.icon_example_sink);
 | 
  
    | 94 |       item.put(ITEM_TITLE, (i+1)+". "+getText(R.string.example_sink));
 | 
  
    | 95 |       item.put(ITEM_SUBTITLE, getText(R.string.example_sink_subtitle));
 | 
  
    | 96 |       data.add(item);
 | 
  
    | 97 |       activityMapping.put(i++, SinkActivity.class);
 | 
  
    | 98 |    }
 | 
  
    | 99 |    
 | 
  
    | 100 |    {
 | 
  
    | 101 |       final Map<String, Object> item = new HashMap<>();
 | 
  
    | 102 |       item.put(ITEM_IMAGE, R.drawable.icon_example_bean);
 | 
  
    | 103 |       item.put(ITEM_TITLE, (i+1)+". "+getText(R.string.example_bean));
 | 
  
    | 104 |       item.put(ITEM_SUBTITLE, getText(R.string.example_bean_subtitle));
 | 
  
    | 105 |       data.add(item);
 | 
  
    | 106 |       activityMapping.put(i++, BeanActivity.class);
 | 
  
    | 107 |    }
 | 
  
    | 108 |    
 | 
  
    | 109 |    {
 | 
  
    | 110 |       final Map<String, Object> item = new HashMap<>();
 | 
  
    | 111 |       item.put(ITEM_IMAGE, R.drawable.icon_example_fov);
 | 
  
    | 112 |       item.put(ITEM_TITLE, (i+1)+". "+getText(R.string.example_fov));
 | 
  
    | 113 |       item.put(ITEM_SUBTITLE, getText(R.string.example_fov_subtitle));
 | 
  
    | 114 |       data.add(item);
 | 
  
    | 115 |       activityMapping.put(i++, FOVActivity.class);
 | 
  
    | 116 |    }
 | 
  
    | 117 |          
 | 
  
    | 118 |    {
 | 
  
    | 119 |       final Map<String, Object> item = new HashMap<>();
 | 
  
    | 120 |       item.put(ITEM_IMAGE, R.drawable.icon_example_deform);
 | 
  
    | 121 |       item.put(ITEM_TITLE, (i+1)+". "+getText(R.string.example_deform));
 | 
  
    | 122 |       item.put(ITEM_SUBTITLE, getText(R.string.example_deform_subtitle));
 | 
  
    | 123 |       data.add(item);
 | 
  
    | 124 |       activityMapping.put(i++, DeformActivity.class);
 | 
  
    | 125 |    }
 | 
  
    | 126 |   
 | 
  
    | 127 |    {
 | 
  
    | 128 |       final Map<String, Object> item = new HashMap<>();
 | 
  
    | 129 |       item.put(ITEM_IMAGE, R.drawable.icon_example_listener);
 | 
  
    | 130 |       item.put(ITEM_TITLE, (i+1)+". "+getText(R.string.example_listener));
 | 
  
    | 131 |       item.put(ITEM_SUBTITLE, getText(R.string.example_listener_subtitle));
 | 
  
    | 132 |       data.add(item);
 | 
  
    | 133 |       activityMapping.put(i++, ListenerActivity.class);
 | 
  
    | 134 |    }
 | 
  
    | 135 |    
 | 
  
    | 136 |    {
 | 
  
    | 137 |       final Map<String, Object> item = new HashMap<>();
 | 
  
    | 138 |       item.put(ITEM_IMAGE, R.drawable.icon_example_dynamic);
 | 
  
    | 139 |       item.put(ITEM_TITLE, (i+1)+". "+getText(R.string.example_dynamic));
 | 
  
    | 140 |       item.put(ITEM_SUBTITLE, getText(R.string.example_dynamic_subtitle));
 | 
  
    | 141 |       data.add(item);
 | 
  
    | 142 |       activityMapping.put(i++, DynamicActivity.class);
 | 
  
    | 143 |    }
 | 
  
    | 144 |    
 | 
  
    | 145 |    {
 | 
  
    | 146 |       final Map<String, Object> item = new HashMap<>();
 | 
  
    | 147 |       item.put(ITEM_IMAGE, R.drawable.icon_example_girl);
 | 
  
    | 148 |       item.put(ITEM_TITLE, (i+1)+". "+getText(R.string.example_girl));
 | 
  
    | 149 |       item.put(ITEM_SUBTITLE, getText(R.string.example_girl_subtitle));
 | 
  
    | 150 |       data.add(item);
 | 
  
    | 151 |       activityMapping.put(i++, GirlActivity.class);
 | 
  
    | 152 |    }
 | 
  
    | 153 |    
 | 
  
    | 154 |    {
 | 
  
    | 155 |       final Map<String, Object> item = new HashMap<>();
 | 
  
    | 156 |       item.put(ITEM_IMAGE, R.drawable.icon_example_macroblock);
 | 
  
    | 157 |       item.put(ITEM_TITLE, (i+1)+". "+getText(R.string.example_macroblock));
 | 
  
    | 158 |       item.put(ITEM_SUBTITLE, getText(R.string.example_macroblock_subtitle));
 | 
  
    | 159 |       data.add(item);
 | 
  
    | 160 |       activityMapping.put(i++, MacroblockActivity.class);
 | 
  
    | 161 |    }
 | 
  
    | 162 |    
 | 
  
    | 163 |    {
 | 
  
    | 164 |       final Map<String, Object> item = new HashMap<>();
 | 
  
    | 165 |       item.put(ITEM_IMAGE, R.drawable.icon_example_movingeffects);
 | 
  
    | 166 |       item.put(ITEM_TITLE, (i+1)+". "+getText(R.string.example_movingeffects));
 | 
  
    | 167 |       item.put(ITEM_SUBTITLE, getText(R.string.example_movingeffects_subtitle));
 | 
  
    | 168 |       data.add(item);
 | 
  
    | 169 |       activityMapping.put(i++, MovingEffectsActivity.class);
 | 
  
    | 170 |    }
 | 
  
    | 171 |    
 | 
  
    | 172 |    {
 | 
  
    | 173 |       final Map<String, Object> item = new HashMap<>();
 | 
  
    | 174 |       item.put(ITEM_IMAGE, R.drawable.icon_example_differenteffects);
 | 
  
    | 175 |       item.put(ITEM_TITLE, (i+1)+". "+getText(R.string.example_differenteffects));
 | 
  
    | 176 |       item.put(ITEM_SUBTITLE, getText(R.string.example_differenteffects_subtitle));
 | 
  
    | 177 |       data.add(item);
 | 
  
    | 178 |       activityMapping.put(i++, DifferentEffectsActivity.class);
 | 
  
    | 179 |    }
 | 
  
    | 180 |    
 | 
  
    | 181 |    {
 | 
  
    | 182 |       final Map<String, Object> item = new HashMap<>();
 | 
  
    | 183 |       item.put(ITEM_IMAGE, R.drawable.icon_example_differentbitmaps);
 | 
  
    | 184 |       item.put(ITEM_TITLE, (i+1)+". "+getText(R.string.example_differentbitmaps));
 | 
  
    | 185 |       item.put(ITEM_SUBTITLE, getText(R.string.example_differentbitmaps_subtitle));
 | 
  
    | 186 |       data.add(item);
 | 
  
    | 187 |       activityMapping.put(i++, DifferentBitmapsActivity.class);
 | 
  
    | 188 |    }
 | 
  
    | 189 |    
 | 
  
    | 190 |    {
 | 
  
    | 191 |       final Map<String, Object> item = new HashMap<>();
 | 
  
    | 192 |       item.put(ITEM_IMAGE, R.drawable.icon_example_effects2d);
 | 
  
    | 193 |       item.put(ITEM_TITLE, (i+1)+". "+getText(R.string.example_effects2d));
 | 
  
    | 194 |       item.put(ITEM_SUBTITLE, getText(R.string.example_effects2d_subtitle));
 | 
  
    | 195 |       data.add(item);
 | 
  
    | 196 |       activityMapping.put(i++, Effects2DActivity.class);
 | 
  
    | 197 |    }
 | 
  
    | 198 |    
 | 
  
    | 199 |    {
 | 
  
    | 200 |       final Map<String, Object> item = new HashMap<>();
 | 
  
    | 201 |       item.put(ITEM_IMAGE, R.drawable.icon_example_check);
 | 
  
    | 202 |       item.put(ITEM_TITLE, (i+1)+". "+getText(R.string.example_check));
 | 
  
    | 203 |       item.put(ITEM_SUBTITLE, getText(R.string.example_check_subtitle));
 | 
  
    | 204 |       data.add(item);
 | 
  
    | 205 |       activityMapping.put(i++, CheckActivity.class);
 | 
  
    | 206 |    }
 | 
  
    | 207 |    
 | 
  
    | 208 |    {
 | 
  
    | 209 |       final Map<String, Object> item = new HashMap<>();
 | 
  
    | 210 |       item.put(ITEM_IMAGE, R.drawable.icon_example_fbo);
 | 
  
    | 211 |       item.put(ITEM_TITLE, (i+1)+". "+getText(R.string.example_fbo));
 | 
  
    | 212 |       item.put(ITEM_SUBTITLE, getText(R.string.example_fbo_subtitle));
 | 
  
    | 213 |       data.add(item);
 | 
  
    | 214 |       activityMapping.put(i++, FBOActivity.class);
 | 
  
    | 215 |    }
 | 
  
    | 216 |       
 | 
  
    | 217 |    {
 | 
  
    | 218 |       final Map<String, Object> item = new HashMap<>();
 | 
  
    | 219 |       item.put(ITEM_IMAGE, R.drawable.icon_example_starwars);
 | 
  
    | 220 |       item.put(ITEM_TITLE, (i+1)+". "+getText(R.string.example_starwars));
 | 
  
    | 221 |       item.put(ITEM_SUBTITLE, getText(R.string.example_starwars_subtitle));
 | 
  
    | 222 |       data.add(item);
 | 
  
    | 223 |       activityMapping.put(i++, StarWarsActivity.class);
 | 
  
    | 224 |    }
 | 
  
    | 225 |          
 | 
  
    | 226 |    {
 | 
  
    | 227 |       final Map<String, Object> item = new HashMap<>();
 | 
  
    | 228 |       item.put(ITEM_IMAGE, R.drawable.icon_example_olimpic);
 | 
  
    | 229 |       item.put(ITEM_TITLE, (i+1)+". "+getText(R.string.example_olimpic));
 | 
  
    | 230 |       item.put(ITEM_SUBTITLE, getText(R.string.example_olimpic_subtitle));
 | 
  
    | 231 |       data.add(item);
 | 
  
    | 232 |       activityMapping.put(i++, OlimpicActivity.class);
 | 
  
    | 233 |    }
 | 
  
    | 234 |    
 | 
  
    | 235 |    {
 | 
  
    | 236 |       final Map<String, Object> item = new HashMap<>();
 | 
  
    | 237 |       item.put(ITEM_IMAGE, R.drawable.icon_example_quaternion);
 | 
  
    | 238 |       item.put(ITEM_TITLE, (i+1)+". "+getText(R.string.example_quaternion));
 | 
  
    | 239 |       item.put(ITEM_SUBTITLE, getText(R.string.example_quaternion_subtitle));
 | 
  
    | 240 |       data.add(item);
 | 
  
    | 241 |       activityMapping.put(i++, QuaternionActivity.class);
 | 
  
    | 242 |    }
 | 
  
    | 243 |    
 | 
  
    | 244 |    {
 | 
  
    | 245 |       final Map<String, Object> item = new HashMap<>();
 | 
  
    | 246 |       item.put(ITEM_IMAGE, R.drawable.icon_example_cubes);
 | 
  
    | 247 |       item.put(ITEM_TITLE, (i+1)+". "+getText(R.string.example_cubes));
 | 
  
    | 248 |       item.put(ITEM_SUBTITLE, getText(R.string.example_cubes_subtitle));
 | 
  
    | 249 |       data.add(item);
 | 
  
    | 250 |       activityMapping.put(i++, CubesActivity.class);
 | 
  
    | 251 |    }
 | 
  
    | 252 |    
 | 
  
    | 253 |    {
 | 
  
    | 254 |       final Map<String, Object> item = new HashMap<>();
 | 
  
    | 255 |       item.put(ITEM_IMAGE, R.drawable.icon_example_effects3d);
 | 
  
    | 256 |       item.put(ITEM_TITLE, (i+1)+". "+getText(R.string.example_effects3d));
 | 
  
    | 257 |       item.put(ITEM_SUBTITLE, getText(R.string.example_effects3d_subtitle));
 | 
  
    | 258 |       data.add(item);
 | 
  
    | 259 |       activityMapping.put(i++, Effects3DActivity.class);
 | 
  
    | 260 |    }
 | 
  
    | 261 | 
 | 
  
    | 262 |    {
 | 
  
    | 263 |       final Map<String, Object> item = new HashMap<>();
 | 
  
    | 264 |       item.put(ITEM_IMAGE, R.drawable.icon_example_monalisa);
 | 
  
    | 265 |       item.put(ITEM_TITLE, (i+1)+". "+getText(R.string.example_plainmonalisa));
 | 
  
    | 266 |       item.put(ITEM_SUBTITLE, getText(R.string.example_plainmonalisa_subtitle));
 | 
  
    | 267 |       data.add(item);
 | 
  
    | 268 |       activityMapping.put(i++, PlainMonaLisaActivity.class);
 | 
  
    | 269 |    }
 | 
  
    | 270 | 
 | 
  
    | 271 |    {
 | 
  
    | 272 |       final Map<String, Object> item = new HashMap<>();
 | 
  
    | 273 |       item.put(ITEM_IMAGE, R.drawable.icon_example_girl);
 | 
  
    | 274 |       item.put(ITEM_TITLE, (i+1)+". "+getText(R.string.example_save));
 | 
  
    | 275 |       item.put(ITEM_SUBTITLE, getText(R.string.example_save_subtitle));
 | 
  
    | 276 |       data.add(item);
 | 
  
    | 277 |       activityMapping.put(i++, SaveActivity.class);
 | 
  
    | 278 |    }
 | 
  
    | 279 | 
 | 
  
    | 280 |    final SimpleAdapter dataAdapter = new SimpleAdapter(this, data, R.layout.toc_item, new String[] {ITEM_IMAGE, ITEM_TITLE, ITEM_SUBTITLE}, new int[] {R.id.Image, R.id.Title, R.id.SubTitle});
 | 
  
    | 281 |    setListAdapter(dataAdapter);  
 | 
  
    | 282 |       
 | 
  
    | 283 |    getListView().setOnItemClickListener(new OnItemClickListener() 
 | 
  
    | 284 |      {
 | 
  
    | 285 |      @Override
 | 
  
    | 286 |      public void onItemClick(AdapterView<?> parent, View view, int position, long id) 
 | 
  
    | 287 |       {
 | 
  
    | 288 |       final Class<? extends Activity> activityToLaunch = activityMapping.get(position);
 | 
  
    | 289 |             
 | 
  
    | 290 |       if (activityToLaunch != null)
 | 
  
    | 291 |         {
 | 
  
    | 292 |         final Intent launchIntent = new Intent(TableOfContents.this, activityToLaunch);
 | 
  
    | 293 |         startActivity(launchIntent);
 | 
  
    | 294 |         }            
 | 
  
    | 295 |       }
 | 
  
    | 296 |      });
 | 
  
    | 297 |    }  
 | 
  
    | 298 |   }
 | 
  
    | 299 | 
 | 
  
    | 300 | ///////////////////////////////////////////////////////////////////////////////////////////////////
 |