Advertisement
georgelappies

Untitled

Jun 25th, 2014
233
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #ifndef RENAMEME_H
  2. #define RENAMEME_H
  3.  
  4. #include <QMainWindow>
  5. #include <QWidget>
  6. #include <QVBoxLayout>
  7. #include <QHBoxLayout>
  8. #include <QGridLayout>
  9. #include <QPushButton>
  10. #include <QListWidget>
  11. #include <QLabel>
  12. #include <QMenuBar>
  13. #include <QLineEdit>
  14. #include <QFileDialog>
  15. #include <QList>
  16. #include <QListView>
  17. #include <QDir>
  18. #include <QStringList>
  19. #include <QStringListModel>
  20.  
  21. class RenameMe : public QMainWindow
  22. {
  23.     Q_OBJECT
  24.  
  25. public:
  26.     explicit RenameMe(QWidget *parent = 0);
  27.     ~RenameMe();
  28.  
  29. public slots:
  30.     void oldFileClicked();
  31.     void newFileClicked();
  32.     void renameAllClicked();
  33.  
  34. signals:
  35.  
  36.  
  37.  
  38. private:
  39.     void createMenu();
  40.     void createHeading();
  41.     void createAddBtns();
  42.     void createListView();
  43.     void createRenameBtn();
  44.     void createLineEdits();
  45.     void createModels();
  46.     void renameFiles(QString toFind, QString toReplace);
  47.  
  48.     QWidget *mainWidget;
  49.     QGridLayout *textEditGrid;
  50.     QVBoxLayout *mainLayout;
  51.     QGridLayout *layoutBtns;
  52.     QHBoxLayout *layoutListWidgets;
  53.     QPushButton *addOldBtn;
  54.     QPushButton *addNewBtn;
  55.     QPushButton *renameAllBtn;
  56.     QLabel *headingLabel;
  57.     QLabel *lblOldFileNames;
  58.     QLabel *lblNewFileNames;
  59.     QLabel *lblOldPath;
  60.     QLabel *lblNewPath;
  61.     QLabel *lblBlankSpacer;
  62.     QMenuBar *mainMenu;
  63.     QLineEdit *edtOldText;
  64.     QLineEdit *edtNewText;
  65.     QFileDialog *fdlgSelectDir;
  66.     QStringListModel *oldFilesModel;
  67.     QStringListModel *newFilesModel;
  68.     QListView *oldFilesView;
  69.     QListView *newFilesView;
  70.     QDir *oldPathDir;
  71.     QDir *newPathDir;
  72.     QStringList *tempOldFiles;
  73.     QStringList *tempNewFiles;
  74.     QStringList *newFiles;
  75. };
  76.  
  77. #endif // RENAMEME_H
  78.  
  79.  
  80. #include <QString>
  81. #include <QStringList>
  82. #include <QStringListModel>
  83. #include <QMessageBox>
  84.  
  85.  
  86. #include "renameme.h"
  87.  
  88. RenameMe::RenameMe(QWidget *parent) :
  89.     QMainWindow(parent)
  90. {
  91.     createHeading();
  92.     createAddBtns();
  93.     createModels();
  94.     createListView();
  95.     createRenameBtn();
  96.     createLineEdits();
  97.  
  98.  
  99.     connect(addOldBtn, SIGNAL(clicked()), this, SLOT(oldFileClicked()));
  100.     connect(addNewBtn, SIGNAL(clicked()), this, SLOT(newFileClicked()));
  101.     connect(renameAllBtn, SIGNAL(clicked()), this, SLOT(renameAllClicked()));
  102.  
  103.     mainLayout = new QVBoxLayout;
  104.  
  105.  
  106.  
  107.     lblBlankSpacer = new QLabel;
  108.     lblBlankSpacer->setText("");
  109.     mainLayout->addWidget(headingLabel,0,Qt::AlignCenter);
  110.     mainLayout->addLayout(layoutBtns);
  111.     mainLayout->addWidget(lblBlankSpacer);
  112.     mainLayout->addLayout(layoutListWidgets);
  113.     mainLayout->addWidget(lblBlankSpacer);
  114.     mainLayout->addLayout(textEditGrid);
  115.     mainLayout->addWidget(lblBlankSpacer);
  116.     mainLayout->addWidget(renameAllBtn,0,Qt::AlignCenter);
  117.  
  118.     mainWidget = new QWidget;
  119.  
  120.     mainWidget->setLayout(mainLayout);
  121.     setCentralWidget(mainWidget);
  122.  
  123. }
  124.  
  125. RenameMe::~RenameMe()
  126. {
  127.  
  128. }
  129.  
  130. void RenameMe::createModels()
  131. {
  132.     QStringList numbers;
  133.     numbers << "Select Old Files";
  134.     oldFilesModel = new QStringListModel(numbers);
  135.  
  136.     QStringList numbers2;
  137.     numbers2 << "";
  138.     newFilesModel = new QStringListModel(numbers2);
  139. }
  140.  
  141. void RenameMe::createHeading()
  142. {
  143.     headingLabel = new QLabel;
  144.     headingLabel->setText("Add the files to bulk rename below.");
  145. }
  146.  
  147. void RenameMe::createAddBtns()
  148. {
  149.     addOldBtn = new QPushButton;
  150.     addOldBtn->setText("Select Existing Files Directory...");
  151.  
  152.     addNewBtn = new QPushButton;
  153.     addNewBtn->setText("Select New Files Directory...");
  154.  
  155.     lblOldPath = new QLabel;
  156.     lblOldPath->setText("Select the path to the old files above.");
  157.  
  158.     lblNewPath = new QLabel;
  159.     lblNewPath->setText("Select the path to the new files above");
  160.  
  161.     layoutBtns = new QGridLayout;
  162.     layoutBtns->addWidget(addOldBtn,0,0,1,1,Qt::AlignLeft);
  163.     layoutBtns->addWidget(addNewBtn,0,1,1,1,Qt::AlignLeft);
  164.     layoutBtns->addWidget(lblOldPath,1,0,1,1,Qt::AlignLeft);
  165.     layoutBtns->addWidget(lblNewPath,1,1,1,1,Qt::AlignLeft);
  166.  
  167. }
  168.  
  169. void RenameMe::createListView()
  170. {
  171.     oldFilesView = new QListView;
  172.     oldFilesView->setModel(oldFilesModel);
  173.     oldFilesView->setEditTriggers(QAbstractItemView::NoEditTriggers);
  174.  
  175.     newFilesView = new QListView;
  176.     newFilesView->setModel(newFilesModel);
  177.  
  178.     layoutListWidgets = new QHBoxLayout;
  179.     layoutListWidgets->addWidget(oldFilesView);
  180.     layoutListWidgets->addWidget(newFilesView);
  181. }
  182.  
  183. void RenameMe::createRenameBtn()
  184. {
  185.     renameAllBtn = new QPushButton;
  186.     renameAllBtn->setText("Rename All");
  187. }
  188.  
  189. void RenameMe::createLineEdits()
  190. {
  191.     lblOldFileNames = new QLabel;
  192.     lblOldFileNames->setText("Enter text to find in old file names:");
  193.  
  194.     lblNewFileNames = new QLabel;
  195.     lblNewFileNames->setText("Enter replacement text for new file names:");
  196.  
  197.     edtOldText = new QLineEdit;
  198.     edtNewText = new QLineEdit;
  199.  
  200.     textEditGrid = new QGridLayout;
  201.     textEditGrid->addWidget(lblOldFileNames,0,0);
  202.     textEditGrid->addWidget(lblNewFileNames,0,1);
  203.     textEditGrid->addWidget(edtOldText,1,0);
  204.     textEditGrid->addWidget(edtNewText,1,1);
  205. }
  206.  
  207. void RenameMe::oldFileClicked()
  208. {
  209.     QString oldPath;
  210.     oldPath = QFileDialog::getExistingDirectory(this, tr("Open Directory"),
  211.                                                 "/home",
  212.                                                 QFileDialog::ShowDirsOnly
  213.                                                 | QFileDialog::DontResolveSymlinks);
  214.     lblOldPath->setText(oldPath);
  215.  
  216.     oldPathDir = new QDir(oldPath);
  217.     tempOldFiles = new QStringList;
  218.     tempOldFiles->clear();
  219.     tempOldFiles->append(oldPathDir->entryList(QDir::Files | QDir::NoSymLinks));
  220.     oldFilesModel->setStringList(*tempOldFiles);
  221.  
  222. }
  223.  
  224. void RenameMe::newFileClicked()
  225. {
  226.     QString newPath;
  227.     newPath = QFileDialog::getExistingDirectory(this, tr("Open Directory"),
  228.                                                 "/home",
  229.                                                 QFileDialog::ShowDirsOnly
  230.                                                 | QFileDialog::DontResolveSymlinks);
  231.     lblNewPath->setText(newPath);
  232.  
  233.     newPathDir = new QDir(newPath);
  234. }
  235.  
  236. void RenameMe::renameAllClicked()
  237. {
  238.     QString toFind, toReplace;
  239.     toFind = edtOldText->text();
  240.     toReplace = edtNewText->text();
  241.  
  242.     if (toFind=="") {
  243.         QMessageBox msgBox;
  244.         msgBox.setText("Please enter text to replace.");
  245.         msgBox.exec();
  246.     }
  247.     else if (toReplace=="") {
  248.         QMessageBox msgBox;
  249.         msgBox.setText("Please enter replacement text.");
  250.         msgBox.exec();
  251.     }
  252.     else renameFiles(toFind, toReplace);
  253. }
  254.  
  255. void RenameMe::renameFiles(QString toFind, QString toReplace)
  256. {
  257.     tempNewFiles = new QStringList;
  258.     newFiles = new QStringList;
  259.     *tempNewFiles = oldFilesModel->stringList();
  260.  
  261.     for (int i = 0; i < tempNewFiles->size(); ++i) {
  262.         QString tempFile;
  263.         tempFile = tempNewFiles->at(i);
  264.         tempFile.replace(toFind, toReplace, Qt::CaseInsensitive);
  265.         newFiles->append(tempFile);
  266.     }
  267.  
  268.     newFilesModel->setStringList(*newFiles);
  269. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement