static int map_binfile_open(struct map_priv *m) { int *magic; struct zip_cd *first_cd; dbg(1,"file_create %s\n", m->filename); m->fi=file_create(m->filename); if (! m->fi) { dbg(0,"Failed to load '%s'\n", m->filename); return 0; } if (m->check_version) m->version=file_version(m->fi, m->check_version == 2); magic=(int *)file_data_read(m->fi, 0, 4); *magic = le32_to_cpu(*magic); if (*magic == zip_lfh_sig) { if ((m->eoc=binfile_read_eoc(m->fi)) && binfile_get_index(m) && (first_cd=binfile_read_cd(m, 0, 0))) { m->cde_size=sizeof(struct zip_cd)+first_cd->zipcfnl; m->zip_members=m->index_offset/m->cde_size+1; dbg(1,"cde_size %d\n", m->cde_size); dbg(1,"members %d\n",m->zip_members); file_data_free(m->fi, (unsigned char *)first_cd); } else { dbg(0,"invalid file format for '%s'\n", m->filename); return 0; } } else file_mmap(m->fi); file_data_free(m->fi, (unsigned char *)magic); m->cachedir="/tmp/navit"; return 1; }
static void binfile_check_version(struct map_priv *m) { int version; if (!m->check_version) return; version=file_version(m->fi, m->check_version == 2); if (version != m->version) { map_binfile_close(m); map_binfile_open(m); } }
simple_file_version::simple_file_version(const wchar_t* module_path, const wchar_t* key, const wchar_t* pred) { create_simple_file_version(*this, file_version(module_path)[key], pred); }
simple_file_version::simple_file_version(HMODULE module_handle, const wchar_t* key, const wchar_t* pred) { create_simple_file_version(*this, file_version(module_handle)[key], pred); }
/************ * *功能:主界面 * 初始实例化所有的子窗口对象,设置字符编码,检测读取版本号, *更改或创建wifi管理工具wpa_supplicant的配置文件wpa_supplicant.conf,启动wifi后台管理服务, *设置主界面样式和初始化布局,多个子窗口间通信的信号和槽的初始化连接操作。 * * **/ mainview::mainview(QWidget *parent) : QWidget(parent), ui(new Ui::mainview) { /****set Shortcut Keys*****/ QShortcut *m_ALT_down_Accel= new QShortcut(QKeySequence(tr("Ctrl+Shift+Alt+Y")), this); this->login = NULL; this->netconfig = NULL; this->wifi = NULL; ui->setupUi(this); logo_x=QApplication::desktop()->width()/2-100; logo_y=50; open = false; //this->setStyleSheet("background-image:url(:/images/terminal-bg.jpg);"); /*********Set Unicode *********/ QTextCodec *codec = QTextCodec::codecForName("UTF-8"); QTextCodec::setCodecForTr(codec); QTextCodec::setCodecForLocale(codec); QTextCodec::setCodecForCStrings(codec); spicy_thread_id.clear(); QFile file_version( "./version.txt" ); if ( file_version.open(QIODevice::ReadOnly | QIODevice::Text) ) { QByteArray line = file_version.readLine(); QString mg = line; file_version.close(); QStringList md = mg.split("\n"); version = "ver "+md.at(0); } else { version = "ver 3.0.1"; } QFile file_eth("./wpa_supplicant.conf"); if (!file_eth.open(QIODevice::ReadOnly)&& file_eth.open(QIODevice::WriteOnly|QIODevice::Text)) { QTextStream out(&file_eth); out<<"ctrl_interface=/var/run/wpa_supplicant\nctrl_interface_group=0\nap_scan=1\n"<<endl; out.flush(); file_eth.close(); } else file_eth.close(); //start wpa_supplicant service QProcess::execute("ifconfig wlan0 up"); startthread("wpa_supplicant -Dwext -iwlan0 -c ./wpa_supplicant.conf "); //startthread("dhclient wlan0"); /*********Set Button Style************/ ui->pushButton->setStyleSheet("background-color:transparent"); //ui->pushButton->setStyleSheet("border: 0px");//消除边框,取消点击效果 ui->pushButton->setText(""); ui->pushButton->setFlat(true); ui->pushButton->setFocusPolicy(Qt::NoFocus); ui->pushButton_1->setStyleSheet("QPushButton{text-align:left;}"); ui->pushButton_1->setStyleSheet("border: 0px");//消除边框,取消点击效果 ui->pushButton_1->setStyleSheet("background-color:transparent"); ui->pushButton_1->setText(""); ui->pushButton_1->setFlat(true); ui->pushButton_1->setFocusPolicy(Qt::NoFocus); //ui->pushButton_2->setStyleSheet("border: 0px");//消除边框,取消点击效果 ui->pushButton_2->setStyleSheet("background-color:transparent"); ui->pushButton_2->setText(""); ui->pushButton_2->setFlat(true); ui->pushButton_2->setFocusPolicy(Qt::NoFocus); //ui->pushButton_3->setStyleSheet("border: 0px");//消除边框,取消点击效果 ui->pushButton_3->setStyleSheet("background-color:transparent"); ui->pushButton_3->setText(""); ui->pushButton_3->setFlat(true); ui->pushButton_3->setFocusPolicy(Qt::NoFocus); //ui->pushButton_4->setStyleSheet("border: 0px");//消除边框,取消点击效果 ui->pushButton_4->setStyleSheet("background-color:transparent"); ui->pushButton_4->setText(""); ui->pushButton_4->setFlat(true); ui->pushButton_4->setFocusPolicy(Qt::NoFocus); //ui->pushButton_5->setStyleSheet("border: 0px");//消除边框,取消点击效果 ui->pushButton_5->setStyleSheet("background-color:transparent"); ui->pushButton_5->setText(""); ui->pushButton_5->setFlat(true); ui->pushButton_5->setFocusPolicy(Qt::NoFocus); //ui->pushButton_5->setVisible(false); #if 1 this->login = new Login(); this->netconfig = new NetworkConfig(); this->wifi = new Wifi(); //this->termigrate = new Termigrate(); http = new SocketService(); changepasswd= new ChangePasswd(); hostlist = new CreateVmlist(); ui->widgetstack->addWidget(login); ui->widgetstack->addWidget(netconfig); ui->widgetstack->addWidget(changepasswd); ui->widgetstack->addWidget(wifi); ui->widgetstack->addWidget(hostlist); ui->widgetstack->resize(0,0); ui->widgetlist->setMovement(QListView::Static); ui->widgetlist->setFocusPolicy(Qt::NoFocus); ui->widgetlist->addItem("用户登录"); ui->widgetlist->addItem("修改配置"); ui->widgetlist->addItem("修改密码"); ui->widgetlist->setSpacing(4); ui->widgetlist->setMouseTracking(true); ui->widgetlist->item(0)->setSizeHint(QSize(30,30)); ui->widgetlist->item(1)->setSizeHint(QSize(30,30)); ui->widgetlist->item(2)->setSizeHint(QSize(30,30)); connect(this,SIGNAL(loadoperator(int)),this,SLOT(changeslots(int))); connect(ui->widgetlist,SIGNAL(currentRowChanged(int)),this,SLOT(deal_widgets(int))); connect(ui->widgetlist,SIGNAL(itemEntered(QListWidgetItem *)),this,SLOT(changeColor(QListWidgetItem *))); for(int i=0;i<ui->widgetlist->count();i++) { ui->widgetlist->item(i)->setBackground(QBrush(QColor(255,255,255))); ui->widgetlist->item(i)->setSelected(false); } /********Set Function Key As following:reflush, wifi, help, shutdown, reboot**********/ //get vmhostlist by click the reflush function setMouseTracking(true); ui->pushButton->setMouseTracking(true); ui->pushButton_1->setMouseTracking(true); ui->pushButton_2->setMouseTracking(true); ui->pushButton_3->setMouseTracking(true); ui->pushButton_4->setMouseTracking(true); ui->pushButton_5->setMouseTracking(true); connect(ui->pushButton,SIGNAL(clicked()),this->http,SLOT(gethostlist_slots())); connect(this->http,SIGNAL(signals_vmlist(QString)),this,SLOT(reflushlisttable(QString))); connect(ui->pushButton_1,SIGNAL(clicked()),this,SLOT(moreoperator())); connect(ui->pushButton_2,SIGNAL(clicked()),this,SLOT(wifioperator())); connect(ui->pushButton_3,SIGNAL(clicked()),this,SLOT(helpoperator())); connect(ui->pushButton_4,SIGNAL(clicked()),this,SLOT(closecomputer())); connect(ui->pushButton_5,SIGNAL(clicked()),this,SLOT(rebootcomputer())); /*** this function is logining when the login window whose login_signals had been sended by click the OK_button.**/ connect(this->login,SIGNAL(signals_loginmsg(QString)),this->http,SLOT(login_slots(QString)));//send login information by httpsocket //connect(this->login,SIGNAL(signals_loginmsg(QString)),this->hostlist,SLOT(getuserinfo(QString)));//send login information connect(this->http,SIGNAL(signals_loginview(int)),this,SLOT(emit_widgets(int))); connect(m_ALT_down_Accel, SIGNAL(activated()), this, SLOT(docreen())); /*** this is connect the signals with the networkconfigview and modify the password windows **/ connect(this->netconfig,SIGNAL(signals_cdms(QString)),this->http,SLOT(registertocdms(QString))); connect(this->netconfig,SIGNAL(signals_modifycdms(QString)),this->http,SLOT(modifycdmsSlots(QString))); connect(this->changepasswd,SIGNAL(signals_modify(QString)),this->http,SLOT(updateUserinfo(QString))); connect(this->changepasswd,SIGNAL(docancel()),this->http,SLOT(gethostlist_slots())); /*** when click the OK_button that is the networkconfigview button,the thread will be create to runing shell command**/ connect(this->netconfig,SIGNAL(signals_startthread(QString)),this,SLOT(startthread(QString))); /***it is registertocdms at first when the programmer running***/ connect(this->http,SIGNAL(signals_register()),this->netconfig,SLOT(SendRegisterData())); /***if connect error,switch to netconfig view***/ connect(this->http,SIGNAL(signals_connectError(int)),this,SLOT(emit_widgets(int))); /*** it's used to start the spicy protocol thread at the SocketService class***/ connect(this->http,SIGNAL(signals_startspicy(QString)),this,SLOT(startthread(QString))); //connect(this->http,SIGNAL(signals_tohostlistcheck(QString)),this->hostlist,SLOT(checkuserinfo(QString)));//check the userinfo is the same as already logininfo /****there is the signals which serves for vmhostlist contained three vmhost most****/ connect(this->hostlist,SIGNAL(signals_vm(QString)),this->http,SLOT(getconnectinfo_slots(QString))); connect(this->hostlist,SIGNAL(signals_connect(QString)),this->http,SLOT(isableconnectslots(QString))); connect(this->hostlist,SIGNAL(signals_start(QString)),this->http,SLOT(startvmslots(QString))); connect(this->hostlist,SIGNAL(signals_down(QString)),this->http,SLOT(shutdownvmslots(QString))); connect(this->hostlist,SIGNAL(signals_reboot(QString)),this->http,SLOT(rebootvmslots(QString))); /*******it's connected the windows with the choose table on the mainview windows*******/ connect(this,SIGNAL(signals_widgets(int)),ui->widgetstack,SLOT(setCurrentIndex(int))); /****it's used to execute the shell command int the function of Wifi class****/ connect(this->wifi,SIGNAL(signals_connect(QString)),this,SLOT(startthread(QString))); /****it's used to update connected wifiname on the mainview background ********/ connect(this->wifi,SIGNAL(signals_update()),this,SLOT(repaint())); connect(this->wifi,SIGNAL(siglogin(int)),this,SLOT(deal_widgets(int))); /******it's used to migrate vitural machine ,that send oldip to tcp server for close it********/ //connect(this->http,SIGNAL(signals_startmigrate(QString)),this->termigrate,SLOT(WriteIpToShm(QString))); #endif }