mirror of
https://bitbucket.org/smil3y/kde-workspace.git
synced 2025-02-24 10:52:51 +00:00
134 lines
4.5 KiB
C++
134 lines
4.5 KiB
C++
/***************************************************************************
|
|
* Copyright (C) 2011 by Vishesh Yadav <vishesh3y@gmail.com> *
|
|
* *
|
|
* This program is free software; you can redistribute it and/or modify *
|
|
* it under the terms of the GNU General Public License as published by *
|
|
* the Free Software Foundation; either version 2 of the License, or *
|
|
* (at your option) any later version. *
|
|
* *
|
|
* This program is distributed in the hope that it will be useful, *
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
|
* GNU General Public License for more details. *
|
|
* *
|
|
* You should have received a copy of the GNU General Public License *
|
|
* along with this program; if not, write to the *
|
|
* Free Software Foundation, Inc., *
|
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA *
|
|
***************************************************************************/
|
|
|
|
#include "commitinfowidget.h"
|
|
#include "commititemdelegate.h"
|
|
#include "hgwrapper.h"
|
|
|
|
#include <QtCore/QString>
|
|
#include <QtGui/QHBoxLayout>
|
|
#include <QtGui/QListWidget>
|
|
#include <KTextEditor/Document>
|
|
#include <KTextEditor/View>
|
|
#include <KTextEditor/Editor>
|
|
#include <KTextEditor/EditorChooser>
|
|
#include <KTextEditor/Cursor>
|
|
#include <kmessagebox.h>
|
|
#include <klocale.h>
|
|
|
|
HgCommitInfoWidget::HgCommitInfoWidget(QWidget *parent) :
|
|
QWidget(parent)
|
|
{
|
|
setupUI();
|
|
|
|
connect(m_commitListWidget, SIGNAL(itemSelectionChanged()),
|
|
this, SLOT(slotUpdateInfo()));
|
|
}
|
|
|
|
void HgCommitInfoWidget::setupUI()
|
|
{
|
|
m_commitListWidget = new QListWidget;
|
|
m_commitListWidget->setItemDelegate(new CommitItemDelegate);
|
|
|
|
KTextEditor::Editor *editor = KTextEditor::EditorChooser::editor();
|
|
if (!editor) {
|
|
KMessageBox::error(this,
|
|
i18n("A KDE text-editor component could not be found;"
|
|
"\nplease check your KDE installation."));
|
|
return;
|
|
}
|
|
m_editorDoc = editor->createDocument(0);
|
|
m_editorView = qobject_cast<KTextEditor::View*>(m_editorDoc->createView(this));
|
|
m_editorDoc->setReadWrite(false);
|
|
|
|
QHBoxLayout *layout = new QHBoxLayout;
|
|
layout->addWidget(m_commitListWidget, 1);
|
|
layout->addWidget(m_editorView, 2);
|
|
|
|
setLayout(layout);
|
|
}
|
|
|
|
void HgCommitInfoWidget::addItem(const QString &revision,
|
|
const QString &changeset,
|
|
const QString &branch,
|
|
const QString &author,
|
|
const QString &log)
|
|
{
|
|
|
|
QListWidgetItem *item = new QListWidgetItem;
|
|
item->setData(Qt::DisplayRole, changeset);
|
|
item->setData(Qt::UserRole + 1, revision);
|
|
item->setData(Qt::UserRole + 2, branch);
|
|
item->setData(Qt::UserRole + 3, author);
|
|
item->setData(Qt::UserRole + 4, log);
|
|
m_commitListWidget->addItem(item);
|
|
}
|
|
|
|
void HgCommitInfoWidget::addItem(QListWidgetItem *item)
|
|
{
|
|
m_commitListWidget->addItem(item);
|
|
}
|
|
|
|
QListWidgetItem* HgCommitInfoWidget::currentItem() const
|
|
{
|
|
return m_commitListWidget->currentItem();
|
|
}
|
|
|
|
const QString HgCommitInfoWidget::selectedChangeset() const
|
|
{
|
|
return m_commitListWidget->currentItem()->data(Qt::DisplayRole).toString();
|
|
}
|
|
|
|
void HgCommitInfoWidget::clear() const
|
|
{
|
|
m_commitListWidget->clear();
|
|
}
|
|
|
|
void HgCommitInfoWidget::slotUpdateInfo()
|
|
{
|
|
HgWrapper *hgw = HgWrapper::instance();
|
|
QString changeset = selectedChangeset();
|
|
QString output;
|
|
QStringList args;
|
|
|
|
args << QLatin1String("-p");
|
|
args << QLatin1String("-v");
|
|
args << QLatin1String("-r");
|
|
args << changeset;
|
|
hgw->executeCommand(QLatin1String("log"), args, output);
|
|
|
|
m_editorDoc->setReadWrite(true);
|
|
m_editorDoc->setModified(false);
|
|
m_editorDoc->closeUrl(true);
|
|
m_editorDoc->setText(output);
|
|
m_editorDoc->setHighlightingMode("diff");
|
|
m_editorView->setCursorPosition( KTextEditor::Cursor(0, 0) );
|
|
m_editorDoc->setReadWrite(false);
|
|
}
|
|
|
|
void HgCommitInfoWidget::setSelectionMode(QAbstractItemView::SelectionMode mode)
|
|
{
|
|
m_commitListWidget->setSelectionMode(mode);
|
|
}
|
|
|
|
QList<QListWidgetItem*> HgCommitInfoWidget::selectedItems() const
|
|
{
|
|
return m_commitListWidget->selectedItems();
|
|
}
|
|
|