Began basic local storage logic of sites

This commit is contained in:
Aidan Follestad 2016-07-30 03:04:00 -05:00
commit b2a6a46c62
3 changed files with 44 additions and 53 deletions

View file

@ -26,6 +26,7 @@ import com.afollestad.nocknock.api.ServerStatus;
public class AddSiteActivity extends AppCompatActivity implements View.OnClickListener { public class AddSiteActivity extends AppCompatActivity implements View.OnClickListener {
private View rootLayout; private View rootLayout;
private Toolbar toolbar;
private EditText inputName; private EditText inputName;
private EditText inputUrl; private EditText inputUrl;
@ -44,9 +45,9 @@ public class AddSiteActivity extends AppCompatActivity implements View.OnClickLi
inputInterval = (EditText) findViewById(R.id.checkIntervalInput); inputInterval = (EditText) findViewById(R.id.checkIntervalInput);
spinnerInterval = (Spinner) findViewById(R.id.checkIntervalSpinner); spinnerInterval = (Spinner) findViewById(R.id.checkIntervalSpinner);
final Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); toolbar = (Toolbar) findViewById(R.id.toolbar);
toolbar.setNavigationOnClickListener(view -> { toolbar.setNavigationOnClickListener(view -> {
closeFromNavWithReveal(); closeActivityWithReveal();
}); });
if (savedInstanceState == null) { if (savedInstanceState == null) {
@ -72,38 +73,15 @@ public class AddSiteActivity extends AppCompatActivity implements View.OnClickLi
@Override @Override
public void onBackPressed() { public void onBackPressed() {
closeFromCenterWithReveal(); closeActivityWithReveal();
} }
private void closeFromNavWithReveal() { private void closeActivityWithReveal() {
if (isClosing) return; if (isClosing) return;
isClosing = true; isClosing = true;
final int offset = (int) getResources().getDimension(R.dimen.content_inset); final int fabSize = getIntent().getIntExtra("fab_size", toolbar.getMeasuredHeight());
final int cx = rootLayout.getMeasuredWidth(); final int cx = (int) getIntent().getFloatExtra("fab_x", rootLayout.getMeasuredWidth() / 2) + (fabSize / 2);
final int cy = rootLayout.getMeasuredHeight(); final int cy = (int) getIntent().getFloatExtra("fab_y", rootLayout.getMeasuredHeight() / 2) + toolbar.getMeasuredHeight() + (fabSize / 2);
float initialRadius = Math.max(cx, cy);
final Animator circularReveal = ViewAnimationUtils.createCircularReveal(rootLayout, offset, offset, initialRadius, 0);
circularReveal.setDuration(300);
circularReveal.setInterpolator(new AccelerateInterpolator());
circularReveal.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
super.onAnimationEnd(animation);
rootLayout.setVisibility(View.INVISIBLE);
finish();
overridePendingTransition(0, 0);
}
});
circularReveal.start();
}
private void closeFromCenterWithReveal() {
if (isClosing) return;
isClosing = true;
final int cx = rootLayout.getMeasuredWidth() / 2;
final int cy = rootLayout.getMeasuredHeight() / 2;
float initialRadius = Math.max(cx, cy); float initialRadius = Math.max(cx, cy);
final Animator circularReveal = ViewAnimationUtils.createCircularReveal(rootLayout, cx, cy, initialRadius, 0); final Animator circularReveal = ViewAnimationUtils.createCircularReveal(rootLayout, cx, cy, initialRadius, 0);

View file

@ -18,15 +18,18 @@ import android.view.View;
import android.view.animation.PathInterpolator; import android.view.animation.PathInterpolator;
import android.widget.TextView; import android.widget.TextView;
import com.afollestad.inquiry.Inquiry;
import com.afollestad.nocknock.R; import com.afollestad.nocknock.R;
import com.afollestad.nocknock.adapter.ServerAdapter; import com.afollestad.nocknock.adapter.ServerAdapter;
import com.afollestad.nocknock.api.ServerModel; import com.afollestad.nocknock.api.ServerModel;
import com.afollestad.nocknock.api.ServerStatus;
import com.afollestad.nocknock.dialogs.AboutDialog; import com.afollestad.nocknock.dialogs.AboutDialog;
import com.afollestad.nocknock.util.MathUtil; import com.afollestad.nocknock.util.MathUtil;
public class MainActivity extends AppCompatActivity implements SwipeRefreshLayout.OnRefreshListener, View.OnClickListener { public class MainActivity extends AppCompatActivity implements SwipeRefreshLayout.OnRefreshListener, View.OnClickListener {
private final static int ADD_SITE_RQ = 6969;
private final static String SITES_TABLE_NAME = "sites";
private FloatingActionButton mFab; private FloatingActionButton mFab;
private RecyclerView mList; private RecyclerView mList;
private ServerAdapter mAdapter; private ServerAdapter mAdapter;
@ -57,25 +60,17 @@ public class MainActivity extends AppCompatActivity implements SwipeRefreshLayou
mFab = (FloatingActionButton) findViewById(R.id.fab); mFab = (FloatingActionButton) findViewById(R.id.fab);
mFab.setOnClickListener(this); mFab.setOnClickListener(this);
ServerModel model = new ServerModel(); Inquiry.init(this, "nocknock", 1);
model.name = "Personal Site"; Inquiry.get()
model.url = "https://aidanfollestad.com"; .selectFrom(SITES_TABLE_NAME, ServerModel.class)
model.id = 1; .all(result -> mAdapter.set(result));
model.status = ServerStatus.OK; }
model.checkInterval = 1000 * 60;
model.lastCheck = System.currentTimeMillis();
mAdapter.add(model);
model = new ServerModel(); @Override
model.name = "Polar Request Manager"; protected void onPause() {
model.url = "https://polar.aidanfollestad.com"; super.onPause();
model.id = 2; if (isFinishing())
model.status = ServerStatus.CHECKING; Inquiry.deinit();
model.checkInterval = 1000 * 60 * 2;
model.lastCheck = System.currentTimeMillis();
mAdapter.add(model);
mEmptyText.setVisibility(View.GONE);
} }
@Override @Override
@ -113,8 +108,11 @@ public class MainActivity extends AppCompatActivity implements SwipeRefreshLayou
@Override @Override
public void onAnimationEnd(Animator animation) { public void onAnimationEnd(Animator animation) {
super.onAnimationEnd(animation); super.onAnimationEnd(animation);
startActivity(new Intent(MainActivity.this, AddSiteActivity.class) startActivityForResult(new Intent(MainActivity.this, AddSiteActivity.class)
.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION)); .putExtra("fab_x", mOrigFabX)
.putExtra("fab_y", mOrigFabY)
.putExtra("fab_size", mFab.getMeasuredWidth())
.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION), ADD_SITE_RQ);
mFab.postDelayed(() -> { mFab.postDelayed(() -> {
mFab.setX(mOrigFabX); mFab.setX(mOrigFabX);
mFab.setY(mOrigFabY); mFab.setY(mOrigFabY);
@ -123,4 +121,19 @@ public class MainActivity extends AppCompatActivity implements SwipeRefreshLayou
}); });
mFabAnimator.start(); mFabAnimator.start();
} }
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
ServerModel model = (ServerModel) data.getSerializableExtra("model");
mAdapter.add(model);
Inquiry.get().insertInto(SITES_TABLE_NAME, ServerModel.class)
.values(model)
.run(changed -> {
//TODO?
});
}
}
} }

View file

@ -12,7 +12,7 @@
<string name="about">About</string> <string name="about">About</string>
<string name="about_body"><![CDATA[ <string name="about_body"><![CDATA[
<b>Nock Nock</b>, a simple app designed by <b>Aidan Follestad</b>.<br/> <b>Nock Nock</b>, a simple app designed by <b>Aidan Follestad</b>.<br/>
<a href=\'http://aidanfollestad.com\'>Website</a>&nbsp;&nbsp; <a href=\'https://aidanfollestad.com\'>Website</a>&nbsp;&nbsp;
<a href=\'https://twitter.com/afollestad\'>Twitter</a>&nbsp;&nbsp; <a href=\'https://twitter.com/afollestad\'>Twitter</a>&nbsp;&nbsp;
<a href=\'https://google.com/+AidanFollestad\'>Google+</a>&nbsp;&nbsp; <a href=\'https://google.com/+AidanFollestad\'>Google+</a>&nbsp;&nbsp;
<a href=\'https://github.com/afollestad\'>GitHub</a>&nbsp;&nbsp; <a href=\'https://github.com/afollestad\'>GitHub</a>&nbsp;&nbsp;