private InternalWidget.WidgetData GenWidget(String widget_id) { InternalWidget.WidgetData widget = new InternalWidget.WidgetData(); widget.priority = meetingTime.equals("None") ? 0 : 1; String iconFile = "idle_calendar.bmp"; if (widget_id.equals(id_0)) { widget.id = id_0; widget.description = desc_0; widget.width = 24; widget.height = 32; } else if (widget_id.equals(id_1)) { widget.id = id_1; widget.description = desc_1; widget.width = 96; widget.height = 32; } else if (widget_id.equals(id_2)) { widget.id = id_2; widget.description = desc_2; widget.width = 16; widget.height = 16; iconFile = "idle_calendar_10.bmp"; } else if (widget_id.equals(id_3)) { widget.id = id_3; widget.description = desc_3; widget.width = 80; widget.height = 16; iconFile = "idle_calendar_10.bmp"; } else if (widget_id.equals(id_4)) { widget.id = id_4; widget.description = desc_4; widget.width = 48; widget.height = 32; iconFile = null; } else if (widget_id.equals(id_5)) { widget.id = id_5; widget.description = desc_5; widget.width = 40; widget.height = 16; iconFile = null; } Bitmap icon = iconFile == null ? null : Utils.getBitmap(context, iconFile); widget.bitmap = Bitmap.createBitmap(widget.width, widget.height, Bitmap.Config.RGB_565); Canvas canvas = new Canvas(widget.bitmap); canvas.drawColor(Color.WHITE); if (widget.height == 16 && icon != null) { if (icon != null) canvas.drawBitmap(icon, widget.width == 16 ? 2 : 0, 0, null); if (meetingTime.equals("None")) canvas.drawText("-", widget.width == 16 ? 8 : 6, 15, paintSmallNumerals); else { // Strip out colon to make it fit; String time = meetingTime.replace(":", ""); if (widget.width == 16) { canvas.drawText(time, 8, 15, paintSmallNumerals); } else { paintSmallNumerals.setTextAlign(Align.LEFT); canvas.drawText(time, 0, 15, paintSmallNumerals); paintSmallNumerals.setTextAlign(Align.CENTER); } } } else if (icon != null) { canvas.drawBitmap(icon, 0, 3, null); if ((Preferences.displayLocationInSmallCalendarWidget) && (!meetingTime.equals("None")) && (meetingLocation != null) && (!meetingLocation.equals("---")) && (widget_id.equals(id_0)) && (meetingLocation.length() > 0) && (meetingLocation.length() <= 3)) { canvas.drawText(meetingLocation, 12, 15, paintSmall); } else { Calendar c = Calendar.getInstance(); if ((Preferences.eventDateInCalendarWidget) && (!meetingTime.equals("None"))) { c.setTimeInMillis(meetingStartTimestamp); } int dayOfMonth = c.get(Calendar.DAY_OF_MONTH); if (dayOfMonth < 10) { canvas.drawText("" + dayOfMonth, 12, 16, paintNumerals); } else { canvas.drawText("" + dayOfMonth / 10, 9, 16, paintNumerals); canvas.drawText("" + dayOfMonth % 10, 15, 16, paintNumerals); } } canvas.drawText(meetingTime, 12, 30, paintSmall); } String text = ""; if (iconFile == null) text = meetingTime; if ((meetingTitle != null)) { if (text.length() > 0) text += " : "; text += meetingTitle; } if ((meetingLocation != null) && (meetingLocation.length() > 0)) text += " - " + meetingLocation; if (widget_id.equals(id_1) || widget_id.equals(id_4)) { paintSmall.setTextAlign(Align.LEFT); int iconSpace = iconFile == null ? 0 : 25; canvas.save(); StaticLayout layout = new StaticLayout( text, paintSmall, widget.width - iconSpace, Layout.Alignment.ALIGN_CENTER, 1.2f, 0, false); int height = layout.getHeight(); int textY = 16 - (height / 2); if (textY < 0) { textY = 0; } canvas.translate(iconSpace, textY); // position the text layout.draw(canvas); canvas.restore(); paintSmall.setTextAlign(Align.CENTER); } else if (widget_id.equals(id_3) || widget_id.equals(id_5)) { paintSmall.setTextAlign(Align.LEFT); int iconSpace = iconFile == null ? 0 : 11; canvas.save(); StaticLayout layout = new StaticLayout( text, paintSmall, widget.width - iconSpace, Layout.Alignment.ALIGN_CENTER, 1.0f, 0, false); int height = layout.getHeight(); int textY = 8 - (height / 2); if (textY < 0) { textY = 0; } canvas.translate(iconSpace, textY); // position the text layout.draw(canvas); canvas.restore(); paintSmall.setTextAlign(Align.CENTER); } return widget; }
public Bitmap update(Context context, boolean preview, int watchType) { TextPaint paintSmall = new TextPaint(); paintSmall.setColor(Color.BLACK); paintSmall.setTextSize(FontCache.instance(context).Small.size); paintSmall.setTypeface(FontCache.instance(context).Small.face); TextPaint paintSmallOutline = new TextPaint(); paintSmallOutline.setColor(Color.WHITE); paintSmallOutline.setTextSize(FontCache.instance(context).Small.size); paintSmallOutline.setTypeface(FontCache.instance(context).Small.face); TextPaint paintLarge = new TextPaint(); paintLarge.setColor(Color.BLACK); paintLarge.setTextSize(FontCache.instance(context).Large.size); paintLarge.setTypeface(FontCache.instance(context).Large.face); TextPaint paintLargeOutline = new TextPaint(); paintLargeOutline.setColor(Color.WHITE); paintLargeOutline.setTextSize(FontCache.instance(context).Large.size); paintLargeOutline.setTypeface(FontCache.instance(context).Large.face); MediaControl.TrackInfo lastTrack = MediaControl.getLastTrack(); if (watchType == WatchType.DIGITAL) { Bitmap bitmap = Bitmap.createBitmap(96, 96, Bitmap.Config.RGB_565); Canvas canvas = new Canvas(bitmap); canvas.drawColor(Color.WHITE); if (lastTrack.isEmpty()) { canvas.drawBitmap(Utils.getBitmap(context, "media_player_idle.png"), 0, 0, null); } else { canvas.drawBitmap(Utils.getBitmap(context, "media_player.png"), 0, 0, null); StringBuilder lowerText = new StringBuilder(); if (!lastTrack.artist.equals("")) { lowerText.append(lastTrack.artist); } if (!lastTrack.album.equals("")) { if (lowerText.length() > 0) lowerText.append("\n\n"); lowerText.append(lastTrack.album); } Utils.autoText( context, canvas, lastTrack.track, 0, 8, 96, 35, Layout.Alignment.ALIGN_CENTER, Color.BLACK); Utils.autoText( context, canvas, lowerText.toString(), 0, 54, 96, 35, Layout.Alignment.ALIGN_CENTER, Color.BLACK); } drawDigitalAppSwitchIcon(context, canvas, preview); return bitmap; } else if (watchType == WatchType.ANALOG) { Bitmap bitmap = Bitmap.createBitmap(80, 32, Bitmap.Config.RGB_565); Canvas canvas = new Canvas(bitmap); canvas.drawColor(Color.WHITE); if (lastTrack.isEmpty()) { canvas.drawBitmap(Utils.getBitmap(context, "media_player_idle_oled.png"), 0, 0, null); } else { canvas.drawBitmap(Utils.getBitmap(context, "media_player_oled.png"), 0, 0, null); TextPaint tp = null; if (paintLarge.measureText(lastTrack.track) < 75) { tp = paintLarge; } else { tp = paintSmall; } canvas.save(); StaticLayout layout = new StaticLayout( lastTrack.track, tp, 75, Layout.Alignment.ALIGN_CENTER, 1.2f, 0, false); int height = layout.getHeight(); int textY = 8 - (height / 2); if (textY < 0) { textY = 0; } canvas.translate(0, textY); // position the text canvas.clipRect(0, 0, 75, 16); layout.draw(canvas); canvas.restore(); canvas.save(); StringBuilder lowerText = new StringBuilder(); if (!lastTrack.artist.equals("")) { lowerText.append(lastTrack.artist); } if (!lastTrack.album.equals("")) { if (lowerText.length() > 0) lowerText.append("\n\n"); lowerText.append(lastTrack.album); } if (paintLarge.measureText(lowerText.toString()) < 75) { tp = paintLarge; } else { tp = paintSmall; } layout = new StaticLayout( lowerText.toString(), tp, 75, Layout.Alignment.ALIGN_CENTER, 1.0f, 0, false); height = layout.getHeight(); textY = 24 - (height / 2); if (textY < 16) { textY = 16; } canvas.translate(0, textY); // position the text canvas.clipRect(0, 0, 75, 16); layout.draw(canvas); canvas.restore(); } return bitmap; } return null; }