File indexing completed on 2024-05-12 05:12:55

0001 /*
0002     This file is part of Akregator.
0003 
0004     SPDX-FileCopyrightText: 2004 Sashmit Bhaduri <smt@vfemail.net>
0005 
0006     SPDX-License-Identifier: GPL-2.0-or-later WITH Qt-Commercial-exception-1.0
0007 */
0008 
0009 #include "frame.h"
0010 #include "utils.h"
0011 
0012 #include "akregator_debug.h"
0013 #include <KLocalizedString>
0014 
0015 #include <Libkdepim/ProgressManager>
0016 
0017 using namespace Akregator;
0018 Frame::Frame(QWidget *parent)
0019     : QWidget(parent)
0020 {
0021     m_title = i18n("Untitled");
0022     m_id = m_idCounter++;
0023 }
0024 
0025 void Frame::slotSetTitle(const QString &s)
0026 {
0027     if (m_title != s) {
0028         m_title = s;
0029         Q_EMIT signalTitleChanged(this, s);
0030     }
0031 }
0032 
0033 bool Frame::isLoading() const
0034 {
0035     return m_loading;
0036 }
0037 
0038 void Frame::slotSetCaption(const QString &s)
0039 {
0040     if (m_progressItem) {
0041         m_progressItem->setLabel(s);
0042     }
0043     m_caption = s;
0044     Q_EMIT signalCaptionChanged(this, s);
0045 }
0046 
0047 void Frame::slotSetStatusText(const QString &s)
0048 {
0049     m_statusText = s;
0050     m_statusText = Akregator::Utils::stripTags(m_statusText);
0051     Q_EMIT signalStatusText(this, m_statusText);
0052 }
0053 
0054 void Frame::slotSetProgress(int a)
0055 {
0056     if (m_progressItem) {
0057         m_progressItem->setProgress(static_cast<uint>(a));
0058     }
0059     m_progress = a;
0060     Q_EMIT signalLoadingProgress(this, a);
0061 }
0062 
0063 void Frame::slotSetState(State state)
0064 {
0065     m_state = state;
0066 
0067     switch (m_state) {
0068     case Frame::Started:
0069         Q_EMIT signalStarted(this);
0070         break;
0071     case Frame::Canceled:
0072         Q_EMIT signalCanceled(this, QString());
0073         break;
0074     case Frame::Idle:
0075     case Frame::Completed:
0076         Q_EMIT signalCompleted(this);
0077     }
0078 }
0079 
0080 int Frame::m_idCounter = 0;
0081 
0082 int Frame::id() const
0083 {
0084     return m_id;
0085 }
0086 
0087 void Frame::setRemovable(bool removable)
0088 {
0089     m_isRemovable = removable;
0090 }
0091 
0092 bool Frame::isRemovable() const
0093 {
0094     return m_isRemovable;
0095 }
0096 
0097 Frame::~Frame()
0098 {
0099     if (m_progressItem) {
0100         m_progressItem->setComplete();
0101     }
0102 }
0103 
0104 Frame::State Frame::state() const
0105 {
0106     return m_state;
0107 }
0108 
0109 QString Frame::title() const
0110 {
0111     return m_title;
0112 }
0113 
0114 QString Frame::caption() const
0115 {
0116     return m_caption;
0117 }
0118 
0119 QString Frame::statusText() const
0120 {
0121     return m_statusText;
0122 }
0123 
0124 QIcon Frame::icon() const
0125 {
0126     return m_icon;
0127 }
0128 
0129 void Frame::setIcon(const QIcon &icon)
0130 {
0131     m_icon = icon;
0132 }
0133 
0134 void Frame::slotSetStarted()
0135 {
0136     m_loading = true;
0137     if (m_progressId.isNull() || m_progressId.isEmpty()) {
0138         m_progressId = KPIM::ProgressManager::getUniqueID();
0139     }
0140     m_progressItem = KPIM::ProgressManager::createProgressItem(m_progressId, title(), QString(), false);
0141     m_progressItem->setStatus(i18n("Loading..."));
0142     m_state = Started;
0143     Q_EMIT signalStarted(this);
0144 }
0145 
0146 void Frame::slotStop()
0147 {
0148     if (m_loading) {
0149         m_loading = false;
0150     }
0151 }
0152 
0153 void Frame::slotSetCanceled(const QString &s)
0154 {
0155     m_loading = false;
0156     if (m_progressItem) {
0157         m_progressItem->setStatus(i18n("Loading canceled"));
0158         m_progressItem->setComplete();
0159         m_progressItem = nullptr;
0160     }
0161     m_state = Canceled;
0162     Q_EMIT signalCanceled(this, s);
0163 }
0164 
0165 void Frame::slotSetCompleted()
0166 {
0167     m_loading = false;
0168     if (m_progressItem) {
0169         m_progressItem->setStatus(i18n("Loading completed"));
0170         m_progressItem->setComplete();
0171         m_progressItem = nullptr;
0172     }
0173     m_state = Completed;
0174     Q_EMIT signalCompleted(this);
0175 }
0176 
0177 int Frame::progress() const
0178 {
0179     return m_progress;
0180 }
0181 
0182 #include "moc_frame.cpp"