diff options
author | Michele Calgaro <[email protected]> | 2024-10-13 11:56:14 +0900 |
---|---|---|
committer | Michele Calgaro <[email protected]> | 2024-10-29 21:58:42 +0900 |
commit | 2879ff70be9271550477982a1a6371714db38562 (patch) | |
tree | c2054149dba923ab080fe7093432c7663a990111 /src/dialogs/selectcategoriesdialog.cpp | |
parent | 3eb38d2556f676d1027746f20bf12a1dd74451ef (diff) | |
download | krecipes-2879ff70be9271550477982a1a6371714db38562.tar.gz krecipes-2879ff70be9271550477982a1a6371714db38562.zip |
Rearrange folders structure to remove unnecessary 'krecipes' second level subfolder
Signed-off-by: Michele Calgaro <[email protected]>
(cherry picked from commit 0c8ed6c9a4000af8f48581a81c4b5c2f5b9fd502)
Diffstat (limited to 'src/dialogs/selectcategoriesdialog.cpp')
-rw-r--r-- | src/dialogs/selectcategoriesdialog.cpp | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/src/dialogs/selectcategoriesdialog.cpp b/src/dialogs/selectcategoriesdialog.cpp new file mode 100644 index 0000000..fe75bd3 --- /dev/null +++ b/src/dialogs/selectcategoriesdialog.cpp @@ -0,0 +1,104 @@ +/*************************************************************************** +* Copyright (C) 2003 by * +* Unai Garro ([email protected]) * +* Cyril Bosselut ([email protected]) * +* Jason Kivlighn ([email protected]) * +* * +* This program is free software; you can redistribute it and/or modify * +* it under the terms of the GNU General Public License as published by * +* the Free Software Foundation; either version 2 of the License, or * +* (at your option) any later version. * +***************************************************************************/ + +#include "selectcategoriesdialog.h" +#include "createcategorydialog.h" + +#include <tqvbox.h> + +#include <tdelocale.h> +#include <kdebug.h> +#include <kdialog.h> +#include <tdemessagebox.h> + +#include "datablocks/categorytree.h" +#include "backends/recipedb.h" +#include "widgets/categorylistview.h" + +SelectCategoriesDialog::SelectCategoriesDialog( TQWidget *parent, const ElementList &items_on, RecipeDB *db ) + : KDialogBase( parent, "SelectCategoriesDialog", true, i18n("Categories"), + KDialogBase::Ok | KDialogBase::Cancel, KDialogBase::Ok ), + database(db) +{ + TQVBox *page = makeVBoxMainWidget(); + + //Design UI + + //Category List + categoryListView = new CategoryCheckListView( page, db, true, items_on ); + categoryListView->reload(); + + //New category button + TQPushButton *newCatButton = new TQPushButton( page ); + newCatButton->setText( i18n( "&New Category..." ) ); + newCatButton->setFlat( true ); + + // Load the list + loadCategories( items_on ); + + setSizeGripEnabled( true ); + + // Connect signals & Slots + connect ( newCatButton, TQ_SIGNAL( clicked() ), TQ_SLOT( createNewCategory() ) ); +} + +SelectCategoriesDialog::~SelectCategoriesDialog() +{} + +void SelectCategoriesDialog::getSelectedCategories( ElementList *newSelected ) +{ + *newSelected = categoryListView->selections(); +} + +void SelectCategoriesDialog::loadCategories( const ElementList &items_on ) +{ + categoryListView->populateAll(); + + ElementList::const_iterator it; + for ( it = items_on.begin(); it != items_on.end(); ++it ) { + CategoryCheckListItem *new_item = (CategoryCheckListItem*)categoryListView->findItem(TQString::number((*it).id),1); + if ( new_item ) { + new_item->setOn(true); + } + } +} + +void SelectCategoriesDialog::createNewCategory( void ) +{ + ElementList categories; + database->loadCategories( &categories ); + CreateCategoryDialog* categoryDialog = new CreateCategoryDialog( this, categories ); + + if ( categoryDialog->exec() == TQDialog::Accepted ) { + TQString result = categoryDialog->newCategoryName(); + int subcategory = categoryDialog->subcategory(); + + //check bounds first + if ( result.length() > uint(database->maxCategoryNameLength()) ) { + KMessageBox::error( this, TQString( i18n( "Category name cannot be longer than %1 characters." ) ).arg( database->maxCategoryNameLength() ) ); + return ; + } + + database->createNewCategory( result, subcategory ); // Create the new category in the database + + //a listview item will automatically be created, but we need to turn it on + Element new_cat( result, database->lastInsertID() ); + TQCheckListItem *new_item = ((TQCheckListItem*)categoryListView->findItem( TQString::number(new_cat.id), 1 )); + if ( new_item ) + new_item->setOn(true); + } + + delete categoryDialog; +} + + +#include "selectcategoriesdialog.moc" |