And another KGet entry

There have been some blog posts on KGet and now it is my turn to add another one. πŸ™‚

The last few weeks/months I kept polishing all the changes I did for KGet during GSOC and also introduced new stuff. It is fantastic to see how KGet improved the last few months with all the work we (the KGet team) put into it.

Speeding up downloads

Multisource-Downloading worked and still can work a way that a file is split into segments, then a TransferDataSource is assigned a segment and then downloads it. What that means is that whenever a TransferDataSource finishes the download of a segment it is assigned a different segment and connects again to the server … In fact that is not ideal as connecting to the server takes time, so I changed that.

Now multiple segments e.g. segment 1 to 10 can be assigned to a TransferDataSource, thus the connection is not always closed and recreated once a segment is finished, but only closes once the segment range finished resulting in less resource usage and faster downloads. [1]

Whenever the user decides to use more connections per mirror or when they add another mirror the TransferDataSource that has most undowloaded segments splits the range.

Threads

One of those polishing changes I did was to use threads when creating checksums, like when a download is being verified, or when you create a metalink and chose to automatically create checksums. Now these calls are not blocking anymore and you can control KGet during this kind of operations normally.

I also experimented with OpenMP and optimizing the loading of files when calculating the checksums, though the very small speedup does not justify the changes in the code, so it won’t be there.

Signatures

Other than that I implemented PGP signature checking.

The user has the posibility to enter a signature or in case of a metalink this happens automatically — in fact only if the signature is embed in the metalink. If there is no key for that signature then the user is asked if the key should be searched for. It can even be specified (in the Preferences) in which order the servers should be tried.

Verification preferences

Yes, now all that can be configured. Btw. “Strong” is default.

Ok, so what does it all look like, you may ask? First I changed the transfer settings dialog, to give the user a better overview of what the situation is like for all the files of a transfer, which ones have been verified etc.

[2]

The verification dialog now shows which checksums have been verified (in the screenshot I used the “Strongest” option):

Enough talking about side aspects, here is the signature-dialog. I tried to use icons where feasable — to help the user find what could be a problem — it will see some improvments in the following weeks, though I think it is in a releasable state already.

In fact the newly added keys will also appear in KGpg or Kleopatra or any other program using gpg one way or the other, as I’m using gpgme++, btw. thanks to the everyone who worked on gpgme++ makes life way easier than gpgme [3] and thanks to the people who helped me on the ml.

Before you ask so far I do not plan to add support for decrypting, imo you should use other tools for that than a download program.

Bugs

I also fixed some bugs, now that annoying one where the details of transfers would still be shown even if they were (re)moved is finally gone.

Lukas also worked a lot on KGet like changing the basic model that is used in the view etc. (up to him to blog about that πŸ˜‰ ) and Dario tracked down some rare crashes via using QTests.

On Bugs, if you find some in trunk please report them so that we can fix them before 4.4.

Conclusio

All in all I have the feeling that the next KGet release (with KDE 4.4) will be a great one. That also means that you are encouraged to test KGet from trunk and report bugs and that I’m encouraged to try fixing them in the weeks to follow. πŸ™‚

PS.: This blog post has been in the work for quite a while, but rl caught up,

[1] Thanks to the people on #kde-devel who discussed with me on this issue! And thanks in general for all the help you gave me on the several #kde channels. πŸ™‚

[2] Btw. do you know an easy way to find a good size for a dialog? E.g. all columns in a view should not be smaller than their prefered size, when there is enough space the dialog should expand to show everything –> the dialog you see in the screenshot has been manually resized by me, otherwise it would not look that way.

[3] In search of what I thought was a bug I reprogrammed large parts with gpgme (yummy, error handling with c-libs *turns crazy*), later on it turned out that I just misunderstood something. Meh!

Advertisements

Tags: ,

15 Responses to “And another KGet entry”

  1. mutlu Says:

    Wow, this looks exciting! Cannot wait for 4.4. πŸ™‚

  2. m_goku Says:

    Great work.

    One of a very useful feature that i think need to be added is an ability to change the download source one the fly. FDM is the only download manager i know to implement this feature, but it only exist on Windows world. I would like to see KGET has this feature.

    For example, i download a file from megaupload. Due to slow internet connection, my download took long time and then stopped in the middle because the download link no longer valid. I can took a new download link, but that mean i need to download the whole thing back from beginning. In FDM i can replace the old download link with the new one, and resume my download from where it was stopped.

    • mat69 Says:

      I added that already to KGet. The user can add mirrors on the fly, define which ones should be used [1] and how many connections each mirror should have.

      You can even move the download to a different hard disk while downloading. [2]

      [1] Suppose the user chooses a faulty mirror, then this one is automatically deactivated and another — if there are enough — is chosen, so that the number of mirrors used stays constant.

      [2] In case the download is finished and the checksums and or signature are currently verified this might result in problems, otherwise it works nicely.

  3. Karthikeyan Says:

    hi,

    for the transfer settings dialog, the checkbox for “Upload Limit”, “download limit” etc can appear after the label (and before the spin box where we enter the limit value). I believe this will give better alignment.

    • mat69 Says:

      Thanks for your comment.

      I changed it now, so that these options are only shown if a transfer actually supports them and that there are no checkboxes anymore.
      Instead you have a “Not set” in the spinbox if set to 0.

  4. Lukas Says:

    Yay nice blog entry… keep up the good work! πŸ™‚

    Lukas

  5. Links 10/11/2009: GNOME 3.0 Out in September 2010 | Boycott Novell Says:

    […] And another KGet entry The last few weeks/months I kept polishing all the changes I did for KGet during GSOC and also introduced new stuff. It is fantastic to see how KGet improved the last few months with all the work we (the KGet team) put into it. […]

  6. Roy Schestowitz (schestowitz) 's status on Wednesday, 11-Nov-09 02:00:27 UTC - Identi.ca Says:

    […] And another KGet entry « mat69’s (mfuchs) Blog […]

  7. Ant Bryan Says:

    Great work, Matthias!

    So many cool features! πŸ™‚

    Looking forward to using them in 4.4 and other people being able to use them.

  8. Mandriva 2010 Spring development has begun « Frederik's Blog Says:

    […] Development snapshots of QT 4.6.0 and KDE 4.4 are now included. When you add a Plasma widget, you will be presented with a much more beautiful overview of all available widgets. The Ozone and Nitrogen themes have now been merged in Oxygen. There are lots of improvements in KGet. […]

  9. Mandriva 2010 Spring development has begun « Mandriva Indonesia Says:

    […] Development snapshots of QT 4.6.0 and KDE 4.4 are now included. When you add a Plasma widget, you will be presented with a much more beautiful overview of all available widgets. The Ozone and Nitrogen themes have now been merged in Oxygen. There are lots of improvements in KGet. […]

  10. Viktor Says:

    Hi, I am from Ukraine. Please sorry for my English (Is bad).

    I think will be greats if kget include –refer parameter for integration with browsers. For example I using firefox, and try to download from UA file share services some files. But in some services need to specify referrer.

    For wget I can use this command line wget “[url]” –referer=”[REFERER]” with firefox plugin FlashGot, but for kget i can using only url. In this case I can download files from this services with kget.

    May be it is mistake, and need something else for this,I launch now from wget/flashgot and see something like that: 206 Partial Content. But referrer need to ? )

    Can you do this improvements?

    • mat69 Says:

      Thank you for your post. Could you please report this issue on bugs.kde.org because otherwise it is really hard for us to track them? And if you do that please add some websites that are affected by this problem to the report.

      One might forget about a blog-entry but bko does not forget the bug entries. πŸ™‚

  11. ラルフローレン ポロ Says:

    パンズ水着 倧きいァむズ

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


%d bloggers like this: