diff --git a/cmainwindow.cpp b/cmainwindow.cpp index 0ed394b..5b2e849 100644 --- a/cmainwindow.cpp +++ b/cmainwindow.cpp @@ -21,11 +21,21 @@ cMainWindow::cMainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::cMainWindow), + m_lpMenuFile(0), + m_lpToolBarFile(0), + m_lpActionFileNew(0), + m_lpActionFileNewProject(0), + m_lpActionFileOpenProject(0), + m_lpActionFileCloseProject(0), + m_lpActionFileExport(0), + m_lpActionFileClose(0), m_lpDistributorWindow(0), m_lpPartWindow(0) { ui->setupUi(this); + createActions(); + QSettings settings; qint16 iX = settings.value("main/x", QVariant::fromValue(-1)).toInt(); qint16 iY = settings.value("main/y", QVariant::fromValue(-1)).toInt(); @@ -45,18 +55,76 @@ cMainWindow::cMainWindow(QWidget *parent) : loadPartDistributorList(); updateMenu(); - - QMenu* fileMenu = menuBar()->addMenu(tr("&Test")); - QToolBar* fileToolBar = addToolBar(tr("Test")); - const QIcon newIcon = QIcon::fromTheme("document-new", QIcon(":/images/new.png")); - QAction* newAct = new QAction(newIcon, tr("&New"), this); - newAct->setShortcuts(QKeySequence::New); - newAct->setStatusTip(tr("Create a new file")); - connect(newAct, &QAction::triggered, this, &MainWindow::newFile); - fileMenu->addAction(newAct); - fileToolBar->addAction(newAct); } +//https://specifications.freedesktop.org/icon-naming-spec/icon-naming-spec-latest.html#names +void cMainWindow::createActions() +{ + m_lpMenuFile = menuBar()->addMenu(tr("&File")); + m_lpToolBarFile = addToolBar(tr("File")); + + createAction(m_lpMenuFile, m_lpToolBarFile, &m_lpActionFileNewProject, "document-new", ":/icons/newFile.bmp", tr("&New Project..."), QKeySequence::New, tr("Create a new project"), &cMainWindow::onMenuFileNewProject); + createAction(m_lpMenuFile, m_lpToolBarFile, &m_lpActionFileOpenProject, "document-open", ":/icons/openFile.bmp", tr("&Open Project..."), QKeySequence::Open, tr("Open a project"), &cMainWindow::onMenuFileOpenProject); + createAction(m_lpMenuFile, m_lpToolBarFile, &m_lpActionFileCloseProject, "document-close", ":/icons/closeFile.bmp", tr("&Close Project..."), QKeySequence::Close, tr("Close project"), &cMainWindow::onMenuFileCloseProject); + createSeparator(m_lpMenuFile, m_lpToolBarFile); + createAction(m_lpMenuFile, m_lpToolBarFile, &m_lpActionFileExport, "document-export", ":/icons/saveRecord.bmp", tr("&Export..."), QKeySequence::UnknownKey, tr("Export project"), &cMainWindow::onMenuFileExport); + createSeparator(m_lpMenuFile, m_lpToolBarFile); + createAction(m_lpMenuFile, m_lpToolBarFile, &m_lpActionFileClose, "", "", tr("&Close"), QKeySequence::Quit, tr("Close application"), &cMainWindow::onMenuFileClose); + + m_lpMenuDistributor = menuBar()->addMenu(tr("&Distributor")); + m_lpToolBarDistributor = addToolBar(tr("Distributor")); + + createAction(m_lpMenuDistributor, m_lpToolBarDistributor, &m_lpActionDistributorShow, "", "", tr("&show..."), QKeySequence::UnknownKey, tr("Show distributor list"), &cMainWindow::onMenuDistributorShow); + createAction(m_lpMenuDistributor, m_lpToolBarDistributor, &m_lpActionDistributorAdd, "", "", tr("&add..."), QKeySequence::UnknownKey, tr("Add a new distributor"), &cMainWindow::onMenuDistributorAdd); + createAction(m_lpMenuDistributor, m_lpToolBarDistributor, &m_lpActionDistributorEdit, "", "", tr("&edit..."), QKeySequence::UnknownKey, tr("Edit a distributor"), &cMainWindow::onMenuDistributorEdit); + createAction(m_lpMenuDistributor, m_lpToolBarDistributor, &m_lpActionDistributorDelete, "", "", tr("&delete..."), QKeySequence::UnknownKey, tr("Delete a distributor"), &cMainWindow::onMenuDistributorDelete); + + +} + +/* +Parts + show... + add... + edit... + delete + + QMenu* m_lpMenuParts; + QToolBar* m_lpToolBarParts; + QAction* m_lpActionPartsShow; + QAction* m_lpActionPartsAdd; + QAction* m_lpActionPartsEdit; + QAction* m_lpActionPartsDelete; + + void onMenuPartsShow(); + void onMenuPartsAdd(); + void onMenuPartsEdit(); + void onMenuPartsDelete(); + void onMainTab_currentChanged(int); +Partlist + new... + open... + - + close + - + save + save as... + + QMenu* m_lpMenuPartlist; + QToolBar* m_lpToolBarPartlist; + QAction* m_lpPartlistNew; + QAction* m_lpPartlistOpen; + QAction* m_lpPartlistClose; + QAction* m_lpPartlistSave; + QAction* m_lpPartlistSaveAs; + + void onMenuPartlistNew(); + void onMenuPartlistOpen(); + void onMenuPartlistClose(); + void onMenuPartlistSave(); + void onMenuPartlistSaveAs(); +*/ + cMainWindow::~cMainWindow() { if(m_lpDistributorWindow) @@ -316,32 +384,32 @@ void cMainWindow::loadPartDistributorList() } } -void cMainWindow::on_m_lpMenuFileNewProject_triggered() +void cMainWindow::onMenuFileNewProject() { - + QMessageBox::information(this, "bla", "New Project"); } -void cMainWindow::on_m_lpMenuFileOpenProject_triggered() +void cMainWindow::onMenuFileOpenProject() { - + QMessageBox::information(this, "bla", "Open Project"); } -void cMainWindow::on_m_lpMenuFileCloseProject_triggered() +void cMainWindow::onMenuFileCloseProject() { - + QMessageBox::information(this, "bla", "Close Project"); } -void cMainWindow::on_m_lpMenuFileExport_triggered() +void cMainWindow::onMenuFileExport() { - + QMessageBox::information(this, "bla", "Export Project"); } -void cMainWindow::on_m_lpMenuFileClose_triggered() +void cMainWindow::onMenuFileClose() { - + QMessageBox::information(this, "bla", "Close"); } -void cMainWindow::on_m_lpMenuDistributorShow_triggered() +void cMainWindow::onMenuDistributorShow() { if(!m_lpDistributorWindow) { @@ -355,7 +423,7 @@ void cMainWindow::on_m_lpMenuDistributorShow_triggered() ui->m_lpMainTab->setCurrentWidget(m_lpDistributorWindow); } -void cMainWindow::on_m_lpMenuDistributorAdd_triggered() +void cMainWindow::onMenuDistributorAdd() { if(!m_lpDistributorWindow) return; @@ -363,7 +431,7 @@ void cMainWindow::on_m_lpMenuDistributorAdd_triggered() m_lpDistributorWindow->addDistributor(); } -void cMainWindow::on_m_lpMenuDistributorEdit_triggered() +void cMainWindow::onMenuDistributorEdit() { if(!m_lpDistributorWindow) return; @@ -371,7 +439,7 @@ void cMainWindow::on_m_lpMenuDistributorEdit_triggered() m_lpDistributorWindow->editDistributor(); } -void cMainWindow::on_m_lpMenuDistributorDelete_triggered() +void cMainWindow::onMenuDistributorDelete() { if(!m_lpDistributorWindow) return; @@ -379,7 +447,7 @@ void cMainWindow::on_m_lpMenuDistributorDelete_triggered() m_lpDistributorWindow->deleteDistributor(); } -void cMainWindow::on_m_lpMenuPartsShow_triggered() +void cMainWindow::onMenuPartsShow() { if(!m_lpPartWindow) { @@ -393,7 +461,7 @@ void cMainWindow::on_m_lpMenuPartsShow_triggered() ui->m_lpMainTab->setCurrentWidget(m_lpPartWindow); } -void cMainWindow::on_m_lpMenuPartsAdd_triggered() +void cMainWindow::onMenuPartsAdd() { if(!m_lpPartWindow) return; @@ -401,7 +469,7 @@ void cMainWindow::on_m_lpMenuPartsAdd_triggered() m_lpPartWindow->addPart(); } -void cMainWindow::on_m_lpMenuPartsEdit_triggered() +void cMainWindow::onMenuPartsEdit() { if(!m_lpPartWindow) return; @@ -409,7 +477,7 @@ void cMainWindow::on_m_lpMenuPartsEdit_triggered() m_lpPartWindow->editPart(); } -void cMainWindow::on_m_lpMenuPartsDelete_triggered() +void cMainWindow::onMenuPartsDelete() { if(!m_lpPartWindow) return; @@ -550,7 +618,7 @@ void cMainWindow::partChanged(cPart* /*lpPart*/) loadPartDistributorList(); } -void cMainWindow::on_m_lpMenuPartlistNew_triggered() +void cMainWindow::onMenuPartlistNew() { QList newList; @@ -601,7 +669,7 @@ void cMainWindow::on_m_lpMenuPartlistNew_triggered() connect(lpNew, SIGNAL(partlistChanged(QWidget*)), this, SLOT(partlistChanged(QWidget*))); } -void cMainWindow::on_m_lpMenuPartlistOpen_triggered() +void cMainWindow::onMenuPartlistOpen() { QStringList szList; QSqlQuery query; @@ -654,7 +722,7 @@ void cMainWindow::on_m_lpMenuPartlistOpen_triggered() } } -void cMainWindow::on_m_lpMenuPartlistClose_triggered() +void cMainWindow::onMenuPartlistClose() { cPartlistWindow* lpPartlistWindow = qobject_cast(ui->m_lpMainTab->widget(ui->m_lpMainTab->currentIndex())); @@ -665,7 +733,7 @@ void cMainWindow::on_m_lpMenuPartlistClose_triggered() ui->m_lpMainTab->removeTab(ui->m_lpMainTab->currentIndex()); } -void cMainWindow::on_m_lpMenuPartlistSave_triggered() +void cMainWindow::onMenuPartlistSave() { cPartlistWindow* lpPartlistWindow = qobject_cast(ui->m_lpMainTab->widget(ui->m_lpMainTab->currentIndex())); @@ -675,7 +743,7 @@ void cMainWindow::on_m_lpMenuPartlistSave_triggered() lpPartlistWindow->save(); } -void cMainWindow::on_m_lpMenuPartlistSaveAs_triggered() +void cMainWindow::onMenuPartlistSaveAs() { cPartlistWindow* lpPartlistWindow = qobject_cast(ui->m_lpMainTab->widget(ui->m_lpMainTab->currentIndex())); diff --git a/cmainwindow.h b/cmainwindow.h index 9d0551c..e8b618b 100644 --- a/cmainwindow.h +++ b/cmainwindow.h @@ -16,6 +16,11 @@ #include +#include +#include +#include +#include + namespace Ui { class cMainWindow; @@ -31,6 +36,38 @@ public: private: Ui::cMainWindow* ui; + + QMenu* m_lpMenuFile; + QToolBar* m_lpToolBarFile; + QAction* m_lpActionFileNew; + QAction* m_lpActionFileNewProject; + QAction* m_lpActionFileOpenProject; + QAction* m_lpActionFileCloseProject; + QAction* m_lpActionFileExport; + QAction* m_lpActionFileClose; + + QMenu* m_lpMenuDistributor; + QToolBar* m_lpToolBarDistributor; + QAction* m_lpActionDistributorShow; + QAction* m_lpActionDistributorAdd; + QAction* m_lpActionDistributorEdit; + QAction* m_lpActionDistributorDelete; + + QMenu* m_lpMenuParts; + QToolBar* m_lpToolBarParts; + QAction* m_lpActionPartsShow; + QAction* m_lpActionPartsAdd; + QAction* m_lpActionPartsEdit; + QAction* m_lpActionPartsDelete; + + QMenu* m_lpMenuPartlist; + QToolBar* m_lpToolBarPartlist; + QAction* m_lpPartlistNew; + QAction* m_lpPartlistOpen; + QAction* m_lpPartlistClose; + QAction* m_lpPartlistSave; + QAction* m_lpPartlistSaveAs; + QSqlDatabase m_db; cDistributorList m_distributorList; cPartGroupList m_partGroupList; @@ -40,6 +77,34 @@ private: cDistributorWindow* m_lpDistributorWindow; cPartWindow* m_lpPartWindow; + void createActions(); + template + void createAction(QMenu* lpMenu, QToolBar* lpToolbar, QAction** lplpAction, const QString& szIcon, const QString& szIconFallback, const QString& szAction, QKeySequence::StandardKey sequence, const QString& szStatusTip, Func2 method) + { + if(szIcon.isEmpty() && szIconFallback.isEmpty()) + { + (*lplpAction) = new QAction(szAction, this); + (*lplpAction)->setShortcuts(sequence); + (*lplpAction)->setStatusTip(szStatusTip); + lpMenu->addAction((*lplpAction)); + } + else + { + const QIcon newIcon = QIcon::fromTheme(szIcon, QIcon(szIconFallback)); + (*lplpAction) = new QAction(newIcon, szAction, this); + (*lplpAction)->setShortcuts(sequence); + (*lplpAction)->setStatusTip(szStatusTip); + lpMenu->addAction((*lplpAction)); + lpToolbar->addAction((*lplpAction)); + } + connect((*lplpAction), &QAction::triggered, this, method); + } + void createSeparator(QMenu* lpMenu, QToolBar* lpToolbar) + { + lpMenu->addSeparator(); + lpToolbar->addSeparator(); + } + void initDB(); void loadDistributorList(); void loadPartGroupList(); @@ -50,21 +115,28 @@ private: protected: void closeEvent(QCloseEvent *event); private slots: - void on_m_lpMenuFileNewProject_triggered(); - void on_m_lpMenuFileOpenProject_triggered(); - void on_m_lpMenuFileCloseProject_triggered(); - void on_m_lpMenuFileExport_triggered(); - void on_m_lpMenuFileClose_triggered(); + void onMenuFileNewProject(); + void onMenuFileOpenProject(); + void onMenuFileCloseProject(); + void onMenuFileExport(); + void onMenuFileClose(); - void on_m_lpMenuDistributorShow_triggered(); - void on_m_lpMenuDistributorAdd_triggered(); - void on_m_lpMenuDistributorEdit_triggered(); - void on_m_lpMenuDistributorDelete_triggered(); + void onMenuDistributorShow(); + void onMenuDistributorAdd(); + void onMenuDistributorEdit(); + void onMenuDistributorDelete(); + + void onMenuPartsShow(); + void onMenuPartsAdd(); + void onMenuPartsEdit(); + void onMenuPartsDelete(); + + void onMenuPartlistNew(); + void onMenuPartlistOpen(); + void onMenuPartlistClose(); + void onMenuPartlistSave(); + void onMenuPartlistSaveAs(); - void on_m_lpMenuPartsShow_triggered(); - void on_m_lpMenuPartsAdd_triggered(); - void on_m_lpMenuPartsEdit_triggered(); - void on_m_lpMenuPartsDelete_triggered(); void on_m_lpMainTab_currentChanged(int); void distributorSelectionChanged(const QModelIndex& index); @@ -75,12 +147,6 @@ private slots: void partChanged(cPart* lpPart); void partlistChanged(QWidget* lpWidget); - - void on_m_lpMenuPartlistNew_triggered(); - void on_m_lpMenuPartlistOpen_triggered(); - void on_m_lpMenuPartlistClose_triggered(); - void on_m_lpMenuPartlistSave_triggered(); - void on_m_lpMenuPartlistSaveAs_triggered(); }; #endif // CMAINWINDOW_H diff --git a/cmainwindow.ui b/cmainwindow.ui index 33c5621..473b0fe 100644 --- a/cmainwindow.ui +++ b/cmainwindow.ui @@ -36,61 +36,6 @@ 21 - - - &File - - - - - - - - - - - - - &Distributor - - - - - - - - - &Parts - - - - - - - - - Part&list - - - - - - - - - - - - - - - - - TopToolBarArea - - - false - @@ -107,6 +52,10 @@ + + + :/icons/indentGuide_off.ico:/icons/indentGuide_off.ico + &New Project... @@ -196,6 +145,8 @@ - + + + diff --git a/qtPartlist.pro b/qtPartlist.pro index 31f0f4f..1ebec70 100644 --- a/qtPartlist.pro +++ b/qtPartlist.pro @@ -64,3 +64,6 @@ FORMS += \ cdistributoreditdialog.ui \ cparteditdialog.ui \ cpartdistributoreditdialog.ui + +RESOURCES += \ + qtpartlist.qrc diff --git a/qtpartlist.qrc b/qtpartlist.qrc new file mode 100644 index 0000000..e8d5d22 --- /dev/null +++ b/qtpartlist.qrc @@ -0,0 +1,139 @@ + + + icons/asciiPanel.ico + icons/chameleon.ico + icons/clipboardPanel.ico + icons/closeAll.bmp + icons/closeFile.bmp + icons/closeTabButton.bmp + icons/closeTabButton_hover.bmp + icons/closeTabButton_inact.bmp + icons/closeTabButton_push.bmp + icons/copy.bmp + icons/cut.bmp + icons/cut_dis.ico + icons/cut_off.ico + icons/cut_on.ico + icons/delete.ico + icons/docMap.bmp + icons/docMap.ico + icons/docSwitcher.ico + icons/dupli_dis.ico + icons/dupli_off.ico + icons/dupli_on.ico + icons/fb_root_close.bmp + icons/fb_root_open.bmp + icons/fileBrowser.bmp + icons/fileBrowser.ico + icons/fileMonitoring.bmp + icons/find.bmp + icons/find_off.ico + icons/find_on.ico + icons/findrep_off.ico + icons/findrep_on.ico + icons/findReplace.bmp + icons/findResult.ico + icons/funcList_leaf.bmp + icons/funcList_node.bmp + icons/funclstReload.bmp + icons/funclstSort.bmp + icons/functionList.bmp + icons/functionList.ico + icons/imprim_off.ico + icons/imprim_on.ico + icons/incrementalBg.bmp + icons/indentGuide.bmp + icons/indentGuide_off.ico + icons/indentGuide_on.ico + icons/invisibleChar.bmp + icons/monitoring.ico + icons/new_off.ico + icons/new_on.ico + icons/newFile.bmp + icons/npp.ico + icons/nppNewIcon.ico + icons/open_off.ico + icons/open_on.ico + icons/openFile.bmp + icons/paste.bmp + icons/paste_dis.ico + icons/paste_off.ico + icons/paste_on.ico + icons/playRecord.bmp + icons/playrecord_dis.ico + icons/playRecord_m.bmp + icons/playrecord_m_dis.ico + icons/playrecord_m_off.ico + icons/playrecord_m_on.ico + icons/playrecord_off.ico + icons/playrecord_on.ico + icons/print.bmp + icons/project_file.bmp + icons/project_file_invalid.bmp + icons/project_folder_close.bmp + icons/project_folder_open.bmp + icons/project_root.bmp + icons/project_work_space.bmp + icons/project_work_space_dirty.bmp + icons/projectPanel.ico + icons/readonly.ico + icons/readonly.ico.old + icons/redo.bmp + icons/redo_dis.ico + icons/redo_off.ico + icons/redo_on.ico + icons/save_dis.ico + icons/save_off.ico + icons/save_on.ico + icons/saveAll.bmp + icons/saveall_dis.ico + icons/saveall_off.ico + icons/saveall_on.ico + icons/saved.ico + icons/saved.ico.old + icons/saveFile.bmp + icons/saveRecord.bmp + icons/saverecord_dis.ico + icons/saverecord_off.ico + icons/saverecord_on.ico + icons/showPannel.bmp + icons/startRecord.bmp + icons/startrecord_dis.ico + icons/startrecord_off.ico + icons/startrecord_on.ico + icons/stopRecord.bmp + icons/stoprecord_dis.ico + icons/stoprecord_off.ico + icons/stoprecord_on.ico + icons/supp_off.ico + icons/supp_on.ico + icons/suppall_off.ico + icons/suppall_on.ico + icons/syncH.bmp + icons/syncH_dis.ico + icons/syncH_off.ico + icons/syncH_on.ico + icons/syncV.bmp + icons/syncV_dis.ico + icons/syncV_off.ico + icons/syncV_on.ico + icons/undo.bmp + icons/undo_dis.ico + icons/undo_off.ico + icons/undo_on.ico + icons/unsaved.ico + icons/unsaved.ico.old + icons/userDefineDlg_off.ico + icons/userDefineDlg_on.ico + icons/wrap.bmp + icons/wrap_dis.ico + icons/wrap_off.ico + icons/wrap_on.ico + icons/zoomIn.bmp + icons/zoomIn_off.ico + icons/zoomIn_on.ico + icons/zoomOut.bmp + icons/zoomOut_off.ico + icons/zoomOut_on.ico + +