From: <mrj...@us...> - 2008-09-21 19:48:17
|
Revision: 3032 http://tora.svn.sourceforge.net/tora/?rev=3032&view=rev Author: mrjohnson0 Date: 2008-09-21 19:48:12 +0000 (Sun, 21 Sep 2008) Log Message: ----------- blech. ugly code. trying to clean up a bit, this fixes enabling and disabling the Charts tab. previous attempts in here didn't fully fix the root problem, which was hard to grok. Seems to have been setup once upon a time to have charts in their own tabs, but it doesn't look like it ever worked or was completed. This removes a lot of that cruft. Modified Paths: -------------- trunk/tora/src/toconf.h trunk/tora/src/totuning.cpp trunk/tora/src/totuning.h Modified: trunk/tora/src/toconf.h =================================================================== --- trunk/tora/src/toconf.h 2008-09-21 18:03:26 UTC (rev 3031) +++ trunk/tora/src/toconf.h 2008-09-21 19:48:12 UTC (rev 3032) @@ -213,7 +213,7 @@ #define CONF_OVERVIEW "Overview" #define CONF_FILEIO "File I/O" #define CONF_WAITS "Wait events" -#define CONF_CHART "chart" +#define CONF_CHART "Charts" // toworksheet #define CONF_AUTO_SAVE "AutoSave" #define CONF_CHECK_SAVE "CheckSave" Modified: trunk/tora/src/totuning.cpp =================================================================== --- trunk/tora/src/totuning.cpp 2008-09-21 18:03:26 UTC (rev 3031) +++ trunk/tora/src/totuning.cpp 2008-09-21 19:48:12 UTC (rev 3032) @@ -1416,25 +1416,9 @@ toTuning::toTuning(QWidget *main, toConnection &connection) : toToolWidget(TuningTool, "tuning.html", main, connection, "toTuning") { -// if (TuningTool.config(CONF_OVERVIEW, "Undefined") == "Undefined") if (toConfigurationSingle::Instance().tuningFirstRun()) { - bool def = false; //QString def = QString::null; -// if (TOMessageBox::warning( -// toMainWidget(), -// tr("Enable all tuning statistics"), -// tr("Are you sure you want to enable all tuning features.\n" -// "This can put heavy strain on a database and unless you\n" -// "are the DBA you probably don't want this. Selecting\n" -// "no here will give you the option to enable or disable\n" -// "tabs individually as they are needed."), -// tr("Yes"), -// tr("&No"), -// QString::null, -// 1) == 0) -// { -// def = "Yes"; -// } + bool def = false; if (TOMessageBox::warning( toMainWidget(), tr("Enable all tuning statistics"), @@ -1450,9 +1434,7 @@ { def = true; } -// std::list<QString> tabs = TabList(); -// for (std::list<QString>::iterator i = tabs.begin();i != tabs.end();i++) -// TuningTool.setConfig(*i, def); + toConfigurationSingle::Instance().setTuningOverview(def); toConfigurationSingle::Instance().setTuningFileIO(def); toConfigurationSingle::Instance().setTuningWaits(def); @@ -1467,13 +1449,12 @@ QIcon(QPixmap(const_cast<const char**>(refresh_xpm))), tr("Refresh"), this, - SLOT(refresh(void))); + SLOT(refresh())); refreshAct->setShortcut(QKeySequence::Refresh); toolbar->addSeparator(); - toolbar->addWidget( - new QLabel(tr("Refresh") + " ", toolbar)); + toolbar->addWidget(new QLabel(tr("Refresh") + " ", toolbar)); Refresh = toRefreshCreate(toolbar, TO_TOOLBAR_WIDGET_NAME); connect(Refresh, SIGNAL(activated(const QString &)), this, SLOT(changeRefresh(const QString &))); @@ -1516,8 +1497,18 @@ toRefreshParse(timer()); connect(timer(), SIGNAL(timeout()), Overview, SLOT(refresh())); } - TOCATCH + TOCATCH; + ChartContainer = new QScrollArea(Tabs); + QWidget *chartWidget = new QWidget(ChartContainer); + ChartContainer->setWidget(chartWidget); + ChartContainer->setWidgetResizable(true); + chartWidget->setMinimumHeight(1800); + Tabs->addTab(ChartContainer, tr("&Charts")); + + QVBoxLayout *chartBox = new QVBoxLayout; + chartWidget->setLayout(chartBox); + QString unitStr = toConfigurationSingle::Instance().sizeUnit(); toQList unit; unit.insert(unit.end(), toQValue(toSizeDecode(unitStr))); @@ -1532,24 +1523,12 @@ parts.append(parts[2]); parts[2] = QString::fromLatin1("Charts"); } - std::map<QString, QWidget *>::iterator j = Charts.find(QString(CONF_CHART) + parts[2].toLatin1()); - QWidget *cchart; - if (j == Charts.end()) - { - cchart = new QWidget(Tabs); - cchart->setObjectName(QString(CONF_CHART) + parts[2]); - cchart->setLayout(new QGridLayout); - Charts[QString(CONF_CHART) + parts[2].toLatin1()] = cchart; - } - else - cchart = (*j).second; - QGridLayout *grid = dynamic_cast<QGridLayout *>(cchart->layout()); - if (parts[3].mid(1, 1) == QString::fromLatin1("B")) { - toResultBar *chart = new toResultBar(cchart); - grid->addWidget(chart); + toResultBar *chart = new toResultBar(chartWidget); + chartBox->addWidget(chart); + Charts.append(chart); chart->setTitle(parts[3].mid(3)); toQList par; if (parts[3].mid(2, 1) == QString::fromLatin1("B")) @@ -1573,11 +1552,11 @@ { toResultLine *chart; if (parts[3].mid(1, 1) == QString::fromLatin1("C")) - chart = new toTuningMiss(cchart); + chart = new toTuningMiss(chartWidget); else - chart = new toResultLine(cchart); - grid->addWidget(chart); - chart->setTitle(parts[3].mid(3)); + chart = new toResultLine(chartWidget); + chartBox->addWidget(chart); + Charts.append(chart); toQList par; if (parts[3].mid(2, 1) == QString::fromLatin1("B")) chart->setYPostfix(tr(" blocks/s")); @@ -1599,9 +1578,10 @@ } else if (parts[3].mid(1, 1) == QString::fromLatin1("P")) { - toResultPie *chart = new toResultPie(cchart); + toResultPie *chart = new toResultPie(chartWidget); chart->setTitle(parts[3].mid(3)); - grid->addWidget(chart); + chartBox->addWidget(chart); + Charts.append(chart); if (parts[3].mid(2, 1) == QString::fromLatin1("S")) { chart->query(toSQL::sql(*i), unit); @@ -1615,20 +1595,8 @@ } } - for (std::map<QString, QWidget *>::iterator k = Charts.begin(); - k != Charts.end(); - k++) - { - QScrollArea *sc = new QScrollArea(Tabs); - sc->setWidgetResizable(true); - sc->setWidget((*k).second); - // HACK: it's ugly but I cannot find any way how to setup it dynamically - (*k).second->setMinimumHeight(1800); - Tabs->addTab(sc, tr((*k).first.mid(strlen(CONF_CHART)).toAscii().constData())); - } - Waits = new toWaitEvents(this, "waits"); - Tabs->addTab(Waits, tr("Wait events")); + Tabs->addTab(Waits, tr("&Wait events")); FileIO = new toTuningFileIO(Tabs); connect(this, SIGNAL(connectionChange()), FileIO, SLOT(changeConnection())); @@ -1656,7 +1624,7 @@ ControlFiles = new toResultTableView(true, false, Tabs, "control"); ControlFiles->setSQL(SQLControlFiles); - Tabs->addTab(ControlFiles, tr("Control Files")); + Tabs->addTab(ControlFiles, tr("C&ontrol Files")); Options = new toResultTableView(true, false, Tabs, "options"); Options->setSQL(SQLOptions); @@ -1675,10 +1643,6 @@ connect(toMainWidget()->workspace(), SIGNAL(subWindowActivated(QMdiSubWindow *)), this, SLOT(windowActivated(QMdiSubWindow *))); -// std::list<QString> tabs = TabList(); -// for (std::list<QString>::iterator i = tabs.begin();i != tabs.end();i++) -// if (TuningTool.config(*i, "").isEmpty()) -// enableTab(*i, false); if (!toConfigurationSingle::Instance().tuningOverview()) enableTab(CONF_OVERVIEW, false); if (!toConfigurationSingle::Instance().tuningFileIO()) @@ -1706,9 +1670,9 @@ { widget = Waits; } - else if (Charts.find(CONF_CHART + name) != Charts.end()) + else if (name == CONF_CHART) { - widget = Charts[CONF_CHART + name]; + widget = ChartContainer; } return widget; } @@ -1735,10 +1699,9 @@ if (!act) return; - QString text(act->text().toAscii()); - QWidget *widget = tabWidget(text); + QWidget *widget = tabWidget(act->text()); if (widget) - enableTab(text, !Tabs->isTabEnabled(Tabs->indexOf(widget))); + enableTab(act->text(), !Tabs->isTabEnabled(Tabs->indexOf(widget))); } void toTuning::enableTab(const QString &name, bool enable) @@ -1750,15 +1713,15 @@ Overview->start(); else Overview->stop(); + + toConfigurationSingle::Instance().setTuningOverview(enable); widget = Overview; } - else if (Charts.find(QString(CONF_CHART) + name) != Charts.end()) + else if (name == CONF_CHART) { - QWidget *chart = Charts[QString(CONF_CHART) + name]; - QObjectList childs = chart->children(); - for (int i = 0;i < childs.count();i++) + Q_FOREACH(QWidget *child, Charts) { - toResultLine *line = dynamic_cast<toResultLine *>(childs.at(i)); + toResultLine *line = dynamic_cast<toResultLine *>(child); if (line) { if (enable) @@ -1766,7 +1729,7 @@ else line->stop(); } - toResultBar *bar = dynamic_cast<toResultBar *>(childs.at(i)); + toResultBar *bar = dynamic_cast<toResultBar *>(child); if (bar) { if (enable) @@ -1774,7 +1737,7 @@ else bar->stop(); } - toResultPie *pie = dynamic_cast<toResultPie *>(childs.at(i)); + toResultPie *pie = dynamic_cast<toResultPie *>(child); if (pie) { if (enable) @@ -1783,7 +1746,9 @@ pie->stop(); } } - widget = chart; + + toConfigurationSingle::Instance().setTuningCharts(enable); + widget = ChartContainer; } else if (name == CONF_WAITS) { @@ -1791,6 +1756,8 @@ Waits->start(); else Waits->stop(); + + toConfigurationSingle::Instance().setTuningWaits(enable); widget = Waits; } else if (name == CONF_FILEIO) @@ -1799,10 +1766,35 @@ FileIO->start(); else FileIO->stop(); + + toConfigurationSingle::Instance().setTuningFileIO(enable); widget = FileIO; } + if (widget) - Tabs->setTabEnabled(Tabs->indexOf(widget), enable); + { + int ind = Tabs->indexOf(widget); + if(ind < 0) + return; + + if(enable) + Tabs->setCurrentIndex(ind); + else + { + // qtabwidget is enabling some tabs when we disable one, + // so i'm going to pick the next tab to show here + for(int pos = 0; pos < Tabs->count(); pos++) + { + if(pos != ind && Tabs->isTabEnabled(pos)) + { + Tabs->setCurrentIndex(pos); + break; + } + } + } + + Tabs->setTabEnabled(ind, enable); + } } void toTuning::changeTab(int index) Modified: trunk/tora/src/totuning.h =================================================================== --- trunk/tora/src/totuning.h 2008-09-21 18:03:26 UTC (rev 3031) +++ trunk/tora/src/totuning.h 2008-09-21 19:48:12 UTC (rev 3032) @@ -56,6 +56,7 @@ #include <QResizeEvent> #include <QLabel> #include <QScrollArea> +#include <QList> class QAction; class QMenu; @@ -172,23 +173,24 @@ { Q_OBJECT - QTabWidget *Tabs; - toListView *Indicators; - toResultParam *Parameters; + QTabWidget *Tabs; + toListView *Indicators; + toResultParam *Parameters; toResultTableView *Options; - toResultLock *BlockingLocks; - toResultItem *Licenses; - toResultStats *Statistics; + toResultLock *BlockingLocks; + toResultItem *Licenses; + toResultStats *Statistics; toResultTableView *LibraryCache; toResultTableView *ControlFiles; - toWaitEvents *Waits; + toWaitEvents *Waits; + QScrollArea *ChartContainer; - std::map<QString, QWidget *> Charts; + QList<QWidget *> Charts; - QComboBox *Refresh; + QComboBox *Refresh; toTuningOverview *Overview; - toTuningFileIO *FileIO; - QWidget *LastTab; + toTuningFileIO *FileIO; + QWidget *LastTab; QMenu *ToolMenu; QAction *refreshAct; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |