Redesign RSS base classes.

This commit is contained in:
Vladimir Golovnev (Glassez) 2015-10-17 18:59:04 +03:00 committed by Vladimir Golovnev (qlassez)
parent 6f7ae728eb
commit 28ed981082
16 changed files with 232 additions and 266 deletions

View file

@ -40,24 +40,11 @@
using namespace Rss;
Folder::Folder(Folder *parent, const QString &name)
: m_parent(parent)
, m_name(name)
Folder::Folder(const QString &name)
: m_name(name)
{
}
Folder::~Folder() {}
Folder *Folder::parent() const
{
return m_parent;
}
void Folder::setParent(Folder *parent)
{
m_parent = parent;
}
uint Folder::unreadCount() const
{
uint nbUnread = 0;
@ -78,31 +65,6 @@ void Folder::removeChild(const QString &childId)
}
}
FolderPtr Folder::addFolder(const QString &name)
{
FolderPtr subfolder;
if (!m_children.contains(name)) {
subfolder = FolderPtr(new Folder(this, name));
m_children[name] = subfolder;
}
else {
subfolder = qSharedPointerDynamicCast<Folder>(m_children.value(name));
}
return subfolder;
}
FeedPtr Folder::addStream(Manager *manager, const QString &url)
{
qDebug() << Q_FUNC_INFO << manager << url;
FeedPtr stream(new Feed(manager, this, url));
Q_ASSERT(stream);
qDebug() << "Stream URL is " << stream->url();
Q_ASSERT(!m_children.contains(stream->url()));
m_children[stream->url()] = stream;
stream->refresh();
return stream;
}
// Refresh All Children
bool Folder::refresh()
{
@ -176,7 +138,8 @@ void Folder::rename(const QString &newName)
Q_ASSERT(!m_parent->hasChild(newName));
if (!m_parent->hasChild(newName)) {
// Update parent
m_parent->renameChildFolder(m_name, newName);
FilePtr folder = m_parent->m_children.take(m_name);
m_parent->m_children[newName] = folder;
// Actually rename
m_name = newName;
}
@ -224,20 +187,17 @@ QHash<QString, FeedPtr> Folder::getAllFeedsAsHash() const
return ret;
}
void Folder::addFile(const FilePtr &item)
bool Folder::addFile(const FilePtr &item)
{
if (FeedPtr feed = qSharedPointerDynamicCast<Feed>(item)) {
Q_ASSERT(!m_children.contains(feed->url()));
m_children[feed->url()] = item;
qDebug("Added feed %s to folder ./%s", qPrintable(feed->url()), qPrintable(m_name));
Q_ASSERT(!m_children.contains(item->id()));
if (!m_children.contains(item->id())) {
m_children[item->id()] = item;
// Update parent
item->m_parent = this;
return true;
}
else if (FolderPtr folder = qSharedPointerDynamicCast<Folder>(item)) {
Q_ASSERT(!m_children.contains(folder->displayName()));
m_children[folder->displayName()] = item;
qDebug("Added folder %s to folder ./%s", qPrintable(folder->displayName()), qPrintable(m_name));
}
// Update parent
item->setParent(this);
return false;
}
void Folder::removeAllItems()
@ -245,6 +205,11 @@ void Folder::removeAllItems()
m_children.clear();
}
FilePtr Folder::child(const QString &childId)
{
return m_children.value(childId);
}
void Folder::removeAllSettings()
{
FileHash::ConstIterator it = m_children.begin();
@ -274,13 +239,6 @@ bool Folder::hasChild(const QString &childId)
return m_children.contains(childId);
}
void Folder::renameChildFolder(const QString &oldName, const QString &newName)
{
Q_ASSERT(m_children.contains(oldName));
FilePtr folder = m_children.take(oldName);
m_children[newName] = folder;
}
FilePtr Folder::takeChild(const QString &childId)
{
return m_children.take(childId);