Ejemplo n.º 1
0
	void Log::printError( const std::string& msg ) {
		std::string str = (_prefixTimestamp ? generateTimestampString() : "") + "[ERROR] " + msg + (_appendNewLine ? "\n" : "");
		if( _logToStd ) {
			printf("%s", str.c_str());
		}
		if( _file.isOpen() ) {
			_file.write(str);
		}
	}
Ejemplo n.º 2
0
// Creates an index.html showing all containing files and folders for the folder/path submitted to the method
void MainWindow::createSingleHTMLIndex(QString currentPath, QString targetFolder)
{
    // write log
    ui->textEdit->moveCursor (QTextCursor::End);
    newTimestampString = generateTimestampString();
    ui->textEdit->insertPlainText ("\n"+newTimestampString+ "- Indexing: "+currentPath+"\n");

    QString filename=targetFolder+"/index.html";
    QFile file( filename );
    if ( file.open(QIODevice::ReadWrite) )
    {
        QDir recoredDir(currentPath);

        QStringList allFolders = recoredDir.entryList(QDir::NoDotAndDotDot | QDir::System | QDir::Hidden  | QDir::AllDirs);     //(QDir::Filter::Files,QDir::SortFlag::NoSort)
        //QStringList allFiles = recoredDir.entryList(QDir::NoDotAndDotDot | QDir::System | QDir::Hidden  | QDir::Files);         //(QDir::Filter::Files,QDir::SortFlag::NoSort)



        // Create file
        QTextStream stream( &file );

        // deleting the former content
        file.write("");
        file.resize(file.pos());

        // write the new content
        stream << "<!DOCTYPE html>\n";
        stream << "<head>\n";
        stream << "<meta charset='UTF-8'>";
        stream << "<title>DirGister</title>\n";
        stream << "<link rel='shortcut icon'' type='image/png'' href='https://raw.githubusercontent.com/yafp/dirgister/master/dirgister.ico'/>\n";
        stream << "<script src='//code.jquery.com/jquery-1.11.3.min.js'></script>\n";
        stream << "<link rel='stylesheet' href='https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.3.0/css/font-awesome.min.css'>\n";
        stream << "<style>";
        stream << "body { margin:0px;  color: DimGray;}";
        stream << "h1 { margin-top: 0;}";
        stream << "h2 { color: DimGray; font-size: 20; border-bottom: solid 2px DimGray; padding-bottom: 6px;}";
        stream << "h3 { color: DimGray; font-size: 8;}";
        stream << "a { color: DimGray; text-decoration: none;}";
        stream << "a:visited { color: DimGray;}";
        stream << "#header { background-color: Gainsboro; color: DimGray; padding: 15px; margin-top: 0px; a{ color: DimGray;} }";
        stream << "#content {padding-left: 10px; padding-right: 10px; }";
        stream << "</style>";
        stream << "</head>\n";
        stream << "<body>\n";
        stream << "<div id='header'>";
        stream << "<h1><i class='fa fa-list-alt'></i>&nbsp;DirGister</h1>\n";

        // run the following part only on the sub-pages
        if(srcFolder != currentPath) // on all sub-pages -> add a backlink-navigation to upper dir
        {
            stream << "<h3><a href='../index.html'><i class='fa fa-arrow-circle-left'></i></a>&nbsp;"+currentPath+"</h3>";
        }
        else // main-page
        {
            stream << "<h3>"+currentPath+"</h3>";
        }
        stream << "</div>"; // close header div
        stream << "<div id='content'>";

        // Handle folders
        //
        if(allFolders.count() !=  0) // found folders
        {
            stream << "<h2><i class='fa fa-folder'></i>&nbsp;Folders ("+QString::number(allFolders.count())+")</h2>\n";
            QString newTarget;

            foreach (QString str, allFolders)
            {
                stream << "<a href='";
                stream << QString("%1").arg(str)+"/index.html";
                stream << "'><i class='fa fa-folder-o'></i>&nbsp;";
                stream << QString("%1").arg(str);
                stream << "</a><br>";

                newTarget = targetFolder+"/"+QString("%1").arg(str);

                QDir().mkdir(newTarget);

                // write log
                ui->textEdit->moveCursor (QTextCursor::End);
                newTimestampString = generateTimestampString();
                ui->textEdit->insertPlainText (newTimestampString+ "- Found folder: "+str+"\n");
            }
Ejemplo n.º 3
0
// User started index-generation process
void MainWindow::userTriggeredGeneration()
{
    checkingRequirements();

    if((targetFolderExists == true) & (srcFolderExists == true))
    {
        QMessageBox msgBox;
        msgBox.setText("<qt>DirGister is going to create an index for<br><b>"+srcFolder+"</b><br>in<br><b>"+targetFolder+"</b>.</qt>");
        msgBox.setInformativeText("Do you want to proceed?");
        msgBox.setStandardButtons(QMessageBox::Yes | QMessageBox::No);
        msgBox.setDefaultButton(QMessageBox::Yes);
        int ret = msgBox.exec();

        // handle user-answer
        switch (ret)
        {
          case QMessageBox::Yes:
          {
                updateStatusBar("Started index generation");
                resetLogUI();
                ui->textEdit->clear();              // to overwrite the fontsettings of resetLogUI
                ui->textEdit->setEnabled(true);     // makes text selectable again
                ui->textEdit->setPlainText("");     //

                newTimestampString = generateTimestampString();
                ui->textEdit->insertPlainText(newTimestampString+ " - Started index generation for:\n");

                newTimestampString = generateTimestampString();
                ui->textEdit->insertPlainText(newTimestampString+ " - Source: "+ srcFolder +"\n");

                newTimestampString = generateTimestampString();
                ui->textEdit->insertPlainText(newTimestampString+ " - Target: "+ targetFolder +"\n\n");

                // check if log file creation is enabled or not
                if(ui->rb_writeLog->isChecked())
                {
                    logFileCreationEnabled=true;
                }
                else
                {
                    logFileCreationEnabled=false;
                }

                // disable some UI items while index-generation is running
                //
                ui->le_sourceFolder->setEnabled(false);
                ui->bt_selectSource->setEnabled(false);
                ui->le_targetFolder->setEnabled(false);
                ui->bt_selectTarget->setEnabled(false);
                ui->rb_writeLog->setEnabled(false);             // disable the ui-item until index-generation is finished
                ui->bt_generateIndex->setEnabled(false);        // disable generate-index-button


                // create a new target folder in the user-defined target-folder
                oldTargetFolder =targetFolder;
                newTimestampString = generateTimestampString();
                targetFolder = targetFolder+"/"+newTimestampString+"_DirGister_Index";
                QDir().mkdir(targetFolder);

                // start the index generation
                createSingleHTMLIndex(srcFolder,targetFolder);

                // If logging is enabled, copy content of UI-log to the log file
                if(logFileCreationEnabled == true)
                {
                    newTimestampString = generateTimestampString();
                    QString logfileName=targetFolder+"/"+ newTimestampString +"_DirGister_log.txt";
                    QFile logFile( logfileName );
                    if ( logFile.open(QIODevice::ReadWrite) )
                    {
                        QTextStream stream( &logFile );

                        // deleting the former content
                        logFile.write("");
                        logFile.resize(logFile.pos());

                        // get text from textedit
                        QString logText = ui->textEdit->toPlainText();
                        stream << logText;

                        logFile.close();
                    }
                }

                // re-enable the GUI items
                ui->le_sourceFolder->setEnabled(true);
                ui->bt_selectSource->setEnabled(true);
                ui->le_targetFolder->setEnabled(true);
                ui->bt_selectTarget->setEnabled(true);
                ui->rb_writeLog->setEnabled(true);              // disable the ui-item until index-generation is finished
                ui->bt_generateIndex->setEnabled(true);         // disable generate-index-button

                ui->textEdit->moveCursor (QTextCursor::End);    // jump to end of UI-log-textedit
                newTimestampString = generateTimestampString();
                ui->textEdit->insertPlainText ("\n"+newTimestampString+" - Index generation finished.\n");
                ui->textEdit->moveCursor (QTextCursor::End);    // jump to end of UI-log-textedit

                // offer option to load the result index in default viewer
                QMessageBox::StandardButton reply;
                reply = QMessageBox::question(this, "Finished index generation", "Would you like to open and display it?",QMessageBox::Yes|QMessageBox::No);
                if (reply == QMessageBox::Yes)
                {
                    QString link = targetFolder+"/index.html";
                    QDesktopServices::openUrl(QUrl(link));
                }
                targetFolder = oldTargetFolder; // revert to old content -> targetFolder

                break;
          }

          case QMessageBox::No:
                {
                    QMessageBox::about(this, tr("Aborted"),tr("You aborted the Index generation"));
                    break;
                }

          default:
                {
                    // should never be reached
                    break;
                }
        }
    }
    else // either src- or target-folder doesnt exist
    {
        QMessageBox::about(this, tr("Error"),tr("Requirements failed. Aborting."));
    }
}