QT 制作的fastboot烧写器

效果图:



代码:

FastbootDialog.h:

#ifndef __FASTBOOTDIALOG_H__
#define __FASTBOOTDIALOG_H__

#include <QDialog>
#include "ui_fastboot.h"

 
class FastbootDialog : public QDialog, public Ui::FastbootDialog
{
        Q_OBJECT
public:
	FastbootDialog(QWidget *parent=0);
        QString localPw, localLog;
        QString fileName;
        QString systemPath;

signals:


private slots:
   void selectFastbootPath();
   void selectSystemPath();

   void checkDevice();

   void preEraseSystem();
   void eraseSystem();

   void preFlashSystem();
   void flashSystem();

   void restartDevice();

   void on_lineEditDeviceAddr_textChanged();
   void on_lineEditSystem_textChanged();


public:
    void readLog();

};


#endif 

FastbootDialog.cpp:

#include <QtGui>
#include <QDebug>

#include "FastbootDialog.h"

 
FastbootDialog::FastbootDialog(QWidget *parent)
    : QDialog(parent)
{
        setupUi(this);

   localPw = "123456";
   localLog = "/home/luke/fastboot/lslog.txt";


    fileName = "/home/luke/AndroidServer/samba/mmp3/out/host/linux-x86/bin/fastboot";
    lineEditDeviceAddr->setText(fileName);

    systemPath ="/home/luke/AndroidServer/samba/mmp3/out/target/product/thunderstone/system.img";
    lineEditSystem->setText(systemPath);

    connect(pushButtonSelect,SIGNAL(clicked()),this,SLOT(selectFastbootPath()));
    connect(pushButtonCheck,SIGNAL(clicked()),this,SLOT(checkDevice()));
    connect(pushButtonEraseSystem,SIGNAL(pressed()),this,SLOT(preEraseSystem()));
    connect(pushButtonEraseSystem,SIGNAL(released()),this,SLOT(eraseSystem()));
    connect(pushButtonFlashSystem,SIGNAL(pressed()),this,SLOT(preFlashSystem()));
    connect(pushButtonFlashSystem,SIGNAL(released()),this,SLOT(flashSystem()));
    connect(pushButtonSystemSelect,SIGNAL(clicked()),this,SLOT(selectSystemPath()));
    connect(pushButtonRestart,SIGNAL(clicked()),this,SLOT(restartDevice()));

}

//api -------------------------

void FastbootDialog::checkDevice()
{

 //system("echo 854632 | sudo -S ls /home/luke/tmp/ > /home/luke/fastboot/lslog.txt");

    QString tmp;
    tmp += "echo "+ localPw +" | sudo -S " + fileName + " devices 1>" + localLog +" 2>"+ localLog;

  system(tmp.toStdString().data());

  readLog();


}

void FastbootDialog::preEraseSystem()
{
    QString tmp;
    QString tmpComand = "erase system.....";
    tmp += "---------------------------------log---------------------------------------\n"
           +tmpComand+"\n---------------------------------------------------------------------------\n";

    labelLog->setText(tmp);

}

void FastbootDialog::eraseSystem()
{

    QString tmp;
    tmp += "echo "+ localPw +" | sudo -S " + fileName + " erase system 1>" + localLog +" 2>"+ localLog;

    system(tmp.toStdString().data());

     readLog();

}

void FastbootDialog::preFlashSystem()
{
    QString tmp;
    QString tmpComand = "flash system.....";
    tmp += "---------------------------------log---------------------------------------\n"
           +tmpComand+"\n---------------------------------------------------------------------------\n";

    labelLog->setText(tmp);

}


void FastbootDialog::flashSystem()
{
    QString tmp;
    tmp += "echo "+ localPw +" | sudo -S " + fileName + " flash system " +systemPath +" 1>" + localLog +" 2>"+ localLog;

    system(tmp.toStdString().data());

     readLog();
}


void FastbootDialog::restartDevice()
{
    QString tmp;
    tmp += "echo "+ localPw +" | sudo -S " + fileName + " reboot " +" 1>" + localLog +" 2>"+ localLog;

    system(tmp.toStdString().data());

     readLog();
}




void FastbootDialog::readLog()
{
    QFile file(localLog);

     if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
            return;
     QTextStream in(&file);
     QString line = in.readAll();

     qDebug()<<"log:"<<line;


     labelLog->setText("---------------------------------log---------------------------------------\n"
                        +line+
                        "\n---------------------------------------------------------------------------\n");

    file.close();
}


//select ----------------------
void FastbootDialog::selectSystemPath()
{

}

void FastbootDialog::selectFastbootPath()
{

      fileName = QFileDialog::getOpenFileName(this,
         tr("Select Fastboot Path"), "/home/luke", tr("fastboot (fastboot)"));

     lineEditDeviceAddr->setText(fileName);
     qDebug()<<"fiename:"<<fileName;
}

//line edit -------------------------------
void FastbootDialog::on_lineEditDeviceAddr_textChanged()
{

    fileName = lineEditDeviceAddr->text();
    qDebug()<<"on_lineEditDeviceAddr_textChanged:"<<fileName;
}

void FastbootDialog::on_lineEditSystem_textChanged()
{

    systemPath = lineEditSystem->text();
    qDebug()<<"on_lineEditSystem_textChanged:"<<systemPath;
}

main.cpp:

#include <QApplication>

#include "FastbootDialog.h"

int main(int argc, char *argv[])
{

    QApplication app(argc, argv);
    FastbootDialog *dialog = new FastbootDialog;
    dialog->show();
    return app.exec();
 
}


fastboot.ui:

/********************************************************************************
** Form generated from reading UI file 'fastbootf13815.ui'
**
** Created: Wed Dec 26 16:50:04 2012
**      by: Qt User Interface Compiler version 4.6.2
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/

#ifndef FASTBOOTF13815_H
#define FASTBOOTF13815_H

#include <QtCore/QVariant>
#include <QtGui/QAction>
#include <QtGui/QApplication>
#include <QtGui/QButtonGroup>
#include <QtGui/QDialog>
#include <QtGui/QHBoxLayout>
#include <QtGui/QHeaderView>
#include <QtGui/QLabel>
#include <QtGui/QLineEdit>
#include <QtGui/QPushButton>
#include <QtGui/QVBoxLayout>

QT_BEGIN_NAMESPACE

class Ui_FastbootDialog
{
public:
    QVBoxLayout *verticalLayout;
    QHBoxLayout *horizontalLayout_2;
    QLabel *labelFastbootAddr;
    QLineEdit *lineEditDeviceAddr;
    QPushButton *pushButtonSelect;
    QPushButton *pushButtonCheck;
    QPushButton *pushButtonEraseSystem;
    QHBoxLayout *horizontalLayout_3;
    QPushButton *pushButtonFlashSystem;
    QLineEdit *lineEditSystem;
    QPushButton *pushButtonSystemSelect;
    QPushButton *pushButtonRestart;
    QLabel *labelLog;

    void setupUi(QDialog *FastbootDialog)
    {
        if (FastbootDialog->objectName().isEmpty())
            FastbootDialog->setObjectName(QString::fromUtf8("FastbootDialog"));
        FastbootDialog->resize(395, 204);
        verticalLayout = new QVBoxLayout(FastbootDialog);
        verticalLayout->setObjectName(QString::fromUtf8("verticalLayout"));
        horizontalLayout_2 = new QHBoxLayout();
        horizontalLayout_2->setObjectName(QString::fromUtf8("horizontalLayout_2"));
        labelFastbootAddr = new QLabel(FastbootDialog);
        labelFastbootAddr->setObjectName(QString::fromUtf8("labelFastbootAddr"));

        horizontalLayout_2->addWidget(labelFastbootAddr);

        lineEditDeviceAddr = new QLineEdit(FastbootDialog);
        lineEditDeviceAddr->setObjectName(QString::fromUtf8("lineEditDeviceAddr"));

        horizontalLayout_2->addWidget(lineEditDeviceAddr);

        pushButtonSelect = new QPushButton(FastbootDialog);
        pushButtonSelect->setObjectName(QString::fromUtf8("pushButtonSelect"));

        horizontalLayout_2->addWidget(pushButtonSelect);


        verticalLayout->addLayout(horizontalLayout_2);

        pushButtonCheck = new QPushButton(FastbootDialog);
        pushButtonCheck->setObjectName(QString::fromUtf8("pushButtonCheck"));

        verticalLayout->addWidget(pushButtonCheck);

        pushButtonEraseSystem = new QPushButton(FastbootDialog);
        pushButtonEraseSystem->setObjectName(QString::fromUtf8("pushButtonEraseSystem"));

        verticalLayout->addWidget(pushButtonEraseSystem);

        horizontalLayout_3 = new QHBoxLayout();
        horizontalLayout_3->setObjectName(QString::fromUtf8("horizontalLayout_3"));
        pushButtonFlashSystem = new QPushButton(FastbootDialog);
        pushButtonFlashSystem->setObjectName(QString::fromUtf8("pushButtonFlashSystem"));

        horizontalLayout_3->addWidget(pushButtonFlashSystem);

        lineEditSystem = new QLineEdit(FastbootDialog);
        lineEditSystem->setObjectName(QString::fromUtf8("lineEditSystem"));

        horizontalLayout_3->addWidget(lineEditSystem);

        pushButtonSystemSelect = new QPushButton(FastbootDialog);
        pushButtonSystemSelect->setObjectName(QString::fromUtf8("pushButtonSystemSelect"));

        horizontalLayout_3->addWidget(pushButtonSystemSelect);


        verticalLayout->addLayout(horizontalLayout_3);

        pushButtonRestart = new QPushButton(FastbootDialog);
        pushButtonRestart->setObjectName(QString::fromUtf8("pushButtonRestart"));

        verticalLayout->addWidget(pushButtonRestart);

        labelLog = new QLabel(FastbootDialog);
        labelLog->setObjectName(QString::fromUtf8("labelLog"));

        verticalLayout->addWidget(labelLog);


        retranslateUi(FastbootDialog);

        QMetaObject::connectSlotsByName(FastbootDialog);
    } // setupUi

    void retranslateUi(QDialog *FastbootDialog)
    {
        FastbootDialog->setWindowTitle(QApplication::translate("FastbootDialog", "fastboot\347\203\247\345\206\231\345\231\250", 0, QApplication::UnicodeUTF8));
        labelFastbootAddr->setText(QApplication::translate("FastbootDialog", "\350\257\267\351\200\211\346\213\251fastboot\350\267\257\345\276\204\357\274\232", 0, QApplication::UnicodeUTF8));
        pushButtonSelect->setText(QApplication::translate("FastbootDialog", "\350\267\257\345\276\204\351\200\211\346\213\251...", 0, QApplication::UnicodeUTF8));
        pushButtonCheck->setText(QApplication::translate("FastbootDialog", "\346\237\245\347\234\213\350\277\236\346\216\245", 0, QApplication::UnicodeUTF8));
        pushButtonEraseSystem->setText(QApplication::translate("FastbootDialog", "\346\223\246\351\231\244system", 0, QApplication::UnicodeUTF8));
        pushButtonFlashSystem->setText(QApplication::translate("FastbootDialog", "\345\206\231\345\205\245system", 0, QApplication::UnicodeUTF8));
        pushButtonSystemSelect->setText(QApplication::translate("FastbootDialog", "\347\263\273\347\273\237\351\200\211\346\213\251...", 0, QApplication::UnicodeUTF8));
        pushButtonRestart->setText(QApplication::translate("FastbootDialog", "\351\207\215\345\220\257", 0, QApplication::UnicodeUTF8));
        labelLog->setText(QApplication::translate("FastbootDialog", "log:", 0, QApplication::UnicodeUTF8));
    } // retranslateUi

};

namespace Ui {
    class FastbootDialog: public Ui_FastbootDialog {};
} // namespace Ui

QT_END_NAMESPACE

#endif // FASTBOOTF13815_H





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值