#include "widget.h"
#include <QGridLayout>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QUrl>
#include <QByteArray>
#include <QFileDialog>
#include <QMessageBox>
static const char* g_ext_to_content_type[] = {
".001", "application/x-001"
, ".301", "application/x-301"
, ".323", "text/h323"
, ".906", "application/x-906"
, ".907", "drawing/907"
, ".a11", "application/x-a11"
, ".acp", "audio/x-mei-aac"
, ".ai", "application/postscript"
, ".aif", "audio/aiff"
, ".aifc", "audio/aiff"
, ".aiff", "audio/aiff"
, ".anv", "application/x-anv"
, ".asa", "text/asa"
, ".asf", "video/x-ms-asf"
, ".asp", "text/asp"
, ".asx", "video/x-ms-asf"
, ".au", "audio/basic"
, ".avi", "video/avi"
, ".awf", "application/vnd.adobe.workflow"
, ".biz", "text/xml"
, ".bmp", "application/x-bmp"
, ".bot", "application/x-bot"
, ".c4t", "application/x-c4t"
, ".c90", "application/x-c90"
, ".cal", "application/x-cals"
, ".cat", "application/vnd.ms-pki.seccat"
, ".cdf", "application/x-netcdf"
, ".cdr", "application/x-cdr"
, ".cel", "application/x-cel"
, ".cer", "application/x-x509-ca-cert"
, ".cg4", "application/x-g4"
, ".cgm", "application/x-cgm"
, ".cit", "application/x-cit"
, ".class", "java/*"
, ".cml", "text/xml"
, ".cmp", "application/x-cmp"
, ".cmx", "application/x-cmx"
, ".cot", "application/x-cot"
, ".conf", "text/plain"
, ".crl", "application/pkix-crl"
, ".crt", "application/x-x509-ca-cert"
, ".csi", "application/x-csi"
, ".css", "text/css"
, ".cut", "application/x-cut"
, ".dbf", "application/x-dbf"
, ".dbm", "application/x-dbm"
, ".dbx", "application/x-dbx"
, ".dcd", "text/xml"
, ".dcx", "application/x-dcx"
, ".der", "application/x-x509-ca-cert"
, ".dgn", "application/x-dgn"
, ".dib", "application/x-dib"
, ".dll", "application/x-msdownload"
, ".doc", "application/msword"
, ".dot", "application/msword"
, ".drw", "application/x-drw"
, ".dtd", "text/xml"
, ".dwf", "Model/vnd.dwf"
, ".dwf", "application/x-dwf"
, ".dwg", "application/x-dwg"
, ".dxb", "application/x-dxb"
, ".dxf", "application/x-dxf"
, ".edn", "application/vnd.adobe.edn"
, ".emf", "application/x-emf"
, ".eml", "message/rfc822"
, ".ent", "text/xml"
, ".epi", "application/x-epi"
, ".eps", "application/x-ps"
, ".eps", "application/postscript"
, ".etd", "application/x-ebx"
, ".exe", "application/x-msdownload"
, ".fax", "image/fax"
, ".fdf", "application/vnd.fdf"
, ".fif", "application/fractals"
, ".fo", "text/xml"
, ".frm", "application/x-frm"
, ".g4", "application/x-g4"
, ".gbr", "application/x-gbr"
, ".gcd", "application/x-gcd"
, ".gif", "image/gif"
, ".gl2", "application/x-gl2"
, ".gp4", "application/x-gp4"
, ".hgl", "application/x-hgl"
, ".hmr", "application/x-hmr"
, ".hpg", "application/x-hpgl"
, ".hpl", "application/x-hpl"
, ".hqx", "application/mac-binhex40"
, ".hrf", "application/x-hrf"
, ".hta", "application/hta"
, ".htc", "text/x-component"
, ".htm", "text/html"
, ".html", "text/html"
, ".htt", "text/webviewhtml"
, ".htx", "text/html"
, ".icb", "application/x-icb"
, ".ico", "image/x-icon"
, ".ico", "application/x-ico"
, ".iff", "application/x-iff"
, ".ig4", "application/x-g4"
, ".igs", "application/x-igs"
, ".iii", "application/x-iphone"
, ".img", "application/x-img"
, ".ini", "text/plain"
, ".ins", "application/x-internet-signup"
, ".isp", "application/x-internet-signup"
, ".IVF", "video/x-ivf"
, ".java", "java/*"
, ".jfif", "image/jpeg"
, ".jpe", "image/jpeg"
, ".jpe", "application/x-jpe"
, ".jpeg", "image/jpeg"
, ".jpg", "image/jpeg"
, ".jpg", "application/x-jpg"
, ".js", "application/x-javascript"
, ".jsp", "text/html"
, ".la1", "audio/x-liquid-file"
, ".lar", "application/x-laplayer-reg"
, ".latex", "application/x-latex"
, ".lavs", "audio/x-liquid-secure"
, ".lbm", "application/x-lbm"
, ".lmsff", "audio/x-la-lms"
, ".log", "text/plain"
, ".ls", "application/x-javascript"
, ".ltr", "application/x-ltr"
, ".m1v", "video/x-mpeg"
, ".m2v", "video/x-mpeg"
, ".m3u", "audio/mpegurl"
, ".m4e", "video/mpeg4"
, ".mac", "application/x-mac"
, ".man", "application/x-troff-man"
, ".math", "text/xml"
, ".mdb", "application/msaccess"
, ".mdb", "application/x-mdb"
, ".mfp", "application/x-shockwave-flash"
, ".mht", "message/rfc822"
, ".mhtml", "message/rfc822"
, ".mi", "application/x-mi"
, ".mid", "audio/mid"
, ".midi", "audio/mid"
, ".mil", "application/x-mil"
, ".mml", "text/xml"
, ".mnd", "audio/x-musicnet-download"
, ".mns", "audio/x-musicnet-stream"
, ".mocha", "application/x-javascript"
, ".movie", "video/x-sgi-movie"
, ".mp1", "audio/mp1"
, ".mp2", "audio/mp2"
, ".mp2v", "video/mpeg"
, ".mp3", "audio/mp3"
, ".mp4", "video/mpeg4"
, ".mpa", "video/x-mpg"
, ".mpd", "application/vnd.ms-project"
, ".mpe", "video/x-mpeg"
, ".mpeg", "video/mpg"
, ".mpg", "video/mpg"
, ".mpga", "audio/rn-mpeg"
, ".mpp", "application/vnd.ms-project"
, ".mps", "video/x-mpeg"
, ".mpt", "application/vnd.ms-project"
, ".mpv", "video/mpg"
, ".mpv2", "video/mpeg"
, ".mpw", "application/vnd.ms-project"
, ".mpx", "application/vnd.ms-project"
, ".mtx", "text/xml"
, ".mxp", "application/x-mmxp"
, ".net", "image/pnetvue"
, ".nrf", "application/x-nrf"
, ".nws", "message/rfc822"
, ".odc", "text/x-ms-odc"
, ".out", "application/x-out"
, ".p10", "application/pkcs10"
, ".p12", "application/x-pkcs12"
, ".p7b", "application/x-pkcs7-certificates"
, ".p7c", "application/pkcs7-mime"
, ".p7m", "application/pkcs7-mime"
, ".p7r", "application/x-pkcs7-certreqresp"
, ".p7s", "application/pkcs7-signature"
, ".pc5", "application/x-pc5"
, ".pci", "application/x-pci"
, ".pcl", "application/x-pcl"
, ".pcx", "application/x-pcx"
, ".pdf", "application/pdf"
, ".pdf", "application/pdf"
, ".pdx", "application/vnd.adobe.pdx"
, ".pfx", "application/x-pkcs12"
, ".pgl", "application/x-pgl"
, ".pic", "application/x-pic"
, ".pko", "application/vnd.ms-pki.pko"
, ".pl", "application/x-perl"
, ".plg", "text/html"
, ".pls", "audio/scpls"
, ".plt", "application/x-plt"
, ".png", "image/png"
, ".png", "application/x-png"
, ".pot", "application/vnd.ms-powerpoint"
, ".ppa", "application/vnd.ms-powerpoint"
, ".ppm", "application/x-ppm"
, ".pps", "application/vnd.ms-powerpoint"
, ".ppt", "application/vnd.ms-powerpoint"
, ".ppt", "application/x-ppt"
, ".pr", "application/x-pr"
, ".prf", "application/pics-rules"
, ".prn", "application/x-prn"
, ".prt", "application/x-prt"
, ".ps", "application/x-ps"
, ".ps", "application/postscript"
, ".ptn", "application/x-ptn"
, ".pwz", "application/vnd.ms-powerpoint"
, ".r3t", "text/vnd.rn-realtext3d"
, ".ra", "audio/vnd.rn-realaudio"
, ".ram", "audio/x-pn-realaudio"
, ".ras", "application/x-ras"
, ".rat", "application/rat-file"
, ".rdf", "text/xml"
, ".rec", "application/vnd.rn-recording"
, ".red", "application/x-red"
, ".rgb", "application/x-rgb"
, ".rjs", "application/vnd.rn-realsystem-rjs"
, ".rjt", "application/vnd.rn-realsystem-rjt"
, ".rlc", "application/x-rlc"
, ".rle", "application/x-rle"
, ".rm", "application/vnd.rn-realmedia"
, ".rmf", "