@@ -12,7 +12,7 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow()
1212 qsrand (static_cast <uint>(QDateTime::currentMSecsSinceEpoch () / 1000 ));
1313
1414 keepalive_timer = new QTimer (this );
15- keepalive_timer->start (60000 );
15+ keepalive_timer->start (45000 );
1616
1717 chat_tick_timer = new QTimer (this );
1818
@@ -120,6 +120,12 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow()
120120 ui_music_name = new ScrollText (ui_music_display);
121121 ui_music_name->setText (tr (" None" ));
122122 ui_music_name->setAttribute (Qt::WA_TransparentForMouseEvents);
123+
124+ for (int i = 0 ; i < max_clocks; i++) {
125+ ui_clock[i] = new AOClockLabel (this );
126+ ui_clock[i]->setAttribute (Qt::WA_TransparentForMouseEvents);
127+ ui_clock[i]->hide ();
128+ }
123129
124130 ui_ic_chat_name = new QLineEdit (this );
125131 ui_ic_chat_name->setFrame (false );
@@ -663,6 +669,10 @@ void Courtroom::set_widgets()
663669 ui_music_display->load_image (" music_display" , " " );
664670
665671
672+ for (int i = 0 ; i < max_clocks; i++) {
673+ set_size_and_pos (ui_clock[i], " clock_" + QString::number (i));
674+ }
675+
666676 if (is_ao2_bg) {
667677 set_size_and_pos (ui_ic_chat_message, " ao2_ic_chat_message" );
668678 // set_size_and_pos(ui_vp_chatbox, "ao2_chatbox");
@@ -1016,6 +1026,9 @@ void Courtroom::set_fonts(QString p_char)
10161026 set_font (ui_area_list, " " , " area_list" , p_char);
10171027 set_font (ui_music_name, " " , " music_name" , p_char);
10181028
1029+ for (int i = 0 ; i < max_clocks; i++)
1030+ set_font (ui_clock[i], " " , " clock_" + QString::number (i), p_char);
1031+
10191032 set_dropdowns ();
10201033}
10211034
@@ -5266,10 +5279,21 @@ void Courtroom::on_switch_area_music_clicked()
52665279
52675280void Courtroom::ping_server ()
52685281{
5282+ ping_timer.start ();
5283+ is_pinging = true ;
52695284 ao_app->send_server_packet (
52705285 new AOPacket (" CH#" + QString::number (m_cid) + " #%" ));
52715286}
52725287
5288+ qint64 Courtroom::pong ()
5289+ {
5290+ if (!is_pinging)
5291+ return -1 ;
5292+
5293+ is_pinging = false ;
5294+ return ping_timer.elapsed ();
5295+ }
5296+
52735297void Courtroom::on_casing_clicked ()
52745298{
52755299 if (ao_app->casing_alerts_enabled ) {
@@ -5309,6 +5333,54 @@ void Courtroom::announce_case(QString title, bool def, bool pro, bool jud,
53095333 }
53105334}
53115335
5336+ void Courtroom::start_clock (int id)
5337+ {
5338+ if (id >= 0 && id < max_clocks && ui_clock[id] != nullptr )
5339+ {
5340+ ui_clock[id]->start ();
5341+ }
5342+ }
5343+
5344+ void Courtroom::start_clock (int id, qint64 msecs)
5345+ {
5346+ if (id >= 0 && id < max_clocks && ui_clock[id] != nullptr )
5347+ {
5348+ ui_clock[id]->start (static_cast <int >(msecs));
5349+ }
5350+ }
5351+
5352+ void Courtroom::set_clock (int id, qint64 msecs)
5353+ {
5354+ if (id >= 0 && id < max_clocks && ui_clock[id] != nullptr )
5355+ {
5356+ ui_clock[id]->set (static_cast <int >(msecs), true );
5357+ }
5358+ }
5359+
5360+ void Courtroom::pause_clock (int id)
5361+ {
5362+ if (id >= 0 && id < max_clocks && ui_clock[id] != nullptr )
5363+ {
5364+ ui_clock[id]->pause ();
5365+ }
5366+ }
5367+
5368+ void Courtroom::stop_clock (int id)
5369+ {
5370+ if (id >= 0 && id < max_clocks && ui_clock[id] != nullptr )
5371+ {
5372+ ui_clock[id]->stop ();
5373+ }
5374+ }
5375+
5376+ void Courtroom::set_clock_visibility (int id, bool visible)
5377+ {
5378+ if (id >= 0 && id < max_clocks && ui_clock[id] != nullptr )
5379+ {
5380+ ui_clock[id]->setVisible (visible);
5381+ }
5382+ }
5383+
53125384void Courtroom::truncate_label_text (QWidget *p_widget, QString p_identifier)
53135385{
53145386 QString filename = " courtroom_design.ini" ;
0 commit comments