RabbitCommon v2.2.6
Loading...
Searching...
No Matches
MainWindow.cpp
1
5#include "MainWindow.h"
6#include "ui_MainWindow.h"
7
8#ifdef HAVE_ABOUT
9 #include "DlgAbout.h"
10#endif
11#ifdef HAVE_UPDATE
12 #include "FrmUpdater.h"
13#endif
14#ifdef BUILD_QUIWidget
15 #include "QUIWidget/QUIWidget.h"
16#endif
17#include "RabbitCommonTools.h"
18#include "RabbitCommonEncrypt.h"
19#ifdef HAVE_RABBITCOMMON_GUI
20#include "DockFolderBrowser.h"
21#endif
22#include "RabbitCommonDir.h"
23
24#include <QDir>
25#include <QDesktopServices>
26#include <QDockWidget>
27#include <QFileDialog>
28#include <QLoggingCategory>
29
30Q_LOGGING_CATEGORY(log, "RabbitCommon.MainWindow")
31
32MainWindow::MainWindow(QWidget *parent) :
33 QMainWindow(parent),
34 ui(new Ui::MainWindow),
35 m_pDownload(nullptr)
36{
37 ui->setupUi(this);
38
39#ifdef HAVE_RABBITCOMMON_GUI
40 RabbitCommon::CTools::AddStyleMenu(ui->menuTools);
41 ui->menuTools->addMenu(RabbitCommon::CTools::GetLogMenu(this));
42 ui->tbLog->setMenu(RabbitCommon::CTools::GetLogMenu(this));
43
44
45 // [Use CDockFolderBrowser]
46 CDockFolderBrowser* pDock = new CDockFolderBrowser(tr("Folder browser"), this);
47 pDock->setRootPath(RabbitCommon::CDir::Instance()->GetDirIcons(true));
48 qDebug() << pDock->rootPath();
49 addDockWidget(Qt::LeftDockWidgetArea, pDock);
50 // Add the action of dock to menu
51 ui->menuTools->addAction(pDock->toggleViewAction());
52 // [Use CDockFolderBrowser]
53#endif
54}
55
56MainWindow::~MainWindow()
57{
58 qApp->quit();
59 delete ui;
60}
61
62void MainWindow::on_actionAbout_triggered()
63{
64#ifdef HAVE_ABOUT
65 CDlgAbout* dlg = new CDlgAbout();
66 dlg->setAttribute(Qt::WA_QuitOnClose, true);
67#if defined (Q_OS_ANDROID)
68 dlg->showMaximized();
69#else
70 dlg->show();
71#endif
72#endif
73
74#ifdef BUILD_QUIWidget
75 QUIWidget::setFormInCenter(dlg);
76#endif
77}
78
79void MainWindow::on_actionUpdate_triggered()
80{
81#ifdef HAVE_UPDATE
82 // [Use CFrmUpdater]
83 CFrmUpdater* m_pfrmUpdater = new CFrmUpdater();
84 QIcon icon = windowIcon();
85 if(icon.isNull()) return;
86 auto sizeList = icon.availableSizes();
87 if(sizeList.isEmpty()) return;
88 QPixmap p = icon.pixmap(*sizeList.begin());
89 m_pfrmUpdater->SetTitle(p.toImage());
90 m_pfrmUpdater->SetInstallAutoStartup();
91 #if defined (Q_OS_ANDROID)
92 m_pfrmUpdater->showMaximized();
93 #else
94 m_pfrmUpdater->show();
95 #endif
96 // [Use CFrmUpdater]
97#endif
98#ifdef BUILD_QUIWidget
99 QUIWidget::setFormInCenter(m_pfrmUpdater);
100#endif
101}
102
103void MainWindow::on_pushButton_clicked()
104{
105#if defined(Q_OS_LINUX) && !defined(Q_OS_ANDROID)
106 QString szCmd = "mkdir";
107 QStringList paras;
108 paras << "-p" << "/opt/RabbitCommonAdminAuthoriseTest";
109 qDebug() << "RabbitCommon::CTools::executeByRoot(szCmd, paras):"
112#elif defined(Q_OS_WINDOWS)
113 RabbitCommon::CTools::executeByRoot("regedit", QStringList());
114#endif
115}
116
117void MainWindow::on_pbEncrypt_clicked()
118{
120 e.SetPassword(ui->lePassword->text().toStdString().c_str());
121 QByteArray out;
122 int nRet = e.Encode(ui->teInput->toPlainText(), out);
123 if(!nRet)
124 {
125 QString szOut;
126 nRet = e.Dencode(out, szOut);
127 if(nRet)
128 {
129 szOut = tr("Encrypt:") + QString(out) + "\n" + tr("Source:") + szOut;
130 ui->teOutput->setPlainText(szOut);
131 }
132 }
133}
134
135void MainWindow::on_pbGenerateCoreFile_clicked()
136{
137 strcpy(0,0);
138}
139
140void MainWindow::on_pbAddFile_clicked()
141{
142 ui->cmbDownloadFiles->addItem(ui->cmbDownloadFiles->currentText());
143}
144
145void MainWindow::on_pbDownload_clicked()
146{
147 if(m_pDownload)
148 m_pDownload->deleteLater();
149 QVector<QUrl> urls;
150 for(int i = 0; i < ui->cmbDownloadFiles->count(); i++)
151 {
152 urls.push_back(QUrl(ui->cmbDownloadFiles->itemText(i)));
153 }
154 m_pDownload = new RabbitCommon::CDownload();
155 bool check = connect(m_pDownload, SIGNAL(sigFinished(const QString)),
156 this, SLOT(slotDownloadFile(const QString)));
157 Q_ASSERT(check);
158 check = connect(m_pDownload, SIGNAL(sigError(int, const QString)),
159 this, SLOT(slotDownloadError(int, const QString)));
160 Q_ASSERT(check);
161 m_pDownload->Start(urls);
162}
163
164void MainWindow::slotDownloadFile(const QString szFile)
165{
166 qDebug(log) << "Download file:" << szFile;
167 QDesktopServices::openUrl(QUrl::fromLocalFile(szFile));
168}
169
170void MainWindow::slotDownloadError(int nErr, const QString szErr)
171{
172 qDebug(log) << "Download file error:" << nErr << szErr;
173}
About dialog.
Definition DlgAbout.h:69
void setRootPath(const QString dir)
Set root path.
QString rootPath() const
Get root path.
Updater.
Definition FrmUpdater.h:70
int SetTitle(QImage icon=QImage(), const QString &szTitle=QString())
SetTitle.
int SetInstallAutoStartup(bool bAutoStart=true)
Set install and automation startup.
Download the same file from multiple URLs.
Definition Download.h:45
int Start(QVector< QUrl > urls, QString szFileName=QString(), bool bSequence=false)
Definition Download.cpp:19
int Encode(const char *pIn, const int &inLen, char **pOut, int &outLen)
int Dencode(const char *pIn, const int &inLen, char **pOut, int &outLen)
static int GenerateDesktopFile(const QString &szPath=QString(), const QString &szName=QString())
GenerateDesktopFile: Generate desktop file.
static bool executeByRoot(const QString &program, const QStringList &arguments=QStringList())
executeByRoot: Run with administrator privileges