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"