Merge pull request #1342 from marcofernandezheras/CardInfoLayout
Deck Editor layout
This commit is contained in:
commit
62dc3a7ca3
11 changed files with 485 additions and 123 deletions
|
@ -7,39 +7,52 @@
|
||||||
#include "cardinfotext.h"
|
#include "cardinfotext.h"
|
||||||
#include "settingscache.h"
|
#include "settingscache.h"
|
||||||
|
|
||||||
|
#include <QSplitter>
|
||||||
#include <QVBoxLayout>
|
#include <QVBoxLayout>
|
||||||
|
|
||||||
CardFrame::CardFrame(int width, int height, const QString &cardName, QWidget *parent)
|
CardFrame::CardFrame(const QString &cardName, QWidget *parent)
|
||||||
: QTabWidget(parent), info(0), cardTextOnly(false)
|
: QTabWidget(parent), info(0), cardTextOnly(false)
|
||||||
{
|
{
|
||||||
setFixedWidth(width);
|
|
||||||
setMinimumHeight(height);
|
|
||||||
|
|
||||||
setContentsMargins(3, 3, 3, 3);
|
setContentsMargins(3, 3, 3, 3);
|
||||||
pic = new CardInfoPicture(width - 6);
|
pic = new CardInfoPicture();
|
||||||
|
pic->setObjectName("pic");
|
||||||
text = new CardInfoText();
|
text = new CardInfoText();
|
||||||
|
text->setObjectName("text");
|
||||||
|
|
||||||
tab1 = new QWidget(this);
|
tab1 = new QWidget(this);
|
||||||
tab2 = new QWidget(this);
|
tab2 = new QWidget(this);
|
||||||
tab3 = new QWidget(this);
|
tab3 = new QWidget(this);
|
||||||
|
|
||||||
|
tab1->setObjectName("tab1");
|
||||||
|
tab2->setObjectName("tab2");
|
||||||
|
tab3->setObjectName("tab3");
|
||||||
|
|
||||||
insertTab(ImageOnlyView, tab1, QString());
|
insertTab(ImageOnlyView, tab1, QString());
|
||||||
insertTab(TextOnlyView, tab2, QString());
|
insertTab(TextOnlyView, tab2, QString());
|
||||||
insertTab(ImageAndTextView, tab3, QString());
|
insertTab(ImageAndTextView, tab3, QString());
|
||||||
connect(this, SIGNAL(currentChanged(int)), this, SLOT(setViewMode(int)));
|
connect(this, SIGNAL(currentChanged(int)), this, SLOT(setViewMode(int)));
|
||||||
|
|
||||||
tab1Layout = new QVBoxLayout();
|
tab1Layout = new QVBoxLayout();
|
||||||
|
tab1Layout->setObjectName("tab1Layout");
|
||||||
tab1Layout->setContentsMargins(0, 0, 0, 0);
|
tab1Layout->setContentsMargins(0, 0, 0, 0);
|
||||||
tab1Layout->setSpacing(0);
|
tab1Layout->setSpacing(0);
|
||||||
tab1->setLayout(tab1Layout);
|
tab1->setLayout(tab1Layout);
|
||||||
|
|
||||||
tab2Layout = new QVBoxLayout();
|
tab2Layout = new QVBoxLayout();
|
||||||
|
tab2Layout->setObjectName("tab2Layout");
|
||||||
tab2Layout->setContentsMargins(0, 0, 0, 0);
|
tab2Layout->setContentsMargins(0, 0, 0, 0);
|
||||||
tab2Layout->setSpacing(0);
|
tab2Layout->setSpacing(0);
|
||||||
tab2->setLayout(tab2Layout);
|
tab2->setLayout(tab2Layout);
|
||||||
|
|
||||||
|
splitter = new QSplitter();
|
||||||
|
splitter->setObjectName("splitter");
|
||||||
|
splitter->setOrientation(Qt::Vertical);
|
||||||
|
|
||||||
tab3Layout = new QVBoxLayout();
|
tab3Layout = new QVBoxLayout();
|
||||||
|
tab3Layout->setObjectName("tab3Layout");
|
||||||
tab3Layout->setContentsMargins(0, 0, 0, 0);
|
tab3Layout->setContentsMargins(0, 0, 0, 0);
|
||||||
tab3Layout->setSpacing(0);
|
tab3Layout->setSpacing(0);
|
||||||
|
tab3Layout->addWidget(splitter);
|
||||||
tab3->setLayout(tab3Layout);
|
tab3->setLayout(tab3Layout);
|
||||||
|
|
||||||
setViewMode(settingsCache->getCardInfoViewMode());
|
setViewMode(settingsCache->getCardInfoViewMode());
|
||||||
|
@ -67,8 +80,8 @@ void CardFrame::setViewMode(int mode)
|
||||||
tab2Layout->addWidget(text);
|
tab2Layout->addWidget(text);
|
||||||
break;
|
break;
|
||||||
case ImageAndTextView:
|
case ImageAndTextView:
|
||||||
tab3Layout->addWidget(pic);
|
splitter->addWidget(pic);
|
||||||
tab3Layout->addWidget(text);
|
splitter->addWidget(text);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,6 +8,7 @@ class CardInfo;
|
||||||
class CardInfoPicture;
|
class CardInfoPicture;
|
||||||
class CardInfoText;
|
class CardInfoText;
|
||||||
class QVBoxLayout;
|
class QVBoxLayout;
|
||||||
|
class QSplitter;
|
||||||
|
|
||||||
class CardFrame : public QTabWidget {
|
class CardFrame : public QTabWidget {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
@ -19,11 +20,11 @@ private:
|
||||||
bool cardTextOnly;
|
bool cardTextOnly;
|
||||||
QWidget *tab1, *tab2, *tab3;
|
QWidget *tab1, *tab2, *tab3;
|
||||||
QVBoxLayout *tab1Layout, *tab2Layout, *tab3Layout;
|
QVBoxLayout *tab1Layout, *tab2Layout, *tab3Layout;
|
||||||
|
QSplitter *splitter;
|
||||||
public:
|
public:
|
||||||
enum ViewMode { ImageOnlyView, TextOnlyView, ImageAndTextView };
|
enum ViewMode { ImageOnlyView, TextOnlyView, ImageAndTextView };
|
||||||
|
|
||||||
CardFrame(int width, int height, const QString &cardName = QString(),
|
CardFrame(const QString &cardName = QString(),
|
||||||
QWidget *parent = 0);
|
QWidget *parent = 0);
|
||||||
void retranslateUi();
|
void retranslateUi();
|
||||||
public slots:
|
public slots:
|
||||||
|
|
|
@ -8,14 +8,12 @@
|
||||||
#include "carddatabase.h"
|
#include "carddatabase.h"
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
|
|
||||||
CardInfoPicture::CardInfoPicture(int width, QWidget *parent)
|
CardInfoPicture::CardInfoPicture(QWidget *parent)
|
||||||
: QWidget(parent),
|
: QWidget(parent),
|
||||||
info(0),
|
info(0),
|
||||||
pixmapDirty(true)
|
pixmapDirty(true)
|
||||||
{
|
{
|
||||||
setFixedWidth(width);
|
|
||||||
setMinimumHeight(100);
|
setMinimumHeight(100);
|
||||||
setMaximumHeight(width / (qreal) CARD_WIDTH * (qreal) CARD_HEIGHT);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CardInfoPicture::setCard(CardInfo *card)
|
void CardInfoPicture::setCard(CardInfo *card)
|
||||||
|
|
|
@ -15,7 +15,7 @@ private:
|
||||||
bool pixmapDirty;
|
bool pixmapDirty;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
CardInfoPicture(int width, QWidget *parent = 0);
|
CardInfoPicture(QWidget *parent = 0);
|
||||||
protected:
|
protected:
|
||||||
void resizeEvent(QResizeEvent *event);
|
void resizeEvent(QResizeEvent *event);
|
||||||
void paintEvent(QPaintEvent *);
|
void paintEvent(QPaintEvent *);
|
||||||
|
|
|
@ -11,6 +11,7 @@ FilterBuilder::FilterBuilder(QWidget *parent)
|
||||||
: QWidget(parent)
|
: QWidget(parent)
|
||||||
{
|
{
|
||||||
filterCombo = new QComboBox;
|
filterCombo = new QComboBox;
|
||||||
|
filterCombo->setObjectName("filterCombo");
|
||||||
for (int i = 0; i < CardFilter::AttrEnd; i++)
|
for (int i = 0; i < CardFilter::AttrEnd; i++)
|
||||||
filterCombo->addItem(
|
filterCombo->addItem(
|
||||||
tr(CardFilter::attrName(static_cast<CardFilter::Attr>(i))),
|
tr(CardFilter::attrName(static_cast<CardFilter::Attr>(i))),
|
||||||
|
@ -18,6 +19,7 @@ FilterBuilder::FilterBuilder(QWidget *parent)
|
||||||
);
|
);
|
||||||
|
|
||||||
typeCombo = new QComboBox;
|
typeCombo = new QComboBox;
|
||||||
|
typeCombo->setObjectName("typeCombo");
|
||||||
for (int i = 0; i < CardFilter::TypeEnd; i++)
|
for (int i = 0; i < CardFilter::TypeEnd; i++)
|
||||||
typeCombo->addItem(
|
typeCombo->addItem(
|
||||||
tr(CardFilter::typeName(static_cast<CardFilter::Type>(i))),
|
tr(CardFilter::typeName(static_cast<CardFilter::Type>(i))),
|
||||||
|
@ -25,12 +27,15 @@ FilterBuilder::FilterBuilder(QWidget *parent)
|
||||||
);
|
);
|
||||||
|
|
||||||
QPushButton *ok = new QPushButton(QIcon(":/resources/increment.svg"), QString());
|
QPushButton *ok = new QPushButton(QIcon(":/resources/increment.svg"), QString());
|
||||||
|
ok->setObjectName("ok");
|
||||||
ok->setMaximumSize(20, 20);
|
ok->setMaximumSize(20, 20);
|
||||||
|
|
||||||
edit = new QLineEdit;
|
edit = new QLineEdit;
|
||||||
|
edit->setObjectName("edit");
|
||||||
edit->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
|
edit->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
|
||||||
|
|
||||||
QGridLayout *layout = new QGridLayout;
|
QGridLayout *layout = new QGridLayout;
|
||||||
|
layout->setObjectName("layout");
|
||||||
layout->setContentsMargins(0, 0, 0, 0);
|
layout->setContentsMargins(0, 0, 0, 0);
|
||||||
|
|
||||||
layout->addWidget(typeCombo, 0, 0, 1, 2);
|
layout->addWidget(typeCombo, 0, 0, 1, 2);
|
||||||
|
|
|
@ -223,8 +223,8 @@ int main(int argc, char *argv[])
|
||||||
generateClientID(); //generate the users client id
|
generateClientID(); //generate the users client id
|
||||||
qDebug() << "ClientID In Cache: " << settingsCache->getClientID();
|
qDebug() << "ClientID In Cache: " << settingsCache->getClientID();
|
||||||
|
|
||||||
ui.show();
|
ui.showMaximized();
|
||||||
qDebug("main(): ui.show() finished");
|
qDebug("main(): ui.showMaximized() finished");
|
||||||
|
|
||||||
app.exec();
|
app.exec();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,26 @@
|
||||||
#include "settingscache.h"
|
#include "settingscache.h"
|
||||||
#include <QSettings>
|
#include <QSettings>
|
||||||
|
#if QT_VERSION >= 0x050000
|
||||||
|
#include <QStandardPaths>
|
||||||
|
#else
|
||||||
|
#include <QDesktopServices>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
QString SettingsCache::getLayoutsSettingsPath()
|
||||||
|
{
|
||||||
|
QString file = "";
|
||||||
|
|
||||||
|
#ifndef PORTABLE_BUILD
|
||||||
|
#if QT_VERSION >= 0x050000
|
||||||
|
file = QStandardPaths::writableLocation(QStandardPaths::DataLocation);
|
||||||
|
#else
|
||||||
|
file = QDesktopServices::storageLocation(QDesktopServices::DataLocation);
|
||||||
|
#endif
|
||||||
|
file.append("/settings/layouts/");
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return file;
|
||||||
|
}
|
||||||
|
|
||||||
SettingsCache::SettingsCache()
|
SettingsCache::SettingsCache()
|
||||||
{
|
{
|
||||||
|
@ -97,6 +118,16 @@ SettingsCache::SettingsCache()
|
||||||
spectatorsCanSeeEverything = settings->value("game/spectatorscanseeeverything", false).toBool();
|
spectatorsCanSeeEverything = settings->value("game/spectatorscanseeeverything", false).toBool();
|
||||||
clientID = settings->value("personal/clientid", "notset").toString();
|
clientID = settings->value("personal/clientid", "notset").toString();
|
||||||
|
|
||||||
|
QString file = getLayoutsSettingsPath();
|
||||||
|
file.append("deckLayout.ini");
|
||||||
|
|
||||||
|
QSettings layout_settings(file , QSettings::IniFormat);
|
||||||
|
deckEditorLayoutState = layout_settings.value("layouts/deckEditor_state").toByteArray();
|
||||||
|
deckEditorGeometry = layout_settings.value("layouts/deckEditor_geometry").toByteArray();
|
||||||
|
|
||||||
|
deckEditorCardSize = layout_settings.value("layouts/deckEditor_CardSize", QSize(250,500)).toSize();
|
||||||
|
deckEditorFilterSize = layout_settings.value("layouts/deckEditor_FilterSize", QSize(250,250)).toSize();
|
||||||
|
deckEditorDeckSize = layout_settings.value("layouts/deckEditor_DeckSize", QSize(250,360)).toSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
void SettingsCache::setCardInfoViewMode(const int _viewMode) {
|
void SettingsCache::setCardInfoViewMode(const int _viewMode) {
|
||||||
|
@ -462,6 +493,56 @@ QStringList SettingsCache::getCountries() const
|
||||||
return countries;
|
return countries;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SettingsCache::setDeckEditorLayoutState(const QByteArray &value)
|
||||||
|
{
|
||||||
|
deckEditorLayoutState = value;
|
||||||
|
|
||||||
|
QString file = getLayoutsSettingsPath();
|
||||||
|
file.append("deckLayout.ini");
|
||||||
|
QSettings layout_settings(file , QSettings::IniFormat);
|
||||||
|
layout_settings.setValue("layouts/deckEditor_state",value);
|
||||||
|
}
|
||||||
|
|
||||||
|
void SettingsCache::setDeckEditorGeometry(const QByteArray &value)
|
||||||
|
{
|
||||||
|
deckEditorGeometry = value;
|
||||||
|
|
||||||
|
QString file = getLayoutsSettingsPath();
|
||||||
|
file.append("deckLayout.ini");
|
||||||
|
QSettings layout_settings(file , QSettings::IniFormat);
|
||||||
|
layout_settings.setValue("layouts/deckEditor_geometry",value);
|
||||||
|
}
|
||||||
|
|
||||||
|
void SettingsCache::setDeckEditorCardSize(const QSize &value)
|
||||||
|
{
|
||||||
|
deckEditorCardSize = value;
|
||||||
|
|
||||||
|
QString file = getLayoutsSettingsPath();
|
||||||
|
file.append("deckLayout.ini");
|
||||||
|
QSettings layout_settings(file , QSettings::IniFormat);
|
||||||
|
layout_settings.setValue("layouts/deckEditor_CardSize",value);
|
||||||
|
}
|
||||||
|
|
||||||
|
void SettingsCache::setDeckEditorDeckSize(const QSize &value)
|
||||||
|
{
|
||||||
|
deckEditorDeckSize = value;
|
||||||
|
|
||||||
|
QString file = getLayoutsSettingsPath();
|
||||||
|
file.append("deckLayout.ini");
|
||||||
|
QSettings layout_settings(file , QSettings::IniFormat);
|
||||||
|
layout_settings.setValue("layouts/deckEditor_DeckSize",value);
|
||||||
|
}
|
||||||
|
|
||||||
|
void SettingsCache::setDeckEditorFilterSize(const QSize &value)
|
||||||
|
{
|
||||||
|
deckEditorFilterSize = value;
|
||||||
|
|
||||||
|
QString file = getLayoutsSettingsPath();
|
||||||
|
file.append("deckLayout.ini");
|
||||||
|
QSettings layout_settings(file , QSettings::IniFormat);
|
||||||
|
layout_settings.setValue("layouts/deckEditor_FilterSize",value);
|
||||||
|
}
|
||||||
|
|
||||||
void SettingsCache::setGameDescription(const QString _gameDescription)
|
void SettingsCache::setGameDescription(const QString _gameDescription)
|
||||||
{
|
{
|
||||||
gameDescription = _gameDescription;
|
gameDescription = _gameDescription;
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
#define SETTINGSCACHE_H
|
#define SETTINGSCACHE_H
|
||||||
|
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
|
#include <QSize>
|
||||||
#include <QStringList>
|
#include <QStringList>
|
||||||
|
|
||||||
// the falbacks are used for cards without a muid
|
// the falbacks are used for cards without a muid
|
||||||
|
@ -99,6 +100,10 @@ private:
|
||||||
bool spectatorsCanTalk;
|
bool spectatorsCanTalk;
|
||||||
bool spectatorsCanSeeEverything;
|
bool spectatorsCanSeeEverything;
|
||||||
int keepalive;
|
int keepalive;
|
||||||
|
QByteArray deckEditorLayoutState, deckEditorGeometry;
|
||||||
|
QSize deckEditorFilterSize, deckEditorDeckSize, deckEditorCardSize;
|
||||||
|
QString getLayoutsSettingsPath();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
SettingsCache();
|
SettingsCache();
|
||||||
const QByteArray &getMainWindowGeometry() const { return mainWindowGeometry; }
|
const QByteArray &getMainWindowGeometry() const { return mainWindowGeometry; }
|
||||||
|
@ -172,6 +177,17 @@ public:
|
||||||
int getKeepAlive() const { return keepalive; }
|
int getKeepAlive() const { return keepalive; }
|
||||||
void setClientID(QString clientID);
|
void setClientID(QString clientID);
|
||||||
QString getClientID() { return clientID; }
|
QString getClientID() { return clientID; }
|
||||||
|
QByteArray getDeckEditorLayoutState() const { return deckEditorLayoutState; }
|
||||||
|
void setDeckEditorLayoutState(const QByteArray &value);
|
||||||
|
QByteArray getDeckEditorGeometry() const { return deckEditorGeometry; }
|
||||||
|
void setDeckEditorGeometry(const QByteArray &value);
|
||||||
|
QSize getDeckEditorCardSize() const { return deckEditorCardSize; }
|
||||||
|
void setDeckEditorCardSize(const QSize &value);
|
||||||
|
QSize getDeckEditorDeckSize() const { return deckEditorDeckSize; }
|
||||||
|
void setDeckEditorDeckSize(const QSize &value);
|
||||||
|
QSize getDeckEditorFilterSize() const { return deckEditorFilterSize; }
|
||||||
|
void setDeckEditorFilterSize(const QSize &value);
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void setMainWindowGeometry(const QByteArray &_mainWindowGeometry);
|
void setMainWindowGeometry(const QByteArray &_mainWindowGeometry);
|
||||||
void setLang(const QString &_lang);
|
void setLang(const QString &_lang);
|
||||||
|
|
|
@ -19,6 +19,8 @@
|
||||||
#include <QTextStream>
|
#include <QTextStream>
|
||||||
#include <QProcessEnvironment>
|
#include <QProcessEnvironment>
|
||||||
#include <QTimer>
|
#include <QTimer>
|
||||||
|
#include <QDockWidget>
|
||||||
|
#include <QPushButton>
|
||||||
#include "tab_deck_editor.h"
|
#include "tab_deck_editor.h"
|
||||||
#include "window_sets.h"
|
#include "window_sets.h"
|
||||||
#include "carddatabase.h"
|
#include "carddatabase.h"
|
||||||
|
@ -47,108 +49,37 @@ void SearchLineEdit::keyPressEvent(QKeyEvent *event)
|
||||||
QLineEdit::keyPressEvent(event);
|
QLineEdit::keyPressEvent(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
TabDeckEditor::TabDeckEditor(TabSupervisor *_tabSupervisor, QWidget *parent)
|
void TabDeckEditor::createShowHideDocksButtons()
|
||||||
: Tab(_tabSupervisor, parent), modified(false)
|
|
||||||
{
|
{
|
||||||
aClearFilterAll = new QAction(QString(), this);
|
btnFilter = new QPushButton(QIcon("://resources/icon_view.svg"),QString());
|
||||||
aClearFilterAll->setIcon(QIcon(":/resources/icon_clearsearch.svg"));
|
btnFilter->setObjectName("btnFilter");
|
||||||
connect(aClearFilterAll, SIGNAL(triggered()), this, SLOT(actClearFilterAll()));
|
btnFilter->setCheckable(true);
|
||||||
|
btnFilter->setChecked(true);
|
||||||
|
btnFilter->setMaximumWidth(30);
|
||||||
|
searchLayout->addWidget(btnFilter);
|
||||||
|
|
||||||
aClearFilterOne = new QAction(QString(), this);
|
btnDeck = new QPushButton(QIcon("://resources/hand.svg"),QString());
|
||||||
aClearFilterOne->setIcon(QIcon(":/resources/decrement.svg"));
|
btnDeck->setObjectName("btnDeck");
|
||||||
connect(aClearFilterOne, SIGNAL(triggered()), this, SLOT(actClearFilterOne()));
|
btnDeck->setCheckable(true);
|
||||||
|
btnDeck->setChecked(true);
|
||||||
|
btnDeck->setMaximumWidth(30);
|
||||||
|
searchLayout->addWidget(btnDeck);
|
||||||
|
|
||||||
searchEdit = new SearchLineEdit;
|
btnCard = new QPushButton(QIcon("://back.svg"),QString());
|
||||||
#if QT_VERSION >= 0x050300
|
btnCard->setObjectName("btnCard");
|
||||||
searchEdit->addAction(QIcon(":/resources/icon_search_black.svg"), QLineEdit::LeadingPosition);
|
btnCard->setCheckable(true);
|
||||||
#endif
|
btnCard->setChecked(true);
|
||||||
searchEdit->setObjectName("searchEdit");
|
btnCard->setMaximumWidth(30);
|
||||||
|
searchLayout->addWidget(btnCard);
|
||||||
setFocusProxy(searchEdit);
|
}
|
||||||
setFocusPolicy(Qt::ClickFocus);
|
|
||||||
|
|
||||||
searchEdit->installEventFilter(&searchKeySignals);
|
|
||||||
connect(searchEdit, SIGNAL(textChanged(const QString &)), this, SLOT(updateSearch(const QString &)));
|
|
||||||
connect(&searchKeySignals, SIGNAL(onEnter()), this, SLOT(actAddCard()));
|
|
||||||
connect(&searchKeySignals, SIGNAL(onCtrlAltEqual()), this, SLOT(actAddCard()));
|
|
||||||
connect(&searchKeySignals, SIGNAL(onCtrlAltRBracket()), this, SLOT(actAddCardToSideboard()));
|
|
||||||
connect(&searchKeySignals, SIGNAL(onCtrlAltMinus()), this, SLOT(actDecrementCard()));
|
|
||||||
connect(&searchKeySignals, SIGNAL(onCtrlAltLBracket()), this, SLOT(actDecrementCardFromSideboard()));
|
|
||||||
connect(&searchKeySignals, SIGNAL(onCtrlAltEnter()), this, SLOT(actAddCardToSideboard()));
|
|
||||||
connect(&searchKeySignals, SIGNAL(onCtrlEnter()), this, SLOT(actAddCardToSideboard()));
|
|
||||||
|
|
||||||
QToolBar *deckEditToolBar = new QToolBar;
|
|
||||||
deckEditToolBar->setOrientation(Qt::Horizontal);
|
|
||||||
deckEditToolBar->setIconSize(QSize(24, 24));
|
|
||||||
|
|
||||||
QHBoxLayout *searchLayout = new QHBoxLayout;
|
|
||||||
searchLayout->addWidget(deckEditToolBar);
|
|
||||||
searchLayout->addWidget(searchEdit);
|
|
||||||
|
|
||||||
databaseModel = new CardDatabaseModel(db, this);
|
|
||||||
databaseDisplayModel = new CardDatabaseDisplayModel(this);
|
|
||||||
databaseDisplayModel->setSourceModel(databaseModel);
|
|
||||||
databaseDisplayModel->setFilterKeyColumn(0);
|
|
||||||
databaseDisplayModel->sort(0, Qt::AscendingOrder);
|
|
||||||
|
|
||||||
databaseView = new QTreeView();
|
|
||||||
databaseView->setFocusProxy(searchEdit);
|
|
||||||
databaseView->setModel(databaseDisplayModel);
|
|
||||||
databaseView->setUniformRowHeights(true);
|
|
||||||
databaseView->setRootIsDecorated(false);
|
|
||||||
databaseView->setAlternatingRowColors(true);
|
|
||||||
databaseView->setSortingEnabled(true);
|
|
||||||
databaseView->sortByColumn(0, Qt::AscendingOrder);
|
|
||||||
databaseView->resizeColumnToContents(0);
|
|
||||||
connect(databaseView->selectionModel(), SIGNAL(currentRowChanged(const QModelIndex &, const QModelIndex &)), this, SLOT(updateCardInfoLeft(const QModelIndex &, const QModelIndex &)));
|
|
||||||
connect(databaseView, SIGNAL(doubleClicked(const QModelIndex &)), this, SLOT(actAddCard()));
|
|
||||||
searchEdit->setTreeView(databaseView);
|
|
||||||
|
|
||||||
QVBoxLayout *leftFrame = new QVBoxLayout;
|
|
||||||
leftFrame->addLayout(searchLayout);
|
|
||||||
leftFrame->addWidget(databaseView);
|
|
||||||
|
|
||||||
cardInfo = new CardFrame(250, 372);
|
|
||||||
|
|
||||||
filterModel = new FilterTreeModel();
|
|
||||||
databaseDisplayModel->setFilterTree(filterModel->filterTree());
|
|
||||||
filterView = new QTreeView;
|
|
||||||
filterView->setModel(filterModel);
|
|
||||||
filterView->setMaximumWidth(250);
|
|
||||||
filterView->setUniformRowHeights(true);
|
|
||||||
filterView->setHeaderHidden(true);
|
|
||||||
filterView->setContextMenuPolicy(Qt::CustomContextMenu);
|
|
||||||
connect(filterModel, SIGNAL(layoutChanged()), filterView, SLOT(expandAll()));
|
|
||||||
connect(filterView, SIGNAL(customContextMenuRequested(const QPoint &)),
|
|
||||||
this, SLOT(filterViewCustomContextMenu(const QPoint &)));
|
|
||||||
FilterBuilder *filterBuilder = new FilterBuilder;
|
|
||||||
connect(filterBuilder, SIGNAL(add(const CardFilter *)), filterModel, SLOT(addFilter(const CardFilter *)));
|
|
||||||
|
|
||||||
QToolButton *filterDelOne = new QToolButton();
|
|
||||||
filterDelOne->setDefaultAction(aClearFilterOne);
|
|
||||||
filterDelOne->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
|
|
||||||
|
|
||||||
QToolButton *filterDelAll = new QToolButton();
|
|
||||||
filterDelAll->setDefaultAction(aClearFilterAll);
|
|
||||||
filterDelAll->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
|
|
||||||
|
|
||||||
QGridLayout *filterLayout = new QGridLayout;
|
|
||||||
filterLayout->addWidget(filterBuilder, 0, 0, 1, 2);
|
|
||||||
filterLayout->addWidget(filterView, 1, 0, 1, 2);
|
|
||||||
filterLayout->addWidget(filterDelOne, 2, 0);
|
|
||||||
filterLayout->addWidget(filterDelAll, 2, 1);
|
|
||||||
|
|
||||||
filterBox = new QGroupBox();
|
|
||||||
filterBox->setMaximumWidth(250);
|
|
||||||
filterBox->setLayout(filterLayout);
|
|
||||||
|
|
||||||
QVBoxLayout *middleFrame = new QVBoxLayout;
|
|
||||||
middleFrame->addWidget(cardInfo, 1, Qt::AlignTop);
|
|
||||||
middleFrame->addWidget(filterBox, 0);
|
|
||||||
|
|
||||||
|
void TabDeckEditor::createDeckDock()
|
||||||
|
{
|
||||||
deckModel = new DeckListModel(this);
|
deckModel = new DeckListModel(this);
|
||||||
|
deckModel->setObjectName("deckModel");
|
||||||
connect(deckModel, SIGNAL(deckHashChanged()), this, SLOT(updateHash()));
|
connect(deckModel, SIGNAL(deckHashChanged()), this, SLOT(updateHash()));
|
||||||
deckView = new QTreeView();
|
deckView = new QTreeView();
|
||||||
|
deckView->setObjectName("deckView");
|
||||||
deckView->setModel(deckModel);
|
deckView->setModel(deckModel);
|
||||||
deckView->setUniformRowHeights(true);
|
deckView->setUniformRowHeights(true);
|
||||||
deckView->setSortingEnabled(true);
|
deckView->setSortingEnabled(true);
|
||||||
|
@ -170,18 +101,26 @@ TabDeckEditor::TabDeckEditor(TabSupervisor *_tabSupervisor, QWidget *parent)
|
||||||
connect(&deckViewKeySignals, SIGNAL(onDelete()), this, SLOT(actRemoveCard()));
|
connect(&deckViewKeySignals, SIGNAL(onDelete()), this, SLOT(actRemoveCard()));
|
||||||
|
|
||||||
nameLabel = new QLabel();
|
nameLabel = new QLabel();
|
||||||
|
nameLabel->setObjectName("nameLabel");
|
||||||
nameEdit = new QLineEdit;
|
nameEdit = new QLineEdit;
|
||||||
|
nameEdit->setObjectName("nameEdit");
|
||||||
nameLabel->setBuddy(nameEdit);
|
nameLabel->setBuddy(nameEdit);
|
||||||
connect(nameEdit, SIGNAL(textChanged(const QString &)), this, SLOT(updateName(const QString &)));
|
connect(nameEdit, SIGNAL(textChanged(const QString &)), this, SLOT(updateName(const QString &)));
|
||||||
commentsLabel = new QLabel();
|
commentsLabel = new QLabel();
|
||||||
|
commentsLabel->setObjectName("commentsLabel");
|
||||||
commentsEdit = new QTextEdit;
|
commentsEdit = new QTextEdit;
|
||||||
|
commentsEdit->setObjectName("commentsEdit");
|
||||||
commentsEdit->setMaximumHeight(70);
|
commentsEdit->setMaximumHeight(70);
|
||||||
commentsLabel->setBuddy(commentsEdit);
|
commentsLabel->setBuddy(commentsEdit);
|
||||||
connect(commentsEdit, SIGNAL(textChanged()), this, SLOT(updateComments()));
|
connect(commentsEdit, SIGNAL(textChanged()), this, SLOT(updateComments()));
|
||||||
|
|
||||||
hashLabel1 = new QLabel();
|
hashLabel1 = new QLabel();
|
||||||
|
hashLabel1->setObjectName("hashLabel1");
|
||||||
hashLabel = new QLabel;
|
hashLabel = new QLabel;
|
||||||
|
hashLabel->setObjectName("hashLabel");
|
||||||
|
|
||||||
QGridLayout *grid = new QGridLayout;
|
QGridLayout *grid = new QGridLayout;
|
||||||
|
grid->setObjectName("grid");
|
||||||
grid->addWidget(nameLabel, 0, 0);
|
grid->addWidget(nameLabel, 0, 0);
|
||||||
grid->addWidget(nameEdit, 0, 1);
|
grid->addWidget(nameEdit, 0, 1);
|
||||||
|
|
||||||
|
@ -201,26 +140,119 @@ TabDeckEditor::TabDeckEditor(TabSupervisor *_tabSupervisor, QWidget *parent)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
QToolBar *deckToolBar = new QToolBar;
|
QToolBar *deckToolBar = new QToolBar;
|
||||||
|
deckToolBar->setObjectName("deckToolBar");
|
||||||
deckToolBar->setOrientation(Qt::Vertical);
|
deckToolBar->setOrientation(Qt::Vertical);
|
||||||
deckToolBar->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
|
deckToolBar->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
|
||||||
deckToolBar->setIconSize(QSize(24, 24));
|
deckToolBar->setIconSize(QSize(24, 24));
|
||||||
//deckToolBar->addAction(aUpdatePrices);
|
//deckToolBar->addAction(aUpdatePrices);
|
||||||
QHBoxLayout *deckToolbarLayout = new QHBoxLayout;
|
QHBoxLayout *deckToolbarLayout = new QHBoxLayout;
|
||||||
|
deckToolbarLayout->setObjectName("deckToolbarLayout");
|
||||||
deckToolbarLayout->addStretch();
|
deckToolbarLayout->addStretch();
|
||||||
deckToolbarLayout->addWidget(deckToolBar);
|
deckToolbarLayout->addWidget(deckToolBar);
|
||||||
deckToolbarLayout->addStretch();
|
deckToolbarLayout->addStretch();
|
||||||
|
|
||||||
QVBoxLayout *rightFrame = new QVBoxLayout;
|
QVBoxLayout *rightFrame = new QVBoxLayout;
|
||||||
|
rightFrame->setObjectName("rightFrame");
|
||||||
rightFrame->addLayout(grid);
|
rightFrame->addLayout(grid);
|
||||||
rightFrame->addWidget(deckView, 10);
|
rightFrame->addWidget(deckView, 10);
|
||||||
rightFrame->addLayout(deckToolbarLayout);
|
rightFrame->addLayout(deckToolbarLayout);
|
||||||
|
|
||||||
QHBoxLayout *mainLayout = new QHBoxLayout;
|
deckDock = new QDockWidget(MainWindow);
|
||||||
mainLayout->addLayout(leftFrame, 10);
|
deckDock->setObjectName("deckDock");
|
||||||
mainLayout->addLayout(middleFrame);
|
|
||||||
mainLayout->addLayout(rightFrame);
|
|
||||||
setLayout(mainLayout);
|
|
||||||
|
|
||||||
|
deckDock->setMinimumSize(QSize(200, 41));
|
||||||
|
deckDock->setAllowedAreas(Qt::LeftDockWidgetArea|Qt::RightDockWidgetArea);
|
||||||
|
deckDock->setFeatures(QDockWidget::DockWidgetClosable|QDockWidget::DockWidgetFloatable|QDockWidget::DockWidgetMovable);
|
||||||
|
QWidget *deckDockContents = new QWidget();
|
||||||
|
deckDockContents->setObjectName("deckDockContents");
|
||||||
|
deckDockContents->setLayout(rightFrame);
|
||||||
|
deckDock->setWidget(deckDockContents);
|
||||||
|
|
||||||
|
connect(btnDeck,SIGNAL(toggled(bool)),deckDock,SLOT(setVisible(bool)));
|
||||||
|
deckDock->installEventFilter(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
void TabDeckEditor::createCardInfoDock()
|
||||||
|
{
|
||||||
|
cardInfo = new CardFrame();
|
||||||
|
cardInfo->setObjectName("cardInfo");
|
||||||
|
QVBoxLayout *cardInfoFrame = new QVBoxLayout;
|
||||||
|
cardInfoFrame->setObjectName("cardInfoFrame");
|
||||||
|
cardInfoFrame->addWidget(cardInfo);
|
||||||
|
|
||||||
|
cardInfoDock = new QDockWidget(MainWindow);
|
||||||
|
cardInfoDock->setObjectName("cardInfoDock");
|
||||||
|
|
||||||
|
cardInfoDock->setMinimumSize(QSize(200, 41));
|
||||||
|
cardInfoDock->setAllowedAreas(Qt::LeftDockWidgetArea|Qt::RightDockWidgetArea);
|
||||||
|
cardInfoDock->setFeatures(QDockWidget::DockWidgetClosable|QDockWidget::DockWidgetFloatable|QDockWidget::DockWidgetMovable);
|
||||||
|
QWidget *cardInfoDockContents = new QWidget();
|
||||||
|
cardInfoDockContents->setObjectName("cardInfoDockContents");
|
||||||
|
cardInfoDockContents->setLayout(cardInfoFrame);
|
||||||
|
cardInfoDock->setWidget(cardInfoDockContents);
|
||||||
|
|
||||||
|
connect(btnCard,SIGNAL(toggled(bool)),cardInfoDock,SLOT(setVisible(bool)));
|
||||||
|
cardInfoDock->installEventFilter(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
void TabDeckEditor::createFiltersDock()
|
||||||
|
{
|
||||||
|
filterModel = new FilterTreeModel();
|
||||||
|
filterModel->setObjectName("filterModel");
|
||||||
|
databaseDisplayModel->setFilterTree(filterModel->filterTree());
|
||||||
|
databaseDisplayModel->setObjectName("databaseDisplayModel");
|
||||||
|
filterView = new QTreeView;
|
||||||
|
filterView->setObjectName("filterView");
|
||||||
|
filterView->setModel(filterModel);
|
||||||
|
filterView->setUniformRowHeights(true);
|
||||||
|
filterView->setHeaderHidden(true);
|
||||||
|
filterView->setContextMenuPolicy(Qt::CustomContextMenu);
|
||||||
|
connect(filterModel, SIGNAL(layoutChanged()), filterView, SLOT(expandAll()));
|
||||||
|
connect(filterView, SIGNAL(customContextMenuRequested(const QPoint &)),this, SLOT(filterViewCustomContextMenu(const QPoint &)));
|
||||||
|
|
||||||
|
FilterBuilder *filterBuilder = new FilterBuilder;
|
||||||
|
filterBuilder->setObjectName("filterBuilder");
|
||||||
|
connect(filterBuilder, SIGNAL(add(const CardFilter *)), filterModel, SLOT(addFilter(const CardFilter *)));
|
||||||
|
|
||||||
|
QToolButton *filterDelOne = new QToolButton();
|
||||||
|
filterDelOne->setObjectName("filterDelOne");
|
||||||
|
filterDelOne->setDefaultAction(aClearFilterOne);
|
||||||
|
filterDelOne->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
|
||||||
|
|
||||||
|
QToolButton *filterDelAll = new QToolButton();
|
||||||
|
filterDelAll->setObjectName("filterDelAll");
|
||||||
|
filterDelAll->setDefaultAction(aClearFilterAll);
|
||||||
|
filterDelAll->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
|
||||||
|
|
||||||
|
QGridLayout *filterLayout = new QGridLayout;
|
||||||
|
filterLayout->setObjectName("filterLayout");
|
||||||
|
filterLayout->setContentsMargins(0,0,0,0);
|
||||||
|
filterLayout->addWidget(filterBuilder, 0, 0, 1, 2);
|
||||||
|
filterLayout->addWidget(filterView, 1, 0, 1, 2);
|
||||||
|
|
||||||
|
filterBox = new QWidget();
|
||||||
|
filterBox->setObjectName("filterBox");
|
||||||
|
filterBox->setLayout(filterLayout);
|
||||||
|
|
||||||
|
QVBoxLayout *filterFrame = new QVBoxLayout;
|
||||||
|
filterFrame->setObjectName("filterFrame");
|
||||||
|
filterFrame->addWidget(filterBox);
|
||||||
|
|
||||||
|
filterDock = new QDockWidget(MainWindow);
|
||||||
|
filterDock->setObjectName("filterDock");
|
||||||
|
|
||||||
|
filterDock->setFeatures(QDockWidget::DockWidgetClosable|QDockWidget::DockWidgetFloatable|QDockWidget::DockWidgetMovable);
|
||||||
|
QWidget *filterDockContents = new QWidget(MainWindow);
|
||||||
|
filterDockContents->setObjectName("filterDockContents");
|
||||||
|
filterDockContents->setLayout(filterFrame);
|
||||||
|
filterDock->setWidget(filterDockContents);
|
||||||
|
|
||||||
|
connect(btnFilter,SIGNAL(toggled(bool)),filterDock,SLOT(setVisible(bool)));
|
||||||
|
filterDock->installEventFilter(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
void TabDeckEditor::createMenus()
|
||||||
|
{
|
||||||
aNewDeck = new QAction(QString(), this);
|
aNewDeck = new QAction(QString(), this);
|
||||||
aNewDeck->setShortcuts(QKeySequence::New);
|
aNewDeck->setShortcuts(QKeySequence::New);
|
||||||
connect(aNewDeck, SIGNAL(triggered()), this, SLOT(actNewDeck()));
|
connect(aNewDeck, SIGNAL(triggered()), this, SLOT(actNewDeck()));
|
||||||
|
@ -231,7 +263,7 @@ TabDeckEditor::TabDeckEditor(TabSupervisor *_tabSupervisor, QWidget *parent)
|
||||||
aSaveDeck->setShortcuts(QKeySequence::Save);
|
aSaveDeck->setShortcuts(QKeySequence::Save);
|
||||||
connect(aSaveDeck, SIGNAL(triggered()), this, SLOT(actSaveDeck()));
|
connect(aSaveDeck, SIGNAL(triggered()), this, SLOT(actSaveDeck()));
|
||||||
aSaveDeckAs = new QAction(QString(), this);
|
aSaveDeckAs = new QAction(QString(), this);
|
||||||
// aSaveDeckAs->setShortcuts(QKeySequence::SaveAs);
|
// aSaveDeckAs->setShortcuts(QKeySequence::SaveAs);
|
||||||
connect(aSaveDeckAs, SIGNAL(triggered()), this, SLOT(actSaveDeckAs()));
|
connect(aSaveDeckAs, SIGNAL(triggered()), this, SLOT(actSaveDeckAs()));
|
||||||
aLoadDeckFromClipboard = new QAction(QString(), this);
|
aLoadDeckFromClipboard = new QAction(QString(), this);
|
||||||
connect(aLoadDeckFromClipboard, SIGNAL(triggered()), this, SLOT(actLoadDeckFromClipboard()));
|
connect(aLoadDeckFromClipboard, SIGNAL(triggered()), this, SLOT(actLoadDeckFromClipboard()));
|
||||||
|
@ -254,6 +286,9 @@ TabDeckEditor::TabDeckEditor(TabSupervisor *_tabSupervisor, QWidget *parent)
|
||||||
aEditTokens = new QAction(QString(), this);
|
aEditTokens = new QAction(QString(), this);
|
||||||
connect(aEditTokens, SIGNAL(triggered()), this, SLOT(actEditTokens()));
|
connect(aEditTokens, SIGNAL(triggered()), this, SLOT(actEditTokens()));
|
||||||
|
|
||||||
|
aResetLayout = new QAction(QString(), this);
|
||||||
|
connect(aResetLayout,SIGNAL(triggered()),this,SLOT(restartLayout()));
|
||||||
|
|
||||||
deckMenu = new QMenu(this);
|
deckMenu = new QMenu(this);
|
||||||
deckMenu->addAction(aNewDeck);
|
deckMenu->addAction(aNewDeck);
|
||||||
deckMenu->addAction(aLoadDeck);
|
deckMenu->addAction(aLoadDeck);
|
||||||
|
@ -267,19 +302,74 @@ TabDeckEditor::TabDeckEditor(TabSupervisor *_tabSupervisor, QWidget *parent)
|
||||||
deckMenu->addSeparator();
|
deckMenu->addSeparator();
|
||||||
deckMenu->addAction(aAnalyzeDeck);
|
deckMenu->addAction(aAnalyzeDeck);
|
||||||
deckMenu->addSeparator();
|
deckMenu->addSeparator();
|
||||||
|
deckMenu->addAction(aResetLayout);
|
||||||
|
deckMenu->addSeparator();
|
||||||
deckMenu->addAction(aClose);
|
deckMenu->addAction(aClose);
|
||||||
addTabMenu(deckMenu);
|
addTabMenu(deckMenu);
|
||||||
|
|
||||||
|
aClearFilterAll = new QAction(QString(), this);
|
||||||
|
aClearFilterAll->setIcon(QIcon(":/resources/icon_clearsearch.svg"));
|
||||||
|
connect(aClearFilterAll, SIGNAL(triggered()), this, SLOT(actClearFilterAll()));
|
||||||
|
|
||||||
|
aClearFilterOne = new QAction(QString(), this);
|
||||||
|
aClearFilterOne->setIcon(QIcon(":/resources/decrement.svg"));
|
||||||
|
connect(aClearFilterOne, SIGNAL(triggered()), this, SLOT(actClearFilterOne()));
|
||||||
|
|
||||||
dbMenu = new QMenu(this);
|
dbMenu = new QMenu(this);
|
||||||
dbMenu->addAction(aEditSets);
|
dbMenu->addAction(aEditSets);
|
||||||
dbMenu->addAction(aEditTokens);
|
dbMenu->addAction(aEditTokens);
|
||||||
dbMenu->addSeparator();
|
dbMenu->addSeparator();
|
||||||
|
dbMenu->addAction(aClearFilterOne);
|
||||||
dbMenu->addAction(aClearFilterAll);
|
dbMenu->addAction(aClearFilterAll);
|
||||||
#if defined(Q_OS_WIN) || defined(Q_OS_MAC)
|
#if defined(Q_OS_WIN) || defined(Q_OS_MAC)
|
||||||
dbMenu->addSeparator();
|
dbMenu->addSeparator();
|
||||||
dbMenu->addAction(aOpenCustomFolder);
|
dbMenu->addAction(aOpenCustomFolder);
|
||||||
#endif
|
#endif
|
||||||
addTabMenu(dbMenu);
|
addTabMenu(dbMenu);
|
||||||
|
}
|
||||||
|
|
||||||
|
void TabDeckEditor::createCentralFrame()
|
||||||
|
{
|
||||||
|
searchEdit = new SearchLineEdit;
|
||||||
|
searchEdit->setObjectName("searchEdit");
|
||||||
|
#if QT_VERSION >= 0x050300
|
||||||
|
searchEdit->addAction(QIcon(":/resources/icon_search_black.svg"), QLineEdit::LeadingPosition);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
setFocusProxy(searchEdit);
|
||||||
|
setFocusPolicy(Qt::ClickFocus);
|
||||||
|
|
||||||
|
searchEdit->installEventFilter(&searchKeySignals);
|
||||||
|
searchKeySignals.setObjectName("searchKeySignals");
|
||||||
|
connect(searchEdit, SIGNAL(textChanged(const QString &)), this, SLOT(updateSearch(const QString &)));
|
||||||
|
connect(&searchKeySignals, SIGNAL(onEnter()), this, SLOT(actAddCard()));
|
||||||
|
connect(&searchKeySignals, SIGNAL(onCtrlAltEqual()), this, SLOT(actAddCard()));
|
||||||
|
connect(&searchKeySignals, SIGNAL(onCtrlAltRBracket()), this, SLOT(actAddCardToSideboard()));
|
||||||
|
connect(&searchKeySignals, SIGNAL(onCtrlAltMinus()), this, SLOT(actDecrementCard()));
|
||||||
|
connect(&searchKeySignals, SIGNAL(onCtrlAltLBracket()), this, SLOT(actDecrementCardFromSideboard()));
|
||||||
|
connect(&searchKeySignals, SIGNAL(onCtrlAltEnter()), this, SLOT(actAddCardToSideboard()));
|
||||||
|
connect(&searchKeySignals, SIGNAL(onCtrlEnter()), this, SLOT(actAddCardToSideboard()));
|
||||||
|
|
||||||
|
databaseModel = new CardDatabaseModel(db, this);
|
||||||
|
databaseModel->setObjectName("databaseModel");
|
||||||
|
databaseDisplayModel = new CardDatabaseDisplayModel(this);
|
||||||
|
databaseDisplayModel->setSourceModel(databaseModel);
|
||||||
|
databaseDisplayModel->setFilterKeyColumn(0);
|
||||||
|
databaseDisplayModel->sort(0, Qt::AscendingOrder);
|
||||||
|
|
||||||
|
databaseView = new QTreeView();
|
||||||
|
databaseView->setObjectName("databaseView");
|
||||||
|
databaseView->setFocusProxy(searchEdit);
|
||||||
|
databaseView->setModel(databaseDisplayModel);
|
||||||
|
databaseView->setUniformRowHeights(true);
|
||||||
|
databaseView->setRootIsDecorated(false);
|
||||||
|
databaseView->setAlternatingRowColors(true);
|
||||||
|
databaseView->setSortingEnabled(true);
|
||||||
|
databaseView->sortByColumn(0, Qt::AscendingOrder);
|
||||||
|
databaseView->resizeColumnToContents(0);
|
||||||
|
connect(databaseView->selectionModel(), SIGNAL(currentRowChanged(const QModelIndex &, const QModelIndex &)), this, SLOT(updateCardInfoLeft(const QModelIndex &, const QModelIndex &)));
|
||||||
|
connect(databaseView, SIGNAL(doubleClicked(const QModelIndex &)), this, SLOT(actAddCard()));
|
||||||
|
searchEdit->setTreeView(databaseView);
|
||||||
|
|
||||||
aAddCard = new QAction(QString(), this);
|
aAddCard = new QAction(QString(), this);
|
||||||
aAddCard->setIcon(QIcon(":/resources/arrow_right_green.svg"));
|
aAddCard->setIcon(QIcon(":/resources/arrow_right_green.svg"));
|
||||||
|
@ -297,6 +387,11 @@ TabDeckEditor::TabDeckEditor(TabSupervisor *_tabSupervisor, QWidget *parent)
|
||||||
aDecrement->setIcon(QIcon(":/resources/decrement.svg"));
|
aDecrement->setIcon(QIcon(":/resources/decrement.svg"));
|
||||||
connect(aDecrement, SIGNAL(triggered()), this, SLOT(actDecrement()));
|
connect(aDecrement, SIGNAL(triggered()), this, SLOT(actDecrement()));
|
||||||
|
|
||||||
|
QToolBar *deckEditToolBar = new QToolBar;
|
||||||
|
deckEditToolBar->setObjectName("deckEditToolBar");
|
||||||
|
deckEditToolBar->setOrientation(Qt::Horizontal);
|
||||||
|
deckEditToolBar->setIconSize(QSize(24, 24));
|
||||||
|
|
||||||
deckEditToolBar->addAction(aAddCard);
|
deckEditToolBar->addAction(aAddCard);
|
||||||
deckEditToolBar->addAction(aAddCardToSideboard);
|
deckEditToolBar->addAction(aAddCardToSideboard);
|
||||||
deckEditToolBar->addAction(aRemoveCard);
|
deckEditToolBar->addAction(aRemoveCard);
|
||||||
|
@ -304,11 +399,108 @@ TabDeckEditor::TabDeckEditor(TabSupervisor *_tabSupervisor, QWidget *parent)
|
||||||
deckEditToolBar->addAction(aIncrement);
|
deckEditToolBar->addAction(aIncrement);
|
||||||
deckEditToolBar->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
|
deckEditToolBar->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
|
||||||
|
|
||||||
retranslateUi();
|
searchLayout = new QHBoxLayout;
|
||||||
|
searchLayout->setObjectName("searchLayout");
|
||||||
resize(950, 700);
|
searchLayout->addWidget(deckEditToolBar);
|
||||||
|
searchLayout->addWidget(searchEdit);
|
||||||
|
createShowHideDocksButtons();
|
||||||
|
|
||||||
|
centralFrame = new QVBoxLayout;
|
||||||
|
centralFrame->setObjectName("centralFrame");
|
||||||
|
centralFrame->addLayout(searchLayout);
|
||||||
|
centralFrame->addWidget(databaseView);
|
||||||
|
|
||||||
|
centralWidget = new QWidget(MainWindow);
|
||||||
|
centralWidget->setObjectName("centralWidget");
|
||||||
|
centralWidget->setLayout(centralFrame);
|
||||||
|
MainWindow->setCentralWidget(centralWidget);
|
||||||
|
MainWindow->setDockOptions(QMainWindow::AnimatedDocks|QMainWindow::AllowNestedDocks|QMainWindow::AllowTabbedDocks);
|
||||||
|
|
||||||
|
QHBoxLayout *mainLayout = new QHBoxLayout;
|
||||||
|
mainLayout->setObjectName("mainLayout");
|
||||||
|
mainLayout->addWidget(MainWindow);
|
||||||
|
setLayout(mainLayout);
|
||||||
|
}
|
||||||
|
|
||||||
|
void TabDeckEditor::restartLayout()
|
||||||
|
{
|
||||||
|
btnDeck->setChecked(true);
|
||||||
|
btnFilter->setChecked(true);
|
||||||
|
btnCard->setChecked(true);
|
||||||
|
|
||||||
|
deckDock->setFloating(false);
|
||||||
|
cardInfoDock->setFloating(false);
|
||||||
|
filterDock->setFloating(false);
|
||||||
|
|
||||||
|
MainWindow->addDockWidget(static_cast<Qt::DockWidgetArea>(2), deckDock);
|
||||||
|
MainWindow->addDockWidget(static_cast<Qt::DockWidgetArea>(2), cardInfoDock);
|
||||||
|
MainWindow->addDockWidget(static_cast<Qt::DockWidgetArea>(2), filterDock);
|
||||||
|
|
||||||
|
MainWindow->splitDockWidget(cardInfoDock, deckDock, Qt::Horizontal);
|
||||||
|
MainWindow->splitDockWidget(cardInfoDock, filterDock, Qt::Vertical);
|
||||||
|
|
||||||
|
deckDock->setMinimumWidth(360);
|
||||||
|
deckDock->setMaximumWidth(360);
|
||||||
|
|
||||||
|
cardInfoDock->setMinimumSize(250, 360);
|
||||||
|
cardInfoDock->setMaximumSize(250, 360);
|
||||||
|
QTimer::singleShot(100, this, SLOT(freeDocksSize()));
|
||||||
|
}
|
||||||
|
|
||||||
|
void TabDeckEditor::freeDocksSize()
|
||||||
|
{
|
||||||
|
deckDock->setMinimumSize(100, 100);
|
||||||
|
deckDock->setMaximumSize(5000, 5000);
|
||||||
|
|
||||||
|
cardInfoDock->setMinimumSize(100, 100);
|
||||||
|
cardInfoDock->setMaximumSize(5000, 5000);
|
||||||
|
|
||||||
|
filterDock->setMinimumSize(100,100);
|
||||||
|
filterDock->setMaximumSize(5000,5000);
|
||||||
|
}
|
||||||
|
|
||||||
|
void TabDeckEditor::loadLayout()
|
||||||
|
{
|
||||||
|
MainWindow->restoreState(settingsCache->getDeckEditorLayoutState());
|
||||||
|
MainWindow->restoreGeometry(settingsCache->getDeckEditorGeometry());
|
||||||
|
|
||||||
|
btnCard->setChecked(!cardInfoDock->isHidden());
|
||||||
|
btnFilter->setChecked(!filterDock->isHidden());
|
||||||
|
btnDeck->setChecked(!deckDock->isHidden());
|
||||||
|
|
||||||
|
cardInfoDock->setMinimumSize(settingsCache->getDeckEditorCardSize());
|
||||||
|
cardInfoDock->setMaximumSize(settingsCache->getDeckEditorCardSize());
|
||||||
|
|
||||||
|
filterDock->setMinimumSize(settingsCache->getDeckEditorFilterSize());
|
||||||
|
filterDock->setMaximumSize(settingsCache->getDeckEditorFilterSize());
|
||||||
|
|
||||||
|
deckDock->setMinimumSize(settingsCache->getDeckEditorDeckSize());
|
||||||
|
deckDock->setMaximumSize(settingsCache->getDeckEditorDeckSize());
|
||||||
|
|
||||||
|
QTimer::singleShot(100, this, SLOT(freeDocksSize()));
|
||||||
|
}
|
||||||
|
|
||||||
|
TabDeckEditor::TabDeckEditor(TabSupervisor *_tabSupervisor, QWidget *parent)
|
||||||
|
: Tab(_tabSupervisor, parent), modified(false)
|
||||||
|
{
|
||||||
|
MainWindow = new QMainWindow;
|
||||||
|
MainWindow->setObjectName("MainWindow");
|
||||||
|
|
||||||
|
createMenus();
|
||||||
|
|
||||||
|
createCentralFrame();
|
||||||
|
|
||||||
|
createDeckDock();
|
||||||
|
createCardInfoDock();
|
||||||
|
createFiltersDock();
|
||||||
|
|
||||||
|
restartLayout();
|
||||||
|
|
||||||
|
this->installEventFilter(this);
|
||||||
|
|
||||||
|
retranslateUi();
|
||||||
QTimer::singleShot(0, this, SLOT(checkFirstRunDetected()));
|
QTimer::singleShot(0, this, SLOT(checkFirstRunDetected()));
|
||||||
|
QTimer::singleShot(0, this, SLOT(loadLayout()));
|
||||||
}
|
}
|
||||||
|
|
||||||
TabDeckEditor::~TabDeckEditor()
|
TabDeckEditor::~TabDeckEditor()
|
||||||
|
@ -320,7 +512,6 @@ void TabDeckEditor::retranslateUi()
|
||||||
{
|
{
|
||||||
cardInfo->retranslateUi();
|
cardInfo->retranslateUi();
|
||||||
|
|
||||||
filterBox->setTitle(tr("Filters"));
|
|
||||||
aClearFilterAll->setText(tr("&Clear all filters"));
|
aClearFilterAll->setText(tr("&Clear all filters"));
|
||||||
aClearFilterOne->setText(tr("Delete selected"));
|
aClearFilterOne->setText(tr("Delete selected"));
|
||||||
aClearFilterOne->setShortcut(QKeySequence("Backspace"));
|
aClearFilterOne->setShortcut(QKeySequence("Backspace"));
|
||||||
|
@ -359,6 +550,14 @@ void TabDeckEditor::retranslateUi()
|
||||||
|
|
||||||
aEditSets->setText(tr("&Edit sets..."));
|
aEditSets->setText(tr("&Edit sets..."));
|
||||||
aEditTokens->setText(tr("Edit &tokens..."));
|
aEditTokens->setText(tr("Edit &tokens..."));
|
||||||
|
|
||||||
|
btnCard->setToolTip(tr("Show/Hide card information"));
|
||||||
|
btnDeck->setToolTip(tr("Show/Hide deck"));
|
||||||
|
btnFilter->setToolTip(tr("Show/Hide filters"));
|
||||||
|
aResetLayout->setText(tr("Reset layout"));
|
||||||
|
cardInfoDock->setWindowTitle(tr("Card Info"));
|
||||||
|
deckDock->setWindowTitle(tr("Deck"));
|
||||||
|
filterDock->setWindowTitle(tr("Filters"));
|
||||||
}
|
}
|
||||||
|
|
||||||
QString TabDeckEditor::getTabText() const
|
QString TabDeckEditor::getTabText() const
|
||||||
|
@ -737,6 +936,27 @@ void TabDeckEditor::setPriceTagFeatureEnabled(int /* enabled */)
|
||||||
deckModel->pricesUpdated();
|
deckModel->pricesUpdated();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool TabDeckEditor::eventFilter(QObject * o, QEvent * e)
|
||||||
|
{
|
||||||
|
if(e->type() == QEvent::Close)
|
||||||
|
{
|
||||||
|
if(o == cardInfoDock)
|
||||||
|
btnCard->setChecked(false);
|
||||||
|
else if(o == deckDock)
|
||||||
|
btnDeck->setChecked(false);
|
||||||
|
else if(o == filterDock)
|
||||||
|
btnFilter->setChecked(false);
|
||||||
|
}
|
||||||
|
if( o == this && e->type() == QEvent::Hide){
|
||||||
|
settingsCache->setDeckEditorLayoutState(MainWindow->saveState());
|
||||||
|
settingsCache->setDeckEditorGeometry(MainWindow->saveGeometry());
|
||||||
|
settingsCache->setDeckEditorCardSize(cardInfoDock->size());
|
||||||
|
settingsCache->setDeckEditorFilterSize(filterDock->size());
|
||||||
|
settingsCache->setDeckEditorDeckSize(deckDock->size());
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
void TabDeckEditor::actUpdatePrices()
|
void TabDeckEditor::actUpdatePrices()
|
||||||
|
|
|
@ -20,6 +20,10 @@ class FilterTreeModel;
|
||||||
class FilterBuilder;
|
class FilterBuilder;
|
||||||
class CardInfo;
|
class CardInfo;
|
||||||
class QGroupBox;
|
class QGroupBox;
|
||||||
|
class QHBoxLayout;
|
||||||
|
class QPushButton;
|
||||||
|
class QMainWindow;
|
||||||
|
class QDockWidget;
|
||||||
|
|
||||||
class SearchLineEdit : public QLineEdit {
|
class SearchLineEdit : public QLineEdit {
|
||||||
private:
|
private:
|
||||||
|
@ -73,6 +77,12 @@ class TabDeckEditor : public Tab {
|
||||||
void filterViewCustomContextMenu(const QPoint &point);
|
void filterViewCustomContextMenu(const QPoint &point);
|
||||||
void filterRemove(QAction *action);
|
void filterRemove(QAction *action);
|
||||||
void setPriceTagFeatureEnabled(int enabled);
|
void setPriceTagFeatureEnabled(int enabled);
|
||||||
|
|
||||||
|
bool eventFilter(QObject *o, QEvent *e);
|
||||||
|
void loadLayout();
|
||||||
|
void restartLayout();
|
||||||
|
void freeDocksSize();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
CardInfo *currentCardInfo() const;
|
CardInfo *currentCardInfo() const;
|
||||||
void addCardHelper(QString zoneName);
|
void addCardHelper(QString zoneName);
|
||||||
|
@ -99,14 +109,25 @@ private:
|
||||||
QLabel *hashLabel;
|
QLabel *hashLabel;
|
||||||
FilterTreeModel *filterModel;
|
FilterTreeModel *filterModel;
|
||||||
QTreeView *filterView;
|
QTreeView *filterView;
|
||||||
QGroupBox *filterBox;
|
QWidget *filterBox;
|
||||||
|
|
||||||
QMenu *deckMenu, *dbMenu;
|
QMenu *deckMenu, *dbMenu;
|
||||||
QAction *aNewDeck, *aLoadDeck, *aSaveDeck, *aSaveDeckAs, *aLoadDeckFromClipboard, *aSaveDeckToClipboard, *aPrintDeck, *aAnalyzeDeck, *aClose, *aOpenCustomFolder;
|
QAction *aNewDeck, *aLoadDeck, *aSaveDeck, *aSaveDeckAs, *aLoadDeckFromClipboard, *aSaveDeckToClipboard, *aPrintDeck, *aAnalyzeDeck, *aClose, *aOpenCustomFolder;
|
||||||
QAction *aEditSets, *aEditTokens, *aClearFilterAll, *aClearFilterOne;
|
QAction *aEditSets, *aEditTokens, *aClearFilterAll, *aClearFilterOne;
|
||||||
QAction *aAddCard, *aAddCardToSideboard, *aRemoveCard, *aIncrement, *aDecrement;// *aUpdatePrices;
|
QAction *aAddCard, *aAddCardToSideboard, *aRemoveCard, *aIncrement, *aDecrement;// *aUpdatePrices;
|
||||||
|
QAction *aResetLayout;
|
||||||
|
|
||||||
bool modified;
|
bool modified;
|
||||||
|
QMainWindow *MainWindow;
|
||||||
|
QVBoxLayout *centralFrame;
|
||||||
|
QHBoxLayout *searchLayout;
|
||||||
|
QPushButton *btnFilter;
|
||||||
|
QPushButton *btnDeck;
|
||||||
|
QPushButton *btnCard;
|
||||||
|
QDockWidget *cardInfoDock;
|
||||||
|
QDockWidget *deckDock;
|
||||||
|
QDockWidget *filterDock;
|
||||||
|
QWidget *centralWidget;
|
||||||
public:
|
public:
|
||||||
TabDeckEditor(TabSupervisor *_tabSupervisor, QWidget *parent = 0);
|
TabDeckEditor(TabSupervisor *_tabSupervisor, QWidget *parent = 0);
|
||||||
~TabDeckEditor();
|
~TabDeckEditor();
|
||||||
|
@ -115,6 +136,13 @@ public:
|
||||||
void setDeck(DeckLoader *_deckLoader);
|
void setDeck(DeckLoader *_deckLoader);
|
||||||
void setModified(bool _windowModified);
|
void setModified(bool _windowModified);
|
||||||
bool confirmClose();
|
bool confirmClose();
|
||||||
|
void createShowHideDocksButtons();
|
||||||
|
void createDeckDock();
|
||||||
|
void createCardInfoDock();
|
||||||
|
void createFiltersDock();
|
||||||
|
void createMenus();
|
||||||
|
void createCentralFrame();
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void closeRequest();
|
void closeRequest();
|
||||||
void checkFirstRunDetected();
|
void checkFirstRunDetected();
|
||||||
|
|
|
@ -282,7 +282,7 @@ TabGame::TabGame(TabSupervisor *_tabSupervisor, GameReplay *_replay)
|
||||||
gameView = new GameView(scene);
|
gameView = new GameView(scene);
|
||||||
gameView->hide();
|
gameView->hide();
|
||||||
|
|
||||||
cardInfo = new CardFrame(250, 372);
|
cardInfo = new CardFrame();
|
||||||
playerListWidget = new PlayerListWidget(0, 0, this);
|
playerListWidget = new PlayerListWidget(0, 0, this);
|
||||||
playerListWidget->setFocusPolicy(Qt::NoFocus);
|
playerListWidget->setFocusPolicy(Qt::NoFocus);
|
||||||
|
|
||||||
|
@ -396,7 +396,7 @@ TabGame::TabGame(TabSupervisor *_tabSupervisor, QList<AbstractClient *> &_client
|
||||||
gameView = new GameView(scene);
|
gameView = new GameView(scene);
|
||||||
gameView->hide();
|
gameView->hide();
|
||||||
|
|
||||||
cardInfo = new CardFrame(250, 372);
|
cardInfo = new CardFrame();
|
||||||
playerListWidget = new PlayerListWidget(tabSupervisor, clients.first(), this);
|
playerListWidget = new PlayerListWidget(tabSupervisor, clients.first(), this);
|
||||||
playerListWidget->setFocusPolicy(Qt::NoFocus);
|
playerListWidget->setFocusPolicy(Qt::NoFocus);
|
||||||
connect(playerListWidget, SIGNAL(openMessageDialog(QString, bool)), this, SIGNAL(openMessageDialog(QString, bool)));
|
connect(playerListWidget, SIGNAL(openMessageDialog(QString, bool)), this, SIGNAL(openMessageDialog(QString, bool)));
|
||||||
|
|
Loading…
Reference in a new issue