summaryrefslogtreecommitdiffstats
path: root/konsole/konsole/schema.h
diff options
context:
space:
mode:
Diffstat (limited to 'konsole/konsole/schema.h')
-rw-r--r--konsole/konsole/schema.h243
1 files changed, 243 insertions, 0 deletions
diff --git a/konsole/konsole/schema.h b/konsole/konsole/schema.h
new file mode 100644
index 000000000..3ba718350
--- /dev/null
+++ b/konsole/konsole/schema.h
@@ -0,0 +1,243 @@
+/* schema.h
+**
+** Copyright (C) 1998-1999 by Lars Doelle <lars.doelle@on-line.de>
+** Copyright (C) 2000 by Adriaan de Groot <groot@kde.org>
+**
+** A file that defines the objects for storing color schema's
+** in konsole. This file is part of the KDE project, see
+** http://www.kde.org/
+** for more information.
+*/
+
+/*
+** 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 in a file called COPYING; if not, write to
+** the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+** MA 02110-1301, USA.
+*/
+
+/*
+** Lars' code has almost completely disappeared from this file.
+** The new setup is more object-oriented and disposes of some
+** nasty static deleters.
+**
+** Basically you want to create a ColorSchemaList and then call
+** checkSchema's to get all the schema's available. Iterate through
+** the items in the list (with a constiterator) and so whatever.
+** The ColorSchemaList inherits protected from QList to prevent you
+** from doing silly things to the elements of the list.
+*/
+
+#ifndef SCHEMA_include
+#define SCHEMA_include
+
+#include <qstring.h>
+#include <qptrlist.h>
+
+#include "TECommon.h"
+
+#ifndef KONSOLEDEBUG
+/*
+** konsole has claimed debug area 1211. This isn't really the right place
+** to define KONSOLEDEBUG but there is no "global.h" or central "konsole.h"
+** file included by all parts of konsole, so this will have to do.
+*/
+#define KONSOLEDEBUG kdDebug(1211)
+#endif
+
+class QDateTime;
+class KConfig;
+
+class ColorSchema
+{
+friend class ColorSchemaList; //only for resetting serial to one when deleting the list
+
+public:
+ /**
+ * Create ColorSchema from the given pathname.
+ * If the given pathname does not exist, a ColorSchema
+ * with the same settings as the default schema is returned.
+ */
+ ColorSchema(const QString& pathname);
+ ~ColorSchema();
+ /**
+ * Construct a color schema from the given config file.
+ * (This is different from the constructor with a pathname
+ * because that reads the hackneyed schema file syntax and
+ * this is a KDE config file)
+ */
+ ColorSchema(KConfig&);
+
+ /**
+ * Constructor for the default schema (with no path).
+ */
+ ColorSchema();
+
+ QString relPath() const { return fRelPath; } ;
+
+ /**
+ * Check if the schema file whose pathname was given
+ * to the constructor has changed since it was last read.
+ */
+ bool hasSchemaFileChanged() const;
+
+ /**
+ * Actually read a schema file (using the path given
+ * to the constructor of the ColorSchema).
+ */
+ bool rereadSchemaFile();
+
+ /**
+ * Writes a ColorSchema to a config file with the
+ * given name.
+ */
+ void writeConfig(const QString& filename) const;
+
+ /**
+ * Returns the (non-i18n) name of the i'th color,
+ * or QString::null if i is not a color name. This
+ * should be used as a group name to store the
+ * information about the i'th color.
+ */
+ static QString colorName(int i);
+
+ /**
+ * Update the timestamp in the color schema indicating
+ * when the schema's file whas last checked and read.
+ */
+ void updateLastRead(const QDateTime& dt);
+
+
+protected:
+ /**
+ * Clear a schema. Used by constructors to clean up the
+ * data members before filling them.
+ */
+ void clearSchema();
+
+ /**
+ * Set the data members' values to those of the
+ * default schema.
+ */
+ void setDefaultSchema();
+
+
+ /**
+ * Write a single ColorEntry to the config file
+ * under the given name (ie. in the group name).
+ */
+ void writeConfigColor(KConfig& c,
+ const QString& name,
+ const ColorEntry& e) const;
+ /**
+ * Read a single ColorEntry from the config file.
+ */
+ void readConfigColor(KConfig& c,
+ const QString& name,
+ ColorEntry& e) ;
+
+ public:
+ int numb() {if (!m_fileRead) rereadSchemaFile();return m_numb;};
+ const QString& title() {if (!m_fileRead) rereadSchemaFile();return m_title;};
+ const QString& imagePath() {if (!m_fileRead) rereadSchemaFile();return m_imagePath;};
+ int alignment() {if (!m_fileRead) rereadSchemaFile();return m_alignment;};
+ const ColorEntry* table() {if (!m_fileRead) rereadSchemaFile();return m_table;};
+ bool useTransparency() {if (!m_fileRead) rereadSchemaFile();return m_useTransparency;};
+ double tr_x() {if (!m_fileRead) rereadSchemaFile();return m_tr_x;};
+ int tr_r() {if (!m_fileRead) rereadSchemaFile();return m_tr_r;};
+ int tr_g() {if (!m_fileRead) rereadSchemaFile();return m_tr_g;};
+ int tr_b() {if (!m_fileRead) rereadSchemaFile();return m_tr_b;};
+ QDateTime* getLastRead() {return lastRead;}; // Time last checked for updates
+
+ private:
+ int m_numb;
+ int m_tr_r, m_tr_g, m_tr_b;
+ int m_alignment;
+ QString m_title;
+ QString m_imagePath;
+ ColorEntry m_table[TABLE_COLORS];
+ bool m_useTransparency:1;
+ bool m_fileRead:1;
+ double m_tr_x;
+ QString fRelPath; // File name of schema file
+ QDateTime *lastRead; // Time last checked for updates
+ static int serial; // Serial number so that every
+ // ColorSchema has a unique number.
+};
+
+class ColorSchemaList : protected QPtrList<ColorSchema>
+{
+public:
+ /**
+ * The following functions are redeclared public since
+ * they're needed, but we still want to inherit protected
+ * from QPtrList to prevent unsightly -- and perhaps dangerous --
+ * tampering with the ColorSchemaList.
+ */
+ uint count() const { return QPtrList<ColorSchema>::count(); } ;
+ const ColorSchema *at(unsigned int i)
+ { return QPtrList<ColorSchema>::at(i); } ;
+
+ void sort() {QPtrList<ColorSchema>::sort();};
+
+ ColorSchemaList();
+ virtual ~ColorSchemaList();
+ /**
+ * Check if any new color schema files have been added since
+ * the last time checkSchemas() was called. Any new files
+ * are added to the list of schemas automatically.
+ *
+ * @return true if there were any changes to the list of schemas
+ * @return false otherwise
+ */
+ bool checkSchemas();
+
+ /**
+ * Returns the color schema read from the given path,
+ * or NULL if no color schema with the given path is found.
+ */
+ ColorSchema *find(const QString & path);
+ /**
+ * Returns the serial number of the color schema
+ * with the given serial number, or NULL if there is none.
+ */
+ ColorSchema *find(int);
+ ColorSchema *findAny(const QString& path)
+ {
+ ColorSchema *p = find(path);
+ if (p) return p;
+ return defaultSchema;
+ } ;
+protected:
+ virtual int compareItems(QPtrCollection::Item item1, QPtrCollection::Item item2);
+
+private:
+ /**
+ * These next two functions are used internally by
+ * checkSchemas. updateAllSchemaTimes sets the timestamp
+ * on all the ColorSchema's whose config / schema file
+ * can still be found, and deleteOldSchema's does the
+ * actual removal of schema's without a config file.
+ */
+ bool updateAllSchemaTimes(const QDateTime&);
+ bool deleteOldSchemas(const QDateTime&);
+
+ /**
+ * This isn't really used, but it could be. A newly
+ * constructed ColorSchemaList contains one element:
+ * the defaultSchema, with serial number 0.
+ */
+ ColorSchema *defaultSchema;
+} ;
+
+#endif