umbrello 2.31.70-88582909d
Umbrello UML Modeller is a Unified Modelling Language (UML) diagram program based on KDE Technology
umlappprivate.h
Go to the documentation of this file.
1/*
2 SPDX-License-Identifier: GPL-2.0-or-later
3 SPDX-FileCopyrightText: 2002-2020 Umbrello UML Modeller Authors <umbrello-devel@kde.org>
4*/
5
6#ifndef UMLAPPPRIVATE_H
7#define UMLAPPPRIVATE_H
8
9// app includes
10#include "cmds.h"
11#include "debug_utils.h"
12#include "finddialog.h"
13#include "findresults.h"
14#include "uml.h"
15#include "umldoc.h"
16#include "diagramswindow.h"
17#include "objectswindow.h"
18#include "stereotypeswindow.h"
19
20// kde includes
21#include <KActionCollection>
22#if QT_VERSION < 0x050000
23#include <KStandardDirs>
24#endif
25#include <KToggleAction>
26#include <ktexteditor/configinterface.h>
27#include <ktexteditor/document.h>
28#include <ktexteditor/editor.h>
29#if QT_VERSION < 0x050000
30#include <ktexteditor/editorchooser.h>
31#endif
32#include <ktexteditor/view.h>
33
34// qt includes
35#include <QDesktopServices>
36#include <QFile>
37#include <QFileInfo>
38#include <QListWidget>
39#include <QObject>
40#ifdef WEBKIT_WELCOMEPAGE
41#include <QWebView>
42#else
43#include <QTextBrowser>
44#endif
45
46class QWidget;
47
48
55class UMLAppPrivate : public QObject
56{
57 Q_OBJECT
58public:
62 QListWidget *logWindow;
63 KToggleAction *viewDiagramsWindow;
64 KToggleAction *viewObjectsWindow;
65 KToggleAction *viewStereotypesWindow;
66 KToggleAction *viewWelcomeWindow;
70 QDockWidget *welcomeWindow;
71 QDockWidget *editorWindow;
72
73 KTextEditor::Editor *editor;
74 KTextEditor::View *view;
75 KTextEditor::Document *document;
76
77 explicit UMLAppPrivate(UMLApp *_parent)
78 : parent(_parent),
79 findDialog(_parent),
88 editorWindow(0),
89 view(0),
90 document(0)
91 {
92#if QT_VERSION >= 0x050000
93 editor = KTextEditor::Editor::instance();
94#else
95 editor = KTextEditor::EditorChooser::editor();
96#endif
97 logWindow = new QListWidget;
98 connect(logWindow, SIGNAL(itemDoubleClicked(QListWidgetItem *)), this, SLOT(slotLogWindowItemDoubleClicked(QListWidgetItem *)));
99 }
100
102 {
103 delete diagramsWindow;
104 delete editorWindow;
105 delete logWindow;
106 delete objectsWindow;
107 delete stereotypesWindow;
108 delete welcomeWindow;
109 }
110
111 bool openFileInEditor(const QUrl &file, int startCursor=0, int endCursor=0);
112
113public slots:
114 void slotLogWindowItemDoubleClicked(QListWidgetItem *item)
115 {
116 QStringList columns = item->text().split(QChar::fromLatin1(':'));
117
118 openFileInEditor(QUrl::fromLocalFile(columns[0]), columns[1].toInt()-1, columns[2].toInt());
119 }
120
122 {
123 // create the tree viewer
124 diagramsWindow = new DiagramsWindow(i18n("&Diagrams"), parent);
125 parent->addDockWidget(Qt::LeftDockWidgetArea, diagramsWindow);
126
127 viewDiagramsWindow = parent->actionCollection()->add<KToggleAction>(QLatin1String("view_show_diagrams"));
128 connect(viewDiagramsWindow, SIGNAL(triggered(bool)), diagramsWindow, SLOT(setVisible(bool)));
129 }
130
132 {
133 // create the object window
134 objectsWindow = new ObjectsWindow(i18n("&UML Objects"), parent);
135 parent->addDockWidget(Qt::LeftDockWidgetArea, objectsWindow);
136
137 viewObjectsWindow = parent->actionCollection()->add<KToggleAction>(QLatin1String("view_show_objects"));
138 connect(viewObjectsWindow, SIGNAL(triggered(bool)), objectsWindow, SLOT(setVisible(bool)));
139 }
140
142 {
143 // create the tree viewer
144 stereotypesWindow = new StereotypesWindow(i18n("&Stereotypes"), parent);
145 parent->addDockWidget(Qt::LeftDockWidgetArea, stereotypesWindow);
146
147 viewStereotypesWindow = parent->actionCollection()->add<KToggleAction>(QLatin1String("view_show_stereotypes"));
148 connect(viewStereotypesWindow, SIGNAL(triggered(bool)), stereotypesWindow, SLOT(setVisible(bool)));
149 }
150
152 {
153 QString file = findWelcomeFile();
154 if (file.isEmpty())
155 return;
156 QString html = readWelcomeFile(file);
157 if (html.isEmpty())
158 return;
159 // qDebug() << html;
160 welcomeWindow = new QDockWidget(i18n("Welcome"), parent);
161 welcomeWindow->setObjectName(QLatin1String("WelcomeDock"));
162#ifdef WEBKIT_WELCOMEPAGE
163 QWebView *view = new QWebView;
164 view->page()->setLinkDelegationPolicy(QWebPage::DelegateAllLinks);
165 view->setContextMenuPolicy(Qt::NoContextMenu);
166 connect(view, SIGNAL(linkClicked(const QUrl)), this, SLOT(slotWelcomeWindowLinkClicked(const QUrl)));
167 view->setHtml(html);
168 view->show();
169 welcomeWindow->setWidget(view);
170#else
171 QTextBrowser *tb = new QTextBrowser(dynamic_cast<QWidget*>(this));
172 tb->setOpenExternalLinks(true);
173 tb->setOpenLinks(false);
174 tb->setHtml(html);
175 connect(tb, SIGNAL(anchorClicked(const QUrl)), this, SLOT(slotWelcomeWindowLinkClicked(const QUrl)));
176 welcomeWindow->setWidget(tb);
177#endif
178 parent->addDockWidget(Qt::RightDockWidgetArea, welcomeWindow);
179
180 viewWelcomeWindow = parent->actionCollection()->add<KToggleAction>(QLatin1String("view_show_welcome"));
181 connect(viewWelcomeWindow, SIGNAL(triggered(bool)), welcomeWindow, SLOT(setVisible(bool)));
182 }
183
184 void slotWelcomeWindowLinkClicked(const QUrl &url)
185 {
186 //qDebug() << url;
187 if (url.scheme() == QLatin1String("mailto") || url.scheme().startsWith(QLatin1String("http"))) {
188 QDesktopServices::openUrl(url);
189 return;
190 }
191 QStringList list = url.toString().split(QLatin1Char('-'));
192 list.removeLast();
193 QString key;
194 foreach(const QString s, list) {
195 QString a = s;
196 a[0] = a[0].toUpper();
197 key.append(a);
198 }
200 if (type == Uml::DiagramType::Undefined)
201 return;
202 QString diagramName = UMLApp::app()->document()->createDiagramName(type);
203 if (!diagramName.isEmpty())
205 }
206
207private:
208 QString findWelcomeFile();
209 QString readWelcomeFile(const QString &file);
210};
211
212#endif
Definition: diagramswindow.h:15
Definition: finddialog.h:20
Definition: findresults.h:25
Definition: objectswindow.h:16
Definition: stereotypeswindow.h:15
Definition: umlappprivate.h:56
KTextEditor::Editor * editor
Definition: umlappprivate.h:73
bool openFileInEditor(const QUrl &file, int startCursor=0, int endCursor=0)
Definition: umlappprivate.cpp:139
void createStereotypesWindow()
Definition: umlappprivate.h:141
KTextEditor::View * view
Definition: umlappprivate.h:74
DiagramsWindow * diagramsWindow
Definition: umlappprivate.h:67
void createWelcomeWindow()
Definition: umlappprivate.h:151
QString findWelcomeFile()
Definition: umlappprivate.cpp:17
KToggleAction * viewObjectsWindow
Definition: umlappprivate.h:64
~UMLAppPrivate()
Definition: umlappprivate.h:101
UMLApp * parent
Definition: umlappprivate.h:59
FindDialog findDialog
Definition: umlappprivate.h:60
KTextEditor::Document * document
Definition: umlappprivate.h:75
QString readWelcomeFile(const QString &file)
Definition: umlappprivate.cpp:76
KToggleAction * viewStereotypesWindow
Definition: umlappprivate.h:65
KToggleAction * viewDiagramsWindow
Definition: umlappprivate.h:63
FindResults findResults
Definition: umlappprivate.h:61
StereotypesWindow * stereotypesWindow
Definition: umlappprivate.h:69
QDockWidget * welcomeWindow
Definition: umlappprivate.h:70
void createObjectsWindow()
Definition: umlappprivate.h:131
void slotWelcomeWindowLinkClicked(const QUrl &url)
Definition: umlappprivate.h:184
void slotLogWindowItemDoubleClicked(QListWidgetItem *item)
Definition: umlappprivate.h:114
UMLAppPrivate(UMLApp *_parent)
Definition: umlappprivate.h:77
QListWidget * logWindow
Logging window.
Definition: umlappprivate.h:62
QDockWidget * editorWindow
Definition: umlappprivate.h:71
void createDiagramsWindow()
Definition: umlappprivate.h:121
ObjectsWindow * objectsWindow
Definition: umlappprivate.h:68
KToggleAction * viewWelcomeWindow
Definition: umlappprivate.h:66
Definition: uml.h:95
UMLDoc * document() const
Definition: uml.cpp:1063
void executeCommand(QUndoCommand *cmd)
Definition: uml.cpp:3447
static UMLApp * app()
Definition: uml.cpp:275
QString createDiagramName(Uml::DiagramType::Enum type, bool askForName=true)
Definition: umldoc.cpp:1620
Definition: cmdcreatediagram.h:20
#define i18n
Definition: main.cpp:34
connect()
Definition: namespaces-multiple.php:5
Enum fromString(const QString &item)
Definition: basictypes.cpp:222
Enum
Definition: basictypes.h:63
@ Undefined
Definition: basictypes.h:66
QString a
Definition: petalnode.cpp:13