diff --git a/src/SelectFormWidget.cpp b/src/SelectFormWidget.cpp index c471634..6a3569a 100644 --- a/src/SelectFormWidget.cpp +++ b/src/SelectFormWidget.cpp @@ -20,6 +20,8 @@ #include #include "src/components/VerticalTextToolButton.h" +#include + #define ADD_CENTER_ITEM(row,col,text)\ item = new QTableWidgetItem(text);\ item->setTextAlignment(Qt::AlignmentFlag::AlignCenter);\ @@ -61,7 +63,7 @@ SelectFormWidget::SelectFormWidget(QWidget* parent) : //Init content widget QHBoxLayout* contentLayout = new QHBoxLayout(); - contentLayout->setContentsMargins(5,5,0,5); + contentLayout->setContentsMargins(5, 5, 0, 5); this->ui->contentWidget->setLayout(contentLayout); // TableView for patient QTableView* table = new SlideableTableView(this); @@ -72,7 +74,9 @@ SelectFormWidget::SelectFormWidget(QWidget* parent) : table->verticalHeader()->setDefaultSectionSize(38); table->horizontalHeader()->setStretchLastSection(true); //data from SQLITE - + // + //avoid pan comsumed by tableview! + table->viewport()->ungrabGesture(Qt::PanGesture); auto model = SQLHelper::getTable("Patient"); model->setFilter("Flag=0"); @@ -111,29 +115,29 @@ SelectFormWidget::SelectFormWidget(QWidget* parent) : //edit panel EditPatientForm* edit_patient = new EditPatientForm(this); edit_patient->setObjectName("edit_patient"); - edit_patient->hide(); + edit_patient->hide(); contentLayout->addWidget(edit_patient); - auto *btnShowEdit = new VerticalTextToolButton(this); - btnShowEdit->setObjectName("showeditBtn"); - btnShowEdit->setIcon(QIcon(":/icons/edit.png")); - btnShowEdit->setIconSize(QSize(30, 30)); - btnShowEdit->setToolButtonStyle(Qt::ToolButtonTextUnderIcon); - btnShowEdit->setFixedHeight(225); -// btnShowEdit->setVerticalText("E\nd\ni\nt\nP\na\nn\ne\nl"); - btnShowEdit->setVerticalText("Patient Detail"); - contentLayout->addWidget(btnShowEdit); - contentLayout->setAlignment(btnShowEdit, Qt::AlignmentFlag::AlignTop); - connect(btnShowEdit,&QToolButton::clicked,[=](){ - edit_patient->show(); - btnShowEdit->hide(); - }); - connect(edit_patient, &EditPatientForm::hideBtnClicked, [=](){ - edit_patient->hide(); - btnShowEdit->show(); - }); + auto* btnShowEdit = new VerticalTextToolButton(this); + btnShowEdit->setObjectName("showeditBtn"); + btnShowEdit->setIcon(QIcon(":/icons/edit.png")); + btnShowEdit->setIconSize(QSize(30, 30)); + btnShowEdit->setToolButtonStyle(Qt::ToolButtonTextUnderIcon); + btnShowEdit->setFixedHeight(225); + // btnShowEdit->setVerticalText("E\nd\ni\nt\nP\na\nn\ne\nl"); + btnShowEdit->setVerticalText("Patient Detail"); + contentLayout->addWidget(btnShowEdit); + contentLayout->setAlignment(btnShowEdit, Qt::AlignmentFlag::AlignTop); + connect(btnShowEdit, &QToolButton::clicked, [=]() { + edit_patient->show(); + btnShowEdit->hide(); + }); + connect(edit_patient, &EditPatientForm::hideBtnClicked, [=]() { + edit_patient->hide(); + btnShowEdit->show(); + }); - //select default row 0 + //select default row 0 if (model->rowCount() > 0) { table->selectRow(0); @@ -143,7 +147,7 @@ SelectFormWidget::SelectFormWidget(QWidget* parent) : pat. val = model->data(model->index(currentRow,PatientInformationEnum:: val)).toString(); EDIT_PATIENT() #undef ADD_PATIENT_PROPERTY - edit_patient->setPatientInformation(&pat); + edit_patient->setPatientInformation(&pat); } //events---------------------------------------------------------------------- //table current row selection changing event @@ -161,15 +165,15 @@ SelectFormWidget::SelectFormWidget(QWidget* parent) : }); connect(btnAdd, &QToolButton::clicked, [=]() { - edit_patient->show(); - btnShowEdit->hide(); + edit_patient->show(); + btnShowEdit->hide(); edit_patient->clearPatientInformation(); edit_patient->setEditEnable(true); btnSelect->setEnabled(false); }); connect(btnEdit, &QToolButton::clicked, [=]() { - edit_patient->show(); - btnShowEdit->hide(); + edit_patient->show(); + btnShowEdit->hide(); table->clicked(table->currentIndex()); edit_patient->setEditEnable(true); btnSelect->setEnabled(false); @@ -242,8 +246,8 @@ SelectFormWidget::SelectFormWidget(QWidget* parent) : } else { currentRow = -1; - edit_patient->editCancel(); - edit_patient->clearPatientInformation(); + edit_patient->editCancel(); + edit_patient->clearPatientInformation(); } } else { diff --git a/src/main.cpp b/src/main.cpp index 02c276e..aa3699a 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -72,6 +72,7 @@ int main(int argc, char* argv[]) //QObject::connect(obj, SIGNAL(touchScreen()), Locker::Instance(), SLOT(refreshTimer())); QList gestures; gestures << Qt::SwipeGesture; + gestures << Qt::PanGesture; w.grabGestures(gestures); QStringList app_args = a.arguments(); diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 0beafc7..d34ea69 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -303,30 +303,55 @@ bool MainWindow::gestureEvent(QGestureEvent* event) //qCDebug(lcExample) << "gestureEvent():" << event; if (QGesture* swipe = event->gesture(Qt::SwipeGesture)) swipeTriggered(static_cast(swipe)); - //else if (QGesture* pan = event->gesture(Qt::PanGesture)) - //panTriggered(static_cast(pan)); - //if (QGesture* pinch = event->gesture(Qt::PinchGesture)) - //pinchTriggered(static_cast(pinch)); + if (QGesture* pan = event->gesture(Qt::PanGesture)) + panTriggered(static_cast(pan)); + //if (QGesture* pinch = event->gesture(Qt::PinchGesture)) + //pinchTriggered(static_cast(pinch)); return true; } -void MainWindow::swipeTriggered(QSwipeGesture* gesture) + +void MainWindow::panTriggered(QPanGesture* gesture) { + if (gesture->state() == Qt::GestureFinished) { - if (gesture->horizontalDirection() == QSwipeGesture::Right) { - int index = tab->currentIndex(); + QPointF delta = gesture->offset(); + int index = tab->currentIndex(); + if (delta.x() > 50) { + index--; if (index >= 0) { tab->setCurrentIndex(index); } - } - if (gesture->horizontalDirection() == QSwipeGesture::Left) { - int index = tab->currentIndex(); + if (delta.x() < -50) + { index++; if (index < tab->count()) { tab->setCurrentIndex(index); } } + qDebug() << "panTriggered" << index; + } +} +void MainWindow::swipeTriggered(QSwipeGesture* gesture) +{ + + if (gesture->state() == Qt::GestureFinished) { + //if (gesture->horizontalDirection() == QSwipeGesture::Right) { + // int index = tab->currentIndex(); + // index--; + // if (index >= 0) { + // tab->setCurrentIndex(index); + // } + + //} + //if (gesture->horizontalDirection() == QSwipeGesture::Left) { + // int index = tab->currentIndex(); + // index++; + // if (index < tab->count()) { + // tab->setCurrentIndex(index); + // } + //} if (gesture->verticalDirection() == QSwipeGesture::Down) { if (debugMode) { diff --git a/src/mainwindow.h b/src/mainwindow.h index d1dc469..510f63a 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -15,6 +15,7 @@ class GUIMessageDialog; class QTabWidget; class QGestureEvent; class QSwipeGesture; +class QPanGesture; class QDockWidget; class MainWindow : public QMainWindow @@ -41,6 +42,7 @@ protected: private: bool gestureEvent(QGestureEvent* event); void swipeTriggered(QSwipeGesture*); + void panTriggered(QPanGesture*); void loadStyleSheet(const QString& sheetName); cJSON* json_root = nullptr;