Chris@283
|
1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
|
Chris@283
|
2
|
Chris@283
|
3 /*
|
Chris@283
|
4 EasyMercurial
|
Chris@283
|
5
|
Chris@283
|
6 Based on HgExplorer by Jari Korhonen
|
Chris@283
|
7 Copyright (c) 2010 Jari Korhonen
|
Chris@283
|
8 Copyright (c) 2011 Chris Cannam
|
Chris@283
|
9 Copyright (c) 2011 Queen Mary, University of London
|
Chris@283
|
10
|
Chris@283
|
11 This program is free software; you can redistribute it and/or
|
Chris@283
|
12 modify it under the terms of the GNU General Public License as
|
Chris@283
|
13 published by the Free Software Foundation; either version 2 of the
|
Chris@283
|
14 License, or (at your option) any later version. See the file
|
Chris@283
|
15 COPYING included with this distribution for more information.
|
Chris@283
|
16 */
|
Chris@283
|
17
|
Chris@283
|
18 #include "workstatuswidget.h"
|
Chris@283
|
19 #include "debug.h"
|
Chris@283
|
20 #include "clickablelabel.h"
|
Chris@283
|
21
|
Chris@283
|
22 #include <QGridLayout>
|
Chris@283
|
23 #include <QSpacerItem>
|
Chris@283
|
24 #include <QLabel>
|
Chris@283
|
25 #include <QProcess>
|
Chris@283
|
26 #include <QDir>
|
Chris@283
|
27
|
Chris@283
|
28 WorkStatusWidget::WorkStatusWidget(QWidget *parent) :
|
Chris@283
|
29 QWidget(parent)
|
Chris@283
|
30 {
|
Chris@283
|
31 QGridLayout *layout = new QGridLayout;
|
Chris@297
|
32 layout->setMargin(6);
|
Chris@297
|
33 layout->setSpacing(6);
|
Chris@283
|
34 setLayout(layout);
|
Chris@283
|
35
|
Chris@283
|
36 int row = 0;
|
Chris@283
|
37
|
Chris@283
|
38 #ifndef Q_OS_MAC
|
Chris@283
|
39 layout->addItem(new QSpacerItem(1, 1), row, 0);
|
Chris@283
|
40 ++row;
|
Chris@283
|
41 #endif
|
Chris@283
|
42
|
Chris@297
|
43 layout->addWidget(new QLabel(tr("Local:")), row, 1);
|
Chris@283
|
44
|
Chris@283
|
45 m_openButton = new ClickableLabel;
|
Chris@283
|
46 QFont f(m_openButton->font());
|
Chris@283
|
47 f.setBold(true);
|
Chris@283
|
48 m_openButton->setFont(f);
|
Chris@283
|
49 m_openButton->setMouseUnderline(true);
|
Chris@522
|
50 m_openButton->setWordWrap(true);
|
Chris@283
|
51 connect(m_openButton, SIGNAL(clicked()), this, SLOT(openButtonClicked()));
|
Chris@297
|
52 layout->addWidget(m_openButton, row, 2, 1, 2, Qt::AlignLeft);
|
Chris@283
|
53
|
Chris@283
|
54 ++row;
|
Chris@297
|
55 layout->addWidget(new QLabel(tr("Remote:")), row, 1);
|
Chris@283
|
56 m_remoteURLLabel = new QLabel;
|
Chris@375
|
57 m_remoteURLLabel->setTextInteractionFlags(Qt::TextSelectableByMouse);
|
Chris@522
|
58 m_remoteURLLabel->setWordWrap(true);
|
Chris@297
|
59 layout->addWidget(m_remoteURLLabel, row, 2, 1, 2);
|
Chris@283
|
60
|
Chris@283
|
61 ++row;
|
Chris@297
|
62 layout->addWidget(new QLabel(tr("State:")), row, 1);
|
Chris@283
|
63 m_stateLabel = new QLabel;
|
Chris@297
|
64 layout->addWidget(m_stateLabel, row, 2, 1, 2);
|
Chris@283
|
65
|
Chris@297
|
66 layout->setColumnStretch(2, 20);
|
Chris@283
|
67
|
Chris@283
|
68
|
Chris@283
|
69 }
|
Chris@283
|
70
|
Chris@283
|
71 WorkStatusWidget::~WorkStatusWidget()
|
Chris@283
|
72 {
|
Chris@283
|
73 }
|
Chris@283
|
74
|
Chris@283
|
75 void
|
Chris@283
|
76 WorkStatusWidget::setLocalPath(QString p)
|
Chris@283
|
77 {
|
Chris@283
|
78 m_localPath = p;
|
Chris@283
|
79 m_openButton->setText(p);
|
Chris@283
|
80 m_openButton->setEnabled(QDir(m_localPath).exists());
|
Chris@283
|
81 }
|
Chris@283
|
82
|
Chris@283
|
83 void
|
Chris@283
|
84 WorkStatusWidget::setRemoteURL(QString r)
|
Chris@283
|
85 {
|
Chris@283
|
86 m_remoteURL = r;
|
Chris@283
|
87 m_remoteURLLabel->setText(r);
|
Chris@283
|
88 }
|
Chris@283
|
89
|
Chris@283
|
90 void
|
Chris@283
|
91 WorkStatusWidget::setState(QString b)
|
Chris@283
|
92 {
|
Chris@283
|
93 m_state = b;
|
Chris@283
|
94 updateStateLabel();
|
Chris@283
|
95 }
|
Chris@283
|
96
|
Chris@283
|
97 void
|
Chris@283
|
98 WorkStatusWidget::updateStateLabel()
|
Chris@283
|
99 {
|
Chris@283
|
100 m_stateLabel->setText(m_state);
|
Chris@283
|
101 }
|
Chris@283
|
102
|
Chris@283
|
103 void
|
Chris@283
|
104 WorkStatusWidget::openButtonClicked()
|
Chris@283
|
105 {
|
Chris@283
|
106 QDir d(m_localPath);
|
Chris@283
|
107 if (d.exists()) {
|
Chris@283
|
108 QStringList args;
|
Chris@283
|
109 QString path = d.canonicalPath();
|
Chris@283
|
110 #if defined Q_OS_WIN32
|
Chris@283
|
111 // Although the Win32 API is quite happy to have
|
Chris@283
|
112 // forward slashes as directory separators, Windows
|
Chris@283
|
113 // Explorer is not
|
Chris@283
|
114 path = path.replace('/', '\\');
|
Chris@283
|
115 args << path;
|
Chris@283
|
116 QProcess::execute("c:/windows/explorer.exe", args);
|
Chris@283
|
117 #else
|
Chris@283
|
118 args << path;
|
Chris@283
|
119 QProcess::execute(
|
Chris@283
|
120 #if defined Q_OS_MAC
|
Chris@283
|
121 "/usr/bin/open",
|
Chris@283
|
122 #else
|
Chris@283
|
123 "/usr/bin/xdg-open",
|
Chris@283
|
124 #endif
|
Chris@283
|
125 args);
|
Chris@283
|
126 #endif
|
Chris@283
|
127 }
|
Chris@283
|
128 }
|