summaryrefslogtreecommitdiffstats
path: root/src/dialogs/selectcategoriesdialog.cpp
diff options
context:
space:
mode:
authorMichele Calgaro <[email protected]>2024-10-13 11:56:14 +0900
committerMichele Calgaro <[email protected]>2024-10-29 21:58:42 +0900
commit2879ff70be9271550477982a1a6371714db38562 (patch)
treec2054149dba923ab080fe7093432c7663a990111 /src/dialogs/selectcategoriesdialog.cpp
parent3eb38d2556f676d1027746f20bf12a1dd74451ef (diff)
downloadkrecipes-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.cpp104
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"