aboutsummaryrefslogtreecommitdiff
path: root/src/lib/downloads/widgets
diff options
context:
space:
mode:
authorAqua-sama <aqua@iserlohn-fortress.net>2018-01-01 13:48:31 +0100
committerAqua-sama <aqua@iserlohn-fortress.net>2018-01-01 13:48:31 +0100
commit83d1f0c0c3a78101fbe174a02b17a950c496e635 (patch)
treeed3dba7c1a01e5916e1c146e69d7d86f7cd7e0d0 /src/lib/downloads/widgets
parentUrlCompleter searches the bookmarks tree (folder href) (diff)
downloadsmolbote-83d1f0c0c3a78101fbe174a02b17a950c496e635.tar.xz
Download items' width should no longer exceed the list width
Diffstat (limited to 'src/lib/downloads/widgets')
-rw-r--r--src/lib/downloads/widgets/downloaditemform.ui53
-rw-r--r--src/lib/downloads/widgets/downloaditemwidget.cpp8
-rw-r--r--src/lib/downloads/widgets/elidedlabel.cpp85
-rw-r--r--src/lib/downloads/widgets/elidedlabel.h85
4 files changed, 200 insertions, 31 deletions
diff --git a/src/lib/downloads/widgets/downloaditemform.ui b/src/lib/downloads/widgets/downloaditemform.ui
index 7e63211..17f1d6a 100644
--- a/src/lib/downloads/widgets/downloaditemform.ui
+++ b/src/lib/downloads/widgets/downloaditemform.ui
@@ -7,11 +7,11 @@
<x>0</x>
<y>0</y>
<width>500</width>
- <height>100</height>
+ <height>122</height>
</rect>
</property>
<property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Minimum">
+ <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
@@ -24,44 +24,36 @@
<number>0</number>
</property>
<item>
- <widget class="QLabel" name="url_label">
+ <widget class="ElidedLabel" name="url_label">
<property name="text">
<string>[url]</string>
</property>
</widget>
</item>
<item>
- <layout class="QHBoxLayout" name="horizontalLayout">
- <item>
- <widget class="QLabel" name="status_label">
- <property name="text">
- <string>Un&amp;known</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QLabel" name="filesize_label">
- <property name="text">
- <string>&amp;x MiB / y MiB</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QProgressBar" name="progressBar">
- <property name="value">
- <number>24</number>
- </property>
- </widget>
- </item>
- </layout>
+ <widget class="QProgressBar" name="progressBar">
+ <property name="value">
+ <number>24</number>
+ </property>
+ </widget>
</item>
<item>
<widget class="QWidget" name="detailsWidget" native="true">
<layout class="QVBoxLayout" name="detailsLayout">
<item>
+ <widget class="QLabel" name="status_label">
+ <property name="text">
+ <string>status_label</string>
+ </property>
+ </widget>
+ </item>
+ <item>
<widget class="QLabel" name="path_label">
<property name="text">
- <string>TextLabel</string>
+ <string>path_label</string>
+ </property>
+ <property name="wordWrap">
+ <bool>true</bool>
</property>
</widget>
</item>
@@ -70,6 +62,13 @@
</item>
</layout>
</widget>
+ <customwidgets>
+ <customwidget>
+ <class>ElidedLabel</class>
+ <extends>QLabel</extends>
+ <header>widgets/elidedlabel.h</header>
+ </customwidget>
+ </customwidgets>
<resources/>
<connections/>
</ui>
diff --git a/src/lib/downloads/widgets/downloaditemwidget.cpp b/src/lib/downloads/widgets/downloaditemwidget.cpp
index 6145a6e..fff3cfc 100644
--- a/src/lib/downloads/widgets/downloaditemwidget.cpp
+++ b/src/lib/downloads/widgets/downloaditemwidget.cpp
@@ -19,7 +19,8 @@ DownloadItemWidget::DownloadItemWidget(QWebEngineDownloadItem *item, QWidget *pa
m_item = item;
ui->setupUi(this);
- ui->url_label->setText(item->url().toString());
+
+ ui->url_label->setContent(item->url().toString());
ui->detailsWidget->hide();
ui->path_label->setText(item->path());
@@ -93,11 +94,10 @@ void DownloadItemWidget::updateProgress(qint64 value, qint64 total)
{
ui->progressBar->setMaximum(total);
ui->progressBar->setValue(value);
- ui->filesize_label->setText(QString("%1 / %2").arg(sizeString(value), sizeString(total)));
+ ui->progressBar->setFormat(QString("%1 / %2").arg(sizeString(value), sizeString(total)));
}
void DownloadItemWidget::updateFinished()
{
- ui->progressBar->setMaximum(100);
- ui->progressBar->setValue(100);
+ ui->progressBar->setValue(ui->progressBar->maximum());
}
diff --git a/src/lib/downloads/widgets/elidedlabel.cpp b/src/lib/downloads/widgets/elidedlabel.cpp
new file mode 100644
index 0000000..dc17d32
--- /dev/null
+++ b/src/lib/downloads/widgets/elidedlabel.cpp
@@ -0,0 +1,85 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the QtCore module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** BSD License Usage
+** Alternatively, you may use this file under the terms of the BSD license
+** as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+/*
+ * This file is part of smolbote. It's copyrighted by the contributors recorded
+ * in the version control history of the file, available from its original
+ * location: git://neueland.iserlohn-fortress.net/smolbote.git
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#include "elidedlabel.h"
+
+#include <QPainter>
+#include <QTextLayout>
+#include <QDebug>
+
+ElidedLabel::ElidedLabel(QWidget *parent)
+ : QLabel(parent)
+ , elided(false)
+ , content("elided_label")
+{
+ setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
+}
+
+void ElidedLabel::setContent(const QString &newText)
+{
+ content = newText;
+ setText(newText);
+}
+
+void ElidedLabel::resizeEvent(QResizeEvent *event)
+{
+ QLabel::resizeEvent(event);
+
+ QFontMetrics font = this->fontMetrics();
+ QString elidedLine = font.elidedText(content, Qt::ElideRight, width());
+ setText(elidedLine);
+}
diff --git a/src/lib/downloads/widgets/elidedlabel.h b/src/lib/downloads/widgets/elidedlabel.h
new file mode 100644
index 0000000..d0f6221
--- /dev/null
+++ b/src/lib/downloads/widgets/elidedlabel.h
@@ -0,0 +1,85 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the QtCore module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** BSD License Usage
+** Alternatively, you may use this file under the terms of the BSD license
+** as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+/*
+ * This file is part of smolbote. It's copyrighted by the contributors recorded
+ * in the version control history of the file, available from its original
+ * location: git://neueland.iserlohn-fortress.net/smolbote.git
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#ifndef ELIDEDLABEL_H
+#define ELIDEDLABEL_H
+
+#include <QLabel>
+
+class ElidedLabel : public QLabel
+{
+
+public:
+ explicit ElidedLabel(QWidget *parent = nullptr);
+
+ void setContent(const QString &text);
+ const QString & text() const {
+ return content;
+ }
+ bool isElided() const {
+ return elided;
+ }
+
+protected:
+ void resizeEvent(QResizeEvent *event) override;
+
+private:
+ bool elided;
+ QString content;
+};
+
+#endif // ELIDEDLABEL_H