Author: mir3x
Date: Sun Nov 20 23:15:25 2016
New Revision: 34589

URL: http://svn.gna.org/viewcvs/freeciv?rev=34589&view=rev
Log:
Qt client - allow chaning tech via sidebar menu

See patch #8002


Modified:
    branches/S2_6/client/gui-qt/pages.cpp
    branches/S2_6/client/gui-qt/sidebar.cpp
    branches/S2_6/client/gui-qt/sidebar.h

Modified: branches/S2_6/client/gui-qt/pages.cpp
URL: 
http://svn.gna.org/viewcvs/freeciv/branches/S2_6/client/gui-qt/pages.cpp?rev=34589&r1=34588&r2=34589&view=diff
==============================================================================
--- branches/S2_6/client/gui-qt/pages.cpp       (original)
+++ branches/S2_6/client/gui-qt/pages.cpp       Sun Nov 20 23:15:25 2016
@@ -728,6 +728,7 @@
   sw_cunit->set_wheel_up(cycle_enemy_units);
   sw_cunit->set_wheel_down(key_unit_wait);
   sw_diplo->set_right_click(side_right_click_diplomacy);
+  sw_science->set_right_click(side_right_click_science);
 
   sidebar_wdg->add_widget(sw_map);
   sidebar_wdg->add_widget(sw_cunit);

Modified: branches/S2_6/client/gui-qt/sidebar.cpp
URL: 
http://svn.gna.org/viewcvs/freeciv/branches/S2_6/client/gui-qt/sidebar.cpp?rev=34589&r1=34588&r2=34589&view=diff
==============================================================================
--- branches/S2_6/client/gui-qt/sidebar.cpp     (original)
+++ branches/S2_6/client/gui-qt/sidebar.cpp     Sun Nov 20 23:15:25 2016
@@ -22,7 +22,11 @@
 #include <QPixmap>
 #include <QTimer>
 
+//common
+#include "research.h"
+
 // qt-client
+#include "repodlgs.h"
 #include "sidebar.h"
 #include "sprite.h"
 
@@ -306,7 +310,7 @@
 }
 
 /***************************************************************************
-  Miscelanous slot, helping observe players currently,
+  Miscelanous slot, helping observe players currently, and changing science
   extra functionality might be added,
   eg by setting properties
 ***************************************************************************/
@@ -320,6 +324,11 @@
   qvar = act->data();
 
   if (qvar.isValid() == false) {
+    return;
+  }
+
+  if (act->property("scimenu") == true) {
+    dsend_packet_player_research(&client.conn, qvar.toInt());
     return;
   }
 
@@ -682,3 +691,45 @@
     gui()->game_tab_widget->setCurrentIndex(i);
   }
 }
+
+/***************************************************************************
+  Right click for science, allowing to choose current tech
+***************************************************************************/
+void side_right_click_science(void)
+{
+  QMenu *menu;
+  QString str;
+  QAction *act;
+  QVariant qvar;
+  QList<qlist_item> curr_list;
+  qlist_item item;
+
+  if (client_is_observer() == false) {
+    struct research *research = research_get(client_player());
+
+    advance_index_iterate(A_FIRST, i) {
+      if (TECH_PREREQS_KNOWN == research->inventions[i].state
+        && research->researching != i) {
+        item.tech_str =
+          QString::fromUtf8(advance_name_translation(advance_by_number(i)));
+        item.id = i;
+        curr_list.append(item);
+      }
+    } advance_index_iterate_end;
+    if (curr_list.isEmpty()) {
+      return;
+    }
+    qSort(curr_list.begin(), curr_list.end(), comp_less_than);
+    menu = new QMenu(gui()->central_wdg);
+    for (int i = 0; i < curr_list.count(); i++) {
+      qvar = curr_list.at(i).id;
+      act = new QAction(curr_list.at(i).tech_str, gui()->mapview_wdg);
+      act->setData(qvar);
+      act->setProperty("scimenu", true);
+      menu->addAction(act);
+      QObject::connect(act, SIGNAL(triggered()), gui()->sw_science,
+                       SLOT(some_slot()));
+    }
+    menu->exec(QCursor::pos());
+  }
+}

Modified: branches/S2_6/client/gui-qt/sidebar.h
URL: 
http://svn.gna.org/viewcvs/freeciv/branches/S2_6/client/gui-qt/sidebar.h?rev=34589&r1=34588&r2=34589&view=diff
==============================================================================
--- branches/S2_6/client/gui-qt/sidebar.h       (original)
+++ branches/S2_6/client/gui-qt/sidebar.h       Sun Nov 20 23:15:25 2016
@@ -33,6 +33,7 @@
 typedef void (*pfcn)(void);
 
 void side_right_click_diplomacy(void);
+void side_right_click_science(void);
 void side_blink_endturn(bool do_restore);
 void side_center_unit();
 void side_disable_endturn(bool do_restore);


_______________________________________________
Freeciv-commits mailing list
Freeciv-commits@gna.org
https://mail.gna.org/listinfo/freeciv-commits

Reply via email to