Work on categorie.
This commit is contained in:
parent
d6ee69df0d
commit
5e031bc5e5
|
@ -11,6 +11,18 @@ FeedsModelCategory::FeedsModelCategory(FeedsModelRootItem *parent_item)
|
||||||
m_kind = FeedsModelRootItem::Category;
|
m_kind = FeedsModelRootItem::Category;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FeedsModelCategory::FeedsModelCategory(const FeedsModelCategory &other) {
|
||||||
|
m_kind = other.kind();
|
||||||
|
m_title = other.title();
|
||||||
|
m_id = other.id();
|
||||||
|
m_icon = other.icon();
|
||||||
|
m_childItems = other.childItems();
|
||||||
|
m_parentItem = other.parent();
|
||||||
|
m_type = other.type();
|
||||||
|
m_creationDate = other.creationDate();
|
||||||
|
m_description = other.description();
|
||||||
|
}
|
||||||
|
|
||||||
FeedsModelCategory::~FeedsModelCategory() {
|
FeedsModelCategory::~FeedsModelCategory() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -23,6 +23,7 @@ class FeedsModelCategory : public FeedsModelRootItem {
|
||||||
|
|
||||||
// Constructors and destructors
|
// Constructors and destructors
|
||||||
explicit FeedsModelCategory(FeedsModelRootItem *parent_item = NULL);
|
explicit FeedsModelCategory(FeedsModelRootItem *parent_item = NULL);
|
||||||
|
explicit FeedsModelCategory(const FeedsModelCategory &other);
|
||||||
virtual ~FeedsModelCategory();
|
virtual ~FeedsModelCategory();
|
||||||
|
|
||||||
// Counts of messages.
|
// Counts of messages.
|
||||||
|
|
|
@ -15,7 +15,7 @@ FeedsModelRootItem::~FeedsModelRootItem() {
|
||||||
qDeleteAll(m_childItems);
|
qDeleteAll(m_childItems);
|
||||||
}
|
}
|
||||||
|
|
||||||
FeedsModelRootItem *FeedsModelRootItem::parent() {
|
FeedsModelRootItem *FeedsModelRootItem::parent() const {
|
||||||
return m_parentItem;
|
return m_parentItem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -21,7 +21,7 @@ class FeedsModelRootItem {
|
||||||
virtual ~FeedsModelRootItem();
|
virtual ~FeedsModelRootItem();
|
||||||
|
|
||||||
// Basic operations.
|
// Basic operations.
|
||||||
virtual FeedsModelRootItem *parent();
|
virtual FeedsModelRootItem *parent() const;
|
||||||
virtual void setParent(FeedsModelRootItem *parent_item);
|
virtual void setParent(FeedsModelRootItem *parent_item);
|
||||||
virtual FeedsModelRootItem *child(int row);
|
virtual FeedsModelRootItem *child(int row);
|
||||||
virtual void appendChild(FeedsModelRootItem *child);
|
virtual void appendChild(FeedsModelRootItem *child);
|
||||||
|
|
|
@ -62,17 +62,29 @@ void FeedsView::clearSelectedFeeds() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void FeedsView::addNewCategory() {
|
void FeedsView::addNewCategory() {
|
||||||
QPointer<FormCategoryDetails> form_pointer = new FormCategoryDetails(this);
|
QPointer<FormCategoryDetails> form_pointer = new FormCategoryDetails(m_sourceModel,
|
||||||
|
this);
|
||||||
if (form_pointer.data()->exec() == QDialog::Accepted) {
|
FeedsModelCategory *output_item;
|
||||||
// User submitted some new category.
|
FeedsModelRootItem *parent_item;
|
||||||
|
|
||||||
|
if (form_pointer.data()->exec(NULL,
|
||||||
|
output_item,
|
||||||
|
parent_item) == QDialog::Accepted) {
|
||||||
|
// User submitted some new category and
|
||||||
|
// it now resides in output_item pointer,
|
||||||
|
// parent_item contains parent_that user selected for
|
||||||
|
// new category.
|
||||||
|
|
||||||
|
// TODO: Add new category to the model and to the database.
|
||||||
}
|
}
|
||||||
|
|
||||||
delete form_pointer.data();
|
delete form_pointer.data();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void FeedsView::editSelectedCategory() {
|
||||||
|
// TODO: Implement this.
|
||||||
|
}
|
||||||
|
|
||||||
void FeedsView::markSelectedFeedsReadStatus(int read) {
|
void FeedsView::markSelectedFeedsReadStatus(int read) {
|
||||||
m_sourceModel->markFeedsRead(selectedFeeds(), read);
|
m_sourceModel->markFeedsRead(selectedFeeds(), read);
|
||||||
updateCountsOfSelectedFeeds(false);
|
updateCountsOfSelectedFeeds(false);
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
class FeedsModel;
|
class FeedsModel;
|
||||||
class FeedsProxyModel;
|
class FeedsProxyModel;
|
||||||
class FeedsModelFeed;
|
class FeedsModelFeed;
|
||||||
|
class FeedsModelCategory;
|
||||||
|
|
||||||
class FeedsView : public QTreeView {
|
class FeedsView : public QTreeView {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
@ -38,6 +39,7 @@ class FeedsView : public QTreeView {
|
||||||
|
|
||||||
// Category operators.
|
// Category operators.
|
||||||
void addNewCategory();
|
void addNewCategory();
|
||||||
|
void editSelectedCategory();
|
||||||
|
|
||||||
// Reloads counts for selected feeds.
|
// Reloads counts for selected feeds.
|
||||||
void updateCountsOfSelectedFeeds(bool update_total_too = true);
|
void updateCountsOfSelectedFeeds(bool update_total_too = true);
|
||||||
|
|
|
@ -10,41 +10,55 @@
|
||||||
#include <QPushButton>
|
#include <QPushButton>
|
||||||
|
|
||||||
|
|
||||||
FormCategoryDetails::FormCategoryDetails(FeedsView *parent)
|
FormCategoryDetails::FormCategoryDetails(FeedsModel *model, QWidget *parent)
|
||||||
: QDialog(parent) {
|
: QDialog(parent), m_editableCategory(NULL) {
|
||||||
initialize(parent);
|
initialize();
|
||||||
loadCategories(parent->sourceModel()->getAllCategories().values(),
|
loadCategories(model->getAllCategories().values(),
|
||||||
parent->sourceModel()->rootItem());
|
model->rootItem());
|
||||||
|
|
||||||
setWindowTitle(tr("Add new category"));
|
setWindowTitle(tr("Add new category"));
|
||||||
}
|
}
|
||||||
|
|
||||||
FormCategoryDetails::FormCategoryDetails(FeedsModelCategory *category,
|
|
||||||
FeedsView *parent)
|
|
||||||
: QDialog(parent) {
|
|
||||||
initialize(parent);
|
|
||||||
loadCategories(parent->sourceModel()->getAllCategories().values(),
|
|
||||||
parent->sourceModel()->rootItem());
|
|
||||||
|
|
||||||
setWindowTitle(tr("Edit existing category"));
|
|
||||||
}
|
|
||||||
|
|
||||||
FormCategoryDetails::~FormCategoryDetails() {
|
FormCategoryDetails::~FormCategoryDetails() {
|
||||||
qDebug("Destroying FormCategoryDetails instance.");
|
qDebug("Destroying FormCategoryDetails instance.");
|
||||||
}
|
}
|
||||||
|
|
||||||
void FormCategoryDetails::initialize(FeedsView *view) {
|
void FormCategoryDetails::setEditableCategory(FeedsModelCategory *editable_category) {
|
||||||
|
m_editableCategory = editable_category;
|
||||||
|
|
||||||
|
if (m_editableCategory != NULL) {
|
||||||
|
// TODO: Setup the dialog according to new category.
|
||||||
|
// so remove this category from category combobox!!
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int FormCategoryDetails::exec(FeedsModelCategory *input_category,
|
||||||
|
FeedsModelCategory *output_item,
|
||||||
|
FeedsModelRootItem *parent_item) {
|
||||||
|
// TODO: Implement this.
|
||||||
|
setEditableCategory(input_category);
|
||||||
|
|
||||||
|
int result = QDialog::exec();
|
||||||
|
|
||||||
|
if (input_category == NULL) {
|
||||||
|
// User is adding new category.
|
||||||
|
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// User is editing existing category.
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
void FormCategoryDetails::initialize() {
|
||||||
m_ui = new Ui::FormCategoryDetails();
|
m_ui = new Ui::FormCategoryDetails();
|
||||||
m_ui->setupUi(this);
|
m_ui->setupUi(this);
|
||||||
|
|
||||||
// Set flags and attributes.
|
// Set flags and attributes.
|
||||||
setWindowFlags(Qt::MSWindowsFixedSizeDialogHint | Qt::Dialog);
|
setWindowFlags(Qt::MSWindowsFixedSizeDialogHint | Qt::Dialog);
|
||||||
setWindowIcon(IconThemeFactory::getInstance()->fromTheme("document-new"));
|
setWindowIcon(IconThemeFactory::getInstance()->fromTheme("document-new"));
|
||||||
|
|
||||||
// Add button for obtaining data about feed from internet.
|
|
||||||
m_btnObtainDetails = m_ui->m_buttonBox->addButton(tr("Get details via internet"),
|
|
||||||
QDialogButtonBox::ActionRole);
|
|
||||||
m_btnObtainDetails->setIcon(IconThemeFactory::getInstance()->fromTheme("document-save"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void FormCategoryDetails::loadCategories(const QList<FeedsModelCategory *> categories,
|
void FormCategoryDetails::loadCategories(const QList<FeedsModelCategory *> categories,
|
||||||
|
@ -59,5 +73,4 @@ void FormCategoryDetails::loadCategories(const QList<FeedsModelCategory *> categ
|
||||||
category->title(),
|
category->title(),
|
||||||
category->id());
|
category->id());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,8 +11,8 @@ namespace Ui {
|
||||||
}
|
}
|
||||||
|
|
||||||
class FeedsModelCategory;
|
class FeedsModelCategory;
|
||||||
|
class FeedsModel;
|
||||||
class FeedsModelRootItem;
|
class FeedsModelRootItem;
|
||||||
class FeedsView;
|
|
||||||
|
|
||||||
class FormCategoryDetails : public QDialog {
|
class FormCategoryDetails : public QDialog {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
@ -20,17 +20,31 @@ class FormCategoryDetails : public QDialog {
|
||||||
public:
|
public:
|
||||||
// Constructors and destructors.
|
// Constructors and destructors.
|
||||||
// This constructor is supposed to create new categories.
|
// This constructor is supposed to create new categories.
|
||||||
explicit FormCategoryDetails(FeedsView *parent = 0);
|
explicit FormCategoryDetails(FeedsModel *model, QWidget *parent = 0);
|
||||||
|
|
||||||
// This constructor is supposed to edit existing categories.
|
|
||||||
explicit FormCategoryDetails(FeedsModelCategory *category,
|
|
||||||
FeedsView *parent = 0);
|
|
||||||
|
|
||||||
// Destructor.
|
// Destructor.
|
||||||
virtual ~FormCategoryDetails();
|
virtual ~FormCategoryDetails();
|
||||||
|
|
||||||
|
public slots:
|
||||||
|
// Start dialog execution. If result is QDialog::Accepted,
|
||||||
|
// then output_item contains added or edited category
|
||||||
|
// and parent_item contains parent item of newly
|
||||||
|
// created or edited category.
|
||||||
|
// NOTE: Newly ADDED category is NOT added to the model NOR
|
||||||
|
// in the database.
|
||||||
|
// NOTE: Newly EDITED category IS COPY of its original.
|
||||||
|
// SO NO ORIGINAL MODEL DATA ARE EDITED OR CHANGED.
|
||||||
|
int exec(FeedsModelCategory *input_category,
|
||||||
|
FeedsModelCategory *output_item,
|
||||||
|
FeedsModelRootItem *parent_item);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void initialize(FeedsView *view);
|
// Sets the category which will be edited.
|
||||||
|
// NOTE: This is used for editing categories.
|
||||||
|
void setEditableCategory(FeedsModelCategory *editable_category);
|
||||||
|
|
||||||
|
// Initializes the dialog.
|
||||||
|
void initialize();
|
||||||
|
|
||||||
// Loads categories into the dialog.
|
// Loads categories into the dialog.
|
||||||
void loadCategories(const QList<FeedsModelCategory*> categories,
|
void loadCategories(const QList<FeedsModelCategory*> categories,
|
||||||
|
@ -38,8 +52,7 @@ class FormCategoryDetails : public QDialog {
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::FormCategoryDetails *m_ui;
|
Ui::FormCategoryDetails *m_ui;
|
||||||
QPushButton *m_btnObtainDetails;
|
FeedsModelCategory *m_editableCategory;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // FORMCATEGORYDETAILS_H
|
#endif // FORMCATEGORYDETAILS_H
|
||||||
|
|
Loading…
Reference in New Issue