private void initializeReceiverData(long receiverId) {
    if (receiverId == -1) {
      // init blank
      brandListView.setItemChecked(0, true);
      updateModelList(brandListView.getSelectedItem().toString());

      modelListView.setItemChecked(0, true);
    } else {
      try {
        // init existing receiver
        final Receiver receiver = DatabaseHandler.getReceiver(receiverId);

        int brandPosition = brandNamesAdapter.getPosition(receiver.getBrand().getName());
        brandListView.setItemChecked(brandPosition, true);
        brandListView.smoothScrollToPosition(brandPosition);
        updateModelList(receiver.getBrand().getName());

        int modelPosition = modelNamesAdapter.getPosition(receiver.getModel());
        modelListView.setItemChecked(modelPosition, true);
        modelListView.smoothScrollToPosition(modelPosition);

      } catch (Exception e) {
        StatusMessageHandler.showErrorMessage(getActivity(), e);
      }
    }
  }
  private void parseActionIntent(Context context, Intent intent) {
    try {
      long id = Long.valueOf(intent.getData().getHost());
      Timer timer = DatabaseHandler.getTimer(id);

      Calendar currentTime = Calendar.getInstance();
      if (Build.VERSION.SDK_INT < 19) {
        int currentHour = currentTime.get(Calendar.HOUR_OF_DAY);
        int executionHour = timer.getExecutionTime().get(Calendar.HOUR_OF_DAY);
        if (currentHour != executionHour) {
          Log.d(
              this,
              "Timer hour doesnt match: "
                  + currentHour
                  + " != "
                  + timer.getExecutionTime().get(Calendar.HOUR_OF_DAY));
          return;
        }

        int currentMinute = currentTime.get(Calendar.MINUTE);
        int executionMinute = timer.getExecutionTime().get(Calendar.MINUTE);
        if (!(currentMinute >= executionMinute && currentMinute <= executionMinute + 3)) {
          Log.d(
              this,
              "Timer minute not in valid range: currentMinute: "
                  + currentMinute
                  + " ; executionMinute: "
                  + executionMinute);
          return;
        }
      }

      Log.d(this, "executing timer...");
      switch (timer.getExecutionType()) {
        case Timer.EXECUTION_TYPE_WEEKDAY:
          WeekdayTimer weekdayTimer = (WeekdayTimer) timer;

          if (weekdayTimer.containsExecutionDay(currentTime.get(Calendar.DAY_OF_WEEK))) {
            ActionHandler.execute(context, timer);
          } else {
            Log.d(this, "timer executionDays doesn't contain current day, not executing timer");
          }
          break;
        case Timer.EXECUTION_TYPE_INTERVAL:
          ActionHandler.execute(context, timer);
          break;
        default:
          Log.e(this, "Unknown Timer executionType: " + timer.getExecutionType());
          break;
      }

    } catch (Exception e) {
      StatusMessageHandler.showErrorMessage(context, e);
    }

    reinitializeAlarms(context);
  }
 private void reinitializeAlarms(Context context) {
   try {
     for (Timer timer : DatabaseHandler.getAllTimers(true)) {
       AlarmHandler.cancelAlarm(context, timer);
       AlarmHandler.createAlarm(context, timer);
     }
   } catch (Exception e) {
     StatusMessageHandler.showErrorMessage(context, e);
   }
 }