Esempio n. 1
0
    @Override
    public void bindView(View view, Context context, final Cursor cursor) {
      final Alarm alarm = new Alarm(cursor);
      final ItemHolder itemHolder = (ItemHolder) view.getTag();
      itemHolder.alarm = alarm;

      // We must unset the listener first because this maybe a recycled view so changing the
      // state would affect the wrong alarm.
      itemHolder.onoff.setOnCheckedChangeListener(null);
      itemHolder.onoff.setChecked(alarm.enabled);
      if (mSelectedAlarms.contains(itemHolder.alarm.id)) {
        itemHolder.alarmItem.setBackgroundColor(mBackgroundColorSelected);
        setItemAlpha(itemHolder, true);
        itemHolder.onoff.setEnabled(false);
      } else {
        itemHolder.onoff.setEnabled(true);
        itemHolder.alarmItem.setBackgroundColor(mBackgroundColor);
        setItemAlpha(itemHolder, itemHolder.onoff.isChecked());
      }
      final CompoundButton.OnCheckedChangeListener onOffListener =
          new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
              // When action mode is on - simulate long click
              if (doLongClick(compoundButton)) {
                return;
              }
              if (checked != alarm.enabled) {
                setItemAlpha(itemHolder, checked);
                alarm.enabled = checked;
                asyncUpdateAlarm(alarm, alarm.enabled);
              }
            }
          };

      itemHolder.onoff.setOnCheckedChangeListener(onOffListener);
      itemHolder.onoff.setOnLongClickListener(mLongClickListener);

      itemHolder.clock.updateTime(alarm.hour, alarm.minutes);
      itemHolder.clock.setClickable(true);
      itemHolder.clock.setOnClickListener(
          new View.OnClickListener() {
            @Override
            public void onClick(View view) {
              // When action mode is on - simulate long click
              if (doLongClick(view)) {
                return;
              }
              AlarmUtils.showTimeEditDialog(AlarmClock.this.getFragmentManager(), alarm);
              expandAlarm(itemHolder);
              itemHolder.alarmItem.post(mScrollRunnable);
            }
          });
      itemHolder.clock.setOnLongClickListener(mLongClickListener);

      itemHolder.expandArea.setVisibility(isAlarmExpanded(alarm) ? View.VISIBLE : View.GONE);
      itemHolder.expandArea.setOnLongClickListener(mLongClickListener);
      itemHolder.infoArea.setVisibility(!isAlarmExpanded(alarm) ? View.VISIBLE : View.GONE);
      itemHolder.infoArea.setOnClickListener(
          new View.OnClickListener() {
            @Override
            public void onClick(View view) {
              // When action mode is on - simulate long click
              if (doLongClick(view)) {
                return;
              }
              expandAlarm(itemHolder);
              itemHolder.alarmItem.post(mScrollRunnable);
            }
          });
      itemHolder.infoArea.setOnLongClickListener(mLongClickListener);

      String colons = "";
      // Set the repeat text or leave it blank if it does not repeat.
      final String daysOfWeekStr = alarm.daysOfWeek.toString(AlarmClock.this, false);
      if (daysOfWeekStr != null && daysOfWeekStr.length() != 0) {
        itemHolder.daysOfWeek.setText(daysOfWeekStr);
        itemHolder.daysOfWeek.setContentDescription(
            alarm.daysOfWeek.toAccessibilityString(AlarmClock.this));
        itemHolder.daysOfWeek.setVisibility(View.VISIBLE);
        colons = ": ";
        itemHolder.daysOfWeek.setOnClickListener(
            new View.OnClickListener() {
              @Override
              public void onClick(View view) {
                // When action mode is on - simulate long click
                if (doLongClick(view)) {
                  return;
                }
                expandAlarm(itemHolder);
                itemHolder.alarmItem.post(mScrollRunnable);
              }
            });
        itemHolder.daysOfWeek.setOnLongClickListener(mLongClickListener);

      } else {
        itemHolder.daysOfWeek.setVisibility(View.GONE);
      }

      if (alarm.label != null && alarm.label.length() != 0) {
        itemHolder.label.setText(alarm.label + colons);
        itemHolder.label.setVisibility(View.VISIBLE);
        itemHolder.label.setContentDescription(
            mContext.getResources().getString(R.string.label_description) + " " + alarm.label);
        itemHolder.label.setOnClickListener(
            new View.OnClickListener() {
              @Override
              public void onClick(View view) {
                // When action mode is on - simulate long click
                if (doLongClick(view)) {
                  return;
                }
                expandAlarm(itemHolder);
                itemHolder.alarmItem.post(mScrollRunnable);
              }
            });
        itemHolder.label.setOnLongClickListener(mLongClickListener);
      } else {
        itemHolder.label.setVisibility(View.GONE);
      }

      if (isAlarmExpanded(alarm)) {
        expandAlarm(itemHolder);
      }
      view.setOnLongClickListener(mLongClickListener);
      view.setOnClickListener(
          new View.OnClickListener() {
            @Override
            public void onClick(View view) {
              // When action mode is on - simulate long click
              doLongClick(view);
            }
          });
    }