Add expanded style sheet support
Allow lobby fonts to happen
This commit is contained in:
		
							parent
							
								
									6785f35762
								
							
						
					
					
						commit
						03ebad6bb6
					
				@ -252,6 +252,9 @@ public:
 | 
			
		||||
  //Returns a QStringList of all key=value definitions on a given tag.
 | 
			
		||||
  QStringList read_char_ini_tag(QString p_char, QString target_tag);
 | 
			
		||||
 | 
			
		||||
  //Returns the text between target_tag and terminator_tag in p_file
 | 
			
		||||
  QString get_stylesheet(QString target_tag, QString p_file);
 | 
			
		||||
 | 
			
		||||
  //Returns the side of the p_char character from that characters ini file
 | 
			
		||||
  QString get_char_side(QString p_char);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -122,6 +122,12 @@ public:
 | 
			
		||||
  //helper function that calls above function on the relevant widgets
 | 
			
		||||
  void set_fonts();
 | 
			
		||||
 | 
			
		||||
  //sets dropdown menu stylesheet
 | 
			
		||||
  void set_dropdown(QWidget *widget, QString target_tag);
 | 
			
		||||
 | 
			
		||||
  //helper funciton that call above function on the relevant widgets
 | 
			
		||||
  void set_dropdowns();
 | 
			
		||||
 | 
			
		||||
  void set_window_title(QString p_title);
 | 
			
		||||
 | 
			
		||||
  //reads theme inis and sets size and pos based on the identifier
 | 
			
		||||
 | 
			
		||||
@ -32,6 +32,10 @@ public:
 | 
			
		||||
  void append_chatmessage(QString f_name, QString f_message);
 | 
			
		||||
  void append_error(QString f_message);
 | 
			
		||||
  void set_player_count(int players_online, int max_players);
 | 
			
		||||
  void set_stylesheet(QWidget *widget, QString target_tag);
 | 
			
		||||
  void set_stylesheets();
 | 
			
		||||
  void set_fonts();
 | 
			
		||||
  void set_font(QWidget *widget, QString p_identifier);
 | 
			
		||||
  void set_loading_text(QString p_text);
 | 
			
		||||
  void show_loading_overlay(){ui_loading_background->show();}
 | 
			
		||||
  void hide_loading_overlay(){ui_loading_background->hide();}
 | 
			
		||||
 | 
			
		||||
@ -709,6 +709,8 @@ void Courtroom::set_widgets()
 | 
			
		||||
  ui_char_select_right->set_image("arrow_right.png");
 | 
			
		||||
 | 
			
		||||
  set_size_and_pos(ui_spectator, "spectator");
 | 
			
		||||
 | 
			
		||||
  set_dropdowns();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Courtroom::set_fonts()
 | 
			
		||||
@ -719,7 +721,7 @@ void Courtroom::set_fonts()
 | 
			
		||||
  set_font(ui_ms_chatlog, "ms_chatlog");
 | 
			
		||||
  set_font(ui_server_chatlog, "server_chatlog");
 | 
			
		||||
  set_font(ui_music_list, "music_list");
 | 
			
		||||
  set_font(ui_area_list, "music_list");
 | 
			
		||||
  set_font(ui_area_list, "area_list");
 | 
			
		||||
 | 
			
		||||
  // Set color of labels and checkboxes
 | 
			
		||||
  const QString design_file = "courtroom_fonts.ini";
 | 
			
		||||
@ -739,21 +741,43 @@ void Courtroom::set_font(QWidget *widget, QString p_identifier)
 | 
			
		||||
  int f_weight = ao_app->get_font_size(p_identifier, design_file);
 | 
			
		||||
  QString class_name = widget->metaObject()->className();
 | 
			
		||||
 | 
			
		||||
  QString fontt = ao_app->get_font_name(p_identifier + "_font", design_file);
 | 
			
		||||
   widget->setFont(QFont(fontt, f_weight));
 | 
			
		||||
  QString font_name = ao_app->get_font_name(p_identifier + "_font", design_file);
 | 
			
		||||
 | 
			
		||||
  widget->setFont(QFont(font_name, f_weight));
 | 
			
		||||
 | 
			
		||||
  QColor f_color = ao_app->get_color(p_identifier + "_color", design_file);
 | 
			
		||||
 | 
			
		||||
  int bold = ao_app->get_font_size(p_identifier + "_bold", design_file); // is the font bold or not?
 | 
			
		||||
 | 
			
		||||
  QString is_bold = "";
 | 
			
		||||
  if(bold == 1) is_bold = "bold";
 | 
			
		||||
 | 
			
		||||
  QString style_sheet_string = class_name + " { background-color: rgba(0, 0, 0, 0);\n" +
 | 
			
		||||
                                            "color: rgba(" +
 | 
			
		||||
                                             QString::number(f_color.red()) + ", " +
 | 
			
		||||
                                             QString::number(f_color.green()) + ", " +
 | 
			
		||||
                                             QString::number(f_color.blue()) + ", 255); }";
 | 
			
		||||
                               "color: rgba(" +
 | 
			
		||||
                               QString::number(f_color.red()) + ", " +
 | 
			
		||||
                               QString::number(f_color.green()) + ", " +
 | 
			
		||||
                               QString::number(f_color.blue()) + ", 255);\n"
 | 
			
		||||
                                                                 "font: " + is_bold + "; }";
 | 
			
		||||
 | 
			
		||||
  widget->setStyleSheet(style_sheet_string);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Courtroom::set_dropdown(QWidget *widget, QString target_tag)
 | 
			
		||||
{
 | 
			
		||||
  QString f_file = "courtroom_stylesheets.css";
 | 
			
		||||
  QString style_sheet_string = ao_app->get_stylesheet(target_tag, f_file);
 | 
			
		||||
  if (style_sheet_string != "")
 | 
			
		||||
    widget->setStyleSheet(style_sheet_string);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Courtroom::set_dropdowns()
 | 
			
		||||
{
 | 
			
		||||
  set_dropdown(ui_text_color, "[TEXT COLOR]");
 | 
			
		||||
  set_dropdown(ui_pos_dropdown, "[POS DROPDOWN]");
 | 
			
		||||
  set_dropdown(ui_emote_dropdown, "[EMOTE DROPDOWN]");
 | 
			
		||||
  set_dropdown(ui_mute_list, "[MUTE LIST]");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Courtroom::set_window_title(QString p_title)
 | 
			
		||||
{
 | 
			
		||||
  this->setWindowTitle(p_title);
 | 
			
		||||
 | 
			
		||||
@ -153,6 +153,8 @@ void Lobby::set_widgets()
 | 
			
		||||
 | 
			
		||||
  ui_loading_background->hide();
 | 
			
		||||
 | 
			
		||||
  set_fonts();
 | 
			
		||||
  set_stylesheets();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Lobby::set_size_and_pos(QWidget *p_widget, QString p_identifier)
 | 
			
		||||
@ -173,6 +175,66 @@ void Lobby::set_size_and_pos(QWidget *p_widget, QString p_identifier)
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Lobby::set_fonts()
 | 
			
		||||
{
 | 
			
		||||
    set_font(ui_player_count, "player_count");
 | 
			
		||||
    set_font(ui_description, "description");
 | 
			
		||||
    set_font(ui_chatbox, "chatbox");
 | 
			
		||||
    set_font(ui_chatname, "chatname");
 | 
			
		||||
    set_font(ui_chatmessage, "chatmessage");
 | 
			
		||||
    set_font(ui_loading_text, "loading_text");
 | 
			
		||||
    set_font(ui_server_list, "server_list");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Lobby::set_stylesheet(QWidget *widget, QString target_tag)
 | 
			
		||||
{
 | 
			
		||||
  QString f_file = "lobby_stylesheets.css";
 | 
			
		||||
  QString style_sheet_string = ao_app->get_stylesheet(target_tag, f_file);
 | 
			
		||||
  if (style_sheet_string != "")
 | 
			
		||||
    widget->setStyleSheet(style_sheet_string);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Lobby::set_stylesheets()
 | 
			
		||||
{
 | 
			
		||||
  set_stylesheet(ui_player_count, "[PLAYER COUNT]");
 | 
			
		||||
  set_stylesheet(ui_description, "[DESCRIPTION]");
 | 
			
		||||
  set_stylesheet(ui_chatbox, "[CHAT BOX]");
 | 
			
		||||
  set_stylesheet(ui_chatname, "[CHAT NAME]");
 | 
			
		||||
  set_stylesheet(ui_chatmessage, "[CHAT MESSAGE]");
 | 
			
		||||
  set_stylesheet(ui_loading_text, "[LOADING TEXT]");
 | 
			
		||||
  set_stylesheet(ui_server_list, "[SERVER LIST]");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Lobby::set_font(QWidget *widget, QString p_identifier)
 | 
			
		||||
{
 | 
			
		||||
  QString design_file = "lobby_fonts.ini";
 | 
			
		||||
  int f_weight = ao_app->get_font_size(p_identifier, design_file);
 | 
			
		||||
  QString class_name = widget->metaObject()->className();
 | 
			
		||||
  QString font_name = ao_app->get_font_name("font_" + p_identifier, design_file);
 | 
			
		||||
  QFont font(font_name, f_weight);
 | 
			
		||||
  bool use = static_cast<bool>(ao_app->get_font_size("use_custom_fonts", design_file));
 | 
			
		||||
  if(use)
 | 
			
		||||
  {
 | 
			
		||||
      widget->setFont(font);
 | 
			
		||||
      QColor f_color = ao_app->get_color(p_identifier + "_color", design_file);
 | 
			
		||||
      bool bold = static_cast<bool>(ao_app->get_font_size(p_identifier + "_bold", design_file)); // is the font bold or not?
 | 
			
		||||
      bool center = static_cast<bool>(ao_app->get_font_size(p_identifier + "_center", design_file)); // should it be centered?
 | 
			
		||||
      QString is_bold = "";
 | 
			
		||||
      if(bold) is_bold = "bold";
 | 
			
		||||
      QString is_center = "";
 | 
			
		||||
      if(center) is_center = "qproperty-alignment: AlignCenter;";
 | 
			
		||||
      QString style_sheet_string = class_name + " { background-color: rgba(0, 0, 0, 0);\n" +
 | 
			
		||||
                                                "color: rgba(" +
 | 
			
		||||
                                                 QString::number(f_color.red()) + ", " +
 | 
			
		||||
                                                 QString::number(f_color.green()) + ", " +
 | 
			
		||||
                                                 QString::number(f_color.blue()) + ", 255);\n" +
 | 
			
		||||
                                                 is_center + "\n" +
 | 
			
		||||
                                                 "font: " + is_bold + "; }";
 | 
			
		||||
      widget->setStyleSheet(style_sheet_string);
 | 
			
		||||
  }
 | 
			
		||||
  return;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Lobby::set_loading_text(QString p_text)
 | 
			
		||||
{
 | 
			
		||||
  ui_loading_text->clear();
 | 
			
		||||
 | 
			
		||||
@ -350,6 +350,45 @@ QColor AOApplication::get_color(QString p_identifier, QString p_file)
 | 
			
		||||
  return return_color;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
QString AOApplication::get_stylesheet(QString target_tag, QString p_file)
 | 
			
		||||
{
 | 
			
		||||
  QString design_ini_path = get_theme_path(p_file);
 | 
			
		||||
 | 
			
		||||
  QFile design_ini;
 | 
			
		||||
 | 
			
		||||
  design_ini.setFileName(design_ini_path);
 | 
			
		||||
 | 
			
		||||
  if(!design_ini.open(QIODevice::ReadOnly))
 | 
			
		||||
    return "";
 | 
			
		||||
 | 
			
		||||
  QTextStream in(&design_ini);
 | 
			
		||||
 | 
			
		||||
  QString f_text;
 | 
			
		||||
 | 
			
		||||
  bool tag_found = false;
 | 
			
		||||
 | 
			
		||||
  while(!in.atEnd())
 | 
			
		||||
  {
 | 
			
		||||
    QString line = in.readLine();
 | 
			
		||||
 | 
			
		||||
    if (line.startsWith(target_tag, Qt::CaseInsensitive))
 | 
			
		||||
    {
 | 
			
		||||
      tag_found = true;
 | 
			
		||||
      continue;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if(tag_found)
 | 
			
		||||
      {
 | 
			
		||||
        if((line.startsWith("[") && line.endsWith("]")))
 | 
			
		||||
           break;
 | 
			
		||||
        f_text.append(line);
 | 
			
		||||
      }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  design_ini.close();
 | 
			
		||||
  return f_text;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
QColor AOApplication::get_chat_color(QString p_identifier, QString p_chat)
 | 
			
		||||
{
 | 
			
		||||
  QColor return_color(255, 255, 255);
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user