]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/filesys.cpp
wxHTML src code indentation now conforms (more) to wxWin coding style
[wxWidgets.git] / src / common / filesys.cpp
index ea9f9079823e42a5772d59d2d9240c3d62beb06c..9925521aa3070c818297c818a13568d90462d266 100644 (file)
@@ -35,6 +35,8 @@
 IMPLEMENT_ABSTRACT_CLASS(wxFileSystemHandler, wxObject)
 
 
+static wxFileTypeInfo *gs_FSMimeFallbacks = NULL;
+
 wxString wxFileSystemHandler::GetMimeTypeFromExt(const wxString& location)
 {
     wxString ext = wxEmptyString, mime = wxEmptyString;
@@ -53,50 +55,18 @@ wxString wxFileSystemHandler::GetMimeTypeFromExt(const wxString& location)
 
     static bool s_MinimalMimeEnsured = FALSE;
     if (!s_MinimalMimeEnsured) {
-        static const wxFileTypeInfo fallbacks[] =
-        {
-            wxFileTypeInfo("image/jpeg",
-                           "",
-                           "",
-                           "JPEG image (from fallback)",
-                           "jpg", "jpeg", NULL),
-            wxFileTypeInfo("image/gif",
-                           "",
-                           "",
-                           "GIF image (from fallback)",
-                           "gif", NULL),
-            wxFileTypeInfo("image/png",
-                           "",
-                           "",
-                           "PNG image (from fallback)",
-                           "png", NULL),
-            wxFileTypeInfo("image/bmp",
-                           "",
-                           "",
-                           "windows bitmap image (from fallback)",
-                           "bmp", NULL),
-            wxFileTypeInfo("text/html",
-                           "",
-                           "",
-                           "HTML document (from fallback)",
-                           "htm", "html", NULL),
-
-            // must terminate the table with this!
-            wxFileTypeInfo()
-        };
-
-        wxTheMimeTypesManager -> AddFallbacks(fallbacks);
+        wxTheMimeTypesManager -> AddFallbacks(gs_FSMimeFallbacks);
+        s_MinimalMimeEnsured = TRUE;
     }
 
     ft = wxTheMimeTypesManager -> GetFileTypeFromExtension(ext);
-    if (ft && (ft -> GetMimeType(&mime))) {
-        delete ft; 
-        return mime;
-    }
-    else {
-        delete ft;
-        return wxEmptyString;
+    if ( !ft || !ft -> GetMimeType(&mime) ) {
+        mime = wxEmptyString;
     }
+
+    delete ft;
+
+    return mime;
 }
 
 
@@ -186,13 +156,15 @@ bool wxLocalFSHandler::CanOpen(const wxString& location)
 wxFSFile* wxLocalFSHandler::OpenFile(wxFileSystem& WXUNUSED(fs), const wxString& location)
 {
     wxString right = GetRightLocation(location);
-    if (wxFileExists(right))
-        return new wxFSFile(new wxFileInputStream(right),
-                            right,
-                            GetMimeTypeFromExt(location),
-                            GetAnchor(location),
-                            wxDateTime(wxFileModificationTime(right)));
-    else return (wxFSFile*) NULL;
+    if (!wxFileExists(right))
+        return (wxFSFile*) NULL;
+
+    return new wxFSFile(new wxFileInputStream(right),
+                        right,
+                        GetMimeTypeFromExt(location),
+                        GetAnchor(location),
+                        wxDateTime(wxFileModificationTime(right)));
+
 }
 
 wxString wxLocalFSHandler::FindFirst(const wxString& spec, int flags)
@@ -326,11 +298,13 @@ wxFSFile* wxFileSystem::OpenFile(const wxString& location)
     meta = 0;
     for (i = 0; i < ln; i++)
     {
-        if (!meta) 
-            switch (loc[i])
-               {
-                case wxT('/') : case wxT(':') : case wxT('#') : meta = loc[i];
-            }
+        switch (loc[i])
+        {
+            case wxT('/') : case wxT(':') : case wxT('#') : 
+                meta = loc[i];
+                break;
+        }
+        if (meta != 0) break;
     }
     m_LastName = wxEmptyString;
 
@@ -436,10 +410,47 @@ class wxFileSystemModule : public wxModule
         virtual bool OnInit()
         {
             wxFileSystem::AddHandler(new wxLocalFSHandler);
+            
+            gs_FSMimeFallbacks = new wxFileTypeInfo[6];
+            gs_FSMimeFallbacks[0] = 
+            wxFileTypeInfo("image/jpeg",
+                           "",
+                           "",
+                           "JPEG image (from fallback)",
+                           "jpg", "jpeg", NULL);
+            gs_FSMimeFallbacks[1] = 
+            wxFileTypeInfo("image/gif",
+                           "",
+                           "",
+                           "GIF image (from fallback)",
+                           "gif", NULL);
+            gs_FSMimeFallbacks[2] = 
+            wxFileTypeInfo("image/png",
+                           "",
+                           "",
+                           "PNG image (from fallback)",
+                           "png", NULL);
+            gs_FSMimeFallbacks[3] = 
+            wxFileTypeInfo("image/bmp",
+                           "",
+                           "",
+                           "windows bitmap image (from fallback)",
+                           "bmp", NULL);
+            gs_FSMimeFallbacks[4] = 
+            wxFileTypeInfo("text/html",
+                           "",
+                           "",
+                           "HTML document (from fallback)",
+                           "htm", "html", NULL);
+            gs_FSMimeFallbacks[5] = 
+            // must terminate the table with this!
+            wxFileTypeInfo();
+            
             return TRUE;
         }
         virtual void OnExit()
        {
+            delete gs_FSMimeFallbacks;
             wxFileSystem::CleanUpHandlers();
        }
 };