Author: mir3x
Date: Sun Aug 28 20:03:37 2016
New Revision: 33721

URL: http://svn.gna.org/viewcvs/freeciv?rev=33721&view=rev
Log:
Qt client - Use QStackedLayout as main layout

See patch #7656


Modified:
    trunk/client/gui-qt/fc_client.cpp
    trunk/client/gui-qt/fc_client.h

Modified: trunk/client/gui-qt/fc_client.cpp
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/client/gui-qt/fc_client.cpp?rev=33721&r1=33720&r2=33721&view=diff
==============================================================================
--- trunk/client/gui-qt/fc_client.cpp   (original)
+++ trunk/client/gui-qt/fc_client.cpp   Sun Aug 28 20:03:37 2016
@@ -21,6 +21,7 @@
 #include <QMainWindow>
 #include <QLineEdit>
 #include <QScrollBar>
+#include <QStackedLayout>
 #include <QStatusBar>
 #include <QTabBar>
 #include <QTextEdit>
@@ -113,8 +114,7 @@
 {
   QString path;
   central_wdg = new QWidget;
-  central_layout = new QGridLayout;
-  central_layout->setContentsMargins(2, 2, 2, 2);
+  central_layout = new QStackedLayout;
 
   // General part not related to any single page
   fc_fonts.init_fonts();
@@ -163,14 +163,23 @@
   pages[PAGE_GAME] = new QWidget(central_wdg);
   init_mapcanvas_and_overview();
   create_game_page();
-  pages[PAGE_GAME]->setVisible(false);
-
-  central_layout->addLayout(pages_layout[PAGE_MAIN], 1, 1);
-  central_layout->addLayout(pages_layout[PAGE_NETWORK], 1, 1);
-  central_layout->addLayout(pages_layout[PAGE_LOAD], 1, 1);
-  central_layout->addLayout(pages_layout[PAGE_SCENARIO], 1, 1);
-  central_layout->addLayout(pages_layout[PAGE_START], 1, 1);
-  central_layout->addLayout(pages_layout[PAGE_GAME], 1, 1);
+
+  pages_layout[PAGE_GAME]->setContentsMargins(0, 0, 0, 0);
+
+  pages[PAGE_MAIN]->setLayout(pages_layout[PAGE_MAIN]);
+  pages[PAGE_NETWORK]->setLayout(pages_layout[PAGE_NETWORK]);
+  pages[PAGE_LOAD]->setLayout(pages_layout[PAGE_LOAD]);
+  pages[PAGE_SCENARIO]->setLayout(pages_layout[PAGE_SCENARIO]);
+  pages[PAGE_START]->setLayout(pages_layout[PAGE_START]);
+  pages[PAGE_GAME]->setLayout(pages_layout[PAGE_GAME]);
+
+  central_layout->addWidget(pages[PAGE_MAIN]);
+  central_layout->addWidget(pages[PAGE_NETWORK]);
+  central_layout->addWidget(pages[PAGE_LOAD]);
+  central_layout->addWidget(pages[PAGE_SCENARIO]);
+  central_layout->addWidget(pages[PAGE_START]);
+  central_layout->addWidget(pages[PAGE_GAME]);
+
   central_wdg->setLayout(central_layout);
   setCentralWidget(central_wdg);
 
@@ -285,13 +294,7 @@
     status_bar->setVisible(true);
   }
 
-  for (int i = 0; i <= PAGE_GAME; i++) {
-    if (i == new_page) {
-      show_children(pages_layout[i], true);
-    } else {
-      show_children(pages_layout[i], false);
-    }
-  }
+  central_layout->setCurrentWidget(pages[new_pg]);
   page = new_page;
   switch (page) {
   case PAGE_MAIN:
@@ -480,29 +483,6 @@
   }
 }
 
-/****************************************************************************
-  Shows all widgets for given layout
-****************************************************************************/
-void fc_client::show_children(const QLayout* layout, bool show)
-{
-  QLayoutItem *item = NULL;
-  QWidget *widget = NULL;
-
-  if (layout) {
-    for (int i = 0; i < layout->count(); i++) {
-      item = layout->itemAt(i);
-      widget = item ? item->widget() : 0;
-
-      if (widget) {
-        widget->setVisible(show);
-      }
-
-      if (item->layout()) {
-        show_children(item->layout(), show);
-      }
-    }
-  }
-}
 
 /****************************************************************************
   Finds not used index on game_view_tab and returns it

Modified: trunk/client/gui-qt/fc_client.h
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/client/gui-qt/fc_client.h?rev=33721&r1=33720&r2=33721&view=diff
==============================================================================
--- trunk/client/gui-qt/fc_client.h     (original)
+++ trunk/client/gui-qt/fc_client.h     Sun Aug 28 20:03:37 2016
@@ -60,23 +60,24 @@
   WAITING_TYPE
 };
 
+class fc_sidebar;
+class fc_sidetax;
+class fc_sidewidget;
 class MainWindow;
+class pregame_options;
+class QApplication;
+class QDialog;
 class QLabel;
 class QLineEdit;
+class QMainWindow;
+class QSocketNotifier;
+class QStackedLayout;
+class QStatusBar;
 class QString;
 class QTableWidget;
 class QTextEdit;
 class QTimer;
-class QSocketNotifier;
-class QDialog;
-class QApplication;
 class QTreeWidget;
-class QStatusBar;
-class QMainWindow;
-class fc_sidebar;
-class fc_sidewidget;
-class fc_sidetax;
-class pregame_options;
 
 
 /****************************************************************************
@@ -165,8 +166,8 @@
   QWidget *connect_metaserver;
   QWidget *game_main_widget;
 
-  QGridLayout *central_layout;
   QGridLayout *pages_layout[PAGE_GAME + 1];
+  QStackedLayout *central_layout;
 
   QTextEdit *output_window;
   QTextEdit *scenarios_view;
@@ -314,7 +315,6 @@
   void create_start_page();
   void create_game_page();
   bool chat_active_on_page(enum client_pages);
-  void show_children(const QLayout *layout, bool show);
   void destroy_server_scans (void);
   void update_server_list(enum server_scan_type sstype,
                           const struct server_list *list);


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

Reply via email to