package com.aberdyne.droidnavi; import com.aberdyne.droidnavi.R; import com.aberdyne.droidnavi.client.ServerConnection; import com.aberdyne.droidnavi.client.ServerListManager; import com.aberdyne.droidnavi.zxing.IntentIntegrator; import com.aberdyne.droidnavi.zxing.IntentResult; import android.app.ActionBar; import android.app.FragmentTransaction; import android.app.ActionBar.Tab; import android.content.Intent; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.view.ViewPager; import android.widget.Toast; public class MainActivity extends FragmentActivity { public final String PREF_SERVER_LIST = "serverList"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Check Intent Intent intent = getIntent(); String action = intent.getAction(); String type = intent.getType(); if(Intent.ACTION_SEND.equals(action)) { if("text/plain".equals(type)) { String data = intent.getDataString(); System.out.println(data); } } UiAdapter adapter = new UiAdapter(getSupportFragmentManager()); final ViewPager pager = (ViewPager)findViewById(R.id.viewPager); // Register Tab bar and listeners final ActionBar actionBar = getActionBar(); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); ActionBar.TabListener tabListener = new ActionBar.TabListener() { public void onTabUnselected(Tab tab, FragmentTransaction ft) { } public void onTabSelected(Tab tab, FragmentTransaction ft) { pager.setCurrentItem(tab.getPosition()); } public void onTabReselected(Tab tab, FragmentTransaction ft) { } }; for(Pages page: Pages.values()) { actionBar.addTab(actionBar.newTab() .setText(page.getName()) .setTabListener(tabListener)); } // Make selected tab change with swipes pager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() { @Override public void onPageSelected(int position) { getActionBar().setSelectedNavigationItem(position); } }); pager.setAdapter(adapter); ServerListManager.init(this); } /** * Called when Barcode Scanner completes scanning. Adds IP to pairing. */ @Override public void onActivityResult(int requestCode, int resultCode, Intent intent) { IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent); if(scanResult != null) { String ip = scanResult.getContents(); if(ServerConnection.validateHost(ip)) { ServerListManager.addServer(this, new ServerConnection(ip)); Toast.makeText(this, "IP added via QRCode", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(this, "Invalid host or IP supplied", Toast.LENGTH_LONG).show(); } } else { Toast.makeText(this, "Failed to add IP via QRCode", Toast.LENGTH_SHORT).show(); } } public PreferenceStore getPreferenceStore() { return PreferenceStore.createPreferenceStore(this); } public class UiAdapter extends FragmentPagerAdapter { public UiAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int n) { Pages page = Pages.getPage(n); switch(page) { case STATUS_PAGE: return new StatusFragment(); case PAIR_PAGE: return new PairFragment(); case ABOUT_PAGE: return new AboutFragment(); } return null; } @Override public int getCount() { // TODO Auto-generated method stub return Pages.values().length; } } public enum Pages { STATUS_PAGE(0, "Status"), PAIR_PAGE(1, "Pair"), ABOUT_PAGE(2, "About"); private int m_page_num; private String m_page_name; static public Pages getPage(int n) { Pages[] pages = Pages.values(); for(Pages page : pages) { if(page.m_page_num == n) return page; } return null; } public String getName() { return m_page_name; } public int getNum() { return m_page_num; } private Pages(int page_num, String page_name) { m_page_num = page_num; m_page_name = page_name; } } }