diff options
author | Koen Kooi <koen@openembedded.org> | 2005-06-30 08:19:37 +0000 |
---|---|---|
committer | OpenEmbedded Project <openembedded-devel@lists.openembedded.org> | 2005-06-30 08:19:37 +0000 |
commit | c8e5702127e507e82e6f68a4b8c546803accea9d (patch) | |
tree | 00583491f40ecc640f2b28452af995e3a63a09d7 /packages/zipsc/zipsc-0.4.3/gcc3.patch | |
parent | 87ec8ca4d2e2eb4d1c1e1e1a6b46a395d56805b9 (diff) |
import clean BK tree at cset 1.3670
Diffstat (limited to 'packages/zipsc/zipsc-0.4.3/gcc3.patch')
-rw-r--r-- | packages/zipsc/zipsc-0.4.3/gcc3.patch | 961 |
1 files changed, 961 insertions, 0 deletions
diff --git a/packages/zipsc/zipsc-0.4.3/gcc3.patch b/packages/zipsc/zipsc-0.4.3/gcc3.patch index e69de29bb2..4b2f9a9a6c 100644 --- a/packages/zipsc/zipsc-0.4.3/gcc3.patch +++ b/packages/zipsc/zipsc-0.4.3/gcc3.patch @@ -0,0 +1,961 @@ + +# +# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher +# + +--- zipsc_0.4.3/MainWindow.cpp~gcc3 2002-07-06 09:46:25.000000000 +0200 ++++ zipsc_0.4.3/MainWindow.cpp 2004-02-20 17:23:03.000000000 +0100 +@@ -1,476 +1,477 @@ +-/**********************************************************************
+-** Copyright (C) 2002 Walter Rawdanik. All rights reserved.
+-**
+-** This file is part of zipsc application for Qtopia Environment.
+-**
+-** Issues:
+-** Due to incomplete design of QueryResult which returns pointer instead of object, it needs to be explicitly
+-** deleted after each use. Extremely error-prone and basically pain-in the ass.
+-** I am still no 100% sure I completely understand Qt layouts. It seems that QComboBox grows to the size of the
+-** widest string in it which causes it to go beyond the edge of the screen on Qtopia small screen.
+-** The only solution I could find was to call setMaximumSize() on each with some hard coded magic number that
+-** looks about right - not a good solution.
+-**
+-**
+-** This file may be distributed and/or modified under the terms of the
+-** GPL license appearing in the file LICENSE included in the
+-** packaging of this file.
+-** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+-** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+-**
+-**********************************************************************/
+-#include <qpe/qpeapplication.h>
+-#include <qpe/config.h>
+-#include <qpe/fileselector.h>
+-#include "MainWindow.h"
+-#include <stdlib.h>
+-#include <stdio.h>
+-#include <ctype.h>
+-#include <qlayout.h>
+-#include <qframe.h>
+-#include <qlistbox.h>
+-#include <qlabel.h>
+-#include <qcombobox.h>
+-#include <qwidgetstack.h>
+-#include <qlineedit.h>
+-#include <qpushbutton.h>
+-#include <qstringlist.h>
+-#include <qmessagebox.h>
+-#include <qtabbar.h>
+-#include <qtoolbutton.h>
+-#include <qtextbrowser.h>
+-#include <qspinbox.h>
+-#include <qpe/menubutton.h>
+-#include <qpe/qpetoolbar.h>
+-#include "InputDialog.h"
+-#include <qdir.h>
+-#include <qfile.h>
+-
+-AboutDialog::AboutDialog(const QPixmap &icon,const QString &caption, const QString &t,const QString &l,QWidget *parent):QDialog(parent,0,true)
+-{
+- setCaption(caption);
+-
+- if ( parent )
+- {
+- setPalette(parent->palette());
+- }
+-
+- setMinimumSize(220,160);
+- QGridLayout *gl= new QGridLayout(this,2,2,4,2);
+- gl->addRowSpacing ( 0,0);
+- pix=new QLabel(this);
+- pix->setPixmap(icon);
+- gl->addWidget(pix,0,0);
+- title=new QLabel(t,this);
+- gl->addWidget(title,0,1);
+- label=new QLabel(l,this);
+- gl->addMultiCellWidget(label,1,1,0,1);
+-
+-}
+-
+-void AboutDialog::displayAbout(const QPixmap &icon,const QString &caption,const QString &t, const QString &text, QWidget *parent)
+-{
+- AboutDialog *dlg=new AboutDialog(icon,caption,t,text,parent);
+- dlg->exec();
+- delete dlg;
+-}
+-
+-MainWindow::MainWindow( QWidget* parent, const char* name, WFlags f )
+-: QMainWindow( parent, name, f )
+-{
+- setCaption("zIPSC");
+-
+- lColor="#f8f8f8";
+- dColor="#e8e8e8";
+- fColor="#848484";
+- memset(&n, 0, sizeof(n));
+- processType=true;
+-
+- QBoxLayout *topLayout=new QVBoxLayout(this,1);
+-
+-
+- //QFrame *topFrame=new QFrame (this);
+- //topFrame->setMaximumWidth(240);
+-
+- QGridLayout *gl= new QGridLayout(this,3,6,2,2);
+- gl->addColSpacing ( 1,4);
+-
+- topLayout->addLayout(gl);
+- gl->setColStretch(0,0);
+- gl->setColStretch(2,10);
+-
+- QLabel *lb=new QLabel("Address:",this);
+- gl->addWidget(lb,0,0);
+- networkAddress= new QComboBox(true,this);
+- gl->addMultiCellWidget(networkAddress,0,0,2,4);
+- go= new QPushButton("Go",this);
+- gl->addWidget(go,0,5);
+- lb=new QLabel("Type:",this);
+- gl->addWidget(lb,1,0);
+-
+- addressType= new MenuButton ( this);
+- addressType->insertItem("Class A (1.x.x.x - 126.x.x.x)");
+- addressType->insertItem("Class B (128.x.x.x - 191.x.x.x)");
+- addressType->insertItem("Class C (192.x.x.x - 223.x.x.x)");
+- gl->addMultiCellWidget(addressType,1,1,2,5);
+-
+- bitsLabel=new QLabel("Subnet bits:",this);
+- gl->addWidget(bitsLabel,2,0);
+- subnetBits= new QSpinBox(this);
+- gl->addWidget(subnetBits,2,2,AlignLeft);
+-
+- saveB=new QToolButton(this);
+- saveB->setAutoRaise(false);
+- saveB->setPixmap(QPixmap(QPEApplication::qpeDir()+"pics/zipsc/filesave.png_"));
+- gl->addWidget(saveB,2,3);
+- copyB=new QToolButton(this);
+- copyB->setAutoRaise(false);
+- copyB->setPixmap(QPixmap(QPEApplication::qpeDir()+"pics/zipsc/editcopy.png_"));
+- gl->addWidget(copyB,2,4);
+- aboutB=new QToolButton(this);
+- aboutB->setAutoRaise(false);
+- aboutB->setPixmap(QPixmap(QPEApplication::qpeDir()+"pics/zipsc/about.png_"));
+- gl->addWidget(aboutB,2,5);
+-
+- topLayout->addSpacing(4);
+-
+- int i;
+-
+- switcher= new QTabBar(this);
+- switcher->setShape(QTabBar::RoundedAbove);
+-
+- const char *tLabels[]={"General","Subnets/Hosts","Host","CIDR"};
+-
+- for ( i=0;i<T_LAST;i++ )
+- {
+- tabValues[i]=switcher->addTab(new QTab(tLabels[i]));
+- }
+- switcher->setCurrentTab(0);
+- topLayout->addWidget(switcher);
+-
+-
+-
+- pageView=new QWidgetStack(this);
+- for ( i=0;i<T_LAST;i++ )
+- {
+- pages[i]=new QTextBrowser(pageView);
+- pages[i]->setHScrollBarMode(QScrollView::AlwaysOff);
+- pageView->addWidget(pages[i],i);
+- }
+-
+- topLayout->addWidget(pageView,10);
+-
+-
+- initVariables();
+- showPage(GENERAL_VIEW);
+-
+-
+- connect(switcher,SIGNAL(selected(int)),SLOT(showPage(int)));
+- connect(networkAddress->lineEdit(),SIGNAL(returnPressed()),SLOT(goButtonClicked()));
+- connect(go,SIGNAL(clicked()),SLOT(goButtonClicked()));
+- connect(addressType,SIGNAL(selected (int)),SLOT(typeButtonPressed(int)));
+- connect(subnetBits,SIGNAL(valueChanged (int)),SLOT(bitsChanged(int)));
+- connect(saveB,SIGNAL(clicked()),SLOT(saveFile()));
+- connect(copyB,SIGNAL(clicked()),SLOT(copyText()));
+- connect(aboutB,SIGNAL(clicked()),SLOT(displayAbout()));
+-
+-
+-}
+-
+-MainWindow::~MainWindow()
+-{
+- saveVariables();
+-}
+-
+-
+-void MainWindow::goButtonClicked()
+-{
+- QString searchTerm=networkAddress->currentText();
+-
+- if ( searchTerm.isEmpty() )
+- return;
+-
+- if ( ipsc_network_init_parse_text(&n, searchTerm) < 0 )
+- {
+- QMessageBox::warning (this,"zIPSC","Incorrect network address",0);
+- }
+-
+- ipsc_network_init_parse_text(&n,searchTerm);
+- updateAll();
+-
+- // implement history .... if selected text already exists, delete it from the list ... if there are more than 10 items delete last used
+- QListBox *lb=networkAddress->listBox();
+-
+- for ( unsigned int i=0;i<lb->count();i++ )
+- {
+- if ( searchTerm.upper()==lb->text(i).upper() )
+- {
+- lb->removeItem(i);
+- break;
+- }
+- }
+- if ( networkAddress->count()>16 )
+- networkAddress->removeItem(networkAddress->count()-1);
+- networkAddress->insertItem(searchTerm,0);
+-
+- processType=false;
+- subnetBits->setValue(n.subnet_bits);
+- addressType->select((int)(tolower(n.nclass)-'a'));
+- processType=true;
+-
+-}
+-
+-void MainWindow::typeButtonPressed(int i)
+-{
+- if ( processType )
+- {
+- char cl='a'+(int)i;
+-
+- ipsc_network_set_class_info(&n, cl, TRUE);
+- ipsc_network_init(&n);
+- updateAll();
+-
+- QString tmp;
+- tmp.sprintf("%s/%d", denumberize(n.host_addr),ipsc_network_get_prefix_bits(&n));
+- networkAddress->lineEdit()->setText(tmp);
+- }
+-}
+-
+-void MainWindow::bitsChanged(int b)
+-{
+- n.subnet_bits=b;
+- ipsc_network_init(&n);
+- QString tmp;
+- tmp.sprintf("%s/%d", denumberize(n.host_addr),ipsc_network_get_prefix_bits(&n));
+- networkAddress->lineEdit()->setText(tmp);
+- updateAll();
+-}
+-
+-void MainWindow::showPage(int t)
+-{
+- if ( t==CIDR_VIEW )
+- {
+- bitsLabel->setText("Supnet bits");
+- subnetBits->setMaxValue(31);
+- }
+- else
+- {
+- bitsLabel->setText("Subnet bits");
+- subnetBits->setMaxValue(n.subnet_bits_max);
+- }
+- pageView->raiseWidget(t);
+-
+-}
+-
+-
+-
+-void MainWindow::updateAll()
+-{
+- subnetBits->setMaxValue(n.subnet_bits_max);
+- for ( unsigned int i=0;i<T_LAST;i++ )
+- updatePage(i);
+-
+-}
+-
+-void MainWindow::updatePage(int t)
+-{
+- QString text;
+-
+- text.append("<qt bgcolor="+dColor+">");
+- text.append("<table border=0 width=210>");
+-
+- switch ( t )
+- {
+- case GENERAL_VIEW:
+- updateGPage(text);
+- break;
+- case SUBNETS_VIEW:
+- updateSPage(text);
+- break;
+- case HOST_VIEW:
+- updateHPage(text);
+- break;
+- case CIDR_VIEW:
+- updateCPage(text);
+- break;
+- }
+-
+- text.append("</table></html>");
+-
+- pages[t]->setText(text);
+-
+-}
+-
+-void MainWindow::updateGPage(QString &s)
+-{
+- s.append("<tr><td width=50%><font color="+fColor+">Subnet maximum</font></td><td width=50%><font color="+fColor+">Addresses/Subnet</font></td></tr>");
+- s.append("<tr><td bgcolor="+lColor+" width=50%>"+QString::number(n.subnet_max)+
+- "</td><td bgcolor="+lColor+" width=50%>"+QString::number(n.host_max)+"</td></tr>");
+- s.append("<tr><td width=100% colspan=2><font color="+fColor+">Bitmap (network,subnet,host)</font></td></tr>");
+- s.append("<tr><td width=100% bgcolor="+lColor+" colspan=2>"+QString(n.bitmap)+"</td></tr>");
+- s.append("<tr><td width=50%><font color="+fColor+">Class Mask</font></td><td width=50%><font color="+fColor+">Hex Class Mask</font></td></tr>");
+- QString tmp;
+- int fmask=ipsc_network_get_full_mask(&n);
+- tmp.sprintf("%X",n.mask);
+- s.append("<tr><td bgcolor="+lColor+" width=50%>"+QString(denumberize(n.mask))+
+- "</td><td bgcolor="+lColor+" width=50%>"+tmp+"</td></tr>");
+- s.append("<tr><td width=50%><font color="+fColor+">Full Subnet Mask</font></td><td width=50%><font color="+fColor+">Full Hex Subnet Mask</font></td></tr>");
+- tmp.sprintf("%X",fmask);
+- s.append("<tr><td bgcolor="+lColor+" width=50%>"+QString(denumberize(fmask))+
+- "</td><td bgcolor="+lColor+" width=50%>"+tmp+"</td></tr>");
+-}
+-
+-void MainWindow::updateSPage(QString &s)
+-{
+- s.append("<tr><th width=10%>Subnet</th><th width=90% >Address range</th></tr>");
+-
+- unsigned int subnet_addr = n.addr;
+- QString tmp;
+-
+- for ( unsigned int i = 0; i < n.subnet_max; i++ )
+- {
+- tmp.sprintf("%s - ",denumberize(subnet_addr));
+- tmp.append(denumberize((subnet_addr + n.host_max-1)));
+- if ( ipsc_host_is_on_subnet(subnet_addr,&n) )
+- {
+- tmp.append(" *");
+- }
+- s.append("<tr><td bgcolor="+lColor+" width=10%>"+ QString::number(i+1)+
+- "</td><td bgcolor="+lColor+" width=90%>"+tmp+"</td></tr>");
+- subnet_addr += n.host_max;
+- if ( i==256 )
+- {
+- s.append("<tr><td colspan=2 bgcolor="+lColor+" width=10%>"+ QString::number(n.subnet_max-i-1)+
+- " more subnets ...</td></tr>");
+- break;
+- }
+- }
+-}
+-
+-void MainWindow::updateHPage(QString &s)
+-{
+- unsigned int lbound = ipsc_network_get_host_subnet_first_host(&n);
+- unsigned int ubound = ipsc_network_get_host_subnet_last_host(&n);
+-
+- QString tmp;
+- tmp.sprintf("%X",n.host_addr);
+- s.append("<tr><td width=50%><font color="+fColor+">IP Address</font></td><td width=50%><font color="+fColor+">Hex IP Address</font></td></tr>");
+- s.append("<tr><td bgcolor="+lColor+" width=50%>"+QString(denumberize(n.host_addr))+
+- "</td><td bgcolor="+lColor+" width=50%>"+tmp+"</td></tr>");
+- tmp.sprintf("%s - ",denumberize(lbound));
+- tmp.append(denumberize(ubound));
+- s.append("<tr><td width=100% colspan=2><font color="+fColor+">Host Allocation Range</font></td></tr>");
+- s.append("<tr><td width=100% bgcolor="+lColor+" colspan=2>"+tmp+"</td></tr>");
+- s.append("<tr><td width=50%><font color="+fColor+">Subnet Mask</font></td><td width=50%><font color="+fColor+">Subnet ID</font></td></tr>");
+- s.append("<tr><td bgcolor="+lColor+" width=50%>"+QString(denumberize(n.subnet_mask))+
+- "</td><td bgcolor="+lColor+" width=50%>"+QString(denumberize( ipsc_network_get_subnet_id(&n)))+"</td></tr>");
+- s.append("<tr><td width=50%><font color="+fColor+">Network ID</font></td><td width=50%><font color="+fColor+">Host ID</font></td></tr>");
+- s.append("<tr><td bgcolor="+lColor+" width=50%>"+QString(denumberize( ipsc_network_get_network_id(&n)))+
+- "</td><td bgcolor="+lColor+" width=50%>"+QString(denumberize(n.host_id))+"</td></tr>");
+-}
+-
+-void MainWindow::updateCPage(QString &s)
+-{
+- QString tmp;
+-
+- tmp.sprintf("%s/%d", denumberize(n.addr),ipsc_network_get_prefix_bits(&n));
+-
+- s.append("<tr><td width=50%><font color="+fColor+">CIDR Notation</font></td><td width=50%><font color="+fColor+">Supernet Maximum</font></td></tr>");
+- s.append("<tr><td bgcolor="+lColor+" width=50%>"+tmp+
+- "</td><td bgcolor="+lColor+" width=50%>"+QString::number(ipsc_network_get_supernet_max(&n))+"</td></tr>");
+- tmp.sprintf("%s/%d", denumberize(n.addr), n.bits);
+- s.append("<tr><td width=50%><font color="+fColor+">Classful Network</font></td><td width=50%><font color="+fColor+">Cisco Wildcard</font></td></tr>");
+- s.append("<tr><td bgcolor="+lColor+" width=50%>"+tmp+
+- "</td><td bgcolor="+lColor+" width=50%>"+QString(denumberize(n.cisco_wildcard))+"</td></tr>");
+- tmp.sprintf("%s / ", denumberize(n.addr));
+- tmp.append(denumberize(ipsc_network_get_full_mask(&n)));
+- s.append("<tr><td width=100% colspan=2><font color="+fColor+">Route/Mask</font></td></tr>");
+- s.append("<tr><td width=100% bgcolor="+lColor+" colspan=2>"+tmp+"</td></tr>");
+- tmp.sprintf("%X / %X", n.addr,ipsc_network_get_full_mask(&n));
+- s.append("<tr><td width=100% colspan=2><font color="+fColor+">Hex Route/Mask</font></td></tr>");
+- s.append("<tr><td width=100% bgcolor="+lColor+" colspan=2>"+tmp+"</td></tr>");
+-
+-
+-}
+-
+-void MainWindow::saveVariables()
+-{
+- Config cfg("zIPSC");
+- cfg.setGroup("zIPSC");
+-
+- QStringList ls;
+-
+- for ( int i=0;i<networkAddress->count();i++ )
+- {
+- ls.append(networkAddress->text(i));
+- }
+- QString tmp;
+- tmp.sprintf("%s/%d", denumberize(n.host_addr),ipsc_network_get_prefix_bits(&n));
+- cfg.writeEntry("NetAddress",tmp);
+- cfg.writeEntry("SubnetBits",(int)n.subnet_bits);
+- cfg.writeEntry("HItems",ls,'|');
+-}
+-
+-void MainWindow::initVariables()
+-{
+- Config cfg("zIPSC");
+- cfg.setGroup("zIPSC");
+-
+- networkAddress->insertStringList ( cfg.readListEntry("HItems",'|'));
+- QString net=cfg.readEntry("NetAddress","127.0.0.1/8");
+- networkAddress->lineEdit()->setText(net);
+- ipsc_network_init_parse_text(&n,net.latin1());
+- n.subnet_bits=cfg.readNumEntry ("SubnetBits", 0 );
+- ipsc_network_init(&n);
+- subnetBits->setMaxValue(n.subnet_bits_max);
+- subnetBits->setValue(n.subnet_bits);
+- processType=false;
+- addressType->select((int)(tolower(n.nclass)-'a'));
+- processType=true;
+- updateAll();
+-}
+-
+-void MainWindow::saveFile()
+-{
+- QString tmp;
+- tmp.sprintf("%s/%d", denumberize(n.host_addr),ipsc_network_get_prefix_bits(&n));
+- tmp.replace(QRegExp("[./]"),"_");
+- tmp.append(".txt");
+- QString fileName=InputDialog::getText("zIPSC","Save as ...",tmp,this);
+- if ( fileName.isEmpty() )
+- return;
+- fileName=QDir::home().absFilePath(fileName);
+- FILE *f;
+-
+- if ( (f = fopen((const char *)fileName.latin1() , "a")) == NULL )
+- {
+- QMessageBox::warning (this,"zIPSC","Error creating "+ fileName +".",0);
+- return;
+- }
+- ipsc_network_fprint_general(&n, f);
+- ipsc_network_fprint_host(&n, f);
+- ipsc_network_fprint_cidr(&n, f);
+- fclose(f);
+-
+-}
+-
+-void MainWindow::copyText()
+-{
+- QTextBrowser *tb=(QTextBrowser*)pageView->visibleWidget();
+- if ( tb && tb->hasSelectedText() )
+- {
+- tb->copy();
+- }
+-}
+-
+-void MainWindow::displayAbout()
+-{
+-
+- AboutDialog::displayAbout(QPixmap(QPEApplication::qpeDir()+"pics/zipsc.png"),
+- "zIPSC","<qt><b><h2>zIPSC</h2></b></qt>",
+- "<qt><hr>IP subnet calculator<p>Ported to Qtopia by Walter Rawdanik (zaurus@warmi.net)
+- <p>Based on 'IPSC' (http://ipsc.sourceforge.net/software.html)<p>Licensed under GNU General Public License</qt>",
+- this);}
+-
+-
+-
++/********************************************************************** ++** Copyright (C) 2002 Walter Rawdanik. All rights reserved. ++** ++** This file is part of zipsc application for Qtopia Environment. ++** ++** Issues: ++** Due to incomplete design of QueryResult which returns pointer instead of object, it needs to be explicitly ++** deleted after each use. Extremely error-prone and basically pain-in the ass. ++** I am still no 100% sure I completely understand Qt layouts. It seems that QComboBox grows to the size of the ++** widest string in it which causes it to go beyond the edge of the screen on Qtopia small screen. ++** The only solution I could find was to call setMaximumSize() on each with some hard coded magic number that ++** looks about right - not a good solution. ++** ++** ++** This file may be distributed and/or modified under the terms of the ++** GPL license appearing in the file LICENSE included in the ++** packaging of this file. ++** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ++** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ++** ++**********************************************************************/ ++#include <qpe/qpeapplication.h> ++#include <qpe/config.h> ++#include <qpe/fileselector.h> ++#include "MainWindow.h" ++#include <stdlib.h> ++#include <stdio.h> ++#include <ctype.h> ++#include <qlayout.h> ++#include <qframe.h> ++#include <qlistbox.h> ++#include <qlabel.h> ++#include <qcombobox.h> ++#include <qwidgetstack.h> ++#include <qlineedit.h> ++#include <qpushbutton.h> ++#include <qstringlist.h> ++#include <qmessagebox.h> ++#include <qtabbar.h> ++#include <qtoolbutton.h> ++#include <qtextbrowser.h> ++#include <qspinbox.h> ++#include <qpe/menubutton.h> ++#include <qpe/qpetoolbar.h> ++#include "InputDialog.h" ++#include <qdir.h> ++#include <qfile.h> ++ ++AboutDialog::AboutDialog(const QPixmap &icon,const QString &caption, const QString &t,const QString &l,QWidget *parent):QDialog(parent,0,true) ++{ ++ setCaption(caption); ++ ++ if ( parent ) ++ { ++ setPalette(parent->palette()); ++ } ++ ++ setMinimumSize(220,160); ++ QGridLayout *gl= new QGridLayout(this,2,2,4,2); ++ gl->addRowSpacing ( 0,0); ++ pix=new QLabel(this); ++ pix->setPixmap(icon); ++ gl->addWidget(pix,0,0); ++ title=new QLabel(t,this); ++ gl->addWidget(title,0,1); ++ label=new QLabel(l,this); ++ gl->addMultiCellWidget(label,1,1,0,1); ++ ++} ++ ++void AboutDialog::displayAbout(const QPixmap &icon,const QString &caption,const QString &t, const QString &text, QWidget *parent) ++{ ++ AboutDialog *dlg=new AboutDialog(icon,caption,t,text,parent); ++ dlg->exec(); ++ delete dlg; ++} ++ ++MainWindow::MainWindow( QWidget* parent, const char* name, WFlags f ) ++: QMainWindow( parent, name, f ) ++{ ++ setCaption("zIPSC"); ++ ++ lColor="#f8f8f8"; ++ dColor="#e8e8e8"; ++ fColor="#848484"; ++ memset(&n, 0, sizeof(n)); ++ processType=true; ++ ++ QBoxLayout *topLayout=new QVBoxLayout(this,1); ++ ++ ++ //QFrame *topFrame=new QFrame (this); ++ //topFrame->setMaximumWidth(240); ++ ++ QGridLayout *gl= new QGridLayout(this,3,6,2,2); ++ gl->addColSpacing ( 1,4); ++ ++ topLayout->addLayout(gl); ++ gl->setColStretch(0,0); ++ gl->setColStretch(2,10); ++ ++ QLabel *lb=new QLabel("Address:",this); ++ gl->addWidget(lb,0,0); ++ networkAddress= new QComboBox(true,this); ++ gl->addMultiCellWidget(networkAddress,0,0,2,4); ++ go= new QPushButton("Go",this); ++ gl->addWidget(go,0,5); ++ lb=new QLabel("Type:",this); ++ gl->addWidget(lb,1,0); ++ ++ addressType= new MenuButton ( this); ++ addressType->insertItem("Class A (1.x.x.x - 126.x.x.x)"); ++ addressType->insertItem("Class B (128.x.x.x - 191.x.x.x)"); ++ addressType->insertItem("Class C (192.x.x.x - 223.x.x.x)"); ++ gl->addMultiCellWidget(addressType,1,1,2,5); ++ ++ bitsLabel=new QLabel("Subnet bits:",this); ++ gl->addWidget(bitsLabel,2,0); ++ subnetBits= new QSpinBox(this); ++ gl->addWidget(subnetBits,2,2,AlignLeft); ++ ++ saveB=new QToolButton(this); ++ saveB->setAutoRaise(false); ++ saveB->setPixmap(QPixmap(QPEApplication::qpeDir()+"pics/zipsc/filesave.png_")); ++ gl->addWidget(saveB,2,3); ++ copyB=new QToolButton(this); ++ copyB->setAutoRaise(false); ++ copyB->setPixmap(QPixmap(QPEApplication::qpeDir()+"pics/zipsc/editcopy.png_")); ++ gl->addWidget(copyB,2,4); ++ aboutB=new QToolButton(this); ++ aboutB->setAutoRaise(false); ++ aboutB->setPixmap(QPixmap(QPEApplication::qpeDir()+"pics/zipsc/about.png_")); ++ gl->addWidget(aboutB,2,5); ++ ++ topLayout->addSpacing(4); ++ ++ int i; ++ ++ switcher= new QTabBar(this); ++ switcher->setShape(QTabBar::RoundedAbove); ++ ++ const char *tLabels[]={"General","Subnets/Hosts","Host","CIDR"}; ++ ++ for ( i=0;i<T_LAST;i++ ) ++ { ++ tabValues[i]=switcher->addTab(new QTab(tLabels[i])); ++ } ++ switcher->setCurrentTab(0); ++ topLayout->addWidget(switcher); ++ ++ ++ ++ pageView=new QWidgetStack(this); ++ for ( i=0;i<T_LAST;i++ ) ++ { ++ pages[i]=new QTextBrowser(pageView); ++ pages[i]->setHScrollBarMode(QScrollView::AlwaysOff); ++ pageView->addWidget(pages[i],i); ++ } ++ ++ topLayout->addWidget(pageView,10); ++ ++ ++ initVariables(); ++ showPage(GENERAL_VIEW); ++ ++ ++ connect(switcher,SIGNAL(selected(int)),SLOT(showPage(int))); ++ connect(networkAddress->lineEdit(),SIGNAL(returnPressed()),SLOT(goButtonClicked())); ++ connect(go,SIGNAL(clicked()),SLOT(goButtonClicked())); ++ connect(addressType,SIGNAL(selected (int)),SLOT(typeButtonPressed(int))); ++ connect(subnetBits,SIGNAL(valueChanged (int)),SLOT(bitsChanged(int))); ++ connect(saveB,SIGNAL(clicked()),SLOT(saveFile())); ++ connect(copyB,SIGNAL(clicked()),SLOT(copyText())); ++ connect(aboutB,SIGNAL(clicked()),SLOT(displayAbout())); ++ ++ ++} ++ ++MainWindow::~MainWindow() ++{ ++ saveVariables(); ++} ++ ++ ++void MainWindow::goButtonClicked() ++{ ++ QString searchTerm=networkAddress->currentText(); ++ ++ if ( searchTerm.isEmpty() ) ++ return; ++ ++ if ( ipsc_network_init_parse_text(&n, searchTerm) < 0 ) ++ { ++ QMessageBox::warning (this,"zIPSC","Incorrect network address",0); ++ } ++ ++ ipsc_network_init_parse_text(&n,searchTerm); ++ updateAll(); ++ ++ // implement history .... if selected text already exists, delete it from the list ... if there are more than 10 items delete last used ++ QListBox *lb=networkAddress->listBox(); ++ ++ for ( unsigned int i=0;i<lb->count();i++ ) ++ { ++ if ( searchTerm.upper()==lb->text(i).upper() ) ++ { ++ lb->removeItem(i); ++ break; ++ } ++ } ++ if ( networkAddress->count()>16 ) ++ networkAddress->removeItem(networkAddress->count()-1); ++ networkAddress->insertItem(searchTerm,0); ++ ++ processType=false; ++ subnetBits->setValue(n.subnet_bits); ++ addressType->select((int)(tolower(n.nclass)-'a')); ++ processType=true; ++ ++} ++ ++void MainWindow::typeButtonPressed(int i) ++{ ++ if ( processType ) ++ { ++ char cl='a'+(int)i; ++ ++ ipsc_network_set_class_info(&n, cl, TRUE); ++ ipsc_network_init(&n); ++ updateAll(); ++ ++ QString tmp; ++ tmp.sprintf("%s/%d", denumberize(n.host_addr),ipsc_network_get_prefix_bits(&n)); ++ networkAddress->lineEdit()->setText(tmp); ++ } ++} ++ ++void MainWindow::bitsChanged(int b) ++{ ++ n.subnet_bits=b; ++ ipsc_network_init(&n); ++ QString tmp; ++ tmp.sprintf("%s/%d", denumberize(n.host_addr),ipsc_network_get_prefix_bits(&n)); ++ networkAddress->lineEdit()->setText(tmp); ++ updateAll(); ++} ++ ++void MainWindow::showPage(int t) ++{ ++ if ( t==CIDR_VIEW ) ++ { ++ bitsLabel->setText("Supnet bits"); ++ subnetBits->setMaxValue(31); ++ } ++ else ++ { ++ bitsLabel->setText("Subnet bits"); ++ subnetBits->setMaxValue(n.subnet_bits_max); ++ } ++ pageView->raiseWidget(t); ++ ++} ++ ++ ++ ++void MainWindow::updateAll() ++{ ++ subnetBits->setMaxValue(n.subnet_bits_max); ++ for ( unsigned int i=0;i<T_LAST;i++ ) ++ updatePage(i); ++ ++} ++ ++void MainWindow::updatePage(int t) ++{ ++ QString text; ++ ++ text.append("<qt bgcolor="+dColor+">"); ++ text.append("<table border=0 width=210>"); ++ ++ switch ( t ) ++ { ++ case GENERAL_VIEW: ++ updateGPage(text); ++ break; ++ case SUBNETS_VIEW: ++ updateSPage(text); ++ break; ++ case HOST_VIEW: ++ updateHPage(text); ++ break; ++ case CIDR_VIEW: ++ updateCPage(text); ++ break; ++ } ++ ++ text.append("</table></html>"); ++ ++ pages[t]->setText(text); ++ ++} ++ ++void MainWindow::updateGPage(QString &s) ++{ ++ s.append("<tr><td width=50%><font color="+fColor+">Subnet maximum</font></td><td width=50%><font color="+fColor+">Addresses/Subnet</font></td></tr>"); ++ s.append("<tr><td bgcolor="+lColor+" width=50%>"+QString::number(n.subnet_max)+ ++ "</td><td bgcolor="+lColor+" width=50%>"+QString::number(n.host_max)+"</td></tr>"); ++ s.append("<tr><td width=100% colspan=2><font color="+fColor+">Bitmap (network,subnet,host)</font></td></tr>"); ++ s.append("<tr><td width=100% bgcolor="+lColor+" colspan=2>"+QString(n.bitmap)+"</td></tr>"); ++ s.append("<tr><td width=50%><font color="+fColor+">Class Mask</font></td><td width=50%><font color="+fColor+">Hex Class Mask</font></td></tr>"); ++ QString tmp; ++ int fmask=ipsc_network_get_full_mask(&n); ++ tmp.sprintf("%X",n.mask); ++ s.append("<tr><td bgcolor="+lColor+" width=50%>"+QString(denumberize(n.mask))+ ++ "</td><td bgcolor="+lColor+" width=50%>"+tmp+"</td></tr>"); ++ s.append("<tr><td width=50%><font color="+fColor+">Full Subnet Mask</font></td><td width=50%><font color="+fColor+">Full Hex Subnet Mask</font></td></tr>"); ++ tmp.sprintf("%X",fmask); ++ s.append("<tr><td bgcolor="+lColor+" width=50%>"+QString(denumberize(fmask))+ ++ "</td><td bgcolor="+lColor+" width=50%>"+tmp+"</td></tr>"); ++} ++ ++void MainWindow::updateSPage(QString &s) ++{ ++ s.append("<tr><th width=10%>Subnet</th><th width=90% >Address range</th></tr>"); ++ ++ unsigned int subnet_addr = n.addr; ++ QString tmp; ++ ++ for ( unsigned int i = 0; i < n.subnet_max; i++ ) ++ { ++ tmp.sprintf("%s - ",denumberize(subnet_addr)); ++ tmp.append(denumberize((subnet_addr + n.host_max-1))); ++ if ( ipsc_host_is_on_subnet(subnet_addr,&n) ) ++ { ++ tmp.append(" *"); ++ } ++ s.append("<tr><td bgcolor="+lColor+" width=10%>"+ QString::number(i+1)+ ++ "</td><td bgcolor="+lColor+" width=90%>"+tmp+"</td></tr>"); ++ subnet_addr += n.host_max; ++ if ( i==256 ) ++ { ++ s.append("<tr><td colspan=2 bgcolor="+lColor+" width=10%>"+ QString::number(n.subnet_max-i-1)+ ++ " more subnets ...</td></tr>"); ++ break; ++ } ++ } ++} ++ ++void MainWindow::updateHPage(QString &s) ++{ ++ unsigned int lbound = ipsc_network_get_host_subnet_first_host(&n); ++ unsigned int ubound = ipsc_network_get_host_subnet_last_host(&n); ++ ++ QString tmp; ++ tmp.sprintf("%X",n.host_addr); ++ s.append("<tr><td width=50%><font color="+fColor+">IP Address</font></td><td width=50%><font color="+fColor+">Hex IP Address</font></td></tr>"); ++ s.append("<tr><td bgcolor="+lColor+" width=50%>"+QString(denumberize(n.host_addr))+ ++ "</td><td bgcolor="+lColor+" width=50%>"+tmp+"</td></tr>"); ++ tmp.sprintf("%s - ",denumberize(lbound)); ++ tmp.append(denumberize(ubound)); ++ s.append("<tr><td width=100% colspan=2><font color="+fColor+">Host Allocation Range</font></td></tr>"); ++ s.append("<tr><td width=100% bgcolor="+lColor+" colspan=2>"+tmp+"</td></tr>"); ++ s.append("<tr><td width=50%><font color="+fColor+">Subnet Mask</font></td><td width=50%><font color="+fColor+">Subnet ID</font></td></tr>"); ++ s.append("<tr><td bgcolor="+lColor+" width=50%>"+QString(denumberize(n.subnet_mask))+ ++ "</td><td bgcolor="+lColor+" width=50%>"+QString(denumberize( ipsc_network_get_subnet_id(&n)))+"</td></tr>"); ++ s.append("<tr><td width=50%><font color="+fColor+">Network ID</font></td><td width=50%><font color="+fColor+">Host ID</font></td></tr>"); ++ s.append("<tr><td bgcolor="+lColor+" width=50%>"+QString(denumberize( ipsc_network_get_network_id(&n)))+ ++ "</td><td bgcolor="+lColor+" width=50%>"+QString(denumberize(n.host_id))+"</td></tr>"); ++} ++ ++void MainWindow::updateCPage(QString &s) ++{ ++ QString tmp; ++ ++ tmp.sprintf("%s/%d", denumberize(n.addr),ipsc_network_get_prefix_bits(&n)); ++ ++ s.append("<tr><td width=50%><font color="+fColor+">CIDR Notation</font></td><td width=50%><font color="+fColor+">Supernet Maximum</font></td></tr>"); ++ s.append("<tr><td bgcolor="+lColor+" width=50%>"+tmp+ ++ "</td><td bgcolor="+lColor+" width=50%>"+QString::number(ipsc_network_get_supernet_max(&n))+"</td></tr>"); ++ tmp.sprintf("%s/%d", denumberize(n.addr), n.bits); ++ s.append("<tr><td width=50%><font color="+fColor+">Classful Network</font></td><td width=50%><font color="+fColor+">Cisco Wildcard</font></td></tr>"); ++ s.append("<tr><td bgcolor="+lColor+" width=50%>"+tmp+ ++ "</td><td bgcolor="+lColor+" width=50%>"+QString(denumberize(n.cisco_wildcard))+"</td></tr>"); ++ tmp.sprintf("%s / ", denumberize(n.addr)); ++ tmp.append(denumberize(ipsc_network_get_full_mask(&n))); ++ s.append("<tr><td width=100% colspan=2><font color="+fColor+">Route/Mask</font></td></tr>"); ++ s.append("<tr><td width=100% bgcolor="+lColor+" colspan=2>"+tmp+"</td></tr>"); ++ tmp.sprintf("%X / %X", n.addr,ipsc_network_get_full_mask(&n)); ++ s.append("<tr><td width=100% colspan=2><font color="+fColor+">Hex Route/Mask</font></td></tr>"); ++ s.append("<tr><td width=100% bgcolor="+lColor+" colspan=2>"+tmp+"</td></tr>"); ++ ++ ++} ++ ++void MainWindow::saveVariables() ++{ ++ Config cfg("zIPSC"); ++ cfg.setGroup("zIPSC"); ++ ++ QStringList ls; ++ ++ for ( int i=0;i<networkAddress->count();i++ ) ++ { ++ ls.append(networkAddress->text(i)); ++ } ++ QString tmp; ++ tmp.sprintf("%s/%d", denumberize(n.host_addr),ipsc_network_get_prefix_bits(&n)); ++ cfg.writeEntry("NetAddress",tmp); ++ cfg.writeEntry("SubnetBits",(int)n.subnet_bits); ++ cfg.writeEntry("HItems",ls,'|'); ++} ++ ++void MainWindow::initVariables() ++{ ++ Config cfg("zIPSC"); ++ cfg.setGroup("zIPSC"); ++ ++ networkAddress->insertStringList ( cfg.readListEntry("HItems",'|')); ++ QString net=cfg.readEntry("NetAddress","127.0.0.1/8"); ++ networkAddress->lineEdit()->setText(net); ++ ipsc_network_init_parse_text(&n,net.latin1()); ++ n.subnet_bits=cfg.readNumEntry ("SubnetBits", 0 ); ++ ipsc_network_init(&n); ++ subnetBits->setMaxValue(n.subnet_bits_max); ++ subnetBits->setValue(n.subnet_bits); ++ processType=false; ++ addressType->select((int)(tolower(n.nclass)-'a')); ++ processType=true; ++ updateAll(); ++} ++ ++void MainWindow::saveFile() ++{ ++ QString tmp; ++ tmp.sprintf("%s/%d", denumberize(n.host_addr),ipsc_network_get_prefix_bits(&n)); ++ tmp.replace(QRegExp("[./]"),"_"); ++ tmp.append(".txt"); ++ QString fileName=InputDialog::getText("zIPSC","Save as ...",tmp,this); ++ if ( fileName.isEmpty() ) ++ return; ++ fileName=QDir::home().absFilePath(fileName); ++ FILE *f; ++ ++ if ( (f = fopen((const char *)fileName.latin1() , "a")) == NULL ) ++ { ++ QMessageBox::warning (this,"zIPSC","Error creating "+ fileName +".",0); ++ return; ++ } ++ ipsc_network_fprint_general(&n, f); ++ ipsc_network_fprint_host(&n, f); ++ ipsc_network_fprint_cidr(&n, f); ++ fclose(f); ++ ++} ++ ++void MainWindow::copyText() ++{ ++ QTextBrowser *tb=(QTextBrowser*)pageView->visibleWidget(); ++ if ( tb && tb->hasSelectedText() ) ++ { ++ tb->copy(); ++ } ++} ++ ++void MainWindow::displayAbout() ++{ ++ ++ AboutDialog::displayAbout(QPixmap(QPEApplication::qpeDir()+"pics/zipsc.png"), ++ "zIPSC","<qt><b><h2>zIPSC</h2></b></qt>", ++ "<qt><hr>IP subnet calculator<p>Ported to Qtopia by Walter Rawdanik (zaurus@warmi.net) " ++ "<p>Based on 'IPSC' (http://ipsc.sourceforge.net/software.html)<p>Licensed under GNU General Public License</qt>", ++ this); ++} ++ ++ ++ |