from qt import *
from kdecore import *
from kdeui import *
from kio import *
import sys

description = "A KDE Application"
version = "0.1";

class KdeApp(KMainWindow):
    def __init__(self):
        KMainWindow.__init__(self,None,"KdeApp")

    def locateFiles(self, url):
        self.files = []
        self.url = KShell.tildeExpand(url)
        self.kurl = KURL(self.url)
        job = KIO.listRecursive(self.kurl, True)
        print 'locating files in ' + str(self.kurl.pathOrURL())
        QObject.connect(job, SIGNAL("entries(KIO::Job*, const KIO::UDSEntryList&)"), self.newItems)
        QObject.connect(job, SIGNAL("result(KIO::Job *)"), self.result)
        
    def newItems(self, job, list):
        for udsList in list:
            f = KFileItem(udsList, self.kurl, False, True)
            for l in udsList:
                if l.m_uds == KIO.UDS_SIZE:
                    #
                    # This is the correct size of the file
                    #
                    print 'size is ' + str(l.m_long)
                    
            self.files.append(f)

    def result(self, job):
        print "Result obtained"
        if job.error() != 0:
            print "Error: " + str(job.errorString())
            job.showErrorDialog(self)
        for file in self.files:
            (kurl, local) = file.mostLocalURL()
            #
            # This will incorrectly show the file size as None!
            #
            print "result: " + str(kurl.prettyURL()) + ' size is ' + str(file.size())
        
def main():
    global kapp,version,description,options

    options = [ ("+[Dir]", "dir to open", "") ]
    aboutdata = KAboutData("test", "test", version, description, \
        KAboutData.License_GPL, "(C) 2005 AUTHOR", None, None, "your@email.com")
    aboutdata.addAuthor("AUTHOR", None, "your@email.com")
    KCmdLineArgs.init(sys.argv,aboutdata)
    KCmdLineArgs.addCmdLineOptions(options)
    kapp = KApplication()
    args = KCmdLineArgs.parsedArgs()
    widget = KdeApp()
    widget.show()
    for i in range(args.count()):
        widget.locateFiles(args.arg(i))

    return kapp.exec_loop()

if __name__ == '__main__':
    main()
