OSDN Git Service

kdirshare: setup title and stylesheet for the errors
authorIvailo Monev <xakepa10@gmail.com>
Mon, 14 Aug 2023 14:53:00 +0000 (17:53 +0300)
committerIvailo Monev <xakepa10@gmail.com>
Mon, 14 Aug 2023 14:53:53 +0000 (17:53 +0300)
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
kdirshare/kded/kdirshareimpl.cpp

index db17373..8cba53e 100644 (file)
@@ -34,8 +34,6 @@
 #include <kdebug.h>
 
 static const QDir::SortFlags s_dirsortflags = (QDir::Name | QDir::DirsFirst);
-static const QByteArray s_data404("<html>404 Not Found</html>");
-static const QByteArray s_data500("<html>500 Internal Server Error</html>");
 // AVAHI_LABEL_MAX - 3 (for dots) - 1 (for null terminator)
 static const int s_sharenamelimit = 60;
 
@@ -97,6 +95,38 @@ static QByteArray styleSheetForPalette(const QPalette &palette)
     return stylesheet;
 }
 
+static QByteArray contentForError(const QString &path, const ushort status)
+{
+    const QString pathtitle = getTitle(path);
+
+    QByteArray data;
+    data.append("<html>\n");
+    data.append("  <head>\n");
+    data.append("    <link rel=\"stylesheet\" href=\"/kdirsharestyle.css\">\n");
+    data.append("  </head>\n");
+    data.append("  <body>\n");
+    data.append("    <title>");
+    data.append(pathtitle.toUtf8());
+    data.append("</title>\n");
+    switch (status) {
+        case 404: {
+            data.append("    <center>404 Not Found</center>\n");
+            break;
+        }
+        case 500: {
+            data.append("    <center>500 Internal Server Error</center>\n");
+            break;
+        }
+        default: {
+            Q_ASSERT(false);
+            break;
+        }
+    }
+    data.append("  </body>\n");
+    data.append("</html>");
+    return data;
+}
+
 static QByteArray contentForFile(const QString &basedir, const QFileInfo &fileinfo)
 {
     QByteArray data;
@@ -271,7 +301,7 @@ void KDirServer::respond(const QByteArray &url, QByteArray *outdata,
         iconbuffer.open(QBuffer::WriteOnly);
         if (!iconpixmap.save(&iconbuffer, iconformat)) {
             kWarning() << "Could not save image";
-            outdata->append(s_data500);
+            outdata->append(contentForError(normalizedpath, 500));
             *outhttpstatus = 500;
             outheaders->insert("Content-Type", "text/html; charset=UTF-8");
         } else {
@@ -298,7 +328,7 @@ void KDirServer::respond(const QByteArray &url, QByteArray *outdata,
         outheaders->insert("Content-Type", filemime.toAscii());
         outfilepath->append(pathinfo.filePath());
     } else {
-        outdata->append(s_data404);
+        outdata->append(contentForError(normalizedpath, 404));
         *outhttpstatus = 404;
         outheaders->insert("Content-Type", "text/html; charset=UTF-8");
     }