|
楼主 |
发表于 2008-10-15 08:16:19
|
显示全部楼层
完成了整个界面、配置、拔号、断开、提示功能,代码如下:
尚缺网络状态判断并显示的功能,正在查询方法。- #include <QtGui>
- #include "hello.h"
- myclass::myclass()
- {
- uid=getuid();
- FILE *in=NULL;
- char sl[128];
- in=fopen("/etc/ppp/pap-secrets","r");
- if(in==NULL){printf("can't open the /etc/ppp/pap-secrets");}
- while(fgets(sl,128,in))
- {
- if(strstr(sl,"mxd_connect"))
- {
- break;
- }
- }
- char *a,*b;
- a=strtok(sl,"\t*");
- if(a!=NULL)
- {a=strtok(NULL,"\t*");}
- if(a!=NULL)
- {b=strtok(NULL,"\t*");}
- fclose(in);
- QTextCodec::setCodecForTr(QTextCodec::codecForName("GB2312"));
- setMinimumSize(200,100);
- setMaximumSize(200,100);
- this->move(400,200);
- QString aText,bText;
- lee1=new QLineEdit(this);
- lee1->setContextMenuPolicy(Qt::NoContextMenu);
- lee1->setAlignment(Qt::AlignLeft|Qt::AlignVCenter);
- lee1->setGeometry(10,10,180,20);
- aText=a;
- lee1->setText(aText);
- lee2=new QLineEdit(this);
- lee2->setContextMenuPolicy(Qt::NoContextMenu);
- lee2->setAlignment(Qt::AlignLeft|Qt::AlignVCenter);
- lee2->setGeometry(10,40,180,20);
- bText=b;
- lee2->setText(bText);
- lee2->setEchoMode(QLineEdit::Password);
- b1=new QPushButton(tr("拔号"),this);
- b1->setGeometry(90,70,40,25);
- savebutton=new QPushButton(tr("保存"),this);
- savebutton->setGeometry(140,70,40,25);
- QIcon icon = QIcon("./images/status_error.png");
- setWindowIcon(icon);
- trayIcon = new QSystemTrayIcon(this);
- trayIcon->setIcon(icon);
- trayIcon->setToolTip(tr("Magic Linux 拔号器"));
- createActions();
- createTrayIcon();
- trayIcon->show();
- setWindowTitle(tr("Magic Linux 拔号器"));
- connect(trayIcon,SIGNAL(activated(QSystemTrayIcon::ActivationReason)),this,SLOT(iconActivated(QSystemTrayIcon::ActivationReason)));
- connect(b1,SIGNAL(clicked()),this,SLOT(showM()));
- connect(b1, SIGNAL(clicked()), this, SLOT(pppoeStart()));
- connect(savebutton, SIGNAL(clicked()), this, SLOT(saveconf()));
- }
- void myclass::showM()
- {
- QString titlec=tr("请稍候");
- QString textc=QString::fromLocal8Bit("正在尝试PPPOE拔号");
- trayIcon->showMessage(titlec,textc,QSystemTrayIcon::Information,5000);
- this->hide();
- }
-
- void myclass::saveconf()
- {
- QString titlec,textc;
- if(uid==0)
- {
- titlec=tr("请稍候");
- textc=QString::fromLocal8Bit("保存新的账号密码");
- //配置1
- FILE *out=NULL;
- out=fopen("/etc/ppp/mxd-secrets","w+");
- if(out==NULL){printf("can't create the /etc/ppp/mxd-secrets");}
- char *a,*b;
- QString aText,bText;
- aText=lee1->text();
- a=aText.toLocal8Bit().data();
- bText=lee2->text();
- b=bText.toLocal8Bit().data();
- char c[40]="mxd_connect\t*\t";
- strcat(c,a);
- strcat(c,"\t*\t");
- strcat(c,b);
- strcat(c,"\t*\n");
- fputs(c,out);
- strcpy(c,a);
- strcat(c,"\t*\t");
- strcat(c,b);
- strcat(c,"\t*\n");
- fputs(c,out);
- fclose(out);
- unlink("/etc/ppp/pap-secrets");
- rename("/etc/ppp/mxd-secrets","/etc/ppp/pap-secrets");
- //配置2
- out=fopen("/etc/ppp/rp-pppoe-gui/conf.mxd_connect","w+");
- if(out==NULL){printf("can't create the conf.mxd_connect");}
- strcpy(c,"USER=");
- strcat(c,a);
- fputs(c,out);
- fputs("\nETH=eth0",out);
- fputs("\nDNSTYPE=SERVER",out);
- fputs("\nPEERDNS=yes",out);
- fputs("\nDNS1=",out);
- fputs("\nDNS2=",out);
- fputs("\nNONROOT=OK",out);
- fputs("\nSYNCHRONOUS=yes",out);
- fputs("\nFIREWALL=STANDALONE",out);
- fputs("\nSERVICENAME=",out);
- fputs("\nACNAME=",out);
- fputs("\nCONNECT_TIMEOUT=30",out);
- fputs("\nCONNECT_POLL=1",out);
- fputs("\nFORCEPING="."",out);
- fputs("\nPIDFILE=/var/run/pppoe-mxd.pid",out);
- fputs("\nCLAMPMSS=1412",out);
- fputs("\nLCP_INTERVAL=20",out);
- fputs("\nLCP_FAILURE=3",out);
- fputs("\nPPPOE_TIMEOUT=80",out);
- fputs("\nLINUX_PLUGIN=",out);
- fputs("\nDEMAND=no",out);
- fputs("\nDEFAULTROUTE=yes\n",out);
- fclose(out);
- //配置3
- out=fopen("/etc/ppp/rp-pppoe-gui/passwd","w+");
- if(out==NULL){printf("can't create the conf.mxd_connect");}
- strcpy(c,"\{ConnectionName mxd_connect Password ");
- strcat(c,b);
- strcat(c,"}\n");
- fputs(c,out);
- fclose(out);
- }else
- {titlec=tr("非法操作");
- textc=QString::fromLocal8Bit("请用root账号进行保存");
- }
- trayIcon->showMessage(titlec,textc,QSystemTrayIcon::Information,5000);
- }
-
- void myclass::iconActivated(QSystemTrayIcon::ActivationReason reason)
- {
- switch (reason) {
- case QSystemTrayIcon::DoubleClick:
- this->showNormal();
- break;
- default:
- ;
- }
- }
- void myclass::createActions()
- {
- minimizeAction = new QAction(tr("隐藏 (&I)"), this);
- connect(minimizeAction, SIGNAL(triggered()), this, SLOT(hide()));
- conn1 = new QAction(tr("拔号 (&X)"), this);
- connect(conn1, SIGNAL(triggered()), this, SLOT(pppoeStart()));
- conn2 = new QAction(tr("断开 (&R)"), this);
- connect(conn2, SIGNAL(triggered()), this, SLOT(pppoeStop()));
- quitAction = new QAction(tr("退出 (&Q)"), this);
- connect(quitAction, SIGNAL(triggered()), qApp, SLOT(quit()));
- }
- void myclass::createTrayIcon()
- {
- trayIconMenu = new QMenu(this);
- trayIconMenu->addAction(minimizeAction);
- trayIconMenu->addAction(conn1);
- trayIconMenu->addAction(conn2);
- trayIconMenu->addSeparator();
- trayIconMenu->addAction(quitAction);
- trayIcon->setContextMenu(trayIconMenu);
- }
- void myclass::pppoeStart()
- {
- if(uid==0)
- {
- system("/usr/sbin/adsl-start");
- }
- else
- {
- system("/usr/sbin/pppoe-wrapper start mxd_connect");
- }
- QIcon icon2 = QIcon("./images/status_both.png");
- trayIcon->setIcon(icon2);
- this->hide();
- }
- void myclass::pppoeStop()
- {
- if(uid==0)
- {
- system("/usr/sbin/adsl-stop");
- }
- else
- {
- system("/usr/sbin/pppoe-wrapper stop haulm");
- }
- QIcon icon1 = QIcon("./images/status_error.png");
- trayIcon->setIcon(icon1);
- }
- int main(int argc,char **argv)
- {
- QApplication testc(argc,argv);
- myclass newc;
- newc.show();
- return testc.exec();
- }
复制代码 |
|