1
0
mirror of https://gitlab.com/OpenMW/openmw.git synced 2025-02-23 06:41:08 +00:00

Attempt to match types. Does not work at the moment.

This commit is contained in:
Marek Kochanowicz 2014-02-13 13:54:09 +01:00
parent 71b2fc1c70
commit 09d3c7a446
6 changed files with 33 additions and 23 deletions

View File

@ -1485,7 +1485,7 @@ namespace CSMWorld
template<typename ESXRecordT> template<typename ESXRecordT>
struct RaceColumn : public Column<ESXRecordT> struct RaceColumn : public Column<ESXRecordT>
{ {
RaceColumn() : Column<ESXRecordT> (Columns::ColumnId_Race, ColumnBase::Display_String) {} RaceColumn() : Column<ESXRecordT> (Columns::ColumnId_Race, ColumnBase::Display_Race) {}
virtual QVariant get (const Record<ESXRecordT>& record) const virtual QVariant get (const Record<ESXRecordT>& record) const
{ {

View File

@ -188,9 +188,4 @@ void CSMWorld::IdTable::reorderRows (int baseIndex, const std::vector<int>& newO
CSMWorld::IdTable::Reordering CSMWorld::IdTable::getReordering() const CSMWorld::IdTable::Reordering CSMWorld::IdTable::getReordering() const
{ {
return mReordering; return mReordering;
}
CSMWorld::ColumnBase::Display CSMWorld::IdTable::getColumnDisplay (int index) const
{
return mIdCollection->getColumn(index).mDisplayType;
} }

View File

@ -11,7 +11,6 @@
namespace CSMWorld namespace CSMWorld
{ {
class CollectionBase; class CollectionBase;
class ColumnsBase;
class RecordBase; class RecordBase;
class IdTable : public QAbstractItemModel class IdTable : public QAbstractItemModel
@ -87,8 +86,6 @@ namespace CSMWorld
/// given in \a newOrder (baseIndex+newOrder[0] specifies the new index of row baseIndex). /// given in \a newOrder (baseIndex+newOrder[0] specifies the new index of row baseIndex).
Reordering getReordering() const; Reordering getReordering() const;
CSMWorld::ColumnBase::Display getColumnDisplay(int index) const;
}; };
} }

View File

@ -3,6 +3,7 @@
#include "universalid.hpp" #include "universalid.hpp"
#include "columnbase.hpp" #include "columnbase.hpp"
#include <iostream>
CSMWorld::TableMimeData::TableMimeData (UniversalId id) CSMWorld::TableMimeData::TableMimeData (UniversalId id)
{ {
@ -76,8 +77,9 @@ bool CSMWorld::TableMimeData::holdsType (CSMWorld::UniversalId::Type type) const
return false; return false;
} }
bool CSMWorld::TableMimeData::holdsType (CSMWorld::ColumnBase::Display type) bool CSMWorld::TableMimeData::holdsType (CSMWorld::ColumnBase::Display type) const
{ {
std::cout<<type<<std::endl;
for (std::vector<UniversalId>::const_iterator it = mUniversalId.begin(); it != mUniversalId.end(); ++it) for (std::vector<UniversalId>::const_iterator it = mUniversalId.begin(); it != mUniversalId.end(); ++it)
{ {
if (it->getType() == convertEnums (type)) if (it->getType() == convertEnums (type))
@ -102,7 +104,7 @@ CSMWorld::UniversalId CSMWorld::TableMimeData::returnMatching (CSMWorld::Univers
throw ("TableMimeData object does not hold object of the seeked type"); throw ("TableMimeData object does not hold object of the seeked type");
} }
CSMWorld::UniversalId CSMWorld::TableMimeData::returnMatching (CSMWorld::ColumnBase::Display type) CSMWorld::UniversalId CSMWorld::TableMimeData::returnMatching (CSMWorld::ColumnBase::Display type) const
{ {
for (std::vector<UniversalId>::const_iterator it = mUniversalId.begin(); it != mUniversalId.end(); ++it) for (std::vector<UniversalId>::const_iterator it = mUniversalId.begin(); it != mUniversalId.end(); ++it)
{ {
@ -115,15 +117,10 @@ CSMWorld::UniversalId CSMWorld::TableMimeData::returnMatching (CSMWorld::ColumnB
throw ("TableMimeData object does not hold object of the seeked type"); throw ("TableMimeData object does not hold object of the seeked type");
} }
CSMWorld::UniversalId::Type CSMWorld::TableMimeData::convertEnums (CSMWorld::ColumnBase::Display type) CSMWorld::UniversalId::Type CSMWorld::TableMimeData::convertEnums (CSMWorld::ColumnBase::Display type) const
{ {
switch (type) switch (type)
{ {
default:
throw ("This type is not handled");
return CSMWorld::UniversalId::Type_None;
break;
case CSMWorld::ColumnBase::Display_Race: case CSMWorld::ColumnBase::Display_Race:
return CSMWorld::UniversalId::Type_Race; return CSMWorld::UniversalId::Type_Race;
break; break;
@ -271,6 +268,14 @@ CSMWorld::UniversalId::Type CSMWorld::TableMimeData::convertEnums (CSMWorld::Col
case CSMWorld::ColumnBase::Display_Scene: case CSMWorld::ColumnBase::Display_Scene:
return CSMWorld::UniversalId::Type_Scene; return CSMWorld::UniversalId::Type_Scene;
break; break;
case CSMWorld::ColumnBase::Display_Script:
return CSMWorld::UniversalId::Type_Script;
break;
default:
return CSMWorld::UniversalId::Type_None;
break;
} }
} }
// kate: indent-mode cstyle; indent-width 4; replace-tabs on; // kate: indent-mode cstyle; indent-width 4; replace-tabs on;

View File

@ -25,15 +25,15 @@ namespace CSMWorld
std::string getIcon() const; std::string getIcon() const;
std::vector<UniversalId> getData() const; std::vector<UniversalId> getData() const;
bool holdsType(UniversalId::Type type) const; bool holdsType(UniversalId::Type type) const;
bool holdsType(CSMWorld::ColumnBase::Display type); bool holdsType(CSMWorld::ColumnBase::Display type) const;
UniversalId returnMatching(UniversalId::Type type) const; UniversalId returnMatching(UniversalId::Type type) const;
UniversalId returnMatching(CSMWorld::ColumnBase::Display type); UniversalId returnMatching(CSMWorld::ColumnBase::Display type) const;
private: private:
std::vector<UniversalId> mUniversalId; std::vector<UniversalId> mUniversalId;
QStringList mObjectsFormats; QStringList mObjectsFormats;
CSMWorld::UniversalId::Type convertEnums(CSMWorld::ColumnBase::Display type); CSMWorld::UniversalId::Type convertEnums(CSMWorld::ColumnBase::Display type) const;
}; };
} }
#endif // TABLEMIMEDATA_H #endif // TABLEMIMEDATA_H

View File

@ -17,6 +17,8 @@
#include "recordstatusdelegate.hpp" #include "recordstatusdelegate.hpp"
#include "util.hpp" #include "util.hpp"
#include <qt4/QtCore/qnamespace.h>
#include "../../model/world/tablemimedata.hpp"
void CSVWorld::Table::contextMenuEvent (QContextMenuEvent *event) void CSVWorld::Table::contextMenuEvent (QContextMenuEvent *event)
{ {
@ -475,13 +477,24 @@ void CSVWorld::Table::mouseMoveEvent (QMouseEvent* event)
void CSVWorld::Table::dragEnterEvent(QDragEnterEvent *event) void CSVWorld::Table::dragEnterEvent(QDragEnterEvent *event)
{ {
event->acceptProposedAction(); // QModelIndex index = indexAt (event->pos());
// if (dynamic_cast<const CSMWorld::TableMimeData*> (event->mimeData())->holdsType (mModel->getColumnDisplay (index.column())))
// {
event->acceptProposedAction();
// }
} }
void CSVWorld::Table::dropEvent(QDropEvent *event) void CSVWorld::Table::dropEvent(QDropEvent *event)
{ {
event->acceptProposedAction(); QModelIndex index = indexAt (event->pos());
QModelIndex index = indexAt(event->pos());
CSMWorld::ColumnBase::Display display = static_cast<CSMWorld::ColumnBase::Display>(mModel->headerData(index.column(), Qt::Horizontal, CSMWorld::ColumnBase::Role_Display).toInt());
if (dynamic_cast<const CSMWorld::TableMimeData*>(event->mimeData())->holdsType(display))
{
event->acceptProposedAction();
std::cout<<"Dropped/n";
} else {std::cout<<"Not Dropped\n";}
} }
void CSVWorld::Table::dragMoveEvent(QDragMoveEvent *event) void CSVWorld::Table::dragMoveEvent(QDragMoveEvent *event)