- switch( idx_proto ) {
- case HTTP_PROTO:
- mrl = "http://" + addr;
- emit methodChanged("http-caching");
- break;
- case HTTPS_PROTO:
- mrl = "https://" + addr;
- emit methodChanged("http-caching");
- break;
- case MMS_PROTO:
- mrl = "mms://" + addr;
- emit methodChanged("mms-caching");
- break;
- case FTP_PROTO:
- mrl = "ftp://" + addr;
- emit methodChanged("ftp-caching");
- break;
- case RTSP_PROTO:
- mrl = "rtsp://" + addr;
- emit methodChanged("rtsp-caching");
- break;
- case RTP_PROTO:
- case UDP_PROTO:
- mrl = qfu(((idx_proto == RTP_PROTO) ? "rtp" : "udp"));
- mrl += qfu( "://" );
- if( addr[0] == ':' ) /* Port number without address */
- mrl += addr;
- else
- {
- mrl += qfu( "@" );
- switch( addr.count( ":" ) )
- {
- case 0: /* DNS or IPv4 literal, no port number */
- mrl += addr;
- mrl += QString(":%1").arg( ui.portSpin->value() );
- break;
- case 1: /* DNS or IPv4 literal plus port number */
- mrl += addr;
- break;
- default: /* IPv6 literal */
- if( !addr.contains( "]:" ) )
- {
- if( addr[0] != '[' ) /* Missing brackets */
- mrl += qfu( "[" ) + addr + qfu( "]" );
- else
- mrl += addr;
- mrl += QString(":%1").arg( ui.portSpin->value() );
- }
- else /* Brackets present, port present */
- mrl += addr;
- break;
- }
- }
- emit methodChanged(idx_proto == RTP_PROTO
- ? "rtp-caching" : "udp-caching");
- break;
- case RTMP_PROTO:
- mrl = "rtmp://" + addr;
- emit methodChanged("rtmp-caching");
- break;
- }
- }
-
- QStringList qsl; qsl<< mrl;
+ char proto[6];
+ char caching[6];
+ } schemes[] =
+ { /* KEEP alphabetical order on first column!! */
+ { "dccp", "rtp" },
+ { "ftp", "ftp" },
+ { "ftps", "ftp" },
+ { "http", "http" },
+ { "https", "http" },
+ { "mms", "mms" },
+ { "mmsh", "mms" },
+ { "mmst", "mms" },
+ { "mmsu", "mms" },
+ { "sftp", "sftp" },
+ { "smb", "smb" },
+ { "rtmp", "rtmp" },
+ { "rtp", "rtp" },
+ { "rtsp", "rtsp" },
+ { "udp", "udp" },
+ };
+
+ QString url = ui.urlComboBox->lineEdit()->text();
+ if( !url.contains( "://") )
+ return; /* nothing to do this far */
+
+ /* Match the correct item in the comboBox */
+ QString proto = url.section( ':', 0, 0 );
+ const struct caching_map *r = (const struct caching_map *)
+ bsearch( qtu(proto), schemes, sizeof(schemes) / sizeof(schemes[0]),
+ sizeof(schemes[0]), strcmp_void );
+ if( r )
+ emit methodChanged( qfu( r->caching ) + qfu( "-caching" ) );
+
+ QStringList qsl;
+ qsl << url;