/***************************************************************************
 *   Copyright (C) 2005 by xavier helluy   *
 *   xavier.helluy@web.de   *
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 *   This program is distributed in the hope that it will be useful,       *
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 *   GNU General Public License for more details.                          *
 *                                                                         *
 *   You should have received a copy of the GNU General Public License     *
 *   along with this program; if not, write to the                         *
 *   Free Software Foundation, Inc.,                                       *
 *   51 Franklin Steet, Fifth Floor, Boston, MA 02110-1301, USA.             *
 ***************************************************************************/

#include "queryfieldurl.h"
#include <qstring.h>
#include <kurlcompletion.h>
#include <kurl.h>
#include <kdebug.h>

//TODO: allow search  with * at the word-beginning

//TODO: make sure the indexer writes the protocol with the path/URL
QueryFieldURL::QueryFieldURL( QWidget* parent, const char* name, WFlags fl )
	: QWidget( parent, name, fl )
{
	action = new KComboBox( FALSE, this, "action" );
//	action->setMaximumSize( QSize( 140, 32767 ) );
	action->setAutoCompletion( FALSE );

	query = new KURLRequester(this, "query");
// 	query = new KLineEdit( this, "query" );

	query->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)1, (QSizePolicy::SizeType)1, 0, 0, FALSE ) );
	action->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)1, (QSizePolicy::SizeType)1, 0, 0, FALSE ) );


	
	languageChange();
//	resize( QSize(490, 40).expandedTo(minimumSizeHint()) );
	clearWState( WState_Polished );
	layoutA = new QHBoxLayout(this);
	layoutA->addWidget(action);
	layoutA->addWidget(query);
	
	
	
// 	this->setSizePolicy(QSizePolicy::MinimumExpanding,QSizePolicy::MinimumExpanding, FALSE);
// 	this->query->setFocus();
	this->setShown(TRUE);
// 	this->show();
}


void QueryFieldURL::languageChange()
{
	setCaption( tr2i18n( "Form1" ) );
	action->clear();
	action->insertItem( tr2i18n( "contains" ) );
	action->insertItem( tr2i18n( "look in" ) );
}

QString QueryFieldURL::getQuery()
{
	QString action = this->action->currentText();
	QString str1 = this->query->url();
	str1 = str1.stripWhiteSpace();
	QString query;
	
	if ( !str1.isEmpty() )
	{	
		if ( action == tr2i18n( "contains" ) )
		{
			kdDebug() << "QueryFieldURL::getQuery CONTAINS"  << endl;

			query = "path:(" + str1 + ")";
		}
		else if (action == tr2i18n( "look in" ))
		{
		
			kdDebug() << "QueryFieldURL::getQuery LOOK IN"  << endl;

			//user enterd an absolute path
			KURL l_URL;
			if (str1.startsWith("/"))
			{
				//abs path entered
				l_URL = KURL::fromPathOrURL(str1);
				kdDebug() << "QueryFieldURL::getQuery FROM ABS"  << endl;

			}
			//not an abs. path. Could be an URL or a rel. path
			//test relative path
			else
			{
				l_URL = str1;
				if ((l_URL.protocol()=="file") ||(l_URL.protocol()==QString::null) )
				{
					//rel. url
					KURL homeURL(this->query->completionObject()->dir());
					homeURL.addPath(str1);
					kdDebug() << "QueryFieldURL::getQuery homeURL"  << homeURL <<endl;

					if (homeURL.isLocalFile())
					{
						kdDebug() << "QueryFieldURL::getQuery FROM REL"  << endl;

						l_URL = homeURL;
					}
				}
			}
			//ALL IS A VERY PRIMITIVE SEARCH
			//FIXME : howto fix the media, the protocol name, and co, and co.
			//put brackets to look for exact match, protocol should 
			//how to get to search the archives to......
			QString str = l_URL.pathOrURL().replace(":"," ");
			query.replace("/"," ");
			query = "path:( \"CLBU " + str + "\")";
			
		}
	}		
// 	QString str2 = str1.replace("/" , "|");
	
	
	return query;
}

#include "queryfieldurl.moc"

