def __init__(self, request, parent=None):
        super().__init__(parent)

        self.url = request.request().url()
        self.operation = self.operation2string(request.operation())
        query = QUrlQuery(self.url)
        RequestDetailsItem('Operation', self.operation, self)
        RequestDetailsItem('Thread', request.originatingThreadId(), self)
        RequestDetailsItem(
            'Initiator',
            request.initiatorClassName()
            if request.initiatorClassName() else 'unknown', self)
        if request.initiatorRequestId():
            RequestDetailsItem('ID', str(request.initiatorRequestId()), self)

        RequestDetailsItem(
            'Cache (control)',
            self.cache_control_to_string(request.request().attribute(
                QNetworkRequest.CacheLoadControlAttribute)), self)
        RequestDetailsItem(
            'Cache (save)',
            'Can store result in cache' if request.request().attribute(
                QNetworkRequest.CacheSaveControlAttribute) else
            'Result cannot be stored in cache', self)

        query_items = query.queryItems()
        if query_items:
            RequestQueryItems(query_items, self)
        RequestHeadersItem(request, self)
        if self.operation in ('POST', 'PUT'):
            PostContentItem(request, self)