private void onModeSelected(int mode) { int oldMode = mRecurring.getRepeatMode(); mRecurring.setRepeatMode(mode); updatePeriodUnit(); mRecurring.setRepeatSetting(0); if (mode == Recurring.REPEAT_NONE) { mPeriodEditText.setEnabled(false); mEndSpinner.setEnabled(false); mEndNumEditText.setEnabled(false); mEndDateButton.setEnabled(false); mSameDayRadioButton.setEnabled(false); mSameWeekdayRadioButton.setEnabled(false); mWeekView.setEnabled(false); } else { if (oldMode == Recurring.REPEAT_NONE) { mPeriodEditText.setEnabled(true); mEndSpinner.setEnabled(true); mEndNumEditText.setEnabled(true); mEndDateButton.setEnabled(true); mSameDayRadioButton.setEnabled(true); mSameWeekdayRadioButton.setEnabled(true); mWeekView.setEnabled(true); } switch (mode) { case Recurring.REPEAT_DAILY: case Recurring.REPEAT_YEARLY: animOut(mSameDayRadioButton, true, true); animOut(mSameWeekdayRadioButton, true, true); animOut(mWeekView, true, true); break; case Recurring.REPEAT_MONTHLY: animIn(mSameDayRadioButton, false); animIn(mSameWeekdayRadioButton, false); animOut(mWeekView, true, true); mRecurring.setMonthRepeatType( mSameDayRadioButton.isChecked() ? Recurring.MONTH_SAME_DAY : Recurring.MONTH_SAME_WEEKDAY); break; case Recurring.REPEAT_WEEKLY: animOut(mSameDayRadioButton, true, true); animOut(mSameWeekdayRadioButton, true, true); animIn(mWeekView, false); for (int i = Calendar.SUNDAY; i <= Calendar.SATURDAY; i++) mRecurring.setEnabledWeekday(i, mWeekView.isSelected(i)); break; } } }
private void updateRecurringData() { Calendar cal = Calendar.getInstance(); cal.setTimeInMillis(mRecurring.getStartTime()); int order = Recurring.getWeekDayOrderNum(cal); String dayOfWeek = cal.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.LONG, Locale.getDefault()); int formattedTextId = MONTH_SAME_WEEKDAY[(order + 1) % MONTH_SAME_WEEKDAY.length]; mSameWeekdayRadioButton.setText( getContext().getResources().getString(formattedTextId, dayOfWeek)); mPeriodEditText.setText(String.valueOf(mRecurring.getPeriod())); if (mRecurring.getRepeatMode() == Recurring.REPEAT_WEEKLY) { for (int i = Calendar.SUNDAY; i <= Calendar.SATURDAY; i++) mWeekView.setSelected(i, mRecurring.isEnabledWeekday(i), true); } else { int day = cal.get(Calendar.DAY_OF_WEEK); for (int i = Calendar.SUNDAY; i <= Calendar.SATURDAY; i++) mWeekView.setSelected(i, i == day, true); if (mRecurring.getRepeatMode() == Recurring.REPEAT_MONTHLY) { mSameDayRadioButton.setCheckedImmediately( mRecurring.getMonthRepeatType() == Recurring.MONTH_SAME_DAY); mSameWeekdayRadioButton.setCheckedImmediately( mRecurring.getMonthRepeatType() == Recurring.MONTH_SAME_WEEKDAY); } else { mSameDayRadioButton.setCheckedImmediately(true); mSameWeekdayRadioButton.setCheckedImmediately(false); } } if (mModeSpinner.getSelectedItemPosition() != mRecurring.getRepeatMode()) mModeSpinner.setSelection(mRecurring.getRepeatMode()); else onModeSelected(mRecurring.getRepeatMode()); mEndNumEditText.setText( String.valueOf( mRecurring.getEndMode() == Recurring.END_FOR_EVENT ? mRecurring.getEventNumber() : 10)); long date = mRecurring.getEndMode() == Recurring.END_UNTIL_DATE ? mRecurring.getEndDate() : (Math.max(System.currentTimeMillis(), mRecurring.getStartTime()) + 86400000L * 31); mEndDateButton.setText(mDateFormat.format(new Date(date))); mEndDateButton.setTag(date); if (mEndSpinner.getSelectedItemPosition() != mRecurring.getEndMode()) mEndSpinner.setSelection(mRecurring.getEndMode()); else onEndSelected(mRecurring.getEndMode()); }
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_history_point); if (savedInstanceState != null) point = savedInstanceState.getParcelable("point"); else { if (this.getIntent() != null && this.getIntent().getExtras() != null && this.getIntent().getExtras().getParcelable("point") != null) point = this.getIntent().getExtras().getParcelable("point"); else { Toast.makeText(this, "Fail!", Toast.LENGTH_SHORT).show(); this.finish(); } } // TOOLBAR Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); toolbar.setTitle("Chart - " + point.getName()); setSupportActionBar(toolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeButtonEnabled(false); // this will define the period of your requisition. In the other words, this defines how much // datas you want Spinner spinner_period = (Spinner) findViewById(R.id.spinner_period); String[] items = new String[8]; items[0] = "Not defined"; items[1] = "7 days"; items[2] = "15 days"; items[3] = "1 month"; items[4] = "3 months"; items[5] = "6 months"; items[6] = "1 year"; items[7] = "Set time"; ArrayAdapter<String> adapter = new ArrayAdapter<>(this, R.layout.row_spn, items); adapter.setDropDownViewResource(R.layout.row_spn_dropdown); spinner_period.setAdapter(adapter); ImageView iv_setting = (ImageView) findViewById(R.id.setting); iv_setting.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { if (!point.getCategoryString().equals("weather") && !point.getCategoryString().equals("luminosity")) { Dialog.Builder builder = new SimpleDialog.Builder(R.style.SimpleDialog) { @Override protected void onBuildDone(Dialog dialog) { dialog.layoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); if (point.getPrice() != 0) ((EditText) dialog.findViewById(R.id.custom_et_value)) .setText("" + point.getPrice()); } @Override public void onPositiveActionClicked( com.rey.material.app.DialogFragment fragment) { String value = ((EditText) fragment.getDialog().findViewById(R.id.custom_et_value)) .getText() .toString(); DataBase db = new DataBase(PointHistoryActivity.this); point.setPrice(Double.parseDouble(value)); db.updatePoint(point); db.closeDataBase(); super.onPositiveActionClicked(fragment); } @Override public void onNegativeActionClicked( com.rey.material.app.DialogFragment fragment) { Toast.makeText(PointHistoryActivity.this, "Cancelled", Toast.LENGTH_SHORT) .show(); super.onNegativeActionClicked(fragment); } }; String value = null; if (point.getCategoryString().equals("water")) value = "Price of water (R$/m³)"; else if (point.getCategoryString().equals("energy")) value = "Price of energy (R$/KW)"; else value = "Consumption of energy (W)"; builder .title(value) .positiveAction("OK") .negativeAction("CANCEL") .contentView(R.layout.set_value_point) .style(R.style.SimpleDialog); com.rey.material.app.DialogFragment fragment = com.rey.material.app.DialogFragment.newInstance(builder); fragment.show(PointHistoryActivity.this.getSupportFragmentManager(), null); } else Toast.makeText( PointHistoryActivity.this, "Not allowed to this category of point", Toast.LENGTH_SHORT) .show(); } }); spinner_period.setOnItemSelectedListener( new Spinner.OnItemSelectedListener() { @Override public void onItemSelected(Spinner spinner, View view, int i, long l) { if (i != 0 && !point.getCategoryString().equals("null")) { Calendar cal = Calendar.getInstance(); switch (i) { case 1: cal.add(Calendar.DATE, -7); periodData = 7; new AsyncTasks(PointHistoryActivity.this, cal, point, PointHistoryActivity.this) .execute(2); progressDialogOn(); break; case 2: cal.add(Calendar.DATE, -15); periodData = 15; new AsyncTasks(PointHistoryActivity.this, cal, point, PointHistoryActivity.this) .execute(2); progressDialogOn(); break; case 3: cal.add(Calendar.DATE, -30); periodData = 30; new AsyncTasks(PointHistoryActivity.this, cal, point, PointHistoryActivity.this) .execute(2); progressDialogOn(); break; case 4: cal.add(Calendar.MONTH, -3); periodData = 3; new AsyncTasks(PointHistoryActivity.this, cal, point, PointHistoryActivity.this) .execute(2); progressDialogOn(); break; case 5: cal.add(Calendar.MONTH, -6); periodData = 6; new AsyncTasks(PointHistoryActivity.this, cal, point, PointHistoryActivity.this) .execute(2); progressDialogOn(); break; case 6: cal.add(Calendar.YEAR, -1); periodData = 12; new AsyncTasks(PointHistoryActivity.this, cal, point, PointHistoryActivity.this) .execute(2); progressDialogOn(); break; case 7: /*DialogFragment fragment = new DateRangePickerFragment(); fragment.show(getSupportFragmentManager(), null);*/ break; } } else Toast.makeText( PointHistoryActivity.this, "Add any hierarchy to your point. After you can create your chart.", Toast.LENGTH_SHORT) .show(); } }); tvOne = (TextView) findViewById(R.id.tv_value_one); tvTwo = (TextView) findViewById(R.id.tv_value_two); tvThree = (TextView) findViewById(R.id.tv_value_three); if (point.getCategoryString().equals("water") || point.getCategoryString().equals("energy")) { tvOne.setText("Total:"); tvTwo.setText("Average:"); tvThree.setText("Amount payable:"); } else if (point.getCategoryString().equals("weather")) { tvOne.setText("Average:"); tvTwo.setText("Maximum:"); tvThree.setText("Minimum:"); } else if (point.getCategoryString().equals("light")) { tvOne.setText("Time On:"); tvTwo.setText("Time Off:"); tvThree.setText("Consumption:"); } }
@TargetApi(Build.VERSION_CODES.JELLY_BEAN) @Override protected void onCreate() { View v = LayoutInflater.from(getContext()).inflate(R.layout.dialog_recurring, null); setContentView(v); FrameLayout fl_mode = (FrameLayout) v.findViewById(R.id.rd_fl_mode); final ScrollView sv_repeat = (ScrollView) v.findViewById(R.id.rd_sv_repeat); final LinearLayout ll_repeat = (LinearLayout) v.findViewById(R.id.rd_ll_repeat); mModeSpinner = (Spinner) fl_mode.findViewById(R.id.rd_spn_mode); mEndSpinner = (Spinner) v.findViewById(R.id.rd_spn_end); mPeriodEditText = (EditText) v.findViewById(R.id.rd_et_period); mPeriodUnitTextView = (TextView) v.findViewById(R.id.rd_tv_period_unit); mSameDayRadioButton = (RadioButton) v.findViewById(R.id.rd_month_rb_same); mSameWeekdayRadioButton = (RadioButton) v.findViewById(R.id.rd_month_rb_week); mEndNumEditText = (EditText) v.findViewById(R.id.rd_et_end_num); mEndNumUnitTextView = (TextView) v.findViewById(R.id.rd_tv_end_num_unit); mEndDateButton = (Button) v.findViewById(R.id.rd_bt_end_date); mWeekView = (WeekView) v.findViewById(R.id.rd_wv_week); sv_repeat .getViewTreeObserver() .addOnGlobalLayoutListener( new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { showDivider(ll_repeat.getMeasuredHeight() > sv_repeat.getMeasuredHeight()); } }); mHeaderBackground = new HeaderDrawable(getContext()); ViewCompat.setPaddingRelative(fl_mode, mContentPadding, 0, mContentPadding, 0); ViewUtil.setBackground(fl_mode, mHeaderBackground); ViewCompat.setPaddingRelative( ll_repeat, mContentPadding, mActionOuterPadding, mContentPadding, mActionPadding); mModeAdapter = new ModeAdapter(); mModeSpinner.setAdapter(mModeAdapter); mModeSpinner.setOnItemSelectedListener( new Spinner.OnItemSelectedListener() { @Override public void onItemSelected(Spinner parent, View view, int position, long id) { onModeSelected(position); } }); mEndAdapter = new EndAdapter(); mEndSpinner.setAdapter(mEndAdapter); mEndSpinner.setOnItemSelectedListener( new Spinner.OnItemSelectedListener() { @Override public void onItemSelected(Spinner parent, View view, int position, long id) { onEndSelected(position); } }); mPeriodEditText.addTextChangedListener( new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) {} @Override public void onTextChanged(CharSequence s, int start, int before, int count) {} @Override public void afterTextChanged(Editable s) { onPeriodChanged(); } }); mPeriodEditText.setOnKeyListener( new View.OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_ENTER && event.getAction() == KeyEvent.ACTION_UP) { String text = mPeriodEditText.getText().toString(); if (TextUtils.isEmpty(text)) mPeriodEditText.setText(String.valueOf(mRecurring.getPeriod())); } return false; } }); CompoundButton.OnCheckedChangeListener mCheckChangeListener = new android.widget.CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged( android.widget.CompoundButton buttonView, boolean isChecked) { if (isChecked) { if (buttonView == mSameDayRadioButton) mSameWeekdayRadioButton.setChecked(false); else mSameDayRadioButton.setChecked(false); onMonthSettingChanged(); } } }; mSameDayRadioButton.setOnCheckedChangeListener(mCheckChangeListener); mSameWeekdayRadioButton.setOnCheckedChangeListener(mCheckChangeListener); mEndNumEditText.addTextChangedListener( new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) {} @Override public void onTextChanged(CharSequence s, int start, int before, int count) {} @Override public void afterTextChanged(Editable s) { onEventNumberChanged(); } }); mEndNumEditText.setOnKeyListener( new View.OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_ENTER && event.getAction() == KeyEvent.ACTION_UP) { String text = mEndNumEditText.getText().toString(); if (TextUtils.isEmpty(text)) mEndNumEditText.setText(String.valueOf(mRecurring.getEventNumber())); } return false; } }); View.OnClickListener mDateClickListener = new View.OnClickListener() { @Override public void onClick(View v) { final DatePickerDialog dialog = new DatePickerDialog(getContext(), mDatePickerDialogStyleId); long minTime = System.currentTimeMillis(); Calendar cal = dialog.getCalendar(); cal.setTimeInMillis(minTime); cal.add(Calendar.YEAR, 100); long maxTime = cal.getTimeInMillis(); dialog .dateRange(minTime, maxTime) .date((long) mEndDateButton.getTag()) .positiveAction(mPositiveAction.getText()) .positiveActionClickListener( new View.OnClickListener() { @Override public void onClick(View v) { onEndDateChanged(dialog.getDate()); dialog.dismiss(); } }) .negativeAction(mNegativeAction.getText()) .negativeActionClickListener( new View.OnClickListener() { @Override public void onClick(View v) { dialog.dismiss(); } }) .show(); } }; mEndDateButton.setOnClickListener(mDateClickListener); mWeekView.setOnDaySelectionChangedListener(this); }