On Wednesday 19 April 2006 07:54, Kevin Kubasik wrote: > That's more or less what I did (although, I did not include the ebuild > filter) all rpm and debs were displayed with this unique tile, but the > tile is still grouped in the files section of the UI and extends > FileTile, so that it is mostly the same atm. The only major change was > to override the details pane and start displaying extra info that the > package filters extract. I was thinking about displaying some > dependency information etc in the DetailsPane, but didn't implement > that yet. I've done this for the ebuild filter, see http://bugzilla.gnome.org/show_bug.cgi?id=337069 . I have a patch for kerry to display this using an "Ebuild" tile although it would be nice to standardize on property names and have a "package" tile. See http://packages.gentoo.org/ebuilds/?kerry-0.1-r2, the patch for kerry is attached. -- Pat Double, pat patdouble com "In the beginning God created the heaven and the earth."
diff -ru kerry-0.1/src/beaglesearch.cpp kerry-0.1-double/src/beaglesearch.cpp
--- kerry-0.1/src/beaglesearch.cpp 2006-04-03 10:50:47.000000000 -0500
+++ kerry-0.1-double/src/beaglesearch.cpp 2006-04-07 17:01:50.000000000 -0500
@@ -83,6 +83,14 @@
{ BeagleSearch::Website, "dc:title", 0 },
{ BeagleSearch::Website, "Title", 0 },
{ BeagleSearch::Note, "dc:title", 0 },
+// Gentoo ebuilds
+ { BeagleSearch::Ebuilds, "dc:title", I18N_NOOP("Title: %1")"<br>" },
+ { BeagleSearch::Ebuilds, "dc:description", 0 },
+ { BeagleSearch::Ebuilds, "fixme:version", I18N_NOOP("Version: %1")"<br>" },
+ { BeagleSearch::Ebuilds, "dc:source", 0 },
+ { BeagleSearch::Ebuilds, "fixme:download_size", 0 },
+ { BeagleSearch::Ebuilds, "fixme:install_time", 0 },
+ { BeagleSearch::Ebuilds, "fixme:contents_byte_count", 0 },
{ BeagleSearch::Unknown, "dc:author", I18N_NOOP("Author: %1")"<br>" },
{ BeagleSearch::Unknown, "dc:title", I18N_NOOP("Title: %1")"<br>" },
// Calendar
@@ -148,6 +156,7 @@
{ BeagleSearch::Website, 0, "Google", 0 },
{ BeagleSearch::Website, 0, "WebHistory", 0 },
{ BeagleSearch::Website, 0, 0, "beagle/x-konq-cache" },
+ { BeagleSearch::Ebuilds, "*.ebuild", 0, 0 },
{ BeagleSearch::Unknown, "file://", "File", 0 }, // mimetype wildcard must be last
{ 0, 0, 0, 0}
};
Only in kerry-0.1-double/src: beaglesearch.cpp.orig
diff -ru kerry-0.1/src/beaglesearch.h kerry-0.1-double/src/beaglesearch.h
--- kerry-0.1/src/beaglesearch.h 2006-02-14 05:07:44.000000000 -0600
+++ kerry-0.1-double/src/beaglesearch.h 2006-04-07 16:59:14.000000000 -0500
@@ -51,7 +51,8 @@
Conversations, // in combo box
Website, // in combo box
Feed,
- Note
+ Note,
+ Ebuilds
};
typedef QValueList<QString> PropertyList;
diff -ru kerry-0.1/src/searchdlg.cpp kerry-0.1-double/src/searchdlg.cpp
--- kerry-0.1/src/searchdlg.cpp 2006-03-13 04:40:58.000000000 -0600
+++ kerry-0.1-double/src/searchdlg.cpp 2006-04-08 19:52:37.000000000 -0500
@@ -548,6 +548,82 @@
item->insertHeaderWidget(0,headerFileLabel);
connect(headerFileLabel, SIGNAL(leftClickedURL()), SLOT(slotOpen()));
}
+ else if (result->tilegroup == BeagleSearch::Ebuilds) {
+ item->icon->setPixmap(KGlobal::iconLoader()->loadIcon("kuroo", KIcon::NoGroup, KIcon::SizeLarge));
+
+ KerryLabel *headerFileLabel = new KerryLabel(item);
+ headerFileLabel->setText(url.fileName());
+ headerFileLabel->setTipText(url.prettyURL());
+ headerFileLabel->setUseTips();
+ headerFileLabel->setURL(*(result->uri));
+ item->insertHeaderWidget(0,headerFileLabel);
+ connect(headerFileLabel, SIGNAL(leftClickedURL()), SLOT(slotOpen()));
+
+ QLabel *headerLabel = new QLabel(item);
+ headerLabel->setText(i18n(" from "));
+ headerLabel->setAlignment(headerLabel->alignment() | Qt::SingleLine);
+ item->insertHeaderWidget(1,headerLabel);
+
+ QStringList _properties(result->properties);
+ QString homepage = takeProperty("dc:source",_properties);
+ if (!homepage.isEmpty())
+ {
+ KerryLabel *headerFileLabel = new KerryLabel(item);
+ headerFileLabel->setText(homepage);
+ headerFileLabel->setAlignment(headerFileLabel->alignment() | Qt::SingleLine);
+ headerFileLabel->setURL(homepage);
+ item->insertHeaderWidget(2,headerFileLabel);
+ connect(headerFileLabel, SIGNAL(leftClickedURL(const QString&)), SLOT(slotOpenURL(const QString&)));
+ }
+
+ item->setDescriptionText(takeProperty("dc:description", _properties));
+
+ QString properties;
+ QString install_time_str = takeProperty("fixme:install_time", _properties);
+ if (!install_time_str.isEmpty())
+ {
+ properties=properties+i18n("Installed On: %1").arg(KGlobal::locale()->formatDateTime(datetimeFromString(install_time_str),false))+"<br>";
+ }
+
+ QString install_size_str = takeProperty("fixme:contents_byte_count", _properties);
+ if (!install_size_str.isEmpty())
+ {
+ properties=properties+i18n("Installed Size: %1").arg(formatBytes(install_size_str))+"<br>";
+ }
+
+ QString download_size_str = takeProperty("fixme:download_size", _properties);
+ if (!download_size_str.isEmpty())
+ {
+ properties=properties+i18n("Download Size: %1").arg(formatBytes(download_size_str))+"<br>";
+ }
+
+ BeagleSearch::PropertyList::iterator it;
+ for ( it = _properties.begin(); it != _properties.end(); ++it )
+ {
+ properties=properties+(*it);
+ }
+
+ if (result->snippet) {
+ if (!properties.isEmpty())
+ properties=properties+"<br>";
+ properties=properties+*(result->snippet);
+ }
+
+ if (!properties.isEmpty())
+ item->setPropertiesText("<qt>"+properties+"</qt>");
+
+
+ item->insertHitSpacing(2,10);
+ buttonGo = new KURLLabel(item);
+ buttonGo->setPixmap(SmallIcon("kfm"));
+ item->insertHitWidget(3,buttonGo);
+ connect(buttonGo, SIGNAL(leftClickedURL()), SLOT(slotOpenDir()));
+
+ buttonGo = new KURLLabel(item);
+ buttonGo->setText(i18n("Reveal in File Manager"));
+ item->insertHitWidget(4,buttonGo);
+ connect(buttonGo, SIGNAL(leftClickedURL()), SLOT(slotOpenDir()));
+ }
else {
KFileItem *fileitem=new KFileItem(*(result->uri),*(result->mime_type),KFileItem::Unknown);
item->icon->setPixmap(fileitem->pixmap(KIcon::SizeHuge, KIcon::DefaultState));
@@ -669,6 +745,9 @@
case Website:
show = ( result->tilegroup == BeagleSearch::Website);
break;
+ case Ebuilds:
+ show = ( result->tilegroup == BeagleSearch::Ebuilds);
+ break;
default:
break;
}
@@ -780,6 +859,24 @@
}
}
+void SearchDlg::slotOpenURL(const QString& url)
+{
+ KURL urlObj(url);
+ //KRun run(urlObj);
+ //run.setAutoDelete(false);
+ KRun::runURL(url, "text/html", false, true);
+}
+
+QString SearchDlg::formatBytes(QString& bytesStr) const
+{
+ static double kilobyte = 1024.0;
+ static double megabyte = 1024.0*1024.0;
+ double bytes = KGlobal::locale()->readNumber(bytesStr);
+ if (bytes < megabyte)
+ return KGlobal::locale()->formatNumber(bytes/kilobyte, 2) + "K";
+ return KGlobal::locale()->formatNumber(bytes/megabyte, 2) + "M";
+}
+
void SearchDlg::slotStartBeagle()
{
if (cb_beagleStart->isChecked()) {
diff -ru kerry-0.1/src/searchdlg.h kerry-0.1-double/src/searchdlg.h
--- kerry-0.1/src/searchdlg.h 2006-01-10 10:13:29.000000000 -0600
+++ kerry-0.1-double/src/searchdlg.h 2006-04-08 19:50:37.000000000 -0500
@@ -42,7 +42,8 @@
Conversations,
Images,
Media,
- Website
+ Website,
+ Ebuilds
};
enum SortType {
@@ -85,6 +86,7 @@
void slotOpenDir();
void slotMailTo(const QString&);
void slotOpenEvolution(const QString&);
+ void slotOpenURL(const QString&);
void slotContextMenu( int row, int col, const QPoint & pos );
void slotPreview(const KFileItem *, const QPixmap &);
void slotPreviewResult();
@@ -99,6 +101,7 @@
void fillTableHits();
void updateStatus();
void showQuickTips();
+ QString formatBytes(QString& bytesStr) const;
QCheckBox* cb_beagleStart;
void displayResults(BeagleSearch::BeagleResultList &items);
diff -ru kerry-0.1/src/searchdlg_layout.ui kerry-0.1-double/src/searchdlg_layout.ui
--- kerry-0.1/src/searchdlg_layout.ui 2006-03-24 02:58:25.000000000 -0600
+++ kerry-0.1-double/src/searchdlg_layout.ui 2006-04-07 16:59:14.000000000 -0500
@@ -250,6 +250,11 @@
<string>Web Pages</string>
</property>
</item>
+ <item>
+ <property name="text">
+ <string>Ebuilds</string>
+ </property>
+ </item>
<property name="name">
<cstring>comboShow</cstring>
</property>
Attachment:
pgpP6CpinxHWy.pgp
Description: PGP signature