#include "dolphinview.h"
#include "dolphin.h"
-URLNavigatorButton::URLNavigatorButton(int index, URLNavigator* parent) :
- URLButton(parent),
+UrlNavigatorButton::UrlNavigatorButton(int index, UrlNavigator* parent) :
+ UrlButton(parent),
m_index(-1),
m_listJob(0)
{
setAcceptDrops(true);
setMinimumWidth(arrowWidth());
setIndex(index);
- connect(this, SIGNAL(clicked()), this, SLOT(updateNavigatorURL()));
+ connect(this, SIGNAL(clicked()), this, SLOT(updateNavigatorUrl()));
m_popupDelay = new QTimer(this);
connect(m_popupDelay, SIGNAL(timeout()), this, SLOT(startListJob()));
connect(this, SIGNAL(pressed()), this, SLOT(startPopupDelay()));
}
-URLNavigatorButton::~URLNavigatorButton()
+UrlNavigatorButton::~UrlNavigatorButton()
{
}
-void URLNavigatorButton::setIndex(int index)
+void UrlNavigatorButton::setIndex(int index)
{
m_index = index;
QString path(urlNavigator()->url().pathOrUrl());
setText(path.section('/', index, index));
- // Check whether the button indicates the full path of the URL. If
+ // Check whether the button indicates the full path of the Url. If
// this is the case, the button is marked as 'active'.
++index;
QFont adjustedFont(font());
update();
}
-int URLNavigatorButton::index() const
+QSize UrlNavigatorButton::sizeHint() const
{
- return m_index;
+ const int width = fontMetrics().width(text()) + (arrowWidth() * 4);
+ return QSize(width, UrlButton::sizeHint().height());
}
-void URLNavigatorButton::drawButton(QPainter* painter)
+void UrlNavigatorButton::paintEvent(QPaintEvent* event)
{
+ QPainter painter(this);
const int buttonWidth = width();
const int buttonHeight = height();
}
// draw button background
- painter->setPen(Qt::NoPen);
- painter->setBrush(backgroundColor);
- painter->drawRect(0, 0, buttonWidth, buttonHeight);
+ painter.setPen(Qt::NoPen);
+ painter.setBrush(backgroundColor);
+ painter.drawRect(0, 0, buttonWidth, buttonHeight);
int textWidth = buttonWidth;
if (isDisplayHintEnabled(ActivatedHint) && isActive || isHighlighted) {
- painter->setPen(foregroundColor);
+ painter.setPen(foregroundColor);
}
else {
// dimm the foreground color by mixing it with the background
foregroundColor = mixColors(foregroundColor, backgroundColor);
- painter->setPen(foregroundColor);
+ painter.setPen(foregroundColor);
}
if (!isDisplayHintEnabled(ActivatedHint)) {
const int startTopY = middleY - (width - 1);
const int startBottomY = middleY + (width - 1);
for (int i = 0; i < width; ++i) {
- painter->drawLine(startX, startTopY + i, startX + i, startTopY + i);
- painter->drawLine(startX, startBottomY - i, startX + i, startBottomY - i);
+ painter.drawLine(startX, startTopY + i, startX + i, startTopY + i);
+ painter.drawLine(startX, startBottomY - i, startX + i, startBottomY - i);
}
textWidth = startX - border;
const bool clipped = isTextClipped();
const int align = clipped ? Qt::AlignVCenter : Qt::AlignCenter;
- painter->drawText(QRect(0, 0, textWidth, buttonHeight), align, text());
+ painter.drawText(QRect(0, 0, textWidth, buttonHeight), align, text());
if (clipped) {
// Blend the right area of the text with the background, as the
const int greenInc = (foregroundColor.green() - backgroundColor.green()) / blendSteps;
const int blueInc = (foregroundColor.blue() - backgroundColor.blue()) / blendSteps;
for (int i = 0; i < blendSteps; ++i) {
- painter->setClipRect(QRect(textWidth - i, 0, 1, buttonHeight));
- painter->setPen(blendColor);
- painter->drawText(QRect(0, 0, textWidth, buttonHeight), align, text());
+ painter.setClipRect(QRect(textWidth - i, 0, 1, buttonHeight));
+ painter.setPen(blendColor);
+ painter.drawText(QRect(0, 0, textWidth, buttonHeight), align, text());
blendColor.setRgb(blendColor.red() + redInc,
blendColor.green() + greenInc,
}
}
-void URLNavigatorButton::enterEvent(QEvent* event)
+void UrlNavigatorButton::enterEvent(QEvent* event)
{
- URLButton::enterEvent(event);
+ UrlButton::enterEvent(event);
// if the text is clipped due to a small window width, the text should
// be shown as tooltip
}
}
-void URLNavigatorButton::leaveEvent(QEvent* event)
+void UrlNavigatorButton::leaveEvent(QEvent* event)
{
- URLButton::leaveEvent(event);
+ UrlButton::leaveEvent(event);
QToolTip::remove(this);
}
-void URLNavigatorButton::dropEvent(QDropEvent* event)
+void UrlNavigatorButton::dropEvent(QDropEvent* event)
{
if (m_index < 0) {
return;
if (KUrlDrag::decode(event, urls) && !urls.isEmpty()) {
setDisplayHintEnabled(DraggedHint, true);
- QString path(urlNavigator()->url().prettyURL());
+ QString path(urlNavigator()->url().prettyUrl());
path = path.section('/', 0, m_index);
- Dolphin::mainWin().dropURLs(urls, KUrl(path));
+ Dolphin::mainWin().dropUrls(urls, KUrl(path));
setDisplayHintEnabled(DraggedHint, false);
update();
}*/
}
-void URLNavigatorButton::dragEnterEvent(QDragEnterEvent* event)
+void UrlNavigatorButton::dragEnterEvent(QDragEnterEvent* event)
{
/* KDE4-TODO:
event->accept(KUrlDrag::canDecode(event));
update();
}
-void URLNavigatorButton::dragLeaveEvent(QDragLeaveEvent* event)
+void UrlNavigatorButton::dragLeaveEvent(QDragLeaveEvent* event)
{
- URLButton::dragLeaveEvent(event);
+ UrlButton::dragLeaveEvent(event);
setDisplayHintEnabled(DraggedHint, false);
update();
}
-void URLNavigatorButton::updateNavigatorURL()
+void UrlNavigatorButton::updateNavigatorUrl()
{
if (m_index < 0) {
return;
}
- URLNavigator* navigator = urlNavigator();
+ UrlNavigator* navigator = urlNavigator();
assert(navigator != 0);
- navigator->setURL(navigator->url(m_index));
+ navigator->setUrl(navigator->url(m_index));
}
-void URLNavigatorButton::startPopupDelay()
+void UrlNavigatorButton::startPopupDelay()
{
if (m_popupDelay->isActive() || m_listJob || m_index < 0) {
return;
m_popupDelay->start(300, true);
}
-void URLNavigatorButton::stopPopupDelay()
+void UrlNavigatorButton::stopPopupDelay()
{
m_popupDelay->stop();
if (m_listJob) {
}
}
-void URLNavigatorButton::startListJob()
+void UrlNavigatorButton::startListJob()
{
if (m_listJob) {
return;
connect(m_listJob, SIGNAL(result(KIO::Job*)), this, SLOT(listJobFinished(KIO::Job*)));
}
-void URLNavigatorButton::entriesList(KIO::Job* job, const KIO::UDSEntryList& entries)
+void UrlNavigatorButton::entriesList(KIO::Job* job, const KIO::UDSEntryList& entries)
{
if (job != m_listJob) {
return;
m_subdirs.sort();
}
-void URLNavigatorButton::listJobFinished(KIO::Job* job)
+void UrlNavigatorButton::listJobFinished(KIO::Job* job)
{
if (job != m_listJob) {
return;
if (result != -1) {
KUrl url = urlNavigator()->url(m_index);
url.addPath(m_subdirs[result]);
- urlNavigator()->setURL(url);
+ urlNavigator()->setUrl(url);
}
m_listJob = 0;
setDisplayHintEnabled(PopupActiveHint, false);
}
-int URLNavigatorButton::arrowWidth() const
+int UrlNavigatorButton::arrowWidth() const
{
int width = (height() / 2) - 7;
if (width < 4) {
return width;
}
-bool URLNavigatorButton::isTextClipped() const
+bool UrlNavigatorButton::isTextClipped() const
{
int availableWidth = width();
if (!isDisplayHintEnabled(ActivatedHint)) {
QFontMetrics fontMetrics(font());
return fontMetrics.width(text()) >= availableWidth;
}
+
+#include "urlnavigatorbutton.moc"