EMMA Coverage Report (generated Sat Mar 18 14:22:31 CET 2017)
[all classes][info.bpace.munchlife]

COVERAGE SUMMARY FOR SOURCE FILE [MunchLifeActivity.java]

nameclass, %method, %block, %line, %
MunchLifeActivity.java100% (8/8)96%  (23/24)77%  (595/773)78%  (130.5/167)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class MunchLifeActivity$7100% (1/1)50%  (1/2)11%  (6/54)10%  (1/10)
onClick (View): void 0%   (0/1)0%   (0/48)0%   (0/9)
MunchLifeActivity$7 (MunchLifeActivity): void 100% (1/1)100% (6/6)100% (1/1)
     
class MunchLifeActivity$4100% (1/1)100% (2/2)30%  (12/40)50%  (3/6)
onClick (View): void 100% (1/1)18%  (6/34)40%  (2/5)
MunchLifeActivity$4 (MunchLifeActivity): void 100% (1/1)100% (6/6)100% (1/1)
     
class MunchLifeActivity100% (1/1)100% (10/10)81%  (422/524)81%  (101.5/126)
onPrepareDialog (int, Dialog): void 100% (1/1)55%  (27/49)47%  (9/19)
onStart (): void 100% (1/1)58%  (49/84)65%  (11/17)
onPause (): void 100% (1/1)70%  (7/10)75%  (3/4)
onResume (): void 100% (1/1)70%  (7/10)75%  (3/4)
onCreate (Bundle): void 100% (1/1)82%  (146/177)87%  (30.5/35)
onOptionsItemSelected (MenuItem): boolean 100% (1/1)92%  (44/48)92%  (12/13)
onCreateDialog (int): Dialog 100% (1/1)95%  (70/74)94%  (16/17)
MunchLifeActivity (): void 100% (1/1)100% (42/42)100% (9/9)
onCreateOptionsMenu (Menu): boolean 100% (1/1)100% (11/11)100% (3/3)
onSaveInstanceState (Bundle): void 100% (1/1)100% (19/19)100% (5/5)
     
class MunchLifeActivity$1100% (1/1)100% (2/2)100% (9/9)100% (3/3)
MunchLifeActivity$1 (MunchLifeActivity): void 100% (1/1)100% (6/6)100% (1/1)
onClick (DialogInterface, int): void 100% (1/1)100% (3/3)100% (2/2)
     
class MunchLifeActivity$2100% (1/1)100% (2/2)100% (9/9)100% (3/3)
MunchLifeActivity$2 (MunchLifeActivity): void 100% (1/1)100% (6/6)100% (1/1)
onClick (DialogInterface, int): void 100% (1/1)100% (3/3)100% (2/2)
     
class MunchLifeActivity$3100% (1/1)100% (2/2)100% (58/58)100% (8/8)
MunchLifeActivity$3 (MunchLifeActivity): void 100% (1/1)100% (6/6)100% (1/1)
onClick (View): void 100% (1/1)100% (52/52)100% (7/7)
     
class MunchLifeActivity$5100% (1/1)100% (2/2)100% (40/40)100% (6/6)
MunchLifeActivity$5 (MunchLifeActivity): void 100% (1/1)100% (6/6)100% (1/1)
onClick (View): void 100% (1/1)100% (34/34)100% (5/5)
     
class MunchLifeActivity$6100% (1/1)100% (2/2)100% (39/39)100% (6/6)
MunchLifeActivity$6 (MunchLifeActivity): void 100% (1/1)100% (6/6)100% (1/1)
onClick (View): void 100% (1/1)100% (33/33)100% (5/5)

1/*
2 * This program is free software: you can redistribute it and/or modify
3 * it under the terms of the GNU General Public License as published by
4 * the Free Software Foundation, either version 3 of the License, or
5 * (at your option) any later version.
6 * 
7 * This program is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10 * GNU General Public License for more details.
11 * 
12 * You should have received a copy of the GNU General Public License
13 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
14 */
15 
16package info.bpace.munchlife;
17 
18import android.app.Activity;
19import android.os.Bundle;
20import android.os.PowerManager;
21 
22import android.view.Display;
23import android.view.WindowManager;
24import android.widget.Button;
25import android.widget.TextView;
26import android.widget.ImageView;
27 
28import android.view.MenuInflater;
29import android.view.View;
30import android.view.Menu;
31import android.view.MenuItem;
32import android.view.View.OnClickListener;
33 
34import android.app.Dialog;
35import android.app.AlertDialog;
36import android.content.DialogInterface;
37import android.content.SharedPreferences;
38import android.content.Intent;
39 
40import android.preference.PreferenceManager;
41 
42import android.graphics.Typeface;
43import java.util.Random;
44 
45import android.util.Log;
46 
47public class MunchLifeActivity extends Activity
48{
49        public static final int DIALOG_GAMEWIN = 0;
50        public static final int DIALOG_DICEROLLER = 1;
51        
52        public static final String TAG = "MunchLife";
53        public static final String KEY_LEVEL = "savedLevel";
54        public static final String KEY_GEAR_LEVEL = "savedGearLevel";
55    public static final String KEY_GENDER_FEMALE = "savedGenderFemale";
56        
57        public TextView current_level;
58        public TextView current_gear_level;
59        public TextView total_level;
60    public ImageView gender;
61    public boolean gender_female;
62        
63        PowerManager pm;
64        PowerManager.WakeLock wl;
65 
66    public Display devDisplay;
67        
68        public int level = 1;
69        public int max_level = 10;
70        public int gear_level = 0;
71        public boolean sleepPref;
72        public boolean victoryPref;
73        public String maxlevelPref;
74        
75        /**
76         * Pulls preferences and makes sure current application state matches 
77         * what is expected from preferences
78         */
79        @Override
80        protected void onStart()
81        {
82                super.onStart();
83                pm = (PowerManager) getSystemService(POWER_SERVICE);
84                wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, TAG);
85                SharedPreferences prefs;
86        prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
87                sleepPref = prefs.getBoolean("sleepPref", false);
88                victoryPref = prefs.getBoolean("victoryPref", true);
89                maxlevelPref = prefs.getString("maxlevelPref", "10");
90                
91                try
92                {
93                        max_level = Integer.parseInt(maxlevelPref);
94                }
95                catch(NumberFormatException error)
96                {
97                        Log.e(TAG, "NumberFormatException: " + error.getMessage());
98                        max_level = 10;
99                }
100                
101                if(level > max_level)
102                {
103                        level = max_level;
104                        current_level.setText(Integer.toString(level));
105                        total_level.setText(Integer.toString(level + gear_level));
106                }
107        }
108        
109        /**
110         * Restores level from saved instance and gamemode setting from preferences
111         */
112        @Override
113        public void onCreate(Bundle savedInstanceState)
114        {
115                super.onCreate(savedInstanceState);
116                setContentView(R.layout.main);
117 
118                Button up_button = (Button)findViewById(R.id.up_button);
119                up_button.setOnClickListener(levelUpClickListener);
120                
121                Button down_button = (Button)findViewById(R.id.down_button);
122                down_button.setOnClickListener(levelDownClickListener);
123                
124                Button up_gear_button = (Button)findViewById(R.id.up_gear_button);
125                up_gear_button.setOnClickListener(gearUpClickListener);
126                
127                Button down_gear_button = (Button)findViewById(R.id.down_gear_button);
128                down_gear_button.setOnClickListener(gearDownClickListener);
129 
130                current_level = (TextView)findViewById(R.id.current_level);
131                current_gear_level = (TextView)findViewById(R.id.current_gear_level);
132                total_level = (TextView)findViewById(R.id.total_level);
133 
134        gender = (ImageView)findViewById(R.id.gender);
135        gender.setOnClickListener(genderClickListener);
136 
137        // override font
138                Typeface tf = Typeface.createFromAsset(getAssets(), "fonts/windlass.ttf");
139                current_level.setTypeface(tf);
140                current_gear_level.setTypeface(tf);
141                total_level.setTypeface(tf);
142                
143                // pull old level from savedInstanceState, or default it to 1
144                level = savedInstanceState != null ? savedInstanceState.getInt(KEY_LEVEL)
145                                                   : 1;
146                gear_level = savedInstanceState != null ? savedInstanceState.getInt(KEY_GEAR_LEVEL)
147                                                        : 0;
148        gender_female = savedInstanceState != null && savedInstanceState.getBoolean(KEY_GENDER_FEMALE);
149 
150                current_level.setText(Integer.toString(level));
151                current_gear_level.setText(Integer.toString(gear_level));
152                total_level.setText(Integer.toString(level + gear_level));
153 
154        // Set gender up
155        WindowManager winManager = (WindowManager) getSystemService(WINDOW_SERVICE);
156        devDisplay = winManager.getDefaultDisplay();
157 
158        if(devDisplay.getRotation() == 0) {
159            if(gender_female) {
160                gender.setImageResource(R.drawable.female_portrait);
161            } else {
162                gender.setImageResource(R.drawable.male_portrait);
163            }
164        } else {
165            if(gender_female) {
166                gender.setImageResource(R.drawable.female_landscape);
167            } else {
168                gender.setImageResource(R.drawable.male_landscape);
169            }
170        }
171        }
172        
173        /**
174         * Save the currently displayed level
175         */
176        @Override
177        public void onSaveInstanceState(Bundle outState)
178        {
179                super.onSaveInstanceState(outState);
180                outState.putInt(KEY_LEVEL, level);
181                outState.putInt(KEY_GEAR_LEVEL, gear_level);
182        outState.putBoolean(KEY_GENDER_FEMALE, gender_female);
183        }
184        
185        /**
186         * Save the current settings option for game mode into simple preferences
187         */
188        @Override
189        protected void onPause()
190        {
191                super.onPause();
192                if(sleepPref == true)
193                {
194                         wl.release();
195                }
196        }
197 
198  @Override
199  protected void onResume()
200  {
201      super.onResume();
202      if(sleepPref == true)
203      {
204        wl.acquire();
205      }
206  }
207        
208        /**
209         * Create options menu from XML
210         */
211        @Override
212        public boolean onCreateOptionsMenu(Menu menu)
213        {
214                MenuInflater inflater = getMenuInflater();
215                inflater.inflate(R.menu.options_menu, menu);
216                return super.onCreateOptionsMenu(menu);
217        }
218        
219        /**
220         * Logic for options menu
221         */
222        @Override
223        public boolean onOptionsItemSelected(MenuItem item)
224        {
225                switch(item.getItemId())
226                {
227                        case R.id.reset:
228                                level = 1;
229                                gear_level = 0;
230                                current_level.setText(Integer.toString(level));
231                                current_gear_level.setText(Integer.toString(gear_level));
232                                total_level.setText("1");
233                                return true;
234                        case R.id.diceroller:
235                                showDialog(DIALOG_DICEROLLER);
236                                return true;
237                        case R.id.settings:
238                                Intent i = new Intent(getApplicationContext(), SettingsActivity.class);
239                                startActivity(i);
240                                return true;
241                        default:
242                                return super.onOptionsItemSelected(item);
243                }
244        }
245        
246        /**
247         * Controls settings dialog and dice roller
248         */
249        ImageView rollview;
250        @Override
251        protected Dialog onCreateDialog(int id)
252        {
253                switch(id)
254                {
255                        case DIALOG_GAMEWIN:
256                                AlertDialog.Builder gamewinbuilder = new AlertDialog.Builder(this);
257                                gamewinbuilder.setMessage(R.string.win);
258                                DialogInterface.OnClickListener gamewinClickListener;
259        gamewinClickListener = new DialogInterface.OnClickListener()
260                                {
261                                        public void onClick(DialogInterface dialog, int item)
262                                        {
263                                                dialog.dismiss();
264                                        }
265                                };
266                                gamewinbuilder.setNeutralButton(R.string.ok, gamewinClickListener);
267                                return gamewinbuilder.create();
268                        case DIALOG_DICEROLLER:
269                                AlertDialog.Builder rollerbuilder = new AlertDialog.Builder(this);
270                                rollview = new ImageView(getApplicationContext());
271                                rollview.setImageResource(R.drawable.one);
272                                rollview.setAdjustViewBounds(true);
273                                rollview.setMaxHeight(256);
274                                rollview.setMaxWidth(256);
275                                rollerbuilder.setView(rollview);
276                                DialogInterface.OnClickListener rollerClickListener;
277        rollerClickListener = new DialogInterface.OnClickListener()
278                                {
279                                        public void onClick(DialogInterface dialog, int item)
280                                        {
281                                                dialog.dismiss();
282                                        }
283                                };
284                                rollerbuilder.setNeutralButton(R.string.ok, rollerClickListener);
285                                return rollerbuilder.create();
286                        default:
287                                return super.onCreateDialog(id);
288                }
289        }
290        
291        /**
292         * Updates dice roller every time it is opened
293         */
294        @Override
295        protected void onPrepareDialog(int id, Dialog dialog)
296        {
297                switch(id)
298                {
299                        case DIALOG_GAMEWIN:
300                                return;
301                        case DIALOG_DICEROLLER:
302                                Random rand = new Random();
303                                Integer roll = rand.nextInt(6) + 1;
304                                switch(roll)
305                                {
306                                        case 1:
307                                                rollview.setImageResource(R.drawable.one);
308                                                return;
309                                        case 2:
310                                                rollview.setImageResource(R.drawable.two);
311                                                return;
312                                        case 3:
313                                                rollview.setImageResource(R.drawable.three);
314                                                return;
315                                        case 4:
316                                                rollview.setImageResource(R.drawable.four);
317                                                return;
318                                        case 5:
319                                                rollview.setImageResource(R.drawable.five);
320                                                return;
321                                        case 6:
322                                                rollview.setImageResource(R.drawable.six);
323                                                return;
324                                        default:
325                                                return;
326                                }
327                        default:
328                                return;
329                }
330        } 
331 
332        /**
333         * Increases the level by one and refreshes view as long as it is below 
334   * max_level
335         */
336        private OnClickListener levelUpClickListener = new OnClickListener()
337        {
338                @Override
339                public void onClick(View v)
340                {
341                        if(level < max_level)
342                        {
343                                level = level + 1;
344                                current_level.setText(Integer.toString(level));
345                                total_level.setText(Integer.toString(level + gear_level));
346                                // if you've won, display message
347                                if(level == max_level && victoryPref == true)
348                                {
349                                        showDialog(DIALOG_GAMEWIN);
350                                }
351                        }
352                }
353        };
354 
355        /**
356         * Decreases the level by one and refreshes view as long as it is above 1
357         */
358        private OnClickListener levelDownClickListener = new OnClickListener()
359        {
360                @Override
361                public void onClick(View v)
362                {
363                        if(level > 1)
364                        {
365                                level = level - 1;
366                                current_level.setText(Integer.toString(level));
367                                total_level.setText(Integer.toString(level + gear_level));
368                        }
369                }
370        };
371        
372        private OnClickListener gearUpClickListener = new OnClickListener()
373        {
374                @Override
375                public void onClick(View v)
376                {
377                        if(gear_level < 99)
378                        {
379                                gear_level = gear_level + 1;
380                                current_gear_level.setText(Integer.toString(gear_level));
381                                total_level.setText(Integer.toString(level + gear_level));
382                        }
383                }
384        };
385        
386        private OnClickListener gearDownClickListener = new OnClickListener()
387        {
388                @Override
389                public void onClick(View v)
390                {
391                        if(gear_level > 0)
392                        {
393                                gear_level = gear_level - 1;
394                                current_gear_level.setText(Integer.toString(gear_level));
395                                total_level.setText(Integer.toString(level + gear_level));
396                        }
397                }
398        };
399 
400    private OnClickListener genderClickListener = new OnClickListener() {
401        @Override
402        public void onClick(View v) {
403            if(devDisplay.getRotation() == 0) {
404                if(gender_female == false) {
405                    gender.setImageResource(R.drawable.female_portrait);
406                } else {
407                    gender.setImageResource(R.drawable.male_portrait);
408                }
409            } else {
410                if(gender_female == false) {
411                    gender.setImageResource(R.drawable.female_landscape);
412                } else {
413                    gender.setImageResource(R.drawable.male_landscape);
414                }
415            }
416            gender_female = gender_female == true ? false : true;
417        }
418    };
419}

[all classes][info.bpace.munchlife]
EMMA 2.0.5312 (C) Vladimir Roubtsov