Draws the background of the scene using painter.
        
        :param      painter | <QPainter>
                    rect    | <QRectF>

def drawBackground( self, painter, rect ):
        """
        Draws the background of the scene using painter.
        
        :param      painter | <QPainter>
                    rect    | <QRectF>
        """
        if ( self._rebuildRequired ):
            self.rebuild()
        
        super(XCalendarScene, self).drawBackground(painter, rect)
        
        palette = self.palette()
        
        # draw custom options
        if ( 'curr_date' in self._buildData ):
            clr = palette.color(QPalette.Highlight)
            clr.setAlpha(40)
            painter.setBrush(clr)
            painter.setPen(Qt.NoPen)
            painter.drawRect(self._buildData['curr_date'])
            painter.setBrush(Qt.NoBrush)
        
        if ( 'today' in self._buildData ):
            painter.setPen(Qt.NoPen)
            clr = palette.color(QPalette.AlternateBase)
            clr.setAlpha(120)
            painter.setBrush(clr)
            painter.drawRect(self._buildData['today'])
            painter.setBrush(Qt.NoBrush)
        
        # draw the grid
        painter.setPen(palette.color(QPalette.Mid))
        painter.drawLines(self._buildData.get('grid', []))
        
        # draw text fields
        painter.setPen(palette.color(QPalette.Text))
        for data in self._buildData.get('regular_text', []):
            painter.drawText(*data)
        
        # draw mid text fields
        painter.setPen(palette.color(QPalette.Mid))
        for data in self._buildData.get('mid_text', []):
            painter.drawText(*data)