de.marcelkapfer.morseconverter.MainActivity.java Source code

Java tutorial

Introduction

Here is the source code for de.marcelkapfer.morseconverter.MainActivity.java

Source

/*
 *   This is a Android application for converting writtenMorse and normal morse code.
 *   Copyright (C) 2014-2015  Marcel Michael Kapfer
 *
 *   This program is free software: you can redistribute it and/or modify
 *   it under the terms of the GNU General Public License as published by
 *   the Free Software Foundation, either version 3 of the License, or
 *   (at your option) any later version.
 *   This program is distributed in the hope that it will be useful,
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *   GNU General Public License for more details.
 *
 *   You should have received a copy of the GNU General Public License
 *   along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *
 *   Marcel Michael Kapfer
 *   marcelmichaelkapfer@yahoo.co.nz
 *
 *   Version 1.0.1
 */

package de.marcelkapfer.morseconverter;

import android.app.Fragment;
import android.app.FragmentManager;
import android.content.Intent;
import android.content.res.Configuration;
import android.os.Bundle;
import android.support.v4.app.ActionBarDrawerToggle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;

public class MainActivity extends FragmentActivity {
    private DrawerLayout mDrawerLayout;
    private ListView mDrawerList;
    private ActionBarDrawerToggle mDrawerToggle;

    private CharSequence mDrawerTitle;
    private CharSequence mTitle;
    private String[] mMenuTitles;
    public String[] fragments = new String[] { "R.id.main", "R.id.morse", "R.id.about" };
    private static int[] fragment = new int[] { R.layout.fragment_main, R.layout.fragment_morse,
            R.layout.fragment_about };
    public static int mainPosition;

    public final static String EXTRA_MESSAGE = "de.marcelkapfer.morseconverter.MESSAGE";
    public String tfOutput = "";
    public static int lastFragment = 0;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mTitle = mDrawerTitle = getTitle();
        mMenuTitles = getResources().getStringArray(R.array.menu_array);
        mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
        mDrawerList = (ListView) findViewById(R.id.left_drawer);

        // set a custom shadow that overlays the main content when the drawer opens
        mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START);
        // set up the drawer's list view with items and click listener
        mDrawerList.setAdapter(new ArrayAdapter<String>(this, R.layout.drawer_list_item, mMenuTitles));
        mDrawerList.setOnItemClickListener(new DrawerItemClickListener());

        // enable ActionBar app icon to behave as action to toggle nav drawer
        getActionBar().setDisplayHomeAsUpEnabled(true);
        getActionBar().setHomeButtonEnabled(true);

        // ActionBarDrawerToggle ties together the the proper interactions
        // between the sliding drawer and the action bar app icon
        mDrawerToggle = new ActionBarDrawerToggle(this, /* host Activity */
                mDrawerLayout, /* DrawerLayout object */
                R.drawable.ic_drawer, /* nav drawer image to replace 'Up' caret */
                R.string.drawer_open, /* "open drawer" description for accessibility */
                R.string.drawer_close /* "close drawer" description for accessibility */
        ) {

            /** Called when a drawer has settled in a completely closed state. */
            public void onDrawerClosed(View view) {
                super.onDrawerClosed(view);
                getActionBar().setTitle(mTitle);
            }

            /** Called when a drawer has settled in a completely open state. */
            public void onDrawerOpened(View drawerView) {
                super.onDrawerOpened(drawerView);
                getActionBar().setTitle(mDrawerTitle);
            }

        };
        mDrawerLayout.setDrawerListener(mDrawerToggle);

        if (savedInstanceState == null) {
            changeFragment(lastFragment);
        }
    }

    /* The click listner for ListView in the navigation drawer */
    private class DrawerItemClickListener implements ListView.OnItemClickListener {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

            changeFragment(position);
            mainPosition = position;
        }

    }

    public void changeFragment(int position) {

        fragment_main newFragment = new fragment_main();
        Bundle args = new Bundle();
        args.putInt(fragments[position], position);
        newFragment.setArguments(args);

        // Insert the fragment by replacing any existing fragment
        FragmentManager fragmentManager = getFragmentManager();
        fragmentManager.beginTransaction().replace(R.id.container, newFragment).commit();

        mDrawerList.setItemChecked(position, true);
        setTitle(mMenuTitles[position]);
        mDrawerLayout.closeDrawer(mDrawerList);

    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Pass the event to ActionBarDrawerToggle, if it returns
        // true, then it has handled the app icon touch event
        if (mDrawerToggle.onOptionsItemSelected(item)) {
            return true;
        }
        // Handle your other action bar items...

        return super.onOptionsItemSelected(item);
    }

    @Override
    public void setTitle(CharSequence title) {
        mTitle = title;
        getActionBar().setTitle(mTitle);
    }

    /**
     * When using the ActionBarDrawerToggle, you must call it during
     * onPostCreate() and onConfigurationChanged()...
     */

    @Override
    protected void onPostCreate(Bundle savedInstanceState) {
        super.onPostCreate(savedInstanceState);
        // Sync the toggle state after onRestoreInstanceState has occurred.
        mDrawerToggle.syncState();
    }

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        mDrawerToggle.onConfigurationChanged(newConfig);
    }

    public static class fragment_main extends Fragment {
        public static final String ARG_POSITION = "menu_number";

        public fragment_main() {
            // Empty subclass required for fragment subclass
        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
            View rootView = inflater.inflate(fragment[MainActivity.mainPosition], container, false);
            //int i = getArguments().getInt(ARG_POSITION);
            //String menu = getResources().getStringArray(R.array.menu_array)[i];
            //getActivity().setTitle(menu);
            return rootView;
        }
    }

    /*
    * Code for converting latin letters into written morse
    */
    public void decode(View view) {
        EditText editText = (EditText) findViewById(R.id.edit_message);
        StringBuffer message = new StringBuffer(editText.getText());
        if (message.toString().endsWith(" ")) {
            message = message.deleteCharAt(message.length() - 1);
        }
        // Variables
        StringBuffer input = new StringBuffer();
        input = input.replace(0, input.length(), message.toString().toUpperCase());
        StringBuffer output = new StringBuffer();
        if (input.toString().equals("")) {
            tfOutput = "Please enter at least one character";
            After(view);
        } else if (input.toString().equals("LETTERSPACE")) {
            tfOutput = "#";
            After(view);
        } else if (input.toString().equals("END OF WORK")) {
            tfOutput = "000101";
            After(view);
        } else if (input.toString().equals("ERROR")) {
            tfOutput = "00000000";
            After(view);
        } else if (input.toString().equals("STARTING SIGNAL")) {
            tfOutput = "10101";
            After(view);
        } else if (input.toString().equals("ENDING SIGNAL")) {
            tfOutput = "01010";
            After(view);
        } else if (input.toString().equals("UNDERSTOOD")) {
            tfOutput = "00010";
            After(view);
        } else if (input.toString().equals("WAIT")) {
            tfOutput = "01000";
            After(view);
        } else if (input.toString().equals("SOS")) {
            tfOutput = "000111000";
            After(view);
        } else if (input.toString().equals("LETTER SPACE")) {
            tfOutput = "#";
            After(view);
        } else if (input.toString().equals("WORD SPACE")) {
            tfOutput = "+";
            After(view);
        } else {
            for (int c = input.length(); c > 0; c--) {

                if (input.toString().startsWith(" ")) {
                    if (output.toString().endsWith("#")) {
                        output.delete(output.length() - 1, output.length());
                    }
                    output.append("+");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("A")) {
                    output.append("01#");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("B")) {
                    output.append("1000#");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("C")) {
                    output.append("1010#");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("D")) {
                    output.append("100#");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("E")) {
                    output.append("0#");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("F")) {
                    output.append("0010#");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("G")) {
                    output.append("110#");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("H")) {
                    output.append("0000#");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("I")) {
                    output.append("00#");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("J")) {
                    output.append("0111#");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("K")) {
                    output.append("101#");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("L")) {
                    output.append("0100#");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("M")) {
                    output.append("11#");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("N")) {
                    output.append("10#");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("O")) {
                    output.append("111#");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("P")) {
                    output.append("0110#");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("Q")) {
                    output.append("1101#");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("R")) {
                    output.append("010#");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("S")) {
                    output.append("000#");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("T")) {
                    output.append("1#");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("U")) {
                    output.append("001#");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("V")) {
                    output.append("0001#");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("W")) {
                    output.append("011#");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("X")) {
                    output.append("1001#");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("Y")) {
                    output.append("1011#");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("Z")) {
                    output.append("1100#");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("0")) {
                    output.append("11111#");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("1")) {
                    output.append("01111#");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("2")) {
                    output.append("00111#");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("3")) {
                    output.append("00011#");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("4")) {
                    output.append("00001#");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("5")) {
                    output.append("00000#");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("6")) {
                    output.append("10000#");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("7")) {
                    output.append("11000#");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("8")) {
                    output.append("11100#");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("9")) {
                    output.append("11110#");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("")) {
                    output.append("0101#");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("")) {
                    output.append("1110#");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("")) {
                    output.append("0011#");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("")) {
                    output.append("00011000#");
                    input.delete(0, 1);
                } else if (input.toString().startsWith(".")) {
                    output.append("010101#");
                    input.delete(0, 1);
                } else if (input.toString().startsWith(",")) {
                    output.append("110011#");
                    input.delete(0, 1);
                } else if (input.toString().startsWith(":")) {
                    output.append("111000#");
                    input.delete(0, 1);
                } else if (input.toString().startsWith(";")) {
                    output.append("101010#");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("?")) {
                    output.append("001100#");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("!")) {
                    output.append("101011#");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("-")) {
                    output.append("100001#");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("_")) {
                    output.append("001101#");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("(")) {
                    output.append("10110#");
                    input.delete(0, 1);
                } else if (input.toString().startsWith(")")) {
                    output.append("101101#");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("=")) {
                    output.append("10001#");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("+")) {
                    output.append("01010#");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("/")) {
                    output.append("10010#");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("@")) {
                    output.append("011010#");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("'")) {
                    output.append("011110#");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("$")) {
                    output.append("0001001#");
                    input.delete(0, 1);
                } else {
                    tfOutput = "Code not listed or wrong.";
                }
            }
            if (output.toString().endsWith("#")) {
                output.delete(output.length() - 1, output.length());
            }
            tfOutput = output.toString();
            lastFragment = 0;
            After(view);
        }
    }

    /*
     * Code for converting writtenMorse to latin letters
     */
    public void encode(View view) {
        EditText editText = (EditText) findViewById(R.id.edit_message);
        StringBuffer message = new StringBuffer(editText.getText());
        if (message.toString().endsWith(" ")) {
            message = message.deleteCharAt(message.length() - 1);
        }
        // Variables
        String input;
        StringBuffer output = new StringBuffer();
        input = message.toString().toUpperCase() + "#";
        StringBuffer inputToSign = new StringBuffer(input);
        while (!inputToSign.toString().equals("#")) {
            int d = 0;
            boolean signFull = true;
            StringBuffer sign = new StringBuffer();
            while (signFull) {
                if (inputToSign.toString().charAt(d) == '+' || inputToSign.toString().charAt(d) == '#') {
                    if (d == 0) {
                        if (inputToSign.toString().startsWith("+")) {
                            output.append(" ");
                        }
                        inputToSign.deleteCharAt(0);
                    } else {
                        sign.replace(0, sign.length(), inputToSign.toString().substring(0, d));
                        inputToSign.delete(0, d);
                        signFull = false;
                    }
                } else {
                    d++;
                }
            }
            if (input.equals("")) {
                break;
            } else if (sign.toString().equals("01")) {
                output.append("A");
            } else if (sign.toString().equals("1000")) {
                output.append("B");
            } else if (sign.toString().equals("1010")) {
                output.append("C");
            } else if (sign.toString().equals("100")) {
                output.append("D");
            } else if (sign.toString().equals("0")) {
                output.append("E");
            } else if (sign.toString().equals("0010")) {
                output.append("F");
            } else if (sign.toString().equals("110")) {
                output.append("G");
            } else if (sign.toString().equals("0000")) {
                output.append("H");
            } else if (sign.toString().equals("00")) {
                output.append("I");
            } else if (sign.toString().equals("0111")) {
                output.append("J");
            } else if (sign.toString().equals("101")) {
                output.append("K");
            } else if (sign.toString().equals("0100")) {
                output.append("L");
            } else if (sign.toString().equals("11")) {
                output.append("M");
            } else if (sign.toString().equals("10")) {
                output.append("N");
            } else if (sign.toString().equals("111")) {
                output.append("O");
            } else if (sign.toString().equals("0110")) {
                output.append("P");
            } else if (sign.toString().equals("1101")) {
                output.append("Q");
            } else if (sign.toString().equals("010")) {
                output.append("R");
            } else if (sign.toString().equals("000")) {
                output.append("S");
            } else if (sign.toString().equals("1")) {
                output.append("T");
            } else if (sign.toString().equals("001")) {
                output.append("U");
            } else if (sign.toString().equals("0001")) {
                output.append("V");
            } else if (sign.toString().equals("011")) {
                output.append("W");
            } else if (sign.toString().equals("1001")) {
                output.append("X");
            } else if (sign.toString().equals("1011")) {
                output.append("Y");
            } else if (sign.toString().equals("1100")) {
                output.append("Z");
            } else if (sign.toString().equals("11111")) {
                output.append("0 (zero)");
            } else if (sign.toString().equals("01111")) {
                output.append("1");
            } else if (sign.toString().equals("00111")) {
                output.append("2");
            } else if (sign.toString().equals("00011")) {
                output.append("3");
            } else if (sign.toString().equals("00001")) {
                output.append("4");
            } else if (sign.toString().equals("00000")) {
                output.append("5");
            } else if (sign.toString().equals("10000")) {
                output.append("6");
            } else if (sign.toString().equals("11000")) {
                output.append("7");
            } else if (sign.toString().equals("11100")) {
                output.append("8");
            } else if (sign.toString().equals("11110")) {
                output.append("9");
            } else if (sign.toString().equals("0101")) {
                output.append("");
            } else if (sign.toString().equals("1110")) {
                output.append("");
            } else if (sign.toString().equals("0011")) {
                output.append("");
            } else if (sign.toString().equals("00011000")) {
                output.append("");
            } else if (sign.toString().equals("1111")) {
                output.append("CH");
            } else if (sign.toString().equals("010101")) {
                output.append(".");
            } else if (sign.toString().equals("110011")) {
                output.append(",");
            } else if (sign.toString().equals("111000")) {
                output.append(":");
            } else if (sign.toString().equals("101010")) {
                output.append(";");
            } else if (sign.toString().equals("001100")) {
                output.append("?");
            } else if (sign.toString().equals("101011")) {
                output.append("!");
            } else if (sign.toString().equals("100001")) {
                output.append("-");
            } else if (sign.toString().equals("001101")) {
                output.append("_");
            } else if (sign.toString().equals("10110")) {
                output.append("(");
            } else if (sign.toString().equals("101101")) {
                output.append(")");
            } else if (sign.toString().equals("011110")) {
                output.append("'");
            } else if (sign.toString().equals("10001")) {
                output.append("=");
            } else if (sign.toString().equals("01010")) {
                output.append("+ or End of the signal");
            } else if (sign.toString().equals("10010")) {
                output.append("/");
            } else if (sign.toString().equals("011010")) {
                output.append("@");
            } else if (sign.toString().equals("10101")) {
                output.append("Begin of the signal");
            } else if (sign.toString().equals("10001")) {
                output.append("Wait");
            } else if (sign.toString().equals("00010")) {
                output.append("Understood");
            } else if (sign.toString().equals("000101")) {
                output.append("End of work");
            } else if (sign.toString().equals("000111000")) {
                output.append("SOS");
            } else if (sign.toString().equals("00000000")) {
                output.append("Error");
            } else {
                tfOutput = "Code not listed or wrong.";
            }
        }
        tfOutput = output.toString();
        lastFragment = 0;
        After(view);
        /*} catch (Exception e) {
           tfOutput.setText("Some error occured. I'm sorry!");
        }*/
    }

    /*
     * Code for converting normal letters into morse code
     */

    public void llm(View view) {
        EditText editText = (EditText) findViewById(R.id.edit_message);
        StringBuffer message = new StringBuffer(editText.getText());
        if (message.toString().endsWith(" ")) {
            message = message.deleteCharAt(message.length() - 1);
        }
        // Variables
        // Variables
        StringBuffer input = new StringBuffer();
        input = input.replace(0, input.length(), message.toString().toUpperCase());
        StringBuffer output = new StringBuffer();
        if (input.toString().equals("")) {
            tfOutput = "Please enter at least one character";
            After(view);
        } else if (input.toString().equals("LETTERSPACE")) {
            tfOutput = "   ";
            After(view);
        } else if (input.toString().equals("END OF WORK")) {
            tfOutput = "...-.-";
            After(view);
        } else if (input.toString().equals("ERROR")) {
            tfOutput = "........";
            After(view);
        } else if (input.toString().equals("STARTING SIGNAL")) {
            tfOutput = "-.-.-";
            After(view);
        } else if (input.toString().equals("ENDING SIGNAL")) {
            tfOutput = ".-.-.";
            After(view);
        } else if (input.toString().equals("UNDERSTOOD")) {
            tfOutput = "...-.";
            After(view);
        } else if (input.toString().equals("WAIT")) {
            tfOutput = ".-...";
            After(view);
        } else if (input.toString().equals("SOS")) {
            tfOutput = "...---...";
            After(view);
        } else if (input.toString().equals("LETTER SPACE")) {
            tfOutput = "   ";
            After(view);
        } else if (input.toString().equals("WORD SPACE")) {
            tfOutput = "       ";
            After(view);
        } else {
            for (int c = input.length(); c > 0; c--) {
                if (input.toString().startsWith(" ")) {
                    if (output.toString().endsWith("   ")) {
                        output.delete(output.length() - 3, output.length());
                    }
                    output.append("       ");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("A")) {
                    output.append(".-   ");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("B")) {
                    output.append("-...   ");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("C")) {
                    output.append("-.-.   ");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("D")) {
                    output.append("-..   ");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("E")) {
                    output.append(".   ");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("F")) {
                    output.append("..-.   ");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("G")) {
                    output.append("--.   ");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("H")) {
                    output.append("....   ");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("I")) {
                    output.append("..   ");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("J")) {
                    output.append(".---   ");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("K")) {
                    output.append("-.-   ");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("L")) {
                    output.append(".-..   ");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("M")) {
                    output.append("--   ");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("N")) {
                    output.append("-.   ");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("O")) {
                    output.append("---   ");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("P")) {
                    output.append(".--.   ");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("Q")) {
                    output.append("--.-   ");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("R")) {
                    output.append(".-.   ");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("S")) {
                    output.append("...   ");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("T")) {
                    output.append("-   ");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("U")) {
                    output.append("..-   ");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("V")) {
                    output.append("...-   ");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("W")) {
                    output.append(".--   ");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("X")) {
                    output.append("-..-   ");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("Y")) {
                    output.append("-.--   ");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("Z")) {
                    output.append("--..   ");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("0")) {
                    output.append("-----   ");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("1")) {
                    output.append(".----   ");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("2")) {
                    output.append("..---   ");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("3")) {
                    output.append("...--   ");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("4")) {
                    output.append("....-   ");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("5")) {
                    output.append(".....   ");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("6")) {
                    output.append("-....   ");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("7")) {
                    output.append("--...   ");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("8")) {
                    output.append("---..   ");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("9")) {
                    output.append("----.   ");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("")) {
                    output.append(".-.-   ");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("")) {
                    output.append("---.   ");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("")) {
                    output.append("..--   ");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("")) {
                    output.append("...--...   ");
                    input.delete(0, 1);
                } else if (input.toString().startsWith(".")) {
                    output.append(".-.-.-   ");
                    input.delete(0, 1);
                } else if (input.toString().startsWith(",")) {
                    output.append("--..--   ");
                    input.delete(0, 1);
                } else if (input.toString().startsWith(":")) {
                    output.append("---...   ");
                    input.delete(0, 1);
                } else if (input.toString().startsWith(";")) {
                    output.append("-.-.-.   ");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("?")) {
                    output.append("..--..   ");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("!")) {
                    output.append("-.-.--   ");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("-")) {
                    output.append("-....-   ");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("_")) {
                    output.append("..--.-   ");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("(")) {
                    output.append("-.--.   ");
                    input.delete(0, 1);
                } else if (input.toString().startsWith(")")) {
                    output.append("-.--.-   ");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("=")) {
                    output.append("-...-   ");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("+")) {
                    output.append(".-.-.   ");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("/")) {
                    output.append("-..-.   ");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("@")) {
                    output.append(".--.-.   ");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("'")) {
                    output.append(".----.   ");
                    input.delete(0, 1);
                } else if (input.toString().startsWith("$")) {
                    output.append("...-..-   ");
                    input.delete(0, 1);
                } else {
                    tfOutput = "Code not listed or wrong.";
                }
            }
            if (output.toString().endsWith("   ")) {
                output.delete(output.length() - 3, output.length());
            }
            tfOutput = output.toString();
            lastFragment = 1;
            After(view);
        }
    }

    /*
     * Code for converting morse code into latin letters
     */
    public void mll(View view) {
        EditText editText = (EditText) findViewById(R.id.edit_message);
        StringBuffer message = new StringBuffer(editText.getText());
        if (message.toString().endsWith(" ")) {
            message = message.deleteCharAt(message.length() - 1);
        }
        String input;
        StringBuffer output = new StringBuffer();
        input = message.toString().toUpperCase() + "#";
        StringBuffer inputToSign = new StringBuffer(input);
        while (!message.toString().equals("   ")) {
            int d = 0;
            boolean signFull = true;
            StringBuffer sign = new StringBuffer();
            while (signFull) {
                if (inputToSign.toString().startsWith("       ")) {
                    output.append(" ");
                    inputToSign.delete(d, d + 9);
                } else if (inputToSign.toString().substring(d, d + 3).equals("   ")) {
                    if (d == 0) {
                        inputToSign.delete(0, 3);
                    } else {
                        sign.replace(0, sign.length(), inputToSign.toString().substring(0, d));
                        inputToSign.delete(0, d);
                        signFull = false;
                    }
                } else {
                    d++;
                }
            }
            if (sign.toString().equals(".-")) {
                output.append("A");
            } else if (sign.toString().equals("-...")) {
                output.append("B");
            } else if (sign.toString().equals("-.-.")) {
                output.append("C");
            } else if (sign.toString().equals("-..")) {
                output.append("D");
            } else if (sign.toString().equals(".")) {
                output.append("E");
            } else if (sign.toString().equals("..-.")) {
                output.append("F");
            } else if (sign.toString().equals("--.")) {
                output.append("G");
            } else if (sign.toString().equals("....")) {
                output.append("H");
            } else if (sign.toString().equals("..")) {
                output.append("I");
            } else if (sign.toString().equals(".---")) {
                output.append("J");
            } else if (sign.toString().equals("-.-")) {
                output.append("K");
            } else if (sign.toString().equals(".-..")) {
                output.append("L");
            } else if (sign.toString().equals("--")) {
                output.append("M");
            } else if (sign.toString().equals("-.")) {
                output.append("N");
            } else if (sign.toString().equals("---")) {
                output.append("O");
            } else if (sign.toString().equals(".--.")) {
                output.append("P");
            } else if (sign.toString().equals("--.-")) {
                output.append("Q");
            } else if (sign.toString().equals(".-.")) {
                output.append("R");
            } else if (sign.toString().equals("...")) {
                output.append("S");
            } else if (sign.toString().equals("-")) {
                output.append("T");
            } else if (sign.toString().equals("..-")) {
                output.append("U");
            } else if (sign.toString().equals("...-")) {
                output.append("V");
            } else if (sign.toString().equals(".--")) {
                output.append("W");
            } else if (sign.toString().equals("-..-")) {
                output.append("X");
            } else if (sign.toString().equals("-.--")) {
                output.append("Y");
            } else if (sign.toString().equals("--..")) {
                output.append("Z");
            } else if (sign.toString().equals("-----")) {
                output.append(". (zero)");
            } else if (sign.toString().equals(".----")) {
                output.append("-");
            } else if (sign.toString().equals("..---")) {
                output.append("2");
            } else if (sign.toString().equals("...--")) {
                output.append("3");
            } else if (sign.toString().equals("....-")) {
                output.append("4");
            } else if (sign.toString().equals(".....")) {
                output.append("5");
            } else if (sign.toString().equals("-....")) {
                output.append("6");
            } else if (sign.toString().equals("--...")) {
                output.append("7");
            } else if (sign.toString().equals("---..")) {
                output.append("8");
            } else if (sign.toString().equals("----.")) {
                output.append("9");
            } else if (sign.toString().equals(".-.-")) {
                output.append("");
            } else if (sign.toString().equals("---.")) {
                output.append("");
            } else if (sign.toString().equals("..--")) {
                output.append("");
            } else if (sign.toString().equals("...--...")) {
                output.append("");
            } else if (sign.toString().equals("----")) {
                output.append("CH");
            } else if (sign.toString().equals(".-.-.-")) {
                output.append(".");
            } else if (sign.toString().equals("--..--")) {
                output.append(",");
            } else if (sign.toString().equals("---...")) {
                output.append(":");
            } else if (sign.toString().equals("-.-.-.")) {
                output.append(";");
            } else if (sign.toString().equals("..--..")) {
                output.append("?");
            } else if (sign.toString().equals("-.-.--")) {
                output.append("!");
            } else if (sign.toString().equals("-....-")) {
                output.append("-");
            } else if (sign.toString().equals("..--.-")) {
                output.append("_");
            } else if (sign.toString().equals("-.--.")) {
                output.append("(");
            } else if (sign.toString().equals("-.--.-")) {
                output.append(")");
            } else if (sign.toString().equals(".----.")) {
                output.append("'");
            } else if (sign.toString().equals("-...-")) {
                output.append("=");
            } else if (sign.toString().equals(".-.-.")) {
                output.append("+ or End of the signal");
            } else if (sign.toString().equals("-..-.")) {
                output.append("/");
            } else if (sign.toString().equals(".--.-.")) {
                output.append("@");
            } else if (sign.toString().equals("-.-.-")) {
                output.append("Begin of the signal");
            } else if (sign.toString().equals("-...-")) {
                output.append("Wait");
            } else if (sign.toString().equals("...-.")) {
                output.append("Understood");
            } else if (sign.toString().equals("...-.-")) {
                output.append("End of work");
            } else if (sign.toString().equals("...---...")) {
                output.append("SOS");
            } else if (sign.toString().equals("........")) {
                output.append("Error");
            } else {
                tfOutput = "Code not listed or wrong.";
            }
        }
        tfOutput = output.toString();
        lastFragment = 1;
        After(view);
    }

    public void After(View view) {
        Intent intent = new Intent(this, DisplayMessageActivity.class);
        intent.putExtra(EXTRA_MESSAGE, tfOutput);
        startActivity(intent);
        tfOutput = "";
    }
}