frmupload.cpp 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277
  1. #include "frmupload.h"
  2. #include "ui_frmupload.h"
  3. #include <QtDebug>
  4. #include <QImageReader>
  5. #include <QStandardPaths>
  6. FrmUpload::FrmUpload(QWidget *parent)
  7. : QWidget(parent)
  8. , ui(new Ui::FrmUpload)
  9. {
  10. ui->setupUi(this);
  11. initFrom();
  12. initWidget();
  13. connect(TCHttpService::getInstance(), &TCHttpService::signal_uploadFileSec, this, &FrmUpload::slot_uploadFileSec);
  14. QButtonGroup *buttonGroup = new QButtonGroup(this);
  15. buttonGroup->setExclusive(true); // 确保每次只有一个按钮被选中
  16. // 添加按钮到组中
  17. buttonGroup->addButton(ui->btnHTML);
  18. buttonGroup->addButton(ui->btnMarkdown);
  19. buttonGroup->addButton(ui->btnUBB);
  20. buttonGroup->addButton(ui->btnUrl);
  21. // 设置样式表
  22. QString buttonStyle = R"(
  23. QPushButton {
  24. color: black;
  25. }
  26. QPushButton:checked {
  27. color: #409EFF
  28. }
  29. )";
  30. ui->btnHTML->setStyleSheet(buttonStyle);
  31. ui->btnMarkdown->setStyleSheet(buttonStyle);
  32. ui->btnUBB->setStyleSheet(buttonStyle);
  33. ui->btnUrl->setStyleSheet(buttonStyle);
  34. }
  35. FrmUpload::~FrmUpload()
  36. {
  37. delete ui;
  38. }
  39. void FrmUpload::slot_uploadFileSec(QString url)
  40. {
  41. qDebug() << "slot_uploadFileSec:" << url;
  42. QClipboard* clipboard = QApplication::clipboard();
  43. if (copyType == COPY_TYPE_MARKDOWN) {
  44. clipboard->setText(QString("![](%1)").arg(url));
  45. }
  46. if (copyType == COPY_TYPE_URL) {
  47. clipboard->setText(url);
  48. }
  49. if (copyType == COPY_TYPE_UBB) {
  50. // [IMG]https://imagehyj.oss-cn-hangzhou.aliyuncs.com/blog/logo512.png[/IMG]
  51. clipboard->setText(QString("[IMG]%1[/IMG]").arg(url));
  52. }
  53. if (copyType == COPY_TYPE_HTML) {
  54. clipboard->setText(QString("<img src=\"%1\"/>").arg(url));
  55. // QThread::sleep(50);
  56. }
  57. }
  58. bool FrmUpload::eventFilter(QObject *watched, QEvent *event)
  59. {
  60. static bool mousePressed = false;
  61. if (watched == ui->frmUpload) {
  62. QMouseEvent* mouseEvent = static_cast<QMouseEvent*>(event);
  63. if (mouseEvent->type() == QMouseEvent::MouseButtonPress && mouseEvent->button() == Qt::LeftButton) {
  64. mousePressed = true;
  65. return true;
  66. }
  67. else if (mouseEvent->type() == QMouseEvent::MouseButtonRelease && mouseEvent->button() == Qt::LeftButton && mousePressed == true) {
  68. QStringList fileList = QFileDialog::getOpenFileNames(this, "选择图片", "C:\\", "Files (*);;"
  69. "PNG (*.png);;"
  70. "JPG (*.jpg);;"
  71. "JPEG (*.jpeg);;"
  72. "SVG (*.svg)");
  73. uploadFiles(fileList);
  74. mousePressed = false;
  75. return true;
  76. }
  77. else {
  78. return false;
  79. }
  80. }
  81. return QWidget::eventFilter(watched, event);
  82. }
  83. void FrmUpload::dragEnterEvent(QDragEnterEvent *event)
  84. {
  85. if (event->mimeData()->hasUrls()) {
  86. event->acceptProposedAction();
  87. }
  88. else {
  89. event->ignore();
  90. }
  91. }
  92. void FrmUpload::dropEvent(QDropEvent *event)
  93. {
  94. QStringList uploadList;
  95. const QMimeData* mimeData = event->mimeData();
  96. if (!mimeData->hasUrls()) {
  97. return;
  98. }
  99. QList<QUrl> urlList = mimeData->urls();
  100. #if !DEBUG
  101. foreach (QUrl url, urlList) {
  102. qDebug() << url.toLocalFile();
  103. }
  104. #endif
  105. foreach (QUrl url, urlList) {
  106. QFileInfo fileInfo(url.toLocalFile());
  107. if (fileInfo.isDir()) {
  108. continue;
  109. }
  110. else {
  111. // QImageReader reader(url.toLocalFile());
  112. // if (!reader.imageFormat()) {
  113. // uploadList << url.toLocalFile();
  114. // TCHttpService::getInstance()->apiMd5(fileInfo.absoluteFilePath());
  115. }
  116. }
  117. }
  118. void FrmUpload::initFrom()
  119. {
  120. ui->frmUpload->setMinimumSize(QSize(400, 200));
  121. ui->btnHTML->setText("HTML");
  122. ui->btnFastUpload->setText("剪贴板上传");
  123. ui->btnMarkdown->setText("Markdown");
  124. ui->btnUrl->setText("URL");
  125. ui->btnUBB->setText("UBB");
  126. ui->btnMarkdown->setChecked(true);
  127. ui->btnHTML->setChecked(false);
  128. ui->btnUBB->setChecked(false);
  129. ui->btnUrl->setChecked(false);
  130. }
  131. void FrmUpload::initWidget()
  132. {
  133. ui->frmUpload->installEventFilter(this);
  134. this->setAcceptDrops(true);
  135. setWindowFlags(Qt::FramelessWindowHint); // 移除系统边框
  136. setAttribute(Qt::WA_TranslucentBackground); // 启用透明背景
  137. // ui->frmUpload->setAcceptDrops(true);
  138. }
  139. void FrmUpload::uploadFiles(QStringList fileList)
  140. {
  141. if (!TCHttpService::getInstance()->getOnlineState())
  142. return;
  143. foreach (QString p, fileList) {
  144. qDebug() << "upload:" << p;
  145. TCHttpService::getInstance()->apiUpload(p);
  146. }
  147. // TCHttpService::getInstance()->apiMyfileCount();
  148. // TCHttpService::getInstance()->apiMyfileNormal();
  149. }
  150. void FrmUpload::on_btnFastUpload_clicked()
  151. {
  152. // QString addDataPath = QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation);
  153. // QString cacheDirPath = addDataPath + "/cache/";
  154. QDir cacheDir(QStandardPaths::writableLocation(QStandardPaths::CacheLocation));
  155. if (!cacheDir.exists()) {
  156. cacheDir.mkpath(".");
  157. }
  158. QClipboard* clipboard = QApplication::clipboard();
  159. const QMimeData* mimeData = clipboard->mimeData();
  160. if (mimeData->hasImage()) {
  161. QImage image = clipboard->image();
  162. if (!image.isNull()) {
  163. RenameType renametype = FileConfigDecode::getInstance()->getRenameType();
  164. qDebug() << "renameType:" << renametype;
  165. if (renametype == RENAME_TYPE_NORMAL) {
  166. bool ok;
  167. QString timestamp = QDateTime::currentDateTime().toString("yyyyMMdd_hhmmsszzz");
  168. QString text = QInputDialog::getText(this, "重命名图片", "输入文件名", QLineEdit::Normal, timestamp, &ok);
  169. if (ok && !text.isEmpty()) {
  170. QString filePath = cacheDir.filePath(text + ".png");
  171. if (image.save(filePath, "PNG")) {
  172. TCHttpService::getInstance()->apiUpload(filePath);
  173. }
  174. }
  175. }
  176. if (renametype == RENAME_TYPE_TIME) {
  177. qDebug() << "time rename";
  178. QString timestamp = QDateTime::currentDateTime().toString("yyyyMMdd_hhmmsszzz");
  179. QString filePath = cacheDir.filePath(timestamp + ".png");
  180. if (image.save(filePath, "PNG")) {
  181. TCHttpService::getInstance()->apiUpload(filePath);
  182. }
  183. }
  184. else {
  185. QString timestamp = QDateTime::currentDateTime().toString("yyyyMMdd_hhmmsszzz");
  186. QString filePath = cacheDir.filePath("clipboard_" + timestamp + ".png");
  187. if (image.save(filePath, "PNG")) {
  188. TCHttpService::getInstance()->apiUpload(filePath);
  189. }
  190. }
  191. }
  192. clipboard->clear();
  193. }
  194. }
  195. void FrmUpload::on_btnMarkdown_clicked()
  196. {
  197. if (!ui->btnMarkdown->isChecked())
  198. return;
  199. copyType = COPY_TYPE_MARKDOWN;
  200. ui->btnMarkdown->setChecked(true);
  201. ui->btnUrl->setChecked(false);
  202. ui->btnHTML->setChecked(false);
  203. ui->btnUBB->setChecked(false);
  204. qDebug() << copyType;
  205. }
  206. void FrmUpload::on_btnUrl_clicked()
  207. {
  208. if (!ui->btnUrl->isChecked())
  209. return;
  210. copyType = COPY_TYPE_URL;
  211. ui->btnMarkdown->setChecked(false);
  212. ui->btnUrl->setChecked(true);
  213. ui->btnHTML->setChecked(false);
  214. ui->btnUBB->setChecked(false);
  215. qDebug() << copyType;
  216. }
  217. void FrmUpload::on_btnHTML_clicked()
  218. {
  219. if (!ui->btnHTML->isChecked())
  220. return;
  221. copyType = COPY_TYPE_HTML;
  222. ui->btnMarkdown->setChecked(false);
  223. ui->btnUrl->setChecked(false);
  224. ui->btnHTML->setChecked(true);
  225. ui->btnUBB->setChecked(false);
  226. qDebug() << copyType;
  227. }
  228. void FrmUpload::on_btnUBB_clicked()
  229. {
  230. if (!ui->btnUBB->isChecked())
  231. return;
  232. copyType = COPY_TYPE_UBB;
  233. ui->btnMarkdown->setChecked(false);
  234. ui->btnUrl->setChecked(false);
  235. ui->btnHTML->setChecked(false);
  236. ui->btnUBB->setChecked(true);
  237. qDebug() << copyType;
  238. }