diff options
| author | Michele Calgaro <michele.calgaro@yahoo.it> | 2024-10-13 11:56:14 +0900 | 
|---|---|---|
| committer | Michele Calgaro <michele.calgaro@yahoo.it> | 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 <michele.calgaro@yahoo.it>
(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 (ugarro@users.sourceforge.net)                             * +*   Cyril Bosselut (bosselut@b1project.com)                               * +*   Jason Kivlighn (jkivlighn@gmail.com)                                  * +*                                                                         * +*   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"  | 
