Linux за българи: Форуми

Програмиране => Общ форум => Темата е започната от: LinuxFanUNIX в Jun 22, 2011, 02:37



Титла: Как да накарам QWebView да запомня последната директория от която е ъплоудвал
Публикувано от: LinuxFanUNIX в Jun 22, 2011, 02:37
Здравейте приятели! От няколко дни се мъча, но без успех да накарам QWebView да запомня последната директория от която е ъплоудвал файлове. Бихте ли ми казали как да стане това?

Ето и как и какво правя:

Код
GeSHi (C++):
  1. wb = new QWebView;
  2.    wb->load(QUrl("http://prikachi.com/")); //примерен сайт за ъплоудване

Когато влеза в горепосочения сайт, при всеки ъплоуд трябва да избирам папката в която са ми файловете (в случая снимките) и това е неудобно. Бихте ли ми казали как да го накарам да запаметява последната папка от която е ъплоудвано?

Благодаря предварително и с нетърпение очаквам Вашите отговори!


Титла: Re: Как да накарам QWebView да запомня последната директория от която е ъплоудвал
Публикувано от: task_struct в Jun 22, 2011, 09:17
Тоя път вече ме закопа с този въпрос  ;D Би трябвало да е с някакъв флаг в самият диалог за отваряне на файл, обаче не успях да намеря как да се докопаш до него.

Питай в http://developer.qt.nokia.com/forums


Титла: Re: Как да накарам QWebView да запомня последната директория от която е ъплоудвал
Публикувано от: LinuxFanUNIX в Jun 24, 2011, 02:31
Три регистрации (една от GMail) и все още нямам потвърдителен E-Mail... Ако имаш нещо на ум - кажи го, може да пробвам с него...


Титла: Re: Как да накарам QWebView да запомня последната директория от която е ъплоудвал
Публикувано от: task_struct в Jun 24, 2011, 09:25
Странно за регистрацията  ???

За сега нямам други идеи, освен може би неще с пазене на сесии. Ще трябва да пробвам унас да напиша нещо и да видя дали ще мога да се добера до диалога или до някаква нстройка на web view-то.


Титла: Re: Как да накарам QWebView да запомня последната директория от която е ъплоудвал
Публикувано от: LinuxFanUNIX в Jun 24, 2011, 13:03
Благодаря ти че ми помагаш. С нетърпение ще чакам да видя при теб как ще се държи. Благодаря още веднъж!  :)


Титла: Re: Как да накарам QWebView да запомня последната директория от която е ъплоудвал
Публикувано от: task_struct в Jun 25, 2011, 09:02
Снощи се пробвах и при мен диалога си се отваря в същата папка в която преди това съм отварял файл. Това го прави, докато не спра програмата. При следващото пускане пак се отваря в директорията на програмата. Ти между различните пускания на програмата ли искаш да пазиш, или само за едно?


Титла: Re: Как да накарам QWebView да запомня последната директория от която е ъплоудвал
Публикувано от: LinuxFanUNIX в Jun 26, 2011, 03:41
Ти между различните пускания на програмата ли искаш да пазиш, или само за едно?
Да, между различните пускания.


Титла: Re: Как да накарам QWebView да запомня последната директория от която е ъплоудвал
Публикувано от: LinuxFanUNIX в Jun 27, 2011, 01:00
Както и да пробвам - все не става. Или трябва да се вкара някакъв вид кеширане или нещо не работи както света   :o


Титла: Re: Как да накарам QWebView да запомня последната директория от която е ъплоудвал
Публикувано от: task_struct в Jun 27, 2011, 13:23
Разгледай имплементацията на QWebView, може би ако му направиш подклас, този клас ще може да получава някакъв сигнал че този прозорец се отваря и на къде сочи.


Титла: Re: Как да накарам QWebView да запомня последната директория от която е ъплоудвал
Публикувано от: LinuxFanUNIX в Jun 27, 2011, 15:40
По-скоро отговора е някъде тук:

http://doc.qt.nokia.com/4.7/qwebpage-choosemultiplefilesextensionreturn.html

но си признавам че точно до тук не са ми стигнали възможностите, а ми трябва достъпване до тази функция за нещо толкова елементарно...


Титла: Re: Как да накарам QWebView да запомня последната директория от която е ъплоудвал
Публикувано от: LinuxFanUNIX в Jul 01, 2011, 20:06
task_struct писах ти на ЛС...


Титла: Re: Как да накарам QWebView да запомня последната директория от която е ъплоудвал
Публикувано от: task_struct в Jul 01, 2011, 21:00
Нещо не съм получил.  :(


Титла: Re: Как да накарам QWebView да запомня последната директория от която е ъплоудвал
Публикувано от: b2l в Jul 01, 2011, 21:01
Нещо не съм получил.  :(

Гледаш прекалено Embedded на ЛС-а, за това не го виждаш :D :D :D :D.


Титла: Re: Как да накарам QWebView да запомня последната директория от която е ъплоудвал
Публикувано от: task_struct в Jul 01, 2011, 21:30
@backtolife, върви си купи още 1 платка РАМ, че на Джата ти нещо пак не и стига  ;D


Титла: Re: Как да накарам QWebView да запомня последната директория от която е ъплоудвал
Публикувано от: task_struct в Jul 01, 2011, 22:01
@LinuxFanUNIX, доколкото им схващам идея. Трябва да си направиш подклас на QWabePage и той да имплементира:
Код:
virtual bool 	extension ( Extension extension, const ExtensionOption * option = 0, ExtensionReturn * output = 0 )
virtual QString chooseFile ( QWebFrame * parentFrame, const QString & suggestedFile )

и

Код:
class 	ChooseMultipleFilesExtensionOption
class ChooseMultipleFilesExtensionReturn

Разгледай имплементацията на QWebPage, за повече инфо.

Даже единственото, което трябва да направиш е в QString QWebPage::chooseFile(QWebFrame *parentFrame, const QString& suggestedFile) да запзваш suggestedFile в някаква настройка и когато пак се извика да я зарежда. Ще проблам след малко дали ще стане :)


Титла: Re: Как да накарам QWebView да запомня последната директория от която е ъплоудвал
Публикувано от: h_paskalev в Jul 02, 2011, 11:53
Привет, опитай с тези - http://www.developer.nokia.com/Community/Wiki/Qt_Object_Serialization ($2) и http://doc.qt.nokia.com/stable/qsettings.html ($2).
В момента не се сещам варианти, които да са платформено-независими освен сериализиране на url полето и съхранение с QSettings. Успех!


Титла: Re: Как да накарам QWebView да запомня последната директория от която е ъплоудвал
Публикувано от: task_struct в Jul 02, 2011, 13:10
Ооо да :)) Измислих го :)) Като се има впредвид, че поливам последният ми изпит от бакалавъра, направо се чудя как успях да го напиша  ;D

Таа решениет окакто винаги е много просто :)

Хедър:
Код:
#ifndef MYWEBPAGE_H
#define MYWEBPAGE_H

#include <QWebPage>

class MyWebPage : public QWebPage
{
    Q_OBJECT
public:
    explicit MyWebPage(QObject *parent = 0);

signals:

public slots:

protected:
    virtual QString chooseFile(QWebFrame *originatingFrame, const QString& oldFile);

};

#endif // MYWEBPAGE_H


Имплементация:
Код:
#include "mywebpage.h"


#include <QtGui/QFileDialog>

#include <QtCore/QSettings>

#include <QDebug>


MyWebPage::MyWebPage(QObject *parent) :
    QWebPage(parent)
{
}

QString MyWebPage::chooseFile(QWebFrame *originatingFrame, const QString& oldFile)
{
    Q_UNUSED(originatingFrame)
    QWidget* p = qobject_cast<QWidget *>(parent());

    QSettings *webPageSettings = new QSettings( p );

    qDebug() << " Choosing file ... ";

    QString fileName = QFileDialog::getOpenFileName(p, QString::null, webPageSettings->value( "previousFile", oldFile ).toString() );

    webPageSettings->setValue( "previousFile", fileName );

    return fileName;
}

И във главният прозорец:
Код:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "mywebpage.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    MyWebPage *myPage = new MyWebPage(this);
    ui->webView->setPage( myPage );

    ui->webView->setUrl(QUrl("http://prikachi.com/"));

    ui->lineEdit->setText( ui->webView->url().toString() );
}

MainWindow::~MainWindow()
{
    delete ui;
}


QSettings може и по-добре да си ги направиш - като цялостно решение за програмата, не само в тая функция и там може да им се подадат още 200 параметъра и настройки (виж документацията) Иначе и в този вариант работи :)


Титла: Re: Как да накарам QWebView да запомня последната директория от която е ъплоудвал
Публикувано от: LinuxFanUNIX в Jul 02, 2011, 15:52
task_struct нямаш си на представа колко много, много съм ти благодарен за помощта! Жив и здрав да си! По този начин никога нямаше да ми дойде на ум да го направя, колкото и логично да ми беше докато четях кода! Пожелавам ти всичко най-хубаво занапред, защото винаги ми помагаш да оправя "бъркотията"!

Успех на изпита! [_]3 [_]3 [_]3


Титла: Re: Как да накарам QWebView да запомня последната директория от която е ъплоудвал
Публикувано от: task_struct в Jul 02, 2011, 16:17
Аз изпита го взех, сега остава дипломната. Мисля нещо на Qt :)

П.П. Получил съм и мейл с личното ти съобщение и ти отговорих. Преди да видя, че си отговорил тук :)