// Copyright 2016 Google, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
////////////////////////////////////////////////////////////////////////////////
package com.firebase.jobdispatcher.testapp;
import android.databinding.DataBindingUtil;
import android.databinding.ViewDataBinding;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.AppCompatButton;
import android.util.Log;
import android.view.View;
import com.firebase.jobdispatcher.Constraint;
import com.firebase.jobdispatcher.FirebaseJobDispatcher;
import com.firebase.jobdispatcher.GooglePlayDriver;
import com.firebase.jobdispatcher.Job.Builder;
import com.firebase.jobdispatcher.Lifetime;
import com.firebase.jobdispatcher.Trigger;
public class JobFormActivity extends AppCompatActivity {
private JobForm form = new JobForm();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_job_form);
final ViewDataBinding binding = DataBindingUtil
.setContentView(this, R.layout.activity_job_form);
binding.setVariable(com.firebase.jobdispatcher.testapp.BR.form, form);
View.OnClickListener onScheduleButtonClickListener = new ScheduleButtonClickListener(
form, new FirebaseJobDispatcher(new GooglePlayDriver(this)));
AppCompatButton scheduleButton = (AppCompatButton) findViewById(R.id.schedule_button);
assert scheduleButton != null;
scheduleButton.setOnClickListener(onScheduleButtonClickListener);
}
private class ScheduleButtonClickListener implements View.OnClickListener {
private final JobForm form;
private final FirebaseJobDispatcher jobDispatcher;
ScheduleButtonClickListener(JobForm form, FirebaseJobDispatcher dispatcher) {
this.form = form;
this.jobDispatcher = dispatcher;
}
@SuppressWarnings("WrongConstant")
@Override
public void onClick(View v) {
final Builder builder = jobDispatcher.newJobBuilder()
.setTag(form.tag.get())
.setRecurring(form.recurring.get())
.setLifetime(form.persistent.get() ? Lifetime.FOREVER : Lifetime.UNTIL_NEXT_BOOT)
.setService(DemoJobService.class)
.setTrigger(Trigger.executionWindow(
form.getWinStartSeconds(), form.getWinEndSeconds()))
.setReplaceCurrent(form.replaceCurrent.get())
.setRetryStrategy(jobDispatcher.newRetryStrategy(
form.retryStrategy.get(),
form.getInitialBackoffSeconds(),
form.getMaximumBackoffSeconds()));
if (form.constrainDeviceCharging.get()) {
builder.addConstraint(Constraint.DEVICE_CHARGING);
}
if (form.constrainOnAnyNetwork.get()) {
builder.addConstraint(Constraint.ON_ANY_NETWORK);
}
if (form.constrainOnUnmeteredNetwork.get()) {
builder.addConstraint(Constraint.ON_UNMETERED_NETWORK);
}
Log.i("FJD.JobForm", "scheduling new job");
jobDispatcher.mustSchedule(builder.build());
JobFormActivity.this.finish();
}
}
}