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