diff --git a/widgets/KeyDetail.cpp b/widgets/KeyDetail.cpp index 913560b6..9bf47995 100644 --- a/widgets/KeyDetail.cpp +++ b/widgets/KeyDetail.cpp @@ -24,7 +24,6 @@ KeyDetail::KeyDetail(QWidget *w) : XcaDetail(w) { setupUi(this); - keyModulus->setFont(XcaApplication::tableFont); tabWidget->setCurrentIndex(0); init("keydetail", ":keyImg"); } diff --git a/widgets/MW_menu.cpp b/widgets/MW_menu.cpp index b52c40f4..15e21b51 100644 --- a/widgets/MW_menu.cpp +++ b/widgets/MW_menu.cpp @@ -174,10 +174,14 @@ void MainWindow::init_menu() SLOT(exportIndexHierarchy())); acList += extra->addAction(tr("C&hange DataBase password"), this, SLOT(changeDbPass())); -#if 0 - acList += extra->addAction(tr("&Undelete items"), this, - SLOT(undelete())); -#endif + + extra->addSeparator(); + acList += extra->addAction(tr("Change table font"), this, + SLOT(changeTableFont())); + acList += extra->addAction(tr("Reset table font"), this, + SLOT(resetTableFont())); + extra->addSeparator(); + extra->addAction(tr("Generate DH parameter"), this, SLOT(generateDHparam())); extra->addAction(tr("OID Resolver"), resolver, SLOT(show())); diff --git a/widgets/MainWindow.cpp b/widgets/MainWindow.cpp index 4800a412..e8bea4c6 100644 --- a/widgets/MainWindow.cpp +++ b/widgets/MainWindow.cpp @@ -23,6 +23,7 @@ #include #include #include +#include #include @@ -72,6 +73,11 @@ void MainWindow::initResolver() resolver->searchOid(search); } +static QString tableFontFileName() +{ + return getUserSettingsDir() + "/tablefont"; +} + MainWindow::MainWindow() : QMainWindow() { dbindex = new QLabel(); @@ -112,6 +118,13 @@ MainWindow::MainWindow() : QMainWindow() EVP_add_digest_alias(SN_sha512,SN_ecdsa_with_SHA512); setAcceptDrops(true); + tableFont = QApplication::font(); + QFile file(tableFontFileName()); + if (file.open(QIODevice::ReadOnly)) { + QString line = QString::fromUtf8(file.readLine()).trimmed(); + bool res = tableFont.fromString(line); + qDebug() << "Table font LOAD:" << line << res; + } searchEdit = new QLineEdit(); searchEdit->setPlaceholderText(tr("Search")); @@ -126,8 +139,10 @@ MainWindow::MainWindow() : QMainWindow() pki_base::setupColors(palette()); - foreach(XcaTreeView *v, views) + foreach(XcaTreeView *v, views) { v->setMainwin(this, searchEdit); + v->setFont(tableFont); + } XcaProgress::setGui(new XcaProgressGui(this)); xcaWarning::setGui(new xcaWarningGui()); @@ -800,15 +815,17 @@ void MainWindow::keyPressEvent(QKeyEvent *e) QMainWindow::keyPressEvent(e); return; } - int size = XcaApplication::tableFont.pointSize(); + int size = tableFont.pointSize(); switch (e->key()) { case Qt::Key_Plus: - XcaApplication::tableFont.setPointSize(size +1); + tableFont.setPointSize(size +1); + updateTableFont(tableFont); break; case Qt::Key_Minus: if (size > 4) { - XcaApplication::tableFont.setPointSize(size -1); + tableFont.setPointSize(size -1); + updateTableFont(tableFont); } break; case Qt::Key_V: @@ -846,3 +863,41 @@ void MainWindow::default_database() { Database.as_default(); } + +void MainWindow::changeTableFont() +{ + QFontDialog dlg(tableFont, this); + connect(&dlg, SIGNAL(currentFontChanged(const QFont &)), + this, SLOT(updateTableFont(const QFont &))); + + if (dlg.exec() == QDialog::Accepted) + tableFont = dlg.selectedFont(); + + qDebug() << tableFont.toString(); + + QFile file(tableFontFileName()); + if (file.open(QIODevice::WriteOnly)) + file.write(tableFont.toString().toUtf8()); + + updateTableFont(tableFont); +} + +void MainWindow::resetTableFont() +{ + tableFont = QApplication::font(); + updateTableFont(tableFont); + QFile file(tableFontFileName()); + file.remove(); +} + +void MainWindow::updateTableFont(const QFont &font) +{ + qDebug() << "New Font: " << font.pointSize() << font.family() + << font.styleName(); + foreach(XcaTreeView *v, views) { + if (v) { + v->setFont(font); + v->update(); + } + } +} diff --git a/widgets/MainWindow.h b/widgets/MainWindow.h index 2ccd0276..7548e6c5 100644 --- a/widgets/MainWindow.h +++ b/widgets/MainWindow.h @@ -84,6 +84,7 @@ class MainWindow: public QMainWindow, public Ui::MainWindow NIDlist *read_nidlist(QString name); QLabel *statusLabel; QString homedir; + QFont tableFont; void keyPressEvent(QKeyEvent *e); void update_history_menu(); void showDatabaseName(); @@ -133,6 +134,9 @@ class MainWindow: public QMainWindow, public Ui::MainWindow void exportIndexHierarchy(); void openRemoteSqlDB(); void generateDHparamDone(); + void changeTableFont(); + void resetTableFont(); + void updateTableFont(const QFont &font); protected slots: void closeEvent(QCloseEvent * event); diff --git a/widgets/XcaApplication.cpp b/widgets/XcaApplication.cpp index a313a1bc..602c2aff 100644 --- a/widgets/XcaApplication.cpp +++ b/widgets/XcaApplication.cpp @@ -16,7 +16,6 @@ #include #include -QFont XcaApplication::tableFont; QList XcaApplication::langAvail; void XcaApplication::setMainwin(MainWindow *m) @@ -62,13 +61,6 @@ XcaApplication::XcaApplication(int &argc, char *argv[]) setLibraryPaths(libp); #endif - tableFont = QFont("Courier New", QApplication::font().pointSize() -#if defined (Q_OS_WIN32) - +1 -#else - +2 -#endif - ); installEventFilter(this); } diff --git a/widgets/XcaApplication.h b/widgets/XcaApplication.h index 37fdf32b..369ec042 100644 --- a/widgets/XcaApplication.h +++ b/widgets/XcaApplication.h @@ -42,7 +42,6 @@ class XcaApplication : public QApplication virtual ~XcaApplication(); void setMainwin(MainWindow *m); void setupLanguage(const QLocale &lang); - static QFont tableFont; static bool languageAvailable(const QLocale &l); bool eventFilter(QObject *watched, QEvent *ev); bool notify(QObject* receiver, QEvent* event); diff --git a/widgets/XcaTreeView.cpp b/widgets/XcaTreeView.cpp index f5034c92..3348ba21 100644 --- a/widgets/XcaTreeView.cpp +++ b/widgets/XcaTreeView.cpp @@ -56,8 +56,6 @@ XcaTreeView::XcaTreeView(QWidget *parent) connect(&throttle, SIGNAL(timeout()), proxy, SLOT(invalidate())); setFocusPolicy(Qt::StrongFocus); setExpandsOnDoubleClick(false); - - setFont(XcaApplication::tableFont); } XcaTreeView::~XcaTreeView()