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;
|
||||
}
|
||||
|
||||
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() {
|
||||
}
|
||||
|
||||
|
|
|
@ -23,6 +23,7 @@ class FeedsModelCategory : public FeedsModelRootItem {
|
|||
|
||||
// Constructors and destructors
|
||||
explicit FeedsModelCategory(FeedsModelRootItem *parent_item = NULL);
|
||||
explicit FeedsModelCategory(const FeedsModelCategory &other);
|
||||
virtual ~FeedsModelCategory();
|
||||
|
||||
// Counts of messages.
|
||||
|
|
|
@ -15,7 +15,7 @@ FeedsModelRootItem::~FeedsModelRootItem() {
|
|||
qDeleteAll(m_childItems);
|
||||
}
|
||||
|
||||
FeedsModelRootItem *FeedsModelRootItem::parent() {
|
||||
FeedsModelRootItem *FeedsModelRootItem::parent() const {
|
||||
return m_parentItem;
|
||||
}
|
||||
|
||||
|
|
|
@ -21,7 +21,7 @@ class FeedsModelRootItem {
|
|||
virtual ~FeedsModelRootItem();
|
||||
|
||||
// Basic operations.
|
||||
virtual FeedsModelRootItem *parent();
|
||||
virtual FeedsModelRootItem *parent() const;
|
||||
virtual void setParent(FeedsModelRootItem *parent_item);
|
||||
virtual FeedsModelRootItem *child(int row);
|
||||
virtual void appendChild(FeedsModelRootItem *child);
|
||||
|
|
|
@ -62,17 +62,29 @@ void FeedsView::clearSelectedFeeds() {
|
|||
}
|
||||
|
||||
void FeedsView::addNewCategory() {
|
||||
QPointer<FormCategoryDetails> form_pointer = new FormCategoryDetails(this);
|
||||
|
||||
if (form_pointer.data()->exec() == QDialog::Accepted) {
|
||||
// User submitted some new category.
|
||||
QPointer<FormCategoryDetails> form_pointer = new FormCategoryDetails(m_sourceModel,
|
||||
this);
|
||||
FeedsModelCategory *output_item;
|
||||
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();
|
||||
}
|
||||
|
||||
void FeedsView::editSelectedCategory() {
|
||||
// TODO: Implement this.
|
||||
}
|
||||
|
||||
void FeedsView::markSelectedFeedsReadStatus(int read) {
|
||||
m_sourceModel->markFeedsRead(selectedFeeds(), read);
|
||||
updateCountsOfSelectedFeeds(false);
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
class FeedsModel;
|
||||
class FeedsProxyModel;
|
||||
class FeedsModelFeed;
|
||||
class FeedsModelCategory;
|
||||
|
||||
class FeedsView : public QTreeView {
|
||||
Q_OBJECT
|
||||
|
@ -38,6 +39,7 @@ class FeedsView : public QTreeView {
|
|||
|
||||
// Category operators.
|
||||
void addNewCategory();
|
||||
void editSelectedCategory();
|
||||
|
||||
// Reloads counts for selected feeds.
|
||||
void updateCountsOfSelectedFeeds(bool update_total_too = true);
|
||||
|
|
|
@ -10,41 +10,55 @@
|
|||
#include <QPushButton>
|
||||
|
||||
|
||||
FormCategoryDetails::FormCategoryDetails(FeedsView *parent)
|
||||
: QDialog(parent) {
|
||||
initialize(parent);
|
||||
loadCategories(parent->sourceModel()->getAllCategories().values(),
|
||||
parent->sourceModel()->rootItem());
|
||||
FormCategoryDetails::FormCategoryDetails(FeedsModel *model, QWidget *parent)
|
||||
: QDialog(parent), m_editableCategory(NULL) {
|
||||
initialize();
|
||||
loadCategories(model->getAllCategories().values(),
|
||||
model->rootItem());
|
||||
|
||||
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() {
|
||||
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->setupUi(this);
|
||||
|
||||
// Set flags and attributes.
|
||||
setWindowFlags(Qt::MSWindowsFixedSizeDialogHint | Qt::Dialog);
|
||||
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,
|
||||
|
@ -59,5 +73,4 @@ void FormCategoryDetails::loadCategories(const QList<FeedsModelCategory *> categ
|
|||
category->title(),
|
||||
category->id());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -11,8 +11,8 @@ namespace Ui {
|
|||
}
|
||||
|
||||
class FeedsModelCategory;
|
||||
class FeedsModel;
|
||||
class FeedsModelRootItem;
|
||||
class FeedsView;
|
||||
|
||||
class FormCategoryDetails : public QDialog {
|
||||
Q_OBJECT
|
||||
|
@ -20,17 +20,31 @@ class FormCategoryDetails : public QDialog {
|
|||
public:
|
||||
// Constructors and destructors.
|
||||
// This constructor is supposed to create new categories.
|
||||
explicit FormCategoryDetails(FeedsView *parent = 0);
|
||||
|
||||
// This constructor is supposed to edit existing categories.
|
||||
explicit FormCategoryDetails(FeedsModelCategory *category,
|
||||
FeedsView *parent = 0);
|
||||
explicit FormCategoryDetails(FeedsModel *model, QWidget *parent = 0);
|
||||
|
||||
// Destructor.
|
||||
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:
|
||||
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.
|
||||
void loadCategories(const QList<FeedsModelCategory*> categories,
|
||||
|
@ -38,8 +52,7 @@ class FormCategoryDetails : public QDialog {
|
|||
|
||||
private:
|
||||
Ui::FormCategoryDetails *m_ui;
|
||||
QPushButton *m_btnObtainDetails;
|
||||
|
||||
FeedsModelCategory *m_editableCategory;
|
||||
};
|
||||
|
||||
#endif // FORMCATEGORYDETAILS_H
|
||||
|
|
Loading…
Reference in New Issue