[kde-doc-english] [trojita] src/Gui: GUI: don't load overly long inlined attachments when not in "online, trash data" mode

Jan Kundrát jkt at flaska.net
Fri Aug 9 16:30:11 UTC 2013


Git commit c0d85b3b81b07bf7e8e4582be4ba9976a3f6f48e by Jan Kundrát.
Committed on 04/08/2013 at 21:34.
Pushed by jkt into branch 'master'.

GUI: don't load overly long inlined attachments when not in "online, trash data" mode

M  +10   -6    src/Gui/PartWidgetFactory.cpp

http://commits.kde.org/trojita/c0d85b3b81b07bf7e8e4582be4ba9976a3f6f48e

diff --git a/src/Gui/PartWidgetFactory.cpp b/src/Gui/PartWidgetFactory.cpp
index 437a5ae..25ed5c7 100644
--- a/src/Gui/PartWidgetFactory.cpp
+++ b/src/Gui/PartWidgetFactory.cpp
@@ -159,16 +159,17 @@ QWidget *PartWidgetFactory::create(const QModelIndex &partIndex, int recursionDe
             }
         }
 
+        const Imap::Mailbox::Model *constModel = 0;
+        Imap::Mailbox::TreeItemPart *part = dynamic_cast<Imap::Mailbox::TreeItemPart *>(Imap::Mailbox::Model::realTreeItem(partIndex, &constModel));
+        Imap::Mailbox::Model *model = const_cast<Imap::Mailbox::Model *>(constModel);
+        Q_ASSERT(model);
+        Q_ASSERT(part);
+        part->fetchFromCache(model);
+
         // The problem is that some nasty MUAs (hint hint Thunderbird) would
         // happily attach a .tar.gz and call it "inline"
         if (showInline && recognizedMimeType && partIndex.data(Imap::Mailbox::RolePartFileName).toString().isEmpty()) {
             // showing inline without any decorations whatsoever
-            const Imap::Mailbox::Model *constModel = 0;
-            Imap::Mailbox::TreeItemPart *part = dynamic_cast<Imap::Mailbox::TreeItemPart *>(Imap::Mailbox::Model::realTreeItem(partIndex, &constModel));
-            Imap::Mailbox::Model *model = const_cast<Imap::Mailbox::Model *>(constModel);
-            Q_ASSERT(model);
-            Q_ASSERT(part);
-            part->fetchFromCache(model);
 
             bool showDirectly = loadingMode == LOAD_IMMEDIATELY;
             if (!part->fetched())
@@ -190,6 +191,9 @@ QWidget *PartWidgetFactory::create(const QModelIndex &partIndex, int recursionDe
             if (contentWidget && !showInline) {
                 contentWidget->hide();
             }
+            if (contentWidget && !part->fetched() && !model->isNetworkOnline() && part->octets() > ExpensiveFetchThreshold) {
+                contentWidget->hide();
+            }
             return new AttachmentView(0, manager, partIndex, contentWidget);
         }
     }



More information about the kde-doc-english mailing list