1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
|
/***************************************************************************
* 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. *
***************************************************************************/
#ifndef RECIPEACTIONSHANDLER_H
#define RECIPEACTIONSHANDLER_H
#include <tqobject.h>
#include <tqvaluelist.h>
#include <tqptrlist.h>
class TQListViewItem;
class TDEListView;
class TDEPopupMenu;
class RecipeDB;
/** @brief A class that centralizes common actions for recipes such as saving and editing.
*
* It acts upon a given TDEListView that is assumed to be a list of recipes. It
* automagically enables this list view with a popup menu for user access to
* the provided actions.
*
* @author Jason Kivlighn
*/
class RecipeActionsHandler : public TQObject
{
TQ_OBJECT
public:
enum ItemType { Category, Recipe };
enum RecipeActions {
AllActions = 0xffff,
Open = 0x0001,
Edit = 0x0002,
Export = 0x0004,
RemoveFromCategory = 0x0008,
Remove = 0x0010,
ExpandAll = 0x0020,
CollapseAll = 0x0040,
AddToShoppingList = 0x0080,
CopyToClipboard = 0x0100,
Categorize = 0x0200
};
RecipeActionsHandler( TDEListView *parentListView, RecipeDB *db, int actions = AllActions );
~RecipeActionsHandler()
{}
static void exportRecipes( const TQValueList<int> &ids, const TQString & caption, const TQString &selection, RecipeDB *db );
static void exportRecipe( int id, const TQString & caption, const TQString &selection, RecipeDB *db );
static void recipesToClipboard( const TQValueList<int> &ids, RecipeDB *db );
signals:
void recipeSelected( int id, int action );
void recipesSelected( const TQValueList<int> &ids, int action );
public slots:
void exec( ItemType type, const TQPoint &p );
void showPopup( TDEListView *, TQListViewItem *, const TQPoint & );
void categorize();
/** Signals an open event (via the recipeSelected() signal) for the recipe(s) currently
* selected in the list view
*/
void open();
/** Signals an edit event (via the recipeSelected() signal) for the recipe currently
* selected in the list view
*/
void edit();
/** Saves the recipe(s) currently selected in the list view, prompting with a file
* dialog.
*/
void recipeExport();
/** Removes the recipe(s) currently selected in the list view from its current category */
void removeFromCategory();
/** Removes the recipe(s) currently selected in the list view from the database */
void remove
();
/** Add the recipe(s) currently selected in the list view to the shopping list dialog */
void addToShoppingList();
/** Expands all items in the list view */
void expandAll();
/** Collapses all items in the list view */
void collapseAll();
void recipesToClipboard();
private:
TDEPopupMenu *kpop;
TDEPopupMenu *catPop;
TDEListView *parentListView;
RecipeDB *database;
int remove_from_cat_item;
int categorize_item;
TQValueList<int> getAllVisibleItems();
TQValueList<int> recipeIDs( const TQPtrList<TQListViewItem> &items ) const;
};
#endif //RECIPEACTIONSHANDLER_H
|