Began basic local storage logic of sites

This commit is contained in:
Aidan Follestad 2016-07-30 03:04:00 -05:00
parent adfb59b49c
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 {
private View rootLayout;
private Toolbar toolbar;
private EditText inputName;
private EditText inputUrl;
@ -44,9 +45,9 @@ public class AddSiteActivity extends AppCompatActivity implements View.OnClickLi
inputInterval = (EditText) findViewById(R.id.checkIntervalInput);
spinnerInterval = (Spinner) findViewById(R.id.checkIntervalSpinner);
final Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
toolbar = (Toolbar) findViewById(R.id.toolbar);
toolbar.setNavigationOnClickListener(view -> {
closeFromNavWithReveal();
closeActivityWithReveal();
});
if (savedInstanceState == null) {
@ -72,38 +73,15 @@ public class AddSiteActivity extends AppCompatActivity implements View.OnClickLi
@Override
public void onBackPressed() {
closeFromCenterWithReveal();
closeActivityWithReveal();
}
private void closeFromNavWithReveal() {
private void closeActivityWithReveal() {
if (isClosing) return;
isClosing = true;
final int offset = (int) getResources().getDimension(R.dimen.content_inset);
final int cx = rootLayout.getMeasuredWidth();
final int cy = rootLayout.getMeasuredHeight();
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;
final int fabSize = getIntent().getIntExtra("fab_size", toolbar.getMeasuredHeight());
final int cx = (int) getIntent().getFloatExtra("fab_x", rootLayout.getMeasuredWidth() / 2) + (fabSize / 2);
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, cx, cy, initialRadius, 0);
@ -139,7 +117,7 @@ public class AddSiteActivity extends AppCompatActivity implements View.OnClickLi
@Override
public void onClick(View view) {
isClosing = true;
ServerModel model = new ServerModel();
model.name = inputName.getText().toString().trim();
model.url = inputUrl.getText().toString().trim();

View file

@ -18,15 +18,18 @@ import android.view.View;
import android.view.animation.PathInterpolator;
import android.widget.TextView;
import com.afollestad.inquiry.Inquiry;
import com.afollestad.nocknock.R;
import com.afollestad.nocknock.adapter.ServerAdapter;
import com.afollestad.nocknock.api.ServerModel;
import com.afollestad.nocknock.api.ServerStatus;
import com.afollestad.nocknock.dialogs.AboutDialog;
import com.afollestad.nocknock.util.MathUtil;
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 RecyclerView mList;
private ServerAdapter mAdapter;
@ -57,25 +60,17 @@ public class MainActivity extends AppCompatActivity implements SwipeRefreshLayou
mFab = (FloatingActionButton) findViewById(R.id.fab);
mFab.setOnClickListener(this);
ServerModel model = new ServerModel();
model.name = "Personal Site";
model.url = "https://aidanfollestad.com";
model.id = 1;
model.status = ServerStatus.OK;
model.checkInterval = 1000 * 60;
model.lastCheck = System.currentTimeMillis();
mAdapter.add(model);
Inquiry.init(this, "nocknock", 1);
Inquiry.get()
.selectFrom(SITES_TABLE_NAME, ServerModel.class)
.all(result -> mAdapter.set(result));
}
model = new ServerModel();
model.name = "Polar Request Manager";
model.url = "https://polar.aidanfollestad.com";
model.id = 2;
model.status = ServerStatus.CHECKING;
model.checkInterval = 1000 * 60 * 2;
model.lastCheck = System.currentTimeMillis();
mAdapter.add(model);
mEmptyText.setVisibility(View.GONE);
@Override
protected void onPause() {
super.onPause();
if (isFinishing())
Inquiry.deinit();
}
@Override
@ -113,8 +108,11 @@ public class MainActivity extends AppCompatActivity implements SwipeRefreshLayou
@Override
public void onAnimationEnd(Animator animation) {
super.onAnimationEnd(animation);
startActivity(new Intent(MainActivity.this, AddSiteActivity.class)
.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION));
startActivityForResult(new Intent(MainActivity.this, AddSiteActivity.class)
.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.setX(mOrigFabX);
mFab.setY(mOrigFabY);
@ -123,4 +121,19 @@ public class MainActivity extends AppCompatActivity implements SwipeRefreshLayou
});
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_body"><![CDATA[
<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://google.com/+AidanFollestad\'>Google+</a>&nbsp;&nbsp;
<a href=\'https://github.com/afollestad\'>GitHub</a>&nbsp;&nbsp;