Merging of initial feeds now works, so does editing of standard feed/category. Needs a lot of polishment though.
This commit is contained in:
parent
80dbf26e62
commit
f131be94b9
@ -152,6 +152,21 @@ QList<Feed*> RootItem::getSubTreeFeeds() {
|
|||||||
return children;
|
return children;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ServiceRoot *RootItem::getParentServiceRoot() {
|
||||||
|
RootItem *working_parent = this;
|
||||||
|
|
||||||
|
while (working_parent->kind() != RootItemKind::Root) {
|
||||||
|
if (working_parent->kind() == RootItemKind::ServiceRoot) {
|
||||||
|
return working_parent->toServiceRoot();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
working_parent = working_parent->parent();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
bool RootItem::removeChild(RootItem *child) {
|
bool RootItem::removeChild(RootItem *child) {
|
||||||
return m_childItems.removeOne(child);
|
return m_childItems.removeOne(child);
|
||||||
}
|
}
|
||||||
|
@ -157,6 +157,9 @@ class RootItem {
|
|||||||
QList<Category*> getSubTreeCategories();
|
QList<Category*> getSubTreeCategories();
|
||||||
QList<Feed*> getSubTreeFeeds();
|
QList<Feed*> getSubTreeFeeds();
|
||||||
|
|
||||||
|
// Returns the service root node which is direct or indirect parent of current item.
|
||||||
|
ServiceRoot *getParentServiceRoot();
|
||||||
|
|
||||||
// Removes particular child at given index.
|
// Removes particular child at given index.
|
||||||
// NOTE: Child is NOT freed from the memory.
|
// NOTE: Child is NOT freed from the memory.
|
||||||
bool removeChild(int index);
|
bool removeChild(int index);
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
#include "core/messagesproxymodel.h"
|
#include "core/messagesproxymodel.h"
|
||||||
#include "core/feeddownloader.h"
|
#include "core/feeddownloader.h"
|
||||||
#include "core/feedsselection.h"
|
#include "core/feedsselection.h"
|
||||||
|
#include "services/standard/standardserviceroot.h"
|
||||||
#include "services/standard/standardfeed.h"
|
#include "services/standard/standardfeed.h"
|
||||||
#include "services/standard/standardfeedsimportexportmodel.h"
|
#include "services/standard/standardfeedsimportexportmodel.h"
|
||||||
#include "network-web/webbrowser.h"
|
#include "network-web/webbrowser.h"
|
||||||
@ -209,12 +210,10 @@ void FeedMessageViewer::loadInitialFeeds() {
|
|||||||
model.importAsOPML20(IOFactory::readTextFile(file_to_load));
|
model.importAsOPML20(IOFactory::readTextFile(file_to_load));
|
||||||
model.checkAllItems();
|
model.checkAllItems();
|
||||||
|
|
||||||
// TODO: dodělat, předpokládá nějaký rozumný přístup k standardnímu root servicu.
|
// TODO: double-check.
|
||||||
/*
|
if (m_feedsView->sourceModel()->standardServiceRoot()->mergeImportExportModel(&model, output_msg)) {
|
||||||
if (m_feedsView->sourceModel()->mergeModel(&model, output_msg)) {
|
|
||||||
m_feedsView->expandAll();
|
m_feedsView->expandAll();
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
catch (ApplicationException &ex) {
|
catch (ApplicationException &ex) {
|
||||||
MessageBox::show(this, QMessageBox::Critical, tr("Error when loading initial feeds"), ex.message());
|
MessageBox::show(this, QMessageBox::Critical, tr("Error when loading initial feeds"), ex.message());
|
||||||
|
@ -45,8 +45,8 @@ class Feed : public RootItem {
|
|||||||
};
|
};
|
||||||
|
|
||||||
enum ReadStatus {
|
enum ReadStatus {
|
||||||
Read = 0,
|
Unread = 0,
|
||||||
Unread = 1
|
Read = 1
|
||||||
};
|
};
|
||||||
|
|
||||||
// Constructors.
|
// Constructors.
|
||||||
|
@ -139,9 +139,6 @@ void FormStandardCategoryDetails::apply() {
|
|||||||
|
|
||||||
if (edited) {
|
if (edited) {
|
||||||
m_serviceRoot->feedsModel()->reassignNodeToNewParent(m_editableCategory, new_category->parent());
|
m_serviceRoot->feedsModel()->reassignNodeToNewParent(m_editableCategory, new_category->parent());
|
||||||
|
|
||||||
// Remove new temporary feed data holder object.
|
|
||||||
delete new_category;
|
|
||||||
accept();
|
accept();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@ -149,6 +146,8 @@ void FormStandardCategoryDetails::apply() {
|
|||||||
tr("Category was not edited due to error."),
|
tr("Category was not edited due to error."),
|
||||||
QSystemTrayIcon::Critical, this, true);
|
QSystemTrayIcon::Critical, this, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
delete new_category;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -258,9 +258,6 @@ void FormStandardFeedDetails::apply() {
|
|||||||
|
|
||||||
if (edited) {
|
if (edited) {
|
||||||
m_serviceRoot->feedsModel()->reassignNodeToNewParent(m_editableFeed, new_feed->parent());
|
m_serviceRoot->feedsModel()->reassignNodeToNewParent(m_editableFeed, new_feed->parent());
|
||||||
|
|
||||||
// Remove new temporary feed data holder object.
|
|
||||||
delete new_feed;
|
|
||||||
accept();
|
accept();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@ -268,6 +265,8 @@ void FormStandardFeedDetails::apply() {
|
|||||||
tr("Feed was not edited due to error."),
|
tr("Feed was not edited due to error."),
|
||||||
QSystemTrayIcon::Critical, this, true);
|
QSystemTrayIcon::Critical, this, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
delete new_feed;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -27,6 +27,7 @@
|
|||||||
#include "gui/feedmessageviewer.h"
|
#include "gui/feedmessageviewer.h"
|
||||||
#include "gui/feedsview.h"
|
#include "gui/feedsview.h"
|
||||||
#include "services/standard/gui/formstandardcategorydetails.h"
|
#include "services/standard/gui/formstandardcategorydetails.h"
|
||||||
|
#include "services/standard/standardserviceroot.h"
|
||||||
|
|
||||||
#include <QVariant>
|
#include <QVariant>
|
||||||
#include <QSqlQuery>
|
#include <QSqlQuery>
|
||||||
@ -54,6 +55,10 @@ StandardCategory::~StandardCategory() {
|
|||||||
qDebug("Destroying Category instance.");
|
qDebug("Destroying Category instance.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
StandardServiceRoot *StandardCategory::serviceRoot() {
|
||||||
|
return static_cast<StandardServiceRoot*>(getParentServiceRoot());
|
||||||
|
}
|
||||||
|
|
||||||
void StandardCategory::init() {
|
void StandardCategory::init() {
|
||||||
m_kind = RootItemKind::Category;
|
m_kind = RootItemKind::Category;
|
||||||
}
|
}
|
||||||
@ -127,16 +132,10 @@ QVariant StandardCategory::data(int column, int role) const {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool StandardCategory::editViaDialog() {
|
bool StandardCategory::editViaDialog() {
|
||||||
// TODO: předávat service root.
|
QPointer<FormStandardCategoryDetails> form_pointer = new FormStandardCategoryDetails(serviceRoot(), qApp->mainForm());
|
||||||
/*
|
|
||||||
QPointer<FormStandardCategoryDetails> form_pointer = new FormStandardCategoryDetails(qApp->mainForm()->tabWidget()->feedMessageViewer()->feedsView()->sourceModel(),
|
|
||||||
qApp->mainForm());
|
|
||||||
|
|
||||||
|
|
||||||
form_pointer.data()->exec(this, NULL);
|
form_pointer.data()->exec(this, NULL);
|
||||||
|
|
||||||
delete form_pointer.data();
|
delete form_pointer.data();
|
||||||
*/
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -25,6 +25,7 @@
|
|||||||
|
|
||||||
|
|
||||||
class FeedsModel;
|
class FeedsModel;
|
||||||
|
class StandardServiceRoot;
|
||||||
|
|
||||||
// Base class for all categories contained in FeedsModel.
|
// Base class for all categories contained in FeedsModel.
|
||||||
// NOTE: This class should be derived to create PARTICULAR category types.
|
// NOTE: This class should be derived to create PARTICULAR category types.
|
||||||
@ -39,6 +40,8 @@ class StandardCategory : public Category {
|
|||||||
explicit StandardCategory(const QSqlRecord &record);
|
explicit StandardCategory(const QSqlRecord &record);
|
||||||
virtual ~StandardCategory();
|
virtual ~StandardCategory();
|
||||||
|
|
||||||
|
StandardServiceRoot *serviceRoot();
|
||||||
|
|
||||||
// Returns the actual data representation of standard category.
|
// Returns the actual data representation of standard category.
|
||||||
QVariant data(int column, int role) const;
|
QVariant data(int column, int role) const;
|
||||||
|
|
||||||
|
@ -29,6 +29,7 @@
|
|||||||
#include "gui/dialogs/formmain.h"
|
#include "gui/dialogs/formmain.h"
|
||||||
#include "gui/feedmessageviewer.h"
|
#include "gui/feedmessageviewer.h"
|
||||||
#include "gui/feedsview.h"
|
#include "gui/feedsview.h"
|
||||||
|
#include "services/standard/standardserviceroot.h"
|
||||||
#include "services/standard/gui/formstandardfeeddetails.h"
|
#include "services/standard/gui/formstandardfeeddetails.h"
|
||||||
|
|
||||||
#include <QSqlDatabase>
|
#include <QSqlDatabase>
|
||||||
@ -98,16 +99,15 @@ int StandardFeed::countOfUnreadMessages() const {
|
|||||||
return m_unreadCount;
|
return m_unreadCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
StandardServiceRoot *StandardFeed::serviceRoot() {
|
||||||
|
return static_cast<StandardServiceRoot*>(getParentServiceRoot());
|
||||||
|
}
|
||||||
|
|
||||||
bool StandardFeed::editViaDialog() {
|
bool StandardFeed::editViaDialog() {
|
||||||
// TODO: fix passing of the model
|
QPointer<FormStandardFeedDetails> form_pointer = new FormStandardFeedDetails(serviceRoot(), qApp->mainForm());
|
||||||
|
|
||||||
/*
|
|
||||||
QPointer<FormStandardFeedDetails> form_pointer = new FormStandardFeedDetails(qApp->mainForm()->tabWidget()->feedMessageViewer()->feedsView()->sourceModel(),
|
|
||||||
qApp->mainForm());
|
|
||||||
form_pointer.data()->exec(this, NULL);
|
form_pointer.data()->exec(this, NULL);
|
||||||
|
|
||||||
delete form_pointer.data();
|
delete form_pointer.data();
|
||||||
*/
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -30,6 +30,7 @@
|
|||||||
|
|
||||||
class Message;
|
class Message;
|
||||||
class FeedsModel;
|
class FeedsModel;
|
||||||
|
class StandardServiceRoot;
|
||||||
|
|
||||||
// Represents BASE class for feeds contained in FeedsModel.
|
// Represents BASE class for feeds contained in FeedsModel.
|
||||||
// NOTE: This class should be derived to create PARTICULAR feed types.
|
// NOTE: This class should be derived to create PARTICULAR feed types.
|
||||||
@ -52,6 +53,8 @@ class StandardFeed : public Feed {
|
|||||||
explicit StandardFeed(const QSqlRecord &record);
|
explicit StandardFeed(const QSqlRecord &record);
|
||||||
virtual ~StandardFeed();
|
virtual ~StandardFeed();
|
||||||
|
|
||||||
|
StandardServiceRoot *serviceRoot();
|
||||||
|
|
||||||
// Getters/setters for count of messages.
|
// Getters/setters for count of messages.
|
||||||
// NOTE: For feeds, counts are stored internally
|
// NOTE: For feeds, counts are stored internally
|
||||||
// and can be updated from the database.
|
// and can be updated from the database.
|
||||||
|
@ -289,7 +289,10 @@ bool StandardServiceRoot::mergeImportExportModel(FeedsImportExportModel *model,
|
|||||||
StandardFeed *new_feed = new StandardFeed(*source_feed);
|
StandardFeed *new_feed = new StandardFeed(*source_feed);
|
||||||
|
|
||||||
// Append this feed and end this iteration.
|
// Append this feed and end this iteration.
|
||||||
if (!new_feed->addItself(target_parent)) {
|
if (new_feed->addItself(target_parent)) {
|
||||||
|
m_feedsModel->assignNodeToNewParent(new_feed, target_parent);
|
||||||
|
}
|
||||||
|
else {
|
||||||
delete new_feed;
|
delete new_feed;
|
||||||
some_feed_category_error = true;
|
some_feed_category_error = true;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user