1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
|
//
// C++ Implementation: toresultcolscomment
//
// Description:
//
//
// Author: Thomas Porschberg, core <pberg@porschberg>, (C) 2006
//
// Copyright: See COPYING file that comes with this distribution
//
//
#include "toresultcolscomment.h"
#include <qregexp.h>
#include "toconnection.h"
#include "tosql.h"
#include "utils.h"
#include "toresultcolscomment.moc"
namespace {
toSQL SQLChangeTableCommentMySQL("toResultCols:ChangeTableComment",
"ALTER TABLE %1 COMMENT = %2",
"Set a comment on a table. Must have same % signs",
"4.1",
"MySQL");
toSQL SQLChangeTableComment("toResultCols:ChangeTableComment",
"COMMENT ON TABLE %1 IS %2",
"");
toSQL SQLChangeColumnComment("toResultCols:ChangeColumnComment",
"COMMENT ON COLUMN %1 IS %2",
"Set a comment on a column. Must have same % signs");
}
toResultColsComment::toResultColsComment(QWidget *parent)
: QLineEdit(parent), Changed(false), Cached(0)
{
connect(this, SIGNAL(textChanged(const QString &)), this, SLOT(commentChanged()));
}
void toResultColsComment::setComment(bool table, const QString &name, const QString &comment)
{
saveUnchanged();
disconnect(this, SIGNAL(textChanged(const QString &)), this, SLOT(commentChanged()));
Table = table;
Name = name;
Cached = NULL;
Changed = false;
setText(comment);
connect(this, SIGNAL(textChanged(const QString &)), this, SLOT(commentChanged()));
}
void toResultColsComment::setCachedComment(bool table, const QString &name, QString &comment)
{
saveUnchanged();
disconnect(this, SIGNAL(textChanged(const QString &)), this, SLOT(commentChanged()));
Table = table;
Name = name;
Cached = &comment;
Changed = false;
setText(comment);
connect(this, SIGNAL(textChanged(const QString &)), this, SLOT(commentChanged()));
}
void toResultColsComment::commentChanged()
{
Changed = true;
}
void toResultColsComment::focusOutEvent(QFocusEvent *e)
{
QLineEdit::focusOutEvent(e);
saveUnchanged();
}
void toResultColsComment::saveUnchanged()
{
try
{
if (!Name.isEmpty() && Changed)
{
Changed = false;
toConnection &conn = toCurrentConnection(this);
QString sql;
if (Table)
sql = SQLChangeTableComment(conn);
else
sql = SQLChangeColumnComment(conn);
QString comment = text();
comment.replace(QRegExp("'"), "''");
comment = "'" + comment + "'";
conn.execute(sql.arg(Name).arg(comment));
if (Cached)
*Cached = text();
}
}
TOCATCH
}
|