package com.hdweiss.morgand.gui;
import android.app.ActionBar;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.ViewPager;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.Window;
import android.widget.Toast;
import com.hdweiss.morgand.Application;
import com.hdweiss.morgand.R;
import com.hdweiss.morgand.data.dao.OrgFile;
import com.hdweiss.morgand.data.dao.OrgNodeRepository;
import com.hdweiss.morgand.events.DataUpdatedEvent;
import com.hdweiss.morgand.events.SyncEvent;
import com.hdweiss.morgand.settings.PreferenceUtils;
import com.hdweiss.morgand.settings.SettingsActivity;
import com.hdweiss.morgand.synchronizer.calendar.CalendarWrapper;
import com.hdweiss.morgand.synchronizer.writer.SyncWriterTask;
import com.squareup.otto.Subscribe;
public class MainActivity extends FragmentActivity implements ActionBar.TabListener {
private MainPagerAdapter mSectionsPagerAdapter;
private ViewPager mViewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_PROGRESS);
setContentView(R.layout.activity_main);
ActionBar actionBar = initActionbar();
initViewPager(actionBar);
}
private ActionBar initActionbar() {
final ActionBar actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
//actionBar.setDisplayShowTitleEnabled(false);
actionBar.setHomeButtonEnabled(true);
//actionBar.setDisplayHomeAsUpEnabled(false);
return actionBar;
}
private void initViewPager(final ActionBar actionBar) {
mSectionsPagerAdapter = new MainPagerAdapter(getSupportFragmentManager());
mViewPager = (ViewPager) findViewById(R.id.pager);
mViewPager.setAdapter(mSectionsPagerAdapter);
mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
actionBar.setSelectedNavigationItem(position);
}
});
for (int i = 0; i < mSectionsPagerAdapter.getCount(); i++) {
actionBar.addTab(
actionBar.newTab()
.setText(mSectionsPagerAdapter.getPageTitle(i))
.setTabListener(this));
}
}
@Override
protected void onResume() {
super.onResume();
Application.getBus().register(this);
}
@Override
protected void onPause() {
Application.getBus().unregister(this);
super.onPause();
}
@Override
public void onTabSelected(ActionBar.Tab tab, android.app.FragmentTransaction fragmentTransaction) {
mViewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(ActionBar.Tab tab, android.app.FragmentTransaction fragmentTransaction) {
}
@Override
public void onTabReselected(ActionBar.Tab tab, android.app.FragmentTransaction fragmentTransaction) {
}
@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.action_settings:
Intent intent = new Intent(this, SettingsActivity.class);
startActivity(intent);
break;
case R.id.action_sync:
SyncWriterTask synchronizerTask = new SyncWriterTask(this);
synchronizerTask.execute();
break;
case R.id.action_clearDB:
OrgNodeRepository.deleteAll();
OrgFile.deleteAll();
Application.getBus().post(new DataUpdatedEvent());
new CalendarWrapper(this).deleteEntries();
break;
}
return super.onOptionsItemSelected(item);
}
@Subscribe
public void updateSyncProgress(SyncEvent event) {
if (event.state == SyncEvent.State.Done) {
setProgress(Window.PROGRESS_END);
return;
}
switch (event.state) {
case Intermediate:
setProgressBarVisibility(true);
setProgressBarIndeterminate(true);
break;
case Progress:
setProgressBarIndeterminate(false);
int progress = (Window.PROGRESS_END - Window.PROGRESS_START) / 100 * event.progress;
setProgress(progress);
break;
case SecondaryProgress:
setProgressBarIndeterminate(false);
int secondaryProgress = (Window.PROGRESS_END - Window.PROGRESS_START) / 100 * event.progress;
setSecondaryProgress(secondaryProgress);
break;
}
}
public void runShowWiki(View view) {
Intent intent = new Intent(Intent.ACTION_VIEW,
Uri.parse("https://github.com/hdweiss/mOrgAnd.wiki"));
startActivity(intent);
}
public void runDownloadWiki(View view) {
Toast.makeText(this, R.string.action_downloadwiki, Toast.LENGTH_SHORT).show();
PreferenceUtils.setupGitToWiki();
new SyncWriterTask(this).execute();
}
}