added creator bar UI and cancel button

This commit is contained in:
Marc Zinnschlag 2013-07-26 21:09:23 +02:00
parent b8ac45defe
commit fee748d4b5
6 changed files with 79 additions and 13 deletions

View file

@ -57,13 +57,13 @@ opencs_hdrs_noqt (view/doc
opencs_units (view/world opencs_units (view/world
table tablesubview scriptsubview util regionmapsubview tablebottombox table tablesubview scriptsubview util regionmapsubview tablebottombox creator genericcreator
) )
opencs_units_noqt (view/world opencs_units_noqt (view/world
dialoguesubview subviews dialoguesubview subviews
enumdelegate vartypedelegate recordstatusdelegate refidtypedelegate datadisplaydelegate enumdelegate vartypedelegate recordstatusdelegate refidtypedelegate datadisplaydelegate
scripthighlighter creator genericcreator scripthighlighter
) )

View file

@ -8,9 +8,17 @@ namespace CSVWorld
/// \brief Record creator UI base class /// \brief Record creator UI base class
class Creator : public QWidget class Creator : public QWidget
{ {
Q_OBJECT
public: public:
virtual ~Creator(); virtual ~Creator();
virtual void reset() = 0;
signals:
void done();
}; };
/// \brief Base class for Creator factory /// \brief Base class for Creator factory

View file

@ -1,2 +1,29 @@
#include "genericcreator.hpp" #include "genericcreator.hpp"
#include <QHBoxLayout>
#include <QPushButton>
#include <QLineEdit>
CSVWorld::GenericCreator::GenericCreator()
{
QHBoxLayout *layout = new QHBoxLayout;
QLineEdit *name = new QLineEdit;
layout->addWidget (name, 1);
QPushButton *createButton = new QPushButton ("Create");
layout->addWidget (createButton);
QPushButton *cancelButton = new QPushButton ("Cancel");
layout->addWidget (cancelButton);
connect (cancelButton, SIGNAL (clicked (bool)), this, SIGNAL (done()));
setLayout (layout);
}
void CSVWorld::GenericCreator::reset()
{
}

View file

@ -7,7 +7,13 @@ namespace CSVWorld
{ {
class GenericCreator : public Creator class GenericCreator : public Creator
{ {
Q_OBJECT
public: public:
GenericCreator();
virtual void reset();
}; };
} }

View file

@ -40,28 +40,30 @@ void CSVWorld::TableBottomBox::updateStatus()
} }
CSVWorld::TableBottomBox::TableBottomBox (const CreatorFactoryBase& creatorFactory, QWidget *parent) CSVWorld::TableBottomBox::TableBottomBox (const CreatorFactoryBase& creatorFactory, QWidget *parent)
: QWidget (parent), mShowStatusBar (false) : QWidget (parent), mShowStatusBar (false), mCreating (false)
{ {
for (int i=0; i<4; ++i) for (int i=0; i<4; ++i)
mStatusCount[i] = 0; mStatusCount[i] = 0;
setVisible (false); setVisible (false);
QStackedLayout *layout = new QStackedLayout; mLayout = new QStackedLayout;
mStatus = new QLabel; mStatus = new QLabel;
QStatusBar *statusBar = new QStatusBar; mStatusBar = new QStatusBar;
statusBar->addWidget (mStatus); mStatusBar->addWidget (mStatus);
layout->addWidget (statusBar); mLayout->addWidget (mStatusBar);
setLayout (layout); setLayout (mLayout);
mCreator = creatorFactory.makeCreator(); mCreator = creatorFactory.makeCreator();
layout->addWidget (mCreator); mLayout->addWidget (mCreator);
connect (mCreator, SIGNAL (done()), this, SLOT (createRequestDone()));
} }
CSVWorld::TableBottomBox::~TableBottomBox() CSVWorld::TableBottomBox::~TableBottomBox()
@ -73,7 +75,7 @@ void CSVWorld::TableBottomBox::setStatusBar (bool show)
{ {
if (show!=mShowStatusBar) if (show!=mShowStatusBar)
{ {
setVisible (show); setVisible (show || mCreating);
mShowStatusBar = show; mShowStatusBar = show;
@ -87,6 +89,18 @@ bool CSVWorld::TableBottomBox::canCreateAndDelete() const
return mCreator; return mCreator;
} }
void CSVWorld::TableBottomBox::createRequestDone()
{
if (!mShowStatusBar)
setVisible (false);
else
updateStatus();
mLayout->setCurrentWidget (mStatusBar);
mCreating = false;
}
void CSVWorld::TableBottomBox::selectionSizeChanged (int size) void CSVWorld::TableBottomBox::selectionSizeChanged (int size)
{ {
if (mStatusCount[3]!=size) if (mStatusCount[3]!=size)
@ -122,8 +136,9 @@ void CSVWorld::TableBottomBox::tableSizeChanged (int size, int deleted, int modi
updateStatus(); updateStatus();
} }
#include <iostream>
void CSVWorld::TableBottomBox::createRequest() void CSVWorld::TableBottomBox::createRequest()
{ {
std::cout<<"create"<<std::endl; mLayout->setCurrentWidget (mCreator);
setVisible (true);
mCreating = true;
} }

View file

@ -4,6 +4,8 @@
#include <QWidget> #include <QWidget>
class QLabel; class QLabel;
class QStackedLayout;
class QStatusBar;
namespace CSVWorld namespace CSVWorld
{ {
@ -16,8 +18,11 @@ namespace CSVWorld
bool mShowStatusBar; bool mShowStatusBar;
QLabel *mStatus; QLabel *mStatus;
QStatusBar *mStatusBar;
int mStatusCount[4]; int mStatusCount[4];
Creator *mCreator; Creator *mCreator;
bool mCreating;
QStackedLayout *mLayout;
private: private:
@ -40,6 +45,11 @@ namespace CSVWorld
/// ///
/// \note The BotomBox does not partake in the deletion of records. /// \note The BotomBox does not partake in the deletion of records.
private slots:
void createRequestDone();
///< \note This slot being called does not imply success.
public slots: public slots:
void selectionSizeChanged (int size); void selectionSizeChanged (int size);