public void fetchMonthData(RemoteViews views) {
   enrollCntHash.clear();
   for (WidgetID wID : WidgetIDRepo.getAllWidgetID(this)) {
     views.removeAllViews(wID.getTvID());
     WidgetIDRepo.deleteWithId(this, wID.getId());
   }
   int year = Dates.NOW.year;
   int month = Dates.NOW.month;
   long month_startMillies = Dates.NOW.getDateMillis(year, month, 1, 8, 0);
   long month_endMillies = Dates.NOW.getDateMillis(year, month, Dates.NOW.dayNumOfMonth, 23, 0);
   for (MyTime mt : MyTimeRepo.getMonthTimes(this, month_startMillies, month_endMillies)) {
     try {
       int dayCnt = mt.getDayofmonth() + Dates.NOW.dayOfWeek;
       int lID = getResources().getIdentifier("l" + dayCnt, "id", "com.daemin.timetable");
       if (enrollCntHash.containsKey(lID)) {
         int cnt = enrollCntHash.get(lID);
         if (cnt < 4) {
           enrollCntHash.put(lID, ++cnt);
           RemoteViews tv = new RemoteViews(getPackageName(), R.layout.widget_item);
           tv.setTextViewText(R.id.widget_item, mt.getName());
           views.addView(lID, tv);
           WidgetIDRepo.insertOrUpdate(this, new WidgetID(lID));
         }
       } else {
         enrollCntHash.put(lID, 0);
         RemoteViews tv = new RemoteViews(getPackageName(), R.layout.widget_item);
         tv.setTextViewText(R.id.widget_item, mt.getName());
         views.addView(lID, tv);
         WidgetIDRepo.insertOrUpdate(this, new WidgetID(lID));
       }
     } catch (NullPointerException e) {
       continue;
     }
   }
 }
  /** If there are actions, shows the button related views, and adds a button for each action. */
  private void addActionButtons(RemoteViews bigView) {
    // Remove the existing buttons in case an existing notification is being updated.
    bigView.removeAllViews(R.id.buttons);

    // Always set the visibility of the views associated with the action buttons. The current
    // visibility state is not known as perhaps an existing notification is being updated.
    int visibility = mActions.isEmpty() ? View.GONE : View.VISIBLE;
    bigView.setViewVisibility(R.id.button_divider, visibility);
    bigView.setViewVisibility(R.id.buttons, visibility);

    Resources resources = mContext.getResources();
    DisplayMetrics metrics = resources.getDisplayMetrics();
    for (Action action : mActions) {
      RemoteViews view =
          new RemoteViews(mContext.getPackageName(), R.layout.web_notification_button);

      // If there is an icon then set it and add some padding.
      if (action.iconBitmap != null || action.iconId != 0) {
        if (useMaterial()) {
          view.setInt(R.id.button_icon, "setColorFilter", BUTTON_ICON_COLOR_MATERIAL);
        }

        int iconWidth = 0;
        if (action.iconBitmap != null) {
          view.setImageViewBitmap(R.id.button_icon, action.iconBitmap);
          iconWidth = action.iconBitmap.getWidth();
        } else if (action.iconId != 0) {
          view.setImageViewResource(R.id.button_icon, action.iconId);
          BitmapFactory.Options options = new BitmapFactory.Options();
          options.inJustDecodeBounds = true;
          BitmapFactory.decodeResource(resources, action.iconId, options);
          iconWidth = options.outWidth;
        }
        iconWidth = dpToPx(Math.min(pxToDp(iconWidth, metrics), MAX_ACTION_ICON_WIDTH_DP), metrics);

        // Set the padding of the button so the text does not overlap with the icon. Flip
        // between left and right manually as RemoteViews does not expose a method that sets
        // padding in a writing-direction independent way.
        int buttonPadding =
            dpToPx(BUTTON_PADDING_START_DP + BUTTON_ICON_PADDING_DP, metrics) + iconWidth;
        int buttonPaddingLeft = LocalizationUtils.isLayoutRtl() ? 0 : buttonPadding;
        int buttonPaddingRight = LocalizationUtils.isLayoutRtl() ? buttonPadding : 0;
        view.setViewPadding(R.id.button, buttonPaddingLeft, 0, buttonPaddingRight, 0);
      }

      view.setTextViewText(R.id.button, action.title);
      view.setOnClickPendingIntent(R.id.button, action.intent);
      bigView.addView(R.id.buttons, view);
    }
  }
Example #3
0
 @Override
 public void addView(int viewId, Object child) {
   mRemoteViews.addView(viewId, (RemoteViews) child);
 }