#include "ui_ContactsWidget.h"
#include <QMessageBox>
+#include <QFileDialog>
#include "dialog/ContactsDialog.h"
#include "model/AddressBookModel.h"
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);
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};
private slots:
void showHeaderMenu(const QPoint &position);
+ void importCSV();
+ void exportCSV();
private:
QScopedPointer<Ui::ContactsWidget> ui;
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);
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()));
}
}
-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);
void menuClearHistoryClicked();
void onExportHistoryCSV();
void onImportHistoryDescriptionsCSV();
- void onExportContactsCSV();
void onCreateDesktopEntry();
void onShowDocumentation();
void onReportBug();
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);
<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">