~ubuntu-sdk-team/qtcreator-plugin-remotelinux/trunk

« back to all changes in this revision

Viewing changes to src/qnx/bardescriptoreditor.cpp

  • Committer: CI bot
  • Author(s): Benjamin Zeller
  • Date: 2014-06-16 10:28:43 UTC
  • mfrom: (4.2.4 remotelinux)
  • Revision ID: ps-jenkins@lists.canonical.com-20140616102843-8juvmjvzwlzsboyw
Migrating to Qt5.3 and QtC 3.1 

Show diffs side-by-side

added added

removed removed

Lines of Context:
38
38
#include <projectexplorer/projectexplorerconstants.h>
39
39
#include <projectexplorer/task.h>
40
40
#include <projectexplorer/taskhub.h>
41
 
#include <utils/qtcassert.h>
42
41
#include <texteditor/texteditorconstants.h>
43
42
#include <texteditor/basetexteditor.h>
 
43
#include <texteditor/tabsettings.h>
 
44
#include <utils/linecolumnlabel.h>
 
45
#include <utils/qtcassert.h>
44
46
 
45
47
#include <QAction>
 
48
#include <QStyle>
 
49
#include <QTextBlock>
46
50
#include <QToolBar>
47
51
 
48
52
using namespace ProjectExplorer;
50
54
namespace Qnx {
51
55
namespace Internal {
52
56
 
53
 
BarDescriptorEditor::BarDescriptorEditor(BarDescriptorEditorWidget *editorWidget)
 
57
BarDescriptorEditor::BarDescriptorEditor()
54
58
{
 
59
    setId(Constants::QNX_BAR_DESCRIPTOR_EDITOR_ID);
 
60
    m_file = new BarDescriptorDocument(this);
 
61
 
 
62
    BarDescriptorEditorWidget *editorWidget = new BarDescriptorEditorWidget(this);
55
63
    setWidget(editorWidget);
56
64
 
57
 
    m_file = new BarDescriptorDocument(editorWidget);
58
 
 
59
65
    m_toolBar = new QToolBar(editorWidget);
60
66
 
61
67
    m_actionGroup = new QActionGroup(this);
83
89
 
84
90
    generalAction->setChecked(true);
85
91
 
 
92
    m_cursorPositionLabel = new Utils::LineColumnLabel;
 
93
    const int spacing = editorWidget->style()->pixelMetric(QStyle::PM_LayoutHorizontalSpacing) / 2;
 
94
    m_cursorPositionLabel->setContentsMargins(spacing, 0, spacing, 0);
 
95
 
 
96
    QWidget *spacer = new QWidget;
 
97
    spacer->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
 
98
    m_toolBar->addWidget(spacer);
 
99
 
 
100
    m_cursorPositionAction = m_toolBar->addWidget(m_cursorPositionLabel);
 
101
    connect(editorWidget->sourceWidget(), SIGNAL(cursorPositionChanged()), this, SLOT(updateCursorPosition()));
 
102
 
86
103
    setContext(Core::Context(Constants::QNX_BAR_DESCRIPTOR_EDITOR_CONTEXT,
87
104
            TextEditor::Constants::C_TEXTEDITOR));
88
105
}
90
107
bool BarDescriptorEditor::open(QString *errorString, const QString &fileName, const QString &realFileName)
91
108
{
92
109
    QTC_ASSERT(fileName == realFileName, return false);
93
 
    return m_file->open(errorString, fileName);
 
110
 
 
111
    bool result = m_file->open(errorString, fileName);
 
112
    if (result) {
 
113
        BarDescriptorEditorWidget *editorWidget = qobject_cast<BarDescriptorEditorWidget *>(widget());
 
114
        QTC_ASSERT(editorWidget, return false);
 
115
        editorWidget->setFilePath(fileName);
 
116
    }
 
117
 
 
118
    return result;
94
119
}
95
120
 
96
121
Core::IDocument *BarDescriptorEditor::document()
98
123
    return m_file;
99
124
}
100
125
 
101
 
Core::Id BarDescriptorEditor::id() const
102
 
{
103
 
    return Constants::QNX_BAR_DESCRIPTOR_EDITOR_ID;
104
 
}
105
 
 
106
126
QWidget *BarDescriptorEditor::toolBar()
107
127
{
108
128
    return m_toolBar;
126
146
    BarDescriptorEditorWidget *editorWidget = qobject_cast<BarDescriptorEditorWidget *>(widget());
127
147
    QTC_ASSERT(editorWidget, return);
128
148
 
129
 
    int prevPage = editorWidget->currentIndex();
130
 
 
131
 
    if (prevPage == page)
132
 
        return;
133
 
 
134
 
    if (page == Source) {
135
 
        editorWidget->setXmlSource(m_file->xmlSource());
136
 
    } else if (prevPage == Source) {
137
 
        TaskHub::clearTasks(Constants::QNX_TASK_CATEGORY_BARDESCRIPTOR);
138
 
        QString errorMsg;
139
 
        int errorLine;
140
 
        if (!m_file->loadContent(editorWidget->xmlSource(), &errorMsg, &errorLine)) {
141
 
            TaskHub::addTask(Task::Error, errorMsg, Constants::QNX_TASK_CATEGORY_BARDESCRIPTOR,
142
 
                             Utils::FileName::fromString(m_file->filePath()), errorLine);
143
 
            TaskHub::requestPopup();
144
 
 
145
 
            foreach (QAction *action, m_actionGroup->actions())
146
 
                if (action->data().toInt() == Source)
147
 
                    action->setChecked(true);
148
 
 
149
 
            return;
150
 
        }
151
 
    }
152
 
 
 
149
    m_cursorPositionAction->setVisible(page == Source);
153
150
    editorWidget->setCurrentIndex(page);
154
151
}
155
152
 
 
153
void BarDescriptorEditor::updateCursorPosition()
 
154
{
 
155
    BarDescriptorEditorWidget *editorWidget = qobject_cast<BarDescriptorEditorWidget *>(widget());
 
156
    QTC_ASSERT(editorWidget, return);
 
157
 
 
158
    const QTextCursor cursor = editorWidget->sourceWidget()->textCursor();
 
159
    const QTextBlock block = cursor.block();
 
160
    const int line = block.blockNumber() + 1;
 
161
    const int column = cursor.position() - block.position();
 
162
    m_cursorPositionLabel->setText(tr("Line: %1, Col: %2").arg(line)
 
163
                                   .arg(editorWidget->sourceWidget()->baseTextDocument()
 
164
                                        ->tabSettings().columnAt(block.text(), column)+1),
 
165
                                   tr("Line: 9999, Col: 999"));
 
166
    if (!block.isVisible())
 
167
        editorWidget->sourceWidget()->ensureCursorVisible();
 
168
}
 
169
 
156
170
} // namespace Internal
157
171
} // namespace Qnx