6 #ifndef SWIFT_GUI_GUIUTILITY_H
7 #define SWIFT_GUI_GUIUTILITY_H
10 #include <QDockWidget>
12 #include <QFontMetrics>
13 #include <QFontMetricsF>
14 #include <QModelIndexList>
19 #include <QWidgetList>
34 class QGraphicsOpacityEffect;
35 class QAbstractItemModel;
43 class CEnableForFramelessWindow;
44 class COverlayMessagesFrame;
45 class COverlayMessagesWizardPage;
46 class COverlayMessagesTabWidget;
57 static void registerMainApplicationWidget(QWidget *mainWidget);
60 static QWidget *mainApplicationWidget();
63 static qreal mainApplicationWidgetPixelRatio();
67 static QSize desktopSize();
71 static QSize physicalScreenSizeOs();
74 static bool isMainWindowFrameless();
77 static QString screenInformation(
const QString &separator =
"\n");
80 static const QString &orientationAsString(Qt::ScreenOrientation orientation);
84 static QString rectAsString(
const QRect &rect);
85 static QString rectAsString(
const QRectF &rect);
86 static QString sizeAsString(
const QSize &size);
87 static QString sizeAsString(
const QSizeF &size);
91 static QWidgetList topLevelApplicationWidgetsWithName();
94 static QPoint mainWidgetGlobalPosition();
97 static QString replaceTabCountValue(
const QString &oldName,
int count);
100 static void deleteLayout(QLayout *layout,
bool deleteWidgets);
103 static bool lenientTitleComparison(
const QString &title,
const QString &comparison);
106 static bool setComboBoxValueByStartingString(QComboBox *box,
const QString &candidate,
107 const QString &unspecified = QString());
110 static bool setComboBoxValueByContainingString(QComboBox *box,
const QString &candidate,
111 const QString &unspecified = QString());
114 static bool hasSwiftVariantMimeType(
const QMimeData *mime);
123 static int metaTypeIdFromSwiftDragAndDropData(
const QMimeData *mime);
126 static QFileInfo representedMimeFile(
const QMimeData *mime);
129 static bool isMimeRepresentingReadableFile(
const QMimeData *mime);
132 static bool isMimeRepresentingReadableJsonFile(
const QMimeData *mime);
135 template <
class OverlayW
idget>
138 if (!widget || maxLevels < 1) {
return nullptr; }
139 OverlayWidget *o = qobject_cast<OverlayWidget *>(widget);
142 QWidget *cw = widget->parentWidget();
143 while (cl < maxLevels && cw)
145 o = qobject_cast<OverlayWidget *>(cw);
148 cw = cw->parentWidget();
163 static const QString &swiftJsonDragAndDropMimeType();
166 static void checkBoxReadOnly(QCheckBox *checkBox,
bool readOnly);
169 static void checkBoxesReadOnly(QWidget *parent,
bool readOnly);
172 static void tempUnhidePassword(QLineEdit *lineEdit,
int unhideMs = 5000);
175 template <
class WIDGET>
178 if (!parent) {
return; }
179 QList<WIDGET *> children = parent->findChildren<WIDGET *>();
180 for (WIDGET *w : children) { w->setEnabled(enabled); }
184 static bool toggleStayOnTop(QWidget *widget);
187 static bool stayOnTop(
bool onTop, QWidget *widget);
190 static bool staysOnTop(QWidget *widget);
193 static QTabWidget *parentTabWidget(QWidget *widget,
int maxLevels = 5);
196 static QString marginsToString(
const QMargins &margins);
199 static QMargins stringToMargins(
const QString &str);
202 static QList<int> indexToUniqueRows(
const QModelIndexList &indexes);
205 static int clearModel(QAbstractItemModel *model);
208 static bool isTopLevelWidget(QWidget *widget);
211 static bool isTopLevelWindow(QWidget *widget);
215 static bool isQMainWindow(
const QWidget *widget);
216 static bool isDialog(
const QWidget *widget);
220 static void disableMinMaxCloseButtons(QWidget *window);
223 static QGraphicsOpacityEffect *fadeInWidget(
int durationMs, QWidget *widget,
double startValue = 0.0,
224 double endValue = 1.0);
227 static QGraphicsOpacityEffect *fadeOutWidget(
int durationMs, QWidget *widget,
double startValue = 1.0,
228 double endValue = 0.0);
231 static QFontMetrics currentFontMetrics();
234 static QFontMetricsF currentFontMetricsF();
237 static QFont currentFont();
240 static QSizeF fontMetrics80Chars(
bool withRatio =
false);
243 static QSizeF fontMetricsLazyDog43Chars(
bool withRatio =
false);
246 static QSizeF fontMetricsEstimateSize(
int xCharacters,
int yCharacters,
bool withRatio =
false);
249 static void centerWidget(QWidget *widget);
252 static void centerWidget(QWidget *widget, QWidget *host);
255 static QString metricsInfo();
258 static bool isUsingHighDpiScreenSupport();
261 static void forceStyleSheetUpdate(QWidget *widget);
264 static void superviseMainWindowMinSizes(qreal wRatio = 0.85, qreal hRatio = 0.85);
267 static QString asSimpleHtmlImageWidth(
const swift::misc::CIcon &icon,
int width = -1);
270 static QString asSimpleHtmlImageHeight(
const swift::misc::CIcon &icon,
int height = -1);
273 static QDialog *findParentDialog(QWidget *widget);
276 static QDialog *findParentDialog(QWidget *widget,
int maxLevel);
279 static void setElidedText(QLabel *label,
const QString &text, Qt::TextElideMode mode = Qt::ElideMiddle);
282 static void setElidedText(QLabel *label,
const QString &shortText,
const QString &longText,
283 Qt::TextElideMode mode = Qt::ElideMiddle);
286 static void setWizardButtonWidths(QWizard *wizard);
289 static QWidgetList getAllModallWidgets();
292 static QStringList getAllWidgetTitles(
const QWidgetList &widgets);
295 static QStringList getAllWidgetNames(
const QWidgetList &widgets);
298 static QList<QDockWidget *> getAllDockWidgets(QWidget *parent,
bool floatingOnly);
301 static QList<QDockWidget *> getAllDockWidgets(QWindow *parent,
bool floatingOnly);
304 static QWidgetList closeAllModalWidgets();
307 static QStringList closeAllModalWidgetsGetTitles();
310 static QList<QDockWidget *> closeAllDockWidgets(QWidget *parent,
bool floatingOnly);
313 static QList<QDockWidget *> closeAllDockWidgets(QWindow *parent,
bool floatingOnly);
316 static QStringList closeAllDockWidgetsGetTitles(QWidget *parent,
bool floatingOnly);
319 static QStringList closeAllDockWidgetsGetTitles(QWindow *parent,
bool floatingOnly);
323 static QStringList deleteLaterAllDockWidgetsGetTitles(QWidget *parent,
bool floatingOnly);
329 static QWidget *s_mainApplicationWidget;
Main window which can be frameless.
static void childrenSetEnabled(QWidget *parent, bool enabled)
Enable/disable all child widgets.
static OverlayWidget * nextOverlayMessageWidget(QWidget *widget, int maxLevels=10)
Find next swift::gui::COverlayMessages QFrame or other implementing widget.
Using this class provides a QFrame with the overlay functionality already integrated.
Using this class provides a QWizardPage with the overlay functionality already integrated.
Value object for icons. An icon is stored in the global icon repository and identified by its index....
Wrapper around QVariant which provides transparent access to CValueObject methods of the contained ob...
Free functions in swift::misc.
#define SWIFT_GUI_EXPORT
Export a class or function from the library.