summaryrefslogtreecommitdiffstats
path: root/src/configure.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/configure.cpp')
-rw-r--r--src/configure.cpp161
1 files changed, 161 insertions, 0 deletions
diff --git a/src/configure.cpp b/src/configure.cpp
new file mode 100644
index 0000000..f3ffcff
--- /dev/null
+++ b/src/configure.cpp
@@ -0,0 +1,161 @@
+/***************************************************************************
+ * Copyright (C) 2004 by Hugo Parente Lima *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the *
+ * Free Software Foundation, Inc., *
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
+ ***************************************************************************/
+
+#include "configure.h"
+#include "knetstats.h"
+
+// TQt includes
+#include <tqstringlist.h>
+#include <tqlistbox.h>
+#include <tqcheckbox.h>
+#include <tqlabel.h>
+#include <tqwidgetstack.h>
+#include <tqpopupmenu.h>
+// Kde includes
+#include <tdeapplication.h>
+#include <tdelocale.h>
+#include <kiconloader.h>
+#include <tdeconfig.h>
+#include <tdefontrequester.h>
+#include <knuminput.h>
+#include <kcolorbutton.h>
+#include <kcombobox.h>
+#include <tdemessagebox.h>
+#include <kpushbutton.h>
+
+
+Configure::Configure(KNetStats* parent, const InterfaceMap& ifs) : ConfigureBase(parent) {
+ // Load configuration
+ TDEIconLoader* loader = kapp->iconLoader();
+
+ TQPixmap iconPCI = loader->loadIcon("icon_pci.png", TDEIcon::Small, 16);
+
+ // Clone the configuration.
+ for (InterfaceMap::ConstIterator it = ifs.begin(); it != ifs.end(); ++it) {
+ mInterfaces->insertItem(iconPCI, it.key());
+ mConfig[it.key()] = it.data()->options();
+
+// parent->readInterfaceOptions(*it, &mConfig[*it]);
+ }
+
+ mInterfaces->setCurrentItem(0);
+ changeInterface(mInterfaces->selectedItem());
+
+ connect(mInterfaces, TQT_SIGNAL(selectionChanged(TQListBoxItem*)), this, TQT_SLOT(changeInterface(TQListBoxItem*)));
+ connect(mTheme, TQT_SIGNAL(activated(int)), this, TQT_SLOT(changeTheme(int)));
+ //connect(mInterfaces, TQT_SIGNAL(contextMenuRequested(TQListBoxItem*, const TQPoint&)), this, TQT_SLOT(showInterfaceContextMenu(TQListBoxItem*, const TQPoint&)));
+}
+
+void Configure::changeInterface(TQListBoxItem* item) {
+ TQString interface = item->text();
+
+ if (!mCurrentItem.isEmpty())
+ {
+ // Salvas as modificações passadas
+ KNetStatsView::Options& oldview = mConfig[mCurrentItem];
+ // general options
+ oldview.mMonitoring = mMonitoring->isChecked();
+ oldview.mUpdateInterval = mUpdateInterval->value();
+ oldview.mViewMode = (KNetStatsView::Mode) mViewMode->currentItem();
+ // txt view options
+ oldview.mTxtUplColor = mTxtUplColor->color();
+ oldview.mTxtDldColor = mTxtDldColor->color();
+ oldview.mTxtFont = mTxtFont->font();
+ // icon view
+ oldview.mTheme = mTheme->currentItem();
+ // chart view
+ oldview.mChartUplColor = mChartUplColor->color();
+ oldview.mChartDldColor = mChartDldColor->color();
+ oldview.mChartBgColor = mChartBgColor->color();
+ oldview.mChartTransparentBackground = mChartTransparentBackground->isChecked();
+ }
+
+ if (interface == mCurrentItem)
+ return;
+ // Carrega as opt. da nova interface
+ KNetStatsView::Options& view = mConfig[interface];
+ // general
+ mMonitoring->setChecked(view.mMonitoring);
+ mUpdateInterval->setValue(view.mUpdateInterval);
+ mViewMode->setCurrentItem(view.mViewMode);
+ mWdgStack->raiseWidget(view.mViewMode);
+ // txt options
+ mTxtUplColor->setColor(view.mTxtUplColor);
+ mTxtDldColor->setColor(view.mTxtDldColor);
+ mTxtFont->setFont( view.mTxtFont );
+ // icon options
+ mTheme->setCurrentItem(view.mTheme);
+ changeTheme(view.mTheme);
+ // chart options
+ mChartUplColor->setColor(view.mChartUplColor);
+ mChartDldColor->setColor(view.mChartDldColor);
+ mChartBgColor->setColor(view.mChartBgColor);
+ mChartTransparentBackground->setChecked(view.mChartTransparentBackground);
+
+ mCurrentItem = interface;
+}
+
+bool Configure::canSaveConfig()
+{
+ // update the options
+ changeInterface(mInterfaces->item( mInterfaces->currentItem() ));
+
+ bool ok = false;
+ for(OptionsMap::ConstIterator i = mConfig.begin(); i != mConfig.end(); ++i)
+ if (i.data().mMonitoring) {
+ ok = true;
+ break;
+ }
+
+ if (!ok)
+ KMessageBox::error(this, i18n("You need to select at least one interface to monitor."));
+ return ok;
+}
+
+void Configure::changeTheme(int theme)
+{
+ TDEIconLoader* loader = kapp->iconLoader();
+ mIconError->setPixmap(loader->loadIcon("theme"+TQString::number(theme)+"_error.png",
+ TDEIcon::Panel, ICONSIZE));
+ mIconNone->setPixmap(loader->loadIcon("theme"+TQString::number(theme)+"_none.png",
+ TDEIcon::Panel, ICONSIZE));
+ mIconTx->setPixmap(loader->loadIcon("theme"+TQString::number(theme)+"_tx.png",
+ TDEIcon::Panel, ICONSIZE));
+ mIconRx->setPixmap(loader->loadIcon("theme"+TQString::number(theme)+"_rx.png",
+ TDEIcon::Panel, ICONSIZE));
+ mIconBoth->setPixmap(loader->loadIcon("theme"+TQString::number(theme)+"_both.png",
+ TDEIcon::Panel, ICONSIZE));
+}
+/*
+void Configure::showInterfaceContextMenu(TQListBoxItem* item, const TQPoint& point) {
+ if (!item && mConfig.size() == 1)
+ return;
+ TQPixmap icon = kapp->iconLoader()->loadIcon("edit-delete", TDEIcon::Small, 16);
+ TQPopupMenu* menu = new TQPopupMenu(this);
+ menu->insertItem(icon, i18n("Renomve Interface"), this, TQT_SLOT(removeInterface()));
+ menu->exec(point);
+}
+
+void Configure::removeInterface() {
+ mConfig.erase(mInterfaces->currentText());
+ mInterfaces->removeItem(mInterfaces->currentItem());
+}
+*/
+#include "configure.moc"