graphic android patches: buttons moved to popup-menu on tap-and-hold gesture
This commit is contained in:
@@ -3,7 +3,7 @@ cmake_policy(SET CMP0017 NEW) # need include() with .cmake
|
|||||||
cmake_policy(SET CMP0072 NEW) # FindOpenGL prefers GLVND by default
|
cmake_policy(SET CMP0072 NEW) # FindOpenGL prefers GLVND by default
|
||||||
project(qad)
|
project(qad)
|
||||||
set(qad_MAJOR 2)
|
set(qad_MAJOR 2)
|
||||||
set(qad_MINOR 5)
|
set(qad_MINOR 6)
|
||||||
set(qad_REVISION 0)
|
set(qad_REVISION 0)
|
||||||
set(qad_SUFFIX )
|
set(qad_SUFFIX )
|
||||||
set(qad_COMPANY SHS)
|
set(qad_COMPANY SHS)
|
||||||
|
|||||||
@@ -14,7 +14,9 @@
|
|||||||
#if (QT_VERSION >= QT_VERSION_CHECK(5, 10, 0))
|
#if (QT_VERSION >= QT_VERSION_CHECK(5, 10, 0))
|
||||||
# include <QRandomGenerator>
|
# include <QRandomGenerator>
|
||||||
#endif
|
#endif
|
||||||
#ifndef Q_OS_ANDROID
|
#ifdef Q_OS_ANDROID
|
||||||
|
# define NO_BUTTONS
|
||||||
|
#else
|
||||||
# ifndef FORCE_NO_GL
|
# ifndef FORCE_NO_GL
|
||||||
# define HAS_GL
|
# define HAS_GL
|
||||||
# endif
|
# endif
|
||||||
@@ -25,6 +27,7 @@
|
|||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
const char _button_prop_name_[] = "_button_";
|
||||||
const double rad2deg_qpie = 45. / atan(1.);
|
const double rad2deg_qpie = 45. / atan(1.);
|
||||||
|
|
||||||
__GraphicRegistrator__ __graphic_registrator__;
|
__GraphicRegistrator__ __graphic_registrator__;
|
||||||
@@ -72,6 +75,32 @@ Graphic::Graphic(QWidget * parent): QFrame(parent), canvas(0), line_x_min(this),
|
|||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
ui->scrollLegend->layout()->addWidget(new LegendScrollArea(ui->widgetLegend));
|
ui->scrollLegend->layout()->addWidget(new LegendScrollArea(ui->widgetLegend));
|
||||||
ui->scrollLegend->hide();
|
ui->scrollLegend->hide();
|
||||||
|
#ifdef NO_BUTTONS
|
||||||
|
ui->widgetLeft->hide();
|
||||||
|
ui->widgetRight->hide();
|
||||||
|
QList<QToolButton*> btnlist = {
|
||||||
|
ui->graphic_buttonAutofit,
|
||||||
|
ui->graphic_checkGrid,
|
||||||
|
ui->graphic_checkGuides,
|
||||||
|
ui->graphic_buttonFullscreen,
|
||||||
|
ui->graphic_checkBorderInputs,
|
||||||
|
ui->graphic_checkLegend,
|
||||||
|
ui->graphic_checkPause,
|
||||||
|
ui->graphic_buttonConfigure,
|
||||||
|
ui->graphic_buttonSave,
|
||||||
|
ui->graphic_buttonExport,
|
||||||
|
ui->graphic_buttonClear,
|
||||||
|
ui->graphic_buttonClose};
|
||||||
|
buttons_menu = new QMenu(this);
|
||||||
|
for (auto * b: btnlist) {
|
||||||
|
auto * a = new QAction(this);
|
||||||
|
connect(a, SIGNAL(triggered()), b, SLOT(click()));
|
||||||
|
connect(a, SIGNAL(triggered(bool)), b, SLOT(setChecked(bool)));
|
||||||
|
a->setCheckable(b->isCheckable());
|
||||||
|
a->setProperty(_button_prop_name_, (quintptr)b);
|
||||||
|
buttons_menu->addAction(a);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
QActionGroup * agroup = new QActionGroup(this);
|
QActionGroup * agroup = new QActionGroup(this);
|
||||||
agroup->addAction(ui->graphic_actionGuidesFree );
|
agroup->addAction(ui->graphic_actionGuidesFree );
|
||||||
agroup->addAction(ui->graphic_actionGuidesTraceX);
|
agroup->addAction(ui->graphic_actionGuidesTraceX);
|
||||||
@@ -156,6 +185,9 @@ Graphic::Graphic(QWidget * parent): QFrame(parent), canvas(0), line_x_min(this),
|
|||||||
|
|
||||||
|
|
||||||
Graphic::~Graphic() {
|
Graphic::~Graphic() {
|
||||||
|
#ifdef NO_BUTTONS
|
||||||
|
delete buttons_menu;
|
||||||
|
#endif
|
||||||
delete conf;
|
delete conf;
|
||||||
if (buffer != 0) delete buffer;
|
if (buffer != 0) delete buffer;
|
||||||
}
|
}
|
||||||
@@ -274,7 +306,7 @@ void Graphic::procGesture(QGesture * g) {
|
|||||||
case Qt::TapAndHoldGesture: {
|
case Qt::TapAndHoldGesture: {
|
||||||
QTapAndHoldGesture * pg = (QTapAndHoldGesture*)g;
|
QTapAndHoldGesture * pg = (QTapAndHoldGesture*)g;
|
||||||
if (pg->state() == Qt::GestureStarted)
|
if (pg->state() == Qt::GestureStarted)
|
||||||
QMetaObject::invokeMethod(this, "enterFullscreen", Qt::QueuedConnection);
|
QMetaObject::invokeMethod(this, "showMenu", Qt::QueuedConnection);
|
||||||
} break;
|
} break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
@@ -727,6 +759,9 @@ void Graphic::setButtonsPosition(Graphic::Alignment a) {
|
|||||||
align = a;
|
align = a;
|
||||||
ui->widgetLeft->hide();
|
ui->widgetLeft->hide();
|
||||||
ui->widgetRight->hide();
|
ui->widgetRight->hide();
|
||||||
|
#ifdef NO_BUTTONS
|
||||||
|
return;
|
||||||
|
#endif
|
||||||
switch (a) {
|
switch (a) {
|
||||||
case Graphic::Left:
|
case Graphic::Left:
|
||||||
ui->widgetLeft->setLayout(ui->layoutButtons);
|
ui->widgetLeft->setLayout(ui->layoutButtons);
|
||||||
@@ -1880,6 +1915,7 @@ void Graphic::enterFullscreen() {
|
|||||||
dlg.exec();
|
dlg.exec();
|
||||||
dlg.layout()->removeWidget(canvas);
|
dlg.layout()->removeWidget(canvas);
|
||||||
leaveFullscreen();
|
leaveFullscreen();
|
||||||
|
return;
|
||||||
#else
|
#else
|
||||||
ui->layoutCanvas->removeWidget(canvas);
|
ui->layoutCanvas->removeWidget(canvas);
|
||||||
canvas->setParent(0);
|
canvas->setParent(0);
|
||||||
@@ -1905,6 +1941,26 @@ void Graphic::leaveFullscreen() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Graphic::showMenu() {
|
||||||
|
#ifdef NO_BUTTONS
|
||||||
|
for (auto * a: buttons_menu->actions()) {
|
||||||
|
QToolButton * b = (QToolButton *)(a->property(_button_prop_name_).toULongLong());
|
||||||
|
if (!b) {
|
||||||
|
a->setVisible(false);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
a->blockSignals(true);
|
||||||
|
a->setVisible(!b->isHidden());
|
||||||
|
a->setText(b->toolTip());
|
||||||
|
a->setIcon(b->icon());
|
||||||
|
a->setChecked(b->isChecked());
|
||||||
|
a->blockSignals(false);
|
||||||
|
}
|
||||||
|
buttons_menu->popup(QCursor::pos());
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
QString Graphic::caption() const {
|
QString Graphic::caption() const {
|
||||||
return ui->labelCaption->text();
|
return ui->labelCaption->text();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,6 +31,7 @@
|
|||||||
#include <QElapsedTimer>
|
#include <QElapsedTimer>
|
||||||
#include <QTranslator>
|
#include <QTranslator>
|
||||||
#include <QGestureEvent>
|
#include <QGestureEvent>
|
||||||
|
#include <QMenu>
|
||||||
#include <qmath.h>
|
#include <qmath.h>
|
||||||
#include <float.h>
|
#include <float.h>
|
||||||
#include "graphic_conf.h"
|
#include "graphic_conf.h"
|
||||||
@@ -402,6 +403,7 @@ protected:
|
|||||||
GraphicConf * conf;
|
GraphicConf * conf;
|
||||||
EvalSpinBox line_x_min, line_x_max, line_y_min, line_y_max;
|
EvalSpinBox line_x_min, line_x_max, line_y_min, line_y_max;
|
||||||
QElapsedTimer tm;
|
QElapsedTimer tm;
|
||||||
|
QMenu * buttons_menu = nullptr;
|
||||||
#ifdef Q_OS_ANDROID
|
#ifdef Q_OS_ANDROID
|
||||||
QElapsedTimer tm_fscr;
|
QElapsedTimer tm_fscr;
|
||||||
#endif
|
#endif
|
||||||
@@ -448,6 +450,7 @@ protected slots:
|
|||||||
void actionGuidesTriggered(QAction * a);
|
void actionGuidesTriggered(QAction * a);
|
||||||
void enterFullscreen();
|
void enterFullscreen();
|
||||||
void leaveFullscreen();
|
void leaveFullscreen();
|
||||||
|
void showMenu();
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void beforeGraphicPaintEvent(QPainter * );
|
void beforeGraphicPaintEvent(QPainter * );
|
||||||
|
|||||||
Reference in New Issue
Block a user