1 /*
2     SPDX-License-Identifier: GPL-2.0-or-later
3     SPDX-FileCopyrightText: 2018-2020 Umbrello UML Modeller Authors <umbrello-devel@kde.org>
4 */
5 
6 #include "dialogspopupmenu.h"
7 
8 // app includes
9 #include "debug_utils.h"
10 
11 // kde includes
12 #include <KLocalizedString>
13 
DialogsPopupMenu(QWidget * parent,TriggerType type)14 DialogsPopupMenu::DialogsPopupMenu(QWidget *parent, TriggerType type)
15   : ListPopupMenu(parent)
16 {
17     switch(type) {
18     case tt_New_Parameter:
19         insert(mt_New_Parameter);
20         break;
21 
22     case tt_New_Operation:
23         insert(mt_New_Operation);
24         break;
25 
26     case tt_New_Attribute:
27         insert(mt_New_Attribute);
28         break;
29 
30     case tt_New_InstanceAttribute:
31         insert(mt_New_InstanceAttribute);
32         break;
33 
34     case tt_New_Template:
35         insert(mt_New_Template);
36         break;
37 
38     case tt_New_EnumLiteral:
39         insert(mt_New_EnumLiteral);
40         break;
41 
42     case tt_New_EntityAttribute:
43         insert(mt_New_EntityAttribute);
44         break;
45 
46     case tt_New_Activity:
47         insertSubMenuNew(type);
48         break;
49 
50     case tt_Activity_Selected:
51         insertSubMenuNew(type);
52         insert(mt_Rename);
53         insert(mt_Delete);
54         break;
55 
56     case tt_Parameter_Selected:
57         insert(mt_New_Parameter);
58         insert(mt_Rename);
59         insert(mt_Delete);
60         insert(mt_Properties);
61         break;
62 
63     case tt_Operation_Selected:
64         insert(mt_New_Operation);
65         insert(mt_Delete);
66         insert(mt_Properties);
67         break;
68 
69     case tt_Attribute_Selected:
70         insert(mt_New_Attribute);
71         insert(mt_Delete);
72         insert(mt_Properties);
73         break;
74 
75     case tt_InstanceAttribute_Selected:
76         insert(mt_New_InstanceAttribute);
77         insert(mt_Delete);
78         insert(mt_Properties);
79         break;
80 
81     case tt_Template_Selected:
82         insert(mt_New_Attribute, Icon_Utils::SmallIcon(Icon_Utils::it_Template_New), i18n("New Template..."));
83         insert(mt_Delete);
84         insert(mt_Properties);
85         break;
86 
87     case tt_EnumLiteral_Selected:
88         insert(mt_New_EnumLiteral);
89         insert(mt_Delete);
90         insert(mt_Properties);
91         break;
92 
93     case tt_EntityAttribute_Selected:
94         insert(mt_New_EntityAttribute);
95         insert(mt_Delete);
96         insert(mt_Properties);
97         break;
98 
99     default:
100         uWarning() << "unknown menu type " << type;
101         break;
102     }//end switch
103     setupActionsData();
104 }
105 
106 /**
107  * Shortcut for commonly used sub menu initializations.
108  *
109  * @param type   The MenuType for which to set up the menu.
110  */
insertSubMenuNew(TriggerType type,KMenu * menu)111 void DialogsPopupMenu::insertSubMenuNew(TriggerType type, KMenu *menu)
112 {
113     if (!menu) {
114         menu = makeNewMenu();
115     }
116     switch (type) {
117         case tt_New_Activity:
118         case tt_Activity_Selected:
119             break;
120         default:
121             break;
122     }
123     addMenu(menu);
124 }
125 
126 /**
127  * Convert enum MenuType to string.
128  */
toString(TriggerType type)129 QString DialogsPopupMenu::toString(TriggerType type)
130 {
131     return QLatin1String(ENUM_NAME(DialogsPopupMenu, TriggerType, type));
132 }
133 
operator <<(QDebug out,DialogsPopupMenu::TriggerType type)134 QDebug operator<<(QDebug out, DialogsPopupMenu::TriggerType type)
135 {
136     out.nospace() << "ListPopupMenu::TriggerType: " << DialogsPopupMenu::toString(type);
137     return out.space();
138 }
139