]> Nutra Git (v1) - gamesguru/feather.git/commitdiff
contacts: move import/export to tool button
authortobtoht <tob@featherwallet.org>
Thu, 27 Mar 2025 05:06:13 +0000 (06:06 +0100)
committertobtoht <tob@featherwallet.org>
Thu, 27 Mar 2025 05:06:13 +0000 (06:06 +0100)
src/ContactsWidget.cpp
src/ContactsWidget.h
src/MainWindow.cpp
src/MainWindow.h
src/MainWindow.ui

index c6389ca27590d2e3510483bc9928fa2815d8996f..322f1c4d6878590d573599779c7a32a07fa1c5d0 100644 (file)
@@ -5,6 +5,7 @@
 #include "ui_ContactsWidget.h"
 
 #include <QMessageBox>
+#include <QFileDialog>
 
 #include "dialog/ContactsDialog.h"
 #include "model/AddressBookModel.h"
@@ -38,6 +39,9 @@ ContactsWidget::ContactsWidget(Wallet *wallet, QWidget *parent)
     m_headerMenu->addAction("New contact", [this] {
         this->newContact();
     });
+    m_headerMenu->addAction("Import CSV", this, &ContactsWidget::importCSV);
+    m_headerMenu->addAction("Export CSV", this, &ContactsWidget::exportCSV);
+    m_headerMenu->addSeparator();
     m_showFullAddressesAction = m_headerMenu->addAction("Show full addresses", this, &ContactsWidget::setShowFullAddresses);
     m_showFullAddressesAction->setCheckable(true);
 
@@ -118,6 +122,42 @@ void ContactsWidget::showHeaderMenu(const QPoint& position)
     m_headerMenu->exec(QCursor::pos());
 }
 
+void ContactsWidget::importCSV() {
+    const QString targetFile = QFileDialog::getOpenFileName(this, "Import CSV file", QDir::homePath(), "CSV Files (*.csv)");
+    if(targetFile.isEmpty()) return;
+
+    auto *model = m_wallet->addressBookModel();
+    QMapIterator<QString, QString> i(model->readCSV(targetFile));
+    int inserts = 0;
+    while (i.hasNext()) {
+        i.next();
+        bool addressValid = WalletManager::addressValid(i.value(), m_wallet->nettype());
+        if(addressValid) {
+            m_wallet->addressBook()->addRow(i.value(), i.key());
+            inserts++;
+        }
+    }
+
+    Utils::showInfo(this, "Contacts imported", QString("Total contacts imported: %1").arg(inserts));
+}
+
+void ContactsWidget::exportCSV() {
+    auto *model = m_wallet->addressBookModel();
+    if (model->rowCount() <= 0){
+        Utils::showInfo(this, "Unable to export contacts", "No contacts to export");
+        return;
+    }
+
+    const QString targetDir = QFileDialog::getExistingDirectory(this, "Select CSV output directory ", QDir::homePath(), QFileDialog::ShowDirsOnly);
+    if(targetDir.isEmpty()) return;
+
+    qint64 now = QDateTime::currentMSecsSinceEpoch();
+    QString fn = QString("%1/monero-contacts_%2.csv").arg(targetDir, QString::number(now / 1000));
+    if (model->writeCSV(fn)) {
+        Utils::showInfo(this, "Contacts exported successfully", QString("Exported to: %1").arg(fn));
+    }
+}
+
 void ContactsWidget::newContact(QString address, QString name)
 {
     ContactsDialog dialog{this, address, name};
index fa436ae1789fe5d67b0530ac28a7293f51d57907..e67bb4fed4d7b0c7ae7274d20463a728bfeb2385 100644 (file)
@@ -41,6 +41,8 @@ signals:
 
 private slots:
     void showHeaderMenu(const QPoint &position);
+    void importCSV();
+    void exportCSV();
 
 private:
     QScopedPointer<Ui::ContactsWidget> ui;
index 804adcec65b5fc91cdeab3f7de413e4d8f6b3ba7..2e0f89c76f544c64f30606b4b179c4beae21956b 100644 (file)
@@ -326,10 +326,6 @@ void MainWindow::initMenu() {
     connect(ui->actionExport_CSV, &QAction::triggered, this, &MainWindow::onExportHistoryCSV);
     connect(ui->actionImportHistoryCSV, &QAction::triggered, this, &MainWindow::onImportHistoryDescriptionsCSV);
 
-    // [Wallet] -> [Contacts]
-    connect(ui->actionExportContactsCSV, &QAction::triggered, this, &MainWindow::onExportContactsCSV);
-    connect(ui->actionImportContactsCSV, &QAction::triggered, this, &MainWindow::importContacts);
-
     // [View]
     m_tabShowHideSignalMapper = new QSignalMapper(this);
     connect(ui->actionShow_Searchbar, &QAction::toggled, this, &MainWindow::toggleSearchbar);
@@ -1340,25 +1336,6 @@ void MainWindow::onResendTransaction(const QString &txid) {
     dialog.exec();
 }
 
-void MainWindow::importContacts() {
-    const QString targetFile = QFileDialog::getOpenFileName(this, "Import CSV file", QDir::homePath(), "CSV Files (*.csv)");
-    if(targetFile.isEmpty()) return;
-
-    auto *model = m_wallet->addressBookModel();
-    QMapIterator<QString, QString> i(model->readCSV(targetFile));
-    int inserts = 0;
-    while (i.hasNext()) {
-        i.next();
-        bool addressValid = WalletManager::addressValid(i.value(), m_wallet->nettype());
-        if(addressValid) {
-            m_wallet->addressBook()->addRow(i.value(), i.key());
-            inserts++;
-        }
-    }
-
-    Utils::showInfo(this, "Contacts imported", QString("Total contacts imported: %1").arg(inserts));
-}
-
 void MainWindow::saveGeo() {
     conf()->set(Config::geometry, QString(saveGeometry().toBase64()));
     conf()->set(Config::windowState, QString(saveState().toBase64()));
@@ -1764,23 +1741,6 @@ void MainWindow::onImportHistoryDescriptionsCSV() {
     }
 }
 
-void MainWindow::onExportContactsCSV() {
-    auto *model = m_wallet->addressBookModel();
-    if (model->rowCount() <= 0){
-        Utils::showInfo(this, "Unable to export contacts", "No contacts to export");
-        return;
-    }
-
-    const QString targetDir = QFileDialog::getExistingDirectory(this, "Select CSV output directory ", QDir::homePath(), QFileDialog::ShowDirsOnly);
-    if(targetDir.isEmpty()) return;
-
-    qint64 now = QDateTime::currentMSecsSinceEpoch();
-    QString fn = QString("%1/monero-contacts_%2.csv").arg(targetDir, QString::number(now / 1000));
-    if (model->writeCSV(fn)) {
-        Utils::showInfo(this, "Contacts exported successfully", QString("Exported to: %1").arg(fn));
-    }
-}
-
 void MainWindow::onCreateDesktopEntry() {
     auto msg = Utils::xdgDesktopEntryRegister() ? "Desktop entry created" : "Desktop entry not created due to an error.";
     QMessageBox::information(this, "Desktop entry", msg);
index 037603f9f22bd9bddfc4b91fa2ede0de5b27f0d3..666c0a14c9f236b46b8196a877cfdb1be77ee2f3 100644 (file)
@@ -114,7 +114,6 @@ private slots:
     void menuClearHistoryClicked();
     void onExportHistoryCSV();
     void onImportHistoryDescriptionsCSV();
-    void onExportContactsCSV();
     void onCreateDesktopEntry();
     void onShowDocumentation();
     void onReportBug();
@@ -159,7 +158,6 @@ private slots:
     void skinChanged(const QString &skinName);
     void onViewOnBlockExplorer(const QString &txid);
     void onResendTransaction(const QString &txid);
-    void importContacts();
     void importTransaction();
     void onDeviceError(const QString &error, quint64 errorCode);
     void onDeviceButtonRequest(quint64 code);
index a7d177bc746f19781599a4a9a6aa04ef30a27a60..eced3c552c5e05f8372aec65fe0f30a7add2612f 100644 (file)
      <addaction name="actionExport_CSV"/>
      <addaction name="actionImportHistoryCSV"/>
     </widget>
-    <widget class="QMenu" name="menuContacts">
-     <property name="title">
-      <string>Contacts</string>
-     </property>
-     <addaction name="actionExportContactsCSV"/>
-     <addaction name="actionImportContactsCSV"/>
-    </widget>
     <widget class="QMenu" name="menuAdvanced">
      <property name="title">
       <string>Advanced</string>
     <addaction name="actionViewOnly"/>
     <addaction name="separator"/>
     <addaction name="menuHistory"/>
-    <addaction name="menuContacts"/>
    </widget>
    <widget class="QMenu" name="menuTools">
     <property name="title">