/*
========================================================================================
Filename: 34_CommunicationApp.txt
Program 34: Create an app to i) Send an SMS. ii) Send an email. iii) To make a call.
Files Included: MainActivity.java
========================================================================================

WHAT ALL TO DO / SETUP INSTRUCTIONS:
----------------------------------------------------------------------------------------
1. UI Components to Add (in res/layout/activity_main.xml):
   Add 1 TextView: 'Communication'
   Add 3 Navigation Buttons at the top:
     - 'Send SMS' (onClick='showSMS')
     - 'Send Email' (onClick='showEmail')
     - 'Make a Call' (onClick='showCall')
   SMS Section (initially visible or toggleable):
     - 2 EditText (TextBox): phoneNumber (Phone Number), smsMessage (SMS Message)
     - 1 Button: sendSmsButton ('Send SMS', onClick='sendSMS')
   Email Section (toggleable):
     - 3 EditText (TextBox): email (Email Address), subject (Subject), emailMessage (Email Message)
     - 1 Button: sendEmailButton ('Send Email', onClick='sendEmail')
   Call Section (toggleable):
     - 1 EditText (TextBox): callNumber (Phone Number)
     - 1 Button: makeCallButton ('Make a Call', onClick='makeCall')

2. Layout Configuration:
   - LinearLayout inside ScrollView (vertical, gravity='center', padding 20dp)

3. Menu Configuration:
   - None required.

4. Themes Configuration (res/values/themes.xml):
   - Theme.MaterialComponents.DayNight.NoActionBar in themes.xml.

5. AndroidManifest.xml:
   Uses system implicit intents (ACTION_SENDTO with smsto:/mailto: and ACTION_DIAL with tel:), so no dangerous permissions are strictly needed.
   Standard launcher activity:
   <activity android:name=".MainActivity" android:exported="true" android:windowSoftInputMode="adjustResize" />

6. Additional Files & Resources Required:
   - hideAll() toggles visibility of respective fields dynamically.
========================================================================================
*/

// ======================================================================================
// File: MainActivity.java
// ======================================================================================
package com.example.communicationapp;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
    EditText phoneNumber, smsMessage;
    EditText email, subject, emailMessage;
    EditText callNumber;
    Button sendSmsButton, sendEmailButton, makeCallButton;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        phoneNumber = findViewById(R.id.phoneNumber);
        smsMessage = findViewById(R.id.smsMessage);
        email = findViewById(R.id.email);
        subject = findViewById(R.id.subject);
        emailMessage = findViewById(R.id.emailMessage);
        callNumber = findViewById(R.id.callNumber);
        sendSmsButton = findViewById(R.id.sendSmsButton);
        sendEmailButton = findViewById(R.id.sendEmailButton);
        makeCallButton = findViewById(R.id.makeCallButton);
    }
    public void showSMS(View view) {
        hideAll();
        phoneNumber.setVisibility(View.VISIBLE);
        smsMessage.setVisibility(View.VISIBLE);
        sendSmsButton.setVisibility(View.VISIBLE);
    }
    public void showEmail(View view) {
        hideAll();
        email.setVisibility(View.VISIBLE);
        subject.setVisibility(View.VISIBLE);
        emailMessage.setVisibility(View.VISIBLE);
        sendEmailButton.setVisibility(View.VISIBLE);
    }
    public void showCall(View view) {
        hideAll();
        callNumber.setVisibility(View.VISIBLE);
        makeCallButton.setVisibility(View.VISIBLE);
    }
    public void hideAll() {
        phoneNumber.setVisibility(View.GONE);
        smsMessage.setVisibility(View.GONE);
        sendSmsButton.setVisibility(View.GONE);
        email.setVisibility(View.GONE);
        subject.setVisibility(View.GONE);
        emailMessage.setVisibility(View.GONE);
        sendEmailButton.setVisibility(View.GONE);
        callNumber.setVisibility(View.GONE);
        makeCallButton.setVisibility(View.GONE);
    }
    public void sendSMS(View view) {
        Intent intent = new Intent(Intent.ACTION_SENDTO);
        intent.setData(Uri.parse("smsto:" +
                phoneNumber.getText().toString()));
        intent.putExtra("sms_body",
                smsMessage.getText().toString());
        startActivity(intent);
    }
    public void sendEmail(View view) {
        Intent intent = new Intent(Intent.ACTION_SENDTO);
        intent.setData(Uri.parse("mailto:" +
                email.getText().toString()));
        intent.putExtra(Intent.EXTRA_SUBJECT,
                subject.getText().toString());
        intent.putExtra(Intent.EXTRA_TEXT,
                emailMessage.getText().toString());
        startActivity(intent);
    }
    public void makeCall(View view) {
        Intent intent = new Intent(Intent.ACTION_DIAL);
        intent.setData(Uri.parse("tel:" +
                callNumber.getText().toString()));
        startActivity(intent);
    }
}
