├── .gitignore ├── README.md ├── qDonkey.pro ├── raw ├── android.png ├── mule.png ├── search.png └── transfers.png ├── src ├── collection_save_dlg.cpp ├── collection_save_dlg.h ├── collection_save_dlg.ui ├── donkey.rc ├── ed2k_link_maker.cpp ├── ed2k_link_maker.h ├── ed2k_link_maker.ui ├── geoip │ ├── GeoIP.c │ ├── GeoIP.dat │ ├── GeoIP.h │ ├── README │ ├── geoip.pri │ ├── geoip.qrc │ ├── geoipmanager.cpp │ └── geoipmanager.h ├── ico.cpp ├── ico.h ├── iconprovider.cpp ├── iconprovider.h ├── icons.qrc ├── icons │ ├── 3-state-checkbox.gif │ ├── ConnectDoBig.png │ ├── ConnectDrop.png │ ├── ConnectStop.png │ ├── Connection.ico │ ├── Delete.ico │ ├── Exit.ico │ ├── FileSharedServer.ico │ ├── Messages.ico │ ├── NavigateForward.ico │ ├── Pause.ico │ ├── Preferences.png │ ├── Search.png │ ├── SharedFiles.png │ ├── Stop.ico │ ├── Tools.png │ ├── Transfer.png │ ├── TrayConnected.ico │ ├── TrayDisconnected.ico │ ├── catalog.png │ ├── catalog_2.png │ ├── common │ │ ├── ConnectDo.ico │ │ ├── ConnectStop.ico │ │ ├── DeleteAll.ico │ │ ├── DeleteSelected.ico │ │ ├── FileTypeAny.ico │ │ ├── FileTypeArchive.ico │ │ ├── FileTypeAudio.ico │ │ ├── FileTypeCDImage.ico │ │ ├── FileTypeDocument.ico │ │ ├── FileTypeEmuleCollection.ico │ │ ├── FileTypePicture.ico │ │ ├── FileTypeProgram.ico │ │ ├── FileTypeVideo.ico │ │ ├── FolderOpen.ico │ │ ├── User.ico │ │ ├── client_red.ico │ │ ├── eD2kLink.png │ │ ├── folder_open.ico │ │ ├── folder_reload.ico │ │ ├── folder_share.ico │ │ ├── folder_unshare.ico │ │ └── hyperlink.ico │ ├── emule.qrc │ ├── favicon.png │ ├── files │ │ ├── HardDisk.ico │ │ └── all.ico │ ├── flags │ │ ├── ad.png │ │ ├── ae.png │ │ ├── af.png │ │ ├── ag.png │ │ ├── ai.png │ │ ├── al.png │ │ ├── am.png │ │ ├── an.png │ │ ├── ao.png │ │ ├── ar.png │ │ ├── as.png │ │ ├── at.png │ │ ├── au.png │ │ ├── aw.png │ │ ├── ax.png │ │ ├── az.png │ │ ├── ba.png │ │ ├── bb.png │ │ ├── bd.png │ │ ├── be.png │ │ ├── bf.png │ │ ├── bg.png │ │ ├── bh.png │ │ ├── bi.png │ │ ├── bj.png │ │ ├── bm.png │ │ ├── bn.png │ │ ├── bo.png │ │ ├── br.png │ │ ├── bs.png │ │ ├── bt.png │ │ ├── bv.png │ │ ├── bw.png │ │ ├── by.png │ │ ├── bz.png │ │ ├── ca.png │ │ ├── cc.png │ │ ├── cd.png │ │ ├── cf.png │ │ ├── cg.png │ │ ├── ch.png │ │ ├── ci.png │ │ ├── ck.png │ │ ├── cl.png │ │ ├── cm.png │ │ ├── cn.png │ │ ├── co.png │ │ ├── cr.png │ │ ├── cs.png │ │ ├── cu.png │ │ ├── cv.png │ │ ├── cx.png │ │ ├── cy.png │ │ ├── cz.png │ │ ├── de.png │ │ ├── dj.png │ │ ├── dk.png │ │ ├── dm.png │ │ ├── do.png │ │ ├── dz.png │ │ ├── ec.png │ │ ├── ee.png │ │ ├── eg.png │ │ ├── eh.png │ │ ├── er.png │ │ ├── es.png │ │ ├── et.png │ │ ├── fi.png │ │ ├── fj.png │ │ ├── fk.png │ │ ├── fm.png │ │ ├── fo.png │ │ ├── fr.png │ │ ├── ga.png │ │ ├── gb.png │ │ ├── gd.png │ │ ├── ge.png │ │ ├── gf.png │ │ ├── gh.png │ │ ├── gi.png │ │ ├── gl.png │ │ ├── gm.png │ │ ├── gn.png │ │ ├── gp.png │ │ ├── gq.png │ │ ├── gr.png │ │ ├── gs.png │ │ ├── gt.png │ │ ├── gu.png │ │ ├── gw.png │ │ ├── gy.png │ │ ├── hk.png │ │ ├── hm.png │ │ ├── hn.png │ │ ├── hr.png │ │ ├── ht.png │ │ ├── hu.png │ │ ├── icons-set-readme.txt │ │ ├── id.png │ │ ├── ie.png │ │ ├── il.png │ │ ├── in.png │ │ ├── io.png │ │ ├── iq.png │ │ ├── ir.png │ │ ├── is.png │ │ ├── it.png │ │ ├── jm.png │ │ ├── jo.png │ │ ├── jp.png │ │ ├── ke.png │ │ ├── kg.png │ │ ├── kh.png │ │ ├── ki.png │ │ ├── km.png │ │ ├── kn.png │ │ ├── kp.png │ │ ├── kr.png │ │ ├── kw.png │ │ ├── ky.png │ │ ├── kz.png │ │ ├── la.png │ │ ├── lb.png │ │ ├── lc.png │ │ ├── li.png │ │ ├── lk.png │ │ ├── lr.png │ │ ├── ls.png │ │ ├── lt.png │ │ ├── lu.png │ │ ├── lv.png │ │ ├── ly.png │ │ ├── ma.png │ │ ├── mc.png │ │ ├── md.png │ │ ├── me.png │ │ ├── mg.png │ │ ├── mh.png │ │ ├── mk.png │ │ ├── ml.png │ │ ├── mm.png │ │ ├── mn.png │ │ ├── mo.png │ │ ├── mp.png │ │ ├── mq.png │ │ ├── mr.png │ │ ├── ms.png │ │ ├── mt.png │ │ ├── mu.png │ │ ├── mv.png │ │ ├── mw.png │ │ ├── mx.png │ │ ├── my.png │ │ ├── mz.png │ │ ├── na.png │ │ ├── nc.png │ │ ├── ne.png │ │ ├── nf.png │ │ ├── ng.png │ │ ├── ni.png │ │ ├── nl.png │ │ ├── no.png │ │ ├── np.png │ │ ├── nr.png │ │ ├── nu.png │ │ ├── nz.png │ │ ├── om.png │ │ ├── pa.png │ │ ├── pe.png │ │ ├── pf.png │ │ ├── pg.png │ │ ├── ph.png │ │ ├── pk.png │ │ ├── pl.png │ │ ├── pm.png │ │ ├── pn.png │ │ ├── pr.png │ │ ├── ps.png │ │ ├── pt.png │ │ ├── pw.png │ │ ├── py.png │ │ ├── qa.png │ │ ├── re.png │ │ ├── ro.png │ │ ├── rs.png │ │ ├── ru.png │ │ ├── rw.png │ │ ├── sa.png │ │ ├── sb.png │ │ ├── sc.png │ │ ├── sd.png │ │ ├── se.png │ │ ├── sg.png │ │ ├── sh.png │ │ ├── si.png │ │ ├── sj.png │ │ ├── sk.png │ │ ├── sl.png │ │ ├── sm.png │ │ ├── sn.png │ │ ├── so.png │ │ ├── sr.png │ │ ├── st.png │ │ ├── sv.png │ │ ├── sy.png │ │ ├── sz.png │ │ ├── tc.png │ │ ├── td.png │ │ ├── tf.png │ │ ├── tg.png │ │ ├── th.png │ │ ├── tj.png │ │ ├── tk.png │ │ ├── tl.png │ │ ├── tm.png │ │ ├── tn.png │ │ ├── to.png │ │ ├── tr.png │ │ ├── tt.png │ │ ├── tv.png │ │ ├── tw.png │ │ ├── tz.png │ │ ├── ua.png │ │ ├── ug.png │ │ ├── um.png │ │ ├── us.png │ │ ├── uy.png │ │ ├── uz.png │ │ ├── va.png │ │ ├── vc.png │ │ ├── ve.png │ │ ├── vg.png │ │ ├── vi.png │ │ ├── vn.png │ │ ├── vu.png │ │ ├── wf.png │ │ ├── ws.png │ │ ├── ye.png │ │ ├── yt.png │ │ ├── za.png │ │ ├── zm.png │ │ └── zw.png │ ├── loading.png │ ├── magnet.png │ ├── mule.icns │ ├── newmule.ico │ ├── newmule.png │ ├── newmule16.png │ ├── oxygen │ │ ├── application-exit.png │ │ ├── application-rss+xml.png │ │ ├── application-x-mswinurl.png │ │ ├── chronometer.png │ │ ├── dialog-cancel.png │ │ ├── dialog-information.png │ │ ├── dialog-warning.png │ │ ├── document-edit-verify.png │ │ ├── document-edit.png │ │ ├── document-encrypt.png │ │ ├── document-import.png │ │ ├── document-new.png │ │ ├── document-properties.png │ │ ├── document-save.png │ │ ├── download.png │ │ ├── edit-clear-history.png │ │ ├── edit-clear.png │ │ ├── edit-copy.png │ │ ├── edit-cut.png │ │ ├── edit-delete.png │ │ ├── edit-find-user.png │ │ ├── edit-find.png │ │ ├── edit-paste.png │ │ ├── edit-rename.png │ │ ├── folder-documents.png │ │ ├── folder-new.png │ │ ├── folder-remote.png │ │ ├── gear.png │ │ ├── gear32.png │ │ ├── go-down.png │ │ ├── go-up.png │ │ ├── help-about.png │ │ ├── help-contents.png │ │ ├── inode-directory.png │ │ ├── insert-link.png │ │ ├── list-add.png │ │ ├── list-remove.png │ │ ├── mail-folder-inbox.png │ │ ├── mail-mark-read.png │ │ ├── media-playback-pause.png │ │ ├── media-playback-start.png │ │ ├── network-server.png │ │ ├── network-wired.png │ │ ├── object-locked.png │ │ ├── preferences-desktop.png │ │ ├── preferences-other.png │ │ ├── preferences-system-network.png │ │ ├── preferences-system.png │ │ ├── preferences-web-browser-cookies.png │ │ ├── security-high.png │ │ ├── security-low.png │ │ ├── services.png │ │ ├── tab-close.png │ │ ├── task-attention.png │ │ ├── text-plain.png │ │ ├── tools-report-bug.png │ │ ├── unavailable.png │ │ ├── user-group-delete.png │ │ ├── user-group-new.png │ │ ├── view-calendar-journal.png │ │ ├── view-categories.png │ │ ├── view-filter.png │ │ ├── view-preview.png │ │ ├── view-refresh.png │ │ ├── wallet-open.png │ │ └── webui.png │ ├── qBittorrent.desktop │ ├── qMuleDocument.icns │ ├── search │ │ ├── Download.png │ │ ├── SearchActive.png │ │ ├── SearchFilter.png │ │ ├── SearchRelated.png │ │ ├── SearchResult.png │ │ ├── SearchResults.ico │ │ ├── clear1.ico │ │ ├── clear2.ico │ │ ├── closeall.png │ │ └── preview32.png │ ├── slow.png │ ├── slow_off.png │ ├── sphere.png │ ├── sphere2.png │ ├── status.png │ ├── statusbar │ │ ├── MessagePending.ico │ │ ├── Up0down0.ico │ │ ├── Up0down1.ico │ │ ├── Up1down0.ico │ │ ├── Up1down1.ico │ │ ├── connected.ico │ │ ├── disconnected.ico │ │ └── empty.ico │ ├── transfer_list │ │ ├── Download.png │ │ ├── DownloadFiles.ico │ │ ├── DownloadFiles.png │ │ ├── FileInfo.png │ │ ├── SplitWindow.ico │ │ ├── SplitWindow.png │ │ ├── Upload.ico │ │ ├── Upload.png │ │ ├── checking.png │ │ ├── downloading.png │ │ ├── error.png │ │ ├── paused.png │ │ ├── queued.png │ │ ├── stalledDL.png │ │ ├── stalledUP.png │ │ └── uploading.png │ └── url.png ├── inputdir_dialog.cpp ├── inputdir_dialog.h ├── inputdir_dialog.ui ├── lang.qrc ├── lang │ ├── qDonkey_en.ts │ ├── qDonkey_it.ts │ └── qDonkey_ru.ts ├── mac │ ├── Info.plist │ └── conf.pri ├── main.cpp ├── mainwindow.cpp ├── mainwindow.h ├── mainwindow.ui ├── misc.cpp ├── misc.h ├── powermanagement │ ├── powermanagement.cpp │ ├── powermanagement.h │ ├── powermanagement.pri │ ├── powermanagement_x11.cpp │ └── powermanagement_x11.h ├── preferences │ ├── preferences.cpp │ ├── preferences.h │ ├── preferences.pri │ ├── preferences_widget.cpp │ ├── preferences_widget.h │ └── preferences_widget.ui ├── qinisettings.h ├── qmacapplication.cpp ├── qmacapplication.h ├── qtlibed2k │ ├── qed2khandle.cpp │ ├── qed2khandle.h │ ├── qed2kpeerhandle.cpp │ ├── qed2kpeerhandle.h │ ├── qed2ksession.cpp │ ├── qed2ksession.h │ ├── qtlibed2k.pri │ ├── transferspeedmonitor.cpp │ └── transferspeedmonitor.h ├── qtsingleapp │ ├── QtLockedFile │ ├── QtSingleApplication │ ├── qtlocalpeer.cpp │ ├── qtlocalpeer.h │ ├── qtlockedfile.cpp │ ├── qtlockedfile.h │ ├── qtlockedfile_unix.cpp │ ├── qtlockedfile_win.cpp │ ├── qtsingleapplication.cpp │ ├── qtsingleapplication.h │ ├── qtsingleapplication.pri │ ├── qtsinglecoreapplication.cpp │ ├── qtsinglecoreapplication.h │ └── qtsinglecoreapplication.pri ├── res.h ├── search │ ├── search.pri │ ├── search_model.cpp │ ├── search_model.h │ ├── search_widget.cpp │ ├── search_widget.h │ ├── search_widget.ui │ ├── search_widget_fp_model.cpp │ └── search_widget_fp_model.h ├── sessionapplication.cpp ├── sessionapplication.h ├── src.pro ├── stacktrace.h ├── statusbar │ ├── status_bar.cpp │ ├── status_bar.h │ ├── status_bar.ui │ └── statusbar.pri ├── transferlistdelegate.cpp ├── transferlistdelegate.h ├── transferlistfilterswidget.h ├── transferlistwidget.cpp ├── transferlistwidget.h ├── transfers │ ├── peermodel.cpp │ ├── peermodel.h │ ├── transfer_model.cpp │ ├── transfer_model.h │ ├── transferlist_delegate.cpp │ ├── transferlist_delegate.h │ ├── transfermodel_item.cpp │ ├── transfermodel_item.h │ ├── transfers.pri │ ├── transfers_widget.cpp │ ├── transfers_widget.h │ └── transfers_widget.ui ├── unix │ └── conf.pri └── win │ ├── conf-msvc.pri │ └── conf.pri └── version.pri /.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled Object files 2 | *.slo 3 | *.lo 4 | *.o 5 | *.obj 6 | 7 | # Precompiled Headers 8 | *.gch 9 | *.pch 10 | 11 | # Compiled Dynamic libraries 12 | *.so 13 | *.dylib 14 | *.dll 15 | 16 | # Fortran module files 17 | *.mod 18 | 19 | # Compiled Static libraries 20 | *.lai 21 | *.la 22 | *.a 23 | *.lib 24 | 25 | # Executables 26 | *.exe 27 | *.out 28 | *.app 29 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # qDonkey 2 | Small eDonkey network client inspired by libed2k library and qMule without torrent support. Designed for easy use of the internet service provider 3 | is74.ru(eDonkey server address hardcoded, but can be replaced in properties file). 4 | 5 | Dependencies 6 | -------- 7 | * boost 8 | * libed2k 9 | * Qt5 10 | 11 | Platforms 12 | -------- 13 | Linux, Windows, Mac OS X 14 | 15 | Features 16 | -------- 17 | Only base features: search on server and download/upload on max speed. Features like irc, messages removed. I made controls like in torrent clients - user can see all transfers in transfer window. 18 | 19 | Screenshots 20 | ----------- 21 | Transfers page: 22 | [![Transfers page](https://raw.githubusercontent.com/a-pavlov/qDonkey/master/raw/transfers.png)](https://github.com/a-pavlov/qDonkey/tree/master/raw/transfers.png) 23 | Search page: 24 | * [![Search page](https://raw.githubusercontent.com/a-pavlov/qDonkey/master/raw/search.png)](https://github.com/a-pavlov/qDonkey/tree/master/raw/search.png) 25 | 26 | Builds 27 | ----------- 28 | 29 | * [Windows 0.0.1](https://drive.google.com/file/d/0B39-MtFuW1DTNUg4bEpiMGE4UTg/view?usp=sharing) 30 | * [Windows 0.0.3](https://drive.google.com/file/d/0B39-MtFuW1DTZ3d5SUtpSXNkRTg/view?usp=sharing) 31 | * [Windows 0.0.4 Localized](https://drive.google.com/file/d/0B39-MtFuW1DTLVdPSnB1LTV1ejQ/view?usp=sharing) 32 | * [Mac OS X 0.0.4 Localized](https://drive.google.com/open?id=0B39-MtFuW1DTV0FIWVpYMDlBcmc&authuser=0) 33 | 34 | 35 | -------------------------------------------------------------------------------- /qDonkey.pro: -------------------------------------------------------------------------------- 1 | TEMPLATE = subdirs 2 | SUBDIRS += src 3 | include(version.pri) 4 | -------------------------------------------------------------------------------- /raw/android.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/raw/android.png -------------------------------------------------------------------------------- /raw/mule.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/raw/mule.png -------------------------------------------------------------------------------- /raw/search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/raw/search.png -------------------------------------------------------------------------------- /raw/transfers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/raw/transfers.png -------------------------------------------------------------------------------- /src/collection_save_dlg.h: -------------------------------------------------------------------------------- 1 | #ifndef COLLECTION_SAVE_DLG_H 2 | #define COLLECTION_SAVE_DLG_H 3 | 4 | #include 5 | #ifndef Q_MOC_RUN 6 | #include 7 | #endif 8 | #include "ui_collection_save_dlg.h" 9 | 10 | struct FileData 11 | { 12 | QString file_name; 13 | libed2k::md4_hash file_hash; 14 | libed2k::size_type file_size; 15 | }; 16 | 17 | class collection_save_dlg : public QDialog, public Ui::collection_save_dlg 18 | { 19 | Q_OBJECT 20 | 21 | private: 22 | std::vector file_data; 23 | QString dirPath; 24 | QChar separator; 25 | 26 | public: 27 | collection_save_dlg(QWidget *parent, QString path); 28 | collection_save_dlg(QWidget *parent, std::vector& new_file_data, QString name); 29 | ~collection_save_dlg(); 30 | void init(); 31 | 32 | private: 33 | void addFilesRow(int row); 34 | 35 | private slots: 36 | void selectDirectory(); 37 | void dowload(); 38 | void cancel(); 39 | void checkDir(const QString& dir_name); 40 | void selectionChanged(); 41 | }; 42 | 43 | #endif // COLLECTION_SAVE_DLG_H 44 | -------------------------------------------------------------------------------- /src/donkey.rc: -------------------------------------------------------------------------------- 1 | IDI_ICON1 ICON "icons\\newmule.ico" 2 | -------------------------------------------------------------------------------- /src/ed2k_link_maker.cpp: -------------------------------------------------------------------------------- 1 | #include "misc.h" 2 | #include "ed2k_link_maker.h" 3 | 4 | #include 5 | #include 6 | 7 | 8 | ed2k_link_maker::ed2k_link_maker(QWidget *parent /* = 0*/) 9 | : QDialog(parent) 10 | { 11 | setupUi(this); 12 | connect(checkForum, SIGNAL(stateChanged(int)), this, SLOT(checkChanged(int))); 13 | connect(checkSize, SIGNAL(stateChanged(int)), this, SLOT(checkChanged(int))); 14 | connect(btnCopy, SIGNAL(clicked()), this, SLOT(putToClipboard())); 15 | connect(btnClose, SIGNAL(clicked()), this, SLOT(close())); 16 | } 17 | 18 | ed2k_link_maker::~ed2k_link_maker() 19 | { 20 | } 21 | 22 | void ed2k_link_maker::addED2KLink(const QString& fileName, const QString& hash, quint64 fileSize) 23 | { 24 | m_links.push_back(qMakePair(qMakePair(fileName, hash), fileSize)); 25 | } 26 | 27 | void ed2k_link_maker::build() 28 | { 29 | editLink->clear(); 30 | checkSize->setDisabled(true); 31 | 32 | foreach(const LINK& l, m_links) 33 | { 34 | QString size = QString::number(l.second); 35 | 36 | QString link = "ed2k://|file|" + QString(QUrl::toPercentEncoding(l.first.first)) + "|" + 37 | size + "|" + l.first.second + "|/"; 38 | 39 | if (checkForum->checkState() == Qt::Checked) 40 | { 41 | link = "[u][b][url=" + link + "]" + l.first.first + "[/url][/b][/u]"; 42 | checkSize->setEnabled(true); 43 | if (checkSize->checkState() == Qt::Checked) 44 | link += " " + misc::friendlyUnit(l.second); 45 | } 46 | 47 | editLink->appendPlainText(link); 48 | } 49 | } 50 | 51 | void ed2k_link_maker::checkChanged(int state) 52 | { 53 | build(); 54 | } 55 | 56 | void ed2k_link_maker::putToClipboard() 57 | { 58 | QString text = editLink->toPlainText(); 59 | if (text.length()) 60 | { 61 | QClipboard *cb = QApplication::clipboard(); 62 | cb->setText(text); 63 | } 64 | } 65 | 66 | void ed2k_link_maker::close() 67 | { 68 | accept(); 69 | } 70 | -------------------------------------------------------------------------------- /src/ed2k_link_maker.h: -------------------------------------------------------------------------------- 1 | #ifndef ED2K_LINK_MAKER_H 2 | #define ED2K_LINK_MAKER_H 3 | 4 | #include 5 | #include "ui_ed2k_link_maker.h" 6 | 7 | class ed2k_link_maker : public QDialog, public Ui::ed2k_link_maker 8 | { 9 | Q_OBJECT 10 | public: 11 | ed2k_link_maker(QWidget *parent = 0); 12 | ~ed2k_link_maker(); 13 | void addED2KLink(const QString& fileName, const QString& hash, quint64 fileSize); 14 | void build(); 15 | private: 16 | typedef QPair, quint64> LINK; 17 | QList m_links; 18 | private slots: 19 | void checkChanged(int state); 20 | void putToClipboard(); 21 | void close(); 22 | }; 23 | 24 | #endif // ED2K_LINK_MAKER_H 25 | -------------------------------------------------------------------------------- /src/geoip/GeoIP.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/geoip/GeoIP.dat -------------------------------------------------------------------------------- /src/geoip/README: -------------------------------------------------------------------------------- 1 | If you wish to embed GeoIP database into qBittorrent executable, please download put GeoIP.dat in this folder. 2 | 3 | GeoIP Database can be downloaded from here: 4 | * http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz 5 | Note that the database should be uncompressed. 6 | 7 | Embedding GeoIP database into qBittorrent executable is advised for: 8 | * Windows 9 | * Mac OS X 10 | * Linux distributions that don't provide GeoIP database in a separate package 11 | 12 | On Linux operating system, since this is not the default behavior, you also need to pass --with-geoip-database-embedded parameter to the configure file. 13 | -------------------------------------------------------------------------------- /src/geoip/geoip.pri: -------------------------------------------------------------------------------- 1 | INCLUDEPATH += $$PWD 2 | 3 | HEADERS += $$PWD/geoipmanager.h 4 | SOURCES += $$PWD/geoipmanager.cpp 5 | 6 | #unix { 7 | HEADERS += $$PWD/GeoIP.h 8 | SOURCES += $$PWD/GeoIP.c 9 | #} 10 | 11 | 12 | # Add GeoIP resource file if the GeoIP database 13 | # should be embedded in qBittorrent executable 14 | contains(DEFINES, WITH_GEOIP_EMBEDDED) { 15 | exists("GeoIP.dat") { 16 | message("GeoIP.dat was found in src/geoip/.") 17 | RESOURCES += $$PWD/geoip.qrc 18 | } else { 19 | DEFINES -= WITH_GEOIP_EMBEDDED 20 | error("GeoIP.dat was not found in src/geoip/ folder, please follow instructions in src/geoip/README.") 21 | } 22 | } else { 23 | message("GeoIP database will not be embedded in new-mule executable.") 24 | } 25 | -------------------------------------------------------------------------------- /src/geoip/geoip.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | GeoIP.dat 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/geoip/geoipmanager.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Bittorrent Client using Qt4 and libtorrent. 3 | * Copyright (C) 2010 Christophe Dumez 4 | * 5 | * This program is free software; you can redistribute it and/or 6 | * modify it under the terms of the GNU General Public License 7 | * as published by the Free Software Foundation; either version 2 8 | * of the License, or (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program; if not, write to the Free Software 17 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 18 | * 19 | * In addition, as a special exception, the copyright holders give permission to 20 | * link this program with the OpenSSL project's "OpenSSL" library (or with 21 | * modified versions of it that use the same license as the "OpenSSL" library), 22 | * and distribute the linked executables. You must obey the GNU General Public 23 | * License in all respects for all of the code used other than "OpenSSL". If you 24 | * modify file(s), you may extend this exception to your version of the file(s), 25 | * but you are not obligated to do so. If you do not wish to do so, delete this 26 | * exception statement from your version. 27 | * 28 | * Contact : chris@qbittorrent.org 29 | */ 30 | 31 | #ifndef GEOIPMANAGER_H 32 | #define GEOIPMANAGER_H 33 | 34 | #include "GeoIP.h" 35 | #include 36 | #include 37 | 38 | class GeoIPManager : public QObject { 39 | Q_OBJECT 40 | 41 | public: 42 | static void loadDatabase(); 43 | static QIcon CountryISOCodeToIcon(const char* iso); 44 | static QString CountryISOCodeToName(const char* iso); 45 | static QString selfCode; 46 | private: 47 | static QString geoipFolder(bool embedded=false); 48 | static QString geoipDBpath(bool embedded=false); 49 | #ifdef WITH_GEOIP_EMBEDDED 50 | static void exportEmbeddedDb(); 51 | #endif 52 | }; 53 | 54 | 55 | #endif // GEOIP_H 56 | -------------------------------------------------------------------------------- /src/ico.h: -------------------------------------------------------------------------------- 1 | /* 2 | * ico.h - kimgio import filter for MS Windows .ico files 3 | * 4 | * Distributed under the terms of the LGPL 5 | * Copyright (c) 2000 Malte Starostik 6 | * 7 | */ 8 | 9 | // You can use QImageIO::setParameters() to request a specific 10 | // Icon out of an .ico file: 11 | // 12 | // Options consist of a name=value pair and are separated by a semicolon. 13 | // Available options are: 14 | // size= select the icon that most closely matches (pixels) 15 | // default: 32 16 | // colors= select the icon that has colors (or comes closest) 17 | // default: 1 << display depth or 0 (RGB) if display depth > 8 18 | // index= select the indexth icon from the file. If this option 19 | // is present, the size and colors options will be ignored. 20 | // default: none 21 | // If both size and colors are given, size takes precedence. 22 | // 23 | // The old format is still supported: 24 | // the parameters consist of a single string in the form 25 | // "[:]" which correspond to the options above 26 | // 27 | // If an icon was returned (i.e. the file is valid and the index option 28 | // if present was not out of range), the icon's index within the .ico 29 | // file is returned in the text tag "X-Index" of the image. 30 | // If the icon is in fact a cursor, its hotspot coordinates are returned 31 | // in the text tags "X-HotspotX" and "X-HotspotY". 32 | 33 | #ifndef _ICO_H_ 34 | #define _ICO_H_ 35 | 36 | #include 37 | 38 | class ICOHandler : public QImageIOHandler 39 | { 40 | public: 41 | ICOHandler(); 42 | 43 | bool canRead() const; 44 | bool read(QImage *image); 45 | bool write(const QImage &image); 46 | 47 | QByteArray name() const; 48 | 49 | static bool canRead(QIODevice *device); 50 | }; 51 | 52 | #endif 53 | -------------------------------------------------------------------------------- /src/iconprovider.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Bittorrent Client using Qt4 and libtorrent. 3 | * Copyright (C) 2011 Christophe Dumez 4 | * 5 | * This program is free software; you can redistribute it and/or 6 | * modify it under the terms of the GNU General Public License 7 | * as published by the Free Software Foundation; either version 2 8 | * of the License, or (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program; if not, write to the Free Software 17 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 18 | * 19 | * In addition, as a special exception, the copyright holders give permission to 20 | * link this program with the OpenSSL project's "OpenSSL" library (or with 21 | * modified versions of it that use the same license as the "OpenSSL" library), 22 | * and distribute the linked executables. You must obey the GNU General Public 23 | * License in all respects for all of the code used other than "OpenSSL". If you 24 | * modify file(s), you may extend this exception to your version of the file(s), 25 | * but you are not obligated to do so. If you do not wish to do so, delete this 26 | * exception statement from your version. 27 | * 28 | * Contact : chris@qbittorrent.org 29 | */ 30 | 31 | #ifndef ICONPROVIDER_H 32 | #define ICONPROVIDER_H 33 | 34 | #include 35 | #include 36 | 37 | class IconProvider 38 | { 39 | Q_DISABLE_COPY(IconProvider); 40 | 41 | private: 42 | explicit IconProvider(); 43 | static IconProvider* m_instance; 44 | 45 | public: 46 | static IconProvider* instance(); 47 | static void drop(); 48 | QIcon getIcon(const QString& iconId); 49 | QString getIconPath(const QString& iconId); 50 | 51 | #if defined(Q_OS_X11) 52 | public: 53 | void useSystemIconTheme(bool enable); 54 | 55 | private: 56 | QIcon generateDifferentSizes(const QIcon& icon); 57 | 58 | private: 59 | bool m_useSystemTheme; 60 | #endif 61 | }; 62 | 63 | #endif // ICONPROVIDER_H 64 | -------------------------------------------------------------------------------- /src/icons/3-state-checkbox.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/3-state-checkbox.gif -------------------------------------------------------------------------------- /src/icons/ConnectDoBig.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/ConnectDoBig.png -------------------------------------------------------------------------------- /src/icons/ConnectDrop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/ConnectDrop.png -------------------------------------------------------------------------------- /src/icons/ConnectStop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/ConnectStop.png -------------------------------------------------------------------------------- /src/icons/Connection.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/Connection.ico -------------------------------------------------------------------------------- /src/icons/Delete.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/Delete.ico -------------------------------------------------------------------------------- /src/icons/Exit.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/Exit.ico -------------------------------------------------------------------------------- /src/icons/FileSharedServer.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/FileSharedServer.ico -------------------------------------------------------------------------------- /src/icons/Messages.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/Messages.ico -------------------------------------------------------------------------------- /src/icons/NavigateForward.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/NavigateForward.ico -------------------------------------------------------------------------------- /src/icons/Pause.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/Pause.ico -------------------------------------------------------------------------------- /src/icons/Preferences.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/Preferences.png -------------------------------------------------------------------------------- /src/icons/Search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/Search.png -------------------------------------------------------------------------------- /src/icons/SharedFiles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/SharedFiles.png -------------------------------------------------------------------------------- /src/icons/Stop.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/Stop.ico -------------------------------------------------------------------------------- /src/icons/Tools.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/Tools.png -------------------------------------------------------------------------------- /src/icons/Transfer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/Transfer.png -------------------------------------------------------------------------------- /src/icons/TrayConnected.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/TrayConnected.ico -------------------------------------------------------------------------------- /src/icons/TrayDisconnected.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/TrayDisconnected.ico -------------------------------------------------------------------------------- /src/icons/catalog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/catalog.png -------------------------------------------------------------------------------- /src/icons/catalog_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/catalog_2.png -------------------------------------------------------------------------------- /src/icons/common/ConnectDo.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/common/ConnectDo.ico -------------------------------------------------------------------------------- /src/icons/common/ConnectStop.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/common/ConnectStop.ico -------------------------------------------------------------------------------- /src/icons/common/DeleteAll.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/common/DeleteAll.ico -------------------------------------------------------------------------------- /src/icons/common/DeleteSelected.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/common/DeleteSelected.ico -------------------------------------------------------------------------------- /src/icons/common/FileTypeAny.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/common/FileTypeAny.ico -------------------------------------------------------------------------------- /src/icons/common/FileTypeArchive.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/common/FileTypeArchive.ico -------------------------------------------------------------------------------- /src/icons/common/FileTypeAudio.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/common/FileTypeAudio.ico -------------------------------------------------------------------------------- /src/icons/common/FileTypeCDImage.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/common/FileTypeCDImage.ico -------------------------------------------------------------------------------- /src/icons/common/FileTypeDocument.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/common/FileTypeDocument.ico -------------------------------------------------------------------------------- /src/icons/common/FileTypeEmuleCollection.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/common/FileTypeEmuleCollection.ico -------------------------------------------------------------------------------- /src/icons/common/FileTypePicture.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/common/FileTypePicture.ico -------------------------------------------------------------------------------- /src/icons/common/FileTypeProgram.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/common/FileTypeProgram.ico -------------------------------------------------------------------------------- /src/icons/common/FileTypeVideo.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/common/FileTypeVideo.ico -------------------------------------------------------------------------------- /src/icons/common/FolderOpen.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/common/FolderOpen.ico -------------------------------------------------------------------------------- /src/icons/common/User.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/common/User.ico -------------------------------------------------------------------------------- /src/icons/common/client_red.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/common/client_red.ico -------------------------------------------------------------------------------- /src/icons/common/eD2kLink.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/common/eD2kLink.png -------------------------------------------------------------------------------- /src/icons/common/folder_open.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/common/folder_open.ico -------------------------------------------------------------------------------- /src/icons/common/folder_reload.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/common/folder_reload.ico -------------------------------------------------------------------------------- /src/icons/common/folder_share.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/common/folder_share.ico -------------------------------------------------------------------------------- /src/icons/common/folder_unshare.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/common/folder_unshare.ico -------------------------------------------------------------------------------- /src/icons/common/hyperlink.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/common/hyperlink.ico -------------------------------------------------------------------------------- /src/icons/emule.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | common/User.ico 4 | common/FileTypeAny.ico 5 | common/FileTypeArchive.ico 6 | common/FileTypeAudio.ico 7 | common/FileTypeCDImage.ico 8 | common/FileTypeDocument.ico 9 | common/FileTypeEmuleCollection.ico 10 | common/FileTypePicture.ico 11 | common/FileTypeProgram.ico 12 | common/FileTypeVideo.ico 13 | common/FolderOpen.ico 14 | common/hyperlink.ico 15 | search/SearchResults.ico 16 | status/ServerInfo.ico 17 | status/Log.ico 18 | transfer_list/Upload.png 19 | transfer_list/ClientsKnown.png 20 | transfer_list/ClientsOnQueue.png 21 | transfer_list/Download.png 22 | transfer_list/DownloadFiles.png 23 | transfer_list/SplitWindow.png 24 | status.png 25 | Tools.png 26 | Transfer.png 27 | catalog_2.png 28 | ConnectDoBig.png 29 | Search.png 30 | ConnectStop.png 31 | ConnectDrop.png 32 | search/SearchResult.png 33 | search/SearchActive.png 34 | search/SearchFilter.png 35 | search/clear1.ico 36 | common/client_red.ico 37 | users/userupdate.ico 38 | users/UserAdd.ico 39 | users/UserDelete.ico 40 | users/UserDetails.ico 41 | users/UserFiles.ico 42 | users/UserMessage.ico 43 | users/Friend.ico 44 | users/Message.ico 45 | TrayConnected.ico 46 | Messages.ico 47 | users/Friends3.ico 48 | users/Friends1.ico 49 | users/Friends2.ico 50 | SharedFiles.png 51 | files/SharedFilesList.ico 52 | files/all.ico 53 | files/HardDisk.ico 54 | statusbar/disconnected.ico 55 | statusbar/connected.ico 56 | statusbar/Up1down1.ico 57 | statusbar/Up0down0.ico 58 | statusbar/Up0down1.ico 59 | statusbar/Up1down0.ico 60 | statusbar/MessagePending.ico 61 | statusbar/Message.ico 62 | TrayDisconnected.ico 63 | statusbar/empty.ico 64 | users/Chat.ico 65 | newmule.ico 66 | newmule.png 67 | Preferences.png 68 | files/SharedFolderOvl.png 69 | search/Download.png 70 | search/preview32.png 71 | search/closeall.png 72 | search/SearchRelated.png 73 | transfer_list/FileInfo.png 74 | common/eD2kLink.png 75 | common/folder_unshare.ico 76 | common/folder_share.ico 77 | common/folder_open.ico 78 | common/folder_reload.ico 79 | newmule16.png 80 | 81 | 82 | -------------------------------------------------------------------------------- /src/icons/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/favicon.png -------------------------------------------------------------------------------- /src/icons/files/HardDisk.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/files/HardDisk.ico -------------------------------------------------------------------------------- /src/icons/files/all.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/files/all.ico -------------------------------------------------------------------------------- /src/icons/flags/ad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/ad.png -------------------------------------------------------------------------------- /src/icons/flags/ae.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/ae.png -------------------------------------------------------------------------------- /src/icons/flags/af.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/af.png -------------------------------------------------------------------------------- /src/icons/flags/ag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/ag.png -------------------------------------------------------------------------------- /src/icons/flags/ai.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/ai.png -------------------------------------------------------------------------------- /src/icons/flags/al.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/al.png -------------------------------------------------------------------------------- /src/icons/flags/am.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/am.png -------------------------------------------------------------------------------- /src/icons/flags/an.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/an.png -------------------------------------------------------------------------------- /src/icons/flags/ao.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/ao.png -------------------------------------------------------------------------------- /src/icons/flags/ar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/ar.png -------------------------------------------------------------------------------- /src/icons/flags/as.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/as.png -------------------------------------------------------------------------------- /src/icons/flags/at.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/at.png -------------------------------------------------------------------------------- /src/icons/flags/au.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/au.png -------------------------------------------------------------------------------- /src/icons/flags/aw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/aw.png -------------------------------------------------------------------------------- /src/icons/flags/ax.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/ax.png -------------------------------------------------------------------------------- /src/icons/flags/az.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/az.png -------------------------------------------------------------------------------- /src/icons/flags/ba.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/ba.png -------------------------------------------------------------------------------- /src/icons/flags/bb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/bb.png -------------------------------------------------------------------------------- /src/icons/flags/bd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/bd.png -------------------------------------------------------------------------------- /src/icons/flags/be.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/be.png -------------------------------------------------------------------------------- /src/icons/flags/bf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/bf.png -------------------------------------------------------------------------------- /src/icons/flags/bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/bg.png -------------------------------------------------------------------------------- /src/icons/flags/bh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/bh.png -------------------------------------------------------------------------------- /src/icons/flags/bi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/bi.png -------------------------------------------------------------------------------- /src/icons/flags/bj.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/bj.png -------------------------------------------------------------------------------- /src/icons/flags/bm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/bm.png -------------------------------------------------------------------------------- /src/icons/flags/bn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/bn.png -------------------------------------------------------------------------------- /src/icons/flags/bo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/bo.png -------------------------------------------------------------------------------- /src/icons/flags/br.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/br.png -------------------------------------------------------------------------------- /src/icons/flags/bs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/bs.png -------------------------------------------------------------------------------- /src/icons/flags/bt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/bt.png -------------------------------------------------------------------------------- /src/icons/flags/bv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/bv.png -------------------------------------------------------------------------------- /src/icons/flags/bw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/bw.png -------------------------------------------------------------------------------- /src/icons/flags/by.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/by.png -------------------------------------------------------------------------------- /src/icons/flags/bz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/bz.png -------------------------------------------------------------------------------- /src/icons/flags/ca.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/ca.png -------------------------------------------------------------------------------- /src/icons/flags/cc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/cc.png -------------------------------------------------------------------------------- /src/icons/flags/cd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/cd.png -------------------------------------------------------------------------------- /src/icons/flags/cf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/cf.png -------------------------------------------------------------------------------- /src/icons/flags/cg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/cg.png -------------------------------------------------------------------------------- /src/icons/flags/ch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/ch.png -------------------------------------------------------------------------------- /src/icons/flags/ci.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/ci.png -------------------------------------------------------------------------------- /src/icons/flags/ck.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/ck.png -------------------------------------------------------------------------------- /src/icons/flags/cl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/cl.png -------------------------------------------------------------------------------- /src/icons/flags/cm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/cm.png -------------------------------------------------------------------------------- /src/icons/flags/cn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/cn.png -------------------------------------------------------------------------------- /src/icons/flags/co.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/co.png -------------------------------------------------------------------------------- /src/icons/flags/cr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/cr.png -------------------------------------------------------------------------------- /src/icons/flags/cs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/cs.png -------------------------------------------------------------------------------- /src/icons/flags/cu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/cu.png -------------------------------------------------------------------------------- /src/icons/flags/cv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/cv.png -------------------------------------------------------------------------------- /src/icons/flags/cx.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/cx.png -------------------------------------------------------------------------------- /src/icons/flags/cy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/cy.png -------------------------------------------------------------------------------- /src/icons/flags/cz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/cz.png -------------------------------------------------------------------------------- /src/icons/flags/de.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/de.png -------------------------------------------------------------------------------- /src/icons/flags/dj.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/dj.png -------------------------------------------------------------------------------- /src/icons/flags/dk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/dk.png -------------------------------------------------------------------------------- /src/icons/flags/dm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/dm.png -------------------------------------------------------------------------------- /src/icons/flags/do.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/do.png -------------------------------------------------------------------------------- /src/icons/flags/dz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/dz.png -------------------------------------------------------------------------------- /src/icons/flags/ec.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/ec.png -------------------------------------------------------------------------------- /src/icons/flags/ee.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/ee.png -------------------------------------------------------------------------------- /src/icons/flags/eg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/eg.png -------------------------------------------------------------------------------- /src/icons/flags/eh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/eh.png -------------------------------------------------------------------------------- /src/icons/flags/er.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/er.png -------------------------------------------------------------------------------- /src/icons/flags/es.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/es.png -------------------------------------------------------------------------------- /src/icons/flags/et.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/et.png -------------------------------------------------------------------------------- /src/icons/flags/fi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/fi.png -------------------------------------------------------------------------------- /src/icons/flags/fj.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/fj.png -------------------------------------------------------------------------------- /src/icons/flags/fk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/fk.png -------------------------------------------------------------------------------- /src/icons/flags/fm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/fm.png -------------------------------------------------------------------------------- /src/icons/flags/fo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/fo.png -------------------------------------------------------------------------------- /src/icons/flags/fr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/fr.png -------------------------------------------------------------------------------- /src/icons/flags/ga.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/ga.png -------------------------------------------------------------------------------- /src/icons/flags/gb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/gb.png -------------------------------------------------------------------------------- /src/icons/flags/gd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/gd.png -------------------------------------------------------------------------------- /src/icons/flags/ge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/ge.png -------------------------------------------------------------------------------- /src/icons/flags/gf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/gf.png -------------------------------------------------------------------------------- /src/icons/flags/gh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/gh.png -------------------------------------------------------------------------------- /src/icons/flags/gi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/gi.png -------------------------------------------------------------------------------- /src/icons/flags/gl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/gl.png -------------------------------------------------------------------------------- /src/icons/flags/gm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/gm.png -------------------------------------------------------------------------------- /src/icons/flags/gn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/gn.png -------------------------------------------------------------------------------- /src/icons/flags/gp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/gp.png -------------------------------------------------------------------------------- /src/icons/flags/gq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/gq.png -------------------------------------------------------------------------------- /src/icons/flags/gr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/gr.png -------------------------------------------------------------------------------- /src/icons/flags/gs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/gs.png -------------------------------------------------------------------------------- /src/icons/flags/gt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/gt.png -------------------------------------------------------------------------------- /src/icons/flags/gu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/gu.png -------------------------------------------------------------------------------- /src/icons/flags/gw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/gw.png -------------------------------------------------------------------------------- /src/icons/flags/gy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/gy.png -------------------------------------------------------------------------------- /src/icons/flags/hk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/hk.png -------------------------------------------------------------------------------- /src/icons/flags/hm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/hm.png -------------------------------------------------------------------------------- /src/icons/flags/hn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/hn.png -------------------------------------------------------------------------------- /src/icons/flags/hr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/hr.png -------------------------------------------------------------------------------- /src/icons/flags/ht.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/ht.png -------------------------------------------------------------------------------- /src/icons/flags/hu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/hu.png -------------------------------------------------------------------------------- /src/icons/flags/icons-set-readme.txt: -------------------------------------------------------------------------------- 1 | Flag icons - http://www.famfamfam.com 2 | 3 | These icons are public domain, and as such are free for any use (attribution appreciated but not required). 4 | 5 | Note that these flags are named using the ISO3166-1 alpha-2 country codes where appropriate. A list of codes can be found at http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 6 | 7 | If you find these icons useful, please donate via paypal to mjames@gmail.com (or click the donate button available at http://www.famfamfam.com/lab/icons/silk) 8 | 9 | Contact: mjames@gmail.com -------------------------------------------------------------------------------- /src/icons/flags/id.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/id.png -------------------------------------------------------------------------------- /src/icons/flags/ie.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/ie.png -------------------------------------------------------------------------------- /src/icons/flags/il.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/il.png -------------------------------------------------------------------------------- /src/icons/flags/in.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/in.png -------------------------------------------------------------------------------- /src/icons/flags/io.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/io.png -------------------------------------------------------------------------------- /src/icons/flags/iq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/iq.png -------------------------------------------------------------------------------- /src/icons/flags/ir.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/ir.png -------------------------------------------------------------------------------- /src/icons/flags/is.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/is.png -------------------------------------------------------------------------------- /src/icons/flags/it.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/it.png -------------------------------------------------------------------------------- /src/icons/flags/jm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/jm.png -------------------------------------------------------------------------------- /src/icons/flags/jo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/jo.png -------------------------------------------------------------------------------- /src/icons/flags/jp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/jp.png -------------------------------------------------------------------------------- /src/icons/flags/ke.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/ke.png -------------------------------------------------------------------------------- /src/icons/flags/kg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/kg.png -------------------------------------------------------------------------------- /src/icons/flags/kh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/kh.png -------------------------------------------------------------------------------- /src/icons/flags/ki.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/ki.png -------------------------------------------------------------------------------- /src/icons/flags/km.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/km.png -------------------------------------------------------------------------------- /src/icons/flags/kn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/kn.png -------------------------------------------------------------------------------- /src/icons/flags/kp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/kp.png -------------------------------------------------------------------------------- /src/icons/flags/kr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/kr.png -------------------------------------------------------------------------------- /src/icons/flags/kw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/kw.png -------------------------------------------------------------------------------- /src/icons/flags/ky.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/ky.png -------------------------------------------------------------------------------- /src/icons/flags/kz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/kz.png -------------------------------------------------------------------------------- /src/icons/flags/la.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/la.png -------------------------------------------------------------------------------- /src/icons/flags/lb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/lb.png -------------------------------------------------------------------------------- /src/icons/flags/lc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/lc.png -------------------------------------------------------------------------------- /src/icons/flags/li.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/li.png -------------------------------------------------------------------------------- /src/icons/flags/lk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/lk.png -------------------------------------------------------------------------------- /src/icons/flags/lr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/lr.png -------------------------------------------------------------------------------- /src/icons/flags/ls.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/ls.png -------------------------------------------------------------------------------- /src/icons/flags/lt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/lt.png -------------------------------------------------------------------------------- /src/icons/flags/lu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/lu.png -------------------------------------------------------------------------------- /src/icons/flags/lv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/lv.png -------------------------------------------------------------------------------- /src/icons/flags/ly.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/ly.png -------------------------------------------------------------------------------- /src/icons/flags/ma.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/ma.png -------------------------------------------------------------------------------- /src/icons/flags/mc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/mc.png -------------------------------------------------------------------------------- /src/icons/flags/md.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/md.png -------------------------------------------------------------------------------- /src/icons/flags/me.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/me.png -------------------------------------------------------------------------------- /src/icons/flags/mg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/mg.png -------------------------------------------------------------------------------- /src/icons/flags/mh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/mh.png -------------------------------------------------------------------------------- /src/icons/flags/mk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/mk.png -------------------------------------------------------------------------------- /src/icons/flags/ml.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/ml.png -------------------------------------------------------------------------------- /src/icons/flags/mm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/mm.png -------------------------------------------------------------------------------- /src/icons/flags/mn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/mn.png -------------------------------------------------------------------------------- /src/icons/flags/mo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/mo.png -------------------------------------------------------------------------------- /src/icons/flags/mp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/mp.png -------------------------------------------------------------------------------- /src/icons/flags/mq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/mq.png -------------------------------------------------------------------------------- /src/icons/flags/mr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/mr.png -------------------------------------------------------------------------------- /src/icons/flags/ms.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/ms.png -------------------------------------------------------------------------------- /src/icons/flags/mt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/mt.png -------------------------------------------------------------------------------- /src/icons/flags/mu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/mu.png -------------------------------------------------------------------------------- /src/icons/flags/mv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/mv.png -------------------------------------------------------------------------------- /src/icons/flags/mw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/mw.png -------------------------------------------------------------------------------- /src/icons/flags/mx.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/mx.png -------------------------------------------------------------------------------- /src/icons/flags/my.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/my.png -------------------------------------------------------------------------------- /src/icons/flags/mz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/mz.png -------------------------------------------------------------------------------- /src/icons/flags/na.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/na.png -------------------------------------------------------------------------------- /src/icons/flags/nc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/nc.png -------------------------------------------------------------------------------- /src/icons/flags/ne.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/ne.png -------------------------------------------------------------------------------- /src/icons/flags/nf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/nf.png -------------------------------------------------------------------------------- /src/icons/flags/ng.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/ng.png -------------------------------------------------------------------------------- /src/icons/flags/ni.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/ni.png -------------------------------------------------------------------------------- /src/icons/flags/nl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/nl.png -------------------------------------------------------------------------------- /src/icons/flags/no.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/no.png -------------------------------------------------------------------------------- /src/icons/flags/np.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/np.png -------------------------------------------------------------------------------- /src/icons/flags/nr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/nr.png -------------------------------------------------------------------------------- /src/icons/flags/nu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/nu.png -------------------------------------------------------------------------------- /src/icons/flags/nz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/nz.png -------------------------------------------------------------------------------- /src/icons/flags/om.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/om.png -------------------------------------------------------------------------------- /src/icons/flags/pa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/pa.png -------------------------------------------------------------------------------- /src/icons/flags/pe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/pe.png -------------------------------------------------------------------------------- /src/icons/flags/pf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/pf.png -------------------------------------------------------------------------------- /src/icons/flags/pg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/pg.png -------------------------------------------------------------------------------- /src/icons/flags/ph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/ph.png -------------------------------------------------------------------------------- /src/icons/flags/pk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/pk.png -------------------------------------------------------------------------------- /src/icons/flags/pl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/pl.png -------------------------------------------------------------------------------- /src/icons/flags/pm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/pm.png -------------------------------------------------------------------------------- /src/icons/flags/pn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/pn.png -------------------------------------------------------------------------------- /src/icons/flags/pr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/pr.png -------------------------------------------------------------------------------- /src/icons/flags/ps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/ps.png -------------------------------------------------------------------------------- /src/icons/flags/pt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/pt.png -------------------------------------------------------------------------------- /src/icons/flags/pw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/pw.png -------------------------------------------------------------------------------- /src/icons/flags/py.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/py.png -------------------------------------------------------------------------------- /src/icons/flags/qa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/qa.png -------------------------------------------------------------------------------- /src/icons/flags/re.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/re.png -------------------------------------------------------------------------------- /src/icons/flags/ro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/ro.png -------------------------------------------------------------------------------- /src/icons/flags/rs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/rs.png -------------------------------------------------------------------------------- /src/icons/flags/ru.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/ru.png -------------------------------------------------------------------------------- /src/icons/flags/rw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/rw.png -------------------------------------------------------------------------------- /src/icons/flags/sa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/sa.png -------------------------------------------------------------------------------- /src/icons/flags/sb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/sb.png -------------------------------------------------------------------------------- /src/icons/flags/sc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/sc.png -------------------------------------------------------------------------------- /src/icons/flags/sd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/sd.png -------------------------------------------------------------------------------- /src/icons/flags/se.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/se.png -------------------------------------------------------------------------------- /src/icons/flags/sg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/sg.png -------------------------------------------------------------------------------- /src/icons/flags/sh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/sh.png -------------------------------------------------------------------------------- /src/icons/flags/si.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/si.png -------------------------------------------------------------------------------- /src/icons/flags/sj.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/sj.png -------------------------------------------------------------------------------- /src/icons/flags/sk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/sk.png -------------------------------------------------------------------------------- /src/icons/flags/sl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/sl.png -------------------------------------------------------------------------------- /src/icons/flags/sm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/sm.png -------------------------------------------------------------------------------- /src/icons/flags/sn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/sn.png -------------------------------------------------------------------------------- /src/icons/flags/so.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/so.png -------------------------------------------------------------------------------- /src/icons/flags/sr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/sr.png -------------------------------------------------------------------------------- /src/icons/flags/st.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/st.png -------------------------------------------------------------------------------- /src/icons/flags/sv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/sv.png -------------------------------------------------------------------------------- /src/icons/flags/sy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/sy.png -------------------------------------------------------------------------------- /src/icons/flags/sz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/sz.png -------------------------------------------------------------------------------- /src/icons/flags/tc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/tc.png -------------------------------------------------------------------------------- /src/icons/flags/td.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/td.png -------------------------------------------------------------------------------- /src/icons/flags/tf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/tf.png -------------------------------------------------------------------------------- /src/icons/flags/tg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/tg.png -------------------------------------------------------------------------------- /src/icons/flags/th.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/th.png -------------------------------------------------------------------------------- /src/icons/flags/tj.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/tj.png -------------------------------------------------------------------------------- /src/icons/flags/tk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/tk.png -------------------------------------------------------------------------------- /src/icons/flags/tl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/tl.png -------------------------------------------------------------------------------- /src/icons/flags/tm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/tm.png -------------------------------------------------------------------------------- /src/icons/flags/tn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/tn.png -------------------------------------------------------------------------------- /src/icons/flags/to.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/to.png -------------------------------------------------------------------------------- /src/icons/flags/tr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/tr.png -------------------------------------------------------------------------------- /src/icons/flags/tt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/tt.png -------------------------------------------------------------------------------- /src/icons/flags/tv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/tv.png -------------------------------------------------------------------------------- /src/icons/flags/tw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/tw.png -------------------------------------------------------------------------------- /src/icons/flags/tz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/tz.png -------------------------------------------------------------------------------- /src/icons/flags/ua.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/ua.png -------------------------------------------------------------------------------- /src/icons/flags/ug.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/ug.png -------------------------------------------------------------------------------- /src/icons/flags/um.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/um.png -------------------------------------------------------------------------------- /src/icons/flags/us.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/us.png -------------------------------------------------------------------------------- /src/icons/flags/uy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/uy.png -------------------------------------------------------------------------------- /src/icons/flags/uz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/uz.png -------------------------------------------------------------------------------- /src/icons/flags/va.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/va.png -------------------------------------------------------------------------------- /src/icons/flags/vc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/vc.png -------------------------------------------------------------------------------- /src/icons/flags/ve.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/ve.png -------------------------------------------------------------------------------- /src/icons/flags/vg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/vg.png -------------------------------------------------------------------------------- /src/icons/flags/vi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/vi.png -------------------------------------------------------------------------------- /src/icons/flags/vn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/vn.png -------------------------------------------------------------------------------- /src/icons/flags/vu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/vu.png -------------------------------------------------------------------------------- /src/icons/flags/wf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/wf.png -------------------------------------------------------------------------------- /src/icons/flags/ws.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/ws.png -------------------------------------------------------------------------------- /src/icons/flags/ye.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/ye.png -------------------------------------------------------------------------------- /src/icons/flags/yt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/yt.png -------------------------------------------------------------------------------- /src/icons/flags/za.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/za.png -------------------------------------------------------------------------------- /src/icons/flags/zm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/zm.png -------------------------------------------------------------------------------- /src/icons/flags/zw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/flags/zw.png -------------------------------------------------------------------------------- /src/icons/loading.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/loading.png -------------------------------------------------------------------------------- /src/icons/magnet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/magnet.png -------------------------------------------------------------------------------- /src/icons/mule.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/mule.icns -------------------------------------------------------------------------------- /src/icons/newmule.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/newmule.ico -------------------------------------------------------------------------------- /src/icons/newmule.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/newmule.png -------------------------------------------------------------------------------- /src/icons/newmule16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/newmule16.png -------------------------------------------------------------------------------- /src/icons/oxygen/application-exit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/oxygen/application-exit.png -------------------------------------------------------------------------------- /src/icons/oxygen/application-rss+xml.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/oxygen/application-rss+xml.png -------------------------------------------------------------------------------- /src/icons/oxygen/application-x-mswinurl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/oxygen/application-x-mswinurl.png -------------------------------------------------------------------------------- /src/icons/oxygen/chronometer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/oxygen/chronometer.png -------------------------------------------------------------------------------- /src/icons/oxygen/dialog-cancel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/oxygen/dialog-cancel.png -------------------------------------------------------------------------------- /src/icons/oxygen/dialog-information.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/oxygen/dialog-information.png -------------------------------------------------------------------------------- /src/icons/oxygen/dialog-warning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/oxygen/dialog-warning.png -------------------------------------------------------------------------------- /src/icons/oxygen/document-edit-verify.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/oxygen/document-edit-verify.png -------------------------------------------------------------------------------- /src/icons/oxygen/document-edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/oxygen/document-edit.png -------------------------------------------------------------------------------- /src/icons/oxygen/document-encrypt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/oxygen/document-encrypt.png -------------------------------------------------------------------------------- /src/icons/oxygen/document-import.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/oxygen/document-import.png -------------------------------------------------------------------------------- /src/icons/oxygen/document-new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/oxygen/document-new.png -------------------------------------------------------------------------------- /src/icons/oxygen/document-properties.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/oxygen/document-properties.png -------------------------------------------------------------------------------- /src/icons/oxygen/document-save.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/oxygen/document-save.png -------------------------------------------------------------------------------- /src/icons/oxygen/download.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/oxygen/download.png -------------------------------------------------------------------------------- /src/icons/oxygen/edit-clear-history.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/oxygen/edit-clear-history.png -------------------------------------------------------------------------------- /src/icons/oxygen/edit-clear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/oxygen/edit-clear.png -------------------------------------------------------------------------------- /src/icons/oxygen/edit-copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/oxygen/edit-copy.png -------------------------------------------------------------------------------- /src/icons/oxygen/edit-cut.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/oxygen/edit-cut.png -------------------------------------------------------------------------------- /src/icons/oxygen/edit-delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/oxygen/edit-delete.png -------------------------------------------------------------------------------- /src/icons/oxygen/edit-find-user.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/oxygen/edit-find-user.png -------------------------------------------------------------------------------- /src/icons/oxygen/edit-find.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/oxygen/edit-find.png -------------------------------------------------------------------------------- /src/icons/oxygen/edit-paste.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/oxygen/edit-paste.png -------------------------------------------------------------------------------- /src/icons/oxygen/edit-rename.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/oxygen/edit-rename.png -------------------------------------------------------------------------------- /src/icons/oxygen/folder-documents.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/oxygen/folder-documents.png -------------------------------------------------------------------------------- /src/icons/oxygen/folder-new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/oxygen/folder-new.png -------------------------------------------------------------------------------- /src/icons/oxygen/folder-remote.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/oxygen/folder-remote.png -------------------------------------------------------------------------------- /src/icons/oxygen/gear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/oxygen/gear.png -------------------------------------------------------------------------------- /src/icons/oxygen/gear32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/oxygen/gear32.png -------------------------------------------------------------------------------- /src/icons/oxygen/go-down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/oxygen/go-down.png -------------------------------------------------------------------------------- /src/icons/oxygen/go-up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/oxygen/go-up.png -------------------------------------------------------------------------------- /src/icons/oxygen/help-about.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/oxygen/help-about.png -------------------------------------------------------------------------------- /src/icons/oxygen/help-contents.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/oxygen/help-contents.png -------------------------------------------------------------------------------- /src/icons/oxygen/inode-directory.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/oxygen/inode-directory.png -------------------------------------------------------------------------------- /src/icons/oxygen/insert-link.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/oxygen/insert-link.png -------------------------------------------------------------------------------- /src/icons/oxygen/list-add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/oxygen/list-add.png -------------------------------------------------------------------------------- /src/icons/oxygen/list-remove.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/oxygen/list-remove.png -------------------------------------------------------------------------------- /src/icons/oxygen/mail-folder-inbox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/oxygen/mail-folder-inbox.png -------------------------------------------------------------------------------- /src/icons/oxygen/mail-mark-read.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/oxygen/mail-mark-read.png -------------------------------------------------------------------------------- /src/icons/oxygen/media-playback-pause.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/oxygen/media-playback-pause.png -------------------------------------------------------------------------------- /src/icons/oxygen/media-playback-start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/oxygen/media-playback-start.png -------------------------------------------------------------------------------- /src/icons/oxygen/network-server.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/oxygen/network-server.png -------------------------------------------------------------------------------- /src/icons/oxygen/network-wired.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/oxygen/network-wired.png -------------------------------------------------------------------------------- /src/icons/oxygen/object-locked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/oxygen/object-locked.png -------------------------------------------------------------------------------- /src/icons/oxygen/preferences-desktop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/oxygen/preferences-desktop.png -------------------------------------------------------------------------------- /src/icons/oxygen/preferences-other.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/oxygen/preferences-other.png -------------------------------------------------------------------------------- /src/icons/oxygen/preferences-system-network.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/oxygen/preferences-system-network.png -------------------------------------------------------------------------------- /src/icons/oxygen/preferences-system.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/oxygen/preferences-system.png -------------------------------------------------------------------------------- /src/icons/oxygen/preferences-web-browser-cookies.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/oxygen/preferences-web-browser-cookies.png -------------------------------------------------------------------------------- /src/icons/oxygen/security-high.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/oxygen/security-high.png -------------------------------------------------------------------------------- /src/icons/oxygen/security-low.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/oxygen/security-low.png -------------------------------------------------------------------------------- /src/icons/oxygen/services.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/oxygen/services.png -------------------------------------------------------------------------------- /src/icons/oxygen/tab-close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/oxygen/tab-close.png -------------------------------------------------------------------------------- /src/icons/oxygen/task-attention.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/oxygen/task-attention.png -------------------------------------------------------------------------------- /src/icons/oxygen/text-plain.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/oxygen/text-plain.png -------------------------------------------------------------------------------- /src/icons/oxygen/tools-report-bug.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/oxygen/tools-report-bug.png -------------------------------------------------------------------------------- /src/icons/oxygen/unavailable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/oxygen/unavailable.png -------------------------------------------------------------------------------- /src/icons/oxygen/user-group-delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/oxygen/user-group-delete.png -------------------------------------------------------------------------------- /src/icons/oxygen/user-group-new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/oxygen/user-group-new.png -------------------------------------------------------------------------------- /src/icons/oxygen/view-calendar-journal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/oxygen/view-calendar-journal.png -------------------------------------------------------------------------------- /src/icons/oxygen/view-categories.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/oxygen/view-categories.png -------------------------------------------------------------------------------- /src/icons/oxygen/view-filter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/oxygen/view-filter.png -------------------------------------------------------------------------------- /src/icons/oxygen/view-preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/oxygen/view-preview.png -------------------------------------------------------------------------------- /src/icons/oxygen/view-refresh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/oxygen/view-refresh.png -------------------------------------------------------------------------------- /src/icons/oxygen/wallet-open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/oxygen/wallet-open.png -------------------------------------------------------------------------------- /src/icons/oxygen/webui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/oxygen/webui.png -------------------------------------------------------------------------------- /src/icons/qBittorrent.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Categories=Network;FileTransfer;P2P;Qt; 3 | Exec=qbittorrent %U 4 | GenericName=BitTorrent client 5 | GenericName[ar]=العميل BitTorrent 6 | GenericName[bg]=Торент клиент 7 | GenericName[cs]=BitTorrent klient 8 | GenericName[de]=BitTorren Client 9 | GenericName[el]=BitTorrent πελάτης 10 | GenericName[es]=Cliente BitTorrent 11 | GenericName[fi]=BitTorrent-ohjelma 12 | GenericName[fr]=Client BitTorrent 13 | GenericName[hr]=BitTorrent klijent 14 | GenericName[hu]=BitTorrent kliens 15 | GenericName[it]=Client BitTorrent 16 | GenericName[ja]=BitTorrent クライアント 17 | GenericName[ko]=비토렌트 클라이언트 18 | GenericName[lt]=BitTorrent klientas 19 | GenericName[nl]=BitTorrent-cliënt 20 | GenericName[pl]=Klient BitTorrent 21 | GenericName[pt]=Cliente BitTorrent 22 | GenericName[pt_BR]=Cliente BitTorrent 23 | GenericName[ro]=Client BitTorrent 24 | GenericName[ru]=клиент BitTorrent 25 | GenericName[sk]=Klient siete BitTorrent 26 | GenericName[sr]=BitTorrent-клијент 27 | GenericName[sv]=BitTorrent-klient 28 | GenericName[tr]=BitTorrent istemcisi 29 | GenericName[uk]=BitTorrent-клієнт 30 | GenericName[zh]=BitTorrent之用户 31 | GenericName[zh_TW]=BitTorrent客戶端 32 | Comment=Download and share files over BitTorrent 33 | Comment[fr]=Télécharger et partager des fichiers avec BitTorrent 34 | Comment[pl]=Dzielenie się plikami przez BitTorrent 35 | Icon=qbittorrent 36 | MimeType=application/x-bittorrent;x-scheme-handler/magnet; 37 | Name=qBittorrent 38 | Name[ko]=큐비토런트 39 | Terminal=false 40 | Type=Application 41 | 42 | -------------------------------------------------------------------------------- /src/icons/qMuleDocument.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/qMuleDocument.icns -------------------------------------------------------------------------------- /src/icons/search/Download.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/search/Download.png -------------------------------------------------------------------------------- /src/icons/search/SearchActive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/search/SearchActive.png -------------------------------------------------------------------------------- /src/icons/search/SearchFilter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/search/SearchFilter.png -------------------------------------------------------------------------------- /src/icons/search/SearchRelated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/search/SearchRelated.png -------------------------------------------------------------------------------- /src/icons/search/SearchResult.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/search/SearchResult.png -------------------------------------------------------------------------------- /src/icons/search/SearchResults.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/search/SearchResults.ico -------------------------------------------------------------------------------- /src/icons/search/clear1.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/search/clear1.ico -------------------------------------------------------------------------------- /src/icons/search/clear2.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/search/clear2.ico -------------------------------------------------------------------------------- /src/icons/search/closeall.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/search/closeall.png -------------------------------------------------------------------------------- /src/icons/search/preview32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/search/preview32.png -------------------------------------------------------------------------------- /src/icons/slow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/slow.png -------------------------------------------------------------------------------- /src/icons/slow_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/slow_off.png -------------------------------------------------------------------------------- /src/icons/sphere.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/sphere.png -------------------------------------------------------------------------------- /src/icons/sphere2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/sphere2.png -------------------------------------------------------------------------------- /src/icons/status.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/status.png -------------------------------------------------------------------------------- /src/icons/statusbar/MessagePending.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/statusbar/MessagePending.ico -------------------------------------------------------------------------------- /src/icons/statusbar/Up0down0.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/statusbar/Up0down0.ico -------------------------------------------------------------------------------- /src/icons/statusbar/Up0down1.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/statusbar/Up0down1.ico -------------------------------------------------------------------------------- /src/icons/statusbar/Up1down0.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/statusbar/Up1down0.ico -------------------------------------------------------------------------------- /src/icons/statusbar/Up1down1.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/statusbar/Up1down1.ico -------------------------------------------------------------------------------- /src/icons/statusbar/connected.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/statusbar/connected.ico -------------------------------------------------------------------------------- /src/icons/statusbar/disconnected.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/statusbar/disconnected.ico -------------------------------------------------------------------------------- /src/icons/statusbar/empty.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/statusbar/empty.ico -------------------------------------------------------------------------------- /src/icons/transfer_list/Download.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/transfer_list/Download.png -------------------------------------------------------------------------------- /src/icons/transfer_list/DownloadFiles.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/transfer_list/DownloadFiles.ico -------------------------------------------------------------------------------- /src/icons/transfer_list/DownloadFiles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/transfer_list/DownloadFiles.png -------------------------------------------------------------------------------- /src/icons/transfer_list/FileInfo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/transfer_list/FileInfo.png -------------------------------------------------------------------------------- /src/icons/transfer_list/SplitWindow.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/transfer_list/SplitWindow.ico -------------------------------------------------------------------------------- /src/icons/transfer_list/SplitWindow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/transfer_list/SplitWindow.png -------------------------------------------------------------------------------- /src/icons/transfer_list/Upload.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/transfer_list/Upload.ico -------------------------------------------------------------------------------- /src/icons/transfer_list/Upload.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/transfer_list/Upload.png -------------------------------------------------------------------------------- /src/icons/transfer_list/checking.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/transfer_list/checking.png -------------------------------------------------------------------------------- /src/icons/transfer_list/downloading.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/transfer_list/downloading.png -------------------------------------------------------------------------------- /src/icons/transfer_list/error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/transfer_list/error.png -------------------------------------------------------------------------------- /src/icons/transfer_list/paused.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/transfer_list/paused.png -------------------------------------------------------------------------------- /src/icons/transfer_list/queued.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/transfer_list/queued.png -------------------------------------------------------------------------------- /src/icons/transfer_list/stalledDL.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/transfer_list/stalledDL.png -------------------------------------------------------------------------------- /src/icons/transfer_list/stalledUP.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/transfer_list/stalledUP.png -------------------------------------------------------------------------------- /src/icons/transfer_list/uploading.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/transfer_list/uploading.png -------------------------------------------------------------------------------- /src/icons/url.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-pavlov/qDonkey/efc3860118a5324eaafc90aeb392f013ff94b145/src/icons/url.png -------------------------------------------------------------------------------- /src/inputdir_dialog.cpp: -------------------------------------------------------------------------------- 1 | #include "inputdir_dialog.h" 2 | #include "ui_inputdir_dialog.h" 3 | 4 | #include "misc.h" 5 | #include "preferences.h" 6 | #include 7 | 8 | inputdir_dialog::inputdir_dialog(QWidget *parent) : 9 | QDialog(parent) { 10 | setupUi(this); 11 | labelMsg->hide(); 12 | } 13 | 14 | inputdir_dialog::~inputdir_dialog() { 15 | } 16 | 17 | void inputdir_dialog::on_toolButton_clicked() { 18 | const QString path = misc::expandPath(testInputDir->text()); 19 | QDir inputDir(path); 20 | QString dir; 21 | if (!path.isEmpty() && inputDir.exists()) { 22 | dir = QFileDialog::getExistingDirectory(this, tr("Choose input directory"), inputDir.absolutePath()); 23 | } else { 24 | dir = QFileDialog::getExistingDirectory(this, tr("Choose input directory"), QDir::homePath()); 25 | } 26 | 27 | if (!dir.isNull()) { 28 | misc::normalizePath(dir); 29 | testInputDir->setText(dir); 30 | } 31 | } 32 | 33 | void inputdir_dialog::done(int r) { 34 | if (r == QDialog::Accepted) { 35 | if (!misc::prepareInputDirectory(testInputDir->text())) { 36 | labelMsg->setText(tr("Unable to prepare input directory, check it exists and writeable")); 37 | labelMsg->show(); 38 | } else { 39 | Preferences().setInputDir(testInputDir->text()); 40 | QDialog::done(r); 41 | } 42 | } else { 43 | QDialog::done(r); 44 | } 45 | } 46 | 47 | void inputdir_dialog::on_testInputDir_textChanged(const QString &arg1) { 48 | labelMsg->hide(); 49 | } 50 | -------------------------------------------------------------------------------- /src/inputdir_dialog.h: -------------------------------------------------------------------------------- 1 | #ifndef INPUTDIR_DIALOG_H 2 | #define INPUTDIR_DIALOG_H 3 | 4 | #include 5 | #include "ui_inputdir_dialog.h" 6 | 7 | class inputdir_dialog : public QDialog, private Ui::inputdir_dialog 8 | { 9 | Q_OBJECT 10 | 11 | public: 12 | explicit inputdir_dialog(QWidget *parent = 0); 13 | ~inputdir_dialog(); 14 | 15 | public slots: 16 | void done(int); 17 | private slots: 18 | void on_toolButton_clicked(); 19 | void on_testInputDir_textChanged(const QString &arg1); 20 | }; 21 | 22 | #endif // INPUTDIR_DIALOG_H 23 | -------------------------------------------------------------------------------- /src/inputdir_dialog.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | inputdir_dialog 4 | 5 | 6 | 7 | 0 8 | 0 9 | 527 10 | 97 11 | 12 | 13 | 14 | 15 | 0 16 | 0 17 | 18 | 19 | 20 | Choose input directory 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | ... 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 255 46 | 0 47 | 0 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 255 57 | 0 58 | 0 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 105 68 | 107 69 | 103 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | TextLabel 78 | 79 | 80 | 81 | 82 | 83 | 84 | Qt::Horizontal 85 | 86 | 87 | QDialogButtonBox::Cancel|QDialogButtonBox::Ok 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | buttonBox 97 | accepted() 98 | inputdir_dialog 99 | accept() 100 | 101 | 102 | 248 103 | 254 104 | 105 | 106 | 157 107 | 274 108 | 109 | 110 | 111 | 112 | buttonBox 113 | rejected() 114 | inputdir_dialog 115 | reject() 116 | 117 | 118 | 316 119 | 260 120 | 121 | 122 | 286 123 | 274 124 | 125 | 126 | 127 | 128 | 129 | -------------------------------------------------------------------------------- /src/lang.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | lang/qDonkey_en.qm 4 | lang/qDonkey_ru.qm 5 | lang/qDonkey_it.qm 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/mac/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDocumentTypes 6 | 7 | 8 | CFBundleTypeExtensions 9 | 10 | ed2k 11 | 12 | CFBundleTypeIconFile 13 | ED2KLink 14 | CFBundleTypeName 15 | eDonkey link 16 | CFBundleTypeRole 17 | Viewer 18 | LSHandlerRank 19 | Owner 20 | LSIsAppleDefaultForType 21 | 22 | 23 | 24 | CFBundleURLTypes 25 | 26 | 27 | CFBundleURLSchemes 28 | 29 | ed2k 30 | 31 | CFBundleURLName 32 | eDonkey URL 33 | 34 | 35 | CFBundleName 36 | qDonkey 37 | CFBundleIconFile 38 | mule.icns 39 | CFBundleInfoDictionaryVersion 40 | 6.0 41 | CFBundlePackageType 42 | APPL 43 | CFBundleShortVersionString 44 | 0.0.5 45 | CFBundleSignature 46 | qDonkey 47 | CFBundleExecutable 48 | qDonkey 49 | CFBundleIdentifier 50 | https://github.com/a-pavlov/qDonkey 51 | NSPrincipalClass 52 | NSApplication 53 | NSHighResolutionCapable 54 | True 55 | NSAppleScriptEnabled 56 | YES 57 | NSHumanReadableCopyright 58 | Copyright © 2015 The qDonkey project 59 | 60 | 61 | -------------------------------------------------------------------------------- /src/mac/conf.pri: -------------------------------------------------------------------------------- 1 | PREFIX = /usr/local 2 | BINDIR = /usr/local/bin 3 | DATADIR = /usr/local/share 4 | 5 | HEADERS += qmacapplication.h 6 | SOURCES += qmacapplication.cpp 7 | 8 | # Use pkg-config to get all necessary libtorrent DEFINES 9 | CONFIG += link_pkgconfig 10 | 11 | # Special include/libs paths (macports) 12 | INCLUDEPATH += /usr/include /opt/local/include/boost /opt/local/include 13 | INCLUDEPATH += $$(LIBED2K_ROOT)/include 14 | LIBS += -L/opt/local/lib 15 | LIBS += -L$$(LIBED2K_ROOT)/lib -led2k 16 | 17 | # Boost system lib 18 | LIBS += -lboost_system-mt 19 | # Boost filesystem lib (Not needed for libtorrent >= 0.16.0) 20 | LIBS += -lboost_filesystem-mt -lboost_thread-mt 21 | # Carbon 22 | LIBS += -framework Carbon -framework IOKit 23 | LIBS += -lz 24 | QMAKE_CXXFLAGS += -fpermissive 25 | #document_icon.path = Contents/Resources 26 | #document_icon.files = Icons/qMuleDocument.icns 27 | 28 | #QMAKE_BUNDLE_DATA += document_icon 29 | #ICON = Icons/qmule_mac.icns 30 | #QMAKE_INFO_PLIST = Info.plist 31 | ICON = icons/mule.icns 32 | QMAKE_INFO_PLIST = mac/Info.plist 33 | 34 | DEFINES += WITH_GEOIP_EMBEDDED 35 | DEFINES += LIBED2K_USE_BOOST_DATE_TIME 36 | QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.3 37 | message("On Mac OS X, GeoIP database must be embedded.") 38 | -------------------------------------------------------------------------------- /src/powermanagement/powermanagement.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Bittorrent Client using Qt4 and libtorrent. 3 | * Copyright (C) 2011 Vladimir Golovnev 4 | * 5 | * This program is free software; you can redistribute it and/or 6 | * modify it under the terms of the GNU General Public License 7 | * as published by the Free Software Foundation; either version 2 8 | * of the License, or (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program; if not, write to the Free Software 17 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 18 | * 19 | * In addition, as a special exception, the copyright holders give permission to 20 | * link this program with the OpenSSL project's "OpenSSL" library (or with 21 | * modified versions of it that use the same license as the "OpenSSL" library), 22 | * and distribute the linked executables. You must obey the GNU General Public 23 | * License in all respects for all of the code used other than "OpenSSL". If you 24 | * modify file(s), you may extend this exception to your version of the file(s), 25 | * but you are not obligated to do so. If you do not wish to do so, delete this 26 | * exception statement from your version. 27 | * 28 | * Contact : chris@qbittorrent.org 29 | */ 30 | 31 | #include 32 | 33 | #if defined(Q_OS_X11) && defined(QT_DBUS_LIB) 34 | #include "powermanagement_x11.h" 35 | #endif 36 | #include "powermanagement.h" 37 | 38 | #ifdef Q_OS_MAC 39 | #include 40 | #endif 41 | 42 | #ifdef Q_OS_WIN 43 | #include 44 | #endif 45 | 46 | PowerManagement::PowerManagement(QObject *parent) : QObject(parent), m_busy(false) 47 | { 48 | #if defined(Q_OS_X11) && defined(QT_DBUS_LIB) 49 | m_inhibitor = new PowerManagementInhibitor(this); 50 | #endif 51 | } 52 | 53 | PowerManagement::~PowerManagement() 54 | { 55 | } 56 | 57 | void PowerManagement::setActivityState(bool busy) 58 | { 59 | if (busy) setBusy(); 60 | else setIdle(); 61 | } 62 | 63 | void PowerManagement::setBusy() 64 | { 65 | if (m_busy) return; 66 | m_busy = true; 67 | 68 | #ifdef Q_OS_WIN 69 | SetThreadExecutionState(ES_CONTINUOUS | ES_SYSTEM_REQUIRED); 70 | #elif defined(Q_OS_X11) && defined(QT_DBUS_LIB) 71 | m_inhibitor->RequestBusy(); 72 | #elif defined(Q_OS_MAC) 73 | IOReturn success = IOPMAssertionCreate(kIOPMAssertionTypeNoIdleSleep, kIOPMAssertionLevelOn, &m_assertionID); 74 | if (success != kIOReturnSuccess) m_busy = false; 75 | #endif 76 | } 77 | 78 | void PowerManagement::setIdle() 79 | { 80 | if (!m_busy) return; 81 | m_busy = false; 82 | 83 | #ifdef Q_OS_WIN 84 | SetThreadExecutionState(ES_CONTINUOUS); 85 | #elif defined(Q_OS_X11) && defined(QT_DBUS_LIB) 86 | m_inhibitor->RequestIdle(); 87 | #elif defined(Q_OS_MAC) 88 | IOPMAssertionRelease(m_assertionID); 89 | #endif 90 | } 91 | -------------------------------------------------------------------------------- /src/powermanagement/powermanagement.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Bittorrent Client using Qt4 and libtorrent. 3 | * Copyright (C) 2011 Vladimir Golovnev 4 | * 5 | * This program is free software; you can redistribute it and/or 6 | * modify it under the terms of the GNU General Public License 7 | * as published by the Free Software Foundation; either version 2 8 | * of the License, or (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program; if not, write to the Free Software 17 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 18 | * 19 | * In addition, as a special exception, the copyright holders give permission to 20 | * link this program with the OpenSSL project's "OpenSSL" library (or with 21 | * modified versions of it that use the same license as the "OpenSSL" library), 22 | * and distribute the linked executables. You must obey the GNU General Public 23 | * License in all respects for all of the code used other than "OpenSSL". If you 24 | * modify file(s), you may extend this exception to your version of the file(s), 25 | * but you are not obligated to do so. If you do not wish to do so, delete this 26 | * exception statement from your version. 27 | * 28 | * Contact : chris@qbittorrent.org 29 | */ 30 | 31 | #ifndef POWERMANAGEMENT_H 32 | #define POWERMANAGEMENT_H 33 | 34 | #include 35 | 36 | #ifdef Q_OS_MAC 37 | // Require Mac OS X >= 10.5 38 | #include 39 | #endif 40 | 41 | #if defined(Q_OS_X11) && defined(QT_DBUS_LIB) 42 | // Require DBus 43 | class PowerManagementInhibitor; 44 | #endif 45 | 46 | class PowerManagement : public QObject 47 | { 48 | Q_OBJECT 49 | 50 | public: 51 | PowerManagement(QObject *parent = 0); 52 | virtual ~PowerManagement(); 53 | 54 | void setActivityState(bool busy); 55 | 56 | private: 57 | bool m_busy; 58 | 59 | void setBusy(); 60 | void setIdle(); 61 | 62 | #if defined(Q_OS_X11) && defined(QT_DBUS_LIB) 63 | PowerManagementInhibitor *m_inhibitor; 64 | #endif 65 | #ifdef Q_OS_MAC 66 | IOPMAssertionID m_assertionID; 67 | #endif 68 | }; 69 | 70 | #endif // POWERMANAGEMENT_H 71 | -------------------------------------------------------------------------------- /src/powermanagement/powermanagement.pri: -------------------------------------------------------------------------------- 1 | INCLUDEPATH += $$PWD 2 | 3 | HEADERS += $$PWD/powermanagement.h 4 | SOURCES += $$PWD/powermanagement.cpp 5 | 6 | unix:!macx:dbus { 7 | HEADERS += $$PWD/powermanagement_x11.h 8 | SOURCES += $$PWD/powermanagement_x11.cpp 9 | } 10 | -------------------------------------------------------------------------------- /src/powermanagement/powermanagement_x11.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Bittorrent Client using Qt4 and libtorrent. 3 | * Copyright (C) 2011 Vladimir Golovnev 4 | * 5 | * This program is free software; you can redistribute it and/or 6 | * modify it under the terms of the GNU General Public License 7 | * as published by the Free Software Foundation; either version 2 8 | * of the License, or (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program; if not, write to the Free Software 17 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 18 | * 19 | * In addition, as a special exception, the copyright holders give permission to 20 | * link this program with the OpenSSL project's "OpenSSL" library (or with 21 | * modified versions of it that use the same license as the "OpenSSL" library), 22 | * and distribute the linked executables. You must obey the GNU General Public 23 | * License in all respects for all of the code used other than "OpenSSL". If you 24 | * modify file(s), you may extend this exception to your version of the file(s), 25 | * but you are not obligated to do so. If you do not wish to do so, delete this 26 | * exception statement from your version. 27 | * 28 | * Contact : chris@qbittorrent.org 29 | */ 30 | 31 | #ifndef POWERMANAGEMENTINHIBITOR_H 32 | #define POWERMANAGEMENTINHIBITOR_H 33 | 34 | #include 35 | 36 | QT_BEGIN_NAMESPACE 37 | class QDBusPendingCallWatcher; 38 | QT_END_NAMESPACE 39 | 40 | class PowerManagementInhibitor : public QObject 41 | { 42 | Q_OBJECT 43 | 44 | public: 45 | PowerManagementInhibitor(QObject *parent = 0); 46 | virtual ~PowerManagementInhibitor(); 47 | 48 | void RequestIdle(); 49 | void RequestBusy(); 50 | 51 | private slots: 52 | void OnAsyncReply(QDBusPendingCallWatcher *call); 53 | 54 | private: 55 | enum _state 56 | { 57 | error, 58 | idle, 59 | request_busy, 60 | busy, 61 | request_idle 62 | }; 63 | 64 | enum _state m_state; 65 | enum _state m_intended_state; 66 | unsigned int m_cookie; 67 | 68 | bool m_use_gsm; 69 | }; 70 | 71 | #endif // POWERMANAGEMENTINHIBITOR_H 72 | -------------------------------------------------------------------------------- /src/preferences/preferences.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Bittorrent Client using Qt4 and libtorrent. 3 | * Copyright (C) 2006 Christophe Dumez 4 | * 5 | * This program is free software; you can redistribute it and/or 6 | * modify it under the terms of the GNU General Public License 7 | * as published by the Free Software Foundation; either version 2 8 | * of the License, or (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program; if not, write to the Free Software 17 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 18 | * 19 | * In addition, as a special exception, the copyright holders give permission to 20 | * link this program with the OpenSSL project's "OpenSSL" library (or with 21 | * modified versions of it that use the same license as the "OpenSSL" library), 22 | * and distribute the linked executables. You must obey the GNU General Public 23 | * License in all respects for all of the code used other than "OpenSSL". If you 24 | * modify file(s), you may extend this exception to your version of the file(s), 25 | * but you are not obligated to do so. If you do not wish to do so, delete this 26 | * exception statement from your version. 27 | * 28 | * Contact : chris@qbittorrent.org 29 | */ 30 | 31 | #ifndef PREFERENCES_H 32 | #define PREFERENCES_H 33 | 34 | #include 35 | #include 36 | #include "qinisettings.h" 37 | #include "misc.h" 38 | 39 | class Preferences : public QIniSettings { 40 | Q_DISABLE_COPY(Preferences) 41 | 42 | public: 43 | Preferences() : QIniSettings(COMPANY_NAME, PRODUCT_NAME){} 44 | 45 | public: 46 | bool confirmOnExit() const; 47 | void setConfirmOnExit(bool); 48 | 49 | bool displaySpeedInTitle() const; 50 | void setDisplaySpeedInTitle(bool); 51 | 52 | QString serverHost() const; 53 | int serverPort() const; 54 | 55 | int listenPort() const; 56 | void setListenPort(int); 57 | 58 | QString nick() const; 59 | void setNick(const QString& nick); 60 | 61 | QString userHash() const; 62 | void setUserHash(const QString&); 63 | 64 | bool forwardPort() const; 65 | void setForwardPort(bool); 66 | 67 | QString inputDir() const; 68 | void setInputDir(const QString&); 69 | 70 | bool sysTrayAvailable() const; 71 | void setSysTrayAvailable(bool); 72 | 73 | bool showAllTransfers() const; 74 | void setShowAllTransfers(bool); 75 | 76 | void setLocale(const QString&); 77 | QString getLocale() const; 78 | 79 | bool pausedTransfersFromCollection() const; 80 | void setPausedTransfersFromCollection(bool); 81 | 82 | #ifdef Q_OS_WIN 83 | static bool isFileAssocSet(const QString& file); 84 | static void setFileAssoc(const QString& file, bool set); 85 | static void setCommonAssocSection(bool set); 86 | static bool isLinkAssocSet(const QString& link); 87 | static void setLinkAssoc(const QString& link, bool set); 88 | #endif 89 | }; 90 | 91 | #endif // PREFERENCES_H 92 | -------------------------------------------------------------------------------- /src/preferences/preferences.pri: -------------------------------------------------------------------------------- 1 | INCLUDEPATH += $$PWD 2 | 3 | HEADERS += $$PWD/preferences.h \ 4 | $$PWD/preferences_widget.h 5 | 6 | SOURCES += \ 7 | $$PWD/preferences_widget.cpp \ 8 | $$PWD/preferences.cpp 9 | 10 | FORMS += \ 11 | $$PWD/preferences_widget.ui 12 | 13 | -------------------------------------------------------------------------------- /src/preferences/preferences_widget.h: -------------------------------------------------------------------------------- 1 | #ifndef PREFERENCES_WIDGET_H 2 | #define PREFERENCES_WIDGET_H 3 | 4 | #include 5 | 6 | #include "ui_preferences_widget.h" 7 | 8 | class preferences_widget : public QWidget, private Ui::preferences_widget { 9 | Q_OBJECT 10 | 11 | public: 12 | explicit preferences_widget(QWidget *parent = 0); 13 | ~preferences_widget(); 14 | 15 | void setLocale(const QString&); 16 | private: 17 | void restoreFromPref(); 18 | private slots: 19 | void on_btnOk_clicked(); 20 | void on_btnCancel_clicked(); 21 | void enableApplyButtons(); 22 | void disableApplyButtons(); 23 | void on_browseSaveDirButton_clicked(); 24 | }; 25 | 26 | #endif // PREFERENCES_WIDGET_H 27 | -------------------------------------------------------------------------------- /src/qinisettings.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Bittorrent Client using Qt4 and libtorrent. 3 | * Copyright (C) 2006 Christophe Dumez 4 | * 5 | * This program is free software; you can redistribute it and/or 6 | * modify it under the terms of the GNU General Public License 7 | * as published by the Free Software Foundation; either version 2 8 | * of the License, or (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program; if not, write to the Free Software 17 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 18 | * 19 | * In addition, as a special exception, the copyright holders give permission to 20 | * link this program with the OpenSSL project's "OpenSSL" library (or with 21 | * modified versions of it that use the same license as the "OpenSSL" library), 22 | * and distribute the linked executables. You must obey the GNU General Public 23 | * License in all respects for all of the code used other than "OpenSSL". If you 24 | * modify file(s), you may extend this exception to your version of the file(s), 25 | * but you are not obligated to do so. If you do not wish to do so, delete this 26 | * exception statement from your version. 27 | * 28 | * Contact : chris@qbittorrent.org 29 | */ 30 | 31 | #ifndef QINISETTINGS_H 32 | #define QINISETTINGS_H 33 | 34 | #include 35 | 36 | class QIniSettings : public QSettings { 37 | Q_OBJECT 38 | Q_DISABLE_COPY (QIniSettings) 39 | 40 | public: 41 | QIniSettings(const QString &organization, const QString &application = QString(), QObject *parent = 0 ): 42 | #ifdef Q_OS_WIN 43 | QSettings(QSettings::IniFormat, QSettings::UserScope, organization, application, parent) 44 | #else 45 | QSettings(organization, application, parent) 46 | #endif 47 | { 48 | 49 | } 50 | 51 | QIniSettings(const QString &fileName, Format format, QObject *parent = 0 ) : QSettings(fileName, format, parent) { 52 | 53 | } 54 | 55 | #ifdef Q_OS_WIN 56 | QVariant value(const QString & key, const QVariant &defaultValue = QVariant()) const { 57 | QString key_tmp(key); 58 | QVariant ret = QSettings::value(key_tmp); 59 | if (ret.isNull()) 60 | return defaultValue; 61 | return ret; 62 | } 63 | 64 | void setValue(const QString &key, const QVariant &val) { 65 | QString key_tmp(key); 66 | if (format() == QSettings::NativeFormat) 67 | key_tmp.replace("\\", "/"); 68 | QSettings::setValue(key_tmp, val); 69 | } 70 | #endif 71 | }; 72 | 73 | #endif // QINISETTINGS_H 74 | -------------------------------------------------------------------------------- /src/qmacapplication.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Bittorrent Client using Qt4 and libtorrent. 3 | * Copyright (C) 2010 Christophe Dumez 4 | * 5 | * This program is free software; you can redistribute it and/or 6 | * modify it under the terms of the GNU General Public License 7 | * as published by the Free Software Foundation; either version 2 8 | * of the License, or (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program; if not, write to the Free Software 17 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 18 | * 19 | * In addition, as a special exception, the copyright holders give permission to 20 | * link this program with the OpenSSL project's "OpenSSL" library (or with 21 | * modified versions of it that use the same license as the "OpenSSL" library), 22 | * and distribute the linked executables. You must obey the GNU General Public 23 | * License in all respects for all of the code used other than "OpenSSL". If you 24 | * modify file(s), you may extend this exception to your version of the file(s), 25 | * but you are not obligated to do so. If you do not wish to do so, delete this 26 | * exception statement from your version. 27 | * 28 | * Contact : chris@qbittorrent.org 29 | */ 30 | 31 | #include 32 | #include 33 | #include 34 | #include "qmacapplication.h" 35 | 36 | QMacApplication::QMacApplication(QString appid, int &argc, char** argv) : 37 | QtSingleApplication(appid, argc, argv) 38 | { 39 | qDebug("Constructing a QMacApplication to receive file open events"); 40 | } 41 | 42 | bool QMacApplication::event(QEvent * ev) { 43 | if (ev->type() == QEvent::FileOpen) { 44 | QFileOpenEvent *file_event = static_cast(ev); 45 | if (!file_event->url().isEmpty()) { 46 | QString path = QUrl::fromPercentEncoding(file_event->url().toEncoded().data()); 47 | qDebug("Received a mac file open event: %s", qPrintable(path)); 48 | emit newFileOpenMacEvent(path); 49 | return true; 50 | } 51 | } else { 52 | return QtSingleApplication::event(ev); 53 | } 54 | } 55 | 56 | -------------------------------------------------------------------------------- /src/qmacapplication.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Bittorrent Client using Qt4 and libtorrent. 3 | * Copyright (C) 2010 Christophe Dumez 4 | * 5 | * This program is free software; you can redistribute it and/or 6 | * modify it under the terms of the GNU General Public License 7 | * as published by the Free Software Foundation; either version 2 8 | * of the License, or (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program; if not, write to the Free Software 17 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 18 | * 19 | * In addition, as a special exception, the copyright holders give permission to 20 | * link this program with the OpenSSL project's "OpenSSL" library (or with 21 | * modified versions of it that use the same license as the "OpenSSL" library), 22 | * and distribute the linked executables. You must obey the GNU General Public 23 | * License in all respects for all of the code used other than "OpenSSL". If you 24 | * modify file(s), you may extend this exception to your version of the file(s), 25 | * but you are not obligated to do so. If you do not wish to do so, delete this 26 | * exception statement from your version. 27 | * 28 | * Contact : chris@qbittorrent.org 29 | */ 30 | #ifndef QMACAPPLICATION_H 31 | #define QMACAPPLICATION_H 32 | 33 | #include "qtsingleapplication.h" 34 | 35 | class QMacApplication : public QtSingleApplication 36 | { 37 | Q_OBJECT 38 | public: 39 | explicit QMacApplication(QString appid, int &argc, char** argv); 40 | 41 | signals: 42 | void newFileOpenMacEvent(const QString &path); 43 | 44 | protected: 45 | bool event(QEvent *); 46 | 47 | }; 48 | 49 | #endif // QMACAPPLICATION_H 50 | -------------------------------------------------------------------------------- /src/qtlibed2k/qed2kpeerhandle.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #include "qed2kpeerhandle.h" 4 | #include "qed2ksession.h" 5 | #ifndef Q_MOC_RUN 6 | #include "libed2k/error_code.hpp" 7 | #endif 8 | 9 | #define PEER_ACTION(action, data) 10 | 11 | 12 | 13 | QED2KPeerHandle::QED2KPeerHandle(const libed2k::peer_connection_handle& pch) : m_delegate(pch) 14 | { 15 | } 16 | 17 | QED2KPeerHandle::~QED2KPeerHandle() 18 | { 19 | } 20 | 21 | void QED2KPeerHandle::sendMessageToPeer(const QString& strMessage) 22 | { 23 | PEER_ACTION(send_message, strMessage.toUtf8().constData()) 24 | } 25 | 26 | bool QED2KPeerHandle::isAllowedSharedFilesView() 27 | { 28 | return (m_delegate.get_misc_options().m_nNoViewSharedFiles == 0); 29 | } 30 | 31 | void QED2KPeerHandle::requestDirs() 32 | { 33 | PEER_ACTION(get_shared_directories, ); 34 | } 35 | 36 | void QED2KPeerHandle::requestFiles(QString dirName) 37 | { 38 | PEER_ACTION(get_shared_directory_files, dirName.toUtf8().constData()); 39 | } 40 | 41 | void QED2KPeerHandle::requestDirFiles(QString dirHash) 42 | { 43 | PEER_ACTION(get_ismod_directory, libed2k::md4_hash::fromString(dirHash.toStdString())); 44 | } 45 | 46 | QString QED2KPeerHandle::getUserName() 47 | { 48 | return QString::fromUtf8(m_delegate.get_options().m_strName.c_str()); 49 | } 50 | 51 | libed2k::md4_hash QED2KPeerHandle::getHash() 52 | { 53 | libed2k::md4_hash hash; 54 | try 55 | { 56 | hash = m_delegate.get_hash(); 57 | } 58 | catch(libed2k::libed2k_exception& e) 59 | { 60 | } 61 | return hash; 62 | } 63 | 64 | libed2k::peer_connection_options QED2KPeerHandle::getConnectionOptions() 65 | { 66 | libed2k::peer_connection_options options; 67 | try 68 | { 69 | options = m_delegate.get_options(); 70 | } 71 | catch(libed2k::libed2k_exception& e) 72 | { 73 | } 74 | return options; 75 | } 76 | -------------------------------------------------------------------------------- /src/qtlibed2k/qed2kpeerhandle.h: -------------------------------------------------------------------------------- 1 | #ifndef QED2KPEERHANDLE_H 2 | #define QED2KPEERHANDLE_H 3 | 4 | #ifndef Q_MOC_RUN 5 | #include 6 | #endif 7 | 8 | class QED2KPeerHandle { 9 | public: 10 | QED2KPeerHandle(const libed2k::peer_connection_handle& pch); 11 | ~QED2KPeerHandle(); 12 | 13 | void sendMessageToPeer(const QString& strMessage); 14 | bool isAllowedSharedFilesView(); 15 | void requestDirs(); 16 | void requestFiles(QString dirName); 17 | void requestDirFiles(QString dirHash); 18 | QString getUserName(); 19 | 20 | libed2k::md4_hash getHash(); 21 | 22 | libed2k::peer_connection_options getConnectionOptions(); 23 | 24 | private: 25 | libed2k::peer_connection_handle m_delegate; 26 | }; 27 | 28 | #endif // QED2KPEERHANDLE_H 29 | -------------------------------------------------------------------------------- /src/qtlibed2k/qtlibed2k.pri: -------------------------------------------------------------------------------- 1 | INCLUDEPATH += $$PWD 2 | 3 | HEADERS += $$PWD/qed2ksession.h \ 4 | $$PWD/qed2khandle.h\ 5 | $$PWD/qed2kpeerhandle.h \ 6 | $$PWD/transferspeedmonitor.h 7 | 8 | SOURCES += $$PWD/qed2ksession.cpp \ 9 | $$PWD/qed2khandle.cpp\ 10 | $$PWD/qed2kpeerhandle.cpp \ 11 | $$PWD/transferspeedmonitor.cpp 12 | -------------------------------------------------------------------------------- /src/qtlibed2k/transferspeedmonitor.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Bittorrent Client using Qt4 and libtorrent. 3 | * Copyright (C) 2011 Christophe Dumez 4 | * 5 | * This program is free software; you can redistribute it and/or 6 | * modify it under the terms of the GNU General Public License 7 | * as published by the Free Software Foundation; either version 2 8 | * of the License, or (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program; if not, write to the Free Software 17 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 18 | * 19 | * In addition, as a special exception, the copyright holders give permission to 20 | * link this program with the OpenSSL project's "OpenSSL" library (or with 21 | * modified versions of it that use the same license as the "OpenSSL" library), 22 | * and distribute the linked executables. You must obey the GNU General Public 23 | * License in all respects for all of the code used other than "OpenSSL". If you 24 | * modify file(s), you may extend this exception to your version of the file(s), 25 | * but you are not obligated to do so. If you do not wish to do so, delete this 26 | * exception statement from your version. 27 | * 28 | * Contact : chris@qbittorrent.org 29 | */ 30 | 31 | #ifndef TORRENTSPEEDMONITOR_H 32 | #define TORRENTSPEEDMONITOR_H 33 | 34 | #include 35 | #include 36 | #include 37 | #include 38 | #include 39 | 40 | class QED2KHandle; 41 | class SpeedSample; 42 | class QED2KSession; 43 | 44 | class TransferSpeedMonitor : public QThread 45 | { 46 | Q_OBJECT 47 | 48 | public: 49 | explicit TransferSpeedMonitor(QED2KSession* session); 50 | ~TransferSpeedMonitor(); 51 | qlonglong getETA(const QString &hash) const; 52 | 53 | protected: 54 | void run(); 55 | 56 | private: 57 | void getSamples(); 58 | 59 | private slots: 60 | void removeSamples(const QString& hash); 61 | void removeSamples(const QED2KHandle& h); 62 | 63 | private: 64 | static const int sampling_interval = 1000; // 1s 65 | 66 | private: 67 | bool m_abort; 68 | QWaitCondition m_abortCond; 69 | QHash m_samples; 70 | mutable QMutex m_mutex; 71 | QED2KSession* m_session; 72 | }; 73 | 74 | #endif // TORRENTSPEEDMONITOR_H 75 | -------------------------------------------------------------------------------- /src/qtsingleapp/QtLockedFile: -------------------------------------------------------------------------------- 1 | #include "qtlockedfile.h" 2 | -------------------------------------------------------------------------------- /src/qtsingleapp/QtSingleApplication: -------------------------------------------------------------------------------- 1 | #include "qtsingleapplication.h" 2 | -------------------------------------------------------------------------------- /src/qtsingleapp/qtlocalpeer.h: -------------------------------------------------------------------------------- 1 | /**************************************************************************** 2 | ** 3 | ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). 4 | ** Contact: http://www.qt-project.org/legal 5 | ** 6 | ** This file is part of the Qt Solutions component. 7 | ** 8 | ** $QT_BEGIN_LICENSE:BSD$ 9 | ** You may use this file under the terms of the BSD license as follows: 10 | ** 11 | ** "Redistribution and use in source and binary forms, with or without 12 | ** modification, are permitted provided that the following conditions are 13 | ** met: 14 | ** * Redistributions of source code must retain the above copyright 15 | ** notice, this list of conditions and the following disclaimer. 16 | ** * Redistributions in binary form must reproduce the above copyright 17 | ** notice, this list of conditions and the following disclaimer in 18 | ** the documentation and/or other materials provided with the 19 | ** distribution. 20 | ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names 21 | ** of its contributors may be used to endorse or promote products derived 22 | ** from this software without specific prior written permission. 23 | ** 24 | ** 25 | ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 26 | ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 27 | ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 28 | ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 29 | ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 30 | ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 31 | ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 32 | ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 33 | ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 34 | ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 35 | ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." 36 | ** 37 | ** $QT_END_LICENSE$ 38 | ** 39 | ****************************************************************************/ 40 | 41 | #ifndef QTLOCALPEER_H 42 | #define QTLOCALPEER_H 43 | 44 | #include 45 | #include 46 | #include 47 | 48 | #include "qtlockedfile.h" 49 | 50 | class QtLocalPeer : public QObject 51 | { 52 | Q_OBJECT 53 | 54 | public: 55 | QtLocalPeer(QObject *parent = 0, const QString &appId = QString()); 56 | bool isClient(); 57 | bool sendMessage(const QString &message, int timeout); 58 | QString applicationId() const 59 | { return id; } 60 | 61 | Q_SIGNALS: 62 | void messageReceived(const QString &message); 63 | 64 | protected Q_SLOTS: 65 | void receiveConnection(); 66 | 67 | protected: 68 | QString id; 69 | QString socketName; 70 | QLocalServer* server; 71 | QtLP_Private::QtLockedFile lockFile; 72 | 73 | private: 74 | static const char* ack; 75 | }; 76 | 77 | #endif // QTLOCALPEER_H 78 | -------------------------------------------------------------------------------- /src/qtsingleapp/qtlockedfile.h: -------------------------------------------------------------------------------- 1 | /**************************************************************************** 2 | ** 3 | ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). 4 | ** Contact: http://www.qt-project.org/legal 5 | ** 6 | ** This file is part of the Qt Solutions component. 7 | ** 8 | ** $QT_BEGIN_LICENSE:BSD$ 9 | ** You may use this file under the terms of the BSD license as follows: 10 | ** 11 | ** "Redistribution and use in source and binary forms, with or without 12 | ** modification, are permitted provided that the following conditions are 13 | ** met: 14 | ** * Redistributions of source code must retain the above copyright 15 | ** notice, this list of conditions and the following disclaimer. 16 | ** * Redistributions in binary form must reproduce the above copyright 17 | ** notice, this list of conditions and the following disclaimer in 18 | ** the documentation and/or other materials provided with the 19 | ** distribution. 20 | ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names 21 | ** of its contributors may be used to endorse or promote products derived 22 | ** from this software without specific prior written permission. 23 | ** 24 | ** 25 | ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 26 | ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 27 | ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 28 | ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 29 | ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 30 | ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 31 | ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 32 | ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 33 | ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 34 | ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 35 | ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." 36 | ** 37 | ** $QT_END_LICENSE$ 38 | ** 39 | ****************************************************************************/ 40 | 41 | #ifndef QTLOCKEDFILE_H 42 | #define QTLOCKEDFILE_H 43 | 44 | #include 45 | #ifdef Q_OS_WIN 46 | #include 47 | #endif 48 | 49 | #if defined(Q_OS_WIN) 50 | # if !defined(QT_QTLOCKEDFILE_EXPORT) && !defined(QT_QTLOCKEDFILE_IMPORT) 51 | # define QT_QTLOCKEDFILE_EXPORT 52 | # elif defined(QT_QTLOCKEDFILE_IMPORT) 53 | # if defined(QT_QTLOCKEDFILE_EXPORT) 54 | # undef QT_QTLOCKEDFILE_EXPORT 55 | # endif 56 | # define QT_QTLOCKEDFILE_EXPORT __declspec(dllimport) 57 | # elif defined(QT_QTLOCKEDFILE_EXPORT) 58 | # undef QT_QTLOCKEDFILE_EXPORT 59 | # define QT_QTLOCKEDFILE_EXPORT __declspec(dllexport) 60 | # endif 61 | #else 62 | # define QT_QTLOCKEDFILE_EXPORT 63 | #endif 64 | 65 | namespace QtLP_Private { 66 | 67 | class QT_QTLOCKEDFILE_EXPORT QtLockedFile : public QFile 68 | { 69 | public: 70 | enum LockMode { NoLock = 0, ReadLock, WriteLock }; 71 | 72 | QtLockedFile(); 73 | QtLockedFile(const QString &name); 74 | ~QtLockedFile(); 75 | 76 | bool open(OpenMode mode); 77 | 78 | bool lock(LockMode mode, bool block = true); 79 | bool unlock(); 80 | bool isLocked() const; 81 | LockMode lockMode() const; 82 | 83 | private: 84 | #ifdef Q_OS_WIN 85 | Qt::HANDLE wmutex; 86 | Qt::HANDLE rmutex; 87 | QVector rmutexes; 88 | QString mutexname; 89 | 90 | Qt::HANDLE getMutexHandle(int idx, bool doCreate); 91 | bool waitMutex(Qt::HANDLE mutex, bool doBlock); 92 | 93 | #endif 94 | LockMode m_lock_mode; 95 | }; 96 | } 97 | #endif 98 | -------------------------------------------------------------------------------- /src/qtsingleapp/qtsingleapplication.pri: -------------------------------------------------------------------------------- 1 | INCLUDEPATH += $$PWD 2 | DEPENDPATH += $$PWD 3 | QT *= network 4 | greaterThan(QT_MAJOR_VERSION, 4): QT *= widgets 5 | 6 | qtsingleapplication-uselib:!qtsingleapplication-buildlib { 7 | LIBS += -L$$QTSINGLEAPPLICATION_LIBDIR -l$$QTSINGLEAPPLICATION_LIBNAME 8 | } else { 9 | SOURCES += $$PWD/qtsingleapplication.cpp $$PWD/qtlocalpeer.cpp 10 | HEADERS += $$PWD/qtsingleapplication.h $$PWD/qtlocalpeer.h 11 | } 12 | 13 | win32 { 14 | contains(TEMPLATE, lib):contains(CONFIG, shared):DEFINES += QT_QTSINGLEAPPLICATION_EXPORT 15 | else:qtsingleapplication-uselib:DEFINES += QT_QTSINGLEAPPLICATION_IMPORT 16 | } 17 | -------------------------------------------------------------------------------- /src/qtsingleapp/qtsinglecoreapplication.h: -------------------------------------------------------------------------------- 1 | /**************************************************************************** 2 | ** 3 | ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). 4 | ** Contact: http://www.qt-project.org/legal 5 | ** 6 | ** This file is part of the Qt Solutions component. 7 | ** 8 | ** $QT_BEGIN_LICENSE:BSD$ 9 | ** You may use this file under the terms of the BSD license as follows: 10 | ** 11 | ** "Redistribution and use in source and binary forms, with or without 12 | ** modification, are permitted provided that the following conditions are 13 | ** met: 14 | ** * Redistributions of source code must retain the above copyright 15 | ** notice, this list of conditions and the following disclaimer. 16 | ** * Redistributions in binary form must reproduce the above copyright 17 | ** notice, this list of conditions and the following disclaimer in 18 | ** the documentation and/or other materials provided with the 19 | ** distribution. 20 | ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names 21 | ** of its contributors may be used to endorse or promote products derived 22 | ** from this software without specific prior written permission. 23 | ** 24 | ** 25 | ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 26 | ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 27 | ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 28 | ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 29 | ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 30 | ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 31 | ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 32 | ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 33 | ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 34 | ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 35 | ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." 36 | ** 37 | ** $QT_END_LICENSE$ 38 | ** 39 | ****************************************************************************/ 40 | 41 | #ifndef QTSINGLECOREAPPLICATION_H 42 | #define QTSINGLECOREAPPLICATION_H 43 | 44 | #include 45 | 46 | class QtLocalPeer; 47 | 48 | class QtSingleCoreApplication : public QCoreApplication 49 | { 50 | Q_OBJECT 51 | 52 | public: 53 | QtSingleCoreApplication(int &argc, char **argv); 54 | QtSingleCoreApplication(const QString &id, int &argc, char **argv); 55 | 56 | bool isRunning(); 57 | QString id() const; 58 | 59 | public Q_SLOTS: 60 | bool sendMessage(const QString &message, int timeout = 5000); 61 | 62 | 63 | Q_SIGNALS: 64 | void messageReceived(const QString &message); 65 | 66 | 67 | private: 68 | QtLocalPeer* peer; 69 | }; 70 | 71 | #endif // QTSINGLECOREAPPLICATION_H 72 | -------------------------------------------------------------------------------- /src/qtsingleapp/qtsinglecoreapplication.pri: -------------------------------------------------------------------------------- 1 | INCLUDEPATH += $$PWD 2 | DEPENDPATH += $$PWD 3 | HEADERS += $$PWD/qtsinglecoreapplication.h $$PWD/qtlocalpeer.h 4 | SOURCES += $$PWD/qtsinglecoreapplication.cpp $$PWD/qtlocalpeer.cpp 5 | 6 | QT *= network 7 | 8 | win32:contains(TEMPLATE, lib):contains(CONFIG, shared) { 9 | DEFINES += QT_QTSINGLECOREAPPLICATION_EXPORT=__declspec(dllexport) 10 | } 11 | -------------------------------------------------------------------------------- /src/search/search.pri: -------------------------------------------------------------------------------- 1 | INCLUDEPATH += $$PWD 2 | 3 | HEADERS += $$PWD/search_widget_fp_model.h \ 4 | $$PWD/search_widget.h \ 5 | $$PWD/search_model.h 6 | 7 | SOURCES += $$PWD/search_widget_fp_model.cpp \ 8 | $$PWD/search_widget.cpp \ 9 | $$PWD/search_model.cpp 10 | 11 | FORMS += $$PWD/search_widget.ui 12 | 13 | 14 | -------------------------------------------------------------------------------- /src/search/search_model.h: -------------------------------------------------------------------------------- 1 | #ifndef __SEARCHMODEL_H 2 | #define __SEARCHMODEL_H 3 | 4 | #include 5 | #include 6 | #include "qed2ksession.h" 7 | 8 | class SearchModel : public QAbstractListModel { 9 | Q_OBJECT 10 | public: 11 | enum Roles { 12 | SortRole = Qt::UserRole + 1, 13 | NativeRole = Qt::UserRole + 2 14 | }; 15 | 16 | enum DisplayColumns { 17 | DC_NAME = 0, 18 | DC_FILESIZE, 19 | DC_SOURCES, 20 | DC_TYPE, 21 | DC_HASH, 22 | DC_MEDIA_BITRATE, 23 | DC_MEDIA_LENGTH, 24 | DC_MEDIA_CODEC, 25 | DC_END 26 | }; 27 | 28 | explicit SearchModel(QObject *parent = 0); 29 | int rowCount(const QModelIndex& parent = QModelIndex()) const; 30 | int columnCount(const QModelIndex& parent = QModelIndex()) const; 31 | QVariant data(const QModelIndex& index, int role) const; 32 | QVariant headerData(int section, Qt::Orientation orientation, int role) const; 33 | const QED2KSearchResultEntry& at(const QModelIndex& indx) const; 34 | QED2KSearchResultEntry& at(const QModelIndex& indx); 35 | 36 | void setSizeType(misc::SizeType); 37 | 38 | QString filename(const QModelIndex&) const; 39 | quint64 size(const QModelIndex&) const; 40 | QString hash(const QModelIndex&) const; 41 | quint64 complete_sources(const QModelIndex&) const; 42 | quint64 sources(const QModelIndex&) const; 43 | FileType type(const QModelIndex&) const; 44 | quint64 media_length(const QModelIndex&) const; 45 | quint64 media_bitrate(const QModelIndex&) const; 46 | QString media_codec(const QModelIndex&) const; 47 | 48 | void clean(); 49 | void removeIndex(int); 50 | void resetToIndex(int); 51 | int addDataTo(const QList&, int); 52 | void appendData(const QList&); 53 | void save(); 54 | void load(); 55 | int levels() const { return search_results.size(); } 56 | private: 57 | int currentIndex; 58 | misc::SizeType m_st; 59 | QList > search_results; 60 | QIcon iconAny; 61 | QIcon iconAudio; 62 | QIcon iconVideo; 63 | QIcon iconImage; 64 | QIcon iconCD; 65 | QIcon iconArchive; 66 | QIcon iconProgram; 67 | QIcon iconDoc; 68 | QIcon iconEM; 69 | signals: 70 | void countChanged(int); 71 | }; 72 | 73 | #endif // __SEARCHMODEL_H 74 | -------------------------------------------------------------------------------- /src/search/search_widget.h: -------------------------------------------------------------------------------- 1 | #ifndef SEARCH_WIDGET_H 2 | #define SEARCH_WIDGET_H 3 | 4 | #include "ui_search_widget.h" 5 | #include "search/search_model.h" 6 | #include "search_widget_fp_model.h" 7 | #include "qtlibed2k/qed2ksession.h" 8 | 9 | QT_BEGIN_NAMESPACE 10 | class QSortFilterProxyModel; 11 | class QStandardItemModel; 12 | QT_END_NAMESPACE 13 | 14 | class SWTabBar : public QTabBar { 15 | public: 16 | SWTabBar(QWidget* parent); 17 | protected: 18 | void mousePressEvent(QMouseEvent* event); 19 | }; 20 | 21 | class search_widget : public QWidget , private Ui::search_widget { 22 | Q_OBJECT 23 | 24 | private: 25 | QMenu* menuResults; 26 | QMenu* menuSubResults; 27 | SWTabBar* tabSearch; 28 | 29 | int nCurTabSearch; 30 | QString curSearchTitle; 31 | int nSortedColumn; 32 | 33 | SearchModel* model; 34 | SWSortFilterProxyModel* filterModel; 35 | QString m_lastSearchFileType; 36 | QMenu* fileMenu; 37 | public: 38 | search_widget(QWidget *parent = 0); 39 | void load(); 40 | void save() const; 41 | ~search_widget(); 42 | 43 | private: 44 | void addCondRow(); 45 | void showErrorParamMsg(int numParam); 46 | void updateDownloadControls(); 47 | 48 | void processSearchResult( 49 | const QList& vRes, boost::optional obMoreResult); 50 | QED2KHandle addTransfer(const QModelIndex& index); 51 | 52 | void warnDisconnected(); 53 | void prepareNewSearch(const QString& title); 54 | 55 | QModelIndex mapTosource(const QModelIndex& index) { 56 | if (index.isValid()) { 57 | return filterModel->mapToSource(index); 58 | } 59 | 60 | return QModelIndex(); 61 | } 62 | 63 | private slots: 64 | void itemCondClicked(QTableWidgetItem* item); 65 | void sortChanged(int logicalIndex, Qt::SortOrder order); 66 | void startSearch(); 67 | void continueSearch(); 68 | void cancelSearch(); 69 | void clearSearch(); 70 | void showOwn(int state); 71 | void searchRelatedFiles(); 72 | void closeTab(int index); 73 | void selectTab(int nTabNum); 74 | void setSizeType(); 75 | void searchTextChanged(const QString text); 76 | void displayListMenu(const QPoint&); 77 | 78 | void resultSelectionChanged(const QItemSelection& sel, const QItemSelection& unsel); 79 | 80 | QList on_actionDownload_triggered(); 81 | void on_actionDownload_pause_triggered(); 82 | void on_actionPreview_triggered(); 83 | void on_actionClose_all_triggered(); 84 | void on_actionED2K_link_triggered(); 85 | 86 | void displayHSMenu(const QPoint&); 87 | 88 | void ed2kSearchFinished(const libed2k::net_identifier& np,const QString& hash, 89 | const QList& vRes, bool bMoreResult); 90 | void addedTransfer(QED2KHandle h); 91 | void deletedTransfer(const QString& hash); 92 | 93 | void modelCountChanged(int); 94 | void on_actionSearch_related_triggered(); 95 | }; 96 | 97 | #endif // SEARCH_WIDGET_H 98 | -------------------------------------------------------------------------------- /src/search/search_widget_fp_model.cpp: -------------------------------------------------------------------------------- 1 | #include "search_widget_fp_model.h" 2 | #include "search_model.h" 3 | #include "qtlibed2k/qed2ksession.h" 4 | 5 | QChar getNextChar(const QString &s, int location) { 6 | return (location < s.length()) ? s.at(location) : QChar(); 7 | } 8 | 9 | int naturalCompare(const QString &s1, const QString &s2, Qt::CaseSensitivity cs) { 10 | for (int l1 = 0, l2 = 0; l1 <= s1.count() && l2 <= s2.count(); ++l1, ++l2) { 11 | // skip spaces, tabs and 0's 12 | QChar c1 = getNextChar(s1, l1); 13 | while (c1.isSpace()) 14 | c1 = getNextChar(s1, ++l1); 15 | QChar c2 = getNextChar(s2, l2); 16 | while (c2.isSpace()) 17 | c2 = getNextChar(s2, ++l2); 18 | 19 | if (c1.isDigit() && c2.isDigit()) { 20 | while (c1.digitValue() == 0) 21 | c1 = getNextChar(s1, ++l1); 22 | while (c2.digitValue() == 0) 23 | c2 = getNextChar(s2, ++l2); 24 | 25 | int lookAheadLocation1 = l1; 26 | int lookAheadLocation2 = l2; 27 | int currentReturnValue = 0; 28 | // find the last digit, setting currentReturnValue as we go if it isn't equal 29 | for ( 30 | QChar lookAhead1 = c1, lookAhead2 = c2; 31 | (lookAheadLocation1 <= s1.length() && lookAheadLocation2 <= s2.length()); 32 | lookAhead1 = getNextChar(s1, ++lookAheadLocation1), 33 | lookAhead2 = getNextChar(s2, ++lookAheadLocation2) 34 | ) { 35 | bool is1ADigit = !lookAhead1.isNull() && lookAhead1.isDigit(); 36 | bool is2ADigit = !lookAhead2.isNull() && lookAhead2.isDigit(); 37 | if (!is1ADigit && !is2ADigit) 38 | break; 39 | if (!is1ADigit) 40 | return -1; 41 | if (!is2ADigit) 42 | return 1; 43 | if (currentReturnValue == 0) { 44 | if (lookAhead1 < lookAhead2) { 45 | currentReturnValue = -1; 46 | } else if (lookAhead1 > lookAhead2) { 47 | currentReturnValue = 1; 48 | } 49 | } 50 | } 51 | if (currentReturnValue != 0) 52 | return currentReturnValue; 53 | } 54 | 55 | if (cs == Qt::CaseInsensitive) { 56 | if (!c1.isLower()) c1 = c1.toLower(); 57 | if (!c2.isLower()) c2 = c2.toLower(); 58 | } 59 | int r = QString::localeAwareCompare(c1, c2); 60 | if (r < 0) 61 | return -1; 62 | if (r > 0) 63 | return 1; 64 | } 65 | // The two strings are the same (02 == 2) so fall back to the normal sort 66 | return QString::compare(s1, s2, cs); 67 | } 68 | 69 | SWSortFilterProxyModel::SWSortFilterProxyModel(QObject* parent): 70 | QSortFilterProxyModel(parent), m_showOwn(true) 71 | { 72 | setSortRole(SearchModel::SortRole); 73 | } 74 | 75 | bool SWSortFilterProxyModel::lessThan(const QModelIndex& left, const QModelIndex& right) const { 76 | if (left.column() == SearchModel::DC_NAME) { 77 | return (naturalCompare(sourceModel()->data(left, Qt::DisplayRole).toString(), 78 | sourceModel()->data(right, Qt::DisplayRole).toString(), 79 | Qt::CaseSensitive) < 0); 80 | } 81 | 82 | return QSortFilterProxyModel::lessThan(left, right); 83 | } 84 | 85 | void SWSortFilterProxyModel::showOwn(bool f) 86 | { 87 | m_showOwn = f; 88 | invalidateFilter(); 89 | } 90 | 91 | bool SWSortFilterProxyModel::filterAcceptsRow(int source_row, const QModelIndex& source_parent) const { 92 | if (!m_showOwn) { 93 | QString hash = sourceModel()->index(source_row, SearchModel::DC_HASH, source_parent).data().toString(); 94 | return !Session::instance()->getTransfer(hash).is_valid(); 95 | } 96 | return true; 97 | } 98 | -------------------------------------------------------------------------------- /src/search/search_widget_fp_model.h: -------------------------------------------------------------------------------- 1 | #ifndef __SW_FP_MODEL__ 2 | #define __SW_FP_MODEL__ 3 | 4 | #include 5 | 6 | class SWSortFilterProxyModel : public QSortFilterProxyModel 7 | { 8 | public: 9 | SWSortFilterProxyModel(QObject* parent = 0); 10 | virtual bool lessThan(const QModelIndex& left, const QModelIndex& right) const; 11 | void showOwn(bool f); 12 | protected: 13 | virtual bool filterAcceptsRow(int source_row, const QModelIndex& source_parent) const; 14 | 15 | private: 16 | bool m_showOwn; 17 | }; 18 | 19 | #endif //__SW_FP_MODEL__ 20 | -------------------------------------------------------------------------------- /src/sessionapplication.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Bittorrent Client using Qt4 and libtorrent. 3 | * Copyright (C) 2010 Christophe Dumez 4 | * 5 | * This program is free software; you can redistribute it and/or 6 | * modify it under the terms of the GNU General Public License 7 | * as published by the Free Software Foundation; either version 2 8 | * of the License, or (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program; if not, write to the Free Software 17 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 18 | * 19 | * In addition, as a special exception, the copyright holders give permission to 20 | * link this program with the OpenSSL project's "OpenSSL" library (or with 21 | * modified versions of it that use the same license as the "OpenSSL" library), 22 | * and distribute the linked executables. You must obey the GNU General Public 23 | * License in all respects for all of the code used other than "OpenSSL". If you 24 | * modify file(s), you may extend this exception to your version of the file(s), 25 | * but you are not obligated to do so. If you do not wish to do so, delete this 26 | * exception statement from your version. 27 | * 28 | * Contact : chris@qbittorrent.org 29 | */ 30 | 31 | #include "sessionapplication.h" 32 | 33 | SessionApplication::SessionApplication(const QString &id, int &argc, char **argv) : 34 | #ifdef Q_OS_MAC 35 | QMacApplication(id, argc, argv) 36 | #else 37 | QtSingleApplication(id, argc, argv) 38 | #endif 39 | {} 40 | 41 | void SessionApplication::commitData(QSessionManager & manager) { 42 | Q_UNUSED(manager); 43 | emit sessionIsShuttingDown(); 44 | } 45 | -------------------------------------------------------------------------------- /src/sessionapplication.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Bittorrent Client using Qt4 and libtorrent. 3 | * Copyright (C) 2010 Christophe Dumez 4 | * 5 | * This program is free software; you can redistribute it and/or 6 | * modify it under the terms of the GNU General Public License 7 | * as published by the Free Software Foundation; either version 2 8 | * of the License, or (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program; if not, write to the Free Software 17 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 18 | * 19 | * In addition, as a special exception, the copyright holders give permission to 20 | * link this program with the OpenSSL project's "OpenSSL" library (or with 21 | * modified versions of it that use the same license as the "OpenSSL" library), 22 | * and distribute the linked executables. You must obey the GNU General Public 23 | * License in all respects for all of the code used other than "OpenSSL". If you 24 | * modify file(s), you may extend this exception to your version of the file(s), 25 | * but you are not obligated to do so. If you do not wish to do so, delete this 26 | * exception statement from your version. 27 | * 28 | * Contact : chris@qbittorrent.org 29 | */ 30 | 31 | #ifndef SESSIONAPPLICATION_H 32 | #define SESSIONAPPLICATION_H 33 | 34 | #include 35 | 36 | #ifdef Q_OS_MAC 37 | #include "qmacapplication.h" 38 | #else 39 | #include "qtsingleapplication.h" 40 | #endif 41 | 42 | #include 43 | 44 | class SessionApplication : 45 | #ifdef Q_OS_MAC 46 | public QMacApplication 47 | #else 48 | public QtSingleApplication 49 | #endif 50 | { 51 | Q_OBJECT 52 | 53 | public: 54 | SessionApplication(const QString &id, int &argc, char **argv); 55 | void commitData(QSessionManager & manager); 56 | 57 | signals: 58 | void sessionIsShuttingDown(); 59 | }; 60 | 61 | #endif // SESSIONAPPLICATION_H 62 | -------------------------------------------------------------------------------- /src/src.pro: -------------------------------------------------------------------------------- 1 | # Global 2 | CONFIG += qt thread core gui 3 | TEMPLATE = app 4 | 5 | # Store temporary files in separate directories 6 | win32 { 7 | CONFIG(debug, release|debug):OBJECTS_DIR = tmp/debug 8 | CONFIG(release, release|debug):OBJECTS_DIR = tmp/release 9 | } else { 10 | OBJECTS_DIR = tmp 11 | } 12 | 13 | MOC_DIR = $$OBJECTS_DIR/moc 14 | RCC_DIR = $$OBJECTS_DIR/rcc 15 | UI_DIR = $$OBJECTS_DIR/uic 16 | 17 | CONFIG(inet) { 18 | DEFINES += INET_SERVER 19 | } 20 | 21 | greaterThan(QT_MAJOR_VERSION, 4) { 22 | QT += widgets 23 | DEFINES += HAVE_QT5 24 | } 25 | 26 | # Windows specific configuration 27 | win32 { 28 | include(win/conf.pri) 29 | } 30 | 31 | # Mac specific configuration 32 | #macx { 33 | # include(mac/conf.pri) 34 | #} 35 | 36 | # Unix specific configuration 37 | unix:!macx { 38 | include(unix/conf.pri) 39 | } 40 | 41 | TARGET = qDonkey 42 | LANG_PATH = lang 43 | ICONS_PATH = icons 44 | 45 | CONFIG(debug, debug|release):message(Project is built in DEBUG mode.) 46 | CONFIG(release, debug|release):message(Project is built in RELEASE mode.) 47 | 48 | # Disable debug output in release mode 49 | CONFIG(release, debug|release) { 50 | message(Disabling debug output.) 51 | DEFINES += QT_NO_DEBUG_OUTPUT 52 | } 53 | 54 | # VERSION DEFINES 55 | include(../version.pri) 56 | 57 | DEFINES += QT_NO_CAST_TO_ASCII 58 | # Fast concatenation (Qt >= 4.6) 59 | DEFINES += QT_USE_FAST_CONCATENATION QT_USE_FAST_OPERATOR_PLUS 60 | 61 | INCLUDEPATH += $$PWD 62 | 63 | RESOURCES += icons.qrc lang.qrc 64 | 65 | # Source code 66 | usesystemqtsingleapplication { 67 | CONFIG += qtsingleapplication 68 | } else { 69 | include(qtsingleapp/qtsingleapplication.pri) 70 | } 71 | 72 | # Mac specific configuration 73 | macx { 74 | include(mac/conf.pri) 75 | } 76 | 77 | 78 | include(qtlibed2k/qtlibed2k.pri) 79 | include(geoip/geoip.pri) 80 | include(preferences/preferences.pri) 81 | include(powermanagement/powermanagement.pri) 82 | include(search/search.pri) 83 | include(transfers/transfers.pri) 84 | include(statusbar/statusbar.pri) 85 | 86 | HEADERS += misc.h \ 87 | stacktrace.h \ 88 | qinisettings.h \ 89 | res.h \ 90 | ed2k_link_maker.h \ 91 | collection_save_dlg.h \ 92 | inputdir_dialog.h 93 | 94 | SOURCES += main.cpp \ 95 | misc.cpp \ 96 | ed2k_link_maker.cpp \ 97 | collection_save_dlg.cpp \ 98 | inputdir_dialog.cpp 99 | 100 | HEADERS += mainwindow.h\ 101 | ico.h \ 102 | sessionapplication.h \ 103 | iconprovider.h 104 | 105 | SOURCES += mainwindow.cpp \ 106 | ico.cpp \ 107 | sessionapplication.cpp \ 108 | iconprovider.cpp 109 | 110 | TRANSLATIONS = $$LANG_PATH/qDonkey_en.ts \ 111 | $$LANG_PATH/qDonkey_ru.ts \ 112 | $$LANG_PATH/qDonkey_it.ts 113 | 114 | FORMS += mainwindow.ui ed2k_link_maker.ui collection_save_dlg.ui \ 115 | inputdir_dialog.ui 116 | 117 | DESTDIR = ../ 118 | 119 | # OS specific config 120 | OTHER_FILES += win/conf.pri win/conf-msvc.pri mac/conf.pri unix/conf.pri ../version.pri 121 | -------------------------------------------------------------------------------- /src/stacktrace.h: -------------------------------------------------------------------------------- 1 | // stacktrace.h (c) 2008, Timo Bingmann from http://idlebox.net/ 2 | // published under the WTFPL v2.0 3 | 4 | #ifndef _STACKTRACE_H_ 5 | #define _STACKTRACE_H_ 6 | 7 | #include 8 | #include 9 | #include 10 | #include 11 | 12 | /** Print a demangled stack backtrace of the caller function to FILE* out. */ 13 | static inline void print_stacktrace(FILE *out = stderr, unsigned int max_frames = 63) 14 | { 15 | fprintf(out, "stack trace:\n"); 16 | 17 | // storage array for stack trace address data 18 | void* addrlist[max_frames+1]; 19 | 20 | // retrieve current stack addresses 21 | int addrlen = backtrace(addrlist, sizeof(addrlist) / sizeof(void*)); 22 | 23 | if (addrlen == 0) { 24 | fprintf(out, " \n"); 25 | return; 26 | } 27 | 28 | // resolve addresses into strings containing "filename(function+address)", 29 | // this array must be free()-ed 30 | char** symbollist = backtrace_symbols(addrlist, addrlen); 31 | 32 | // allocate string which will be filled with the demangled function name 33 | size_t funcnamesize = 256; 34 | char* funcname = (char*)malloc(funcnamesize); 35 | 36 | // iterate over the returned symbol lines. skip the first, it is the 37 | // address of this function. 38 | for (int i = 2; i < addrlen; i++) 39 | { 40 | char *begin_name = 0, *begin_offset = 0, *end_offset = 0; 41 | 42 | // find parentheses and +address offset surrounding the mangled name: 43 | // ./module(function+0x15c) [0x8048a6d] 44 | //fprintf(out, "%s TT\n", symbollist[i]); 45 | for (char *p = symbollist[i]; *p; ++p) 46 | { 47 | if (*p == '(') 48 | begin_name = p; 49 | else if (*p == '+') 50 | begin_offset = p; 51 | else if (*p == ')' && begin_offset) { 52 | end_offset = p; 53 | break; 54 | } 55 | } 56 | 57 | if (begin_name && begin_offset && end_offset 58 | && begin_name < begin_offset) 59 | { 60 | *begin_name++ = '\0'; 61 | *begin_offset++ = '\0'; 62 | *end_offset = '\0'; 63 | 64 | // mangled name is now in [begin_name, begin_offset) and caller 65 | // offset in [begin_offset, end_offset). now apply 66 | // __cxa_demangle(): 67 | 68 | int status; 69 | char* ret = abi::__cxa_demangle(begin_name, 70 | funcname, &funcnamesize, &status); 71 | if (status == 0) { 72 | funcname = ret; // use possibly realloc()-ed string 73 | fprintf(out, " %s : %s+%s %s\n", 74 | symbollist[i], funcname, begin_offset, ++end_offset); 75 | } 76 | else { 77 | // demangling failed. Output function name as a C function with 78 | // no arguments. 79 | fprintf(out, " %s : %s()+%s %s\n", 80 | symbollist[i], begin_name, begin_offset, ++end_offset); 81 | } 82 | } 83 | else 84 | { 85 | // couldn't parse the line? print the whole line. 86 | fprintf(out, " %s\n", symbollist[i]); 87 | } 88 | } 89 | 90 | free(funcname); 91 | free(symbollist); 92 | } 93 | 94 | #endif // _STACKTRACE_H_ 95 | -------------------------------------------------------------------------------- /src/statusbar/status_bar.cpp: -------------------------------------------------------------------------------- 1 | #include "status_bar.h" 2 | 3 | #include 4 | #include "misc.h" 5 | #include "res.h" 6 | 7 | status_bar::status_bar(QWidget *parent, QStatusBar *bar) 8 | : QWidget(parent) , m_bar(bar) 9 | { 10 | setupUi(this); 11 | 12 | m_bar->addPermanentWidget(this, 1); 13 | m_bar->setContentsMargins(-1, -1, -1, -1); 14 | m_bar->setFixedHeight(21); 15 | 16 | imgConnected.addFile(res::statusConnected(), QSize(), QIcon::Normal, QIcon::Off); 17 | imgDisconnected.addFile(res::statusDisconnected(), QSize(), QIcon::Normal, QIcon::Off); 18 | 19 | Up0Down0.addFile(res::statusUD00(), QSize(), QIcon::Normal, QIcon::Off); 20 | Up0Down1.addFile(res::statusUD01(), QSize(), QIcon::Normal, QIcon::Off); 21 | Up1Down0.addFile(res::statusUD10(), QSize(), QIcon::Normal, QIcon::Off); 22 | Up1Down1.addFile(res::statusUD11(), QSize(), QIcon::Normal, QIcon::Off); 23 | 24 | labelInfoImg->setPixmap(QIcon(":/emule/common/User.ico").pixmap(16,16)); 25 | 26 | reset(); 27 | } 28 | 29 | status_bar::~status_bar() 30 | { 31 | } 32 | 33 | void status_bar::setConnected(bool conn) 34 | { 35 | if (conn) 36 | { 37 | labelNetImg->setPixmap(imgConnected.pixmap(16, 16)); 38 | labelNet->setText(tr("eD2K:Connected")); 39 | labelNet->setToolTip(tr("eD2K:Connected")); 40 | } 41 | else 42 | { 43 | labelNetImg->setPixmap(imgDisconnected.pixmap(16, 16)); 44 | labelNet->setText(tr("eD2K:Disconnected")); 45 | labelNet->setToolTip(tr("eD2K:Disconnected")); 46 | labelInfo->clear(); 47 | labelServer->clear(); 48 | } 49 | } 50 | 51 | void status_bar::setUpDown(unsigned long nUp, unsigned long nDown) 52 | { 53 | QIcon icon = nUp > 0 ? (nDown > 0 ? Up1Down1 : Up1Down0) : (nDown > 0 ? Up0Down1 : Up0Down0); 54 | labelSpeedImg->setPixmap(icon.pixmap(16, 16)); 55 | QString text = tr("Upload:") + QString(" %1/%2, ").arg(misc::friendlyUnit(nUp)).arg(tr("s")) + 56 | tr("Download:") + QString(" %1/%2").arg(misc::friendlyUnit(nDown)).arg(tr("s")); 57 | labelSpeed->setText(text); 58 | labelSpeed->setToolTip(text); 59 | } 60 | 61 | void status_bar::setServerInfo(unsigned long nFiles, unsigned long nClients) 62 | { 63 | QString strClients; 64 | QString strFiles; 65 | 66 | strClients.setNum(nClients); 67 | strFiles.setNum(nFiles); 68 | 69 | QString text = tr("Clients: ") + strClients + tr("|Files: ") + strFiles; 70 | labelInfo->setText(text); 71 | labelInfo->setToolTip(text); 72 | } 73 | 74 | void status_bar::setStatusMsg(QString strMsg) 75 | { 76 | labelServer->setText(strMsg); 77 | labelServer->setToolTip(strMsg); 78 | } 79 | 80 | void status_bar::reset() 81 | { 82 | setConnected(false); 83 | setUpDown(0, 0); 84 | setServerInfo(0, 0); 85 | } 86 | -------------------------------------------------------------------------------- /src/statusbar/status_bar.h: -------------------------------------------------------------------------------- 1 | #ifndef STATUS_BAR_H 2 | #define STATUS_BAR_H 3 | 4 | #include 5 | #include "ui_status_bar.h" 6 | 7 | QT_BEGIN_NAMESPACE 8 | class QStatusBar; 9 | QT_END_NAMESPACE 10 | 11 | class status_bar : public QWidget, public Ui::status_bar 12 | { 13 | Q_OBJECT 14 | QStatusBar* m_bar; 15 | QIcon imgConnected; 16 | QIcon imgDisconnected; 17 | QIcon Up0Down0; 18 | QIcon Up1Down0; 19 | QIcon Up0Down1; 20 | QIcon Up1Down1; 21 | public: 22 | status_bar(QWidget *parent, QStatusBar *bar); 23 | ~status_bar(); 24 | void setConnected(bool conn); 25 | void setUpDown(unsigned long nUp, unsigned long nDown); 26 | void setServerInfo(unsigned long nFiles, unsigned long nClients); 27 | void setStatusMsg(QString strMsg); 28 | void reset(); 29 | }; 30 | 31 | #endif // STATUS_BAR_H 32 | -------------------------------------------------------------------------------- /src/statusbar/statusbar.pri: -------------------------------------------------------------------------------- 1 | INCLUDEPATH += $$PWD 2 | HEADERS += $$PWD/status_bar.h 3 | SOURCES += $$PWD/status_bar.cpp 4 | FORMS += $$PWD/status_bar.ui 5 | -------------------------------------------------------------------------------- /src/transferlistdelegate.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Bittorrent Client using Qt4 and libtorrent. 3 | * Copyright (C) 2006 Christophe Dumez 4 | * 5 | * This program is free software; you can redistribute it and/or 6 | * modify it under the terms of the GNU General Public License 7 | * as published by the Free Software Foundation; either version 2 8 | * of the License, or (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program; if not, write to the Free Software 17 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 18 | * 19 | * In addition, as a special exception, the copyright holders give permission to 20 | * link this program with the OpenSSL project's "OpenSSL" library (or with 21 | * modified versions of it that use the same license as the "OpenSSL" library), 22 | * and distribute the linked executables. You must obey the GNU General Public 23 | * License in all respects for all of the code used other than "OpenSSL". If you 24 | * modify file(s), you may extend this exception to your version of the file(s), 25 | * but you are not obligated to do so. If you do not wish to do so, delete this 26 | * exception statement from your version. 27 | * 28 | * Contact : chris@qbittorrent.org 29 | */ 30 | 31 | #ifndef TRANSFERLISTDELEGATE_H 32 | #define TRANSFERLISTDELEGATE_H 33 | 34 | #include 35 | 36 | class QProgressBar; 37 | 38 | class TransferListDelegate: public QItemDelegate 39 | { 40 | public: 41 | TransferListDelegate(QObject *parent); 42 | ~TransferListDelegate(); 43 | 44 | void paint(QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index) const; 45 | QWidget* createEditor(QWidget*, const QStyleOptionViewItem &, const QModelIndex &) const; 46 | QSize sizeHint(const QStyleOptionViewItem & option, const QModelIndex & index) const; 47 | 48 | private: 49 | void drawProgressBar(QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex &index) const; 50 | }; 51 | 52 | #endif // TRANSFERLISTDELEGATE_H 53 | -------------------------------------------------------------------------------- /src/transfers/peermodel.h: -------------------------------------------------------------------------------- 1 | #ifndef PEERMODEL_H 2 | #define PEERMODEL_H 3 | 4 | #include 5 | #include "qed2khandle.h" 6 | #include "qed2ksession.h" 7 | 8 | class PeerModel : public QAbstractListModel 9 | { 10 | Q_OBJECT 11 | public: 12 | enum Roles { 13 | SortRole = Qt::UserRole + 1 14 | }; 15 | 16 | enum Columns { PM_IP, PM_CLIENT, PM_FILE, PM_PROGRESS, PM_SPEED, PM_TOTAL, COL_COUNT }; 17 | 18 | explicit PeerModel(QObject *parent = 0); 19 | int rowCount(const QModelIndex& parent = QModelIndex()) const; 20 | int columnCount(const QModelIndex& parent = QModelIndex()) const; 21 | QVariant data(const QModelIndex& index, int role) const; 22 | QVariant headerData(int section, Qt::Orientation orientation, int role) const; 23 | void populate(); 24 | private: 25 | QList m_peers; 26 | const PeerInfo& at(const QModelIndex&) const; 27 | quint64 speed(const QModelIndex&) const; 28 | quint64 total(const QModelIndex&) const; 29 | signals: 30 | 31 | public slots: 32 | 33 | }; 34 | 35 | #endif // PEERMODEL_H 36 | -------------------------------------------------------------------------------- /src/transfers/transfer_model.h: -------------------------------------------------------------------------------- 1 | #ifndef TRANSFER_MODEL_H 2 | #define TRANSFER_MODEL_H 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | 9 | #include "transfermodel_item.h" 10 | #include "qtlibed2k/qed2ksession.h" 11 | 12 | class TransferModel : public QAbstractListModel { 13 | Q_OBJECT 14 | Q_DISABLE_COPY(TransferModel) 15 | 16 | public: 17 | explicit TransferModel(QObject *parent = 0); 18 | ~TransferModel(); 19 | inline int rowCount(const QModelIndex& index = QModelIndex()) const { Q_UNUSED(index); return m_transfers.size(); } 20 | int columnCount(const QModelIndex &parent=QModelIndex()) const { Q_UNUSED(parent); return TransferModelItem::TM_END; } 21 | QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const; 22 | bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::DisplayRole); 23 | QVariant headerData(int section, Qt::Orientation orientation, int role) const; 24 | int transferRow(const QString &hash) const; 25 | QString transferHash(int row) const; 26 | void setRefreshInterval(int refreshInterval); 27 | Qt::ItemFlags flags(const QModelIndex &index) const; 28 | signals: 29 | void transferAdded(TransferModelItem *transferItem); 30 | void transferAboutToBeRemoved(TransferModelItem *transferItem); 31 | 32 | public slots: 33 | void removeTransfer(const QString& hash); 34 | 35 | private slots: 36 | void addTransfer(const QED2KHandle& h); 37 | void handleTransferUpdate(const QED2KHandle& h); 38 | void notifyTransferChanged(int row); 39 | void forceModelRefresh(); 40 | void handleTransferAboutToBeRemoved(const QED2KHandle& h, bool); 41 | void processActiveTransfers(); 42 | private: 43 | void beginInsertTransfer(int row); 44 | void endInsertTransfer(); 45 | void beginRemoveTransfer(int row); 46 | void endRemoveTransfer(); 47 | void processUncheckedTransfers(); 48 | private: 49 | int m_refreshInterval; 50 | QList m_transfers; 51 | QString m_path; 52 | QList m_uncheckedTransfers; 53 | QTimer m_refreshTimer; 54 | }; 55 | 56 | #endif // TRANSFER_MODEL_H 57 | -------------------------------------------------------------------------------- /src/transfers/transferlist_delegate.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Bittorrent Client using Qt4 and libtorrent. 3 | * Copyright (C) 2006 Christophe Dumez 4 | * 5 | * This program is free software; you can redistribute it and/or 6 | * modify it under the terms of the GNU General Public License 7 | * as published by the Free Software Foundation; either version 2 8 | * of the License, or (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program; if not, write to the Free Software 17 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 18 | * 19 | * In addition, as a special exception, the copyright holders give permission to 20 | * link this program with the OpenSSL project's "OpenSSL" library (or with 21 | * modified versions of it that use the same license as the "OpenSSL" library), 22 | * and distribute the linked executables. You must obey the GNU General Public 23 | * License in all respects for all of the code used other than "OpenSSL". If you 24 | * modify file(s), you may extend this exception to your version of the file(s), 25 | * but you are not obligated to do so. If you do not wish to do so, delete this 26 | * exception statement from your version. 27 | * 28 | * Contact : chris@qbittorrent.org 29 | */ 30 | 31 | #ifndef TRANSFERLISTDELEGATE_H 32 | #define TRANSFERLISTDELEGATE_H 33 | 34 | #include 35 | 36 | class TransferListDelegate: public QItemDelegate { 37 | Q_OBJECT 38 | 39 | public: 40 | TransferListDelegate(QObject *parent); 41 | ~TransferListDelegate(); 42 | void paint(QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index) const; 43 | QWidget* createEditor(QWidget*, const QStyleOptionViewItem &, const QModelIndex &) const; 44 | }; 45 | 46 | #endif // TRANSFERLISTDELEGATE_H 47 | -------------------------------------------------------------------------------- /src/transfers/transfermodel_item.h: -------------------------------------------------------------------------------- 1 | #ifndef TRANSFERMODEL_ITEM_H 2 | #define TRANSFERMODEL_ITEM_H 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | 9 | #include "qtlibed2k/qed2khandle.h" 10 | #include "qtlibed2k/qed2ksession.h" 11 | 12 | class TransferModelItem : public QObject { 13 | Q_OBJECT 14 | public: 15 | enum { 16 | FilterRole = Qt::UserRole + 2 17 | }; 18 | 19 | enum State { 20 | STATE_DOWNLOADING, 21 | STATE_STALLED_DL, 22 | STATE_STALLED_UP, 23 | STATE_SEEDING, 24 | STATE_PAUSED_UP, 25 | STATE_PAUSED_DL, 26 | STATE_CHECKING, 27 | STATE_INVALID 28 | }; 29 | 30 | enum Column { 31 | TM_NAME, 32 | TM_SIZE, 33 | TM_TYPE, 34 | TM_PROGRESS, 35 | TM_STATUS, 36 | TM_SEEDS, 37 | TM_PEERS, 38 | TM_DLSPEED, 39 | TM_UPSPEED, 40 | TM_HASH, 41 | TM_ETA, 42 | TM_RATIO, 43 | TM_ADD_DATE, 44 | TM_AMOUNT_DOWNLOADED, 45 | TM_AMOUNT_LEFT, 46 | TM_TIME_ELAPSED, 47 | TM_END 48 | }; 49 | 50 | public: 51 | TransferModelItem(const QED2KHandle& h, const QString& status); 52 | inline int columnCount() const { return TM_END; } 53 | QVariant data(int column, int role = Qt::DisplayRole) const; 54 | bool setData(int column, const QVariant &value, int role = Qt::DisplayRole); 55 | inline QString hash() const { return m_hash; } 56 | QED2KHandle handle() const { return m_handle; } 57 | void setHandle(QED2KHandle h) { m_handle = h; } 58 | 59 | private: 60 | State state() const; 61 | const QString m_status; 62 | private: 63 | QED2KHandle m_handle; 64 | QDateTime m_addedTime; 65 | QDateTime m_seedTime; 66 | QString m_hash; 67 | FileType m_ft; 68 | }; 69 | 70 | #endif 71 | -------------------------------------------------------------------------------- /src/transfers/transfers.pri: -------------------------------------------------------------------------------- 1 | INCLUDEPATH += $$PWD 2 | 3 | HEADERS += $$PWD/transfers_widget.h \ 4 | $$PWD/transfer_model.h \ 5 | $$PWD/transfermodel_item.h \ 6 | $$PWD/transferlist_delegate.h \ 7 | transfers/peermodel.h 8 | 9 | SOURCES += $$PWD/transfers_widget.cpp \ 10 | $$PWD/transfer_model.cpp \ 11 | $$PWD/transfermodel_item.cpp \ 12 | $$PWD/transferlist_delegate.cpp \ 13 | transfers/peermodel.cpp 14 | 15 | FORMS += $$PWD/transfers_widget.ui 16 | -------------------------------------------------------------------------------- /src/transfers/transfers_widget.h: -------------------------------------------------------------------------------- 1 | #ifndef TRANSFERS_WIDGET_H 2 | #define TRANSFERS_WIDGET_H 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | 9 | #include "ui_transfers_widget.h" 10 | #include "qed2khandle.h" 11 | 12 | class TransferModel; 13 | class PeerModel; 14 | class QSortFilterProxyModel; 15 | 16 | class transfers_widget : public QWidget, private Ui::transfers_widget { 17 | Q_OBJECT 18 | 19 | public: 20 | explicit transfers_widget(QWidget *parent = 0); 21 | ~transfers_widget(); 22 | private slots: 23 | void on_actionStart_triggered(); 24 | 25 | void on_actionPause_triggered(); 26 | 27 | void on_actionRemove_triggered(); 28 | 29 | void displayListMenu(const QPoint&); 30 | void on_actionED2K_link_triggered(); 31 | 32 | void on_actionSeries_download_triggered(); 33 | 34 | void on_actionFirst_and_last_pieces_first_triggered(); 35 | 36 | void on_actionPreview_triggered(); 37 | 38 | void on_actionOpen_destination_folder_triggered(); 39 | 40 | void refreshModels(); 41 | 42 | void trSortChanged(int logicalIndex, Qt::SortOrder order); 43 | void pSortChanged(int logicalIndex, Qt::SortOrder order); 44 | void on_actionShow_all_transfers_triggered(); 45 | void displayHSMenu(const QPoint&); 46 | void on_trView_doubleClicked(const QModelIndex &index); 47 | void on_actionLoad_ED2K_link_triggered(); 48 | 49 | protected: 50 | void keyPressEvent ( QKeyEvent * event) ; 51 | private: 52 | QString getHashFromRow(int row) const; 53 | QStringList getSelectedHashes() const; 54 | QModelIndex mapToSource(const QModelIndex& index) const; 55 | TransferModel* tmodel; 56 | PeerModel* pmodel; 57 | QSortFilterProxyModel* tsort_model; 58 | QSortFilterProxyModel* psort_model; 59 | QMenu* menu; 60 | QTimer m_refreshTimer; 61 | }; 62 | 63 | #endif // TRANSFERS_WIDGET_H 64 | -------------------------------------------------------------------------------- /src/unix/conf.pri: -------------------------------------------------------------------------------- 1 | # COMPILATION SPECIFIC 2 | !nox:dbus { 3 | QT += dbus 4 | } 5 | 6 | QMAKE_CXXFLAGS += -Wformat -Wformat-security -Werror=return-type -Wno-unused-parameter 7 | QMAKE_LFLAGS_APP += -rdynamic 8 | INCLUDEPATH += $$(LIBED2K_ROOT)/include 9 | INCLUDEPATH += $$(BOOST_ROOT)/include 10 | 11 | CONFIG(debug, debug|release) { 12 | LIBS += -L$$(LIBED2K_ROOT)/bin/debug 13 | } else { 14 | LIBS += -L$$(LIBED2K_ROOT)/bin/release 15 | } 16 | 17 | LIBS += -led2k -lboost_thread -lpthread -lboost_system -lboost_date_time 18 | LIBS += -L$$(BOOST_ROOT)/lib 19 | 20 | DEFINES += LIBED2K_USE_BOOST_DATE_TIME 21 | 22 | CONFIG(debug, debug|release) { 23 | DEFINES += LIBED2K_DEBUG 24 | } else { 25 | DEFINES += NDEBUG 26 | } 27 | 28 | DEFINES += "BUILDDATE='\"$$system(date -R)\"'" 29 | DEFINES += BOOST_EXCEPTION_DISABLE 30 | DEFINES += BOOST_ASIO_SEPARATE_COMPILATION 31 | 32 | 33 | # Man page 34 | nox { 35 | man.files = ../doc/qbittorrent-nox.1 36 | } else { 37 | man.files = ../doc/qbittorrent.1 38 | } 39 | 40 | man.path = $$MANPREFIX/man/man1/ 41 | INSTALLS += man 42 | 43 | # INSTALL 44 | target.path = $$PREFIX/bin/ 45 | INSTALLS += target 46 | 47 | dbus { 48 | include(src/qtnotify/qtnotify.pri) 49 | } 50 | 51 | !nox { 52 | #DEFINE added by configure 53 | contains(DEFINES, WITH_GEOIP_EMBEDDED) { 54 | message("You chose to embed GeoIP database in qMule executable.") 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /src/win/conf-msvc.pri: -------------------------------------------------------------------------------- 1 | RC_FILE = donkey.rc 2 | 3 | #Adapt the lib names/versions accordingly 4 | CONFIG(debug, debug|release) { 5 | LIBS += libboost_system-vc140-mt-gd-1_60.lib \ 6 | ed2k.lib 7 | } else { 8 | LIBS += libboost_system-vc140-mt-1_60.lib \ 9 | ed2k.lib 10 | } 11 | 12 | CONFIG(win7){ 13 | LIBS += ole32.lib 14 | } 15 | 16 | QMAKE_LFLAGS += "/OPT:REF /OPT:ICF" 17 | 18 | LIBS += advapi32.lib shell32.lib user32.lib 19 | LIBS += PowrProf.lib 20 | -------------------------------------------------------------------------------- /src/win/conf.pri: -------------------------------------------------------------------------------- 1 | # Adapt EMT_ROOT on windows 2 | INCLUDEPATH += $$(BOOST_ROOT) 3 | LIBS += -L$$(BOOST_ROOT)/x64/lib 4 | INCLUDEPATH += $$(LIBED2K_ROOT)/include 5 | 6 | CONFIG(debug, debug|release) { 7 | LIBS += -L$$(LIBED2K_ROOT)/bin/Debug/ 8 | } else { 9 | LIBS += -L$$(LIBED2K_ROOT)/bin/Release/ 10 | } 11 | 12 | DEFINES += "\"BUILDDATE=\\\"$$system(date /t && time /t)\\\"\"" 13 | 14 | # LIBED2K DEFINES 15 | DEFINES += BOOST_ALL_NO_LIB 16 | DEFINES += BOOST_ASIO_HASH_MAP_BUCKETS=1021 17 | DEFINES += BOOST_EXCEPTION_DISABLE 18 | DEFINES += BOOST_SYSTEM_STATIC_LINK=1 19 | DEFINES += BOOST_THREAD_USE_LIB 20 | DEFINES += BOOST_THREAD_USE_LIB=1 21 | DEFINES += TORRENT_USE_OPENSSL 22 | DEFINES += UNICODE 23 | DEFINES += WIN32 24 | DEFINES += WIN32_LEAN_AND_MEAN 25 | DEFINES += _CRT_SECURE_NO_DEPRECATE 26 | DEFINES += _FILE_OFFSET_BITS=64 27 | DEFINES += _SCL_SECURE_NO_DEPRECATE 28 | DEFINES += _UNICODE 29 | DEFINES += _WIN32 30 | DEFINES += BOOST_ASIO_SEPARATE_COMPILATION 31 | DEFINES += LIBED2K_USE_BOOST_DATE_TIME 32 | 33 | win7 { 34 | DEFINES += _WIN32_WINNT=0x0601 35 | } else:wista { 36 | DEFINES += _WIN32_WINNT=0x0600 37 | } else { 38 | DEFINES += _WIN32_WINNT=0x0500 39 | } 40 | 41 | 42 | DEFINES += _WIN32_IE=0x0500 43 | DEFINES += __USE_W32_SOCKETS 44 | DEFINES += WITH_SHIPPED_GEOIP_H 45 | 46 | CONFIG(debug, debug|release) { 47 | DEFINES += LIBED2K_DEBUG 48 | } else { 49 | DEFINES += NDEBUG 50 | } 51 | 52 | CONFIG(win7) { 53 | DEFINES += WIN7_SDK 54 | } 55 | 56 | include(conf-msvc.pri) 57 | 58 | DEFINES += WITH_GEOIP_EMBEDDED 59 | message("On Windows, GeoIP database must be embedded.") 60 | -------------------------------------------------------------------------------- /version.pri: -------------------------------------------------------------------------------- 1 | DEFINES += VERSION_MAJOR=0 2 | DEFINES += VERSION_MINOR=0 3 | DEFINES += VERSION_BUILD=7 4 | 5 | --------------------------------------------------------------------------------