/* * SaveMySugar - Exchange messages using the distance between phone calls * * Copyright (C) 2015 Antonio Ospite * * 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 . */ package it.ao2.savemysugar; import android.annotation.SuppressLint; import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; import android.support.design.widget.TabLayout; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.view.ViewPager; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.TextView; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity { private static final String TAG = "SaveMySugar"; private static final int REQUEST_PREFS = 1; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager()); adapter.addFragment(new ReceiveFragment(), "Receive"); adapter.addFragment(new SendFragment(), "Send"); ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager); viewPager.setAdapter(adapter); TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs); tabLayout.setupWithViewPager(viewPager); } static class ViewPagerAdapter extends FragmentPagerAdapter { private final List mFragments = new ArrayList<>(); private final List mFragmentTitles = new ArrayList<>(); ViewPagerAdapter(FragmentManager fm) { super(fm); } public void addFragment(Fragment fragment, String title) { mFragments.add(fragment); mFragmentTitles.add(title); } @Override public Fragment getItem(int position) { return mFragments.get(position); } @Override public int getCount() { return mFragments.size(); } @Override public CharSequence getPageTitle(int position) { return mFragmentTitles.get(position); } } // Workaround to have the generic menu key (either a hardware one or the // one the in bottom navigation bar) open the overflow menu. @Override public boolean onKeyUp(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_MENU) { Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); if (toolbar.isOverflowMenuShowing()) { toolbar.dismissPopupMenus(); } else { toolbar.showOverflowMenu(); } return true; } return super.onKeyUp(keyCode, event); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.menu_settings: Intent i = new Intent(this, SettingsActivity.class); startActivityForResult(i, REQUEST_PREFS); return true; case R.id.action_about: @SuppressLint("InflateParams") // See the last section in // https://possiblemobile.com/2013/05/layout-inflation-as-intended/ View view = LayoutInflater.from(this).inflate(R.layout.about, null); ((TextView) view.findViewById(R.id.version)).setText(BuildConfig.VERSION_NAME); AlertDialog alrt = new AlertDialog.Builder(this).setView(view).create(); alrt.setTitle(R.string.about_title); alrt.setButton(AlertDialog.BUTTON_NEGATIVE, getString(R.string.ok), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int whichButton) { } }); alrt.show(); return true; } return super.onOptionsItemSelected(item); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); switch (requestCode) { case REQUEST_PREFS: ((SaveMySugarApplication) getApplication()).updateModulatorParams(); break; } } }