diff --git a/.gitignore b/.gitignore index a95ded4..9ab4f33 100644 --- a/.gitignore +++ b/.gitignore @@ -63,4 +63,5 @@ dkms.conf !/proj/proteus/*.pdsprj !/proj/hex/*.hex /qt/build*/ -/qt/Release \ No newline at end of file +/qt/Release +*.7z diff --git a/qt/Release.7z b/qt/Release.7z index 602f280..73bf866 100644 Binary files a/qt/Release.7z and b/qt/Release.7z differ diff --git a/qt/power_carrier/CMakeLists.txt b/qt/power_carrier/CMakeLists.txt index 10e70e3..afc35b9 100644 --- a/qt/power_carrier/CMakeLists.txt +++ b/qt/power_carrier/CMakeLists.txt @@ -27,14 +27,6 @@ set(GLOBAL_DEFINED DB_PATH="${FILES_PATH}/db" ) -string(TOUPPER ${PROJECT_NAME} PROJECT_NAME_UPPERCASE) -set(PROJECT_NAMESPACE_DEFINED - PROJECT_NAMESPACE_NAME=${PROJECT_NAME} - PROJECT_BEGIN_NAMESPACE=namespace\ ${PROJECT_NAME}\ \{ - PROJECT_USING_NAMESPACE=using\ namespace\ ${PROJECT_NAME} - PROJECT_END_NAMESPACE=\} -) - set(INCLUDE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/include") set(SRC_PATH "${CMAKE_CURRENT_SOURCE_DIR}/src") set(UI_PATH "${CMAKE_CURRENT_SOURCE_DIR}/ui") @@ -44,7 +36,6 @@ list(APPEND CMAKE_AUTOUIC_SEARCH_PATHS ) include_directories( - "${CMAKE_CURRENT_SOURCE_DIR}" "${INCLUDE_PATH}" "${INCLUDE_PATH}/dialog" "${INCLUDE_PATH}/widget" @@ -63,18 +54,15 @@ file(GLOB_RECURSE ISU_FILES # file(GLOB UI_FILES "${UI_PATH}/*.ui") set(PROJECT_SOURCES - ${ISU_FILES} - _res.qrc + ${ISU_FILES} + res/_res.qrc + res/_app.rc ) if(${QT_VERSION_MAJOR} GREATER_EQUAL 6) qt_add_executable(${PROJECT_NAME} MANUAL_FINALIZATION ${PROJECT_SOURCES} - - # safetools.h safetools.cpp - # testruntime.hpp - ) # Define target properties for Android with Qt 6 as: # set_property(TARGET power_carrier APPEND PROPERTY QT_ANDROID_PACKAGE_SOURCE_DIR @@ -96,7 +84,6 @@ endif() target_compile_definitions(${PROJECT_NAME} PRIVATE ${GLOBAL_DEFINED} - ${PROJECT_NAMESPACE_DEFINED} ) target_link_libraries(${PROJECT_NAME} PRIVATE Qt${QT_VERSION_MAJOR}::Widgets diff --git a/qt/power_carrier/_res.qrc b/qt/power_carrier/_res.qrc deleted file mode 100644 index 4ef972f..0000000 --- a/qt/power_carrier/_res.qrc +++ /dev/null @@ -1,9 +0,0 @@ - - - res/iconfont/iconfont.ttf - - - res/fonts/JetBrainsMono-Medium.ttf - res/fonts/YouSheYuFeiTeJianKangTi-2.ttf - - diff --git a/qt/power_carrier/abandon/communication.cpp b/qt/power_carrier/abandon/communication.cpp index 2974710..4b37786 100644 --- a/qt/power_carrier/abandon/communication.cpp +++ b/qt/power_carrier/abandon/communication.cpp @@ -1,6 +1,6 @@ #include "communication.h" -PROJECT_USING_NAMESPACE; + Communication::Communication(quint8 pc_address) : addr(pc_address) diff --git a/qt/power_carrier/abandon/communication.h b/qt/power_carrier/abandon/communication.h index 26cd26c..2fc3d34 100644 --- a/qt/power_carrier/abandon/communication.h +++ b/qt/power_carrier/abandon/communication.h @@ -3,7 +3,7 @@ #include -PROJECT_BEGIN_NAMESPACE + class Communication { @@ -16,6 +16,6 @@ class Communication quint8 addr; }; -PROJECT_END_NAMESPACE + #endif // COMMUNICATION_H diff --git a/qt/power_carrier/abandon/mainwindow_2.cpp b/qt/power_carrier/abandon/mainwindow_2.cpp index 996f7d4..5dbf5d7 100644 --- a/qt/power_carrier/abandon/mainwindow_2.cpp +++ b/qt/power_carrier/abandon/mainwindow_2.cpp @@ -13,7 +13,7 @@ #include #include -PROJECT_USING_NAMESPACE; + MainWindow_2::MainWindow_2(QWidget* parent) : QMainWindow{parent} diff --git a/qt/power_carrier/abandon/mainwindow_2.h b/qt/power_carrier/abandon/mainwindow_2.h index 74864b3..b6df1f4 100644 --- a/qt/power_carrier/abandon/mainwindow_2.h +++ b/qt/power_carrier/abandon/mainwindow_2.h @@ -3,7 +3,7 @@ #include -PROJECT_BEGIN_NAMESPACE + class SerialPortWidget; @@ -33,6 +33,6 @@ class MainWindow_2 : public QMainWindow signals: }; -PROJECT_END_NAMESPACE + #endif // MAINWINDOW_2_H diff --git a/qt/power_carrier/abandon/serialport.cpp b/qt/power_carrier/abandon/serialport.cpp index 8007ca2..cf5fa72 100644 --- a/qt/power_carrier/abandon/serialport.cpp +++ b/qt/power_carrier/abandon/serialport.cpp @@ -4,7 +4,7 @@ #include #include -PROJECT_USING_NAMESPACE; + SerialPort::SerialPort(QObject* parent) : QObject {parent} { diff --git a/qt/power_carrier/abandon/serialport.h b/qt/power_carrier/abandon/serialport.h index f81ae68..d74c545 100644 --- a/qt/power_carrier/abandon/serialport.h +++ b/qt/power_carrier/abandon/serialport.h @@ -4,7 +4,7 @@ #include #include -PROJECT_BEGIN_NAMESPACE + class SerialPort : public QObject { @@ -46,6 +46,6 @@ public slots: void receiveStr(QString); }; -PROJECT_END_NAMESPACE + #endif // SERIALPORT_H diff --git a/qt/power_carrier/testruntime.hpp b/qt/power_carrier/abandon/testruntime.hpp similarity index 100% rename from qt/power_carrier/testruntime.hpp rename to qt/power_carrier/abandon/testruntime.hpp diff --git a/qt/power_carrier/include/dialog/addslavedialog.h b/qt/power_carrier/include/dialog/addslavedialog.h index 51632c6..e0d5ceb 100644 --- a/qt/power_carrier/include/dialog/addslavedialog.h +++ b/qt/power_carrier/include/dialog/addslavedialog.h @@ -9,7 +9,7 @@ class AddSlaveDialog; class QTableWidgetItem; -PROJECT_BEGIN_NAMESPACE + class AddSlaveDialog : public QDialog { @@ -70,6 +70,6 @@ private slots: void updateInfo(QStringList, QStringList, QStringList); }; -PROJECT_END_NAMESPACE + #endif // ADDSLAVEDIALOG_H diff --git a/qt/power_carrier/include/dialog/comrangedialog.h b/qt/power_carrier/include/dialog/comrangedialog.h index fc771ad..b5f39b4 100644 --- a/qt/power_carrier/include/dialog/comrangedialog.h +++ b/qt/power_carrier/include/dialog/comrangedialog.h @@ -7,7 +7,7 @@ namespace Ui { class ComRangeDialog; } -PROJECT_BEGIN_NAMESPACE + class ComRangeDialog : public QDialog { @@ -37,6 +37,6 @@ private slots: signals: }; -PROJECT_END_NAMESPACE + #endif // COMRANGEDIALOG_H diff --git a/qt/power_carrier/include/dialog/newdbfiledialog.h b/qt/power_carrier/include/dialog/newdbfiledialog.h index 6f127ce..2efa8cc 100644 --- a/qt/power_carrier/include/dialog/newdbfiledialog.h +++ b/qt/power_carrier/include/dialog/newdbfiledialog.h @@ -7,7 +7,7 @@ namespace Ui { class NewDBFileDialog; } -PROJECT_BEGIN_NAMESPACE + class NewDBFileDialog : public QDialog { @@ -43,6 +43,6 @@ private slots: QString f; }; -PROJECT_END_NAMESPACE + #endif // NEWDBFILEDIALOG_H diff --git a/qt/power_carrier/include/model/sqltablemodel.h b/qt/power_carrier/include/model/sqltablemodel.h index 9029e15..a4d712b 100644 --- a/qt/power_carrier/include/model/sqltablemodel.h +++ b/qt/power_carrier/include/model/sqltablemodel.h @@ -3,7 +3,7 @@ #include -PROJECT_BEGIN_NAMESPACE + class SqlTableModel : public QSqlQueryModel { @@ -15,6 +15,6 @@ class SqlTableModel : public QSqlQueryModel QVariant data(const QModelIndex& index, int role) const override; }; -PROJECT_END_NAMESPACE + #endif // SQLTABLEMODEL_H diff --git a/qt/power_carrier/include/object/comlist.h b/qt/power_carrier/include/object/comlist.h index 2bc37a2..47d74c9 100644 --- a/qt/power_carrier/include/object/comlist.h +++ b/qt/power_carrier/include/object/comlist.h @@ -8,7 +8,7 @@ class QThread; class QComboBox; -PROJECT_BEGIN_NAMESPACE + class SerialPortManager; @@ -49,6 +49,6 @@ private slots: void currentComChanged(); }; -PROJECT_END_NAMESPACE + #endif // COMLIST_H diff --git a/qt/power_carrier/include/object/configurations.h b/qt/power_carrier/include/object/configurations.h index e3e4d25..ae5fad6 100644 --- a/qt/power_carrier/include/object/configurations.h +++ b/qt/power_carrier/include/object/configurations.h @@ -9,7 +9,7 @@ #define ICON_FONT Configurations::LoadIconFont -PROJECT_BEGIN_NAMESPACE + class Configurations { @@ -56,6 +56,6 @@ class Configurations #define _MAIN_WIDGET_WIDTH_ "/widget/width" -PROJECT_END_NAMESPACE + #endif // CONFIGURATIONS_H diff --git a/qt/power_carrier/include/object/crc16.h b/qt/power_carrier/include/object/crc16.h index b771a92..5cd0d0e 100644 --- a/qt/power_carrier/include/object/crc16.h +++ b/qt/power_carrier/include/object/crc16.h @@ -3,7 +3,7 @@ #include -PROJECT_BEGIN_NAMESPACE + class CRC16 { @@ -19,6 +19,6 @@ class CRC16 static quint16* t1021; }; -PROJECT_END_NAMESPACE + #endif // CRC16_H diff --git a/qt/power_carrier/include/object/serialportmanager.h b/qt/power_carrier/include/object/serialportmanager.h index 0e4d35c..c5d3a50 100644 --- a/qt/power_carrier/include/object/serialportmanager.h +++ b/qt/power_carrier/include/object/serialportmanager.h @@ -7,7 +7,7 @@ class QMutex; class QTimer; -PROJECT_BEGIN_NAMESPACE + class SerialPortManager : public QObject { @@ -47,6 +47,6 @@ public slots: void availablePortsChanged(); }; -PROJECT_END_NAMESPACE + #endif // SERIALPORTMANAGER_H diff --git a/qt/power_carrier/include/object/serialportworker.h b/qt/power_carrier/include/object/serialportworker.h index da69718..faf9fbb 100644 --- a/qt/power_carrier/include/object/serialportworker.h +++ b/qt/power_carrier/include/object/serialportworker.h @@ -6,7 +6,7 @@ class QSerialPort; class QMutex; -PROJECT_BEGIN_NAMESPACE + class SerialPortWorker : public QObject { @@ -73,6 +73,6 @@ private slots: void errorLog(QString); }; -PROJECT_END_NAMESPACE + #endif // SERIALPORTWORKER_H diff --git a/qt/power_carrier/include/widget/mainwidget.h b/qt/power_carrier/include/widget/mainwidget.h index 9840186..b479f7b 100644 --- a/qt/power_carrier/include/widget/mainwidget.h +++ b/qt/power_carrier/include/widget/mainwidget.h @@ -10,7 +10,7 @@ class MainWidget; class QStatusBar; -PROJECT_BEGIN_NAMESPACE + class SerialPortWidget; class SQLiteWidget; @@ -49,6 +49,6 @@ class MainWidget : public QWidget SQLiteWidget* sqlWidget; }; -PROJECT_END_NAMESPACE + #endif // MAINWIDGET_H diff --git a/qt/power_carrier/include/widget/serialportwidget.h b/qt/power_carrier/include/widget/serialportwidget.h index fd2a759..3ae06a8 100644 --- a/qt/power_carrier/include/widget/serialportwidget.h +++ b/qt/power_carrier/include/widget/serialportwidget.h @@ -12,7 +12,7 @@ class SerialPortWidget; class QMessageBox; -PROJECT_BEGIN_NAMESPACE + class ComList; class ComRangeDialog; @@ -136,6 +136,6 @@ private slots: void slaveStateUpdate(quint8, quint8); }; -PROJECT_END_NAMESPACE + #endif // SERIALPORTWIDGET_H diff --git a/qt/power_carrier/include/widget/sqlitewidget.h b/qt/power_carrier/include/widget/sqlitewidget.h index 09dadb0..50237ce 100644 --- a/qt/power_carrier/include/widget/sqlitewidget.h +++ b/qt/power_carrier/include/widget/sqlitewidget.h @@ -13,7 +13,7 @@ class QDataWidgetMapper; class QItemSelectionModel; class QSortFilterProxyModel; -PROJECT_BEGIN_NAMESPACE + class NewDBFileDialog; class AddSlaveDialog; @@ -85,6 +85,6 @@ private slots: void slaveStateChange(quint8 ,quint8); }; -PROJECT_END_NAMESPACE + #endif // SQLITEWIDGET_H diff --git a/qt/power_carrier/res/_res.qrc b/qt/power_carrier/res/_res.qrc new file mode 100644 index 0000000..9d88198 --- /dev/null +++ b/qt/power_carrier/res/_res.qrc @@ -0,0 +1,10 @@ + + + iconfont/iconfont.ttf + img/AppIcon.ico + + + font_family/JetBrainsMono-Medium.ttf + font_family/YouSheYuFeiTeJianKangTi-2.ttf + + diff --git a/qt/power_carrier/res/fonts/JetBrainsMono-Medium.ttf b/qt/power_carrier/res/font_family/JetBrainsMono-Medium.ttf similarity index 100% rename from qt/power_carrier/res/fonts/JetBrainsMono-Medium.ttf rename to qt/power_carrier/res/font_family/JetBrainsMono-Medium.ttf diff --git a/qt/power_carrier/res/fonts/YouSheYuFeiTeJianKangTi-2.ttf b/qt/power_carrier/res/font_family/YouSheYuFeiTeJianKangTi-2.ttf similarity index 100% rename from qt/power_carrier/res/fonts/YouSheYuFeiTeJianKangTi-2.ttf rename to qt/power_carrier/res/font_family/YouSheYuFeiTeJianKangTi-2.ttf diff --git a/qt/power_carrier/res/fonts/README.md b/qt/power_carrier/res/fonts/README.md deleted file mode 100644 index e69de29..0000000 diff --git a/qt/power_carrier/res/img/AppIcon.ico b/qt/power_carrier/res/img/AppIcon.ico new file mode 100644 index 0000000..08f2a6a Binary files /dev/null and b/qt/power_carrier/res/img/AppIcon.ico differ diff --git a/qt/power_carrier/res/img/PowerCarrier.png b/qt/power_carrier/res/img/PowerCarrier.png new file mode 100644 index 0000000..fd61f03 Binary files /dev/null and b/qt/power_carrier/res/img/PowerCarrier.png differ diff --git a/qt/power_carrier/share/config.ini b/qt/power_carrier/share/config.ini index d9e21b3..8e6a23f 100644 --- a/qt/power_carrier/share/config.ini +++ b/qt/power_carrier/share/config.ini @@ -13,20 +13,20 @@ parity_index=3 [log_settings] log1_selector=true log2_selector=false -log1_eyes_state=true +log1_eyes_state=false log2_eyes_state=false [group_settings] group1_hidden=true -group2_hidden=false -group3_hidden=false +group2_hidden=true +group3_hidden=true log_splitter_state=@ByteArray(\0\0\0\xff\0\0\0\x1\0\0\0\x2\xff\xff\xff\xff\xff\xff\xff\xff\0\xff\xff\xff\xff\x1\0\0\0\x2\x1) [left_tool] sp_assistant_hidden=false [widget] -left_tool_index=0 +left_tool_index=-1 size=@Size(815 708) width=815 diff --git a/qt/power_carrier/src/dialog/addslavedialog.cpp b/qt/power_carrier/src/dialog/addslavedialog.cpp index 90a553a..1aa55d2 100644 --- a/qt/power_carrier/src/dialog/addslavedialog.cpp +++ b/qt/power_carrier/src/dialog/addslavedialog.cpp @@ -3,7 +3,7 @@ #include -PROJECT_USING_NAMESPACE; + AddSlaveDialog::AddSlaveDialog(QWidget* parent) diff --git a/qt/power_carrier/src/dialog/comrangedialog.cpp b/qt/power_carrier/src/dialog/comrangedialog.cpp index 2d01a63..95a9635 100644 --- a/qt/power_carrier/src/dialog/comrangedialog.cpp +++ b/qt/power_carrier/src/dialog/comrangedialog.cpp @@ -3,7 +3,7 @@ #include "configurations.h" -PROJECT_USING_NAMESPACE; + ComRangeDialog::ComRangeDialog(QWidget* parent, int upperLimit) : QDialog(parent) @@ -54,7 +54,7 @@ int ComRangeDialog::comMax() const } -void power_carrier::ComRangeDialog::ready() const +void ComRangeDialog::ready() const { ui->minSpinBox->setValue(this->m_comMin); ui->maxSpinBox->setValue(this->m_comMax); diff --git a/qt/power_carrier/src/dialog/newdbfiledialog.cpp b/qt/power_carrier/src/dialog/newdbfiledialog.cpp index 1d22a31..1aed000 100644 --- a/qt/power_carrier/src/dialog/newdbfiledialog.cpp +++ b/qt/power_carrier/src/dialog/newdbfiledialog.cpp @@ -7,7 +7,7 @@ #include "configurations.h" -PROJECT_USING_NAMESPACE; + NewDBFileDialog::NewDBFileDialog(QWidget* parent) diff --git a/qt/power_carrier/src/main/main.cpp b/qt/power_carrier/src/main/main.cpp index c878b84..0f2a9a7 100644 --- a/qt/power_carrier/src/main/main.cpp +++ b/qt/power_carrier/src/main/main.cpp @@ -12,23 +12,25 @@ int main(int argc, char* argv[]) QString fontName = QString("%1,%2,%3").arg( QFontDatabase::applicationFontFamilies( QFontDatabase::addApplicationFont( - ":/icon/res/iconfont/iconfont.ttf" + ":/icon/iconfont/iconfont.ttf" ) ).at(0), QFontDatabase::applicationFontFamilies( QFontDatabase::addApplicationFont( - ":/font/res/fonts/JetBrainsMono-Medium.ttf" + ":/font/font_family/JetBrainsMono-Medium.ttf" ) ).at(0), QFontDatabase::applicationFontFamilies( QFontDatabase::addApplicationFont( - ":/font/res/fonts/YouSheYuFeiTeJianKangTi-2.ttf" + ":/font/font_family/YouSheYuFeiTeJianKangTi-2.ttf" ) ).at(0) ); QApplication::setFont(QFont(fontName, 13)); + QApplication::setWindowIcon(QIcon(":/icon/img/AppIcon.ico")); - PROJECT_NAMESPACE_NAME::MainWidget w; + MainWidget w; + w.setWindowTitle("Power Carrier"); w.show(); return a.exec(); diff --git a/qt/power_carrier/src/model/sqltablemodel.cpp b/qt/power_carrier/src/model/sqltablemodel.cpp index 69aad1f..e4bc944 100644 --- a/qt/power_carrier/src/model/sqltablemodel.cpp +++ b/qt/power_carrier/src/model/sqltablemodel.cpp @@ -1,6 +1,6 @@ #include "sqltablemodel.h" -PROJECT_USING_NAMESPACE; + SqlTableModel::SqlTableModel(QObject* parent) : QSqlQueryModel{parent} diff --git a/qt/power_carrier/src/object/comlist.cpp b/qt/power_carrier/src/object/comlist.cpp index c184a23..a8d84f9 100644 --- a/qt/power_carrier/src/object/comlist.cpp +++ b/qt/power_carrier/src/object/comlist.cpp @@ -7,7 +7,7 @@ #include -PROJECT_USING_NAMESPACE; + const QString ComList::comX("COM%1"); @@ -88,7 +88,7 @@ void ComList::setComsBox(QComboBox* comsBox) } -void power_carrier::ComList::setComPortNum(int num) +void ComList::setComPortNum(int num) { this->comPortNum = num; } diff --git a/qt/power_carrier/src/object/configurations.cpp b/qt/power_carrier/src/object/configurations.cpp index 78993ca..bab1cfb 100644 --- a/qt/power_carrier/src/object/configurations.cpp +++ b/qt/power_carrier/src/object/configurations.cpp @@ -2,7 +2,7 @@ #include -PROJECT_USING_NAMESPACE; + QSettings &Configurations::GetSettings() diff --git a/qt/power_carrier/src/object/crc16.cpp b/qt/power_carrier/src/object/crc16.cpp index 130c438..afcfbf9 100644 --- a/qt/power_carrier/src/object/crc16.cpp +++ b/qt/power_carrier/src/object/crc16.cpp @@ -1,6 +1,6 @@ #include "crc16.h" -PROJECT_USING_NAMESPACE; + CRC16::CRC16() {} diff --git a/qt/power_carrier/src/object/serialportmanager.cpp b/qt/power_carrier/src/object/serialportmanager.cpp index 41d46ba..3236188 100644 --- a/qt/power_carrier/src/object/serialportmanager.cpp +++ b/qt/power_carrier/src/object/serialportmanager.cpp @@ -16,7 +16,7 @@ #endif -PROJECT_USING_NAMESPACE; + const QString SerialPortManager::infoT("%1 (%2)"); diff --git a/qt/power_carrier/src/object/serialportworker.cpp b/qt/power_carrier/src/object/serialportworker.cpp index 9d23316..63e568d 100644 --- a/qt/power_carrier/src/object/serialportworker.cpp +++ b/qt/power_carrier/src/object/serialportworker.cpp @@ -10,7 +10,7 @@ #include "keywords.h" -PROJECT_USING_NAMESPACE; + SerialPortWorker::SerialPortWorker(QObject* parent) diff --git a/qt/power_carrier/src/widget/mainwidget.cpp b/qt/power_carrier/src/widget/mainwidget.cpp index 8b45250..931b7cf 100644 --- a/qt/power_carrier/src/widget/mainwidget.cpp +++ b/qt/power_carrier/src/widget/mainwidget.cpp @@ -12,7 +12,7 @@ #include "sqlitewidget.h" -PROJECT_USING_NAMESPACE; + MainWidget::MainWidget(QWidget* parent) diff --git a/qt/power_carrier/src/widget/serialportwidget.cpp b/qt/power_carrier/src/widget/serialportwidget.cpp index 7e8beba..eaa21d0 100644 --- a/qt/power_carrier/src/widget/serialportwidget.cpp +++ b/qt/power_carrier/src/widget/serialportwidget.cpp @@ -13,7 +13,7 @@ #include #include -PROJECT_USING_NAMESPACE; + const QString SerialPortWidget::hiddenName("> %1"); diff --git a/qt/power_carrier/src/widget/sqlitewidget.cpp b/qt/power_carrier/src/widget/sqlitewidget.cpp index 121bc2f..d2a6cc1 100644 --- a/qt/power_carrier/src/widget/sqlitewidget.cpp +++ b/qt/power_carrier/src/widget/sqlitewidget.cpp @@ -60,7 +60,7 @@ END;\ #define DB_CONNECT_2 "openDB" -PROJECT_USING_NAMESPACE; + SQLiteWidget::SQLiteWidget(QWidget* parent) @@ -491,7 +491,7 @@ void SQLiteWidget::noSlaveState(quint8 addr, quint8 word) } -void power_carrier::SQLiteWidget::InsertASlaveInfo(QStringList base, QStringList word, QStringList wtxt) +void SQLiteWidget::InsertASlaveInfo(QStringList base, QStringList word, QStringList wtxt) { auto db(QSqlDatabase::database(DB_CONNECT_2)); if(db.open())