[go: up one dir, main page]

File: toresultcolscomment.cpp

package info (click to toggle)
tora 1.3.23-1
  • links: PTS
  • area: main
  • in suites: lenny
  • size: 15,984 kB
  • ctags: 14,460
  • sloc: cpp: 123,554; sh: 16,181; makefile: 966; xml: 69
file content (102 lines) | stat: -rw-r--r-- 2,928 bytes parent folder | download
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
}