mirror of
				https://git.wownero.com/wowlet/wowlet.git
				synced 2024-08-15 01:03:14 +00:00 
			
		
		
		
	Contacts: import via csv file
This commit is contained in:
		
							parent
							
								
									49f072eea4
								
							
						
					
					
						commit
						78516f4546
					
				
					 5 changed files with 51 additions and 0 deletions
				
			
		| 
						 | 
					@ -474,6 +474,8 @@ void MainWindow::initMenu() {
 | 
				
			||||||
            Utils::showMessageBox("Address book exported", QString("Address book exported to %1").arg(fn), false);
 | 
					            Utils::showMessageBox("Address book exported", QString("Address book exported to %1").arg(fn), false);
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    connect(ui->actionImportContactsCSV, &QAction::triggered, this, &MainWindow::importContacts);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Tools
 | 
					    // Tools
 | 
				
			||||||
    connect(ui->actionSignVerify, &QAction::triggered, this, &MainWindow::menuSignVerifyClicked);
 | 
					    connect(ui->actionSignVerify, &QAction::triggered, this, &MainWindow::menuSignVerifyClicked);
 | 
				
			||||||
    connect(ui->actionVerifyTxProof, &QAction::triggered, this, &MainWindow::menuVerifyTxProof);
 | 
					    connect(ui->actionVerifyTxProof, &QAction::triggered, this, &MainWindow::menuVerifyTxProof);
 | 
				
			||||||
| 
						 | 
					@ -1045,6 +1047,29 @@ void MainWindow::onAddContact(const QString &address, const QString &name) {
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void MainWindow::importContacts() {
 | 
				
			||||||
 | 
					    const QString targetFile = QFileDialog::getOpenFileName(this, "Import CSV file", QDir::homePath(), "CSV Files (*.csv)");
 | 
				
			||||||
 | 
					    if(targetFile.isEmpty()) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    auto *model = m_ctx->currentWallet->addressBookModel();
 | 
				
			||||||
 | 
					    QMapIterator<QString, QString> i(model->readCSV(targetFile));
 | 
				
			||||||
 | 
					    int inserts = 0;
 | 
				
			||||||
 | 
					    while (i.hasNext()) {
 | 
				
			||||||
 | 
					        i.next();
 | 
				
			||||||
 | 
					        bool addressValid = WalletManager::addressValid(i.value(), m_ctx->currentWallet->nettype());
 | 
				
			||||||
 | 
					        if(addressValid) {
 | 
				
			||||||
 | 
					            m_ctx->currentWallet->addressBook()->addRow(i.value(), "", i.key());
 | 
				
			||||||
 | 
					            inserts++;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if(inserts > 0) {
 | 
				
			||||||
 | 
					        m_ctx->storeWallet();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    QMessageBox::information(this, "Contacts imported", QString("Total contacts imported: %1").arg(inserts));
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
MainWindow *MainWindow::getInstance() {
 | 
					MainWindow *MainWindow::getInstance() {
 | 
				
			||||||
    return pMainWindow;
 | 
					    return pMainWindow;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -99,6 +99,7 @@ public slots:
 | 
				
			||||||
    void onWalletOpenPasswordRequired(bool invalidPassword);
 | 
					    void onWalletOpenPasswordRequired(bool invalidPassword);
 | 
				
			||||||
    void onViewOnBlockExplorer(const QString &txid);
 | 
					    void onViewOnBlockExplorer(const QString &txid);
 | 
				
			||||||
    void onAddContact(const QString &address, const QString &name);
 | 
					    void onAddContact(const QString &address, const QString &name);
 | 
				
			||||||
 | 
					    void importContacts();
 | 
				
			||||||
    void showRestoreHeightDialog();
 | 
					    void showRestoreHeightDialog();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // offline tx signing
 | 
					    // offline tx signing
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -333,6 +333,7 @@
 | 
				
			||||||
      <string>Contacts</string>
 | 
					      <string>Contacts</string>
 | 
				
			||||||
     </property>
 | 
					     </property>
 | 
				
			||||||
     <addaction name="actionExportContactsCSV"/>
 | 
					     <addaction name="actionExportContactsCSV"/>
 | 
				
			||||||
 | 
					     <addaction name="actionImportContactsCSV"/>
 | 
				
			||||||
    </widget>
 | 
					    </widget>
 | 
				
			||||||
    <widget class="QMenu" name="menuAdvanced">
 | 
					    <widget class="QMenu" name="menuAdvanced">
 | 
				
			||||||
     <property name="title">
 | 
					     <property name="title">
 | 
				
			||||||
| 
						 | 
					@ -538,6 +539,11 @@
 | 
				
			||||||
    <string>Refresh models</string>
 | 
					    <string>Refresh models</string>
 | 
				
			||||||
   </property>
 | 
					   </property>
 | 
				
			||||||
  </action>
 | 
					  </action>
 | 
				
			||||||
 | 
					  <action name="actionImportContactsCSV">
 | 
				
			||||||
 | 
					   <property name="text">
 | 
				
			||||||
 | 
					    <string>Import CSV</string>
 | 
				
			||||||
 | 
					   </property>
 | 
				
			||||||
 | 
					  </action>
 | 
				
			||||||
  <action name="actionExportContactsCSV">
 | 
					  <action name="actionExportContactsCSV">
 | 
				
			||||||
   <property name="text">
 | 
					   <property name="text">
 | 
				
			||||||
    <string>Export CSV</string>
 | 
					    <string>Export CSV</string>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -174,3 +174,21 @@ bool AddressBookModel::writeCSV(const QString &path) {
 | 
				
			||||||
    csv = QString("address,description\n%1").arg(csv);
 | 
					    csv = QString("address,description\n%1").arg(csv);
 | 
				
			||||||
    return Utils::fileWrite(path, csv);
 | 
					    return Utils::fileWrite(path, csv);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					QMap<QString, QString> AddressBookModel::readCSV(const QString &path) {
 | 
				
			||||||
 | 
					    if(!Utils::fileExists(path)) {
 | 
				
			||||||
 | 
					        return QMap<QString, QString>();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    QString csv = Utils::barrayToString(Utils::fileOpen(path));
 | 
				
			||||||
 | 
					    QTextStream stream(&csv);
 | 
				
			||||||
 | 
					    QMap<QString, QString> map;
 | 
				
			||||||
 | 
					    while(!stream.atEnd()) {
 | 
				
			||||||
 | 
					        QStringList line = stream.readLine().split(",");
 | 
				
			||||||
 | 
					        QString name = line.at(0);
 | 
				
			||||||
 | 
					        QString address = line.at(1);
 | 
				
			||||||
 | 
					        if(!name.isEmpty() && !address.isEmpty()) {
 | 
				
			||||||
 | 
					            map[name] = address;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return map;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -36,6 +36,7 @@ public:
 | 
				
			||||||
    bool isShowFullAddresses() const;
 | 
					    bool isShowFullAddresses() const;
 | 
				
			||||||
    void setShowFullAddresses(bool show);
 | 
					    void setShowFullAddresses(bool show);
 | 
				
			||||||
    bool writeCSV(const QString &path);
 | 
					    bool writeCSV(const QString &path);
 | 
				
			||||||
 | 
					    QMap<QString, QString> readCSV(const QString &path);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public slots:
 | 
					public slots:
 | 
				
			||||||
    void startReset();
 | 
					    void startReset();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue