Author: mir3x Date: Thu Sep 1 18:38:03 2016 New Revision: 33739 URL: http://svn.gna.org/viewcvs/freeciv?rev=33739&view=rev Log: Qt client - Use new font system in self-drawing classes Patch by Louis Moureaux <louis94>
See patch #7662 Modified: trunk/client/gui-qt/dialogs.cpp trunk/client/gui-qt/dialogs.h trunk/client/gui-qt/fc_client.cpp trunk/client/gui-qt/fc_client.h trunk/client/gui-qt/gui_main.cpp trunk/client/gui-qt/mapview.cpp trunk/client/gui-qt/mapview.h Modified: trunk/client/gui-qt/dialogs.cpp URL: http://svn.gna.org/viewcvs/freeciv/trunk/client/gui-qt/dialogs.cpp?rev=33739&r1=33738&r2=33739&view=diff ============================================================================== --- trunk/client/gui-qt/dialogs.cpp (original) +++ trunk/client/gui-qt/dialogs.cpp Thu Sep 1 18:38:03 2016 @@ -641,7 +641,7 @@ qheadline = QString(headline); qlines = QString(lines); qlist = qlines.split("\n"); - small_font =::gui()->fc_fonts.get_font("gui_qt_font_notify_label"); + small_font = get_font(fonts::notify_label); x = 0; y = 0; calc_size(x, y); @@ -650,6 +650,8 @@ x, y, x, y, 0); move(x, y); was_destroyed = false; + + font_options_listener::listen(); } /*************************************************************************** @@ -657,7 +659,7 @@ ***************************************************************************/ void notify_dialog::calc_size(int &x, int &y) { - QFontMetrics fm(*small_font); + QFontMetrics fm(small_font); int i; QStringList str_list; @@ -672,6 +674,15 @@ } /*************************************************************************** + Change the fonts when needed +***************************************************************************/ +void notify_dialog::update_font(const QString &name, const QFont &font) +{ + // FIXME Updating fonts isn't practical because the size of the widget + // will change -> its position too. +} + +/*************************************************************************** Paint Event for notify dialog ***************************************************************************/ void notify_dialog::paintEvent(QPaintEvent * paint_event) @@ -679,14 +690,14 @@ QPainter painter(this); QPainterPath path; QPen pen; - QFontMetrics fm(*small_font); + QFontMetrics fm(small_font); int i; pen.setWidth(1); pen.setColor(QColor(232, 255, 0)); painter.setBrush(QColor(0, 0, 0, 175)); painter.drawRect(0, 0, width(), height()); - painter.setFont(*small_font); + painter.setFont(small_font); painter.setPen(pen); painter.drawText(10, fm.height() + 3, qcaption); painter.drawText(10, 2 * fm.height() + 6, qheadline); @@ -2716,9 +2727,8 @@ pix = NULL; show_line = 0; highligh_num = -1; - ufont = new QFont; - ufont->setItalic(true); - info_font = gui()->fc_fonts.get_font("gui_qt_font_notify_label"); + ufont.setItalic(true); + info_font = get_font(fonts::notify_label); update_units(); h_pix = NULL; create_pixmap(); @@ -2735,6 +2745,8 @@ } move(final_p.x(), final_p.y() - height()); setFocus(); + + font_options_listener::listen(); } /**************************************************************** Destructor for unit select @@ -2743,7 +2755,6 @@ { delete h_pix; delete pix; - delete ufont; delete cw; } @@ -2762,7 +2773,7 @@ int rate, f; int a; QPen pen; - QFontMetrics fm(*info_font); + QFontMetrics fm(info_font); if (pix != NULL) { delete pix; @@ -2804,8 +2815,8 @@ a = qMin(item_size.width() / 4, 12); x = 0, y = -item_size.height(), i = -1; p.begin(pix); - ufont->setPixelSize(a); - p.setFont(*ufont); + ufont.setPixelSize(a); + p.setFont(ufont); pen.setColor(QColor(232, 255, 0)); p.setPen(pen); @@ -2853,7 +2864,7 @@ { int a, b; int old_h; - QFontMetrics fm(*info_font); + QFontMetrics fm(info_font); old_h = highligh_num; highligh_num = -1; @@ -2903,14 +2914,14 @@ *****************************************************************/ void unit_select::paint(QPainter *painter, QPaintEvent *event) { - QFontMetrics fm(*info_font); + QFontMetrics fm(info_font); int h, i; int *f_size; QPen pen; QString str, str2; struct unit *punit; - int point_size = info_font->pointSize(); - int pixel_size = info_font->pixelSize(); + int point_size = info_font.pointSize(); + int pixel_size = info_font.pixelSize(); if (point_size < 0) { f_size = &pixel_size; @@ -2929,11 +2940,11 @@ .arg(unit_list_size(utile->units)); for (i = *f_size; i > 4; i--) { if (point_size < 0) { - info_font->setPixelSize(i); + info_font.setPixelSize(i); } else { - info_font->setPointSize(i); - } - QFontMetrics qfm(*info_font); + info_font.setPointSize(i); + } + QFontMetrics qfm(info_font); if (10 + qfm.width(str2) < width()) { break; } @@ -2945,16 +2956,16 @@ painter->drawPixmap(10, h + 3, *pix); pen.setColor(QColor(232, 255, 0)); painter->setPen(pen); - painter->setFont(*info_font); + painter->setFont(info_font); painter->drawText(10, h, str); if (highligh_num != -1 && highligh_num < unit_list.count()) { painter->drawText(10, height() - 5, str2); } } if (point_size < 0) { - info_font->setPixelSize(*f_size); + info_font.setPixelSize(*f_size); } else { - info_font->setPointSize(*f_size); + info_font.setPointSize(*f_size); } cw->put_to_corner(); } @@ -3058,6 +3069,15 @@ } /*************************************************************************** + Change the fonts when needed +***************************************************************************/ +void unit_select::update_font(const QString& name, const QFont& font) +{ + // FIXME Updating fonts isn't practical because the size of the widget + // will change -> its position too. +} + +/*************************************************************************** Set current diplo dialog ***************************************************************************/ void fc_client::set_diplo_dialog(choice_dialog *widget) Modified: trunk/client/gui-qt/dialogs.h URL: http://svn.gna.org/viewcvs/freeciv/trunk/client/gui-qt/dialogs.h?rev=33739&r1=33738&r2=33739&view=diff ============================================================================== --- trunk/client/gui-qt/dialogs.h (original) +++ trunk/client/gui-qt/dialogs.h Thu Sep 1 18:38:03 2016 @@ -28,6 +28,7 @@ #include <QVariant> // gui-qt +#include "fonts.h" #include "mapview.h" class QComboBox; @@ -127,7 +128,7 @@ Widget around map view to display informations like demographics report, top 5 cities, traveler's report. ***************************************************************************/ -class notify_dialog:public fcwidget +class notify_dialog:public fcwidget, private font_options_listener { Q_OBJECT public: @@ -140,6 +141,7 @@ void mouseMoveEvent(QMouseEvent *event); void mouseReleaseEvent(QMouseEvent *event); private: + void update_font(const QString &name, const QFont &font); void paintEvent(QPaintEvent *paint_event); void calc_size(int &x, int&y); close_widget *cw; @@ -148,7 +150,7 @@ QString qcaption; QString qheadline; QStringList qlist; - QFont *small_font; + QFont small_font; QPoint cursor; }; @@ -157,7 +159,7 @@ TODO Add some simple scrollbars (just paint it during paint event, if 'more' is true->scroll visible and would depend on show_line ***************************************************************************/ -class unit_select: public fcwidget +class unit_select: public fcwidget, private font_options_listener { Q_OBJECT QPixmap *pix; @@ -165,8 +167,8 @@ QSize item_size; /** size of each pixmap of unit */ QList<unit*> unit_list; /** storing units only for drawing, for rest units * iterate utile->units */ - QFont *ufont; - QFont *info_font; + QFont ufont; + QFont info_font; int row_count; close_widget *cw; public: @@ -185,6 +187,8 @@ void wheelEvent(QWheelEvent *event); void closeEvent(QCloseEvent *event); private: + void update_font(const QString &name, const QFont &font); + bool more; int show_line; int highligh_num; Modified: trunk/client/gui-qt/fc_client.cpp URL: http://svn.gna.org/viewcvs/freeciv/trunk/client/gui-qt/fc_client.cpp?rev=33739&r1=33738&r2=33739&view=diff ============================================================================== --- trunk/client/gui-qt/fc_client.cpp (original) +++ trunk/client/gui-qt/fc_client.cpp Thu Sep 1 18:38:03 2016 @@ -112,6 +112,8 @@ ****************************************************************************/ void fc_client::init() { + QApplication::setFont(get_font(fonts::default_font)); + QString path; central_wdg = new QWidget; central_layout = new QStackedLayout; @@ -189,6 +191,7 @@ game_tab_widget->init(); chat_listener::listen(); + font_options_listener::listen(); } /**************************************************************************** @@ -259,6 +262,16 @@ output_window->append(str); output_window->verticalScrollBar()->setSliderPosition( output_window->verticalScrollBar()->maximum()); + } +} + +/**************************************************************************** + Updates the application's default font when it changes +****************************************************************************/ +void fc_client::update_font(const QString &name, const QFont &font) +{ + if (name == fonts::default_font) { + QApplication::setFont(font); } } Modified: trunk/client/gui-qt/fc_client.h URL: http://svn.gna.org/viewcvs/freeciv/trunk/client/gui-qt/fc_client.h?rev=33739&r1=33738&r2=33739&view=diff ============================================================================== --- trunk/client/gui-qt/fc_client.h (original) +++ trunk/client/gui-qt/fc_client.h Thu Sep 1 18:38:03 2016 @@ -45,6 +45,7 @@ #include "canvas.h" #include "chatline.h" #include "dialogs.h" +#include "fonts.h" #include "gotodlg.h" #include "mapview.h" #include "messagewin.h" @@ -157,7 +158,9 @@ }; -class fc_client : public QMainWindow, private chat_listener +class fc_client : public QMainWindow, + private chat_listener, + private font_options_listener { Q_OBJECT QWidget *main_wdg; @@ -307,6 +310,7 @@ private: void chat_message_received(const QString &message, const struct text_tag_list *tags); + void update_font(const QString &name, const QFont &font); void create_main_page(); void create_network_page(); Modified: trunk/client/gui-qt/gui_main.cpp URL: http://svn.gna.org/viewcvs/freeciv/trunk/client/gui-qt/gui_main.cpp?rev=33739&r1=33738&r2=33739&view=diff ============================================================================== --- trunk/client/gui-qt/gui_main.cpp (original) +++ trunk/client/gui-qt/gui_main.cpp Thu Sep 1 18:38:03 2016 @@ -211,6 +211,8 @@ apply_font); option_var_set_callback(gui_qt_font_default, apply_font); + option_var_set_callback(gui_qt_font_notify_label, + apply_font); option_var_set_callback(gui_qt_font_city_productions, apply_font); option_var_set_callback(gui_qt_font_reqtree_text, Modified: trunk/client/gui-qt/mapview.cpp URL: http://svn.gna.org/viewcvs/freeciv/trunk/client/gui-qt/mapview.cpp?rev=33739&r1=33738&r2=33739&view=diff ============================================================================== --- trunk/client/gui-qt/mapview.cpp (original) +++ trunk/client/gui-qt/mapview.cpp Thu Sep 1 18:38:03 2016 @@ -1305,7 +1305,7 @@ info_tile::info_tile(struct tile *ptile, QWidget *parent): QLabel(parent) { setParent(parent); - info_font = gui()->fc_fonts.get_font("gui_qt_font_comment_label"); + info_font = get_font(fonts::comment_label); itile = ptile; calc_size(); } @@ -1315,7 +1315,7 @@ **************************************************************************/ void info_tile::calc_size() { - QFontMetrics fm(*info_font); + QFontMetrics fm(info_font); QString str; int hh = tileset_tile_height(tileset); int fin_x; @@ -1352,7 +1352,7 @@ void info_tile::paint(QPainter *painter, QPaintEvent *event) { QPen pen; - QFontMetrics fm(*info_font); + QFontMetrics fm(info_font); int pos, h; h = fm.height(); @@ -1362,7 +1362,7 @@ painter->setBrush(QColor(0, 0, 0, 205)); painter->drawRect(0, 0, width(), height()); painter->setPen(pen); - painter->setFont(*info_font); + painter->setFont(info_font); for (int i = 0; i < str_list.count(); i++) { painter->drawText(5, pos, str_list.at(i)); pos = pos + 5 + h; @@ -1380,3 +1380,15 @@ paint(&painter, event); painter.end(); } + +/************************************************************************** + Updates fonts +**************************************************************************/ +void info_tile::update_font(const QString &name, const QFont &font) +{ + if (name == fonts::comment_label) { + info_font = font; + calc_size(); + update(); + } +} Modified: trunk/client/gui-qt/mapview.h URL: http://svn.gna.org/viewcvs/freeciv/trunk/client/gui-qt/mapview.h?rev=33739&r1=33738&r2=33739&view=diff ============================================================================== --- trunk/client/gui-qt/mapview.h (original) +++ trunk/client/gui-qt/mapview.h Thu Sep 1 18:38:03 2016 @@ -148,10 +148,10 @@ /************************************************************************** Information label about clicked tile **************************************************************************/ -class info_tile: public QLabel -{ - Q_OBJECT - QFont *info_font; +class info_tile: public QLabel, private font_options_listener +{ + Q_OBJECT + QFont info_font; public: info_tile(struct tile *ptile, QWidget *parent = 0); struct tile *itile; @@ -161,6 +161,7 @@ private: QStringList str_list; void calc_size(); + void update_font(const QString &name, const QFont &font); }; /************************************************************************** _______________________________________________ Freeciv-commits mailing list Freeciv-commits@gna.org https://mail.gna.org/listinfo/freeciv-commits