Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 170335
Collapse All | Expand All

(-)dolphin-0.8.2-orig/src/dolphinview.cpp (+21 lines)
Lines 705-710 Link Here
705
            setURL(KURL(localPath));
705
            setURL(KURL(localPath));
706
        }
706
        }
707
    }
707
    }
708
    else if (fileItem->isFile()) {
709
	// allow to browse through ZIP and tar files
710
	KMimeType::Ptr mime = fileItem->mimeTypePtr();
711
	if (mime->is("application/x-zip")) {
712
	    KURL url = fileItem->url();
713
	    url.setProtocol("zip");
714
	    setURL(url);
715
	}
716
	else if (mime->is("application/x-tar") ||
717
		 mime->is("application/x-tarz") ||
718
		 mime->is("application/x-tbz") ||
719
		 mime->is("application/x-tgz") ||
720
		 mime->is("application/x-tzo")) {
721
	    KURL url = fileItem->url();
722
	    url.setProtocol("tar");
723
	    setURL(url);
724
	}
725
	else {
726
	    fileItem->run();
727
	}
728
    }
708
    else {
729
    else {
709
        fileItem->run();
730
        fileItem->run();
710
    }
731
    }
(-)dolphin-0.8.2-orig/src/urlnavigator.cpp (+62 lines)
Lines 116-121 Link Here
116
void URLNavigator::setURL(const KURL& url)
116
void URLNavigator::setURL(const KURL& url)
117
{
117
{
118
    QString urlStr(url.prettyURL());
118
    QString urlStr(url.prettyURL());
119
120
    if (url.protocol() == "zip") {
121
	bool stillInside = false;
122
	if (KMimeType::findByPath(url.url(-1))
123
	    ->is("application/x-zip")) {
124
	    stillInside = true;
125
	}
126
	else {
127
	    KURL url1 = url.upURL();
128
	    while (url1 != url1.upURL()) {
129
		if (KMimeType::findByPath(url1.url(-1))
130
		    ->is("application/x-zip")) {
131
		    stillInside = true;
132
		    break;
133
		}
134
		url1 = url1.upURL();
135
	    }
136
	}
137
	if (!stillInside)
138
	{
139
	    // Drop the zip:/ protocol since we are not in the zip anymore
140
	    urlStr = url.path();
141
	}
142
    }
143
    else if (url.protocol() == "tar")
144
    {
145
	bool stillInside = false;
146
	KMimeType::Ptr kmp = 
147
	    KMimeType::findByPath(url.url(-1));
148
	if (kmp->is("application/x-tar") ||
149
	    kmp->is("application/x-tarz") ||
150
	    kmp->is("application/x-tbz") || 
151
	    kmp->is("application/x-tgz") || 
152
	    kmp->is("application/x-tzo")
153
	    ) {
154
	    stillInside = true;
155
	}
156
	else {
157
	    KURL url1 = url.upURL();
158
	    while (url1 != url1.upURL()) {
159
		KMimeType::Ptr kmp =
160
		    KMimeType::findByPath(url1.url(-1));
161
		if (kmp->is("application/x-tar") ||
162
		    kmp->is("application/x-tarz") ||
163
		    kmp->is("application/x-tbz") || 
164
		    kmp->is("application/x-tgz") || 
165
		    kmp->is("application/x-tzo")
166
		    ) {
167
		    stillInside = true;
168
		    break;
169
		}
170
		url1 = url1.upURL();
171
	    }
172
	}
173
	if (!stillInside)
174
	{
175
	    // Drop the tar:/ protocol since we are not in the tar anymore
176
	    urlStr = url.path();
177
	}
178
    }
179
180
119
    if (urlStr.at(0) == '~') {
181
    if (urlStr.at(0) == '~') {
120
        // replace '~' by the home directory
182
        // replace '~' by the home directory
121
        urlStr.remove(0, 1);
183
        urlStr.remove(0, 1);

Return to bug 170335