* 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., *
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA *
***************************************************************************/
#include "infosidebarpage.h"
#include <kfilemetainfo.h>
#include <kvbox.h>
-#include "dolphin.h"
+#include "dolphinmainwindow.h"
#include "pixmapviewer.h"
#include "dolphinsettings.h"
-InfoSidebarPage::InfoSidebarPage(QWidget* parent) :
- SidebarPage(parent),
+InfoSidebarPage::InfoSidebarPage(DolphinMainWindow* mainWindow, QWidget* parent) :
+ SidebarPage(mainWindow, parent),
m_multipleSelection(false),
m_pendingPreview(false),
m_timer(0),
layout->addWidget(m_actionBox);
layout->addWidget(dummy);
- connect(&Dolphin::mainWin(), SIGNAL(selectionChanged()),
+ connect(mainWindow, SIGNAL(selectionChanged()),
this, SLOT(showItemInfo()));
connectToActiveView();
if (!url.isEmpty() && !m_multipleSelection) {
m_urlCandidate = url;
- m_timer->start(300, true);
+ m_timer->setSingleShot(true);
+ m_timer->start(300);
}
}
m_multipleSelection = false;
// show the preview...
- DolphinView* view = Dolphin::mainWin().activeView();
- const KFileItemList* selectedItems = view->selectedItems();
- if ((selectedItems != 0) && selectedItems->count() > 1) {
+ DolphinView* view = mainWindow()->activeView();
+ const KFileItemList selectedItems = view->selectedItems();
+ if (selectedItems.count() > 1) {
m_multipleSelection = true;
}
K3Icon::NoGroup,
K3Icon::SizeEnormous);
m_preview->setPixmap(icon);
- m_name->setText(i18n("%1 items selected",selectedItems->count()));
+ m_name->setText(i18n("%1 items selected",selectedItems.count()));
}
else if (!applyBookmark()) {
// try to get a preview pixmap from the item...
KIO::PreviewJob* job = KIO::filePreview(list,
m_preview->width(),
- K3Icon::SizeEnormous);
+ K3Icon::SizeEnormous,
+ 0,
+ 0,
+ true,
+ false);
+ job->setIgnoreMaximumSize(true);
+
connect(job, SIGNAL(gotPreview(const KFileItem*, const QPixmap&)),
this, SLOT(gotPreview(const KFileItem*, const QPixmap&)));
connect(job, SIGNAL(failed(const KFileItem*)),
void InfoSidebarPage::startService(int index)
{
- DolphinView* view = Dolphin::mainWin().activeView();
+ DolphinView* view = mainWindow()->activeView();
if (view->hasSelection()) {
KUrl::List selectedUrls = view->selectedUrls();
KDEDesktopMimeType::executeService(selectedUrls, m_actionsVector[index]);
{
cancelRequest();
- DolphinView* view = Dolphin::mainWin().activeView();
- connect(view, SIGNAL(signalRequestItemInfo(const KUrl&)),
+ DolphinView* view = mainWindow()->activeView();
+ connect(view, SIGNAL(requestItemInfo(const KUrl&)),
this, SLOT(requestDelayedItemInfo(const KUrl&)));
- connect(view, SIGNAL(signalUrlChanged(const KUrl&)),
+ connect(view, SIGNAL(urlChanged(const KUrl&)),
this, SLOT(requestItemInfo(const KUrl&)));
m_shownUrl = view->url();
// The methods beginInfoLines(), addInfoLine() and endInfoLines()
// take care of this.
beginInfoLines();
- DolphinView* view = Dolphin::mainWin().activeView();
+ DolphinView* view = mainWindow()->activeView();
if (!view->hasSelection()) {
KFileItem fileItem(S_IFDIR, KFileItem::Unknown, m_shownUrl);
fileItem.refresh();
QLabel* info = new QLabel(infoText, m_infoGrid);
info->setTextFormat(Qt::RichText);
- info->setAlignment(Qt::AlignTop | Qt::TextWordWrap);
+ info->setAlignment(Qt::AlignTop);
+ info->setWordWrap(true);
info->show();
m_infoWidgets.append(info);
// of KFileItems. If no selection is given, a temporary KFileItem
// by the given Url 'url' is created and added to the list.
KFileItem fileItem(S_IFDIR, KFileItem::Unknown, m_shownUrl);
- KFileItemList localList;
- const KFileItemList* itemList = Dolphin::mainWin().activeView()->selectedItems();
- if ((itemList == 0) || itemList->isEmpty()) {
+ KFileItemList itemList = mainWindow()->activeView()->selectedItems();
+ if (itemList.isEmpty()) {
fileItem.refresh();
- localList.append(&fileItem);
- itemList = &localList;
+ itemList.append(&fileItem);
}
// 'itemList' contains now all KFileItems, where an item information should be shown.
QStringList dirs = KGlobal::dirs()->findDirs("data", "dolphin/servicemenus/");
for (QStringList::ConstIterator dirIt = dirs.begin(); dirIt != dirs.end(); ++dirIt) {
QDir dir(*dirIt);
- QStringList entries = dir.entryList("*.desktop", QDir::Files);
+ QStringList entries = dir.entryList(QStringList("*.desktop"), QDir::Files);
for (QStringList::ConstIterator entryIt = entries.begin(); entryIt != entries.end(); ++entryIt) {
KSimpleConfig cfg(*dirIt + *entryIt, true);
cfg.setDesktopGroup();
if ((cfg.hasKey("Actions") || cfg.hasKey("X-KDE-GetActionMenu")) && cfg.hasKey("ServiceTypes")) {
- const QStringList types = cfg.readListEntry("ServiceTypes");
+ const QStringList types = cfg.readEntry("ServiceTypes", QStringList(), ',');
for (QStringList::ConstIterator it = types.begin(); it != types.end(); ++it) {
// check whether the mime type is equal or whether the
// mimegroup (e. g. image/*) is supported
if ((*it) == "all/allfiles") {
// The service type is valid for all files, but not for directories.
// Check whether the selected items only consist of files...
- QListIterator<KFileItem*> mimeIt(*itemList);
+ QListIterator<KFileItem*> mimeIt(itemList);
insert = true;
while (insert && mimeIt.hasNext()) {
KFileItem* item = mimeIt.next();
// Check whether the MIME types of all selected files match
// to the mimetype of the service action. As soon as one MIME
// type does not match, no service menu is shown at all.
- QListIterator<KFileItem*> mimeIt(*itemList);
+ QListIterator<KFileItem*> mimeIt(itemList);
insert = true;
while (insert && mimeIt.hasNext()) {
KFileItem* item = mimeIt.next();
const QString mimeType(item->mimetype());
- const QString mimeGroup(mimeType.left(mimeType.find('/')));
+ const QString mimeGroup(mimeType.left(mimeType.indexOf('/')));
insert = (*it == mimeType) ||
((*it).right(1) == "*") &&
- ((*it).left((*it).find('/')) == mimeGroup);
+ ((*it).left((*it).indexOf('/')) == mimeGroup);
}
}
QPushButton* button = new QPushButton(submenuName, m_actionBox);
button->setFlat(true);
- button->setPopup(popup);
+ button->setMenu(popup);
button->show();
m_actionWidgets.append(button);
}
for (serviceIt = userServices.begin(); serviceIt != userServices.end(); ++serviceIt) {
KDEDesktopMimeType::Service service = (*serviceIt);
if (popup == 0) {
- ServiceButton* button = new ServiceButton(SmallIcon(service.m_strIcon),
+ ServiceButton* button = new ServiceButton(KIcon(service.m_strIcon),
service.m_strName,
m_actionBox,
actionsIndex);
button->show();
}
else {
- popup->insertItem(SmallIcon(service.m_strIcon), service.m_strName, actionsIndex);
+ popup->insertItem(KIcon(service.m_strIcon), service.m_strName, actionsIndex);
}
m_actionsVector.append(service);
m_hover(false),
m_index(index)
{
- setEraseColor(colorGroup().background());
+ setEraseColor(palette().brush(QPalette::Background).color());
setFocusPolicy(Qt::NoFocus);
connect(this, SIGNAL(released()),
this, SLOT(slotReleased()));
{
}
-void ServiceButton::drawButton(QPainter* painter)
+void ServiceButton::paintEvent(QPaintEvent* event)
{
+ QPainter painter(this);
const int buttonWidth = width();
const int buttonHeight = height();
foregroundColor = KGlobalSettings::highlightedTextColor();
}
else {
- backgroundColor = colorGroup().background();
+ backgroundColor = palette().brush(QPalette::Background).color();
foregroundColor = KGlobalSettings::buttonTextColor();
}
// 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);
const int spacing = KDialog::spacingHint();
// draw icon
int x = spacing;
const int y = (buttonHeight - K3Icon::SizeSmall) / 2;
- const QIcon* set = iconSet();
- if (set != 0) {
- painter->drawPixmap(x, y, set->pixmap(QIcon::Small, QIcon::Normal));
+ const QIcon &set = icon();
+ if (!set.isNull()) {
+ painter.drawPixmap(x, y, set.pixmap(QIcon::Small, QIcon::Normal));
}
x += K3Icon::SizeSmall + spacing;
// draw text
- painter->setPen(foregroundColor);
+ painter.setPen(foregroundColor);
const int textWidth = buttonWidth - x;
QFontMetrics fontMetrics(font());
const bool clipped = fontMetrics.width(text()) >= textWidth;
//const int align = clipped ? Qt::AlignVCenter : Qt::AlignCenter;
- painter->drawText(QRect(x, 0, textWidth, buttonHeight), Qt::AlignVCenter, text());
+ painter.drawText(QRect(x, 0, textWidth, buttonHeight), Qt::AlignVCenter, 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(x + textWidth - i, 0, 1, buttonHeight));
- painter->setPen(blendColor);
- painter->drawText(QRect(x, 0, textWidth, buttonHeight), Qt::AlignVCenter, text());
+ painter.setClipRect(QRect(x + textWidth - i, 0, 1, buttonHeight));
+ painter.setPen(blendColor);
+ painter.drawText(QRect(x, 0, textWidth, buttonHeight), Qt::AlignVCenter, text());
blendColor.setRgb(blendColor.red() + redInc,
blendColor.green() + greenInc,