|
|
|
/* This file is part of the KDE project
|
|
|
|
Copyright (C) 2002, 2003 Lucijan Busch <lucijan@gmx.at>
|
|
|
|
Copyright (C) 2005 Jaroslaw Staniek <js@iidea.pl>
|
|
|
|
|
|
|
|
This library is free software; you can redistribute it and/or
|
|
|
|
modify it under the terms of the GNU Library General Public
|
|
|
|
License as published by the Free Software Foundation; either
|
|
|
|
version 2 of the License, or (at your option) any later version.
|
|
|
|
|
|
|
|
This library 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
|
|
|
|
Library General Public License for more details.
|
|
|
|
|
|
|
|
You should have received a copy of the GNU Library General Public License
|
|
|
|
along with this library; see the file COPYING.LIB. If not, write to
|
|
|
|
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
|
|
* Boston, MA 02110-1301, USA.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef KEXIPROJECTPARTITEM_H
|
|
|
|
#define KEXIPROJECTPARTITEM_H
|
|
|
|
|
|
|
|
#include <tqobject.h>
|
|
|
|
#include <tqintdict.h>
|
|
|
|
#include <tqptrlist.h>
|
|
|
|
|
|
|
|
namespace KexiDB
|
|
|
|
{
|
|
|
|
class Connection;
|
|
|
|
}
|
|
|
|
|
|
|
|
namespace KexiPart
|
|
|
|
{
|
|
|
|
|
|
|
|
class Info;
|
|
|
|
|
|
|
|
/*!
|
|
|
|
@short Information about a single object that can be instantiated using Kexi Part
|
|
|
|
|
|
|
|
KexiPart::Item stores:
|
|
|
|
- identifier ident (low-level name, for example: table name)
|
|
|
|
- mime type name, eg. "kexi/table"
|
|
|
|
- caption (visible, i18n'd hight level name, eg. table or query title)
|
|
|
|
*/
|
|
|
|
class KEXICORE_EXPORT Item
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
|
|
|
|
Item();
|
|
|
|
~Item();
|
|
|
|
|
|
|
|
int identifier() const { return m_id; }
|
|
|
|
void setIdentifier(int id) { m_id = id; }
|
|
|
|
|
|
|
|
TQCString mimeType() const { return m_mime; }
|
|
|
|
void setMimeType(const TQCString &mime) { m_mime = mime; }
|
|
|
|
|
|
|
|
TQString name() const { return m_name; }
|
|
|
|
void setName(const TQString &name) { m_name = name; }
|
|
|
|
|
|
|
|
TQString caption() const { return m_caption; }
|
|
|
|
void setCaption(const TQString &c) { m_caption = c; }
|
|
|
|
|
|
|
|
TQString description() const { return m_desc; }
|
|
|
|
void setDescription(const TQString &d) { m_desc = d; }
|
|
|
|
|
|
|
|
/*! \return "neverSaved" flag for this item what mean
|
|
|
|
that is used when new item is created in-memory-only,
|
|
|
|
so we need to indicate for KexiProject about that state.
|
|
|
|
By default this flag is false.
|
|
|
|
Used by KexiMainWindowImpl::newObject(). */
|
|
|
|
bool neverSaved() const { return m_neverSaved; }
|
|
|
|
|
|
|
|
/*! \sa neverSaved().
|
|
|
|
Used by KexiMainWindowImpl::newObject(). */
|
|
|
|
void setNeverSaved(bool set) { m_neverSaved = set; }
|
|
|
|
|
|
|
|
bool isNull() const { return m_id==0; }
|
|
|
|
|
|
|
|
//! \return caption if not empty, else returns name.
|
|
|
|
inline TQString captionOrName() const { return m_caption.isEmpty() ? m_name : m_caption; }
|
|
|
|
|
|
|
|
private:
|
|
|
|
TQCString m_mime;
|
|
|
|
TQString m_name;
|
|
|
|
TQString m_caption;
|
|
|
|
TQString m_desc;
|
|
|
|
int m_id;
|
|
|
|
bool m_neverSaved : 1;
|
|
|
|
};
|
|
|
|
|
|
|
|
typedef TQIntDict<KexiPart::Item> ItemDict;
|
|
|
|
typedef TQIntDictIterator<KexiPart::Item> ItemDictIterator;
|
|
|
|
typedef TQPtrListIterator<KexiPart::Item> ItemListIterator;
|
|
|
|
|
|
|
|
/*!
|
|
|
|
@short Part item list with reimplemented compareItems() method.
|
|
|
|
|
|
|
|
Such a list is returend by KexiProject::getSortedItems(KexiPart::ItemList& list, KexiPart::Info *i);
|
|
|
|
so you can call sort() on the list to sort it by item name.
|
|
|
|
*/
|
|
|
|
class KEXICORE_EXPORT ItemList : public TQPtrList<KexiPart::Item> {
|
|
|
|
public:
|
|
|
|
ItemList() {}
|
|
|
|
protected:
|
|
|
|
virtual int compareItems( TQPtrCollection::Item item1, TQPtrCollection::Item item2 ) {
|
|
|
|
return TQString::compare(
|
|
|
|
static_cast<KexiPart::Item*>(item1)->name(),
|
|
|
|
static_cast<KexiPart::Item*>(item2)->name());
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|