Commit 80bd4b70 authored by Gustavo Carneiro's avatar Gustavo Carneiro Committed by Kurt Hindenburg

Move HistoryTypeFile class to a new file.

parent 456cbc6c
......@@ -84,6 +84,7 @@ set(konsoleprivate_SRCS ${sessionadaptors_SRCS}
CompactHistoryScroll.cpp
HistoryType.cpp
HistoryTypeNone.cpp
HistoryTypeFile.cpp
HistorySizeDialog.cpp
widgets/HistorySizeWidget.cpp
widgets/IncrementalSearchBar.cpp
......
......@@ -40,9 +40,6 @@
#include <KConfigGroup>
#include <KSharedConfig>
// Reasonable line size
static const int LINE_SIZE = 1024;
using namespace Konsole;
/*
......@@ -60,48 +57,6 @@ using namespace Konsole;
at constant costs.
*/
HistoryTypeFile::HistoryTypeFile() = default;
bool HistoryTypeFile::isEnabled() const
{
return true;
}
HistoryScroll *HistoryTypeFile::scroll(HistoryScroll *old) const
{
if (dynamic_cast<HistoryFile *>(old) != nullptr) {
return old; // Unchanged.
}
HistoryScroll *newScroll = new HistoryScrollFile();
Character line[LINE_SIZE];
int lines = (old != nullptr) ? old->getLines() : 0;
for (int i = 0; i < lines; i++) {
int size = old->getLineLen(i);
if (size > LINE_SIZE) {
auto tmp_line = new Character[size];
old->getCells(i, 0, size, tmp_line);
newScroll->addCells(tmp_line, size);
newScroll->addLine(old->isWrappedLine(i));
delete [] tmp_line;
} else {
old->getCells(i, 0, size, line);
newScroll->addCells(line, size);
newScroll->addLine(old->isWrappedLine(i));
}
}
delete old;
return newScroll;
}
int HistoryTypeFile::maximumLineCount() const
{
return -1;
}
//////////////////////////////
CompactHistoryType::CompactHistoryType(unsigned int nbLines) :
_maxLines(nbLines)
{
......
......@@ -44,6 +44,7 @@
#include "HistoryType.h"
#include "HistoryTypeNone.h"
#include "HistoryTypeFile.h"
// Konsole
#include "Character.h"
......@@ -56,17 +57,6 @@ namespace Konsole {
// where history lines are allocated in (avoids heap fragmentation)
//////////////////////////////////////////////////////////////////////
class KONSOLEPRIVATE_EXPORT HistoryTypeFile : public HistoryType
{
public:
explicit HistoryTypeFile();
bool isEnabled() const override;
int maximumLineCount() const override;
HistoryScroll *scroll(HistoryScroll *) const override;
};
class KONSOLEPRIVATE_EXPORT CompactHistoryType : public HistoryType
{
public:
......
/*
This file is part of Konsole, an X terminal.
Copyright 1997,1998 by Lars Doelle <lars.doelle@on-line.de>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301 USA.
*/
#include "HistoryFile.h"
#include "HistoryTypeFile.h"
#include "HistoryScrollFile.h"
using namespace Konsole;
// Reasonable line size
static const int LINE_SIZE = 1024;
HistoryTypeFile::HistoryTypeFile() = default;
bool HistoryTypeFile::isEnabled() const
{
return true;
}
HistoryScroll *HistoryTypeFile::scroll(HistoryScroll *old) const
{
if (dynamic_cast<HistoryFile *>(old) != nullptr) {
return old; // Unchanged.
}
HistoryScroll *newScroll = new HistoryScrollFile();
Character line[LINE_SIZE];
int lines = (old != nullptr) ? old->getLines() : 0;
for (int i = 0; i < lines; i++) {
int size = old->getLineLen(i);
if (size > LINE_SIZE) {
auto tmp_line = new Character[size];
old->getCells(i, 0, size, tmp_line);
newScroll->addCells(tmp_line, size);
newScroll->addLine(old->isWrappedLine(i));
delete [] tmp_line;
} else {
old->getCells(i, 0, size, line);
newScroll->addCells(line, size);
newScroll->addLine(old->isWrappedLine(i));
}
}
delete old;
return newScroll;
}
int HistoryTypeFile::maximumLineCount() const
{
return -1;
}
/*
This file is part of Konsole, an X terminal.
Copyright 1997,1998 by Lars Doelle <lars.doelle@on-line.de>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301 USA.
*/
#ifndef HISTORYTYPEFILE_H
#define HISTORYTYPEFILE_H
#include "HistoryType.h"
#include "konsoleprivate_export.h"
namespace Konsole
{
class KONSOLEPRIVATE_EXPORT HistoryTypeFile : public HistoryType
{
public:
explicit HistoryTypeFile();
bool isEnabled() const override;
int maximumLineCount() const override;
HistoryScroll *scroll(HistoryScroll *) const override;
};
}
#endif
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment