diff -Nru choqok-1.3/changelog choqok-1.4/changelog --- choqok-1.3/changelog 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/changelog 2013-08-31 05:51:23.000000000 +0200 @@ -1,3 +1,15 @@ +=== Version 1.4 -- 01-Sep-2013 === +* Fix in font size +* Fix in shortening Urls comming from konqueror +* New icons and splash screen +* Twitter API v1.1 support (Daniel Kreuter) +* "mark timeline as read" menu item added to tabs context menu (Lim Yuen Hoe) +* Show "in reply to" in twitter search timelines (Lim Yuen Hoe) +* Identi.ca support removed from StatusNet plugin, we still support StatusNet + +New Plugin: + - BetterNotify to notify statuses based on user preference + === Version 1.3 -- 05-Apr-2012 === * Support for Twitter photo upload API method (by Atanas Gospodinov) * Translator plugin shuts off due Google terminated its free API. diff -Nru choqok-1.3/choqok/choqok.desktop choqok-1.4/choqok/choqok.desktop --- choqok-1.3/choqok/choqok.desktop 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/choqok/choqok.desktop 2013-08-31 05:51:23.000000000 +0200 @@ -22,6 +22,8 @@ Name[it]=Choqok Name[ja]=Choqok Name[km]=Choqok +Name[lt]=Choqok +Name[mr]=चोकोक Name[nb]=Choqok Name[nds]=Choqok Name[nl]=Choqok @@ -32,6 +34,7 @@ Name[ro]=Choqok Name[ru]=Choqok Name[sk]=Choqok +Name[sl]=Choqok Name[sq]=Choqok Name[sv]=Choqok Name[tr]=Choqok @@ -40,22 +43,29 @@ Name[x-test]=xxChoqokxx Name[zh_CN]=Choqok Name[zh_TW]=Choqok -Exec=choqok %i -caption "%c" +Exec=choqok %i -caption %c Icon=choqok Type=Application Categories=Network; GenericName=Micro-blogging Client -GenericName[ca]=Client de microblocs +GenericName[bg]=Клиент за микроблогове в KDE +GenericName[ca]=Client de microblogs GenericName[ca@valencia]=Client de microblocs +GenericName[cs]=Klient pro mikroblogování GenericName[da]=Mikroblogging-klient GenericName[de]=Micro-Blogging-Programm GenericName[el]=Εφαρμογή μικρο-ιστολογίου -GenericName[es]=Cliente de microblogging +GenericName[es]=Cliente de microblogs GenericName[et]=Mikroblogimise klient +GenericName[fa]=کارخواه میکروبلاگ +GenericName[fi]=Mikroblogiasiakas GenericName[fr]=Client de microblogage GenericName[ga]=Cliant Micreabhlagadóireachta +GenericName[gl]=Cliente para microblogues GenericName[hu]=Mikroblog kliens GenericName[it]=Client di microblogging +GenericName[km]=ម៉ាស៊ីន​ភ្ញៀវ​របស់ Micro-blogging +GenericName[mr]=मायक्रो-ब्लॉगिंग ग्राहक GenericName[nb]=Klient for mikroblogging GenericName[nds]=Programm för Lüttdaagböker GenericName[nl]=Micro-blogging-client @@ -63,7 +73,11 @@ GenericName[pl]=Klient mikroblogów GenericName[pt]=Cliente de micro-blogs GenericName[pt_BR]=Cliente de microblogging +GenericName[ru]=Клиент для ведения микроблогов +GenericName[sl]=Odjemalec mikrobloganja GenericName[sv]=Klient för mikrobloggar +GenericName[tr]=Mini-günlük İstemcisi +GenericName[ug]=مىكرو بلوگ خېرىدارى GenericName[uk]=Клієнт мікроблогів GenericName[x-test]=xxMicro-blogging Clientxx GenericName[zh_CN]=微博客户端 diff -Nru choqok-1.3/choqok/choqok.notifyrc choqok-1.4/choqok/choqok.notifyrc --- choqok-1.3/choqok/choqok.notifyrc 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/choqok/choqok.notifyrc 2013-08-31 05:51:23.000000000 +0200 @@ -23,6 +23,8 @@ Comment[it]=Choqok Comment[ja]=Choqok Comment[km]=Choqok +Comment[lt]=Choqok +Comment[mr]=चोकोक Comment[nb]=Choqok Comment[nds]=Choqok Comment[nl]=Choqok @@ -33,6 +35,7 @@ Comment[ro]=Choqok Comment[ru]=Choqok Comment[sk]=Choqok +Comment[sl]=Choqok Comment[sq]=Choqok Comment[sv]=Choqok Comment[tr]=Choqok @@ -48,6 +51,7 @@ Name[bs]=Stigla nova objava Name[ca]=Ha arribat un nou article Name[ca@valencia]=Ha arribat un nou article +Name[cs]=Přišel nový příspěvek Name[da]=Nyt indlæg ankommet Name[de]=Neue Nachricht eingetroffen Name[el]=Άφιξη νέας ανάρτησης @@ -72,6 +76,7 @@ Name[pt_BR]=Chegou nova mensagem Name[ro]=Postare nouă sosită Name[ru]=Получено новое сообщение +Name[sl]=Prispela je nova objava Name[sv]=Nytt inlägg har anlänt Name[tr]=Yeni Durum İletisi Alındı Name[uk]=Надіслано новий допис @@ -83,6 +88,7 @@ Comment[bs]=Stigla nova objava Comment[ca]=Ha arribat un nou article Comment[ca@valencia]=Ha arribat un nou article +Comment[cs]=Přišel nový příspěvek Comment[da]=Nyt indlæg ankommet Comment[de]=Neue Nachricht eingetroffen Comment[el]=Άφιξη νέας ανάρτησης @@ -107,6 +113,7 @@ Comment[pt_BR]=Chegou nova mensagem Comment[ro]=Postare nouă sosită Comment[ru]=Получено новое сообщение +Comment[sl]=Prispela je nova objava Comment[sv]=Nytt inlägg har anlänt Comment[tr]=Yeni durum iletisi alındı Comment[uk]=Надіслано новий допис @@ -122,6 +129,7 @@ Name[bs]=Uspješno završen posao Name[ca]=Tasca efectuada Name[ca@valencia]=Tasca efectuada +Name[cs]=Úspěch úlohy Name[da]=Job gennemført Name[de]=Aktion erfolgreich Name[el]=Επιτυχία εργασίας @@ -144,6 +152,7 @@ Name[pt]=Sucesso da Tarefa Name[pt_BR]=Tarefa concluída com sucesso Name[ru]=Задание выполнено +Name[sl]=Uspeh posla Name[sv]=Jobb lyckades Name[tr]=Görev Başarılı Name[uk]=Завдання успішно виконано @@ -179,6 +188,7 @@ Comment[pt_BR]=Uma tarefa foi concluída com sucesso Comment[ro]=O sarcină s-a încheiat cu succes Comment[ru]=Задание успешно выполнено +Comment[sl]=Posel se je uspešno končal Comment[sv]=Ett jobb avslutades med lyckat resultat. Comment[tr]=Bir görev başarıyla tamamlandı Comment[uk]=Виконання завдання успішно завершено @@ -201,7 +211,7 @@ Name[es]=Trabajo terminado con un error Name[et]=Töö tõrge Name[fi]=Työvirhe -Name[fr]=Erreur lors de la tâche +Name[fr]=Erreur de la tâche Name[gl]=Erro nun traballo Name[hr]=Greška u poslu Name[hu]=Feladathiba @@ -214,9 +224,11 @@ Name[pa]=ਜਾਬ ਗਲਤੀ Name[pl]=Błąd wykonania zadania Name[pt]=Erro da Tarefa -Name[pt_BR]=Erro da tarefa +Name[pt_BR]=Erro de tarefa Name[ro]=Eroare sarcină Name[ru]=Ошибка задания +Name[sk]=Chyba úlohy +Name[sl]=Napaka posla Name[sv]=Jobbfel Name[tr]=Görev Hatası Name[ug]=خىزمەت خاتالىقى @@ -254,6 +266,8 @@ Comment[pt_BR]=Ocorreu um erro ao realizar uma tarefa Comment[ro]=A avut loc o eroare în timpul executării unei sarcini Comment[ru]=Во время выполнения задания произошла ошибка +Comment[sk]=Počas vykonávania úlohy nastala chyba +Comment[sl]=Med izvajanjem posla je prišlo do napake Comment[sv]=Ett fel uppstod när ett jobb utfördes Comment[tr]=Bir görev yapılırken bir hata oluştu Comment[ug]=ۋەزىپىنى ئورۇنداشتا خاتالىق كۆرۈلدى @@ -269,6 +283,7 @@ Name[bs]=Skraćenje Name[ca]=Escurçament Name[ca@valencia]=Escurçament +Name[cs]=Zkracování Name[da]=Afkortelse Name[de]=Kürzen Name[el]=Συντόμευση @@ -292,6 +307,7 @@ Name[pt_BR]=Encurtamento Name[ro]=Scurtare Name[ru]=Сокращение ссылок +Name[sl]=Krajšanje Name[sv]=Avkortning Name[tr]=Kısaltma Name[uk]=Скорочення @@ -303,29 +319,32 @@ Comment[bs]=Skraćivanje URL-a Comment[ca]=S'està escurçant un URL Comment[ca@valencia]=S'està escurçant un URL +Comment[cs]=Zkracování URL Comment[da]=Afkortelse af en URL Comment[de]=Adresse wird gekürzt Comment[el]=Συντόμευση URL Comment[en_GB]=Shortening a URL -Comment[es]=Acortando un URL +Comment[es]=Acortando una URL Comment[et]=URL-i lühendamine Comment[fi]=Lyhennetään verkko-osoite -Comment[fr]=Raccourcissement d'un URL +Comment[fr]=Raccourcissement d'une URL Comment[gl]=Abreviar un URL Comment[hr]=Skraćivanje URL-a Comment[hu]=Hivatkozás rövidítése Comment[it]=Abbreviazione di un URL Comment[ja]=URL の短縮 Comment[km]=ការ​ធ្វើ​ឲ្យ​​ URL ខ្លី​ +Comment[lt]=URL trumpinimas Comment[nb]=Forkorte en URL Comment[nds]=En URL afkörten Comment[nl]=Een URL inkorten Comment[pa]=URL ਛੋਟਾ ਕਰੋ Comment[pl]=Skracanie adresów URL Comment[pt]=Redução de um URL -Comment[pt_BR]=Encurtamento de URLs +Comment[pt_BR]=Encurtando uma URL Comment[ro]=Scurtarea unui URL Comment[ru]=Сокращение ссылок +Comment[sl]=Krajšanje URL-ja Comment[sv]=Avkortar en webbadress Comment[tr]=Bir adres kısaltılıyor Comment[ug]=URL نى قىسقارتىدۇ diff -Nru choqok-1.3/choqok/config/accounts/choqok_accountsconfig.desktop choqok-1.4/choqok/config/accounts/choqok_accountsconfig.desktop --- choqok-1.3/choqok/config/accounts/choqok_accountsconfig.desktop 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/choqok/config/accounts/choqok_accountsconfig.desktop 2013-08-31 05:51:23.000000000 +0200 @@ -32,6 +32,7 @@ Name[it]=Account Name[ja]=アカウント Name[km]=គណនី +Name[lt]=Paskyros Name[nb]=Kontoer Name[nds]=Kontos Name[nl]=Accounts @@ -42,6 +43,7 @@ Name[ro]=Conturi Name[ru]=Учётные записи Name[sk]=Účty +Name[sl]=Računi Name[sv]=Konton Name[tr]=Hesaplar Name[ug]=ھېساباتلار @@ -54,6 +56,7 @@ Comment[bs]=Upravljalj svojim nalozima Comment[ca]=Gestioneu els vostres comptes Comment[ca@valencia]=Gestioneu els vostres comptes +Comment[cs]=Spravujte své účty Comment[da]=Håndtér dine konti Comment[de]=Zugangsverwaltung Comment[el]=Διαχείριση των λογαριασμών σας @@ -68,6 +71,7 @@ Comment[it]=Gestisci i tuoi account Comment[ja]=アカウントの管理 Comment[km]=គ្រប់​គ្រង​គណនី​របស់​អ្នក​ +Comment[lt]=Tvarkyti Jūsų sąskaitas Comment[nb]=Håndter kontoene dine Comment[nds]=Dien Kontos plegen Comment[nl]=Uw accounts beheren @@ -77,6 +81,7 @@ Comment[pt_BR]=Gerencia suas contas Comment[ro]=Gestionați conturile Comment[ru]=Управление учётными записями +Comment[sl]=Upravljajte z vašimi računi Comment[sv]=Hantera dina konton Comment[tr]=Hesaplarınızı Yönetin Comment[uk]=Керування вашими обліковими записами diff -Nru choqok-1.3/choqok/config/appearance/appearanceconfig_base.ui choqok-1.4/choqok/config/appearance/appearanceconfig_base.ui --- choqok-1.3/choqok/config/appearance/appearanceconfig_base.ui 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/choqok/config/appearance/appearanceconfig_base.ui 2013-08-31 05:51:23.000000000 +0200 @@ -28,7 +28,7 @@ - You'll see post with retweeter name as author, plus Retweeted from original author note. + You will see post with retweeter name as author, plus Retweeted from original author note. Show Retweeted/Repeated posts in Choqok way diff -Nru choqok-1.3/choqok/config/appearance/choqok_appearanceconfig.desktop choqok-1.4/choqok/config/appearance/choqok_appearanceconfig.desktop --- choqok-1.3/choqok/config/appearance/choqok_appearanceconfig.desktop 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/choqok/config/appearance/choqok_appearanceconfig.desktop 2013-08-31 05:51:23.000000000 +0200 @@ -22,7 +22,7 @@ Name[es]=Aspecto Name[et]=Välimus Name[fa]=ظاهر -Name[fi]=Ulkonäkö +Name[fi]=Ulkoasu Name[fr]=Apparence Name[ga]=Cuma Name[gl]=Aparencia @@ -31,6 +31,7 @@ Name[it]=Aspetto Name[ja]=外観 Name[km]=រូប​រាង +Name[lt]=Išvaizda Name[nb]=Utseende Name[nds]=Utsehn Name[nl]=Uiterlijk @@ -41,6 +42,7 @@ Name[ro]=Aspect Name[ru]=Внешний вид Name[sk]=Vzhľad +Name[sl]=Videz Name[sv]=Utseende Name[tr]=Görünüm Name[ug]=كۆرۈنۈشى @@ -53,6 +55,7 @@ Comment[bs]=Konfiguriši izgled i način rada Choqoka Comment[ca]=Personalitzeu l'estil del Choqok Comment[ca@valencia]=Personalitzeu l'estil del Choqok +Comment[cs]=Přizpůsobit vzhled Choqok Comment[da]=Tilpas Choqoks fremtoning Comment[de]=Anpassung von Choqoks Erscheinungsbild Comment[el]=Εξατομίκευση εμφάνισης και αίσθησης Choqok @@ -75,6 +78,7 @@ Comment[pt]=Personalizar a Aparência e Comportamento do Choqok Comment[pt_BR]=Personaliza o visual do Choqok Comment[ru]=Настройка внешнего вида Choqok +Comment[sl]=Prilagodi videz programa Choqok Comment[sv]=Anpassa Choqoks utseende och känsla Comment[tr]=Choqok Görünümünü Kişiselleştir Comment[uk]=Налаштувати вигляд і поведінку Choqok diff -Nru choqok-1.3/choqok/config/behavior/choqok_behaviorconfig.desktop choqok-1.4/choqok/config/behavior/choqok_behaviorconfig.desktop --- choqok-1.3/choqok/config/behavior/choqok_behaviorconfig.desktop 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/choqok/config/behavior/choqok_behaviorconfig.desktop 2013-08-31 05:51:23.000000000 +0200 @@ -23,7 +23,7 @@ Name[es]=Comportamiento Name[et]=Käitumine Name[fa]=رفتار -Name[fi]=Käyttäytyminen +Name[fi]=Toiminta Name[fr]=Comportement Name[ga]=Oibriú Name[gl]=Comportamento @@ -32,6 +32,7 @@ Name[it]=Comportamento Name[ja]=挙動 Name[km]=ឥរិយាបថ +Name[lt]=Elgsena Name[nb]=Oppførsel Name[nds]=Bedregen Name[nl]=Gedrag @@ -41,6 +42,8 @@ Name[pt_BR]=Comportamento Name[ro]=Comportament Name[ru]=Поведение +Name[sk]=Správanie +Name[sl]=Obnašanje Name[sv]=Beteende Name[tr]=Davranış Name[ug]=ھەرىكەت @@ -53,13 +56,14 @@ Comment[bs]=Konfiguriši ponašanje Choqoka Comment[ca]=Personalitzeu el comportament del Choqok Comment[ca@valencia]=Personalitzeu el comportament del Choqok +Comment[cs]=Přizpůsobit chování Choqok Comment[da]=Tilpas Choqoks opførsel Comment[de]=Anpassung von Choqoks Verhalten Comment[el]=Εξατομίκευση συμπεριφοράς Choqok Comment[en_GB]=Personalise Choqok's Behaviour Comment[es]=Personalizar el comportamiento de Choqok Comment[et]=Choqoki käitumise isikupärastamine -Comment[fi]=Personalisoi Choqok-käyttäytyminen +Comment[fi]=Personalisoi Choqok-toiminta Comment[fr]=Personnalisez le comportement de Choqok Comment[gl]=Personalice o comportamento do Choqok Comment[hr]=Konfiguriraj ponašanje Choqoka @@ -75,6 +79,7 @@ Comment[pt]=Personalizar o Comportamento do Choqok Comment[pt_BR]=Personaliza o comportamento do Choqok Comment[ru]=Настройка поведения Choqok +Comment[sl]=Prilagodi obnašanje programa Choqok Comment[sv]=Anpassa Choqoks beteende Comment[tr]=Choqok Davranışlarını Kişiselleştir Comment[uk]=Налаштувати поведінку Choqok diff -Nru choqok-1.3/choqok/config/plugins/choqok_pluginconfig.desktop choqok-1.4/choqok/config/plugins/choqok_pluginconfig.desktop --- choqok-1.3/choqok/config/plugins/choqok_pluginconfig.desktop 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/choqok/config/plugins/choqok_pluginconfig.desktop 2013-08-31 05:51:23.000000000 +0200 @@ -32,6 +32,7 @@ Name[it]=Estensioni Name[ja]=プラグイン Name[km]=កម្មវិធី​ជំនួយ +Name[lt]=Įskiepiai Name[nb]=Programtillegg Name[nds]=Modulen Name[nl]=Plug-ins @@ -39,8 +40,10 @@ Name[pl]=Wtyczki Name[pt]='Plugins' Name[pt_BR]=Plugins -Name[ro]=Module +Name[ro]=Extensii Name[ru]=Модули +Name[sk]=Moduly +Name[sl]=Vstavki Name[sv]=Insticksprogram Name[tr]=Eklentiler Name[ug]=قىستۇرما @@ -70,15 +73,18 @@ Comment[it]=Seleziona e configura estensioni Comment[ja]=プラグインの選択と設定 Comment[km]=ជ្រើស​ និង​កំណត់​រចនាសម្ព័ន្ធ​កម្ម​វិធី​ជំនួយ +Comment[lt]=Pažymėti ir konfigūruoti įskiepius Comment[nb]=Velg og sett opp programtillegg Comment[nds]=Modulen utsöken un instellen -Comment[nl]=Plugins selecteren en configureren +Comment[nl]=Plug-ins selecteren en instellen Comment[pa]=ਪਲੱਗਇਨ ਚੁਣੋ ਅਤੇ ਸੰਰਚਨਾ ਕਰੋ Comment[pl]=Wybór i konfiguracja wtyczek Comment[pt]=Seleccionar e Configurar os 'Plugins' Comment[pt_BR]=Seleciona e configura os plugins Comment[ro]=Alegeți și configurați modulele Comment[ru]=Включение и настройка модулей +Comment[sk]=Výber a nastavenie modulov +Comment[sl]=Izberite in nastavite vstavke Comment[sv]=Välj och anpassa insticksprogram Comment[tr]=Eklentileri Seç ve Yapılandır Comment[ug]=قىستۇرمىلارنى تاللاش ۋە سەپلەش diff -Nru choqok-1.3/choqok/main.cpp choqok-1.4/choqok/main.cpp --- choqok-1.3/choqok/main.cpp 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/choqok/main.cpp 2013-08-31 05:51:23.000000000 +0200 @@ -32,7 +32,7 @@ static const char description[] = I18N_NOOP( "KDE Micro-Blogging Client." ); -static const char version[] = "1.3"; +static const char version[] = "1.4"; int main( int argc, char **argv ) { @@ -50,11 +50,13 @@ about.addCredit( ki18n( "Stephen Henderson" ), ki18n( "Search API implementation" ), "hendersonsk@gmail.com"); about.addCredit( ki18n( "Tejas Dinkar" ), ki18n( "Developer" ), "tejasdinkar@gmail.com", "http://twitter.com/tdinkar" ); - about.addCredit( ki18n( "Emanuele Bigiarini"), ki18n("DBus and konqueror plugin"), "pulmro@gmail.com"); + about.addCredit( ki18n( "Emanuele Bigiarini"), ki18n("D-Bus and Konqueror plugin"), "pulmro@gmail.com"); about.addCredit( ki18n( "Alex Infantes"), ki18n("Improvements on Image preview plugin"), "alexandro82@gmail.com" ); about.addCredit( ki18n( "Bardia Daneshvar" ), ki18n("UI improvements"), "bardia.daneshvar@gmail.com"); about.addCredit( ki18n( "Atanas Gospodinov" ), ki18n("Twitter photo upload"), QByteArray()); + about.addCredit( ki18n( "Daniel Kreuter" ), ki18n("Twitter API v1.1 support"), "daniel.kreuter85@gmail.com" ); + about.addCredit( ki18n( "Lim Yuen Hoe" ), ki18n("Bug fixes and improvements"), "yuenhoe86@gmail.com" ); //TODO before next release, Add new contributers to credits KCmdLineArgs::init( argc, argv, &about ); diff -Nru choqok-1.3/choqok/mainwindow.cpp choqok-1.4/choqok/mainwindow.cpp --- choqok-1.3/choqok/mainwindow.cpp 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/choqok/mainwindow.cpp 2013-08-31 05:51:23.000000000 +0200 @@ -75,7 +75,7 @@ MainWindow::MainWindow() : Choqok::UI::MainWindow(), quickWidget(0), s_settingsDialog(0), m_splash(0), - choqokMainButton(0), microblogCounter(0) + choqokMainButton(0), microblogCounter(0), choqokMainButtonVisible(false) { kDebug(); setAttribute ( Qt::WA_DeleteOnClose, false ); @@ -137,9 +137,12 @@ // kDebug()<show(); + kError()<<"Splash screen pixmap is NULL! URL: "<show(); + m_splash->showMessage(QString());//Workaround for Qt 4.8 splash bug + } } settingsChanged(); @@ -148,6 +151,8 @@ if( count > 0 ) { for( int i=0; i < count; ++i ){ addBlog(accList.at(i), true); + if(m_splash) + m_splash->showMessage(QString());//Workaround for Qt 4.8 splash bug } kDebug()<<"All accounts loaded."; if(Choqok::BehaviorSettings::updateInterval() > 0) @@ -226,9 +231,9 @@ KShortcut toggleMainGlobalShortcut( Qt::CTRL | Qt::META | Qt::Key_C ); showMain->setGlobalShortcut( toggleMainGlobalShortcut ); if(this->isVisible()) - showMain->setText( i18n( "Minimize" ) ); + showMain->setText( i18nc( "@action", "Minimize" ) ); else - showMain->setText( i18n("Restore") ); + showMain->setText( i18nc( "@action", "Restore" ) ); connect( showMain, SIGNAL( triggered( bool ) ), this, SLOT( toggleMainWindow() ) ); KAction *act = KStandardAction::configureNotifications ( this, SLOT ( slotConfNotifications() ), @@ -466,10 +471,7 @@ if( !isStartup ) QTimer::singleShot( 1500, widget, SLOT( updateTimelines() ) ); enableApp(); - if( mainWidget->count() > 1) - mainWidget->setTabBarHidden(false); - else - mainWidget->setTabBarHidden(true); + updateTabbarHiddenState(); } void MainWindow::removeBlog( const QString & alias ) @@ -480,18 +482,23 @@ Choqok::UI::MicroBlogWidget * tmp = qobject_cast( mainWidget->widget( i ) ); if ( tmp->currentAccount()->alias() == alias ) { mainWidget->removeTab( i ); - if ( mainWidget->count() < 1 ) - disableApp(); - tmp->deleteLater(); - if( mainWidget->count() > 1) - mainWidget->setTabBarHidden(false); - else - mainWidget->setTabBarHidden(true); - return; + if ( mainWidget->count() < 1 ) + disableApp(); + tmp->deleteLater(); + updateTabbarHiddenState(); + return; } } } +void MainWindow::updateTabbarHiddenState() +{ + if( mainWidget->count() <= 1 && !choqokMainButtonVisible ) + mainWidget->setTabBarHidden(true); + else + mainWidget->setTabBarHidden(false); +} + void MainWindow::slotUpdateUnreadCount(int change, int sum) { kDebug()<<"Change: "<show(); + } else { + if(m_splash) + m_splash->showMessage(QString());//Workaround for Qt 4.8 splash bug } } @@ -635,9 +645,12 @@ } mainWidget->setCornerWidget(choqokMainButton/*, Qt::TopLeftCorner*/); choqokMainButton->show(); + choqokMainButtonVisible = true; } else { + choqokMainButtonVisible = false; mainWidget->setCornerWidget(0/*, Qt::TopLeftCorner*/); } + updateTabbarHiddenState(); } void MainWindow::slotDonate() diff -Nru choqok-1.3/choqok/mainwindow.h choqok-1.4/choqok/mainwindow.h --- choqok-1.3/choqok/mainwindow.h 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/choqok/mainwindow.h 2013-08-31 05:51:23.000000000 +0200 @@ -25,6 +25,7 @@ #define MAINWINDOW_H #include +#include #include "account.h" #include "choqokmainwindow.h" @@ -108,6 +109,7 @@ void quickPostCreated(); private: + void updateTabbarHiddenState(); void setupActions(); void createQuickPostDialog(); void disableApp(); @@ -119,7 +121,7 @@ SysTrayIcon *sysIcon; Choqok::UI::QuickPost *quickWidget; KSettings::Dialog *s_settingsDialog; - KSplashScreen *m_splash; + QPointer m_splash; KAction *showMain; KAction *actQuit; KAction *prefs; @@ -127,6 +129,7 @@ KPushButton *choqokMainButton; int microblogCounter; + bool choqokMainButtonVisible; }; #endif diff -Nru choqok-1.3/cmake/modules/CMakeLists.txt choqok-1.4/cmake/modules/CMakeLists.txt --- choqok-1.3/cmake/modules/CMakeLists.txt 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/cmake/modules/CMakeLists.txt 2013-08-31 05:51:23.000000000 +0200 @@ -1,4 +1,4 @@ # install the cmake files -set(cmakeFiles FindChoqok.cmake FindQJson.cmake FindQtOAuth.cmake FindQtIndicate.cmake) +set(cmakeFiles FindChoqok.cmake) install( FILES ${cmakeFiles} DESTINATION ${DATA_INSTALL_DIR}/cmake/modules ) \ No newline at end of file diff -Nru choqok-1.3/debian/changelog choqok-1.4/debian/changelog --- choqok-1.3/debian/changelog 2012-09-13 13:57:19.000000000 +0200 +++ choqok-1.4/debian/changelog 2013-11-22 15:40:53.000000000 +0100 @@ -1,3 +1,22 @@ +choqok (1.4-1ubuntu1) trusty; urgency=low + + * Merge from Debian unstable. (LP: #1254058) Remaining changes: + - debian/patches/kubuntu_01_consumerkey.diff: + + Switch to custom Kubuntu OAuth id. + * Drop B-D libattica-dev (>= 0.4.1) as trusty got already 0.4.2. + * Upload fixes: + - New upstream release. (LP: #1225133) + - Support Twitter API 1.1. (LP: #1220049) + + -- Artur Rona Fri, 22 Nov 2013 15:11:10 +0100 + +choqok (1.4-1) unstable; urgency=low + + * New upstream release. (Closes: #723653, #712188) + * Bump standards compliance to 3.9.4 (no changes) + + -- Noah Meyerhans Mon, 23 Sep 2013 11:34:45 -0700 + choqok (1.3-1ubuntu2) quantal; urgency=low * Rebuild against libattica0.4 @@ -18,6 +37,14 @@ -- Noah Meyerhans Mon, 09 Apr 2012 22:39:53 -0700 +choqok (1.2-1) unstable; urgency=low + + * New upstream release. + * Don't install cmake files. (Closes: 635990) + * Use source format 3.0 (quilt) + + -- Noah Meyerhans Thu, 05 Jan 2012 23:23:54 -0800 + choqok (1.2-0ubuntu2) precise; urgency=low * Rebuild against libattica0.3. diff -Nru choqok-1.3/debian/control choqok-1.4/debian/control --- choqok-1.3/debian/control 2012-09-13 13:59:51.000000000 +0200 +++ choqok-1.4/debian/control 2013-11-22 15:08:26.000000000 +0100 @@ -5,8 +5,8 @@ XSBC-Original-Maintainer: Noah Meyerhans Build-Depends: debhelper (>= 7), cmake, kdelibs5-dev (>= 4:4.3.0), docbook2x, cdbs, pkg-kde-tools, libqoauth-dev (>= 1.0-2), libqjson-dev, docbook-xml, - libattica-dev (>= 0.4.1) -Standards-Version: 3.9.3.1 + libattica-dev +Standards-Version: 3.9.4 Homepage: http://choqok.gnufolks.org Vcs-Browser: http://git.debian.org/?p=collab-maint/choqok.git Vcs-Git: http://git.debian.org/git/collab-maint/choqok.git diff -Nru choqok-1.3/debian/patches/cmake-install-fix choqok-1.4/debian/patches/cmake-install-fix --- choqok-1.3/debian/patches/cmake-install-fix 2012-05-25 04:16:56.000000000 +0200 +++ choqok-1.4/debian/patches/cmake-install-fix 1970-01-01 01:00:00.000000000 +0100 @@ -1,14 +0,0 @@ -Description: Don't install cmake files for other packages. -Upstream installs some cmake modules for finding packages like QJson. Choqok -should not install these files, as it is the responsibility of the other -packages to provide them. ---- choqok-1.2.orig/cmake/modules/CMakeLists.txt -+++ choqok-1.2/cmake/modules/CMakeLists.txt -@@ -1,4 +1,4 @@ - # install the cmake files - --set(cmakeFiles FindChoqok.cmake FindQJson.cmake FindQtOAuth.cmake FindQtIndicate.cmake) --install( FILES ${cmakeFiles} DESTINATION ${DATA_INSTALL_DIR}/cmake/modules ) -\ No newline at end of file -+set(cmakeFiles FindChoqok.cmake) -+install( FILES ${cmakeFiles} DESTINATION ${DATA_INSTALL_DIR}/cmake/modules ) diff -Nru choqok-1.3/debian/patches/series choqok-1.4/debian/patches/series --- choqok-1.3/debian/patches/series 2012-05-25 04:17:09.000000000 +0200 +++ choqok-1.4/debian/patches/series 2013-11-22 15:11:49.000000000 +0100 @@ -1,2 +1 @@ -cmake-install-fix kubuntu_01_consumerkey.diff diff -Nru choqok-1.3/doc/index.docbook choqok-1.4/doc/index.docbook --- choqok-1.3/doc/index.docbook 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/doc/index.docbook 2013-08-31 05:51:23.000000000 +0200 @@ -7,7 +7,7 @@ ]> - + The &choqok; Handbook @@ -39,7 +39,7 @@ &choqok; is a micro-blogging client for KDE -(http://choqok.gnufolks.org). +(http://choqok.gnufolks.org). @@ -53,7 +53,7 @@ - + Introduction &choqok; is a micro-blogging client which currently supports @@ -66,10 +66,10 @@ web. - + Using &choqok; - + Getting Started In the &choqok; main window there are some timelines allowing you to see @@ -80,7 +80,7 @@ in &choqok;. -Here's a screenshot of the &choqok; main window +Here is a screenshot of the &choqok; main window @@ -107,8 +107,8 @@ 140 characters. The number of characters left is displayed in green on bottom right under the text area. The color changes to orange when you reach the 30 characters limit then to red when you reach 0. If your message is longer -than 140 characters, you'll be asked if you want to post it anyway. If you -agree, it'll be posted up to 140 characters. +than 140 characters, you will be asked if you want to post it anyway. If you +agree, it will be posted up to 140 characters. The Home tab displays the timeline which consists in all posts you and your friends wrote. A post using Identi.ca is called a dent @@ -123,14 +123,14 @@ - + Searching You can search through services for something (anything that -the service-search api can offer to a client). +the service-search API can offer to a client). This function is available via the Tools - Search menu (shortcut: +Search menu (shortcut: &Ctrl; F) For example you can search for a special word in all users' posts: @@ -149,11 +149,11 @@ - + Configuring an Account Open the &choqok; configuration window via -Settings Configure +Settings Configure &choqok;... then go to the Accounts tab and click the Add button, the Add a new account window will appear. @@ -177,13 +177,13 @@ You can configure other accounts subsequently. - + Special Features You can disable the timeline updating of &choqok; (the timeline is the list of -posts by you and your friends). +posts by you and your friends). Another special feature is the ability to notify the user about new @@ -337,7 +337,7 @@ Configure the keyboard shortcuts used by &choqok;. - + @@ -370,12 +370,12 @@ -Credits and Licenses +Credits and License -&choqok; copyright 2008-2009 Mehrdad Momeny (mehrdad.momeny AT gmail.com) +&choqok; copyright 2008-2009 Mehrdad Momeny mehrdad.momeny@gmail.com + +Documentation copyright 2009 Mehrdad Momeny mehrdad.momeny@gmail.com -Documentation copyright 2009 Mehrdad Momeny (mehrdad.momeny AT -gmail.com) diff -Nru choqok-1.3/helperlibs/twitterapihelper/twitterapicomposerwidget.cpp choqok-1.4/helperlibs/twitterapihelper/twitterapicomposerwidget.cpp --- choqok-1.3/helperlibs/twitterapihelper/twitterapicomposerwidget.cpp 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/helperlibs/twitterapihelper/twitterapicomposerwidget.cpp 2013-08-31 05:51:23.000000000 +0200 @@ -68,7 +68,7 @@ if(theAccount == currentAccount()){ int row = d->model->rowCount(); d->model->insertRow(row); - QString name = widget->currentPost().author.userName; + QString name = widget->currentPost()->author.userName; if( !name.isEmpty() && !d->model->stringList().contains(name) ) d->model->setData(d->model->index(row), name); } diff -Nru choqok-1.3/helperlibs/twitterapihelper/twitterapimicroblog.cpp choqok-1.4/helperlibs/twitterapihelper/twitterapimicroblog.cpp --- choqok-1.3/helperlibs/twitterapihelper/twitterapimicroblog.cpp 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/helperlibs/twitterapihelper/twitterapimicroblog.cpp 2013-08-31 05:51:23.000000000 +0200 @@ -83,9 +83,9 @@ { kDebug(); KConfigGroup grp(KGlobal::config(), "TwitterApi"); - format = grp.readEntry("format", "xml"); + format = grp.readEntry("format", "json"); - setCharLimit(140); + setCharLimit(140); //TODO: See if we can ask twitter for the char limit and make it dynamic QStringList timelineTypes; timelineTypes<< "Home" << "Reply" << "Inbox" << "Outbox" << "Favorite" << "ReTweets" << "Public"; setTimelineNames(timelineTypes); @@ -93,7 +93,7 @@ timelineApiPath["Reply"] = "/statuses/replies.%1"; timelineApiPath["Inbox"] = "/direct_messages.%1"; timelineApiPath["Outbox"] = "/direct_messages/sent.%1"; - timelineApiPath["Favorite"] = "/favorites.%1"; + timelineApiPath["Favorite"] = "/favorites/list.%1"; timelineApiPath["ReTweets"] = "/statuses/retweets_of_me.%1"; timelineApiPath["Public"] = "/statuses/public_timeline.%1"; setTimelineInfos(); @@ -247,7 +247,7 @@ } QList< Choqok::UI::PostWidget *>::const_iterator it, endIt = timeline.constEnd(); for ( it = timeline.constBegin(); it != endIt; ++it ) { - const Choqok::Post *post = &((*it)->currentPost()); + const Choqok::Post *post = ((*it)->currentPost()); KConfigGroup grp( &postsBackup, post->creationDateTime.toString() ); grp.writeEntry( "creationDateTime", post->creationDateTime ); grp.writeEntry( "postId", post->postId.toString() ); @@ -404,19 +404,12 @@ } else { KIO::StoredTransferJob *stj = qobject_cast< KIO::StoredTransferJob * > ( job ); if ( !post->isPrivate ) { - if(format=="xml"){ - readPostFromXml ( theAccount, stj->data(), post ); - } else { - readPostFromJson ( theAccount, stj->data(), post ); - } - if ( post->isError ) { - QString errorMsg; - if(format == "json") - errorMsg = checkJsonForError(stj->data()); - else - errorMsg = checkXmlForError(stj->data()); - if( errorMsg.isEmpty() ){ - kError() << "Creating post: XML parsing error: "<< stj->data() ; + readPost ( theAccount, stj->data(), post ); + if ( post->isError ) { + QString errorMsg; + errorMsg = checkForError(stj->data()); + if( errorMsg.isEmpty() ){ // ???? If empty, why is there an error? + kError() << "Creating post: JSON parsing error: "<< stj->data() ; emit errorPost ( theAccount, post, Choqok::MicroBlog::ParsingError, i18n ( "Creating the new post failed. The result data could not be parsed." ), MicroBlog::Critical ); } else { @@ -497,17 +490,10 @@ i18n("Fetching the new post failed. %1", job->errorString()), Low ); } else { KIO::StoredTransferJob *stj = qobject_cast ( job ); - if(format=="json"){ - readPostFromJson ( theAccount, stj->data(), post ); - } else { - readPostFromXml ( theAccount, stj->data(), post ); - } + readPost ( theAccount, stj->data(), post ); if ( post->isError ) { QString errorMsg; - if(format == "json") - errorMsg = checkJsonForError(stj->data()); - else - errorMsg = checkXmlForError(stj->data()); + errorMsg = checkForError(stj->data()); if( errorMsg.isEmpty() ){ kDebug() << "Parsing Error"; emit errorPost ( theAccount, post, Choqok::MicroBlog::ParsingError, @@ -522,7 +508,6 @@ } else { post->isError = true; emit postFetched ( theAccount, post ); - // mFetchPostMap.remove(job); } } } @@ -534,9 +519,9 @@ TwitterApiAccount* account = qobject_cast(theAccount); KUrl url = account->apiUrl(); if ( !post->isPrivate ) { - url.addPath ( "/statuses/destroy/" + post->postId + ".xml" ); + url.addPath ( "/statuses/destroy/" + post->postId + ".json" ); } else { - url.addPath ( "/direct_messages/destroy/" + post->postId + ".xml" ); + url.addPath ( "/direct_messages/destroy/" + post->postId + ".json" ); } KIO::StoredTransferJob *job = KIO::storedHttpPost ( QByteArray(), url, KIO::HideProgressInfo ) ; if ( !job ) { @@ -568,7 +553,7 @@ i18n("Removing the post failed. %1", job->errorString() ), MicroBlog::Critical ); } else { KIO::StoredTransferJob *stj = qobject_cast(job); - QString errMsg = checkXmlForError(stj->data()); + QString errMsg = checkForError(stj->data()); if( errMsg.isEmpty() ){ emit postRemoved ( theAccount, post ); } else { @@ -584,8 +569,12 @@ kDebug(); TwitterApiAccount* account = qobject_cast(theAccount); KUrl url = account->apiUrl(); - url.addPath ( "/favorites/create/" + postId + ".xml" ); - KIO::StoredTransferJob *job = KIO::storedHttpPost ( QByteArray(), url, KIO::HideProgressInfo ) ; + //url.addPath ( QString("/favorites/create.json?id=%1").arg(postId)); + url.addPath ( "/favorites/create.json" ); + QByteArray data; + data = "id="; + data += postId.toLocal8Bit(); + KIO::StoredTransferJob *job = KIO::storedHttpPost ( data, url, KIO::HideProgressInfo ) ; if ( !job ) { kDebug() << "Cannot create an http POST request!"; // QString errMsg = i18n ( "The Favorite creation failed. Cannot create an http POST request. " @@ -614,7 +603,7 @@ emit error ( theAccount, CommunicationError, i18n( "Favorite creation failed. %1", job->errorString() ) ); } else { KIO::StoredTransferJob* stJob = qobject_cast( job ); - QString err = checkXmlForError(stJob->data()); + QString err = checkForError(stJob->data()); if( !err.isEmpty() ){ emit error(theAccount, ServerError, err, Critical); return; @@ -629,8 +618,11 @@ kDebug(); TwitterApiAccount* account = qobject_cast(theAccount); KUrl url = account->apiUrl(); - url.addPath ( "/favorites/destroy/" + postId + ".xml" ); - KIO::StoredTransferJob *job = KIO::storedHttpPost ( QByteArray(), url, KIO::HideProgressInfo ) ; + url.addPath ( "/favorites/destroy.json" ); + QByteArray data; + data = "id="; + data += postId.toLocal8Bit(); + KIO::StoredTransferJob *job = KIO::storedHttpPost ( data, url, KIO::HideProgressInfo ) ; if ( !job ) { kDebug() << "Cannot create an http POST request!"; // QString errMsg = i18n ( "Removing the favorite failed. Cannot create an http POST request. " @@ -659,7 +651,7 @@ emit error ( theAccount, CommunicationError, i18n("Removing the favorite failed. %1", job->errorString() ) ); } else { KIO::StoredTransferJob* stJob = qobject_cast( job ); - QString err = checkXmlForError(stJob->data()); + QString err = checkForError(stJob->data()); if( !err.isEmpty() ){ emit error(theAccount, ServerError, err, Critical); return; @@ -682,7 +674,7 @@ kDebug(); TwitterApiAccount* account = qobject_cast(theAccount); KUrl url = account->apiUrl(); - url.addPath( QString("/statuses/friends.xml") ); + url.addPath( QString("/statuses/friends.json") ); KUrl tmpUrl(url); url.addQueryItem( "cursor", d->friendsCursor ); QOAuth::ParamMap params; @@ -712,7 +704,7 @@ return; } QStringList newList; - newList = readUsersScreenNameFromXml( theAccount, stJob->data() ); + newList = readUsersScreenName( theAccount, stJob->data() ); friendsList << newList; if ( newList.count() == 100 ) { requestFriendsScreenName( theAccount ); @@ -744,30 +736,45 @@ int countOfPost = Choqok::BehaviorSettings::countOfPosts(); QOAuth::ParamMap params; - if( account->usingOAuth() ){ + // needed because lists have different parameter names but + // returned timelines have the same JSON format + if(timelineApiPath[type].contains("lists/statuses")) { + + // type contains @username/timelinename, we only need the timeline name here + int index = type.indexOf("/"); + QString slug = type.mid(index + 1); + + url.addQueryItem("slug", slug); + params.insert("slug", slug.toLatin1()); + + url.addQueryItem("owner_screen_name", theAccount->username()); + params.insert("owner_screen_name", theAccount->username().toLatin1()); + } else { + if( account->usingOAuth() ){ //TODO: Check if needed + if ( !latestStatusId.isEmpty() ) { + params.insert ( "since_id", latestStatusId.toLatin1() ); + countOfPost = 200; + } + params.insert ( "count", QByteArray::number( countOfPost ) ); + if ( !maxId.isEmpty() ) { + params.insert ( "max_id", maxId.toLatin1() ); + } + if ( page ) { + params.insert ( "page", QByteArray::number ( page ) ); + } + } if ( !latestStatusId.isEmpty() ) { - params.insert ( "since_id", latestStatusId.toLatin1() ); + url.addQueryItem ( "since_id", latestStatusId ); countOfPost = 200; } - params.insert ( "count", QByteArray::number( countOfPost ) ); + url.addQueryItem ( "count", QString::number( countOfPost ) ); if ( !maxId.isEmpty() ) { - params.insert ( "max_id", maxId.toLatin1() ); + url.addQueryItem ( "max_id", maxId ); } if ( page ) { - params.insert ( "page", QByteArray::number ( page ) ); + url.addQueryItem ( "page", QString::number ( page ) ); } } - if ( !latestStatusId.isEmpty() ) { - url.addQueryItem ( "since_id", latestStatusId ); - countOfPost = 200; - } - url.addQueryItem ( "count", QString::number( countOfPost ) ); - if ( !maxId.isEmpty() ) { - url.addQueryItem ( "max_id", maxId ); - } - if ( page ) { - url.addQueryItem ( "page", QString::number ( page ) ); - } kDebug() << "Latest " << type << " Id: " << latestStatusId;// << " apiReq: " << url; KIO::StoredTransferJob *job = KIO::storedGet ( url, KIO::Reload, KIO::HideProgressInfo ) ; @@ -803,17 +810,10 @@ KIO::StoredTransferJob* j = qobject_cast( job ); QList list; if( type=="Inbox" || type=="Outbox" ) { - if(format=="json"){ - list = readDMessagesFromJson( theAccount, j->data() ); - } else { - list = readDMessagesFromXml( theAccount, j->data() ); - } + list = readDirectMessages( theAccount, j->data() ); } else { - if(format=="json"){ - list = readTimelineFromJson( theAccount, j->data() ); - } else { - list = readTimelineFromXml( theAccount, j->data() ); - } + list = readTimeline( theAccount, j->data() ); + } if(!list.isEmpty()) { mTimelineLatestId[theAccount][type] = list.last()->postId; @@ -837,304 +837,6 @@ return auth; } -Choqok::Post * TwitterApiMicroBlog::readPostFromXml ( Choqok::Account* theAccount, - const QByteArray& buffer, Choqok::Post* post ) -{ - QDomDocument document; - document.setContent ( buffer ); - QDomElement root = document.documentElement(); - - if ( !root.isNull() ) { - return readPostFromDomElement ( theAccount, root.toElement(), post ); - } else { - if(!post){ - kError()<<"TwitterApiMicroBlog::readPostFromXml: post is NULL!"; - post = new Choqok::Post; - } - QString err = checkXmlForError(buffer); - if(!err.isEmpty()) - Q_EMIT error(theAccount, ServerError, err); - post->isError = true; - return post; - } -} - -Choqok::Post * TwitterApiMicroBlog::readPostFromDomElement ( Choqok::Account* theAccount, - const QDomElement &root, Choqok::Post* post ) -{ - if(!post){ - kError()<<"TwitterApiMicroBlog::readPostFromDomElement: post is NULL!"; - return 0; - } - - if ( root.tagName() != "status" ) { - kDebug() << "there's no status tag in XML, Error!!\t" - <<"Tag is: "<isError = true ; - return post; - } - QDomNode node2 = root.firstChild(); - - return readPostFromDomNode(theAccount, node2, post);; -} - -Choqok::Post* TwitterApiMicroBlog::readPostFromDomNode(Choqok::Account* theAccount, - QDomNode node, Choqok::Post* post) -{ - QString timeStr; - Choqok::Post* repeatedPost = 0; - while ( !node.isNull() ) { - QDomElement elm = node.toElement(); - if ( elm.tagName() == "created_at" ) - timeStr = elm.text(); - else if ( elm.tagName() == "text" ) - post->content = elm.text(); - else if ( elm.tagName() == "id" ) - post->postId = elm.text(); - else if ( elm.tagName() == "in_reply_to_status_id" ) - post->replyToPostId = elm.text(); - else if ( elm.tagName() == "in_reply_to_user_id" ) - post->replyToUserId = elm.text(); - else if ( elm.tagName() == "in_reply_to_screen_name" ) - post->replyToUserName = elm.text(); - else if ( elm.tagName() == "source" ) - post->source = elm.text(); - else if ( elm.tagName() == "favorited" ) - post->isFavorited = ( elm.text() == "true" ) ? true : false; - else if ( elm.tagName() == "statusnet:conversation_id" ) - post->conversationId = elm.text(); - else if ( elm.tagName() == "user" ) { - QDomNode node3 = node.firstChild(); - while ( !node3.isNull() ) { - QDomElement elm3 = node3.toElement(); - if ( elm3.tagName() == "screen_name" ) { - post->author.userName = elm3.text(); - } else if ( elm3.tagName() == "profile_image_url" ) { - post->author.profileImageUrl = elm3.text(); - } else if ( elm3.tagName() == "id" ) { - post->author.userId = elm3.text(); - } else if ( elm3.tagName() == "name" ) { - post->author.realName = elm3.text(); - } else if ( elm3.tagName() == QString ( "description" ) ) { - post->author.description = elm3.text(); - } else if ( elm3.tagName() == "statusnet:profile_url" ) { - post->author.homePageUrl = elm3.text(); - } else if ( elm3.tagName() == "protected" ) { - post->author.isProtected = elm3.text().contains("true") ? true : false; - } - node3 = node3.nextSibling(); - } - } else if ( elm.tagName() == "retweeted_status" ) - repeatedPost = readPostFromDomNode( theAccount, elm.firstChild(), new Choqok::Post); - - node = node.nextSibling(); - } - if(repeatedPost){ - setRepeatedOfInfo(post,repeatedPost); - delete repeatedPost; - } - post->link = postUrl(theAccount, post->author.userName, post->postId); - post->creationDateTime = dateFromString ( timeStr ); - post->isRead = post->isFavorited || (post->repeatedFromUsername.compare(theAccount->username(), Qt::CaseInsensitive) == 0); - return post; -} - -QList TwitterApiMicroBlog::readTimelineFromXml ( Choqok::Account* theAccount, - const QByteArray &buffer ) -{ - QDomDocument document; - QList postList; - document.setContent ( buffer ); - QDomElement root = document.documentElement(); - - if ( root.tagName() != "statuses" ) { - // QString err = i18n( "Data returned from server is corrupted." ); - kDebug() << "there's no statuses tag in XML\t the XML is: \n" << buffer; - QString err = checkXmlForError(buffer); - if(!err.isEmpty()) - Q_EMIT error(theAccount, ServerError, err); - return postList; - } - QDomNode node = root.firstChild(); - while ( !node.isNull() ) { - postList.prepend( readPostFromDomElement ( theAccount, node.toElement(), new Choqok::Post ) ); - node = node.nextSibling(); - } - return postList; -} - -Choqok::Post * TwitterApiMicroBlog::readDMessageFromXml (Choqok::Account *theAccount, const QByteArray &buffer ) -{ - QDomDocument document; - document.setContent ( buffer ); - QDomElement root = document.documentElement(); - - if ( !root.isNull() ) { - return readDMessageFromDomElement ( theAccount, root.toElement() ); - } else { - Choqok::Post *post = new Choqok::Post; - post->isError = true; - QString err = checkXmlForError(buffer); - if(!err.isEmpty()) - Q_EMIT error(theAccount, ServerError, err); - return post; - } -} - -Choqok::Post * TwitterApiMicroBlog::readDMessageFromDomElement ( Choqok::Account* theAccount, - const QDomElement& root ) -{ - Choqok::Post *msg = new Choqok::Post; - - if ( root.tagName() != "direct_message" ) { - kDebug() << "there's no direct_message tag in XML, Error!!\t" - <<"Tag is: "<isError = true; - return msg; - } - QDomNode node2 = root.firstChild(); - msg->isPrivate = true; - QString senderId, recipientId, timeStr, senderScreenName, recipientScreenName, senderProfileImageUrl, - senderName, senderDescription, recipientProfileImageUrl, recipientName, recipientDescription; - while ( !node2.isNull() ) { - QDomElement elm = node2.toElement(); - if ( elm.tagName() == "created_at" ) - timeStr = elm.text(); - else if ( elm.tagName() == "text" ) - msg->content = elm.text(); - else if ( elm.tagName() == "id" ) - msg->postId = elm.text(); - else if ( elm.tagName() == "sender_id" ) - senderId = elm.text(); - else if ( elm.tagName() == "recipient_id" ) - recipientId = elm.text(); - else if ( elm.tagName() == "sender_screen_name" ) - senderScreenName = elm.text(); - else if ( elm.tagName() == "recipient_screen_name" ) - recipientScreenName = elm.text(); - else if ( elm.tagName() == "sender" ) { - QDomNode node3 = node2.firstChild(); - while ( !node3.isNull() ) { - QDomElement elm3 = node3.toElement(); - if ( elm3.tagName() == "profile_image_url" ) { - senderProfileImageUrl = elm3.text(); - } else if ( elm3.tagName() == "name" ) { - senderName = elm3.text(); - } else if ( elm3.tagName() == "description" ) { - senderDescription = elm3.text(); - } - node3 = node3.nextSibling(); - } - } else - if ( elm.tagName() == "recipient" ) { - QDomNode node3 = node2.firstChild(); - while ( !node3.isNull() ) { - QDomElement elm3 = node3.toElement(); - if ( elm3.tagName() == "profile_image_url" ) { - recipientProfileImageUrl = elm3.text(); - } else if ( elm3.tagName() == "name" ) { - recipientName = elm3.text(); - } else if ( elm3.tagName() == "description" ) { - recipientDescription = elm3.text(); - } - node3 = node3.nextSibling(); - } - } - node2 = node2.nextSibling(); - } - msg->creationDateTime = dateFromString ( timeStr ); - if ( senderScreenName.compare( theAccount->username(), Qt::CaseInsensitive) == 0 ) { - msg->author.description = recipientDescription; - msg->author.userName = recipientScreenName; - msg->author.profileImageUrl = recipientProfileImageUrl; - msg->author.realName = recipientName; - msg->author.userId = recipientId; - msg->replyToUserId = recipientId; - msg->replyToUserName = recipientScreenName; - msg->isRead = true; - } else { - msg->author.description = senderDescription; - msg->author.userName = senderScreenName; - msg->author.profileImageUrl = senderProfileImageUrl; - msg->author.realName = senderName; - msg->author.userId = senderId; - msg->replyToUserId = recipientId; - msg->replyToUserName = recipientScreenName; - } - return msg; -} - -QList TwitterApiMicroBlog::readDMessagesFromXml (Choqok::Account *theAccount, - const QByteArray &buffer ) -{ - QDomDocument document; - QList postList; - document.setContent ( buffer ); - QDomElement root = document.documentElement(); - - if ( root.tagName() != "direct-messages" ) { - // QString err = i18n( "Data returned from server is corrupted." ); - kDebug() << "there's no statuses tag in XML\t the XML is: \n" << buffer.data(); - QString err = checkXmlForError(buffer); - if(!err.isEmpty()) - Q_EMIT error(theAccount, ServerError, err); - return postList; - } - QDomNode node = root.firstChild(); - while ( !node.isNull() ) { - postList.prepend( readDMessageFromDomElement ( theAccount, node.toElement() ) ); - node = node.nextSibling(); - } - return postList; -} - -QStringList TwitterApiMicroBlog::readUsersScreenNameFromXml( Choqok::Account* theAccount, const QByteArray& buffer ) -{ - kDebug(); - QStringList list; - QDomDocument document; - document.setContent( buffer ); - QDomElement root = document.documentElement(); - - if ( root.tagName() != "users_list" ) { - QString err = checkXmlForError(buffer); - if(!err.isEmpty()){ - emit error(theAccount, ServerError, err, Critical); - } else { - err = i18n( "Retrieving the friends list failed. The data returned from the server is corrupted." ); - kDebug() << "there's no users tag in XML\t the XML is: \n" << buffer; - emit error(theAccount, ParsingError, err, Critical); - list<friendsCursor = section.toElement().text(); - } - section = section.nextSibling(); - } - return list; -} - void TwitterApiMicroBlog::setRepeatedOfInfo(Choqok::Post* post, Choqok::Post* repeatedPost) { if( Choqok::AppearanceSettings::showRetweetsInChoqokWay() ) { @@ -1173,7 +875,6 @@ d->countOfTimelinesToSave = 0; foreach(Choqok::Account* acc, Choqok::AccountManager::self()->accounts()){ if(acc->microblog() == this){ -// acc->writeConfig(); d->countOfTimelinesToSave += acc->timelineNames().count(); } } @@ -1228,10 +929,12 @@ kDebug(); TwitterApiAccount* account = qobject_cast(theAccount); KUrl url = account->apiUrl(); - url.addPath( "/friendships/create/"+ username +".xml" ); + url.addPath( QString("/friendships/create.%1").arg(format)); + QByteArray data; + data = "screen_name=" + username.toLocal8Bit(); kDebug()<(job); - Choqok::User *user = readUserInfoFromXml(stj->data()); + Choqok::User *user = readUserInfo(stj->data()); if( user /*&& user->userName.compare(username, Qt::CaseInsensitive)*/ ){ emit friendshipCreated(theAccount, username); Choqok::NotifyManager::success( i18n("You are now listening to %1's posts.", username) ); theAccount->setFriendsList(QStringList()); listFriendsUsername(theAccount); } else { - QString errorMsg = checkXmlForError(stj->data()); + QString errorMsg = checkForError(stj->data()); if( errorMsg.isEmpty() ){ kDebug()<<"Parse Error: "<data(); emit error( theAccount, ParsingError, @@ -1286,10 +989,12 @@ kDebug(); TwitterApiAccount* account = qobject_cast(theAccount); KUrl url = account->apiUrl(); - url.addPath( "/friendships/destroy/" + username + ".xml" ); + url.addPath( QString("/friendships/destroy.%1").arg(format)); + QByteArray data; + data = "screen_name=" + username.toLocal8Bit(); kDebug()<(job); - Choqok::User *user = readUserInfoFromXml(stj->data()); + Choqok::User *user = readUserInfo(stj->data()); if( user /*&& user->userName.compare( username, Qt::CaseInsensitive )*/ ){ emit friendshipDestroyed(theAccount, username); Choqok::NotifyManager::success( i18n("You will not receive %1's updates.", username) ); theAccount->setFriendsList(QStringList()); listFriendsUsername(theAccount); } else { - QString errorMsg = checkXmlForError(stj->data()); + QString errorMsg = checkForError(stj->data()); if( errorMsg.isEmpty() ){ kDebug()<<"Parse Error: "<data(); emit error( theAccount, ParsingError, @@ -1344,9 +1049,11 @@ kDebug(); TwitterApiAccount* account = qobject_cast(theAccount); KUrl url = account->apiUrl(); - url.addPath( "/blocks/create/"+ username +".xml" ); + url.addPath( QString("/blocks/create.%1").arg(format)); + QByteArray data; + data = "screen_name=" + username.toLocal8Bit(); - KIO::StoredTransferJob *job = KIO::storedHttpPost(QByteArray(), url, KIO::HideProgressInfo) ; + KIO::StoredTransferJob *job = KIO::storedHttpPost( data, url, KIO::HideProgressInfo) ; if ( !job ) { kError() << "Cannot create an http POST request!"; return; @@ -1373,7 +1080,7 @@ i18n("Blocking %1 failed. %2", username, job->errorString() ) ); return; } - Choqok::User *user = readUserInfoFromXml(qobject_cast(job)->data()); + Choqok::User *user = readUserInfo(qobject_cast(job)->data()); if( user /*&& user->userName.compare( username, Qt::CaseInsensitive )*/ ){ emit userBlocked(theAccount, username); Choqok::NotifyManager::success( i18n("You will no longer be disturbed by %1.", username) ); @@ -1383,81 +1090,17 @@ i18n("Blocking %1 failed: the server returned invalid data.", username ) ); } -// Choqok::User *user = readUserInfoFromXml(); TODO Check for failor! -} - -Choqok::User* TwitterApiMicroBlog::readUserInfoFromXml(const QByteArray& buffer) -{ - QDomDocument doc; - doc.setContent(buffer); - - QDomElement root = doc.documentElement(); - if ( root.tagName() != "user" ) { - kDebug()<<"There's no user tag in returned document from server! Data is:\n\t"<realName = elm.text(); - } else if(elm.tagName() == "screen_name"){ - user->userName = elm.text(); - } else if(elm.tagName() == "location"){ - user->location = elm.text(); - } else if(elm.tagName() == "description"){ - user->description = elm.text(); - } else if(elm.tagName() == "profile_image_url"){ - user->profileImageUrl = elm.text(); - } else if(elm.tagName() == "url") { - user->homePageUrl = elm.text(); - } else if(elm.tagName() == "followers_count") { - user->followersCount = elm.text().toUInt(); - } else if( elm.tagName() == "protected" ){ - if(elm.text() == "true"){ - user->isProtected = true; - } - } - node = node.nextSibling(); - } - return user; -} - -QString TwitterApiMicroBlog::checkXmlForError(const QByteArray& buffer) -{ - QDomDocument doc; - doc.setContent(buffer); - QDomElement root = doc.documentElement(); - if( root.tagName() == "hash" ){ - QDomNode node = root.firstChild(); - QString errorMessage; - QString request; - while( !node.isNull() ){ - QDomElement elm = node.toElement(); - if(elm.tagName() == "error"){ - errorMessage = elm.text(); - } else if(elm.tagName() == "request"){ - request = elm.text(); - } - node = node.nextSibling(); - } - kError()<<"Error at request "<parser; } -QString TwitterApiMicroBlog::checkJsonForError(const QByteArray& buffer) +QString TwitterApiMicroBlog::checkForError(const QByteArray& buffer) { bool ok; QVariantMap map = d->parser.parse(buffer, &ok).toMap(); @@ -1468,7 +1111,7 @@ return QString(); } -QList< Choqok::Post* > TwitterApiMicroBlog::readTimelineFromJson(Choqok::Account* theAccount, +QList< Choqok::Post* > TwitterApiMicroBlog::readTimeline(Choqok::Account* theAccount, const QByteArray& buffer) { QList postList; @@ -1479,10 +1122,10 @@ QVariantList::const_iterator it = list.constBegin(); QVariantList::const_iterator endIt = list.constEnd(); for(; it != endIt; ++it){ - postList.prepend(readPostFromJsonMap(theAccount, it->toMap(), new Choqok::Post)); + postList.prepend(readPost(theAccount, it->toMap(), new Choqok::Post)); } } else { - QString err = checkJsonForError(buffer); + QString err = checkForError(buffer); if(err.isEmpty()){ kError() << "JSON parsing failed.\nBuffer was: \n" << buffer; emit error(theAccount, ParsingError, i18n("Could not parse the data that has been received from the server.")); @@ -1494,7 +1137,7 @@ return postList; } -Choqok::Post* TwitterApiMicroBlog::readPostFromJson(Choqok::Account* theAccount, +Choqok::Post* TwitterApiMicroBlog::readPost(Choqok::Account* theAccount, const QByteArray& buffer, Choqok::Post* post) { @@ -1502,10 +1145,10 @@ QVariantMap map = d->parser.parse(buffer, &ok).toMap(); if ( ok ) { - return readPostFromJsonMap ( theAccount, map, post ); + return readPost ( theAccount, map, post ); } else { if(!post){ - kError()<<"TwitterApiMicroBlog::readPostFromXml: post is NULL!"; + kError()<<"TwitterApiMicroBlog::readPost: post is NULL!"; post = new Choqok::Post; } emit errorPost(theAccount, post, ParsingError, i18n("Could not parse the data that has been received from the server.")); @@ -1515,12 +1158,12 @@ } } -Choqok::Post* TwitterApiMicroBlog::readPostFromJsonMap(Choqok::Account* theAccount, +Choqok::Post* TwitterApiMicroBlog::readPost(Choqok::Account* theAccount, const QVariantMap& var, Choqok::Post* post) { if(!post){ - kError()<<"TwitterApiMicroBlog::readPostFromJsonMap: post is NULL!"; + kError()<<"TwitterApiMicroBlog::readPost: post is NULL!"; return 0; } post->content = var["text"].toString(); @@ -1541,7 +1184,7 @@ Choqok::Post* repeatedPost = 0; QVariantMap retweetedMap = var["retweeted_status"].toMap(); if( !retweetedMap.isEmpty() ){ - repeatedPost = readPostFromJsonMap( theAccount, retweetedMap, new Choqok::Post); + repeatedPost = readPost( theAccount, retweetedMap, new Choqok::Post); setRepeatedOfInfo(post, repeatedPost); delete repeatedPost; } @@ -1550,7 +1193,7 @@ return post; } -QList< Choqok::Post* > TwitterApiMicroBlog::readDMessagesFromJson(Choqok::Account* theAccount, +QList< Choqok::Post* > TwitterApiMicroBlog::readDirectMessages(Choqok::Account* theAccount, const QByteArray& buffer) { QList postList; @@ -1561,10 +1204,10 @@ QVariantList::const_iterator it = list.constBegin(); QVariantList::const_iterator endIt = list.constEnd(); for(; it != endIt; ++it){ - postList.prepend(readDMessageFromJsonMap(theAccount, it->toMap())); + postList.prepend(readDirectMessage(theAccount, it->toMap())); } } else { - QString err = checkJsonForError(buffer); + QString err = checkForError(buffer); if(err.isEmpty()){ kError() << "JSON parsing failed.\nBuffer was: \n" << buffer; emit error(theAccount, ParsingError, i18n("Could not parse the data that has been received from the server.")); @@ -1576,14 +1219,14 @@ return postList; } -Choqok::Post* TwitterApiMicroBlog::readDMessageFromJson(Choqok::Account* theAccount, +Choqok::Post* TwitterApiMicroBlog::readDirectMessage(Choqok::Account* theAccount, const QByteArray& buffer) { bool ok; QVariantMap map = d->parser.parse(buffer, &ok).toMap(); if ( ok ) { - return readDMessageFromJsonMap ( theAccount, map ); + return readDirectMessage ( theAccount, map ); } else { Choqok::Post *post = new Choqok::Post; post->isError = true; @@ -1591,7 +1234,7 @@ } } -Choqok::Post* TwitterApiMicroBlog::readDMessageFromJsonMap(Choqok::Account* theAccount, +Choqok::Post* TwitterApiMicroBlog::readDirectMessage(Choqok::Account* theAccount, const QVariantMap& var) { Choqok::Post *msg = new Choqok::Post; @@ -1636,14 +1279,32 @@ return msg; } -Choqok::User* TwitterApiMicroBlog::readUserInfoFromJson(const QByteArray& buffer) +Choqok::User* TwitterApiMicroBlog::readUserInfo(const QByteArray& buffer) { - kError()<<"TwitterApiMicroBlog::readUserInfoFromJson: NOT IMPLEMENTED YET!"; - Q_UNUSED(buffer); - return 0; + //kError()<<"TwitterApiMicroBlog::readUserInfoFromJson: NOT IMPLEMENTED YET!"; + bool ok; + Choqok::User *user = new Choqok::User; + QVariantMap json = d->parser.parse(buffer, &ok).toMap(); + if( ok ) { + // iterate over the list + user->description = json["description"].toString(); + user->followersCount = json["followers_count"].toUInt(); + user->homePageUrl = json["url"].toString(); + user->isProtected = json["protected"].toBool(); + user->location = json["location"].toString(); + user->profileImageUrl = json["profile_image_url"].toString(); + user->realName = json["name"].toString(); + user->userId = json["id"].toString(); + user->userName = json["screen_name"].toString(); + } else { + QString err = i18n( "Retrieving the friends list failed. The data returned from the server is corrupted." ); + kDebug() << "JSON parse error: the buffer is: \n" << buffer; + emit error(0, ParsingError, err, Critical); + } + return user; } -QStringList TwitterApiMicroBlog::readUsersScreenNameFromJson(Choqok::Account* theAccount, +QStringList TwitterApiMicroBlog::readUsersScreenName(Choqok::Account* theAccount, const QByteArray& buffer) { QStringList list; @@ -1664,7 +1325,7 @@ return list; } -Choqok::User TwitterApiMicroBlog::readUserFromJsonMap(Choqok::Account* theAccount, const QVariantMap& map) +Choqok::User TwitterApiMicroBlog::readUser(Choqok::Account* theAccount, const QVariantMap& map) { Q_UNUSED(theAccount); Choqok::User u; diff -Nru choqok-1.3/helperlibs/twitterapihelper/twitterapimicroblog.h choqok-1.4/helperlibs/twitterapihelper/twitterapimicroblog.h --- choqok-1.3/helperlibs/twitterapihelper/twitterapimicroblog.h 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/helperlibs/twitterapihelper/twitterapimicroblog.h 2013-08-31 05:51:23.000000000 +0200 @@ -209,49 +209,23 @@ void setRepeatedOfInfo(Choqok::Post* post, Choqok::Post* repeatedPost); - ///============================================== - /// XML: - ///============================================== - virtual Choqok::Post * readPostFromDomElement( Choqok::Account* theAccount, - const QDomElement& root, Choqok::Post* post ); - virtual Choqok::Post *readPostFromDomNode(Choqok::Account* theAccount, - QDomNode node, Choqok::Post* post); - virtual Choqok::Post * readPostFromXml( Choqok::Account* theAccount, - const QByteArray& buffer, Choqok::Post* post ); - virtual QList readTimelineFromXml( Choqok::Account* theAccount, const QByteArray& buffer ); - virtual Choqok::Post * readDMessageFromXml (Choqok::Account *theAccount, const QByteArray &buffer ); - virtual Choqok::Post * readDMessageFromDomElement (Choqok::Account *theAccount, const QDomElement& root ); - virtual QList readDMessagesFromXml (Choqok::Account *theAccount, const QByteArray &buffer ); - virtual QStringList readUsersScreenNameFromXml( Choqok::Account *theAccount, const QByteArray & buffer ); - virtual Choqok::User *readUserInfoFromXml( const QByteArray &buffer ); - /** - Checks xml returned from server for error, and return error string, Or an empty string if nothing found! - */ - virtual QString checkXmlForError(const QByteArray &buffer); - - ///=============================================== - /// JSON: - ///=============================================== - QJson::Parser *jsonParser(); - virtual Choqok::Post * readPostFromJsonMap( Choqok::Account* theAccount, + QJson::Parser *parser(); + virtual Choqok::Post * readPost( Choqok::Account* theAccount, const QVariantMap& var, Choqok::Post* post ); - virtual Choqok::Post * readPostFromJson( Choqok::Account* theAccount, + virtual Choqok::Post * readPost( Choqok::Account* theAccount, const QByteArray& buffer, Choqok::Post* post ); - virtual QList readTimelineFromJson( Choqok::Account* theAccount, const QByteArray& buffer ); - virtual Choqok::Post * readDMessageFromJson(Choqok::Account *theAccount, const QByteArray &buffer ); - virtual Choqok::Post * readDMessageFromJsonMap(Choqok::Account *theAccount, const QVariantMap& var ); - virtual QList readDMessagesFromJson(Choqok::Account *theAccount, const QByteArray &buffer ); - virtual QStringList readUsersScreenNameFromJson( Choqok::Account *theAccount, const QByteArray & buffer ); - virtual Choqok::User *readUserInfoFromJson( const QByteArray &buffer ); - virtual Choqok::User readUserFromJsonMap( Choqok::Account* theAccount, const QVariantMap& map ); + virtual QList readTimeline( Choqok::Account* theAccount, const QByteArray& buffer ); + virtual Choqok::Post * readDirectMessage(Choqok::Account *theAccount, const QByteArray &buffer ); + virtual Choqok::Post * readDirectMessage(Choqok::Account *theAccount, const QVariantMap& var ); + virtual QList readDirectMessages(Choqok::Account *theAccount, const QByteArray &buffer ); + virtual QStringList readUsersScreenName( Choqok::Account *theAccount, const QByteArray & buffer ); + virtual Choqok::User *readUserInfo( const QByteArray &buffer ); + virtual Choqok::User readUser( Choqok::Account* theAccount, const QVariantMap& map ); /** - Checks xml returned from server for error, and return error string, Or an empty string if nothing found! + Checks json returned from server for error, and return error string, Or an empty string if nothing found! */ - virtual QString checkJsonForError(const QByteArray &buffer); - ///================================================= - /// End JSON - ///================================================= + virtual QString checkForError(const QByteArray &buffer); ///========================================== diff -Nru choqok-1.3/helperlibs/twitterapihelper/twitterapimicroblogwidget.cpp choqok-1.4/helperlibs/twitterapihelper/twitterapimicroblogwidget.cpp --- choqok-1.3/helperlibs/twitterapihelper/twitterapimicroblogwidget.cpp 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/helperlibs/twitterapihelper/twitterapimicroblogwidget.cpp 2013-08-31 05:51:23.000000000 +0200 @@ -95,7 +95,7 @@ Choqok::UI::MicroBlogWidget::initUi(); connect(timelinesTabWidget(), SIGNAL(contextMenu(QWidget*,QPoint)), this, SLOT(slotContextMenu(QWidget*,QPoint))); - connect(timelinesTabWidget(), SIGNAL(currentChanged(int)), SLOT(slotCurrentTimelineChanged(int)) ); +// connect(timelinesTabWidget(), SIGNAL(currentChanged(int)), SLOT(slotCurrentTimelineChanged(int)) ); // d->btnCloseSearch->setIcon(KIcon("tab-close")); // d->btnCloseSearch->setAutoRaise(true); // d->btnCloseSearch->setToolTip(i18nc("Close a timeline", "Close Timeline")); @@ -103,7 +103,7 @@ // timelinesTabWidget()->setTabAlongsideWidget( d->btnCloseSearch ); // connect(d->btnCloseSearch, SIGNAL(clicked(bool)), SLOT(slotCloseCurrentSearch()) ); - slotCurrentTimelineChanged(timelinesTabWidget()->currentIndex()); +// slotCurrentTimelineChanged(timelinesTabWidget()->currentIndex()); } TwitterApiMicroBlogWidget::~TwitterApiMicroBlogWidget() @@ -122,7 +122,7 @@ mSearchTimelines.value(name)->addNewPosts(postsList); }else{ if( postsList.isEmpty() ){ - KMessageBox::sorry(this, i18n("The search result is empty.")); + addSearchTimelineWidgetToUi( name, info )->addPlaceholderMessage(i18n("(The search result is empty.)")); } else { addSearchTimelineWidgetToUi( name, info )->addNewPosts(postsList); } @@ -174,17 +174,17 @@ return mbw; } -void TwitterApiMicroBlogWidget::slotCurrentTimelineChanged(int index) -{ - if ( index > -1 ) { - Choqok::UI::TimelineWidget *stw = - qobject_cast(timelinesTabWidget()->widget(index)); +// void TwitterApiMicroBlogWidget::slotCurrentTimelineChanged(int index) +// { +// if ( index > -1 ) { +// Choqok::UI::TimelineWidget *stw = +// qobject_cast(timelinesTabWidget()->widget(index)); // if(stw->isClosable()) // d->btnCloseSearch->setEnabled(true); // else // d->btnCloseSearch->setEnabled(false); - } -} +// } +// } void TwitterApiMicroBlogWidget::slotCloseCurrentSearch() { @@ -257,18 +257,26 @@ { kDebug(); Choqok::UI::TimelineWidget *sWidget = qobject_cast(w); + KMenu menu; + KAction *mar = 0; + KAction *ac = 0; + if(sWidget->unreadCount() > 0) { + mar = new KAction(KIcon("mail-mark-read"), i18n("Mark timeline as read"), &menu); + menu.addAction(mar); + } if(sWidget->isClosable()){ - KMenu menu; - KAction *ac = new KAction(KIcon("tab-close"), i18n("Close Timeline"), &menu); + ac = new KAction(KIcon("tab-close"), i18n("Close Timeline"), &menu); KAction *closeAll = new KAction(KIcon("tab-close"), i18n("Close All"), &menu); connect( closeAll, SIGNAL(triggered(Qt::MouseButtons,Qt::KeyboardModifiers)), this, SLOT(closeAllSearches()) ); menu.addAction(ac); menu.addAction(closeAll); - QAction *res = menu.exec(pt); - if(res == ac){ - closeSearch(sWidget); - } + } + QAction *res = menu.exec(pt); + if(ac && res == ac){ + closeSearch(sWidget); + } else if (res == mar) { + sWidget->markAllAsRead(); } } diff -Nru choqok-1.3/helperlibs/twitterapihelper/twitterapimicroblogwidget.h choqok-1.4/helperlibs/twitterapihelper/twitterapimicroblogwidget.h --- choqok-1.3/helperlibs/twitterapihelper/twitterapimicroblogwidget.h 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/helperlibs/twitterapihelper/twitterapimicroblogwidget.h 2013-08-31 05:51:23.000000000 +0200 @@ -46,7 +46,7 @@ void closeAllSearches(); void slotAccountModified(Choqok::Account *account); void slotCloseCurrentSearch(); - void slotCurrentTimelineChanged(int); +// void slotCurrentTimelineChanged(int); virtual void saveSearchTimelinesState(); virtual void loadSearchTimelinesState(); virtual void slotSearchResultsReceived( const SearchInfo &info, diff -Nru choqok-1.3/helperlibs/twitterapihelper/twitterapipostwidget.cpp choqok-1.4/helperlibs/twitterapihelper/twitterapipostwidget.cpp --- choqok-1.3/helperlibs/twitterapihelper/twitterapipostwidget.cpp 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/helperlibs/twitterapihelper/twitterapipostwidget.cpp 2013-08-31 05:51:23.000000000 +0200 @@ -53,7 +53,7 @@ TwitterApiMicroBlog *mBlog; }; -TwitterApiPostWidget::TwitterApiPostWidget(Choqok::Account* account, const Choqok::Post &post, QWidget* parent) +TwitterApiPostWidget::TwitterApiPostWidget(Choqok::Account* account, Choqok::Post *post, QWidget* parent) : PostWidget(account, post, parent), d(new Private(account)) { mainWidget()->document()->addResource( QTextDocument::ImageResource, QUrl("icon://thread"), @@ -72,17 +72,17 @@ KPushButton *btnRe = addButton( "btnReply",i18nc( "@info:tooltip", "Reply" ), "edit-undo" ); QMenu *menu = new QMenu(btnRe); - KAction *actRep = new KAction(KIcon("edit-undo"), i18n("Reply to %1", currentPost().author.userName), menu); + KAction *actRep = new KAction(KIcon("edit-undo"), i18n("Reply to %1", currentPost()->author.userName), menu); menu->addAction(actRep); connect( actRep, SIGNAL(triggered(bool)), SLOT(slotReply()) ); connect( btnRe, SIGNAL(clicked(bool)), SLOT(slotReply()) ); - KAction *actWrite = new KAction( KIcon("document-edit"), i18n("Write to %1", currentPost().author.userName), + KAction *actWrite = new KAction( KIcon("document-edit"), i18n("Write to %1", currentPost()->author.userName), menu ); menu->addAction(actWrite); connect( actWrite, SIGNAL(triggered(bool)), SLOT(slotWriteTo()) ); - if( !currentPost().isPrivate ) { + if( !currentPost()->isPrivate ) { KAction *actReplytoAll = new KAction(i18n("Reply to all"), menu); menu->addAction(actReplytoAll); connect( actReplytoAll, SIGNAL(triggered(bool)), SLOT(slotReplyToAll()) ); @@ -91,7 +91,7 @@ menu->setDefaultAction(actRep); btnRe->setDelayedMenu(menu); - if( !currentPost().isPrivate ) { + if( !currentPost()->isPrivate ) { d->btnFav = addButton( "btnFavorite",i18nc( "@info:tooltip", "Favorite" ), "rating" ); d->btnFav->setCheckable(true); connect( d->btnFav, SIGNAL(clicked(bool)), SLOT(setFavorite()) ); @@ -108,52 +108,52 @@ { QString sign; QString profUrl = currentAccount()->microblog()->profileUrl(currentAccount(), - currentPost().author.userName); - sign = "" + currentPost().author.userName + + currentPost()->author.userName); + sign = "author.description) + "\">" + currentPost()->author.userName + " - "; // - sign += "%1"; - if ( currentPost().isPrivate ) { - if( currentPost().replyToUserName.compare( currentAccount()->username(), Qt::CaseInsensitive ) == 0 ) { + sign += "link + + "\" title=\"" + currentPost()->creationDateTime.toString( Qt::DefaultLocaleLongDate ) + "\">%1"; + if ( currentPost()->isPrivate ) { + if( currentPost()->replyToUserName.compare( currentAccount()->username(), Qt::CaseInsensitive ) == 0 ) { sign.prepend( "From " ); } else { sign.prepend( "To " ); } } else { - if( !currentPost().source.isNull() ) { + if( !currentPost()->source.isNull() ) { sign += " - "; - if(currentPost().source == "ostatus" && !currentPost().author.homePageUrl.isEmpty()) { - KUrl srcUrl(currentPost().author.homePageUrl); + if(currentPost()->source == "ostatus" && !currentPost()->author.homePageUrl.isEmpty()) { + KUrl srcUrl(currentPost()->author.homePageUrl); sign += i18n( "%2", - currentPost().author.homePageUrl, + currentPost()->author.homePageUrl, srcUrl.host()); } else { - sign += currentPost().source; + sign += currentPost()->source; } } - if ( !currentPost().replyToPostId.isEmpty() ) { - QString link = currentAccount()->microblog()->postUrl( currentAccount(), currentPost().replyToUserName, - currentPost().replyToPostId ); + if ( !currentPost()->replyToPostId.isEmpty() ) { + QString link = currentAccount()->microblog()->postUrl( currentAccount(), currentPost()->replyToUserName, + currentPost()->replyToPostId ); QString showConMsg = i18n("Show Conversation"); QString threadlink; - if( currentPost().conversationId.isEmpty() ) - threadlink = "thread://" + currentPost().postId; + if( currentPost()->conversationId.isEmpty() ) + threadlink = "thread://" + currentPost()->postId; else - threadlink = "conversation://" + currentPost().conversationId; + threadlink = "conversation://" + currentPost()->conversationId; sign += " - " + i18n("in reply to @%4 %3", - currentPost().replyToPostId, link, webIconText, currentPost().replyToUserName) + ' '; + currentPost()->replyToPostId, link, webIconText, currentPost()->replyToUserName) + ' '; sign += ""; } } //ReTweet detection: - if( !currentPost().repeatedFromUsername.isEmpty() ){ + if( !currentPost()->repeatedFromUsername.isEmpty() ){ QString retweet; retweet += "
" - + d->mBlog->generateRepeatedByUserTooltip( QString("%2").arg( currentPost().repeatedFromUsername).arg(currentPost().repeatedFromUsername) ); + + d->mBlog->generateRepeatedByUserTooltip( QString("%2").arg( currentPost()->repeatedFromUsername).arg(currentPost()->repeatedFromUsername) ); sign.append(retweet); } sign.prepend("

"); @@ -164,16 +164,16 @@ void TwitterApiPostWidget::slotReply() { setReadWithSignal(); - if(currentPost().isPrivate){ + if(currentPost()->isPrivate){ TwitterApiAccount *account= qobject_cast( currentAccount() ); - d->mBlog->showDirectMessageDialog( account, currentPost().author.userName ); + d->mBlog->showDirectMessageDialog( account, currentPost()->author.userName ); } else { - QString replyto = QString("@%1").arg(currentPost().author.userName); - QString postId = currentPost().postId; - QString username = currentPost().author.userName; - if( !currentPost().repeatedFromUsername.isEmpty() ){ - replyto.prepend(QString("@%1 ").arg(currentPost().repeatedFromUsername)); - postId = currentPost().repeatedPostId; + QString replyto = QString("@%1").arg(currentPost()->author.userName); + QString postId = currentPost()->postId; + QString username = currentPost()->author.userName; + if( !currentPost()->repeatedFromUsername.isEmpty() ){ + replyto.prepend(QString("@%1 ").arg(currentPost()->repeatedFromUsername)); + postId = currentPost()->repeatedPostId; } emit reply( replyto, postId, username); } @@ -181,37 +181,35 @@ void TwitterApiPostWidget::slotWriteTo() { - emit reply( QString("@%1").arg(currentPost().author.userName), QString(), currentPost().author.userName ); + emit reply( QString("@%1").arg(currentPost()->author.userName), QString(), currentPost()->author.userName ); } void TwitterApiPostWidget::slotReplyToAll() { - QString txt = QString("@%1").arg(currentPost().author.userName); - emit reply(txt, currentPost().postId, currentPost().author.userName); + QString txt = QString("@%1").arg(currentPost()->author.userName); + emit reply(txt, currentPost()->postId, currentPost()->author.userName); } void TwitterApiPostWidget::setFavorite() { setReadWithSignal(); TwitterApiMicroBlog *mic = d->mBlog; - if(currentPost().isFavorited){ + if(currentPost()->isFavorited){ connect(mic, SIGNAL(favoriteRemoved(Choqok::Account*,QString)), this, SLOT(slotSetFavorite(Choqok::Account*,QString)) ); - mic->removeFavorite(currentAccount(), currentPost().postId); + mic->removeFavorite(currentAccount(), currentPost()->postId); } else { connect(mic, SIGNAL(favoriteCreated(Choqok::Account*,QString)), this, SLOT(slotSetFavorite(Choqok::Account*,QString)) ); - mic->createFavorite(currentAccount(), currentPost().postId); + mic->createFavorite(currentAccount(), currentPost()->postId); } } void TwitterApiPostWidget::slotSetFavorite(Choqok::Account *theAccount, const QString& postId) { - if(currentAccount() == theAccount && postId == currentPost().postId){ + if(currentAccount() == theAccount && postId == currentPost()->postId){ kDebug()<isFavorited = !currentPost()->isFavorited; updateFavStat(); disconnect(d->mBlog, SIGNAL(favoriteRemoved(Choqok::Account*,QString)), this, SLOT(slotSetFavorite(Choqok::Account*,QString)) ); @@ -222,7 +220,7 @@ void TwitterApiPostWidget::updateFavStat() { - if(currentPost().isFavorited){ + if(currentPost()->isFavorited){ d->btnFav->setChecked(true); d->btnFav->setIcon(KIcon("rating")); } else { @@ -236,7 +234,7 @@ QString scheme = url.scheme(); if( scheme == "replyto" ) { if(d->isBasePostShowed) { - setContent( prepareStatus(currentPost().content).replace("content).replace("isBasePostShowed = false; return; @@ -263,7 +261,7 @@ void TwitterApiPostWidget::slotBasePostFetched(Choqok::Account* theAccount, Choqok::Post* post) { - if(theAccount == currentAccount() && post && post->postId == currentPost().replyToPostId){ + if(theAccount == currentAccount() && post && post->postId == currentPost()->replyToPostId){ kDebug(); disconnect( currentAccount()->microblog(), SIGNAL(postFetched(Choqok::Account*,Choqok::Post*)), this, SLOT(slotBasePostFetched(Choqok::Account*,Choqok::Post*)) ); @@ -292,10 +290,10 @@ { setReadWithSignal(); ChoqokId postId; - if(currentPost().repeatedPostId.isEmpty()) - postId = currentPost().postId; + if(currentPost()->repeatedPostId.isEmpty()) + postId = currentPost()->postId; else - postId = currentPost().repeatedPostId; + postId = currentPost()->repeatedPostId; if( KMessageBox::questionYesNo(Choqok::UI::Global::mainWindow(), d->mBlog->repeatQuestion(), QString(), KStandardGuiItem::yes(), KStandardGuiItem::cancel(), "dontAskRepeatConfirm") == KMessageBox::Yes ) diff -Nru choqok-1.3/helperlibs/twitterapihelper/twitterapipostwidget.h choqok-1.4/helperlibs/twitterapihelper/twitterapipostwidget.h --- choqok-1.3/helperlibs/twitterapihelper/twitterapipostwidget.h 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/helperlibs/twitterapihelper/twitterapipostwidget.h 2013-08-31 05:51:23.000000000 +0200 @@ -34,7 +34,7 @@ { Q_OBJECT public: - TwitterApiPostWidget(Choqok::Account* account, const Choqok::Post &post, QWidget* parent = 0); + TwitterApiPostWidget(Choqok::Account* account, Choqok::Post *post, QWidget* parent = 0); ~TwitterApiPostWidget(); virtual void initUi(); diff -Nru choqok-1.3/helperlibs/twitterapihelper/twitterapisearch.cpp choqok-1.4/helperlibs/twitterapihelper/twitterapisearch.cpp --- choqok-1.3/helperlibs/twitterapihelper/twitterapisearch.cpp 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/helperlibs/twitterapihelper/twitterapisearch.cpp 2013-08-31 05:51:23.000000000 +0200 @@ -23,10 +23,27 @@ */ #include "twitterapisearch.h" +#include class TwitterApiSearch::Private { public: + Private() + { + monthes["Jan"] = 1; + monthes["Feb"] = 2; + monthes["Mar"] = 3; + monthes["Apr"] = 4; + monthes["May"] = 5; + monthes["Jun"] = 6; + monthes["Jul"] = 7; + monthes["Aug"] = 8; + monthes["Sep"] = 9; + monthes["Oct"] = 10; + monthes["Nov"] = 11; + monthes["Dec"] = 12; + } + QMap monthes; }; TwitterApiSearch::TwitterApiSearch(QObject* parent) @@ -54,6 +71,18 @@ requestSearchResults(info, sinceStatusId, count, page); } +QDateTime TwitterApiSearch::dateFromString ( const QString &date ) +{ + char s[10]; + int year, day, hours, minutes, seconds, tz; + sscanf( qPrintable ( date ), "%*s %s %d %d:%d:%d %d %d", s, &day, &hours, &minutes, &seconds, &tz, &year ); + int month = d->monthes[s]; + QDateTime recognized ( QDate ( year, month, day ), QTime ( hours, minutes, seconds ) ); + if(tz == 0)//tz is the timezone, in Twitter it's always UTC(0) in Identica it's local +/-NUMBER + recognized.setTimeSpec( Qt::UTC ); + return recognized.toLocalTime(); +} + SearchInfo::SearchInfo() { @@ -80,4 +109,4 @@ QString SearchInfo::toString() { return account->alias() + ",,," + QString::number(option) + ",,," + query + ",,," + QString::number(isBrowsable); -} +} \ No newline at end of file diff -Nru choqok-1.3/helperlibs/twitterapihelper/twitterapisearchdialog.cpp choqok-1.4/helperlibs/twitterapihelper/twitterapisearchdialog.cpp --- choqok-1.3/helperlibs/twitterapihelper/twitterapisearchdialog.cpp 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/helperlibs/twitterapihelper/twitterapisearchdialog.cpp 2013-08-31 05:51:23.000000000 +0200 @@ -55,7 +55,7 @@ : KDialog(parent), d(new Private(theAccount)) { kDebug(); - setWindowTitle(i18n("Search")); + setWindowTitle(i18nc("@title:window", "Search")); setAttribute(Qt::WA_DeleteOnClose); createUi(); d->searchQuery->setFocus(); @@ -87,7 +87,7 @@ d->searchQuery = new KLineEdit(this); queryLayout->addWidget(d->searchQuery); - setButtonText( Ok, i18n("Search") ); + setButtonText( Ok, i18nc("@action:button", "Search") ); } void TwitterApiSearchDialog::fillSearchTypes() diff -Nru choqok-1.3/helperlibs/twitterapihelper/twitterapisearch.h choqok-1.4/helperlibs/twitterapihelper/twitterapisearch.h --- choqok-1.3/helperlibs/twitterapihelper/twitterapisearch.h 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/helperlibs/twitterapihelper/twitterapisearch.h 2013-08-31 05:51:23.000000000 +0200 @@ -94,6 +94,8 @@ */ virtual QString optionCode(int option) = 0; + QDateTime dateFromString( const QString &date ); + public Q_SLOTS: virtual void requestSearchResults( const SearchInfo &searchInfo, const ChoqokId &sinceStatusId = QString(), diff -Nru choqok-1.3/helperlibs/twitterapihelper/twitterapisearchtimelinewidget.cpp choqok-1.4/helperlibs/twitterapihelper/twitterapisearchtimelinewidget.cpp --- choqok-1.3/helperlibs/twitterapihelper/twitterapisearchtimelinewidget.cpp 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/helperlibs/twitterapihelper/twitterapisearchtimelinewidget.cpp 2013-08-31 05:51:23.000000000 +0200 @@ -66,7 +66,7 @@ connect(Choqok::UI::Global::mainWindow(), SIGNAL(updateTimelines()), this, SLOT(slotUpdateSearchResults()) ); addFooter(); - timelineDescription()->setText(i18n("Search results for %1", timelineName)); + timelineDescription()->setText(i18nc("%1 is the name of a timeline", "Search results for %1", timelineName)); setClosable(); } @@ -189,7 +189,7 @@ if(d->currentPage == 1) { ChoqokId lastId; if( !postWidgets().isEmpty() ) - lastId = postWidgets().last()->currentPost().postId; + lastId = postWidgets().last()->currentPost()->postId; d->searchBackend->requestSearchResults(d->searchInfo, lastId); } } diff -Nru choqok-1.3/helperlibs/twitterapihelper/twitterapishowthread.cpp choqok-1.4/helperlibs/twitterapihelper/twitterapishowthread.cpp --- choqok-1.3/helperlibs/twitterapihelper/twitterapishowthread.cpp 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/helperlibs/twitterapihelper/twitterapishowthread.cpp 2013-08-31 05:51:23.000000000 +0200 @@ -40,7 +40,7 @@ QString desiredPostId; }; -TwitterApiShowThread::TwitterApiShowThread(Choqok::Account* account, const Choqok::Post& finalPost, +TwitterApiShowThread::TwitterApiShowThread(Choqok::Account* account, Choqok::Post* finalPost, QWidget* parent) : QWidget(parent), d(new Private(account)) { @@ -53,8 +53,8 @@ if(widget) { addPostWidgetToUi(widget); Choqok::Post *ps = new Choqok::Post; - ps->postId = finalPost.replyToPostId; - d->desiredPostId = finalPost.replyToPostId; + ps->postId = finalPost->replyToPostId; + d->desiredPostId = finalPost->replyToPostId; d->account->microblog()->fetchPost(d->account, ps); } } @@ -103,7 +103,7 @@ { kDebug(); if(theAccount == d->account && post->postId == d->desiredPostId) { - Choqok::UI::PostWidget *widget = d->account->microblog()->createPostWidget(d->account, *post, this); + Choqok::UI::PostWidget *widget = d->account->microblog()->createPostWidget(d->account, post, this); if(widget) { addPostWidgetToUi(widget); Choqok::Post *ps = new Choqok::Post; @@ -120,7 +120,7 @@ widget->initUi(); widget->setRead(); widget->setFocusProxy(this); - widget->setObjectName(widget->currentPost().postId); + widget->setObjectName(widget->currentPost()->postId); connect( widget, SIGNAL(resendPost(const QString &)), this, SIGNAL(forwardResendPost(const QString &))); connect( widget, SIGNAL(resendPost(QString)), diff -Nru choqok-1.3/helperlibs/twitterapihelper/twitterapishowthread.h choqok-1.4/helperlibs/twitterapihelper/twitterapishowthread.h --- choqok-1.3/helperlibs/twitterapihelper/twitterapishowthread.h 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/helperlibs/twitterapihelper/twitterapishowthread.h 2013-08-31 05:51:23.000000000 +0200 @@ -40,7 +40,7 @@ { Q_OBJECT public: - TwitterApiShowThread( Choqok::Account *account, const Choqok::Post &finalPost, QWidget* parent = 0); + TwitterApiShowThread( Choqok::Account *account, Choqok::Post *finalPost, QWidget* parent = 0); ~TwitterApiShowThread(); protected Q_SLOTS: Binary files /tmp/voeBuykKjv/choqok-1.3/icons/hi128-app-choqok_offline.png and /tmp/ufRLtZVje2/choqok-1.4/icons/hi128-app-choqok_offline.png differ Binary files /tmp/voeBuykKjv/choqok-1.3/icons/hi128-app-choqok.png and /tmp/ufRLtZVje2/choqok-1.4/icons/hi128-app-choqok.png differ Binary files /tmp/voeBuykKjv/choqok-1.3/icons/hi16-app-choqok_offline.png and /tmp/ufRLtZVje2/choqok-1.4/icons/hi16-app-choqok_offline.png differ Binary files /tmp/voeBuykKjv/choqok-1.3/icons/hi16-app-choqok.png and /tmp/ufRLtZVje2/choqok-1.4/icons/hi16-app-choqok.png differ Binary files /tmp/voeBuykKjv/choqok-1.3/icons/hi22-app-choqok_offline.png and /tmp/ufRLtZVje2/choqok-1.4/icons/hi22-app-choqok_offline.png differ Binary files /tmp/voeBuykKjv/choqok-1.3/icons/hi22-app-choqok.png and /tmp/ufRLtZVje2/choqok-1.4/icons/hi22-app-choqok.png differ Binary files /tmp/voeBuykKjv/choqok-1.3/icons/hi32-app-choqok_offline.png and /tmp/ufRLtZVje2/choqok-1.4/icons/hi32-app-choqok_offline.png differ Binary files /tmp/voeBuykKjv/choqok-1.3/icons/hi32-app-choqok.png and /tmp/ufRLtZVje2/choqok-1.4/icons/hi32-app-choqok.png differ Binary files /tmp/voeBuykKjv/choqok-1.3/icons/hi48-app-choqok_offline.png and /tmp/ufRLtZVje2/choqok-1.4/icons/hi48-app-choqok_offline.png differ Binary files /tmp/voeBuykKjv/choqok-1.3/icons/hi48-app-choqok.png and /tmp/ufRLtZVje2/choqok-1.4/icons/hi48-app-choqok.png differ Binary files /tmp/voeBuykKjv/choqok-1.3/icons/hi64-app-choqok_offline.png and /tmp/ufRLtZVje2/choqok-1.4/icons/hi64-app-choqok_offline.png differ Binary files /tmp/voeBuykKjv/choqok-1.3/icons/hi64-app-choqok.png and /tmp/ufRLtZVje2/choqok-1.4/icons/hi64-app-choqok.png differ Binary files /tmp/voeBuykKjv/choqok-1.3/images/splash_screen.png and /tmp/ufRLtZVje2/choqok-1.4/images/splash_screen.png differ diff -Nru choqok-1.3/libchoqok/choqokmicroblogplugin.desktop choqok-1.4/libchoqok/choqokmicroblogplugin.desktop --- choqok-1.3/libchoqok/choqokmicroblogplugin.desktop 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/libchoqok/choqokmicroblogplugin.desktop 2013-08-31 05:51:23.000000000 +0200 @@ -7,6 +7,7 @@ Comment[bs]=Priključak Choqoka za mikroblog Comment[ca]=Connector de microblocs del Choqok Comment[ca@valencia]=Connector de microblocs del Choqok +Comment[cs]=Zásuvný modul Choqok MicroBlog Comment[da]=Choqok mikroblog-plugin Comment[de]=Choqok MicroBlog-Modul Comment[el]=Πρόσθετο μικρο-ιστολογίου Choqok @@ -29,6 +30,7 @@ Comment[pt]='Plugin' de Micro-Blog do Choqok Comment[pt_BR]=Plugin de MicroBlog do Choqok Comment[ru]=Микроблог +Comment[sl]=Vstavek za mikrobloganje za Choqok Comment[sv]=Insticksprogram för Choqok med mikroblogg Comment[tr]=Choqok Mini Günlük Eklentisi Comment[uk]=Додаток мікроблогів до Choqok diff -Nru choqok-1.3/libchoqok/choqokplugin.desktop choqok-1.4/libchoqok/choqokplugin.desktop --- choqok-1.3/libchoqok/choqokplugin.desktop 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/libchoqok/choqokplugin.desktop 2013-08-31 05:51:23.000000000 +0200 @@ -7,6 +7,7 @@ Comment[bs]=Priključak Choqoka Comment[ca]=Connector del Choqok Comment[ca@valencia]=Connector del Choqok +Comment[cs]=Zásuvný modul Choqok Comment[da]=Choqok-plugin Comment[de]=Choqok-Modul Comment[el]=Πρόσθετο Choqok @@ -31,6 +32,7 @@ Comment[pt_BR]=Plugin do Choqok Comment[ro]=Modul Choqok Comment[ru]=Модуль Choqok +Comment[sl]=Vstavek za Choqok Comment[sv]=Insticksprogram för Choqok Comment[tr]=Choqok Eklentisi Comment[uk]=Додаток до Choqok diff -Nru choqok-1.3/libchoqok/choqokshortenerplugin.desktop choqok-1.4/libchoqok/choqokshortenerplugin.desktop --- choqok-1.3/libchoqok/choqokshortenerplugin.desktop 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/libchoqok/choqokshortenerplugin.desktop 2013-08-31 05:51:23.000000000 +0200 @@ -7,6 +7,7 @@ Comment[bs]=Priključak Choqoka za kraćenje Comment[ca]=Connector escurçador del Choqok Comment[ca@valencia]=Connector escurçador del Choqok +Comment[cs]=Zásuvný modul Choqok Shortener Comment[da]=Choqok afkortelses-plugin Comment[de]=Choqok-Kürzungsmodul Comment[el]=Πρόσθετο συντόμευσης Choqok @@ -18,7 +19,7 @@ Comment[gl]=Engadido de abreviación de Choqok Comment[hr]=Priključak Choqoka za kraćenje Comment[hu]=Choqok rövidítő bővítmény -Comment[it]=Estensione di abbreviazione di Choqok +Comment[it]=Estensione per l'abbreviazione di Choqok Comment[ja]=Choqok 短縮プラグイン Comment[km]=កម្ម​វិធី​ជំនួយ​នៃ​កម្ម​វិធី​កាត់​ Choqok ​ឲ្យ​ខ្លី Comment[nb]=Choqok programtillegg for innkorting @@ -29,6 +30,7 @@ Comment[pt]='Plugin' de Diminuição de URL's do Choqok Comment[pt_BR]=Plugin de encurtamento do Choqok Comment[ru]=Сокращение ссылок +Comment[sl]=Vstavek za krajšanje za Choqok Comment[sv]=Avkortningsinsticksprogram för Choqok Comment[tr]=Choqok Kısaltıcı Eklentisi Comment[uk]=Додаток скорочення для Choqok diff -Nru choqok-1.3/libchoqok/choqoktools.cpp choqok-1.4/libchoqok/choqoktools.cpp --- choqok-1.3/libchoqok/choqoktools.cpp 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/libchoqok/choqoktools.cpp 2013-08-31 05:51:23.000000000 +0200 @@ -70,3 +70,9 @@ return QString(); } } + +QString Choqok::getColorString(const QColor& color) +{ + return "rgb(" + QString::number(color.red()) + ',' + QString::number(color.green()) + ',' + + QString::number(color.blue()) + ')'; +} diff -Nru choqok-1.3/libchoqok/choqoktools.h choqok-1.4/libchoqok/choqoktools.h --- choqok-1.3/libchoqok/choqoktools.h 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/libchoqok/choqoktools.h 2013-08-31 05:51:23.000000000 +0200 @@ -27,6 +27,7 @@ #include #include +#include #include "choqok_export.h" namespace Choqok { @@ -35,6 +36,8 @@ QString CHOQOK_EXPORT qoauthErrorText(int code); +QString CHOQOK_EXPORT getColorString(const QColor& color); + } #endif // CHOQOK_CHOQOKTOOLS_H diff -Nru choqok-1.3/libchoqok/choqoktypes.h choqok-1.4/libchoqok/choqoktypes.h --- choqok-1.3/libchoqok/choqoktypes.h 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/libchoqok/choqoktypes.h 2013-08-31 05:51:23.000000000 +0200 @@ -57,7 +57,7 @@ class CHOQOK_EXPORT Post { public: Post() - :isFavorited(false), isPrivate(false), isError(false), isRead(false) + :isFavorited(false), isPrivate(false), isError(false), isRead(false), owners(0) {} virtual ~Post() {} QDateTime creationDateTime; @@ -77,6 +77,7 @@ QString repeatedFromUsername; ChoqokId repeatedPostId; ChoqokId conversationId; + unsigned int owners; // number of associated PostWidgets }; /** Describe an specific timeline, Should use by @ref MicroBlog diff -Nru choqok-1.3/libchoqok/choqokuiglobal.cpp choqok-1.4/libchoqok/choqokuiglobal.cpp --- choqok-1.3/libchoqok/choqokuiglobal.cpp 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/libchoqok/choqokuiglobal.cpp 2013-08-31 05:51:23.000000000 +0200 @@ -27,6 +27,7 @@ #include "quickpost.h" #include #include "postwidget.h" +#include "notifymanager.h" namespace Choqok { @@ -84,6 +85,11 @@ emit newPostWidgetAdded(widget, theAccount, timelineName); } +void UI::Global::SessionManager::resetNotifyManager() +{ + NotifyManager::resetNotifyManager(); +} + } #include "choqokuiglobal.moc" diff -Nru choqok-1.3/libchoqok/choqokuiglobal.h choqok-1.4/libchoqok/choqokuiglobal.h --- choqok-1.3/libchoqok/choqokuiglobal.h 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/libchoqok/choqokuiglobal.h 2013-08-31 05:51:23.000000000 +0200 @@ -75,6 +75,9 @@ void newPostWidgetAdded( Choqok::UI::PostWidget *widget, Choqok::Account *theAccount, const QString &timelineName); + public Q_SLOTS: + void resetNotifyManager(); + private: static SessionManager *m_self; SessionManager(); diff -Nru choqok-1.3/libchoqok/choqokuploaderplugin.desktop choqok-1.4/libchoqok/choqokuploaderplugin.desktop --- choqok-1.3/libchoqok/choqokuploaderplugin.desktop 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/libchoqok/choqokuploaderplugin.desktop 2013-08-31 05:51:23.000000000 +0200 @@ -7,12 +7,14 @@ Comment[bs]=Priključak Choqoka za slanje datoteka Comment[ca]=Connector per pujades del Choqok Comment[ca@valencia]=Connector per pujades del Choqok +Comment[cs]=Zásuvný modul Choqok Uploader Comment[da]=Uploader-plugin til Choqok Comment[de]=Choqok-Upload-Modul Comment[el]=Πρόσθετο αποστολής Choqok Comment[en_GB]=Choqok Uploader Plugin Comment[es]=Complemento de envío de Choqok Comment[et]=Choqoki üleslaadimise plugin +Comment[fi]=Choqok-lähetysliitännäinen Comment[fr]=Module externe d'envoi pour Choqok Comment[gl]=Engadido de envíos do Choqok Comment[hu]=Choqok feltöltő bővítmény @@ -27,6 +29,7 @@ Comment[pt]='Plugin' de Envio do Choqok Comment[pt_BR]=Plugin de envio do Choqok Comment[ru]=Загрузка файлов +Comment[sl]=Vstavek za pošiljanje za Choqok Comment[sv]=Uppladdningsinsticksprogram för Choqok Comment[tr]=Choqok Dosya Gönderme Eklentisi Comment[uk]=Додаток вивантаження для Choqok diff -Nru choqok-1.3/libchoqok/mediamanager.cpp choqok-1.4/libchoqok/mediamanager.cpp --- choqok-1.3/libchoqok/mediamanager.cpp 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/libchoqok/mediamanager.cpp 2013-08-31 05:51:23.000000000 +0200 @@ -47,7 +47,7 @@ { public: Private() - :emoticons(KEmoticons().theme()),cache("choqok-userimages", 20000000), uploader(0) + :emoticons(KEmoticons().theme()),cache("choqok-userimages", 30000000), uploader(0) {} KEmoticonsTheme emoticons; KImageCache cache; diff -Nru choqok-1.3/libchoqok/microblog.cpp choqok-1.4/libchoqok/microblog.cpp --- choqok-1.3/libchoqok/microblog.cpp 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/libchoqok/microblog.cpp 2013-08-31 05:51:23.000000000 +0200 @@ -175,7 +175,7 @@ return new UI::TimelineWidget(account, timelineName, parent); } -UI::PostWidget* MicroBlog::createPostWidget(Account* account, const Choqok::Post& post, QWidget* parent) +UI::PostWidget* MicroBlog::createPostWidget(Account* account, Choqok::Post* post, QWidget* parent) { return new UI::PostWidget(account, post, parent); } diff -Nru choqok-1.3/libchoqok/microblog.h choqok-1.4/libchoqok/microblog.h --- choqok-1.3/libchoqok/microblog.h 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/libchoqok/microblog.h 2013-08-31 05:51:23.000000000 +0200 @@ -165,7 +165,7 @@ * @param parent The parent of the 'to be returned' widget */ virtual UI::PostWidget * createPostWidget( Choqok::Account *account, - const Choqok::Post &post, QWidget *parent ); + Choqok::Post *post, QWidget *parent ); /** @brief Save a specific timeline! @@ -315,7 +315,7 @@ MicroBlog( const KComponentData &instance, QObject *parent=0 ); - void setTimelineNames(const QStringList&); + virtual void setTimelineNames(const QStringList&); void addTimelineName(const QString&); void setServiceName(const QString&); void setServiceHomepageUrl(const QString&); diff -Nru choqok-1.3/libchoqok/notifymanager.cpp choqok-1.4/libchoqok/notifymanager.cpp --- choqok-1.3/libchoqok/notifymanager.cpp 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/libchoqok/notifymanager.cpp 2013-08-31 05:51:23.000000000 +0200 @@ -24,6 +24,7 @@ #include "notifymanager.h" #include +#include #include "choqokuiglobal.h" #include #include @@ -34,9 +35,19 @@ class NotifyManagerPrivate { public: + NotifyManagerPrivate() + { + lastErrorClearance.setSingleShot(true); + lastErrorClearance.setInterval(3000); + QObject::connect(&lastErrorClearance, SIGNAL(timeout()), + Choqok::UI::Global::SessionManager::self(), SLOT(resetNotifyManager())); + } void triggerNotify( const QString &eventId, const QString &title, const QString &message, KNotification::NotificationFlags flags = KNotification::CloseOnTimeout ); + + QList lastErrorMessages; + QTimer lastErrorClearance; }; K_GLOBAL_STATIC(NotifyManagerPrivate, _nmp) @@ -49,6 +60,11 @@ { } +void NotifyManager::resetNotifyManager() +{ + _nmp->lastErrorMessages.clear(); +} + void NotifyManager::success( const QString& message, const QString& title ) { if(Choqok::UI::Global::mainWindow()->isActiveWindow()){ @@ -60,7 +76,12 @@ void NotifyManager::error( const QString& message, const QString& title ) { - _nmp->triggerNotify("job-error", title, message); + if( !_nmp->lastErrorMessages.contains(message) ){ + _nmp->triggerNotify("job-error", title, message); + _nmp->lastErrorMessages.append(message); + _nmp->lastErrorClearance.start(); + } + } void NotifyManager::newPostArrived( const QString& message, const QString& title ) diff -Nru choqok-1.3/libchoqok/notifymanager.h choqok-1.4/libchoqok/notifymanager.h --- choqok-1.3/libchoqok/notifymanager.h 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/libchoqok/notifymanager.h 2013-08-31 05:51:23.000000000 +0200 @@ -44,8 +44,7 @@ static void newPostArrived( const QString& message, const QString& title = i18n("New posts") ); static void shortening( const QString& message, const QString& title = i18n("Shortening a URL") ); -private Q_SLOTS: - void slotConfigChanged(); + static void resetNotifyManager(); private: NotifyManager(); diff -Nru choqok-1.3/libchoqok/shortenmanager.cpp choqok-1.4/libchoqok/shortenmanager.cpp --- choqok-1.3/libchoqok/shortenmanager.cpp 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/libchoqok/shortenmanager.cpp 2013-08-31 05:51:23.000000000 +0200 @@ -105,7 +105,10 @@ // QApplication::processEvents(); // return res.result(); // #else - return shorten(url); + QString shortUrl = shorten(url); + if(BehaviorSettings::removeHttp() && url != shortUrl) + shortUrl.remove(_smp->removeUrlRegExp); + return shortUrl; // #endif } else { kDebug()<<"There isn't any Shortener plugin."; diff -Nru choqok-1.3/libchoqok/ui/choqoktabbar.cpp choqok-1.4/libchoqok/ui/choqoktabbar.cpp --- choqok-1.3/libchoqok/ui/choqoktabbar.cpp 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/libchoqok/ui/choqoktabbar.cpp 2013-08-31 05:51:23.000000000 +0200 @@ -749,14 +749,14 @@ return; } - KAction north( tr("Top") , this ); - KAction west( tr("Left") , this ); - KAction east( tr("Right") , this ); - KAction south( tr("Bottom") , this ); - KAction size_s( tr("Small") , this ); - KAction size_m( tr("Medium") , this ); - KAction size_b( tr("Big") , this ); - KAction styled( tr("Styled Panel") , this ); + KAction north( i18n("Top") , this ); + KAction west( i18n("Left") , this ); + KAction east( i18n("Right") , this ); + KAction south( i18n("Bottom") , this ); + KAction size_s( i18n("Small") , this ); + KAction size_m( i18n("Medium") , this ); + KAction size_b( i18n("Big") , this ); + KAction styled( i18n("Styled Panel") , this ); /*! ------------- Setting Up Datas --------------- */ north.setData( ChoqokTabBar::North ); diff -Nru choqok-1.3/libchoqok/ui/choqoktextedit.cpp choqok-1.4/libchoqok/ui/choqoktextedit.cpp --- choqok-1.3/libchoqok/ui/choqoktextedit.cpp 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/libchoqok/ui/choqoktextedit.cpp 2013-08-31 05:51:23.000000000 +0200 @@ -91,8 +91,12 @@ void TextEdit::keyPressEvent(QKeyEvent* e) { if (( e->key() == Qt::Key_Return ) || ( e->key() == Qt::Key_Enter ) ) { - QString txt = toPlainText(); - emit returnPressed( txt ); + if (e->modifiers() == Qt::ShiftModifier) { + KTextEdit::keyPressEvent(e); + } else { + QString txt = toPlainText(); + emit returnPressed( txt ); + } e->accept(); } else if ( e->modifiers() == Qt::ControlModifier && e->key() == Qt::Key_S ) { this->setCheckSpellingEnabled( !this->checkSpellingEnabled() ); @@ -218,14 +222,17 @@ void TextEdit::setPlainText(const QString& text) { - KTextEdit::setPlainText(text); + if( Choqok::BehaviorSettings::shortenOnPaste() ) + KTextEdit::setPlainText( ShortenManager::self()->parseText( text ) ); + else + KTextEdit::setPlainText( text ); moveCursor(QTextCursor::End); setEnabled(true); } void TextEdit::setText(const QString& text) { - KTextEdit::setText(text); + KTextEdit::setPlainText(text); moveCursor(QTextCursor::End); setEnabled(true); } diff -Nru choqok-1.3/libchoqok/ui/microblogwidget.cpp choqok-1.4/libchoqok/ui/microblogwidget.cpp --- choqok-1.3/libchoqok/ui/microblogwidget.cpp 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/libchoqok/ui/microblogwidget.cpp 2013-08-31 05:51:23.000000000 +0200 @@ -275,7 +275,7 @@ d->btnMarkAllAsRead = new KPushButton(this); d->btnMarkAllAsRead->setIcon(KIcon("mail-mark-read")); d->btnMarkAllAsRead->setIconSize(QSize(14,14)); - d->btnMarkAllAsRead->setToolTip(i18n("Mark all as read")); + d->btnMarkAllAsRead->setToolTip(i18n("Mark all timelines as read")); d->btnMarkAllAsRead->setMaximumWidth(d->btnMarkAllAsRead->height()); connect(d->btnMarkAllAsRead, SIGNAL(clicked(bool)), SLOT(markAllAsRead())); d->toolbar->insertWidget(1, d->btnMarkAllAsRead); diff -Nru choqok-1.3/libchoqok/ui/postwidget.cpp choqok-1.4/libchoqok/ui/postwidget.cpp --- choqok-1.3/libchoqok/ui/postwidget.cpp 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/libchoqok/ui/postwidget.cpp 2013-08-31 05:51:23.000000000 +0200 @@ -52,13 +52,13 @@ class PostWidget::Private { public: - Private( Account* account, const Choqok::Post& post ) + Private( Account* account, Choqok::Post* post ) : mCurrentPost(post), mCurrentAccount(account), dir("ltr"), timeline(0) { } QGridLayout *buttonsLayout; QMap mUiButtons;// - Post mCurrentPost; + Post *mCurrentPost; Account *mCurrentAccount; // bool mRead; QTimer mTimer; @@ -97,13 +97,16 @@ |(asia|com|info|net|org|biz|name|pro|aero|cat|coop|edu|jobs|mobi|museum|tel|travel|gov|int|mil|local|xxx)|(中国)|(公司)|(网络)|(صر)|(امارات)|(рф))"); const QString ip = "(25[0-5]|[2][0-4][0-9]|[0-1]?[\\d]{1,2})(\\.(25[0-5]|[2][0-4][0-9]|[0-1]?[\\d]{1,2})){3}"; const QString params = "(((\\/)[\\w:/\\?#\\[\\]@!\\$&\\(\\)\\*%\\+,;=\\._~\\x0080-\\xFFFF\\-\\|]{1,}|%[0-9a-f]{2})?)"; +const QString excludingCharacters = QString::fromLatin1("[^\\s`!()\\[\\]{};:'\".,<>?%1%2%3%4%5%6]") + .arg(QChar(0x00AB)).arg(QChar(0x00BB)).arg(QChar(0x201C)).arg(QChar(0x201D)).arg(QChar(0x2018)).arg(QChar(0x2019)); const QRegExp PostWidget::mUrlRegExp("(((((" + protocols + auth + "?)?)" + subdomains + '(' + domains + zone + "(?!(\\w))))|(" + protocols + '(' + ip + ")+))" + '(' + port + "?)" + "((\\/)?)" + - params + ')', Qt::CaseInsensitive); + params + ')' + excludingCharacters, Qt::CaseInsensitive); + const QRegExp PostWidget::mEmailRegExp('^' + auth + subdomains + domains + zone); const QRegExp PostWidget::dirRegExp("(RT|RD)|(@([^\\s\\W]+))|(#([^\\s\\W]+))|(!([^\\s\\W]+))"); @@ -112,26 +115,27 @@ QString PostWidget::ownStyle; const QString PostWidget::webIconText("☛"); -PostWidget::PostWidget( Account* account, const Choqok::Post& post, QWidget* parent/* = 0*/ ) +PostWidget::PostWidget( Account* account, Choqok::Post* post, QWidget* parent/* = 0*/ ) :QWidget(parent), _mainWidget(new TextBrowser(this)), d(new Private(account, post)) { setAttribute(Qt::WA_DeleteOnClose); _mainWidget->setFrameShape(QFrame::NoFrame); - if(currentAccount()->username().compare( currentPost().author.userName, Qt::CaseInsensitive ) == 0 ) - d->mCurrentPost.isRead = true; + if(isOwnPost()) + d->mCurrentPost->isRead = true; d->mTimer.start( _MINUTE ); connect( &d->mTimer, SIGNAL( timeout() ), this, SLOT( updateUi()) ); connect(_mainWidget, SIGNAL(clicked(QMouseEvent*)), SLOT(mousePressEvent(QMouseEvent*))); connect(_mainWidget, SIGNAL(anchorClicked(QUrl)), this, SLOT(checkAnchor(QUrl))); d->timeline = qobject_cast(parent); + d->mCurrentPost->owners++; } void PostWidget::checkAnchor(const QUrl & url) { if(url.scheme() == "choqok"){ if(url.host() == "showoriginalpost"){ - setContent( prepareStatus(currentPost().content).replace("content).replace("mCurrentPost->owners < 2) + delete d->mCurrentPost; + else + d->mCurrentPost->owners--; delete d; } @@ -153,16 +161,16 @@ { QString ss; ss = "mCurrentPost.author.description + "\">" + d->mCurrentPost.author.userName + + d->mCurrentPost->author.description + "\">" + d->mCurrentPost->author.userName + " - "; - ss += "mCurrentPost.link + - "\" title=\"" + d->mCurrentPost.creationDateTime.toString(Qt::DefaultLocaleLongDate) + "\">%1"; + ss += "mCurrentPost->link + + "\" title=\"" + d->mCurrentPost->creationDateTime.toString(Qt::DefaultLocaleLongDate) + "\">%1"; - if( !d->mCurrentPost.source.isNull() ) - ss += " - " + d->mCurrentPost.source; + if( !d->mCurrentPost->source.isNull() ) + ss += " - " + d->mCurrentPost->source; return ss; } @@ -193,8 +201,29 @@ _mainWidget->document()->addResource( QTextDocument::ImageResource, QUrl("img://profileImage"), MediaManager::self()->defaultImage() ); - if(d->mCurrentAccount->username().compare( d->mCurrentPost.author.userName, Qt::CaseInsensitive ) == 0 - || currentPost().isPrivate) { + if ( isOwnPost() ) + baseText = &ownText; + else + baseText = &otherText; + + if ( isRemoveAvailable() ) + { + KPushButton *btnRemove = addButton("btnRemove", i18nc( "@info:tooltip", "Remove" ), "edit-delete" ); + connect(btnRemove, SIGNAL(clicked(bool)), SLOT(removeCurrentPost())); + baseText = &ownText; + } + + if ( isResendAvailable() ) + { + KPushButton *btnResend = addButton("btnResend", i18nc( "@info:tooltip", "ReSend" ), "retweet" ); + connect(btnResend, SIGNAL(clicked(bool)), SLOT(slotResendPost())); + baseText = &otherText; + } + + + /* + if(d->mCurrentAccount->username().compare( d->mCurrentPost->author.userName, Qt::CaseInsensitive ) == 0 + || currentPost()->isPrivate) { KPushButton *btnRemove = addButton("btnRemove", i18nc( "@info:tooltip", "Remove" ), "edit-delete" ); connect(btnRemove, SIGNAL(clicked(bool)), SLOT(removeCurrentPost())); baseText = &ownText; @@ -202,42 +231,38 @@ KPushButton *btnResend = addButton("btnResend", i18nc( "@info:tooltip", "ReSend" ), "retweet" ); connect(btnResend, SIGNAL(clicked(bool)), SLOT(slotResendPost())); baseText = &otherText; - } - d->mImage = "mCurrentPost.author.realName +"\" width=\"48\" height=\"48\" />"; - d->mContent = prepareStatus(d->mCurrentPost.content); + }*/ + + d->mImage = "mCurrentPost->author.realName +"\" width=\"48\" height=\"48\" />"; + d->mContent = prepareStatus(d->mCurrentPost->content); d->mSign = generateSign(); setupAvatar(); setDirection(); setUiStyle(); d->mContent.replace("mContent.replace("\n", "
"); d->mSign.replace("
setHtml(baseText->arg( d->mImage, d->mContent, - d->mSign.arg(formatDateTime( d->mCurrentPost.creationDateTime )), + _mainWidget->setHtml(baseText->arg( d->mImage, d->mContent, + d->mSign.arg(formatDateTime( d->mCurrentPost->creationDateTime )), d->dir )); } void PostWidget::setStyle(const QColor& color, const QColor& back, const QColor& read, const QColor& readBack, const QColor& own, const QColor& ownBack, const QFont& font) { - QString fntStr = "font-family:\"" + font.family() + "\"; font-size:" + QString::number(font.pointSize()) + ";"; + QString fntStr = "font-family:\"" + font.family() + "\"; font-size:" + QString::number(font.pointSize()) + "pt;"; fntStr += (font.bold() ? " font-weight:bold;" : QString()) + (font.italic() ? " font-style:italic;" : QString()); unreadStyle = baseStyle.arg( getColorString(color), getColorString(back), fntStr); readStyle = baseStyle.arg( getColorString(read), getColorString(readBack), fntStr ); ownStyle = baseStyle.arg( getColorString(own), getColorString(ownBack), fntStr ); } -QString PostWidget::getColorString(const QColor& color) -{ - return "rgb(" + QString::number(color.red()) + ',' + QString::number(color.green()) + ',' + - QString::number(color.blue()) + ')'; -} - KPushButton * PostWidget::addButton(const QString & objName, const QString & toolTip, const QString & icon) { return addButton(objName, toolTip, KIcon(icon)); @@ -261,24 +286,24 @@ return button; } -const Post &PostWidget::currentPost() const +Post *PostWidget::currentPost() const { return d->mCurrentPost; } -void PostWidget::setCurrentPost(const Choqok::Post& post) +void PostWidget::setCurrentPost(Post* post) { d->mCurrentPost = post; } void PostWidget::setRead(bool read/* = true*/) { - if( !read && !currentPost().isRead && - currentAccount()->username().compare( currentPost().author.userName, Qt::CaseInsensitive ) == 0) { - d->mCurrentPost.isRead = true; ///Always Set own posts as read. + if( !read && !currentPost()->isRead && + currentAccount()->username().compare( currentPost()->author.userName, Qt::CaseInsensitive ) == 0) { + d->mCurrentPost->isRead = true; ///Always Set own posts as read. setUiStyle(); - } else if( currentPost().isRead != read ) { - d->mCurrentPost.isRead = read; + } else if( currentPost()->isRead != read ) { + d->mCurrentPost->isRead = read; setUiStyle(); } } @@ -293,27 +318,32 @@ bool PostWidget::isRead() const { - return currentPost().isRead; + return currentPost()->isRead; } void PostWidget::setUiStyle() { - if (currentAccount()->username().compare( currentPost().author.userName, Qt::CaseInsensitive ) == 0) + if (isOwnPost()) setStyleSheet(ownStyle); else { - if(currentPost().isRead) + if(currentPost()->isRead) setStyleSheet(readStyle); else setStyleSheet(unreadStyle); } + setHeight(); +} + +bool PostWidget::isOwnPost() +{ + return currentAccount()->username().compare( currentPost()->author.userName, Qt::CaseInsensitive ) == 0; } void PostWidget::setHeight() { _mainWidget->document()->setTextWidth(width()-2); int h = _mainWidget->document()->size().toSize().height()+2; - setMinimumHeight(h); - setMaximumHeight(h); + setFixedHeight(h); } void PostWidget::closeEvent(QCloseEvent* event) @@ -321,7 +351,7 @@ clearFocus(); if( !isRead() ) setReadWithSignal(); - Q_EMIT aboutClosing(currentPost().postId, this); + Q_EMIT aboutClosing(currentPost()->postId, this); event->accept(); } @@ -360,9 +390,8 @@ QString PostWidget::prepareStatus( const QString &txt ) { QString text = txt; - text.replace( "&", "&amp;" ); - text.replace( '<', "<" ); - text.replace( '>', ">" ); +// text.replace( "&", "&amp;" ); + text = removeTags(text); int pos = 0; while(((pos = mUrlRegExp.indexIn(text, pos)) != -1)) { QString link = mUrlRegExp.cap(0); @@ -404,9 +433,18 @@ return text; } +QString PostWidget::removeTags(const QString& text) const +{ + QString txt(text); + + txt.replace( '<', "<" ); + txt.replace( '>', ">" ); + + return txt; +} void PostWidget::setDirection() { - QString txt = d->mCurrentPost.content; + QString txt = d->mCurrentPost->content; txt.remove(dirRegExp); txt = txt.trimmed(); if( txt.isRightToLeft() ) { @@ -421,6 +459,10 @@ QString PostWidget::formatDateTime( const QDateTime& time ) { + if ( !time.isValid() ) + { + return tr("Invalid Time"); + } int seconds = time.secsTo( QDateTime::currentDateTime() ); if ( seconds <= 15 ) { d->mTimer.setInterval( _15SECS ); @@ -458,13 +500,13 @@ SIGNAL(errorPost(Choqok::Account*, Choqok::Post*,Choqok::MicroBlog::ErrorType,QString)), this, SLOT(slotPostError(Choqok::Account*, Choqok::Post*,Choqok::MicroBlog::ErrorType,QString)) ); setReadWithSignal(); - d->mCurrentAccount->microblog()->removePost(d->mCurrentAccount, &d->mCurrentPost); + d->mCurrentAccount->microblog()->removePost(d->mCurrentAccount, d->mCurrentPost); } } void PostWidget::slotCurrentPostRemoved( Account* theAccount, Post* post ) { - if( theAccount == currentAccount() && post == &d->mCurrentPost ) + if( theAccount == currentAccount() && post == d->mCurrentPost ) this->close(); } @@ -482,21 +524,21 @@ { if (BehaviorSettings::useCustomRT()) { - return QString(BehaviorSettings::customRT()) + " @" + currentPost().author.userName + ": " + currentPost().content; + return QString(BehaviorSettings::customRT()) + " @" + currentPost()->author.userName + ": " + currentPost()->content; } else { QChar re(0x267B); - return QString(re) + " @" + currentPost().author.userName + ": " + currentPost().content; + return QString(re) + " @" + currentPost()->author.userName + ": " + currentPost()->content; } } void PostWidget::setupAvatar() { - QPixmap *pix = MediaManager::self()->fetchImage( d->mCurrentPost.author.profileImageUrl, + QPixmap *pix = MediaManager::self()->fetchImage( d->mCurrentPost->author.profileImageUrl, MediaManager::Async ); if(pix) - avatarFetched(d->mCurrentPost.author.profileImageUrl, *pix); + avatarFetched(d->mCurrentPost->author.profileImageUrl, *pix); else { connect( MediaManager::self(), SIGNAL( imageFetched(QString,QPixmap)), this, SLOT(avatarFetched(QString, QPixmap) ) ); @@ -507,7 +549,7 @@ void PostWidget::avatarFetched(const QString& remoteUrl, const QPixmap& pixmap) { - if ( remoteUrl == d->mCurrentPost.author.profileImageUrl ) { + if ( remoteUrl == d->mCurrentPost->author.profileImageUrl ) { QString url = "img://profileImage"; _mainWidget->document()->addResource( QTextDocument::ImageResource, url, pixmap ); updateUi(); @@ -521,7 +563,7 @@ void PostWidget::avatarFetchError(const QString& remoteUrl, const QString& errMsg) { Q_UNUSED(errMsg); - if( remoteUrl == d->mCurrentPost.author.profileImageUrl ){ + if( remoteUrl == d->mCurrentPost->author.profileImageUrl ){ ///Avatar fetching is failed! but will not disconnect to get the img if it fetches later! QString url = "img://profileImage"; _mainWidget->document()->addResource( QTextDocument::ImageResource, @@ -538,7 +580,7 @@ void PostWidget::slotPostError(Account* theAccount, Choqok::Post* post, MicroBlog::ErrorType , const QString& errorMessage) { - if( theAccount == currentAccount() && post == &d->mCurrentPost) { + if( theAccount == currentAccount() && post == d->mCurrentPost) { kDebug()<mCurrentAccount->microblog(), SIGNAL(postRemoved(Choqok::Account*,Choqok::Post*)), this, SLOT(slotCurrentPostRemoved(Choqok::Account*,Choqok::Post*)) ); @@ -591,7 +633,7 @@ close(); } -TextBrowser* PostWidget::mainWidget() +TextBrowser* PostWidget::mainWidget() { return _mainWidget; } @@ -641,5 +683,19 @@ d->postWidget = widget; } +QString PostWidget::getBaseStyle() +{ + return baseStyle; +} + +bool PostWidget::isRemoveAvailable() +{ + return d->mCurrentAccount->username().compare( d->mCurrentPost->author.userName, Qt::CaseInsensitive ) == 0; +} + +bool PostWidget::isResendAvailable() +{ + return d->mCurrentAccount->username().compare( d->mCurrentPost->author.userName, Qt::CaseInsensitive ) != 0; +} #include "postwidget.moc" diff -Nru choqok-1.3/libchoqok/ui/postwidget.h choqok-1.4/libchoqok/ui/postwidget.h --- choqok-1.3/libchoqok/ui/postwidget.h 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/libchoqok/ui/postwidget.h 2013-08-31 05:51:23.000000000 +0200 @@ -50,9 +50,9 @@ Q_OBJECT Q_PROPERTY (bool read READ isRead) public: - explicit PostWidget( Account *account, const Post &post, QWidget *parent = 0 ); + explicit PostWidget( Choqok::Account* account, Choqok::Post* post, QWidget* parent = 0 ); virtual ~PostWidget(); - const Post ¤tPost() const; + Post *currentPost() const; virtual void setRead(bool read = true); /** @@ -86,7 +86,7 @@ After changing current post, Don't forget to call @ref initUi() to update post UI. */ - void setCurrentPost( const Post &post ); + void setCurrentPost( Post *post ); /** @brief Sets Post sign @@ -126,6 +126,8 @@ */ static void addAction( KAction *action ); + static QString getBaseStyle(); + public Q_SLOTS: /** Set Style sheet of widget to corresponding data-> @@ -199,7 +201,10 @@ virtual QString generateSign(); virtual QString formatDateTime( const QDateTime &time ); virtual QString formatDateTime( const KDateTime &time ); - static QString getColorString(const QColor& color); + virtual bool isResendAvailable() ; + virtual bool isRemoveAvailable() ; + virtual bool isOwnPost(); + virtual QString removeTags(const QString& text) const; /** @brief Create and Add a new button to widget This function will add button to UI! diff -Nru choqok-1.3/libchoqok/ui/textbrowser.cpp choqok-1.4/libchoqok/ui/textbrowser.cpp --- choqok-1.3/libchoqok/ui/textbrowser.cpp 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/libchoqok/ui/textbrowser.cpp 2013-08-31 05:51:23.000000000 +0200 @@ -140,7 +140,7 @@ if( txt.isEmpty() ){ PostWidget *paPost = qobject_cast(parentWidget()); if(paPost) - QApplication::clipboard()->setText( paPost->currentPost().content ); + QApplication::clipboard()->setText( paPost->currentPost()->content ); } else { QApplication::clipboard()->setText( txt ); } diff -Nru choqok-1.3/libchoqok/ui/timelinewidget.cpp choqok-1.4/libchoqok/ui/timelinewidget.cpp --- choqok-1.3/libchoqok/ui/timelinewidget.cpp 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/libchoqok/ui/timelinewidget.cpp 2013-08-31 05:51:23.000000000 +0200 @@ -46,14 +46,14 @@ public: Private(Account *account, const QString &timelineName) :currentAccount(account), timelineName(timelineName), - btnMarkAllAsRead(0), unreadCount(0), info(0), isClosable(false) + btnMarkAllAsRead(0), unreadCount(0), placeholderLabel(0), info(0), isClosable(false) { if(account->microblog()->isValidTimeline(timelineName)) { info = account->microblog()->timelineInfo(timelineName); } else {//It's search timeline info = new Choqok::TimelineInfo; info->name = timelineName; - info->description = i18n("Search results for %1", timelineName); + info->description = i18nc("%1 is the name of a timeline", "Search results for %1", timelineName); } } Account *currentAccount; @@ -66,6 +66,7 @@ QVBoxLayout *mainLayout; QHBoxLayout *titleBarLayout; QLabel *lblDesc; + QLabel *placeholderLabel; QScrollArea *scrollArea; int order; // 0: web, -1: natural Choqok::TimelineInfo *info; @@ -96,7 +97,7 @@ } else { QList::const_iterator it, endIt = list.constEnd(); for(it = list.constBegin(); it!= endIt; ++it){ - PostWidget *pw = d->currentAccount->microblog()->createPostWidget(d->currentAccount, **it, this); + PostWidget *pw = d->currentAccount->microblog()->createPostWidget(d->currentAccount, *it, this); if(pw) { pw->setRead(); addPostWidgetToUi(pw); @@ -199,6 +200,17 @@ } } +void TimelineWidget::addPlaceholderMessage ( const QString& msg ) +{ + if (d->posts.keys().length() == 0) { + if (!d->placeholderLabel) { + d->placeholderLabel = new QLabel(this); + d->mainLayout->insertWidget(d->order, d->placeholderLabel); + } + d->placeholderLabel->setText(msg); + } +} + void TimelineWidget::addNewPosts( QList< Choqok::Post* >& postList) { kDebug()<currentAccount->alias()<<' '<timelineName<<' '<posts.keys().contains((*it)->postId)) continue; - PostWidget *pw = d->currentAccount->microblog()->createPostWidget(d->currentAccount, **it, this); + PostWidget *pw = d->currentAccount->microblog()->createPostWidget(d->currentAccount, *it, this); if(pw) { addPostWidgetToUi(pw); if( !pw->isRead() ) @@ -231,7 +243,7 @@ if(!d->btnMarkAllAsRead){ d->btnMarkAllAsRead = new KPushButton(this); d->btnMarkAllAsRead->setIcon(KIcon("mail-mark-read")); - d->btnMarkAllAsRead->setToolTip(i18n("Mark all as read")); + d->btnMarkAllAsRead->setToolTip(i18n("Mark timeline as read")); d->btnMarkAllAsRead->setMaximumSize(14, 14); d->btnMarkAllAsRead->setIconSize(QSize(12,12)); connect(d->btnMarkAllAsRead, SIGNAL(clicked(bool)), SLOT(markAllAsRead())); @@ -243,7 +255,7 @@ { widget->initUi(); widget->setFocusProxy(this); - widget->setObjectName(widget->currentPost().postId); + widget->setObjectName(widget->currentPost()->postId); connect( widget, SIGNAL(resendPost(const QString &)), this, SIGNAL(forwardResendPost(const QString &))); connect( widget, SIGNAL(reply(QString,QString,QString)), @@ -253,9 +265,14 @@ connect( widget, SIGNAL(aboutClosing(ChoqokId,PostWidget*)), SLOT(postWidgetClosed(ChoqokId,PostWidget*)) ); d->mainLayout->insertWidget(d->order, widget); - d->posts.insert(widget->currentPost().postId, widget); - d->sortedPostsList.insert(widget->currentPost().creationDateTime, widget); + d->posts.insert(widget->currentPost()->postId, widget); + d->sortedPostsList.insert(widget->currentPost()->creationDateTime, widget); Global::SessionManager::self()->emitNewPostWidgetAdded(widget, currentAccount(), timelineName()); + if (d->placeholderLabel) { + d->mainLayout->removeWidget(d->placeholderLabel); + delete d->placeholderLabel; + d->placeholderLabel = 0; + } } int TimelineWidget::unreadCount() const @@ -322,7 +339,7 @@ void TimelineWidget::postWidgetClosed(const ChoqokId& postId, PostWidget* post) { d->posts.remove(postId); - d->sortedPostsList.remove(post->currentPost().creationDateTime, post); + d->sortedPostsList.remove(post->currentPost()->creationDateTime, post); } QMap< ChoqokId, PostWidget* >& TimelineWidget::posts() const diff -Nru choqok-1.3/libchoqok/ui/timelinewidget.h choqok-1.4/libchoqok/ui/timelinewidget.h --- choqok-1.3/libchoqok/ui/timelinewidget.h 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/libchoqok/ui/timelinewidget.h 2013-08-31 05:51:23.000000000 +0200 @@ -82,6 +82,11 @@ virtual void addNewPosts( QList< Choqok::Post* >& postList ); /** + @brief Adds a message in place of an empty timeline. Placeholder is removed when a post gets added. + */ + virtual void addPlaceholderMessage( const QString& message ); + + /** @brief Return count of unread posts on this timeline. */ int unreadCount() const; diff -Nru choqok-1.3/microblogs/laconica/choqok_laconica.desktop choqok-1.4/microblogs/laconica/choqok_laconica.desktop --- choqok-1.3/microblogs/laconica/choqok_laconica.desktop 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/microblogs/laconica/choqok_laconica.desktop 2013-08-31 05:51:23.000000000 +0200 @@ -19,6 +19,7 @@ Name[bs]=StatusNet Name[ca]=StatusNet Name[ca@valencia]=StatusNet +Name[cs]=StatusNet Name[da]=StatusNet Name[de]=StatusNet Name[el]=StatusNet @@ -42,6 +43,7 @@ Name[pt]=StatusNet Name[pt_BR]=StatusNet Name[ru]=StatusNet +Name[sl]=StatusNet Name[sv]=StatusNet Name[tr]=StatusNet Name[uk]=StatusNet @@ -53,6 +55,7 @@ Comment[bs]=StatusNet (Laconica, identi.ca) Comment[ca]=StatusNet (Laconica, identi.ca) Comment[ca@valencia]=StatusNet (Laconica, identi.ca) +Comment[cs]=StatusNet (Laconica, identi.ca) Comment[da]=StatusNet (Laconica, identi.ca) Comment[de]=StatusNet (Laconica, identi.ca) Comment[el]=StatusNet (Laconica, identi.ca) @@ -75,6 +78,7 @@ Comment[pt]=StatusNet (Laconica, identi.ca) Comment[pt_BR]=StatusNet (Laconica, identi.ca) Comment[ru]=Служба StatusNet (Laconica, identi.ca) +Comment[sl]=StatusNet (Laconica, identi.ca) Comment[sv]=StatusNet (Laconica, identi.ca) Comment[tr]=StatusNet (Laconica, identi.ca) Comment[uk]=StatusNet (Laconica, identi.ca) diff -Nru choqok-1.3/microblogs/laconica/laconicaeditaccount_base.ui choqok-1.4/microblogs/laconica/laconicaeditaccount_base.ui --- choqok-1.3/microblogs/laconica/laconicaeditaccount_base.ui 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/microblogs/laconica/laconicaeditaccount_base.ui 2013-08-31 05:51:23.000000000 +0200 @@ -77,26 +77,6 @@ Server - - - - StatusNet server: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - kcfg_host - - - - - - - https://identi.ca - - - @@ -117,109 +97,21 @@ - - + + - Authentication Type: + StatusNet server: Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - OAuth Authentication - - - - - Basic Authentication - - - - - - - - - - - OAuth Authentication - - - - - - - - &Username: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - kcfg_oauthUsername - - - - - - - The name you use to connect to the service - - - - - - - - - - - - 0 - 0 - - - - - - - - - - - - - - - - - - 0 - 0 - - - - Click the below button, If everything goes well, you'll pointed to Identi.ca website to allow access to Choqok. - - - true + + kcfg_host - - - - Verify Credentials - - - &Authenticate with StatusNet service - - + + @@ -240,14 +132,11 @@ - &Password: + Password: Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - kcfg_oauthUsername - @@ -263,14 +152,11 @@ - &Username: + Username: Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - kcfg_oauthUsername - @@ -378,26 +264,11 @@ - KLed - QWidget -
kled.h
-
- - KPushButton - QPushButton -
kpushbutton.h
-
- KLineEdit QLineEdit
klineedit.h
- KComboBox - QComboBox -
kcombobox.h
-
- KTabWidget QTabWidget
ktabwidget.h
@@ -408,9 +279,6 @@ kcfg_alias kcfg_host kcfg_api - kcfg_authMethod - kcfg_oauthUsername - kcfg_authorize kcfg_basicUsername kcfg_basicPassword tabwidget diff -Nru choqok-1.3/microblogs/laconica/laconicaeditaccount.cpp choqok-1.4/microblogs/laconica/laconicaeditaccount.cpp --- choqok-1.3/microblogs/laconica/laconicaeditaccount.cpp 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/microblogs/laconica/laconicaeditaccount.cpp 2013-08-31 05:51:23.000000000 +0200 @@ -44,41 +44,41 @@ : ChoqokEditAccountWidget(account, parent), mAccount(account), progress(0), isAuthenticated(false) { setupUi(this); - setAuthenticated(false); +// setAuthenticated(false); oauthConsumerKey = "747d09d8e7b9417f5835f04510cb86ed";//Identi.ca tokens oauthConsumerSecret = "57605f8507a041525a2d5c0abef15b20"; - connect(kcfg_authorize, SIGNAL(clicked(bool)), SLOT(authorizeUser())); - connect(kcfg_authMethod, SIGNAL(currentIndexChanged(int)), SLOT(slotAuthMethodChanged(int))); - slotAuthMethodChanged(kcfg_authMethod->currentIndex()); +// connect(kcfg_authorize, SIGNAL(clicked(bool)), SLOT(authorizeUser())); +// connect(kcfg_authMethod, SIGNAL(currentIndexChanged(int)), SLOT(slotAuthMethodChanged(int))); +// slotAuthMethodChanged(kcfg_authMethod->currentIndex()); connect(kcfg_host, SIGNAL(editingFinished()), SLOT(slotCheckHostUrl())); if(mAccount) { kcfg_alias->setText( mAccount->alias() ); kcfg_host->setText( mAccount->host() ); kcfg_api->setText( mAccount->api() ); - kcfg_oauthUsername->setText( mAccount->username() ); +// kcfg_oauthUsername->setText( mAccount->username() ); kcfg_basicUsername->setText( mAccount->username() ); kcfg_basicPassword->setText( mAccount->password() ); kcfg_changeExclamationMark->setChecked( mAccount->isChangeExclamationMark() ); kcfg_changeToString->setText( mAccount->changeExclamationMarkToText() ); - if(mAccount->usingOAuth()){ - if( !mAccount->oauthConsumerKey().isEmpty() && - !mAccount->oauthConsumerSecret().isEmpty() && - !mAccount->oauthToken().isEmpty() && - !mAccount->oauthTokenSecret().isEmpty() ) { - setAuthenticated(true); - oauthConsumerKey = mAccount->oauthConsumerKey(); - oauthConsumerSecret = mAccount->oauthConsumerSecret(); - token = mAccount->oauthToken(); - tokenSecret = mAccount->oauthTokenSecret(); - } else { - setAuthenticated(false); - } - kcfg_authMethod->setCurrentIndex(0); - } else { - kcfg_authMethod->setCurrentIndex(1); - } +// if(mAccount->usingOAuth()){ +// if( !mAccount->oauthConsumerKey().isEmpty() && +// !mAccount->oauthConsumerSecret().isEmpty() && +// !mAccount->oauthToken().isEmpty() && +// !mAccount->oauthTokenSecret().isEmpty() ) { +// setAuthenticated(true); +// oauthConsumerKey = mAccount->oauthConsumerKey(); +// oauthConsumerSecret = mAccount->oauthConsumerSecret(); +// token = mAccount->oauthToken(); +// tokenSecret = mAccount->oauthTokenSecret(); +// } else { +// setAuthenticated(false); +// } +// kcfg_authMethod->setCurrentIndex(0); +// } else { +// kcfg_authMethod->setCurrentIndex(1); +// } } else { - kcfg_authMethod->setCurrentIndex(0); +// kcfg_authMethod->setCurrentIndex(0); QString newAccountAlias = microblog->serviceName(); QString servName = newAccountAlias; int counter = 1; @@ -102,28 +102,28 @@ bool LaconicaEditAccountWidget::validateData() { - if( kcfg_authMethod->currentIndex()==0 ) {//OAuth - if(kcfg_alias->text().isEmpty() || kcfg_oauthUsername->text().isEmpty() || !isAuthenticated) - return false; - } else {//Basic +// if( kcfg_authMethod->currentIndex()==0 ) {//OAuth +// if(kcfg_alias->text().isEmpty() || kcfg_oauthUsername->text().isEmpty() || !isAuthenticated) +// return false; +// } else {//Basic if(kcfg_alias->text().isEmpty() || kcfg_basicUsername->text().isEmpty() || kcfg_basicPassword->text().isEmpty()) return false; - } +// } return true; } Choqok::Account* LaconicaEditAccountWidget::apply() { kDebug(); - if(kcfg_authMethod->currentIndex() == 0){ + /*if(kcfg_authMethod->currentIndex() == 0){ mAccount->setUsername( kcfg_oauthUsername->text() ); mAccount->setOauthToken( token ); mAccount->setOauthConsumerKey( oauthConsumerKey ); mAccount->setOauthConsumerSecret( oauthConsumerSecret ); mAccount->setOauthTokenSecret( tokenSecret ); mAccount->setUsingOAuth(true); - } else { + } else*/ { mAccount->setUsername( kcfg_basicUsername->text() ); mAccount->setPassword( kcfg_basicPassword->text() ); mAccount->setUsingOAuth(false); @@ -138,82 +138,82 @@ return mAccount; } -void LaconicaEditAccountWidget::authorizeUser() -{ - kDebug(); - slotCheckHostUrl(); - if(KUrl(kcfg_host->text()).host()!="identi.ca"){ - KMessageBox::sorry(this, i18n("Sorry! OAuth Method just works with Identi.ca server. You have to use basic authentication for other StatusNet servers.")); - kcfg_authMethod->setCurrentIndex(1); - return; - } - qoauth = new QOAuth::Interface(new KIO::AccessManager(this), this);//TODO KDE 4.5 Change to use new class. - //TODO change this to have support for self hosted StatusNets - qoauth->setConsumerKey( oauthConsumerKey ); - qoauth->setConsumerSecret( oauthConsumerSecret ); - qoauth->setRequestTimeout( 10000 ); - - // send a request for an unauthorized token - QString oauthReqTokenUrl = QString("%1/%2/oauth/request_token").arg(kcfg_host->text()).arg(kcfg_api->text()); -// kDebug()<requestToken( oauthReqTokenUrl, QOAuth::GET, QOAuth::HMAC_SHA1, params ); - setAuthenticated(false); - kcfg_authorize->setIcon(KIcon("object-locked")); - - // if no error occurred, read the received token and token secret - if ( qoauth->error() == QOAuth::NoError ) { - token = reply.value( QOAuth::tokenParameterName() ); - tokenSecret = reply.value( QOAuth::tokenSecretParameterName() ); - kDebug()<<"token: "<text()).arg(kcfg_api->text())); - url.addQueryItem( QOAuth::tokenParameterName(), token ); - url.addQueryItem( "oauth_token", token ); - Choqok::openUrl(url); - kcfg_authorize->setEnabled(false); - getPinCode(); - } else { - kDebug()<<"ERROR: " <error()<<' '<error()); - KMessageBox::detailedError(this, i18n("Authentication Error"), - Choqok::qoauthErrorText(qoauth->error())); - } -} - -void LaconicaEditAccountWidget::getPinCode() -{ - isAuthenticated = false; - while(!isAuthenticated){ - QString verifier = KInputDialog::getText( i18n("Security code"), - i18nc("Security code recieved from StatusNet", - "Enter security code:")); - if(verifier.isEmpty()) - return; - QOAuth::ParamMap otherArgs; - otherArgs.insert( "oauth_verifier", verifier.toUtf8() ); - - QOAuth::ParamMap reply = - qoauth->accessToken( QString("%1/%2/oauth/access_token").arg(kcfg_host->text()).arg(kcfg_api->text()), - QOAuth::GET, token, tokenSecret, QOAuth::HMAC_SHA1, otherArgs ); - // if no error occurred, read the Access Token (and other arguments, if applicable) - if ( qoauth->error() == QOAuth::NoError ) { - sender()->deleteLater(); - kcfg_authorize->setEnabled(true); - token = reply.value( QOAuth::tokenParameterName() ); - tokenSecret = reply.value( QOAuth::tokenSecretParameterName() ); - kDebug()<<"token: "<error()<<' '<error()); - KMessageBox::detailedError(this, i18n("Authentication Error"), - Choqok::qoauthErrorText(qoauth->error())); - } - } -} +// void LaconicaEditAccountWidget::authorizeUser() +// { +// kDebug(); +// slotCheckHostUrl(); +// if(KUrl(kcfg_host->text()).host()!="identi.ca"){ +// KMessageBox::sorry(this, i18n("Sorry, OAuth Method just works with Identi.ca server. You have to use basic authentication for other StatusNet servers.")); +// kcfg_authMethod->setCurrentIndex(1); +// return; +// } +// qoauth = new QOAuth::Interface(new KIO::AccessManager(this), this);//TODO KDE 4.5 Change to use new class. +// //TODO change this to have support for self hosted StatusNets +// qoauth->setConsumerKey( oauthConsumerKey ); +// qoauth->setConsumerSecret( oauthConsumerSecret ); +// qoauth->setRequestTimeout( 10000 ); +// +// // send a request for an unauthorized token +// QString oauthReqTokenUrl = QString("%1/%2/oauth/request_token").arg(kcfg_host->text()).arg(kcfg_api->text()); +// // kDebug()<requestToken( oauthReqTokenUrl, QOAuth::GET, QOAuth::HMAC_SHA1, params ); +// setAuthenticated(false); +// kcfg_authorize->setIcon(KIcon("object-locked")); +// +// // if no error occurred, read the received token and token secret +// if ( qoauth->error() == QOAuth::NoError ) { +// token = reply.value( QOAuth::tokenParameterName() ); +// tokenSecret = reply.value( QOAuth::tokenSecretParameterName() ); +// kDebug()<<"token: "<text()).arg(kcfg_api->text())); +// url.addQueryItem( QOAuth::tokenParameterName(), token ); +// url.addQueryItem( "oauth_token", token ); +// Choqok::openUrl(url); +// kcfg_authorize->setEnabled(false); +// getPinCode(); +// } else { +// kDebug()<<"ERROR: " <error()<<' '<error()); +// KMessageBox::detailedError(this, i18n("Authentication Error"), +// Choqok::qoauthErrorText(qoauth->error())); +// } +// } +// +// void LaconicaEditAccountWidget::getPinCode() +// { +// isAuthenticated = false; +// while(!isAuthenticated){ +// QString verifier = KInputDialog::getText( i18n("Security code"), +// i18nc("Security code recieved from StatusNet", +// "Enter security code:")); +// if(verifier.isEmpty()) +// return; +// QOAuth::ParamMap otherArgs; +// otherArgs.insert( "oauth_verifier", verifier.toUtf8() ); +// +// QOAuth::ParamMap reply = +// qoauth->accessToken( QString("%1/%2/oauth/access_token").arg(kcfg_host->text()).arg(kcfg_api->text()), +// QOAuth::GET, token, tokenSecret, QOAuth::HMAC_SHA1, otherArgs ); +// // if no error occurred, read the Access Token (and other arguments, if applicable) +// if ( qoauth->error() == QOAuth::NoError ) { +// sender()->deleteLater(); +// kcfg_authorize->setEnabled(true); +// token = reply.value( QOAuth::tokenParameterName() ); +// tokenSecret = reply.value( QOAuth::tokenSecretParameterName() ); +// kDebug()<<"token: "<error()<<' '<error()); +// KMessageBox::detailedError(this, i18n("Authentication Error"), +// Choqok::qoauthErrorText(qoauth->error())); +// } +// } +// } void LaconicaEditAccountWidget::loadTimelinesTableState() { @@ -245,30 +245,30 @@ mAccount->setTimelineNames(timelines); } -void LaconicaEditAccountWidget::slotAuthMethodChanged(int index) -{ - if(index == 0){ - kcfg_BasicBox->hide(); - kcfg_OAuthBox->show(); - } else { - kcfg_BasicBox->show(); - kcfg_OAuthBox->hide(); - } -} - -void LaconicaEditAccountWidget::setAuthenticated(bool authenticated) -{ - isAuthenticated = authenticated; - if(authenticated){ - kcfg_authorize->setIcon(KIcon("object-unlocked")); - kcfg_authenticateLed->on(); - kcfg_authenticateStatus->setText(i18n("Authenticated")); - } else { - kcfg_authorize->setIcon(KIcon("object-locked")); - kcfg_authenticateLed->off(); - kcfg_authenticateStatus->setText(i18n("Not Authenticated")); - } -} +// void LaconicaEditAccountWidget::slotAuthMethodChanged(int index) +// { +// if(index == 0){ +// kcfg_BasicBox->hide(); +// kcfg_OAuthBox->show(); +// } else { +// kcfg_BasicBox->show(); +// kcfg_OAuthBox->hide(); +// } +// } + +// void LaconicaEditAccountWidget::setAuthenticated(bool authenticated) +// { +// isAuthenticated = authenticated; +// if(authenticated){ +// kcfg_authorize->setIcon(KIcon("object-unlocked")); +// kcfg_authenticateLed->on(); +// kcfg_authenticateStatus->setText(i18n("Authenticated")); +// } else { +// kcfg_authorize->setIcon(KIcon("object-locked")); +// kcfg_authenticateLed->off(); +// kcfg_authenticateStatus->setText(i18n("Not Authenticated")); +// } +// } void LaconicaEditAccountWidget::slotCheckHostUrl() { diff -Nru choqok-1.3/microblogs/laconica/laconicaeditaccount.h choqok-1.4/microblogs/laconica/laconicaeditaccount.h --- choqok-1.3/microblogs/laconica/laconicaeditaccount.h 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/microblogs/laconica/laconicaeditaccount.h 2013-08-31 05:51:23.000000000 +0200 @@ -61,16 +61,16 @@ virtual Choqok::Account *apply(); protected slots: - virtual void authorizeUser(); - void slotAuthMethodChanged(int); +// virtual void authorizeUser(); +// void slotAuthMethodChanged(int); void slotCheckHostUrl(); // void getAccessToken(); protected: - virtual void getPinCode(); +// virtual void getPinCode(); void loadTimelinesTableState(); void saveTimelinesTableState(); - void setAuthenticated(bool authenticated); +// void setAuthenticated(bool authenticated); LaconicaMicroBlog *mBlog; LaconicaAccount *mAccount; diff -Nru choqok-1.3/microblogs/laconica/laconicamicroblog.cpp choqok-1.4/microblogs/laconica/laconicamicroblog.cpp --- choqok-1.3/microblogs/laconica/laconicamicroblog.cpp 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/microblogs/laconica/laconicamicroblog.cpp 2013-08-31 05:51:23.000000000 +0200 @@ -103,7 +103,7 @@ } Choqok::UI::PostWidget* LaconicaMicroBlog::createPostWidget(Choqok::Account* account, - const Choqok::Post &post, QWidget* parent) + Choqok::Post *post, QWidget* parent) { return new LaconicaPostWidget(account, post, parent); } @@ -228,11 +228,16 @@ { friendsList.clear(); if ( theAccount ) { - requestFriendsScreenName(theAccount); + doRequestFriendsScreenName(theAccount, 1); } } -void LaconicaMicroBlog::requestFriendsScreenName(TwitterApiAccount* theAccount, int page) +void LaconicaMicroBlog::requestFriendsScreenName(TwitterApiAccount* theAccount) +{ + doRequestFriendsScreenName(theAccount, 1); +} + +void LaconicaMicroBlog::doRequestFriendsScreenName(TwitterApiAccount* theAccount, int page) { kDebug(); TwitterApiAccount* account = qobject_cast(theAccount); @@ -262,14 +267,14 @@ TwitterApiAccount *theAccount = qobject_cast( mJobsAccount.take(job) ); KIO::StoredTransferJob* stJob = qobject_cast( job ); QStringList newList; - if(format=="json"){ - newList = readUsersScreenNameFromJson( theAccount, stJob->data() ); - } else { - newList = readUsersScreenNameFromXml( theAccount, stJob->data() ); - } + //if(format=="json"){ + newList = readUsersScreenName( theAccount, stJob->data() ); + //} else { + // newList = readUsersScreenNameFromXml( theAccount, stJob->data() ); + //} friendsList << newList; if ( newList.count() == 100 ) { - requestFriendsScreenName( theAccount, ++friendsPage ); + doRequestFriendsScreenName( theAccount, ++friendsPage ); } else { friendsList.removeDuplicates(); theAccount->setFriendsList(friendsList); @@ -277,7 +282,7 @@ } } -QStringList LaconicaMicroBlog::readUsersScreenNameFromXml(Choqok::Account* theAccount, const QByteArray& buffer) +/*QStringList LaconicaMicroBlog::readUsersScreenNameFromXml(Choqok::Account* theAccount, const QByteArray& buffer) { kDebug(); QStringList list; @@ -315,7 +320,7 @@ node = node.nextSibling(); } return list; -} +}*/ void LaconicaMicroBlog::fetchConversation(Choqok::Account* theAccount, const ChoqokId& conversationId) { @@ -355,11 +360,11 @@ i18n("Fetching conversation failed. %1", job->errorString()), Normal ); } else { KIO::StoredTransferJob *stj = qobject_cast ( job ); - if(format=="json"){ - posts = readTimelineFromJson ( theAccount, stj->data() ); - } else { - posts = readTimelineFromXml ( theAccount, stj->data() ); - } + //if(format=="json"){ + posts = readTimeline ( theAccount, stj->data() ); + //} else { + // posts = readTimelineFromXml ( theAccount, stj->data() ); + //} if( !posts.isEmpty() ){ emit conversationFetched(theAccount, conversationId, posts); } diff -Nru choqok-1.3/microblogs/laconica/laconicamicroblog.h choqok-1.4/microblogs/laconica/laconicamicroblog.h --- choqok-1.3/microblogs/laconica/laconicamicroblog.h 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/microblogs/laconica/laconicamicroblog.h 2013-08-31 05:51:23.000000000 +0200 @@ -52,7 +52,7 @@ virtual Choqok::UI::TimelineWidget * createTimelineWidget( Choqok::Account* account, const QString& timelineName, QWidget* parent ); virtual Choqok::UI::PostWidget* createPostWidget(Choqok::Account* account, - const Choqok::Post& post, QWidget* parent); + Choqok::Post* post, QWidget* parent); virtual Choqok::UI::ComposerWidget* createComposerWidget(Choqok::Account* account, QWidget* parent); virtual QString profileUrl( Choqok::Account *account,const QString &username) const; virtual QString postUrl ( Choqok::Account *account, const QString &username, @@ -73,9 +73,14 @@ protected: virtual void listFriendsUsername(TwitterApiAccount* theAccount); - virtual void requestFriendsScreenName(TwitterApiAccount* theAccount, int page = 1); - virtual QStringList readUsersScreenNameFromXml(Choqok::Account* theAccount, const QByteArray& buffer); +private: + void doRequestFriendsScreenName(TwitterApiAccount* theAccount, int page); + +public: + virtual void requestFriendsScreenName(TwitterApiAccount* theAccount); + + //virtual QStringList readUsersScreenNameFromXml(Choqok::Account* theAccount, const QByteArray& buffer); protected Q_SLOTS: virtual void slotFetchConversation( KJob* job ); diff -Nru choqok-1.3/microblogs/laconica/laconicapostwidget.cpp choqok-1.4/microblogs/laconica/laconicapostwidget.cpp --- choqok-1.3/microblogs/laconica/laconicapostwidget.cpp 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/microblogs/laconica/laconicapostwidget.cpp 2013-08-31 05:51:23.000000000 +0200 @@ -67,7 +67,7 @@ QString tmpUsername; }; -LaconicaPostWidget::LaconicaPostWidget(Choqok::Account* account, const Choqok::Post& post, QWidget* parent) +LaconicaPostWidget::LaconicaPostWidget(Choqok::Account* account, Choqok::Post* post, QWidget* parent) : TwitterApiPostWidget(account, post, parent), d( new Private(account) ) { @@ -100,14 +100,14 @@ void LaconicaPostWidget::slotReplyToAll() { QStringList nicks; - nicks.append(currentPost().author.userName); + nicks.append(currentPost()->author.userName); - QString txt = QString("@%1 ").arg(currentPost().author.userName); + QString txt = QString("@%1 ").arg(currentPost()->author.userName); int pos = 0; - while ((pos = mLaconicaUserRegExp.indexIn(currentPost().content, pos)) != -1) { + while ((pos = mLaconicaUserRegExp.indexIn(currentPost()->content, pos)) != -1) { if (mLaconicaUserRegExp.cap(2).toLower() != currentAccount()->username() && - mLaconicaUserRegExp.cap(2).toLower() != currentPost().author.userName && + mLaconicaUserRegExp.cap(2).toLower() != currentPost()->author.userName && !nicks.contains(mLaconicaUserRegExp.cap(2).toLower())){ nicks.append(mLaconicaUserRegExp.cap(2)); txt += QString("@%1 ").arg(mLaconicaUserRegExp.cap(2)); @@ -117,7 +117,7 @@ txt.chop(1); - emit reply(txt, currentPost().postId, currentPost().author.userName); + emit reply(txt, currentPost()->postId, currentPost()->author.userName); } QString LaconicaPostWidget::prepareStatus(const QString& text) @@ -195,7 +195,7 @@ i18nc("Open profile page in browser", "Open profile in browser"), &menu); menu.addAction(info); - if(currentPost().source != "ostatus") { + if(currentPost()->source != "ostatus") { menu.addAction(from); menu.addAction(to); from->setData(LaconicaSearch::FromUser); @@ -204,7 +204,7 @@ menu.addAction(openInBrowser); //Subscribe/UnSubscribe/Block - bool hasBlock = false, isSubscribe = false; + bool isSubscribe = false; QString accountUsername = d->account->username().toLower(); QString postUsername = username.toLower(); KAction *subscribe = 0, *block = 0, *replyTo = 0, *dMessage = 0; @@ -229,11 +229,10 @@ i18nc("Subscribe to user", "Subscribe to %1", username), actionsMenu); } - hasBlock = true; block = new KAction( KIcon("dialog-cancel"), i18nc("Block user", "Block %1", username), actionsMenu); - if(currentPost().source != "ostatus") { + if(currentPost()->source != "ostatus") { actionsMenu->addAction(subscribe); actionsMenu->addAction(block); } @@ -242,7 +241,7 @@ if(ret == 0) return; if(ret == info) { - TwitterApiWhoisWidget *wd = new TwitterApiWhoisWidget(d->account, username, currentPost(), this); + TwitterApiWhoisWidget *wd = new TwitterApiWhoisWidget(d->account, username, *currentPost(), this); wd->show(QCursor::pos()); return; } else if(ret == subscribe){ @@ -257,8 +256,8 @@ return; } else if(ret == openInBrowser){ kDebug()<author.userName && !currentPost()->author.homePageUrl.isEmpty() ) { + Choqok::openUrl( QUrl( currentPost()->author.homePageUrl ) ); } else { Choqok::openUrl( QUrl( currentAccount()->microblog()->profileUrl(currentAccount(), username) ) ); } diff -Nru choqok-1.3/microblogs/laconica/laconicapostwidget.h choqok-1.4/microblogs/laconica/laconicapostwidget.h --- choqok-1.3/microblogs/laconica/laconicapostwidget.h 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/microblogs/laconica/laconicapostwidget.h 2013-08-31 05:51:23.000000000 +0200 @@ -29,7 +29,7 @@ class LaconicaPostWidget : public TwitterApiPostWidget { public: - LaconicaPostWidget(Choqok::Account* account, const Choqok::Post& post, QWidget* parent = 0); + LaconicaPostWidget(Choqok::Account* account, Choqok::Post* post, QWidget* parent = 0); ~LaconicaPostWidget(); virtual void initUi(); diff -Nru choqok-1.3/microblogs/ocs/choqok_ocs.desktop choqok-1.4/microblogs/ocs/choqok_ocs.desktop --- choqok-1.3/microblogs/ocs/choqok_ocs.desktop 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/microblogs/ocs/choqok_ocs.desktop 2013-08-31 05:51:23.000000000 +0200 @@ -15,6 +15,7 @@ X-KDE-PluginInfo-License=GPL X-KDE-PluginInfo-EnabledByDefault=false Name=Open Collaboration Services +Name[bg]=Услуги за сътрудничество (Open Collaboration) Name[bs]=Otvoreni servisi za saradnju Name[ca]=Serveis «Open Collaboration» Name[ca@valencia]=Serveis «Open Collaboration» @@ -39,16 +40,21 @@ Name[pt]=Serviços Abertos de Colaboração Name[pt_BR]=Serviços de Colaboração Abertos Name[ru]=Службы Open Collaboration +Name[sk]=Služby otvorenej spolupráce +Name[sl]=Odprte storitve za sodelovanje Name[sv]=Öppna samarbetstjänster +Name[tr]=Açık İşbirliği Servisleri Name[ug]=ئوچۇق ھەمكارلىق مۇلازىمەتلىرى Name[uk]=Служби Open Collaboration Name[x-test]=xxOpen Collaboration Servicesxx Name[zh_CN]=开放式协作服务 Name[zh_TW]=開放協同服務 Comment=Open Collaboration Services +Comment[bg]=Услуги за сътрудничество (Open Collaboration) Comment[bs]=Otvoreni servisi za saradnju Comment[ca]=Serveis de col·laboració oberta Comment[ca@valencia]=Serveis de col·laboració oberta +Comment[cs]=Otevřít služby spolupráce Comment[da]=Open Collaboration-tjenester Comment[de]=Open-Collaboration-Dienste Comment[el]=Ανοιχτές συνεργατικές υπηρεσίες @@ -68,7 +74,10 @@ Comment[pt]=Serviços Abertos de Colaboração (OCS) Comment[pt_BR]=Serviços de Colaboração Abertos Comment[ru]=Службы Open Collaboration +Comment[sk]=Služby otvorenej spolupráce +Comment[sl]=Odprte storitve za sodelovanje Comment[sv]=Öppna samarbetstjänster +Comment[tr]=Açık İşbirliği Servisleri Comment[ug]=ئوچۇق ھەمكارلىق مۇلازىمەتلىرى Comment[uk]=Служби Open Collaboration Comment[x-test]=xxOpen Collaboration Servicesxx diff -Nru choqok-1.3/microblogs/ocs/CMakeLists.txt choqok-1.4/microblogs/ocs/CMakeLists.txt --- choqok-1.3/microblogs/ocs/CMakeLists.txt 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/microblogs/ocs/CMakeLists.txt 2013-08-31 05:51:23.000000000 +0200 @@ -2,7 +2,7 @@ find_package(LibAttica) IF(LIBATTICA_FOUND) - message(STATUS "FOUND LibAttica: Will build OCS plugin") + message(STATUS "FOUND LibAttica: Will build \"Open Collaboration Services\" plugin") include_directories( ${CHOQOK_INCLUDES} ${LIBATTICA_INCLUDE_DIR} @@ -30,5 +30,5 @@ add_subdirectory(icons) ELSE(LIBATTICA_FOUND) - message(WARNING "LibAttica NOT FOUND, won't build OCS plugin") + message(WARNING "Optional dependency \"LibAttica\" NOT FOUND, won't build \"Open Collaboration Services\" plugin") ENDIF(LIBATTICA_FOUND) diff -Nru choqok-1.3/microblogs/ocs/ocsmicroblog.cpp choqok-1.4/microblogs/ocs/ocsmicroblog.cpp --- choqok-1.3/microblogs/ocs/ocsmicroblog.cpp 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/microblogs/ocs/ocsmicroblog.cpp 2013-08-31 05:51:23.000000000 +0200 @@ -68,7 +68,7 @@ } QList< Choqok::UI::PostWidget *>::const_iterator it, endIt = timeline.constEnd(); for ( it = timeline.constBegin(); it != endIt; ++it ) { - const Choqok::Post *post = &((*it)->currentPost()); + const Choqok::Post *post = (*it)->currentPost(); KConfigGroup grp( &postsBackup, post->creationDateTime.toString() ); grp.writeEntry( "creationDateTime", post->creationDateTime ); grp.writeEntry( "postId", post->postId.toString() ); diff -Nru choqok-1.3/microblogs/twitter/choqok_twitter.desktop choqok-1.4/microblogs/twitter/choqok_twitter.desktop --- choqok-1.3/microblogs/twitter/choqok_twitter.desktop 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/microblogs/twitter/choqok_twitter.desktop 2013-08-31 05:51:23.000000000 +0200 @@ -36,6 +36,7 @@ Name[it]=Twitter Name[ja]=Twitter Name[km]=Twitter +Name[lt]=Twitter Name[nb]=Twitter Name[nds]=Twitter Name[nl]=Twitter @@ -45,6 +46,8 @@ Name[pt_BR]=Twitter Name[ro]=Twitter Name[ru]=Twitter +Name[sk]=Twitter +Name[sl]=Twitter Name[sv]=Twitter Name[tr]=Twitter Name[ug]=Twitter @@ -57,6 +60,7 @@ Comment[bs]=Servis twitter.com Comment[ca]=Servei Twitter.com Comment[ca@valencia]=Servei Twitter.com +Comment[cs]=Služba Twitter.com Comment[da]=Twitter.com-tjenesten Comment[de]=Twitter.com-Dienst Comment[el]=Υπηρεσία Twitter.com @@ -64,13 +68,13 @@ Comment[es]=Servicio de Twitter.com Comment[et]=Twitter.com-i teenus Comment[fi]=Twitter.com-palvelu -Comment[fr]=Service Twitter.com +Comment[fr]=Service « Twitter.com » Comment[gl]=Servizo Twitter.com Comment[hr]=Servis twitter.com Comment[hu]=Twitter.com szolgáltatás Comment[it]=Servizio Twitter.com Comment[ja]=Twitter.com サービス -Comment[km]=សេវា​របស់​​ Twitter.com +Comment[km]=សេវា​កម្ម​របស់​​ Twitter.com Comment[nb]=Twitter.com-tjeneste Comment[nds]=De Deenst "Twitter.com" Comment[nl]=Twitter.com-service @@ -80,6 +84,7 @@ Comment[pt_BR]=Serviço Twitter.com Comment[ro]=Serviciu Twitter.com Comment[ru]=Служба Twitter.com +Comment[sl]=Storitev Twitter.com Comment[sv]=Twitter.com-tjänst Comment[tr]=Twitter.com Servisi Comment[uk]=Служба Twitter.com Binary files /tmp/voeBuykKjv/choqok-1.3/microblogs/twitter/icons/hi16-app-twitter_microblog.png and /tmp/ufRLtZVje2/choqok-1.4/microblogs/twitter/icons/hi16-app-twitter_microblog.png differ Binary files /tmp/voeBuykKjv/choqok-1.3/microblogs/twitter/icons/hi22-app-twitter_microblog.png and /tmp/ufRLtZVje2/choqok-1.4/microblogs/twitter/icons/hi22-app-twitter_microblog.png differ Binary files /tmp/voeBuykKjv/choqok-1.3/microblogs/twitter/icons/hi32-app-twitter_microblog.png and /tmp/ufRLtZVje2/choqok-1.4/microblogs/twitter/icons/hi32-app-twitter_microblog.png differ Binary files /tmp/voeBuykKjv/choqok-1.3/microblogs/twitter/icons/hi48-app-twitter_microblog.png and /tmp/ufRLtZVje2/choqok-1.4/microblogs/twitter/icons/hi48-app-twitter_microblog.png differ diff -Nru choqok-1.3/microblogs/twitter/twitteraccount.cpp choqok-1.4/microblogs/twitter/twitteraccount.cpp --- choqok-1.3/microblogs/twitter/twitteraccount.cpp 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/microblogs/twitter/twitteraccount.cpp 2013-08-31 05:51:23.000000000 +0200 @@ -38,8 +38,9 @@ : TwitterApiAccount(parent, alias), d(new Private) { setHost("https://api.twitter.com"); - setUploadHost("https://upload.twitter.com"); - setApi("1"); + setUploadHost("https://api.twitter.com"); + setApi("1.1"); + kDebug() << "Set API version to 1.1"; // d->lists = configGroup()->readEntry("lists", QStringList()); QStringList lists; foreach(const QString & tm, timelineNames()){ diff -Nru choqok-1.3/microblogs/twitter/twittereditaccount_base.ui choqok-1.4/microblogs/twitter/twittereditaccount_base.ui --- choqok-1.3/microblogs/twitter/twittereditaccount_base.ui 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/microblogs/twitter/twittereditaccount_base.ui 2013-08-31 05:51:23.000000000 +0200 @@ -109,7 +109,7 @@ - OAuth Authentication + OAuth Authentication @@ -121,7 +121,7 @@ - Click the below button, If everything goes well, you'll pointed to Twitter website to allow access to Choqok. + Click the below button; if everything goes well, you will pointed to Twitter website to allow access to Choqok. true diff -Nru choqok-1.3/microblogs/twitter/twitterlistdialog.cpp choqok-1.4/microblogs/twitter/twitterlistdialog.cpp --- choqok-1.3/microblogs/twitter/twitterlistdialog.cpp 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/microblogs/twitter/twitterlistdialog.cpp 2013-08-31 05:51:23.000000000 +0200 @@ -83,6 +83,7 @@ KMessageBox::error(this, i18n("You should provide both list author username and list name.")); } else { blog->addListTimeline(account, ui.username->text(), ui.listname->text()); + accept(); } } else KDialog::slotButtonClicked(button); @@ -103,7 +104,7 @@ void TwitterListDialog::loadUserLists() { if(ui.username->text().isEmpty()){ - KMessageBox::error(choqokMainWindow, i18n("No User!")); + KMessageBox::error(choqokMainWindow, i18n("No user.")); return; } connect( blog, SIGNAL(userLists(Choqok::Account*,QString,QList)), diff -Nru choqok-1.3/microblogs/twitter/twittermicroblog.cpp choqok-1.4/microblogs/twitter/twittermicroblog.cpp --- choqok-1.3/microblogs/twitter/twittermicroblog.cpp 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/microblogs/twitter/twittermicroblog.cpp 2013-08-31 05:51:23.000000000 +0200 @@ -64,7 +64,15 @@ kDebug(); setServiceName("Twitter"); setServiceHomepageUrl("https://twitter.com/"); - timelineApiPath["Reply"] = "/statuses/mentions.%1"; + timelineApiPath["Reply"] = "/statuses/mentions_timeline.%1"; + setTimelineInfos(); +} +void TwitterMicroBlog::setTimelineInfos() +{ + // hange description of replies to mentions + Choqok::TimelineInfo *t = mTimelineInfos["Reply"]; + t->name = i18nc("Timeline Name", "Mentions"); + t->description = i18nc("Timeline description", "Mentions of you"); } TwitterMicroBlog::~TwitterMicroBlog() @@ -106,7 +114,7 @@ } Choqok::UI::PostWidget* TwitterMicroBlog::createPostWidget(Choqok::Account* account, - const Choqok::Post &post, QWidget* parent) + Choqok::Post *post, QWidget* parent) { return new TwitterPostWidget(account, post, parent); } @@ -160,7 +168,7 @@ ///Documentation: http://identi.ca/notice/17779990 TwitterAccount* account = qobject_cast(theAccount); KUrl url = account->uploadUrl(); - url.addPath ( "/statuses/update_with_media.xml" ); + url.addPath ( "/statuses/update_with_media.json" ); QByteArray fileContentType = KMimeType::findByUrl( picUrl, 0, true )->name().toUtf8(); QMap formdata; @@ -239,15 +247,19 @@ return; } KUrl url = theAccount->apiUrl(); - url.addPath ( QString("/%1/lists.json").arg(username) ); + url.addPath ( "/lists/ownerships.json" ); + KUrl url_for_oauth(url);//we need base URL (without params) to make OAuth signature with it! + url.addQueryItem("screen_name", username); + QOAuth::ParamMap params; + params.insert("screen_name", username.toLatin1()); KIO::StoredTransferJob *job = KIO::storedGet ( url, KIO::Reload, KIO::HideProgressInfo ) ; if ( !job ) { kError() << "TwitterMicroBlog::loadUserLists: Cannot create an http GET request!"; return; } - job->addMetaData("customHTTPHeader", "Authorization: " + authorizationHeader(theAccount, url, - QOAuth::GET)); + + job->addMetaData("customHTTPHeader", "Authorization: " + authorizationHeader(theAccount, url_for_oauth, QOAuth::GET, params)); mFetchUsersListMap[ job ] = username; mJobsAccount[ job ] = theAccount; connect ( job, SIGNAL ( result ( KJob* ) ), this, SLOT ( slotFetchUserLists(KJob*) ) ); @@ -269,12 +281,14 @@ i18n("Fetching %1's lists failed. %2", username, job->errorString()), Critical ); } else { KIO::StoredTransferJob *stj = qobject_cast ( job ); - QList list = readUserListsFromJson ( theAccount, stj->data() ); + QByteArray buffer = stj->data(); + QList list = readUserListsFromJson ( theAccount, buffer ); if ( list.isEmpty() ) { + kDebug() << buffer; QString errorMsg; - errorMsg = checkJsonForError(stj->data()); + errorMsg = checkForError(buffer); if( errorMsg.isEmpty() ){ - KMessageBox::information(choqokMainWindow, i18n("There's no list record for user %1", username)); + KMessageBox::information(choqokMainWindow, i18n("There is no list record for user %1", username)); } else { emit error( theAccount, ServerError, errorMsg, Critical); } @@ -294,24 +308,20 @@ addTimelineName(name); theAccount->setTimelineNames(tms); theAccount->writeConfig(); - QString url = QString("/%1/lists/%2/statuses").arg(username).arg(listname); + QString url = QString("/lists/statuses"); timelineApiPath[name] = url + ".%1"; updateTimelines(theAccount); } +// TODO: Change to new API void TwitterMicroBlog::setListTimelines(TwitterAccount* theAccount, const QStringList& lists) { kDebug()<timelineNames(); foreach(const QString &name, lists){ - QString lst = name; - lst.remove(0, 1); - QStringList userlist = lst.split('/'); - - QString username = userlist[0], listname = userlist[1]; tms.append(name); addTimelineName(name); - QString url = QString("/%1/lists/%2/statuses").arg(username).arg(listname); + QString url = QString("/lists/statuses"); timelineApiPath[name] = url + ".%1"; } tms.removeDuplicates(); @@ -339,7 +349,7 @@ { bool ok; QList twitterList; - QVariantMap map = jsonParser()->parse(buffer, &ok).toMap(); + QVariantMap map = parser()->parse(buffer, &ok).toMap(); if ( ok && map.contains("lists") ) { QVariantList list = map["lists"].toList(); @@ -355,7 +365,7 @@ Twitter::List TwitterMicroBlog::readListFromJsonMap(Choqok::Account* theAccount, QVariantMap map) { Twitter::List l; - l.author = readUserFromJsonMap( theAccount, map["user"].toMap() ); + l.author = readUser( theAccount, map["user"].toMap() ); l.description = map["description"].toString(); l.fullname = map["full_name"].toString(); l.isFollowing = map["following"].toBool(); diff -Nru choqok-1.3/microblogs/twitter/twittermicroblog.h choqok-1.4/microblogs/twitter/twittermicroblog.h --- choqok-1.3/microblogs/twitter/twittermicroblog.h 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/microblogs/twitter/twittermicroblog.h 2013-08-31 05:51:23.000000000 +0200 @@ -49,7 +49,7 @@ virtual Choqok::UI::TimelineWidget * createTimelineWidget( Choqok::Account* account, const QString& timelineName, QWidget* parent ); virtual Choqok::UI::PostWidget* createPostWidget(Choqok::Account* account, - const Choqok::Post& post, QWidget* parent); + Choqok::Post* post, QWidget* parent); virtual Choqok::UI::ComposerWidget* createComposerWidget(Choqok::Account* account, QWidget* parent); virtual QString postUrl(Choqok::Account* account, const QString& username, const QString& postId) const; @@ -82,7 +82,7 @@ QList readUserListsFromJson(Choqok::Account* theAccount, QByteArray buffer); Twitter::List readListFromJsonMap(Choqok::Account* theAccount, QVariantMap map); QMap mFetchUsersListMap; - + virtual void setTimelineInfos(); private: QPointer mSearchBackend; QMap mListsInfo; diff -Nru choqok-1.3/microblogs/twitter/twitterpostwidget.cpp choqok-1.4/microblogs/twitter/twitterpostwidget.cpp --- choqok-1.3/microblogs/twitter/twitterpostwidget.cpp 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/microblogs/twitter/twitterpostwidget.cpp 2013-08-31 05:51:23.000000000 +0200 @@ -36,7 +36,7 @@ const QRegExp TwitterPostWidget::mTwitterUserRegExp( "([\\s\\W]|^)@([a-z0-9_]+){1,20}", Qt::CaseInsensitive ); const QRegExp TwitterPostWidget::mTwitterTagRegExp("([\\s]|^)#([\\w_\\.\\-]+)", Qt::CaseInsensitive ); -TwitterPostWidget::TwitterPostWidget(Choqok::Account* account, const Choqok::Post& post, QWidget* parent): TwitterApiPostWidget(account, post, parent) +TwitterPostWidget::TwitterPostWidget(Choqok::Account* account, Choqok::Post* post, QWidget* parent): TwitterApiPostWidget(account, post, parent) { } @@ -55,7 +55,7 @@ repeat->setToolTip(i18n("Retweet post using API")); connect( repeat, SIGNAL(triggered(bool)), SLOT(repeatPost()) ); // If person protects their acc, we will use simple adding RT before message - if (!currentPost().author.isProtected) + if (!currentPost()->author.isProtected) menu->addAction(repeat); menu->addAction(resend); btn->setMenu(menu); @@ -73,14 +73,14 @@ void TwitterPostWidget::slotReplyToAll() { QStringList nicks; - nicks.append(currentPost().author.userName); + nicks.append(currentPost()->author.userName); - QString txt = QString("@%1 ").arg(currentPost().author.userName); + QString txt = QString("@%1 ").arg(currentPost()->author.userName); int pos = 0; - while ((pos = mTwitterUserRegExp.indexIn(currentPost().content, pos)) != -1) { + while ((pos = mTwitterUserRegExp.indexIn(currentPost()->content, pos)) != -1) { if (mTwitterUserRegExp.cap(2).toLower() != currentAccount()->username() && - mTwitterUserRegExp.cap(2).toLower() != currentPost().author.userName && + mTwitterUserRegExp.cap(2).toLower() != currentPost()->author.userName && !nicks.contains(mTwitterUserRegExp.cap(2).toLower())){ nicks.append(mTwitterUserRegExp.cap(2)); txt += QString("@%1 ").arg(mTwitterUserRegExp.cap(2)); @@ -90,7 +90,7 @@ txt.chop(1); - emit reply(txt, currentPost().postId, currentPost().author.userName); + emit reply(txt, currentPost()->postId, currentPost()->author.userName); } void TwitterPostWidget::checkAnchor(const QUrl& url) @@ -164,7 +164,7 @@ if(ret == 0) return; if(ret == info) { - TwitterApiWhoisWidget *wd = new TwitterApiWhoisWidget(account, url.host(), currentPost(), this); + TwitterApiWhoisWidget *wd = new TwitterApiWhoisWidget(account, url.host(), *currentPost(), this); wd->show(QCursor::pos()); return; } else if(ret == subscribe){ diff -Nru choqok-1.3/microblogs/twitter/twitterpostwidget.h choqok-1.4/microblogs/twitter/twitterpostwidget.h --- choqok-1.3/microblogs/twitter/twitterpostwidget.h 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/microblogs/twitter/twitterpostwidget.h 2013-08-31 05:51:23.000000000 +0200 @@ -29,7 +29,7 @@ class TwitterPostWidget : public TwitterApiPostWidget { public: - TwitterPostWidget(Choqok::Account* account, const Choqok::Post& post, QWidget* parent = 0); + TwitterPostWidget(Choqok::Account* account, Choqok::Post* post, QWidget* parent = 0); virtual void initUi(); protected slots: diff -Nru choqok-1.3/microblogs/twitter/twittersearch.cpp choqok-1.4/microblogs/twitter/twittersearch.cpp --- choqok-1.3/microblogs/twitter/twittersearch.cpp 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/microblogs/twitter/twittersearch.cpp 2013-08-31 05:51:23.000000000 +0200 @@ -26,10 +26,14 @@ #include #include #include +#include #include #include #include #include "choqokbehaviorsettings.h" +#include "twitteraccount.h" +#include +#include const QRegExp TwitterSearch::m_rId("tag:search.twitter.com,[0-9]+:([0-9]+)"); @@ -70,13 +74,44 @@ { kDebug(); - KUrl url = buildUrl( searchInfo.query, searchInfo.option, sinceStatusId, count, page ); + QOAuth::ParamMap param; + QString query = searchInfo.query; + int option = searchInfo.option; + + QString formattedQuery = mSearchCode[option] + query; + KUrl url( "https://api.twitter.com/1.1/search/tweets.json" ); + KUrl tmpUrl(url); + url.addQueryItem("q", formattedQuery); + QString q = url.query(); + param.insert( "q", q.mid(q.indexOf('=') + 1).toLatin1() ); + if( !sinceStatusId.isEmpty() ) { + url.addQueryItem( "since_id", sinceStatusId ); + param.insert( "since_id", sinceStatusId.toLatin1() ); + } + int cntStr = Choqok::BehaviorSettings::countOfPosts(); + if( count && count <= 100 ) // Twitter API specifies a max count of 100 + cntStr = count; + else + cntStr = 100; + url.addQueryItem( "count", QString::number(cntStr) ); + param.insert( "count", QString::number(cntStr).toLatin1() ); + if( page > 1 ) { + url.addQueryItem( "page", QString::number( page ) ); + param.insert( "page", QString::number( page ).toLatin1() ); + } + kDebug()<(searchInfo.account); + TwitterApiMicroBlog *microblog = qobject_cast(account->microblog()); + + job->addMetaData("customHTTPHeader", "Authorization: " + microblog->authorizationHeader(account, tmpUrl, QOAuth::GET, param)); + mSearchJobs[job] = searchInfo; connect( job, SIGNAL( result( KJob* ) ), this, SLOT( searchResultsReturned( KJob* ) ) ); job->start(); @@ -96,99 +131,55 @@ if( job->error() ) { kError() << "Error: " << job->errorString(); emit error( i18n( "Unable to fetch search results: %1", job->errorString() ) ); + QList postsList; + emit searchResultsReceived( info, postsList ); return; } KIO::StoredTransferJob *jj = qobject_cast( job ); - QList postsList = parseAtom( jj->data() ); + QList postsList = parseJson( jj->data() ); emit searchResultsReceived( info, postsList ); } -QList< Choqok::Post* > TwitterSearch::parseAtom(const QByteArray& buffer) +QList< Choqok::Post* > TwitterSearch::parseJson(QByteArray buffer) { - kDebug(); - QDomDocument document; + bool ok; QList statusList; + QJson::Parser parser; + QVariantMap map = parser.parse(buffer, &ok).toMap(); - document.setContent( buffer ); - - QDomElement root = document.documentElement(); - - if ( root.tagName() != "feed" ) { - kDebug() << "There is no feed element in Atom feed " << buffer.data(); - return statusList; + if ( ok && map.contains("statuses") ) { + QVariantList list = map["statuses"].toList(); + QVariantList::const_iterator it = list.constBegin(); + QVariantList::const_iterator endIt = list.constEnd(); + for(; it != endIt; ++it){ + statusList.prepend(readStatusesFromJsonMap(it->toMap())); + } } + return statusList; +} - QDomNode node = root.firstChild(); - QString timeStr; - while ( !node.isNull() ) { - if ( node.toElement().tagName() != "entry" ) { - node = node.nextSibling(); - continue; - } +Choqok::Post* TwitterSearch::readStatusesFromJsonMap(const QVariantMap& var) +{ + Choqok::Post *post = new Choqok::Post; - QDomNode entryNode = node.firstChild(); - Choqok::Post *status = new Choqok::Post; - status->isPrivate = false; - - while ( !entryNode.isNull() ) { - QDomElement elm = entryNode.toElement(); - if ( elm.tagName() == "id" ) { - // Fomatting example: "tag:search.twitter.com,2005:1235016836" - ChoqokId id; - if(m_rId.exactMatch(elm.text())) { - id = m_rId.cap(1); - } - /* sscanf( qPrintable( elm.text() ), - "tag:search.twitter.com,%*d:%d", &id);*/ - status->postId = id; - } else if ( elm.tagName() == "published" ) { - // Formatting example: "2009-02-21T19:42:39Z" - // Need to extract date in similar fashion to dateFromString - int year, month, day, hour, minute, second; - sscanf( qPrintable( elm.text() ), - "%d-%d-%dT%d:%d:%d%*s", &year, &month, &day, &hour, &minute, &second); - QDateTime recognized( QDate( year, month, day), QTime( hour, minute, second ) ); - recognized.setTimeSpec( Qt::UTC ); - status->creationDateTime = recognized; - } else if ( elm.tagName() == "title" ) { - status->content = elm.text(); - } else if ( elm.tagName() == "twitter:source" ) { - status->source = elm.text(); - } else if ( elm.tagName() == "link") { - if(elm.attributeNode( "rel" ).value() == "image") { - status->author.profileImageUrl = elm.attribute( "href" ); - } else if(elm.attributeNode( "rel" ).value() == "alternate") { - status->link = elm.attribute( "href" ); - } - } else if ( elm.tagName() == "author") { - QDomNode userNode = entryNode.firstChild(); - while ( !userNode.isNull() ) - { - if ( userNode.toElement().tagName() == "name" ) - { - QString fullName = userNode.toElement().text(); - int bracketPos = fullName.indexOf( " ", 0 ); - - QString screenName = fullName.left( bracketPos ); - QString name = fullName.right ( fullName.size() - bracketPos - 2 ); - name.chop( 1 ); - - status->author.realName = name; - status->author.userName = screenName; - } - userNode = userNode.nextSibling(); - } - } - entryNode = entryNode.nextSibling(); - } - status->isFavorited = false; - statusList.insert( 0, status ); - node = node.nextSibling(); - } + post->content = var["text"].toString(); + post->creationDateTime = dateFromString(var["created_at"].toString()); + post->postId = var["id"].toString(); + post->source = var["source"].toString(); + QVariantMap userMap = var["user"].toMap(); + post->author.realName = userMap["name"].toString(); + post->author.userName = userMap["screen_name"].toString(); + post->author.profileImageUrl = userMap["profile_image_url"].toString(); + post->isPrivate = false; + post->isFavorited = false; + post->replyToPostId = var["in_reply_to_status_id_str"].toString(); + post->replyToUserName = var["in_reply_to_screen_name"].toString(); - return statusList; + post->link = QString ( "https://twitter.com/%1/status/%2" ).arg ( post->author.userName ).arg ( post->postId ); + + return post; } QString TwitterSearch::optionCode(int option) @@ -200,23 +191,4 @@ { } -KUrl TwitterSearch::buildUrl( QString query, int option, ChoqokId sinceStatusId, - uint count, uint page) -{ - kDebug(); - QString formattedQuery = mSearchCode[option] + query; - KUrl url( "https://search.twitter.com/search.atom" ); - url.addQueryItem("q", formattedQuery); - if( !sinceStatusId.isEmpty() ) - url.addQueryItem( "since_id", sinceStatusId ); - int cntStr = Choqok::BehaviorSettings::countOfPosts(); - if( count && count <= 100 ) - cntStr = count; - url.addQueryItem( "rpp", QString::number(cntStr) ); - if( page > 1 ) - url.addQueryItem( "page", QString::number( page ) ); - - return url; -} - #include "twittersearch.moc" diff -Nru choqok-1.3/microblogs/twitter/twittersearch.h choqok-1.4/microblogs/twitter/twittersearch.h --- choqok-1.3/microblogs/twitter/twittersearch.h 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/microblogs/twitter/twittersearch.h 2013-08-31 05:51:23.000000000 +0200 @@ -52,10 +52,8 @@ virtual void searchResultsReturned( KJob *job ); protected: - virtual KUrl buildUrl( QString query, int option, - ChoqokId sinceStatusId = ChoqokId(), - uint count = 0, uint page = 1 ); - QList parseAtom( const QByteArray &buffer ); + QList< Choqok::Post* > parseJson(QByteArray buffer); + Choqok::Post* readStatusesFromJsonMap(const QVariantMap& var); QMap mSearchCode; QMap mI18nSearchCode; diff -Nru choqok-1.3/plugins/betternotify/choqok_notify_config.desktop choqok-1.4/plugins/betternotify/choqok_notify_config.desktop --- choqok-1.3/plugins/betternotify/choqok_notify_config.desktop 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/plugins/betternotify/choqok_notify_config.desktop 2013-08-31 05:51:23.000000000 +0200 @@ -13,13 +13,16 @@ Name[bg]=По-добро известяване Name[ca]=Millor notificació Name[ca@valencia]=Millor notificació +Name[cs]=Lépe informovat Name[da]=Bedre bekendtgørelse +Name[de]=Bessere Benachrichtigung Name[el]=Βελτιωμένη ειδοποίηση Name[es]=Mejores notificaciones Name[et]=Paremad märguanded Name[fr]=Meilleure notification +Name[gl]=Notificar o mellor Name[hu]=Jobb értesítés -Name[it]=Better Notify +Name[it]=Notifiche migliori Name[km]=ការ​ជូនដំណឹង​ដែល​ប្រសើរ​ជាង Name[nb]=Best å varsle Name[nds]=Beter Bescheden @@ -28,7 +31,10 @@ Name[pl]=Lepsze powiadamianie Name[pt]=Notificar as Melhores Name[pt_BR]=Notificar as melhores +Name[ru]=Уведомления о важном +Name[sl]=Boljša obvestila Name[sv]=Bör underrätta +Name[tr]=Daha İyi Bildir Name[uk]=Кращі сповіщення Name[x-test]=xxBetter Notifyxx Name[zh_CN]=更好的通知 @@ -37,11 +43,14 @@ Comment[bg]=Известяване за важни публикации Comment[ca]=Notifica els missatges importants Comment[ca@valencia]=Notifica els missatges importants +Comment[cs]=Upozorňovat na důležité příspěvky Comment[da]=Bekendtgør om vigtige indlæg +Comment[de]=Benachrichtigung über wichtige Nachrichten Comment[el]=Ειδοποίηση για σημαντικές αναρτήσεις Comment[es]=Notificar las publicaciones importantes Comment[et]=Märguanded tähtsate postituste kohta Comment[fr]=Notifie les billets importants +Comment[gl]=Notificar sobre mensaxes importantes. Comment[hu]=Értesítés a fontos bejegyzésekről Comment[it]=Notifica i messaggi importanti Comment[km]=ជូនដំណឹង​ប្រកាស​សំខាន់ៗ @@ -51,7 +60,10 @@ Comment[pl]=Powiadamiaj o ważnych postach Comment[pt]=Notificar as Publicações Importantes Comment[pt_BR]=Avisa ao receber mensagens importantes +Comment[ru]=Уведомления о важных сообщениях +Comment[sl]=Obvesti ob pomembnih objavah Comment[sv]=Underrätta om viktiga inlägg +Comment[tr]=Önemli Gönderimleri Bildir Comment[uk]=Сповіщення щодо важливих дописів Comment[x-test]=xxNotify Important Postsxx Comment[zh_CN]=通知重要发布 diff -Nru choqok-1.3/plugins/betternotify/choqok_notify.desktop choqok-1.4/plugins/betternotify/choqok_notify.desktop --- choqok-1.3/plugins/betternotify/choqok_notify.desktop 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/plugins/betternotify/choqok_notify.desktop 2013-08-31 05:51:23.000000000 +0200 @@ -18,13 +18,16 @@ Name[bg]=По-добро известяване Name[ca]=Millor notificació Name[ca@valencia]=Millor notificació +Name[cs]=Lépe informovat Name[da]=Bedre bekendtgørelse +Name[de]=Bessere Benachrichtigung Name[el]=Βελτιωμένη ειδοποίηση Name[es]=Mejores notificaciones Name[et]=Paremad märguanded Name[fr]=Meilleure notification +Name[gl]=Notificar o mellor Name[hu]=Jobb értesítés -Name[it]=Better Notify +Name[it]=Notifiche migliori Name[km]=ការ​ជូនដំណឹង​ដែល​ប្រសើរ​ជាង Name[nb]=Best å varsle Name[nds]=Beter Bescheden @@ -33,7 +36,10 @@ Name[pl]=Lepsze powiadamianie Name[pt]=Notificar as Melhores Name[pt_BR]=Notificar as melhores +Name[ru]=Уведомления о важном +Name[sl]=Boljša obvestila Name[sv]=Bör underrätta +Name[tr]=Daha İyi Bildir Name[uk]=Кращі сповіщення Name[x-test]=xxBetter Notifyxx Name[zh_CN]=更好的通知 @@ -42,11 +48,14 @@ Comment[bg]=Известяване за важни публикации Comment[ca]=Notifica els missatges importants Comment[ca@valencia]=Notifica els missatges importants +Comment[cs]=Upozorňovat na důležité příspěvky Comment[da]=Bekendtgør om vigtige indlæg +Comment[de]=Benachrichtigung über wichtige Nachrichten Comment[el]=Ειδοποίηση για σημαντικές αναρτήσεις Comment[es]=Notificar las publicaciones importantes Comment[et]=Märguanded tähtsate postituste kohta Comment[fr]=Notifie les billets importants +Comment[gl]=Notificar sobre mensaxes importantes. Comment[hu]=Értesítés a fontos bejegyzésekről Comment[it]=Notifica i messaggi importanti Comment[km]=ជូនដំណឹង​ប្រកាស​សំខាន់ៗ @@ -56,7 +65,10 @@ Comment[pl]=Powiadamiaj o ważnych postach Comment[pt]=Notificar as Publicações Importantes Comment[pt_BR]=Avisa ao receber mensagens importantes +Comment[ru]=Уведомления о важных сообщениях +Comment[sl]=Obvesti ob pomembnih objavah Comment[sv]=Underrätta om viktiga inlägg +Comment[tr]=Önemli Gönderimleri Bildir Comment[uk]=Сповіщення щодо важливих дописів Comment[x-test]=xxNotify Important Postsxx Comment[zh_CN]=通知重要发布 diff -Nru choqok-1.3/plugins/betternotify/CMakeLists.txt choqok-1.4/plugins/betternotify/CMakeLists.txt --- choqok-1.3/plugins/betternotify/CMakeLists.txt 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/plugins/betternotify/CMakeLists.txt 2013-08-31 05:51:23.000000000 +0200 @@ -21,6 +21,7 @@ ########### next target ############### set( kcm_choqok_notify_PART_SRCS +dummynotification.cpp notifyconfig.cpp notifysettings.cpp ) diff -Nru choqok-1.3/plugins/betternotify/dummynotification.cpp choqok-1.4/plugins/betternotify/dummynotification.cpp --- choqok-1.3/plugins/betternotify/dummynotification.cpp 1970-01-01 01:00:00.000000000 +0100 +++ choqok-1.4/plugins/betternotify/dummynotification.cpp 2013-08-31 05:51:23.000000000 +0200 @@ -0,0 +1,95 @@ +/* + This file is part of Choqok, the KDE micro-blogging client + Copyright (C) 2012 Mehrdad Momeny + + 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) version 3 or any later version + accepted by the membership of KDE e.V. (or its successor approved + by the membership of KDE e.V.), which shall act as a proxy + defined in Section 14 of version 3 of the license. + + + 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 Street, Fifth Floor, Boston, MA 02110-1301 USA. +*/ + +#include "dummynotification.h" +#include "notifysettings.h" +#include +#include +#include +#include +#include +#include +#include + +DummyNotification::DummyNotification(const QFont& font, const QColor& color, const QColor& background, QWidget* parent) +: KTextBrowser(parent), isMoving(false) +{ + setWindowFlags(Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint); + setWindowOpacity(0.8); + setWindowFlags(Qt::ToolTip); + setFrameShape(QFrame::NoFrame); + setOpenExternalLinks(false); + setOpenLinks(false); + setTextInteractionFlags(Qt::LinksAccessibleByMouse); + document()->addResource( QTextDocument::ImageResource, QUrl("img://profileImage"), KIcon("choqok").pixmap(48) ); + document()->addResource( QTextDocument::ImageResource, QUrl("icon://close"), + KIcon("dialog-ok").pixmap(16) ); + setText(baseText.arg(i18n("Choqok")).arg(i18n("KDE Rocks! :)")).arg(i18n("OK"))); + connect(this, SIGNAL(anchorClicked(QUrl)), SLOT(slotProcessAnchor(QUrl))); + + QString fntStr = "font-family:\"" + font.family() + "\"; font-size:" + QString::number(font.pointSize()) + "pt;"; + fntStr += (font.bold() ? " font-weight:bold;" : QString()) + (font.italic() ? " font-style:italic;" : QString()); + QString style = Choqok::UI::PostWidget::getBaseStyle().arg( Choqok::getColorString(color), Choqok::getColorString(background), fntStr); + + setStyleSheet( style ); +} + +DummyNotification::~DummyNotification() +{ +} + +void DummyNotification::mouseMoveEvent(QMouseEvent* ev) +{ + KTextBrowser::mouseMoveEvent(ev); + if(isMoving){ + QPoint diff = ev->globalPos() - lastPressedPosition; + lastPressedPosition = ev->globalPos(); + QPoint newPos = pos() + diff; + move(newPos); + } +} + +void DummyNotification::mousePressEvent(QMouseEvent* ev) +{ + kDebug(); + KTextBrowser::mousePressEvent(ev); + isMoving = true; + lastPressedPosition = ev->globalPos(); +} + +void DummyNotification::mouseReleaseEvent(QMouseEvent* ev) +{ + KTextBrowser::mouseReleaseEvent(ev); + kDebug(); + isMoving = false; +} + +void DummyNotification::slotProcessAnchor(const QUrl& url) +{ + kDebug(); + if(url.scheme() == "choqok"){ + if(url.host() == "close"){ + emit positionSelected(pos()); + } + } +} diff -Nru choqok-1.3/plugins/betternotify/dummynotification.h choqok-1.4/plugins/betternotify/dummynotification.h --- choqok-1.3/plugins/betternotify/dummynotification.h 1970-01-01 01:00:00.000000000 +0100 +++ choqok-1.4/plugins/betternotify/dummynotification.h 2013-08-31 05:51:23.000000000 +0200 @@ -0,0 +1,53 @@ +/* + This file is part of Choqok, the KDE micro-blogging client + Copyright (C) 2012 Mehrdad Momeny + + 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) version 3 or any later version + accepted by the membership of KDE e.V. (or its successor approved + by the membership of KDE e.V.), which shall act as a proxy + defined in Section 14 of version 3 of the license. + + + 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 Street, Fifth Floor, Boston, MA 02110-1301 USA. +*/ + + +#ifndef DUMMYNOTIFICATION_H +#define DUMMYNOTIFICATION_H + +#include + +class DummyNotification : public KTextBrowser +{ +Q_OBJECT +public: + DummyNotification(const QFont &font, const QColor &color, const QColor &background,QWidget* parent); + virtual ~DummyNotification(); + +protected: + virtual void mouseMoveEvent(QMouseEvent* ev); + virtual void mousePressEvent(QMouseEvent* ev); + virtual void mouseReleaseEvent(QMouseEvent* ev); + +signals: + void positionSelected(QPoint position); + +protected slots: + void slotProcessAnchor(const QUrl& url); + +private: + QPoint lastPressedPosition; + bool isMoving; +}; + +#endif // DUMMYNOTIFICATION_H diff -Nru choqok-1.3/plugins/betternotify/notification.cpp choqok-1.4/plugins/betternotify/notification.cpp --- choqok-1.3/plugins/betternotify/notification.cpp 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/plugins/betternotify/notification.cpp 2013-08-31 05:51:23.000000000 +0200 @@ -24,14 +24,14 @@ #include "notification.h" #include +#include #include #include #include #include #include - -const QString Notification::baseText( "
%1 :
%2
" ); +#include "notifysettings.h" +#include const QRegExp Notification::dirRegExp("(RT|RD)|(@([^\\s\\W]+))|(#([^\\s\\W]+))|(!([^\\s\\W]+))"); @@ -51,9 +51,19 @@ mainWidget.setOpenExternalLinks(false); mainWidget.setOpenLinks(false); setMouseTracking(true); - setStyleSheet( "KTextBrowser{background-color: rgba(0, 0, 0, 160); color: rgb(255, 255, 255);}" - "QWidget{border-radius:6px;}"); - resize(NOTIFICATION_WIDTH, 70); + resize(NOTIFICATION_WIDTH, NOTIFICATION_HEIGHT); + + NotifySettings set(this); + QFont fnt = set.font(); + QColor color = set.foregroundColor(); + QColor back = set.backgroundColor(); + + QString fntStr = "font-family:\"" + fnt.family() + "\"; font-size:" + QString::number(fnt.pointSize()) + "pt;"; + fntStr += (fnt.bold() ? " font-weight:bold;" : QString()) + (fnt.italic() ? " font-style:italic;" : QString()); + QString style = Choqok::UI::PostWidget::getBaseStyle().arg( Choqok::getColorString(color), Choqok::getColorString(back), fntStr); + + setStyleSheet( style ); + init(); connect(&mainWidget, SIGNAL(anchorClicked(QUrl)), SLOT(slotProcessAnchor(QUrl))); } @@ -66,19 +76,22 @@ QSize Notification::sizeHint() const { kDebug(); - return QSize(NOTIFICATION_WIDTH, 70); + return QSize(NOTIFICATION_WIDTH, NOTIFICATION_HEIGHT); } void Notification::init() { kDebug(); - QPixmap *pix = Choqok::MediaManager::self()->fetchImage(post->currentPost().author.profileImageUrl); + QPixmap *pix = Choqok::MediaManager::self()->fetchImage(post->currentPost()->author.profileImageUrl); if( !pix ) pix = new QPixmap( Choqok::MediaManager::self()->defaultImage() ); mainWidget.document()->addResource( QTextDocument::ImageResource, QUrl("img://profileImage"), *pix ); mainWidget.document()->addResource( QTextDocument::ImageResource, QUrl("icon://close"), KIcon("dialog-close").pixmap(16) ); - mainWidget.setText(baseText.arg(post->currentPost().author.userName).arg(post->currentPost().content).arg(dir)); + mainWidget.setText(baseText.arg(post->currentPost()->author.userName) + .arg(post->currentPost()->content) + .arg(dir) + .arg(i18n("Ignore"))); QVBoxLayout *l = new QVBoxLayout(this); l->setContentsMargins(0,0,0,0); @@ -123,7 +136,7 @@ void Notification::setDirection() { kDebug(); - QString txt = post->currentPost().content; + QString txt = post->currentPost()->content; txt.remove(dirRegExp); txt = txt.trimmed(); if( txt.isRightToLeft() ) { diff -Nru choqok-1.3/plugins/betternotify/notification.h choqok-1.4/plugins/betternotify/notification.h --- choqok-1.3/plugins/betternotify/notification.h 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/plugins/betternotify/notification.h 2013-08-31 05:51:23.000000000 +0200 @@ -29,8 +29,6 @@ #include #include "mytextbrowser.h" -#define NOTIFICATION_WIDTH 300 - class Notification : public QWidget { @@ -59,7 +57,6 @@ void setDirection(); void setHeight(); static const QRegExp dirRegExp; - static const QString baseText; Choqok::UI::PostWidget *post; QString dir; MyTextBrowser mainWidget; diff -Nru choqok-1.3/plugins/betternotify/notifyconfig.cpp choqok-1.4/plugins/betternotify/notifyconfig.cpp --- choqok-1.3/plugins/betternotify/notifyconfig.cpp 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/plugins/betternotify/notifyconfig.cpp 2013-08-31 05:51:23.000000000 +0200 @@ -34,6 +34,7 @@ #include #include #include + K_PLUGIN_FACTORY( NotifyConfigFactory, registerPlugin < NotifyConfig > (); ) K_EXPORT_PLUGIN( NotifyConfigFactory( "kcm_choqok_notify" ) ) @@ -48,12 +49,16 @@ connect(ui.accountsList, SIGNAL(currentRowChanged(int)), SLOT(updateTimelinesList())); connect(ui.timelinesList, SIGNAL(itemSelectionChanged()), SLOT(timelineSelectionChanged())); connect(ui.interval, SIGNAL(valueChanged(int)), this, SLOT(emitChanged())); + connect(ui.adjustPosition, SIGNAL(clicked()), this, SLOT(slotAdjustNotificationPosition()) ); + connect(ui.backgroundColor, SIGNAL(changed(QColor)), this, SLOT(emitChanged())); + connect(ui.foregroundColor, SIGNAL(changed(QColor)), this, SLOT(emitChanged())); + connect(ui.font, SIGNAL(fontSelected(QFont)), this, SLOT(emitChanged())); settings = new NotifySettings(this); + ui.lblArrow->setPixmap(KIcon("arrow-right").pixmap(48)); } NotifyConfig::~NotifyConfig() { - } void NotifyConfig::emitChanged() @@ -99,6 +104,10 @@ ui.accountsList->setCurrentRow(0); updateTimelinesList(); } + + ui.backgroundColor->setColor(settings->backgroundColor()); + ui.foregroundColor->setColor(settings->foregroundColor()); + ui.font->setFont(settings->font()); } void NotifyConfig::save() @@ -106,7 +115,32 @@ kDebug()<< accounts.keys(); settings->setAccounts(accounts); settings->setNotifyInterval(ui.interval->value()); + settings->setBackgroundColor(ui.backgroundColor->color()); + settings->setForegroundColor(ui.foregroundColor->color()); + settings->setFont(ui.font->font()); settings->save(); } +void NotifyConfig::slotAdjustNotificationPosition() +{ + ui.adjustPosition->setDisabled(true); + if(!dummy){ + dummy = new DummyNotification(ui.font->font(), ui.foregroundColor->color(), + ui.backgroundColor->color(), this); + dummy->setAttribute(Qt::WA_DeleteOnClose); + dummy->resize(NOTIFICATION_WIDTH, NOTIFICATION_HEIGHT); + connect(dummy, SIGNAL(positionSelected(QPoint)), this, SLOT(slotNewPositionSelected(QPoint))); + } + dummy->move(settings->position()); + dummy->show(); +} + +void NotifyConfig::slotNewPositionSelected(QPoint pos) +{ + settings->setPosition(pos); + dummy->close(); + ui.adjustPosition->setEnabled(true); + emitChanged(); +} + #include "notifyconfig.moc" diff -Nru choqok-1.3/plugins/betternotify/notifyconfig.h choqok-1.4/plugins/betternotify/notifyconfig.h --- choqok-1.3/plugins/betternotify/notifyconfig.h 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/plugins/betternotify/notifyconfig.h 2013-08-31 05:51:23.000000000 +0200 @@ -27,7 +27,9 @@ #include #include "ui_notifyprefs.h" +#include "dummynotification.h" #include +#include class NotifySettings; class NotifyConfig : public KCModule @@ -44,12 +46,15 @@ void updateTimelinesList(); void timelineSelectionChanged(); void emitChanged(); + void slotAdjustNotificationPosition(); + void slotNewPositionSelected(QPoint); private: QStringList langs; Ui_NotifyPrefsBase ui; QMap accounts; NotifySettings *settings; + QPointer dummy; }; #endif // NOTIFYCONFIG_H diff -Nru choqok-1.3/plugins/betternotify/notify.cpp choqok-1.4/plugins/betternotify/notify.cpp --- choqok-1.3/plugins/betternotify/notify.cpp 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/plugins/betternotify/notify.cpp 2013-08-31 05:51:23.000000000 +0200 @@ -57,7 +57,7 @@ connect(&timer, SIGNAL(timeout()), this, SLOT(notifyNextPost())); QRect screenRect(QDesktopWidget().screenGeometry()); - notifyPosition = QPoint(screenRect.center().x()-NOTIFICATION_WIDTH/2, 30); + notifyPosition = set.position(); } Notify::~Notify() @@ -73,7 +73,7 @@ return; } if(pw && !pw->isRead() && accountsList[acc->alias()].contains(tm)){ - kDebug()<<"POST ADDED TO NOTIFY IT: "<currentPost().content; + kDebug()<<"POST ADDED TO NOTIFY IT: "<currentPost()->content; postQueueToNotify.enqueue(pw); if( !timer.isActive() ) { diff -Nru choqok-1.3/plugins/betternotify/notifyprefs.ui choqok-1.4/plugins/betternotify/notifyprefs.ui --- choqok-1.3/plugins/betternotify/notifyprefs.ui 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/plugins/betternotify/notifyprefs.ui 2013-08-31 05:51:23.000000000 +0200 @@ -6,133 +6,247 @@ 0 0 - 423 - 282 + 364 + 341
- - - - - Notify Interval: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - 7 - - - - - - - seconds - - - - - - - - - + + + 0 - - - - - Select Timelines - - - Qt::AlignCenter - - - - - - - Accounts - - - Qt::AlignCenter - - - - - - - QAbstractItemView::NoEditTriggers - - - false - - - true - - - QAbstractItemView::MultiSelection - - - - - - - QAbstractItemView::NoEditTriggers - - - false - - - true - - - - - - - - 75 - true - - - - Select timelines you wish to see notifications for their new posts: - - - Qt::AlignCenter - - - true - - - - - - - false - - - true - - - 4 - - - - + + + Appearance + + + + + + + + Foreground Color: + + + + + + + + + + Background Color: + + + + + + + + + + Font: + + + + + + + + + + Notify Interval: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + 7 + + + + + + + seconds + + + + + + + + + + + Qt::Vertical + + + QSizePolicy::Fixed + + + + 20 + 20 + + + + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Adjust notification's position + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + Timeline Selection + + + + + + + + + + + + Select Timelines + + + Qt::AlignCenter + + + + + + + Accounts + + + Qt::AlignCenter + + + + + + + QAbstractItemView::NoEditTriggers + + + false + + + true + + + QAbstractItemView::MultiSelection + + + + + + + QAbstractItemView::NoEditTriggers + + + false + + + true + + + + + + + + 75 + true + + + + Select timelines you wish to see notifications for their new posts: + + + Qt::AlignCenter + + + true + + + + + + + + + + + - * Any change, needs plugin re-load (disable/enable) to take effect. + <html><head/><body><p><span style=" font-weight:600;">Note:</span> Any change, needs plugin re-load (disable/enable) to take effect.</p></body></html> true @@ -143,9 +257,24 @@ - KArrowButton + KColorButton QPushButton -
karrowbutton.h
+
kcolorbutton.h
+
+ + KFontRequester + QWidget +
kfontrequester.h
+
+ + KSeparator + QFrame +
kseparator.h
+
+ + KPushButton + QPushButton +
kpushbutton.h
KIntSpinBox @@ -157,6 +286,12 @@ QListWidget
klistwidget.h
+ + KTabWidget + QTabWidget +
ktabwidget.h
+ 1 +
diff -Nru choqok-1.3/plugins/betternotify/notifysettings.cpp choqok-1.4/plugins/betternotify/notifysettings.cpp --- choqok-1.3/plugins/betternotify/notifysettings.cpp 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/plugins/betternotify/notifysettings.cpp 2013-08-31 05:51:23.000000000 +0200 @@ -24,6 +24,7 @@ #include "notifysettings.h" #include +#include #include #include #include @@ -37,6 +38,10 @@ KConfigGroup *accountsConf; KConfigGroup *conf; int interval; + QPoint position; + QColor foregroundColor; + QColor backgroundColor; + QFont font; }; NotifySettings::NotifySettings(QObject* parent) @@ -44,7 +49,6 @@ { d->conf = new KConfigGroup(KGlobal::config(), QString::fromLatin1( "BetterNotify Plugin" )); d->accountsConf = new KConfigGroup(KGlobal::config(), QString::fromLatin1( "BetterNotify Accounts Config" )); - d->interval = 5; load(); } @@ -73,6 +77,16 @@ } d->conf->sync(); d->interval = d->conf->readEntry("Interval", 7); + QRect screenRect(QDesktopWidget().screenGeometry()); + QPoint defaultPosition = QPoint(screenRect.center().x()-NOTIFICATION_WIDTH/2, 30); + d->position = d->conf->readEntry("NotifyPosition", defaultPosition); + screenRect.adjust(0, 0, -1*NOTIFICATION_WIDTH, -1*NOTIFICATION_HEIGHT); + if(!screenRect.contains( d->position )){ + d->position = defaultPosition; + } + d->backgroundColor = d->conf->readEntry("NotifyBackground", QColor(0, 0, 0)); + d->foregroundColor = d->conf->readEntry("NotifyForeground", QColor(255, 255, 255)); + d->font = d->conf->readEntry("NotifyFont", QFont()); } void NotifySettings::save() @@ -81,10 +95,14 @@ d->accountsConf->writeEntry(acc->alias(), d->accounts.value(acc->alias())); } d->conf->writeEntry("Interval", d->interval); + d->conf->writeEntry("NotifyPosition", d->position); + d->conf->writeEntry("NotifyBackground", d->backgroundColor); + d->conf->writeEntry("NotifyForeground", d->foregroundColor); + d->conf->writeEntry("NotifyFont", d->font); d->accountsConf->sync(); } -int NotifySettings::notifyInterval() +int NotifySettings::notifyInterval() const { return d->interval; } @@ -94,3 +112,42 @@ d->interval = interval; } +QPoint NotifySettings::position() const +{ + return d->position; +} + +void NotifySettings::setPosition(const QPoint& position) +{ + d->position = position; +} + +QColor NotifySettings::backgroundColor() const +{ + return d->backgroundColor; +} + +void NotifySettings::setBackgroundColor(const QColor& color) +{ + d->backgroundColor = color; +} + +QFont NotifySettings::font() const +{ + return d->font; +} + +void NotifySettings::setFont(const QFont& font) +{ + d->font = font; +} + +QColor NotifySettings::foregroundColor() const +{ + return d->foregroundColor; +} + +void NotifySettings::setForegroundColor(const QColor& color) +{ + d->foregroundColor = color; +} diff -Nru choqok-1.3/plugins/betternotify/notifysettings.h choqok-1.4/plugins/betternotify/notifysettings.h --- choqok-1.3/plugins/betternotify/notifysettings.h 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/plugins/betternotify/notifysettings.h 2013-08-31 05:51:23.000000000 +0200 @@ -27,7 +27,15 @@ #include #include +#include +#include +#include +#define NOTIFICATION_WIDTH 300 +#define NOTIFICATION_HEIGHT 70 + +const QString baseText( "
%1 :
%2
" ); class NotifySettings : public QObject { @@ -39,9 +47,21 @@ QMap accounts(); void setAccounts(QMap accounts); - int notifyInterval(); + int notifyInterval() const; void setNotifyInterval(int interval); + QPoint position() const; + void setPosition(const QPoint& position); + + QColor foregroundColor() const; + void setForegroundColor(const QColor& color); + + QColor backgroundColor() const; + void setBackgroundColor(const QColor& color); + + QFont font() const; + void setFont(const QFont& font); + void load(); void save(); diff -Nru choqok-1.3/plugins/CMakeLists.txt choqok-1.4/plugins/CMakeLists.txt --- choqok-1.3/plugins/CMakeLists.txt 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/plugins/CMakeLists.txt 2013-08-31 05:51:23.000000000 +0200 @@ -11,4 +11,4 @@ add_subdirectory(imstatus) # add_subdirectory(translator) add_subdirectory(quickfilter) -# add_subdirectory(betternotify) +add_subdirectory(betternotify) diff -Nru choqok-1.3/plugins/filter/choqok_filter.desktop choqok-1.4/plugins/filter/choqok_filter.desktop --- choqok-1.3/plugins/filter/choqok_filter.desktop 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/plugins/filter/choqok_filter.desktop 2013-08-31 05:51:23.000000000 +0200 @@ -19,6 +19,7 @@ Name[bs]=Filtrirajte unose Name[ca]=Filtra els missatges Name[ca@valencia]=Filtra els missatges +Name[cs]=Filtrovat příspěvky Name[da]=Filtrér indlæg Name[de]=Nachrichten filtern Name[el]=Φιλτραρισμένες αναρτήσεις @@ -26,7 +27,7 @@ Name[es]=Filtrar los mensajes Name[et]=Postituste filtreerimine Name[fr]=Filtrer les billets -Name[gl]=Filtro dos artigos +Name[gl]=Filtro das mensaxes Name[hr]=Filtriraj objave Name[hu]=Bejegyzésszűrő Name[it]=Filtra messaggi @@ -38,8 +39,9 @@ Name[pa]=ਪੋਸਟ ਫਿਲਟਰ ਕਰੋ Name[pl]=Filtruj wiadomości Name[pt]=Filtrar as publicações -Name[pt_BR]=Filtro de menagens +Name[pt_BR]=Filtro de mensagens Name[ru]=Фильтрация сообщений +Name[sl]=Filtriraj objave Name[sv]=Filtrera inlägg Name[tr]=Durum iletilerini filtrele Name[uk]=Фільтрування дописів @@ -51,6 +53,7 @@ Comment[bs]=Filtriranje neželjenih unosa Comment[ca]=S'estan filtrant els missatges no desitjats Comment[ca@valencia]=S'estan filtrant els missatges no desitjats +Comment[cs]=Filtrování nechtěných příspěvků Comment[da]=Filtrering af uønskede indlæg Comment[de]=Unerwünschte Nachrichten filtern Comment[el]=Φιλτράρισμα ανεπιθύμητων αναρτήσεων @@ -58,7 +61,7 @@ Comment[es]=Filtrando los mensajes no deseados Comment[et]=Soovimatute postituste filtreerimine Comment[fr]=Filtrer les billets non sollicités -Comment[gl]=Filtrar os artigos indesexados +Comment[gl]=Filtrar as mensaxes non desexadas. Comment[hr]=Filtriram neželjene objave Comment[hu]=Nem kívánt bejegyzések szűrése Comment[it]=Filtraggio messaggi indesiderati @@ -71,6 +74,7 @@ Comment[pt]=Filtrar as publicações indesejadas Comment[pt_BR]=Filtra as mensagens indesejadas Comment[ru]=Фильтрация нежелательных сообщений +Comment[sl]=Filtriranje neželenih objav Comment[sv]=Filtrerar oönskade inlägg Comment[tr]=İstenmeyen durum iletileri filtreleniyor Comment[uk]=Вилучення небажаних дописів diff -Nru choqok-1.3/plugins/filter/filtermanager.cpp choqok-1.4/plugins/filter/filtermanager.cpp --- choqok-1.3/plugins/filter/filtermanager.cpp 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/plugins/filter/filtermanager.cpp 2013-08-31 05:51:23.000000000 +0200 @@ -90,7 +90,7 @@ void FilterManager::parse(Choqok::UI::PostWidget* postToParse) { if( !postToParse || - postToParse->currentPost().author.userName == postToParse->currentAccount()->username() || + postToParse->currentPost()->author.userName == postToParse->currentAccount()->username() || postToParse->isRead() ) return; @@ -104,23 +104,23 @@ if(filter->filterText().isEmpty()) return; if(filter->filterAction() == Filter::Remove && filter->dontHideReplies() && - (postToParse->currentPost().replyToUserName.compare(postToParse->currentAccount()->username(), + (postToParse->currentPost()->replyToUserName.compare(postToParse->currentAccount()->username(), Qt::CaseInsensitive) == 0 || - postToParse->currentPost().content.contains(QString("@%1").arg(postToParse->currentAccount()->username()))) + postToParse->currentPost()->content.contains(QString("@%1").arg(postToParse->currentAccount()->username()))) ) continue; switch(filter->filterField()){ case Filter::Content: - doFiltering( postToParse, filterText(postToParse->currentPost().content, filter) ); + doFiltering( postToParse, filterText(postToParse->currentPost()->content, filter) ); break; case Filter::AuthorUsername: - doFiltering( postToParse, filterText(postToParse->currentPost().author.userName, filter) ); + doFiltering( postToParse, filterText(postToParse->currentPost()->author.userName, filter) ); break; case Filter::ReplyToUsername: - doFiltering( postToParse, filterText(postToParse->currentPost().replyToUserName, filter) ); + doFiltering( postToParse, filterText(postToParse->currentPost()->replyToUserName, filter) ); break; case Filter::Source: - doFiltering( postToParse, filterText(postToParse->currentPost().source, filter) ); + doFiltering( postToParse, filterText(postToParse->currentPost()->source, filter) ); break; default: break; @@ -170,7 +170,7 @@ QString css; switch(action){ case Filter::Remove: - kDebug()<<"Post removed: "<currentPost().content; + kDebug()<<"Post removed: "<currentPost()->content; postToFilter->close(); break; case Filter::Highlight: @@ -194,9 +194,9 @@ bool FilterManager::parseSpecialRules(Choqok::UI::PostWidget* postToParse) { if(FilterSettings::hideRepliesNotRelatedToMe()){ - if( !postToParse->currentPost().replyToUserName.isEmpty() && - postToParse->currentPost().replyToUserName != postToParse->currentAccount()->username() ) { - if( !postToParse->currentPost().content.contains(postToParse->currentAccount()->username()) ) { + if( !postToParse->currentPost()->replyToUserName.isEmpty() && + postToParse->currentPost()->replyToUserName != postToParse->currentAccount()->username() ) { + if( !postToParse->currentPost()->content.contains(postToParse->currentAccount()->username()) ) { postToParse->close(); kDebug()<<"NOT RELATE TO ME FILTERING......"; return true; @@ -208,9 +208,9 @@ TwitterApiAccount *acc = qobject_cast(postToParse->currentAccount()); if(!acc) return false; - if( !postToParse->currentPost().replyToUserName.isEmpty() && - !acc->friendsList().contains(postToParse->currentPost().replyToUserName) ) { - if( !postToParse->currentPost().content.contains(postToParse->currentAccount()->username()) ) { + if( !postToParse->currentPost()->replyToUserName.isEmpty() && + !acc->friendsList().contains(postToParse->currentPost()->replyToUserName) ) { + if( !postToParse->currentPost()->content.contains(postToParse->currentAccount()->username()) ) { postToParse->close(); kDebug()<<"NONE FRIEND FILTERING......"; return true; @@ -225,8 +225,8 @@ { Choqok::UI::PostWidget *wd; wd = dynamic_cast(hidePost->userData(32))->postWidget(); - QString username = wd->currentPost().author.userName; - int res = KMessageBox::questionYesNoCancel( choqokMainWindow, i18n("Hide all posts from @%1", + QString username = wd->currentPost()->author.userName; + int res = KMessageBox::questionYesNoCancel( choqokMainWindow, i18n("Hide all posts from @%1?", username)); if( res == KMessageBox::Cancel ){ return; @@ -240,7 +240,7 @@ if(tm){ kDebug()<<"Closing all posts"; foreach(Choqok::UI::PostWidget *pw, tm->postWidgets()){ - if(pw->currentPost().author.userName == username){ + if(pw->currentPost()->author.userName == username){ pw->close(); } } diff -Nru choqok-1.3/plugins/filter/filterprefs.ui choqok-1.4/plugins/filter/filterprefs.ui --- choqok-1.3/plugins/filter/filterprefs.ui 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/plugins/filter/filterprefs.ui 2013-08-31 05:51:23.000000000 +0200 @@ -118,7 +118,7 @@ - You'll see just replies came to you, or mentions you. + You will see just replies came to you, or mentions you. Just show replies to me. @@ -128,7 +128,7 @@ - You'll see just replies between your friends. + You will see just replies between your friends. Just show replies to me and my friends. diff -Nru choqok-1.3/plugins/imagepreview/choqok_imagepreview.desktop choqok-1.4/plugins/imagepreview/choqok_imagepreview.desktop --- choqok-1.3/plugins/imagepreview/choqok_imagepreview.desktop 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/plugins/imagepreview/choqok_imagepreview.desktop 2013-08-31 05:51:23.000000000 +0200 @@ -19,6 +19,7 @@ Name[bs]=Pregled slika Name[ca]=Vista prèvia d'imatges Name[ca@valencia]=Vista prèvia d'imatges +Name[cs]=Náhledy obrázků Name[da]=Forhåndsvis billeder Name[de]=Vorschau von Bildern anzeigen Name[el]=Προεπισκόπηση εικόνων @@ -26,12 +27,13 @@ Name[es]=Previsualización de imágenes Name[et]=Piltide eelvaatlus Name[fa]=پیش‌نمایش تصاویر -Name[fr]=Aperçu des images +Name[fr]=Miniatures d'images Name[gl]=Previsualización das imaxes Name[hu]=Képek előnézete Name[it]=Anteprima delle immagini Name[ja]=画像のプレビュー Name[km]=រូបភាព​មើល​ជា​មុន +Name[lt]=Peržiūrėti paveikslėlius Name[nb]=Forhåndsvis bilder Name[nds]=Vöransichtbiller Name[nl]=Afbeeldingen vooraf tonen @@ -40,6 +42,8 @@ Name[pt]=Imagens de Antevisão Name[pt_BR]=Visualização de imagens Name[ru]=Предварительный просмотр изображений +Name[sk]=Náhľad obrázkov +Name[sl]=Predogled slik Name[sv]=Förhandsgranska bilder Name[tr]=Resimleri önizle Name[ug]=سۈرەتنى ئالدىن كۆزەت @@ -52,13 +56,14 @@ Comment[bs]=Učitavanje sličice da bi se pregledala Comment[ca]=Carrega una miniatura de les imatges per tenir-ne una vista prèvia Comment[ca@valencia]=Carrega una miniatura de les imatges per tindre'n una vista prèvia +Comment[cs]=Načíst miniatury obrázků pro jejich náhled Comment[da]=Indlæs en miniature af billeder for at have en forhåndsvisning af dem Comment[de]=Vorschau für Bilder laden Comment[el]=Φόρτωση μικρογραφιών για προεπισκόπηση Comment[en_GB]=Load a thumbnail of images to have a preview of it Comment[es]=Carga una miniatura de las imágenes para previsualizarlas Comment[et]=Pisipiltide laadimine eelvaatluseks -Comment[fr]=Charge une vignette des images pour en avoir un aperçu +Comment[fr]=Charge une miniature d'images pour en avoir un aperçu Comment[gl]=Cargar unha miniatura das imaxes para dispór dunha vista previa Comment[hu]=Képek bélyegképeinek betöltése és előnézet megjelenítése Comment[it]=Carica una miniatura delle immagini per averne un'anteprima @@ -69,9 +74,11 @@ Comment[nl]=Een miniatuur van afbeeldingen laden om er voorbeeld van te bekijken Comment[pl]=Wczytaj miniaturki obrazów do podglądu Comment[pt]=Carrega uma miniatura das imagens para as antever -Comment[pt_BR]=Carrega uma miniatura das imagens para ter uma visualização das mesmas +Comment[pt_BR]=Carrega uma miniatura das imagens Comment[ru]=Загружает миниатюры для предварительного просмотра изображений +Comment[sl]=Naloži sličice slik za predogled Comment[sv]=Läs in en miniatyrbild för att ha en förhandsgranskning av bilden +Comment[tr]=Önizlemesini göstermek üzere küçük resimleri yükle Comment[uk]=Завантаження мініатюр зображень для попереднього перегляду Comment[x-test]=xxLoad a thumbnail of images to have a preview of itxx Comment[zh_CN]=装入图像缩略图查看预览 diff -Nru choqok-1.3/plugins/imagepreview/imagepreview.cpp choqok-1.4/plugins/imagepreview/imagepreview.cpp --- choqok-1.3/plugins/imagepreview/imagepreview.cpp 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/plugins/imagepreview/imagepreview.cpp 2013-08-31 05:51:23.000000000 +0200 @@ -92,7 +92,7 @@ QStringList PlixiRedirectList; QStringList ImgLyRedirectList; QStringList TwitgooRedirectList; - QString content = postToParse->currentPost().content; + QString content = postToParse->currentPost()->content; //Twitpic: http://www.twitpic.com/api.do while ((pos = mTwitpicRegExp.indexIn(content, pos)) != -1) { diff -Nru choqok-1.3/plugins/imstatus/choqok_imstatus_config.desktop choqok-1.4/plugins/imstatus/choqok_imstatus_config.desktop --- choqok-1.3/plugins/imstatus/choqok_imstatus_config.desktop 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/plugins/imstatus/choqok_imstatus_config.desktop 2013-08-31 05:51:23.000000000 +0200 @@ -11,13 +11,15 @@ Name[bs]=IMStatus Name[ca]=IMStatus Name[ca@valencia]=IMStatus +Name[cs]=IMStatus Name[da]=IMStatus Name[de]=IMStatus Name[el]=IMStatus Name[en_GB]=IMStatus Name[es]=Estado MI Name[et]=Kiirsuhtlusolek -Name[fr]=IMStatus +Name[fi]=IMStatus +Name[fr]=État de messagerie instantanée Name[gl]=IMStatus Name[hu]=IMStatus Name[it]=Stato IM @@ -28,9 +30,11 @@ Name[pa]=IMStatus Name[pl]=IMStatus Name[pt]=Estado IM -Name[pt_BR]=Estado IM +Name[pt_BR]=Status do mensageiro instantâneo Name[ru]=Статус в службах мгновенных сообщений +Name[sl]=IMStatus Name[sv]=Meddelandestatus +Name[tr]=IMStatus Name[uk]=Стан у мережі МП Name[x-test]=xxIMStatusxx Name[zh_CN]=IMStatus @@ -38,15 +42,16 @@ Comment=Sets status of your instant messenger as your status in micro-blog. Comment[bg]=Задаване състоянието в микроблог като това в моментните съобщения Comment[bs]=Postavlja status instant messenger-a na vaš status u mikro-blogu -Comment[ca]=Estableix l'estat del vostre missatger instantani com a estat del vostre microbloc. +Comment[ca]=Estableix l'estat del vostre missatger instantani com a estat en el vostre microblog. Comment[ca@valencia]=Estableix l'estat del vostre missatger instantani com a estat del vostre microbloc. +Comment[cs]=Nastaví stav vašeho komunikátoru jako stav na mikroblogu. Comment[da]=Sætter status i din instant messenger til status fra din mikroblog. Comment[de]=Setzt den Status Ihres Instant-Messengers auf den Status Ihres Microblogs. Comment[el]=Ορίζει την κατάσταση του στιγμιαίου αποστολέα μηνυμάτων ως κατάσταση μικρο-ιστολογίου Comment[en_GB]=Sets status of your instant messenger as your status in micro-blog. Comment[es]=Establece el estado de su mensajero instantáneo como su estado en micro-blog. Comment[et]=Kiirsuhtlusrakenduse oleku määramine mikroblogi olekuks. -Comment[fr]=Définit l'état de votre messagerie instantanée comme votre état dans le microblogue. +Comment[fr]=Définit l'état de votre messagerie instantanée comme votre état de microblogage. Comment[gl]=Configurar a situación da mensaxaría instantánea como a súa situación no microblogue. Comment[hu]=Az azonnali üzenetküldő állapotüzenetének beállítása mikroblog-állapotként. Comment[it]=Imposta lo stato del programma di messaggistica istantanea come il tuo stato nel microblog. @@ -56,9 +61,11 @@ Comment[nl]=Uw status van uw instant-messenger instellen als uw status in de micro-blog. Comment[pl]=Ustawia stan Twojego komunikatora jako stan w mikroblogu. Comment[pt]=Muda o estado do seu mensageiro instantâneo para o seu estado no micro-blog. -Comment[pt_BR]=Define o estado do seu mensageiro instantâneo para o seu estado no micro-blog. +Comment[pt_BR]=Define o status do seu mensageiro instantâneo com o seu status do microblog. Comment[ru]=Устанавливает в службах мгновенных сообщений такой же статус, как в микроблоге +Comment[sl]=Nastavi stanje vašega hipnega sporočilnika kot vaše stanje v mikroblogu. Comment[sv]= Anger status för direktmeddelanden som din status i mikroblogg. +Comment[tr]=Mikrobloğunuzdaki durumunuzu anlık mesajlaşma istemcisi durumunuz olarak ayarlar. Comment[uk]=Встановлення у вашому мікроблозі стану, тотожного до стану у програмі для миттєвого обміну повідомленнями. Comment[x-test]=xxSets status of your instant messenger as your status in micro-blog.xx Comment[zh_CN]=将您的即时通讯的状态设为微博客中的状态。 diff -Nru choqok-1.3/plugins/imstatus/choqok_imstatus.desktop choqok-1.4/plugins/imstatus/choqok_imstatus.desktop --- choqok-1.3/plugins/imstatus/choqok_imstatus.desktop 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/plugins/imstatus/choqok_imstatus.desktop 2013-08-31 05:51:23.000000000 +0200 @@ -9,7 +9,7 @@ X-KDE-PluginInfo-Email=gmlastik@gmail.com X-KDE-PluginInfo-Name=choqok_imstatus X-KDE-PluginInfo-Version=0.1 -X-KDE-PluginInfo-Website=http://choqok.org +X-KDE-PluginInfo-Website=http://choqok.gnufolks.org X-KDE-PluginInfo-Category=Plugins X-KDE-PluginInfo-Depends= X-KDE-PluginInfo-License=GPL @@ -19,13 +19,15 @@ Name[bs]=IMStatus Name[ca]=IMStatus Name[ca@valencia]=IMStatus +Name[cs]=IMStatus Name[da]=IMStatus Name[de]=IMStatus Name[el]=IMStatus Name[en_GB]=IMStatus Name[es]=Estado MI Name[et]=Kiirsuhtlusolek -Name[fr]=IMStatus +Name[fi]=IMStatus +Name[fr]=État de messagerie instantanée Name[gl]=IMStatus Name[hu]=IMStatus Name[it]=Stato IM @@ -36,9 +38,11 @@ Name[pa]=IMStatus Name[pl]=IMStatus Name[pt]=Estado IM -Name[pt_BR]=Estado IM +Name[pt_BR]=Status do mensageiro instantâneo Name[ru]=Статус в службах мгновенных сообщений +Name[sl]=IMStatus Name[sv]=Meddelandestatus +Name[tr]=IMStatus Name[uk]=Стан у мережі МП Name[x-test]=xxIMStatusxx Name[zh_CN]=IMStatus @@ -46,15 +50,16 @@ Comment=Sets status of your instant messenger as your status in micro-blog Comment[bg]=Задаване състоянието в микроблог като това в моментните съобщения Comment[bs]=Postavlja status instant messenger-a na vaš status u mikro-blogu -Comment[ca]=Estableix l'estat del vostre missatger instantani com a estat del vostre microbloc +Comment[ca]=Estableix l'estat del vostre missatger instantani com a estat en el vostre microblog Comment[ca@valencia]=Estableix l'estat del vostre missatger instantani com a estat del vostre microbloc +Comment[cs]=Nastaví stav vašeho komunikátoru jako stav na mikroblogu Comment[da]=Sætter status i din instant messenger til status fra din mikroblog Comment[de]=Setzt den Status Ihres Instant-Messengers auf den Status Ihres Microblogs Comment[el]=Ορίζει την κατάσταση του στιγμιαίου αποστολέα μηνυμάτων ως κατάσταση μικρο-ιστολογίου Comment[en_GB]=Sets status of your instant messenger as your status in micro-blog Comment[es]=Establece el estado de su mensajero instantáneo como su estado en micro-blog Comment[et]=Kiirsuhtlusrakenduse oleku määramine mikroblogi olekuks -Comment[fr]=Définit l'état de votre messagerie instantanée comme votre état dans le microblogue +Comment[fr]=Définit l'état de votre messagerie instantanée comme votre état de microblogage Comment[gl]=Configura que a súa situación na mensaxaría instantánea apareza como a situación no microblogue Comment[hu]=Az azonnali üzenetküldő állapotüzenetének beállítása mikroblog-állapotként Comment[it]=Imposta lo stato del programma di messaggistica istantanea uguale al tuo stato nel microblog. @@ -64,9 +69,11 @@ Comment[nl]=De status van uw instant-messenger instellen als uw status in de micro-blog Comment[pl]=Ustawia stan Twojego komunikatora jako stan w mikroblogu Comment[pt]=Muda o estado do seu mensageiro instantâneo para o seu estado no micro-blog -Comment[pt_BR]=Define o estado do seu mensageiro instantâneo para o seu estado no micro-blog +Comment[pt_BR]=Define o status do seu mensageiro instantâneo com o seu status do microblog Comment[ru]=Устанавливает в службах мгновенных сообщений такой же статус, как в микроблоге +Comment[sl]=Nastavi stanje vašega hipnega sporočilnika kot vaše stanje v mikroblogu Comment[sv]= Anger status för direktmeddelanden som din status i mikroblogg +Comment[tr]=Mikrobloğunuzdaki durumunuzu anlık mesajlaşma istemcisi durumunuz olarak ayarlar Comment[uk]=Встановлювати у вашому мікроблозі стану, тотожного до стану у кур’єрі миттєвого обміну повідомленнями Comment[x-test]=xxSets status of your instant messenger as your status in micro-blogxx Comment[zh_CN]=将您的即时通讯的状态设为微博客中的状态 diff -Nru choqok-1.3/plugins/konqueror/choqok_share.desktop choqok-1.4/plugins/konqueror/choqok_share.desktop --- choqok-1.3/plugins/konqueror/choqok_share.desktop 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/plugins/konqueror/choqok_share.desktop 2013-08-31 05:51:23.000000000 +0200 @@ -24,6 +24,7 @@ X-KDE-Submenu[hu]=Choqok X-KDE-Submenu[it]=Choqok X-KDE-Submenu[km]=Choqok +X-KDE-Submenu[lt]=Choqok X-KDE-Submenu[nb]=Choqok X-KDE-Submenu[nds]=Choqok X-KDE-Submenu[nl]=Choqok @@ -32,6 +33,8 @@ X-KDE-Submenu[pt]=Choqok X-KDE-Submenu[pt_BR]=Choqok X-KDE-Submenu[ru]=Choqok +X-KDE-Submenu[sk]=Choqok +X-KDE-Submenu[sl]=Choqok X-KDE-Submenu[sv]=Choqok X-KDE-Submenu[tr]=Choqok X-KDE-Submenu[ug]=Choqok @@ -51,13 +54,14 @@ Name[bs]=Dijelite linkove Choqok-om Name[ca]=Comparteix l'enllaç amb el Choqok Name[ca@valencia]=Comparteix l'enllaç amb el Choqok +Name[cs]=Sdílet odkaz s Choqok Name[da]=Del link med Choqok Name[de]=Verknüpfung mit Choqok bereitstellen Name[el]=Σύνδεσμος διαμοιρασμού με Choqok Name[en_GB]=Share Link with Choqok Name[es]=Compartir el enlace con Choqok Name[et]=Lingi jagamine Choqokiga -Name[fr]=Partage d'une liaison avec Choqok +Name[fr]=Partage d'un lien avec Choqok Name[gl]=Compartición de ligazóns co Choqok Name[hu]=Hivatkozás megosztása Choqokkal Name[it]=Condividi collegamento con Choqok @@ -70,7 +74,9 @@ Name[pt]=Partilhar a Ligação com o Choqok Name[pt_BR]=Compartilhar link com o Choqok Name[ru]=Поделиться ссылкой с помощью Choqok +Name[sl]=Deli povezavo z Choqok-om Name[sv]=Dela länk med Choqok +Name[tr]=Bağlantıyı Choqok ile Paylaş Name[uk]=Оприлюднити посилання за допомогою Choqok Name[x-test]=xxShare Link with Choqokxx Name[zh_CN]=用 Choqok 分享链接 @@ -84,13 +90,14 @@ Name[bs]=Dijelite linkove Choqok-om (Naslov) Name[ca]=Comparteix l'enllaç amb el Choqok (títol) Name[ca@valencia]=Comparteix l'enllaç amb el Choqok (títol) +Name[cs]=Sdílet odkaz s Choqok (Titulek) Name[da]=Del link med Choqok (titel) Name[de]=Verknüpfung mit Choqok bereitstellen (Titel) Name[el]=Σύνδεσμος διαμοιρασμού με Choqok (Τίτλος) Name[en_GB]=Share Link with Choqok (Title) Name[es]=Compartir el enlace con Choqok (Título) Name[et]=Lingi jagamine Choqokiga (pealkiri) -Name[fr]=Partage d'une liaison avec Choqok (titre) +Name[fr]=Partage d'un lien avec Choqok (titre) Name[gl]=Compartir unha ligazón co Choqok (Título) Name[hu]=Hivatkozás megosztása Choqokkal (cím) Name[it]=Condividi collegamento con Choqok (Titolo) @@ -103,8 +110,10 @@ Name[pt]=Partilhar a Ligação com o Choqok (Título) Name[pt_BR]=Compartilhar link com o Choqok (título) Name[ru]=Поделиться ссылкой (с названием) с помощью Choqok +Name[sl]=Deli povezavo z Choqok-om (naslov) Name[sv]=Dela länk med Choqok (rubrik) +Name[tr]=Bağlantıyı Choqok ile Paylaş (Başlık) Name[uk]=Оприлюднити посилання за допомогою Choqok (заголовок) Name[x-test]=xxShare Link with Choqok (Title)xx -Name[zh_CN]=用 Choqok 分享链接(标题) +Name[zh_CN]=用 Choqok 分享链接 (标题) Name[zh_TW]=用 Choqok 分享連結(標題) diff -Nru choqok-1.3/plugins/konqueror/choqok_upload.desktop choqok-1.4/plugins/konqueror/choqok_upload.desktop --- choqok-1.3/plugins/konqueror/choqok_upload.desktop 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/plugins/konqueror/choqok_upload.desktop 2013-08-31 05:51:23.000000000 +0200 @@ -14,6 +14,7 @@ Name[bs]=Slanje datoteke Choqok-om Name[ca]=Puja amb el Choqok Name[ca@valencia]=Puja amb el Choqok +Name[cs]=Nahrát s Choqok Name[da]=Upload med Choqok Name[de]=Mit Choqok hochladen Name[el]=Αποστολή με Choqok @@ -33,7 +34,9 @@ Name[pt]=Enviar com o Choqok Name[pt_BR]=Enviar com o Choqok Name[ru]=Загрузить файл с помощью Choqok +Name[sl]=Pošlji s Choqok-om Name[sv]=Ladda upp med Choqok +Name[tr]=Choqok ile Yükle Name[uk]=Вивантажити за допомогою Choqok Name[x-test]=xxUpload with Choqokxx Name[zh_CN]=用 Choqok 上传 diff -Nru choqok-1.3/plugins/konqueror/CMakeLists.txt choqok-1.4/plugins/konqueror/CMakeLists.txt --- choqok-1.3/plugins/konqueror/CMakeLists.txt 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/plugins/konqueror/CMakeLists.txt 2013-08-31 05:51:23.000000000 +0200 @@ -1,24 +1,5 @@ #include(DBusMacros) -include(MacroOptionalDependPackage) - -MACRO_OPTIONAL_DEPEND_PACKAGE(KWebKitPart "kwebkitpart") -if(DEPEND_PACKAGE_KWebKitPart) - #macro_optional_find_package(KWebKitPart QUIET) - find_package(KWebKitPart) -else(DEPEND_PACKAGE_KWebKitPart) - set(KWEBKITPART_FOUND FALSE) -endif(DEPEND_PACKAGE_KWebKitPart) - -if(KWEBKITPART_FOUND) - add_definitions(-DHAVE_KWEBKITPART) - include_directories(${KWEBKITPART_INCLUDE_DIR}) - set(HAVE_KWEBKITPART true) -endif(KWEBKITPART_FOUND) - - -macro_log_feature(KWEBKITPART_FOUND "KWebKitPart" "KWebKitPart libraries and header files" "https://svn.kde.org/home/kde/trunk/extragear/base/kwebkitpart" FALSE "" "KWebKitPart is necessary to compile Choqok support for KWebKitPart.") - include_directories( ${CHOQOK_INCLUDES} ) @@ -29,17 +10,9 @@ target_link_libraries(konqchoqokplugin ${KDE4_KHTML_LIBS} choqok ) -if(KWEBKITPART_FOUND) - target_link_libraries(konqchoqokplugin ${KWEBKITPART_LIBRARIES} choqok ${KDE4_KDEWEBKIT_LIBS} ${QT_QTWEBKIT_LIBRARY}) -endif(KWEBKITPART_FOUND) - install(TARGETS konqchoqokplugin DESTINATION ${PLUGIN_INSTALL_DIR} ) install(FILES konqchoqok.rc konqchoqok.desktop DESTINATION ${DATA_INSTALL_DIR}/khtml/kpartplugins ) -if(KWEBKITPART_FOUND) - install(FILES konqchoqok.rc konqchoqok.desktop DESTINATION ${DATA_INSTALL_DIR}/kwebkitpart/kpartplugins ) -endif (KWEBKITPART_FOUND) - install( FILES choqok_share.desktop DESTINATION ${SERVICES_INSTALL_DIR}/ServiceMenus ) install( FILES choqok_upload.desktop DESTINATION ${SERVICES_INSTALL_DIR}/ServiceMenus ) diff -Nru choqok-1.3/plugins/konqueror/konqchoqok.cpp choqok-1.4/plugins/konqueror/konqchoqok.cpp --- choqok-1.3/plugins/konqueror/konqchoqok.cpp 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/plugins/konqueror/konqchoqok.cpp 2013-08-31 05:51:23.000000000 +0200 @@ -45,7 +45,7 @@ KonqPluginChoqok::KonqPluginChoqok(QObject* parent, const QVariantList& ) : Plugin( parent ) , m_interface(0) { - KActionMenu *menu = new KActionMenu(KIcon("choqok") , "Choqok", + KActionMenu *menu = new KActionMenu(KIcon("choqok") , i18n("Choqok"), actionCollection() ); actionCollection()->addAction( "action menu", menu); menu->setDelayed( false ); @@ -56,7 +56,7 @@ menu->addAction( postaction ); KAction *shortening = actionCollection()->add( "shortening_choqok"); - shortening->setText( i18n("Shorten Url on Paste") ); + shortening->setText( i18n("Shorten URL on Paste") ); connect( shortening, SIGNAL( toggled(bool) ), SLOT( toggleShortening(bool) ) ); menu->addAction( shortening ); @@ -143,6 +143,6 @@ K_PLUGIN_FACTORY(KonqPluginChoqokFactory, registerPlugin(); ) -K_EXPORT_PLUGIN( KonqPluginChoqokFactory( "konqchoqok" ) ) +K_EXPORT_PLUGIN( KonqPluginChoqokFactory( "konqchoqok", "choqok" ) ) #include "konqchoqok.moc" diff -Nru choqok-1.3/plugins/konqueror/konqchoqok.desktop choqok-1.4/plugins/konqueror/konqchoqok.desktop --- choqok-1.3/plugins/konqueror/konqchoqok.desktop 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/plugins/konqueror/konqchoqok.desktop 2013-08-31 05:51:23.000000000 +0200 @@ -14,6 +14,7 @@ Name[bs]=Dodatak Choqok-a za Konqueror Name[ca]=Connector del Choqok pel Konqueror Name[ca@valencia]=Connector del Choqok pel Konqueror +Name[cs]=Zásuvný modul Choqok pro Konqueror Name[da]=Choqok-plugin til Konqueror Name[de]=Choqok-Modul für Konqueror Name[el]=Konqueror Choqok πρόσθετο @@ -33,8 +34,9 @@ Name[pa]=ਕੋਨਕਿਊਰੋਰ ਚੋਕਿਉਕ ਪਲੱਗਇਨ Name[pl]=Wtyczka Choqok dla konqueror Name[pt]='Plugin' do Choqok para o Konqueror -Name[pt_BR]=Plugin Choqok do Konqueror +Name[pt_BR]=Plugin do Choqok para o Konqueror Name[ru]=Модуль Choqok для Konqueror +Name[sl]=Vstavek Konqueror za Choqok Name[sv]=Choqok-insticksprogram för Konqueror Name[tr]=Konqueror Choqok Eklentisi Name[uk]=Додаток Choqok до Konqueror @@ -46,13 +48,14 @@ Comment[bs]=Ubacivanje izabranog teksta u Konqueror-u u Choqok i druge mogućnosti Comment[ca]=Publica al Choqok el text seleccionat al Konqueror i altres funcionalitats Comment[ca@valencia]=Publica al Choqok el text seleccionat al Konqueror i altres funcionalitats +Comment[cs]=Odešle Choqok vybraný text v Konqueror, a další prvek Comment[da]=Send tekst der er markeret i Konqueror til Choqok og andre funktioner Comment[de]=Ausgewählten Text in Konqueror über Choqok senden und andere Funktionen Comment[el]=Ανάρτηση στο Choqok του επιλεγμένου κειμένου στο Konqueror και άλλα χαρακτηριστικά Comment[en_GB]=Post to Choqok the selected text in Konqueror, and other features -Comment[es]=Publicar con Choqok el texto seleccionado en Konqueror, y otras funciones +Comment[es]=Publicar con Choqok el texto seleccionado en Konqueror, y otras funcionalidades Comment[et]=Konqueroris valitud teksti postitamine Choqokis ja muud võimalused -Comment[fr]=Poste sur Choqok le texte sélectionné dans Konqueror, ainsi que autres fonctionnalités +Comment[fr]=Poste sur Choqok le texte sélectionné dans Konqueror ainsi que autres fonctionnalités Comment[gl]=Enviar ao Choqok o texto seleccionado no Konqueror e outras funcionalidades Comment[hu]=A Konquerorban kijelölt szövegek küldése a Choqokba, és egyéb szolgáltatások Comment[it]=Pubblica in Choqok il testo selezionato in Konqueror e altre caratteristiche @@ -63,9 +66,11 @@ Comment[pa]=ਕੋਨਕਿਉਰੋਰ ਵਿੱਚ ਚੁਣਿਆ ਟੈਕਸਟ ਚੋਕਿਉਕ ਵਿੱਚ ਭੇਜੋ ਅਤੇ ਹੋਰ ਫੀਚਰ Comment[pl]=Wyślij wybrany tekst z konquerora do Choqok oraz inne funkcje Comment[pt]=Publicar no Chokoq o texto seleccionado no Konqueror, entre outras funcionalidades -Comment[pt_BR]=Publicar no Choqok o texto selecionado no Konqueror e outros recursos +Comment[pt_BR]=Publica no Choqok o texto selecionado no Konqueror e outros recursos Comment[ru]=Публикация с помощью Choqok текста, выделенного в Konqueror, и другие возможности +Comment[sl]=Izbrano besedilo pošlje v Choqok, ima pa še druge zmožnosti Comment[sv]=Skicka markerad text i Konqueror till Choqok, och andra funktioner +Comment[tr]=Konqueror içinde seçilen metni ve diğer özellikleri Choqok'a yolla Comment[uk]=Передавання до Choqok позначеного фрагмента тексту у Konqueror та інші можливості Comment[x-test]=xxPost to Choqok the selected text in Konqueror, and other featuresxx Comment[zh_CN]=将 Konqueror 中的所选文本发布到 Choqok,以及其它特性 diff -Nru choqok-1.3/plugins/nowlistening/choqok_nowlistening_config.desktop choqok-1.4/plugins/nowlistening/choqok_nowlistening_config.desktop --- choqok-1.3/plugins/nowlistening/choqok_nowlistening_config.desktop 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/plugins/nowlistening/choqok_nowlistening_config.desktop 2013-08-31 05:51:23.000000000 +0200 @@ -22,15 +22,16 @@ Name[es]=Ahora escuchando Name[et]=Praegu kuulan Name[fa]=درحال گوش دادن -Name[fi]=Nyt kuunnellaan +Name[fi]=Nyt soi Name[fr]=En cours d'écoute Name[ga]=Ag Éisteacht Anois Name[gl]=A escoitar agora Name[hr]=Sada slušam Name[hu]=Most ezt hallgatom -Name[it]=In ascolto +Name[it]=Adesso sto ascoltando Name[ja]=今聴いているもの Name[km]=ឥឡូវ​នេះ​ស្ដាប់​ +Name[lt]=Dabar klausausi Name[nb]=Lytter nå til Name[nds]=Jüst an't Hören Name[nl]=Luistert nu naar @@ -40,6 +41,8 @@ Name[pt_BR]=Ouvindo Name[ro]=Acum ascult Name[ru]=Сейчас звучит +Name[sk]=Teraz počúvam +Name[sl]=Zdaj poslušam Name[sv]=Lyssnar nu Name[tr]=Şimdi Dinleniyor Name[ug]=ھازىر ئاڭلاۋاتىدۇ @@ -52,14 +55,15 @@ Comment[bs]=Kaže vašim prijateljima šta slušate. Comment[ca]=Diu als vostres amics el què esteu escoltant. Comment[ca@valencia]=Diu als vostres amics el què esteu escoltant. +Comment[cs]=Řekne vašim přátelům, co zrovna posloucháte. Comment[da]=Fortæller dine venner hvad du lytter til. Comment[de]=Teilt Ihren Freunden mit, welche Musik Sie gerade hören Comment[el]=Λέει στους φίλους σου τι ακούς τώρα Comment[en_GB]=Tells your friends what you are listening to. Comment[es]=Le dice a sus amigos lo que está escuchando. Comment[et]=Sõpradele teatamine, mida parajasti kuulad. -Comment[fi]=Kertoo ystävillesi, mitä parhaillaan kuuntelet. -Comment[fr]=Informe vos amis de ce que vous écoutez actuellement. +Comment[fi]=Kertoo kavereillesi, mitä parhaillaan kuuntelet. +Comment[fr]=Informe vos ami(e)s de ce que vous écoutez actuellement. Comment[gl]=Dilles ás súas amizades o que anda a escoitar. Comment[hr]=Reci svojim prijateljima što slušaš. Comment[hu]=Az éppen hallgatott zeneszám megosztása a partnerekkel. @@ -72,10 +76,12 @@ Comment[pa]=ਆਪਣੇ ਦੋਸਤਾਂ ਨੂੰ ਦੱਸੋ ਕਿ ਤੁਸੀਂ ਕੀ ਸੁਣ ਰਹੇ ਹੋ। Comment[pl]=Informuje znajomych o tym, czego teraz słuchasz. Comment[pt]=Diga aos seus amigos o que está a ouvir. -Comment[pt_BR]=Diga aos seus amigos o que você está ouvindo. +Comment[pt_BR]=Diga aos seus amigos o que está ouvindo. Comment[ro]=Le spune prietenilor ce ascultați. Comment[ru]=Сообщает вашим друзья что вы сейчас слушаете +Comment[sl]=Vašim prijateljem sporoči, kaj poslušate. Comment[sv]=Talar om för dina vänner vad du lyssnar på. +Comment[tr]=Arkadaşlarınıza ne dinlediğinizi gösterir. Comment[uk]=Повідомляє вашим друзям про музику, яку ви слухаєте. Comment[x-test]=xxTells your friends what you are listening to.xx Comment[zh_CN]=告诉您的好友您正在收听的内容。 diff -Nru choqok-1.3/plugins/nowlistening/choqok_nowlistening.desktop choqok-1.4/plugins/nowlistening/choqok_nowlistening.desktop --- choqok-1.3/plugins/nowlistening/choqok_nowlistening.desktop 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/plugins/nowlistening/choqok_nowlistening.desktop 2013-08-31 05:51:23.000000000 +0200 @@ -28,15 +28,16 @@ Name[es]=Ahora escuchando Name[et]=Praegu kuulan Name[fa]=درحال گوش دادن -Name[fi]=Nyt kuunnellaan +Name[fi]=Nyt soi Name[fr]=En cours d'écoute Name[ga]=Ag Éisteacht Anois Name[gl]=A escoitar agora Name[hr]=Sada slušam Name[hu]=Most ezt hallgatom -Name[it]=In ascolto +Name[it]=Adesso sto ascoltando Name[ja]=今聴いているもの Name[km]=ឥឡូវ​នេះ​ស្ដាប់​ +Name[lt]=Dabar klausausi Name[nb]=Lytter nå til Name[nds]=Jüst an't Hören Name[nl]=Luistert nu naar @@ -46,6 +47,8 @@ Name[pt_BR]=Ouvindo Name[ro]=Acum ascult Name[ru]=Сейчас звучит +Name[sk]=Teraz počúvam +Name[sl]=Zdaj poslušam Name[sv]=Lyssnar nu Name[tr]=Şimdi Dinleniyor Name[ug]=ھازىر ئاڭلاۋاتىدۇ @@ -58,13 +61,15 @@ Comment[bs]=Kaže vašim prijateljima šta slušate Comment[ca]=Diu als vostres amics el què esteu escoltant Comment[ca@valencia]=Diu als vostres amics el què esteu escoltant +Comment[cs]=Řekne vašim přátelům, co zrovna posloucháte Comment[da]=Fortæller dine venner hvad du lytter til Comment[de]=Teilt Ihren Freunden mit, welche Musik Sie gerade hören Comment[el]=Λέει στους φίλους σου τι ακούς τώρα Comment[en_GB]=Tells your friends what you are listening to Comment[es]=Le dice a sus amigos lo que está escuchando Comment[et]=Sõpradele teatamine, mida parajasti kuulad -Comment[fr]=Informe vos amis de ce que vous écoutez actuellement +Comment[fi]=Kertoo kavereillesi, mitä parhaillaan kuuntelet +Comment[fr]=Informe vos ami(e)s de ce que vous écoutez actuellement Comment[gl]=Dilles ás súas amizades o que anda a escoitar Comment[hu]=Az éppen hallgatott zeneszám megosztása a partnerekkel Comment[it]=Dice ai tuoi amici che cosa stai ascoltando @@ -75,9 +80,11 @@ Comment[pa]=ਆਪਣੇ ਦੋਸਤਾਂ ਨੂੰ ਦੱਸੋ ਕਿ ਤੁਸੀਂ ਕੀ ਸੁਣ ਰਹੇ ਹੋ Comment[pl]=Informuje znajomych o tym, czego teraz słuchasz Comment[pt]=Diga aos seus amigos o que está a ouvir -Comment[pt_BR]=Diga aos seus amigos o que você está ouvindo +Comment[pt_BR]=Diga aos seus amigos o que está ouvindo Comment[ru]=Сообщает вашим друзья что вы сейчас слушаете +Comment[sl]=Vašim prijateljem sporoči, kaj poslušate Comment[sv]=Talar om för dina vänner vad du lyssnar på +Comment[tr]=Arkadaşlarınıza ne dinlediğinizi gösterir Comment[uk]=Повідомляє вашим друзям про музику, яку ви слухаєте Comment[x-test]=xxTells your friends what you are listening toxx Comment[zh_CN]=告诉您的好友您正在收听的内容 diff -Nru choqok-1.3/plugins/quickfilter/choqok_quickfilter.desktop choqok-1.4/plugins/quickfilter/choqok_quickfilter.desktop --- choqok-1.3/plugins/quickfilter/choqok_quickfilter.desktop 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/plugins/quickfilter/choqok_quickfilter.desktop 2013-08-31 05:51:23.000000000 +0200 @@ -19,12 +19,14 @@ Name[bs]=Brzo filtriraj poruke Name[ca]=Filtra els missatges ràpidament Name[ca@valencia]=Filtra els missatges ràpidament +Name[cs]=Rychle filtrovat příspěvky Name[da]=Filtrér indlæg hurtigt Name[de]=Nachrichten schnellfiltern Name[el]=Γρήγορο φιλτράρισμα αναρτήσεων Name[es]=Filtrar rápidamente los mensajes Name[et]=Postituste kiirfiltreerimine -Name[fr]=Filtrage rapide d'articles +Name[fr]=Filtrage rapide de billets +Name[gl]=Filtro rápido das mensaxes Name[hu]=Gyors bejegyzésszűrő Name[it]=Filtro rapido messaggi Name[km]=ប្រកាស​តម្រង​រហ័ស @@ -34,8 +36,11 @@ Name[pa]=ਪੋਸਟ ਤੁਰੰਤ ਫਿਲਟਰ ਕਰੋ Name[pl]=Szybko odfiltruj posty Name[pt]=Filtrar rapidamente as publicações -Name[pt_BR]=Filtrar as mensagens rapidamente +Name[pt_BR]=Filtro rápido de mensagens +Name[ru]=Быстрая фильтрация сообщений +Name[sl]=Hitro filtriraj objave Name[sv]=Snabbfiltrera inlägg +Name[tr]=İletileri hızlıca filtrele Name[uk]=Швидке фільтрування дописів Name[x-test]=xxQuickly Filter postsxx Name[zh_CN]=快速过滤信息 @@ -45,12 +50,14 @@ Comment[bs]=Filtriraj poruke po imenu autora ili tekstu sadržaja Comment[ca]=Filtra els missatges per nom d'autor o contingut del text Comment[ca@valencia]=Filtra els missatges per nom d'autor o contingut del text +Comment[cs]=Filtrovat příspěvky podle jména autora nebo textu obsahu Comment[da]=Filtér indlæg efter ophavsmand eller tekstindhold Comment[de]=Nachrichten nach Autorennamen oder Inhalten filtern Comment[el]=Φιλτράρισμα αναρτήσεων με όνομα συγγραφέα ή κείμενο Comment[es]=Filtrar las publicaciones por el nombre del autor o el texto del contenido Comment[et]=Postituste filtreerimine autori nime või sisu järgi Comment[fr]=Filtre les billets par nom d'auteur ou texte de contenu +Comment[gl]=Filtrar as mensaxes polo autor ou o texto. Comment[hu]=Bejegyzések szűrése a szerző neve vagy a tartalmi szöveg alapján Comment[it]=Filtra i messaggi per autore o contenuto Comment[km]=តម្រង​ប្រកាស​ដោយ​ឈ្មោះ​អ្នក​និពន្ធ ឬ​អត្ថបទ​មាតិកា @@ -59,8 +66,11 @@ Comment[nl]=Geposte berichten filteren op auteursnaam of tekstinhoud Comment[pl]=Filtruj posty wg nazwy autora lub zawartości tekstu Comment[pt]=Filtrar as publicações pelo nome do autor ou pelo texto do conteúdo -Comment[pt_BR]=Filtra as mensagens pelo nome do autor ou pelo texto do conteúdo +Comment[pt_BR]=Filtra as mensagens pelo nome do autor ou texto do conteúdo +Comment[ru]=Фильтрация сообщений по автору или по тексту +Comment[sl]=Filtrira objave po imenu avtorja ali besedilu vsebine Comment[sv]=Filtrera inlägg enligt författarnamn eller innehållets text +Comment[tr]=Gönderimleri yazara veya içerik metnine göre filtrele Comment[uk]=Фільтрування дописів за іменем автора або текстом вмісту Comment[x-test]=xxFilter posts by author name or content textxx Comment[zh_CN]=根据作者或内容过滤信息 diff -Nru choqok-1.3/plugins/quickfilter/quickfilter.cpp choqok-1.4/plugins/quickfilter/quickfilter.cpp --- choqok-1.3/plugins/quickfilter/quickfilter.cpp 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/plugins/quickfilter/quickfilter.cpp 2013-08-31 05:51:23.000000000 +0200 @@ -69,7 +69,7 @@ if (!m_filterUser.isEmpty() && Choqok::UI::Global::mainWindow()->currentMicroBlog()->currentTimeline()) { foreach(Choqok::UI::PostWidget* postwidget, Choqok::UI::Global::mainWindow()->currentMicroBlog()->currentTimeline()->postWidgets()) { - if ( !postwidget->currentPost().author.userName.contains(m_filterUser, Qt::CaseInsensitive) ) { + if ( !postwidget->currentPost()->author.userName.contains(m_filterUser, Qt::CaseInsensitive) ) { postwidget->hide(); } else { @@ -91,7 +91,7 @@ if (!m_filterText.isEmpty() && Choqok::UI::Global::mainWindow()->currentMicroBlog()->currentTimeline()) { foreach(Choqok::UI::PostWidget* postwidget, Choqok::UI::Global::mainWindow()->currentMicroBlog()->currentTimeline()->postWidgets()) { - if ( !postwidget->currentPost().content.contains(m_filterText, Qt::CaseInsensitive) ) { + if ( !postwidget->currentPost()->content.contains(m_filterText, Qt::CaseInsensitive) ) { postwidget->hide(); } else { @@ -212,13 +212,13 @@ Choqok::UI::Global::mainWindow()->currentMicroBlog()->currentTimeline()->timelineName() == timeline) { kDebug()<<"pass1"; if (!m_aledit->text().isEmpty()) { - if (!np->currentPost().author.userName.contains(m_aledit->text())) + if (!np->currentPost()->author.userName.contains(m_aledit->text())) np->hide(); else np->show(); } if (!m_tledit->text().isEmpty()) { - if (!np->currentPost().content.contains(m_tledit->text())) + if (!np->currentPost()->content.contains(m_tledit->text())) np->hide(); else np->show(); diff -Nru choqok-1.3/plugins/searchaction/choqok_searchaction.desktop choqok-1.4/plugins/searchaction/choqok_searchaction.desktop --- choqok-1.3/plugins/searchaction/choqok_searchaction.desktop 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/plugins/searchaction/choqok_searchaction.desktop 2013-08-31 05:51:23.000000000 +0200 @@ -19,20 +19,21 @@ Name[bs]=Radnja pretraživanja Name[ca]=Acció de cerca Name[ca@valencia]=Acció de cerca +Name[cs]=Vyhledávací činnost Name[da]=Søgehandling Name[de]=Suchaktion Name[el]=Πράξη αναζήτησης Name[en_GB]=Search Action Name[es]=Acción de búsqueda Name[et]=Otsimistoiming -Name[fi]=Etsintätoiminto +Name[fi]=Hakutoiminto Name[fr]=Action de recherche Name[gl]=Acción de busca Name[hr]=Radnja pretraživanja Name[hu]=Keresés Name[it]=Azione di ricerca Name[ja]=検索アクション -Name[km]=អំពើ​ស្វែង​រក +Name[km]=ស្វែងរក​សកម្ម​ភាព Name[nb]=Søkehandling Name[nds]=Söökakschoon Name[nl]=Zoekactie @@ -41,6 +42,7 @@ Name[pt]=Acção da Pesquisa Name[pt_BR]=Ação de pesquisa Name[ru]=Поиск +Name[sl]=Dejanje iskanja Name[sv]=Sökåẗgärd Name[tr]=Arama Eylemi Name[uk]=Дія з пошуку @@ -52,16 +54,18 @@ Comment[bs]=Dodaje akciju pretrage korisničkom sučelju za Twitter API mikroblogove kao što su Twitter i StatusNet Comment[ca]=Afegeix una acció de cerca a la IU per l'API de microblocs com ara Twitter i StatusNet Comment[ca@valencia]=Afig una acció de cerca a la IU per l'API de microblocs com ara Twitter i StatusNet +Comment[cs]=Přidat vyhledávací činnost do uživatelského rozhraní pro mikroblogy Twitter API, jako Twitter a StatusNet Comment[da]=Føj en søgehandling til brugerfladen til mikroblogs med Twitter-API, såsom Twitter og StatusNet Comment[de]=Eine Suchaktion für Microblogs mit einer Twitter-API, wie Twitter oder StatusNet, zur Oberfläche hinzufügen Comment[el]=Προσθήκη πράξης αναζήτησης στη διεπαφή για API μικρο-ιστολογίων Twitter όπως Twitter και StatusNet Comment[en_GB]=Add a Search action to the UI for Twitter API microblogs like Twitter and StatusNet -Comment[es]=Añadir una acción de búsqueda a la interfaz del API de microblogs de Twitter, como Twitter y StatusNet +Comment[es]=Añadir una acción de búsqueda a la interfaz de usuario para el API de microblogs como Twitter y StatusNet Comment[et]=Otsimistoimingu lisamine Twitteri API mikroblogide, nt. Twitteri ja StatusNeti kasutajaliidesele +Comment[fi]=Lisää hakutoiminto käyttöliittymään Twitter API -mikroblogia, kuten Twitter ja StatusNet, varten. Comment[fr]=Ajouter une action de recherche à l'interface graphique pour les sites de microblogage compatibles avec l'API Twitter comme Twitter et StatusNet Comment[gl]=Engadir unha acción de busca a unha interface para microblogues da API de Twitter, como Twitter e StatusNet Comment[hu]=Keresés művelet hozzáadása a felhasználói felülethez a Twitter API-t használó mikroblogokhoz, például a Twitter és a StatusNet -Comment[it]=Aggiungi un'azione di ricerca all'interfaccia per i microblog gestiti dall'API di Twitter, come lo stesso Twitter e StatusNet +Comment[it]=Aggiungi un'azione di ricerca all'interfaccia per i microblog gestiti dalle API di Twitter, come lo stesso Twitter e StatusNet Comment[ja]=Twitter や StatusNet のような Twitter API マイクロブログ用の UI に検索アクションを追加する Comment[km]=បន្ថែម​អំពើ​ស្វែង​រក​ទៅ​ចំណុច​ប្រទាក់​អ្នក​ប្រើ​សម្រាប់​​ Twitter API microblogs ដូច​ Twitter និង​ StatusNet Comment[nb]=Legg til en søkehandling til grensesnittet for Twitter Api mikroblogger, slik som Twitter og StatusNet @@ -69,9 +73,11 @@ Comment[nl]=Voeg een zoekactie toe aan de GI voor Twitter-API-microblogs. zoals Twitter en StatusNet Comment[pl]=Dodaj funkcję wyszukiwania do interfejsu dla API mikroblogów jak Twitter i StatusNet Comment[pt]=Adiciona uma acção de Pesquisa à interface para a API do Twitter, p.ex. Twitter e StatusNet -Comment[pt_BR]=Adiciona a ação de pesquisa para a interface da API dos micro-blogs, tais como Twitter e StatusNet +Comment[pt_BR]=Adiciona uma ação para pesquisa na API de microblogs, como Twitter e StatusNet Comment[ru]=Добавляет возможность поиска для микроблогов с API Twitter, например Twitter и StatusNet +Comment[sl]=Doda dejanje iskanja uporabniškem vmesniku za mikrobloge, ki uporabljajo Twitter API, npr. Twitter in StatusNet Comment[sv]=Lägg till en sökåtgärd i användargränssnitt med Twitters programmeringsgränssnitt, t.ex. Twitter och StatusNet +Comment[tr]=UI'ye, Twitter ve StatusNet gibi Twitter API mikroblogları için bir Arama eylemi ekle Comment[uk]=Додає дію з пошуку до інтерфейсу користувача мікроблогів з API Twitter, зокрема Twitter і StatusNet Comment[x-test]=xxAdd a Search action to the UI for Twitter API microblogs like Twitter and StatusNetxx Comment[zh_CN]=为 Twitter API 微博客添加搜索动作,类似于 Twitter 和 StatusNet diff -Nru choqok-1.3/plugins/shorteners/bit_ly/bit_ly_config.cpp choqok-1.4/plugins/shorteners/bit_ly/bit_ly_config.cpp --- choqok-1.3/plugins/shorteners/bit_ly/bit_ly_config.cpp 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/plugins/shorteners/bit_ly/bit_ly_config.cpp 2013-08-31 05:51:23.000000000 +0200 @@ -126,7 +126,7 @@ if ( output.startsWith( '0' ) ) KMessageBox::error( this, i18n ( "Provided data is invalid. Try another login or API key.\nYou can find it on http://bit.ly/a/your_api_key" ) ); if ( output.startsWith( '1' ) ) - KMessageBox::information( this, i18n ( "You entered valid information!" ) ); + KMessageBox::information( this, i18n ( "You entered valid information." ) ); } else { Choqok::NotifyManager::error( job->errorString(), i18n( "bit.ly config error" ) ); diff -Nru choqok-1.3/plugins/shorteners/bit_ly/choqok_bit_ly_config.desktop choqok-1.4/plugins/shorteners/bit_ly/choqok_bit_ly_config.desktop --- choqok-1.3/plugins/shorteners/bit_ly/choqok_bit_ly_config.desktop 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/plugins/shorteners/bit_ly/choqok_bit_ly_config.desktop 2013-08-31 05:51:23.000000000 +0200 @@ -13,12 +13,14 @@ Name[bs]=bit.ly Name[ca]=bit.ly Name[ca@valencia]=bit.ly +Name[cs]=bit.ly Name[da]=bit.ly Name[de]=bit.ly Name[el]=bit.ly Name[en_GB]=bit.ly Name[es]=bit.ly Name[et]=bit.ly +Name[fi]=bit.ly Name[fr]=bit.ly Name[gl]=bit.ly Name[hr]=bit.ly @@ -34,7 +36,9 @@ Name[pt_BR]=bit.ly Name[ru]=bit.ly Name[sk]=bit.ly +Name[sl]=bit.ly Name[sv]=bit.ly +Name[tr]=bit.ly Name[ug]=bit.ly Name[uk]=bit.ly Name[x-test]=xxbit.lyxx @@ -45,12 +49,14 @@ Comment[bs]=bit.ly Comment[ca]=bit.ly Comment[ca@valencia]=bit.ly +Comment[cs]=bit.ly Comment[da]=bit.ly Comment[de]=bit.ly Comment[el]=bit.ly Comment[en_GB]=bit.ly Comment[es]=bit.ly Comment[et]=bit.ly +Comment[fi]=bit.ly Comment[fr]=bit.ly Comment[gl]=bit.ly Comment[hr]=bit.ly @@ -66,7 +72,9 @@ Comment[pt_BR]=bit.ly Comment[ru]=bit.ly Comment[sk]=bit.ly +Comment[sl]=bit.ly Comment[sv]=bit.ly +Comment[tr]=bit.ly Comment[ug]=bit.ly Comment[uk]=bit.ly Comment[x-test]=xxbit.lyxx diff -Nru choqok-1.3/plugins/shorteners/bit_ly/choqok_bit_ly.desktop choqok-1.4/plugins/shorteners/bit_ly/choqok_bit_ly.desktop --- choqok-1.3/plugins/shorteners/bit_ly/choqok_bit_ly.desktop 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/plugins/shorteners/bit_ly/choqok_bit_ly.desktop 2013-08-31 05:51:23.000000000 +0200 @@ -9,7 +9,7 @@ X-KDE-PluginInfo-Email=gmlastik@gmail.com X-KDE-PluginInfo-Name=choqok_bit_ly X-KDE-PluginInfo-Version=0.1 -X-KDE-PluginInfo-Website=http://choqok.org +X-KDE-PluginInfo-Website=http://choqok.gnufolks.org X-KDE-PluginInfo-Category=Shorteners X-KDE-PluginInfo-Depends= X-KDE-PluginInfo-License=GPL @@ -19,12 +19,14 @@ Name[bs]=bit.ly Name[ca]=bit.ly Name[ca@valencia]=bit.ly +Name[cs]=bit.ly Name[da]=bit.ly Name[de]=bit.ly Name[el]=bit.ly Name[en_GB]=bit.ly Name[es]=bit.ly Name[et]=bit.ly +Name[fi]=bit.ly Name[fr]=bit.ly Name[gl]=bit.ly Name[hr]=bit.ly @@ -40,7 +42,9 @@ Name[pt_BR]=bit.ly Name[ru]=bit.ly Name[sk]=bit.ly +Name[sl]=bit.ly Name[sv]=bit.ly +Name[tr]=bit.ly Name[ug]=bit.ly Name[uk]=bit.ly Name[x-test]=xxbit.lyxx @@ -51,13 +55,15 @@ Comment[bs]=Dodatak koji skraćuje URL preko bit.ly servisa. Comment[ca]=Un connector per escurçar URL a través del servei bit.ly. Comment[ca@valencia]=Un connector per escurçar URL a través del servei bit.ly. +Comment[cs]=Zásuvný modul pro zkracování URL s použitím služby bit.ly. Comment[da]=Et plugin til at afkorte URL'er via tjenesten bit.ly. Comment[de]=Ein Modul, um Adressen (URLs) mit Hilfe des bit.ly-Dienstes zu kürzen Comment[el]=Πρόσθετο συντόμευσης για URL με την υπηρεσία bit.ly Comment[en_GB]=A plugin to shorten URLs via the bit.ly service. -Comment[es]=Un complemento para acortar los URL por medio del servicio de bit.ly. +Comment[es]=Un complemento para acortar las URL por medio del servicio de bit.ly. Comment[et]=Plugin URL-ide lühendamiseks bit.ly teenuse abil. -Comment[fr]=Un module externe pour raccourcir les URL via le service bit.ly. +Comment[fi]=Liitännäinen verkko-osoitteiden lyhentämiseen bit.ly-palvelun kautta. +Comment[fr]=Un module externe pour raccourcir les URL grâce au service « bit.ly ». Comment[gl]=Un engadido para abreviar URL mediante o servizo bit.ly. Comment[hr]=Priključak koji skraćuje URL-ove pomoću servisa bit.ly. Comment[hu]=Bővítmény hivatkozások rövidítéséhez a bit.ly szolgáltatással. @@ -69,9 +75,11 @@ Comment[pa]=bit.ly ਸਰਵਿਸ ਰਾਹੀਂ URL ਛੋਟੇ ਕਰਨ ਲਈ ਪਲੱਗਇਨ Comment[pl]=Wtyczka do skracania adresów URL przy pomocy serwisu bit.ly . Comment[pt]=Um 'plugin' de redução de URL's através do serviço bit.ly. -Comment[pt_BR]=Plugin para encurtar URLs através do serviço bit.ly. +Comment[pt_BR]=Plugin para encurtar URLs com o serviço bit.ly. Comment[ru]=Модуль для сокращения ссылок с помощью службы bit.ly. +Comment[sl]=Vstavek za krajšanje URL-jev preko storitve bit.ly. Comment[sv]=Ett insticksprogram för att avkorta webbadresser via tjänsten bit.ly. +Comment[tr]=bit.ly kullanarak adresleri kısaltmaya yarayan bir eklenti. Comment[uk]=Додаток для скорочення адрес за допомогою служб bit.ly. Comment[x-test]=xxA plugin to shorten URLs via the bit.ly service.xx Comment[zh_CN]=通过 bit.ly 服务缩短 URL 的插件。 diff -Nru choqok-1.3/plugins/shorteners/goo_gl/choqok_goo_gl.desktop choqok-1.4/plugins/shorteners/goo_gl/choqok_goo_gl.desktop --- choqok-1.3/plugins/shorteners/goo_gl/choqok_goo_gl.desktop 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/plugins/shorteners/goo_gl/choqok_goo_gl.desktop 2013-08-31 05:51:23.000000000 +0200 @@ -9,7 +9,7 @@ X-KDE-PluginInfo-Email=gmlastik@gmail.com X-KDE-PluginInfo-Name=choqok_goo_gl X-KDE-PluginInfo-Version=0.2 -X-KDE-PluginInfo-Website=http://choqok.org +X-KDE-PluginInfo-Website=http://choqok.gnufolks.org X-KDE-PluginInfo-Category=Shorteners X-KDE-PluginInfo-Depends= X-KDE-PluginInfo-License=GPL @@ -19,12 +19,14 @@ Name[bs]=goo.gl Name[ca]=goo.gl Name[ca@valencia]=goo.gl +Name[cs]=goo.gl Name[da]=goo.gl Name[de]=goo.gl Name[el]=goo.gl Name[en_GB]=goo.gl Name[es]=goo.gl Name[et]=goo.gl +Name[fi]=goo.gl Name[fr]=goo.gl Name[gl]=goo.gl Name[hr]=goo.gl @@ -40,6 +42,7 @@ Name[pt_BR]=goo.gl Name[ru]=goo.gl Name[sk]=goo.gl +Name[sl]=goo.gl Name[sv]=goo.gl Name[tr]=goo.gl Name[uk]=goo.gl @@ -51,13 +54,15 @@ Comment[bs]=Priključak koji skraćuje URL-ove pomoću servisa goo.gl. Comment[ca]=Un connector per escurçar URL a través del servei goo.gl. Comment[ca@valencia]=Un connector per escurçar URL a través del servei goo.gl. +Comment[cs]=Zásuvný modul pro zkracování URL s použitím služby goo.gl. Comment[da]=Et plugin til at afkorte URL'er via tjenesten goo.gl. Comment[de]=Ein Modul, um Adressen (URLs) mit Hilfe des goo.gl-Dienstes zu kürzen Comment[el]=Πρόσθετο συντόμευσης για URL με την υπηρεσία goo.gl Comment[en_GB]=A plugin to shorten URLs via the goo.gl service. -Comment[es]=Un complemento para acortar los URL por medio del servicio de goo.gl. +Comment[es]=Un complemento para acortar las URL por medio del servicio de goo.gl. Comment[et]=Plugin URL-ide lühendamiseks goo.gl teenuse abil. -Comment[fr]=Un module externe pour raccourcir les URL via le service goo.gl. +Comment[fi]=Liitännäinen verkko-osoitteiden lyhentämiseen goo.gl-palvelun kautta. +Comment[fr]=Un module externe pour raccourcir les URL grâce au service « goo.gl ». Comment[gl]=Un engadido para abreviar URL mediante o servizo gool.gl. Comment[hr]=Priključak koji skraćuje URL-ove pomoću servisa goo.gl. Comment[hu]=Bővítmény hivatkozások rövidítéséhez a goo.gl szolgáltatással. @@ -69,9 +74,11 @@ Comment[pa]=goo.gl ਸਰਵਿਸ ਰਾਹੀਂ URL ਛੋਟੇ ਕਰਨ ਲਈ ਪਲੱਗਇਨ Comment[pl]=Wtyczka do skracania adresów URL przy pomocy serwisu goo.gl . Comment[pt]=Um 'plugin' para reduzir os URL's, usando o serviço do goo.gl. -Comment[pt_BR]=Plugin para encurtar URLs através do serviço goo.gl. +Comment[pt_BR]=Plugin para encurtar URLs com o serviço goo.gl. Comment[ru]=Модуль для сокращения ссылок с помощью службы goo.gl. +Comment[sl]=Vstavek za krajšanje URL-jev preko storitve goo.gl. Comment[sv]=Ett insticksprogram för att avkorta webbadresser via tjänsten goo.gl. +Comment[tr]=goo.gl kullanarak adresleri kısaltmaya yarayan bir eklenti. Comment[uk]=Додаток для скорочення адрес за допомогою служб goo.gl. Comment[x-test]=xxA plugin to shorten URLs via the goo.gl service.xx Comment[zh_CN]=通过 goo.gl 服务缩短 URL 的插件。 diff -Nru choqok-1.3/plugins/shorteners/goo_gl/goo_gl.cpp choqok-1.4/plugins/shorteners/goo_gl/goo_gl.cpp --- choqok-1.3/plugins/shorteners/goo_gl/goo_gl.cpp 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/plugins/shorteners/goo_gl/goo_gl.cpp 2013-08-31 05:51:23.000000000 +0200 @@ -79,7 +79,7 @@ } Choqok::NotifyManager::error( i18n("Malformed response\n"), i18n("Goo.gl error") ); } else { - Choqok::NotifyManager::error( i18n("Cannot create a short url.\n%1", job->errorString()), i18n("Goo.gl error") ); + Choqok::NotifyManager::error( i18n("Cannot create a short URL.\n%1", job->errorString()), i18n("Goo.gl error") ); } return url; } diff -Nru choqok-1.3/plugins/shorteners/is_gd/choqok_is_gd_config.desktop choqok-1.4/plugins/shorteners/is_gd/choqok_is_gd_config.desktop --- choqok-1.3/plugins/shorteners/is_gd/choqok_is_gd_config.desktop 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/plugins/shorteners/is_gd/choqok_is_gd_config.desktop 2013-08-31 05:51:23.000000000 +0200 @@ -13,12 +13,14 @@ Name[bs]=is.gd Name[ca]=is.gd Name[ca@valencia]=is.gd +Name[cs]=is.gd Name[da]=is.gd Name[de]=is.gd Name[el]=is.gd Name[en_GB]=is.gd Name[es]=is.gd Name[et]=is.gd +Name[fi]=is.gd Name[fr]=is.gd Name[gl]=is.gd Name[hr]=is.gd @@ -35,6 +37,7 @@ Name[pt_BR]=is.gd Name[ru]=is.gd Name[sk]=is.gd +Name[sl]=is.gd Name[sv]=is.gd Name[tr]=is.gd Name[uk]=is.gd diff -Nru choqok-1.3/plugins/shorteners/is_gd/choqok_is_gd.desktop choqok-1.4/plugins/shorteners/is_gd/choqok_is_gd.desktop --- choqok-1.3/plugins/shorteners/is_gd/choqok_is_gd.desktop 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/plugins/shorteners/is_gd/choqok_is_gd.desktop 2013-08-31 05:51:23.000000000 +0200 @@ -19,12 +19,14 @@ Name[bs]=is.gd Name[ca]=is.gd Name[ca@valencia]=is.gd +Name[cs]=is.gd Name[da]=is.gd Name[de]=is.gd Name[el]=is.gd Name[en_GB]=is.gd Name[es]=is.gd Name[et]=is.gd +Name[fi]=is.gd Name[fr]=is.gd Name[gl]=is.gd Name[hr]=is.gd @@ -41,6 +43,7 @@ Name[pt_BR]=is.gd Name[ru]=is.gd Name[sk]=is.gd +Name[sl]=is.gd Name[sv]=is.gd Name[tr]=is.gd Name[uk]=is.gd @@ -52,14 +55,15 @@ Comment[bs]=Priključak koji skraćuje URL-ove pomoću servisa is.gd. Comment[ca]=Un connector per escurçar URL a través del servei is.gd. Comment[ca@valencia]=Un connector per escurçar URL a través del servei is.gd. +Comment[cs]=Zásuvný modul pro zkracování URL s použitím služby is.gd. Comment[da]=Et plugin til at afkorte URL'er via tjenesten is.gd. Comment[de]=Ein Modul, um Adressen (URLs) mit Hilfe des is.gd-Dienstes zu kürzen Comment[el]=Πρόσθετο συντόμευσης για URL με την υπηρεσία is.gd Comment[en_GB]=A plugin to shorten URLs via the is.gd service. -Comment[es]=Un complemento para acortar los URL por medio del servicio de is.gd. +Comment[es]=Un complemento para acortar las URL por medio del servicio de is.gd. Comment[et]=Plugin URL-ide lühendamiseks is.gd teenuse abil. Comment[fi]=Liitännäinen verkko-osoitteiden lyhentämiseen is.gd-palvelun kautta. -Comment[fr]=Un module externe pour raccourcir les URL via le service is.gd. +Comment[fr]=Un module externe pour raccourcir les URL grâce au service « is.gd ». Comment[gl]=Un engadido para abreviar URL mediante o servizo is.gd. Comment[hr]=Priključak koji skraćuje URL-ove pomoću servisa is.gd. Comment[hu]=Bővítmény hivatkozások rövidítéséhez az is.gd szolgáltatással. @@ -72,8 +76,9 @@ Comment[pa]=is.gd ਸਰਵਿਸ ਰਾਹੀਂ URL ਛੋਟੇ ਕਰਨ ਲਈ ਪਲੱਗਇਨ Comment[pl]=Wtyczka do skracania adresów URL przy pomocy serwisu is.gd. Comment[pt]=Um 'plugin' para reduzir os URL's, usando o serviço do is.gd. -Comment[pt_BR]=Plugin para encurtar URLs através do serviço is.gd. +Comment[pt_BR]=Plugin para encurtar URLs com o serviço is.gd. Comment[ru]=Модуль для сокращения ссылок с помощью службы is.gd. +Comment[sl]=Vstavek za krajšanje URL-jev preko storitve is.gd. Comment[sv]=Ett insticksprogram för att avkorta webbadresser via tjänsten is.gd. Comment[tr]=Is.gd kullanarak adresleri kısaltmaya yarayan bir eklenti. Comment[uk]=Додаток для скорочення адрес за допомогою служб is.gd. diff -Nru choqok-1.3/plugins/shorteners/is_gd/is_gd.cpp choqok-1.4/plugins/shorteners/is_gd/is_gd.cpp --- choqok-1.3/plugins/shorteners/is_gd/is_gd.cpp 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/plugins/shorteners/is_gd/is_gd.cpp 2013-08-31 05:51:23.000000000 +0200 @@ -84,7 +84,7 @@ } } else { - Choqok::NotifyManager::error( i18n("Cannot create a short url.\n%1", job->errorString()), i18n("is.gd error") ); + Choqok::NotifyManager::error( i18n("Cannot create a short URL.\n%1", job->errorString()), i18n("is.gd error") ); } return url; } diff -Nru choqok-1.3/plugins/shorteners/three_ly/choqok_three_ly.desktop choqok-1.4/plugins/shorteners/three_ly/choqok_three_ly.desktop --- choqok-1.3/plugins/shorteners/three_ly/choqok_three_ly.desktop 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/plugins/shorteners/three_ly/choqok_three_ly.desktop 2013-08-31 05:51:23.000000000 +0200 @@ -9,7 +9,7 @@ X-KDE-PluginInfo-Email=gmlastik@gmail.com X-KDE-PluginInfo-Name=choqok_three_ly X-KDE-PluginInfo-Version=0.1 -X-KDE-PluginInfo-Website=http://choqok.org +X-KDE-PluginInfo-Website=http://choqok.gnufolks.org X-KDE-PluginInfo-Category=Shorteners X-KDE-PluginInfo-Depends= X-KDE-PluginInfo-License=GPL @@ -19,12 +19,14 @@ Name[bs]=3.ly Name[ca]=3.ly Name[ca@valencia]=3.ly +Name[cs]=3.ly Name[da]=3.ly Name[de]=3.ly Name[el]=3.ly Name[en_GB]=3.ly Name[es]=3.ly Name[et]=3.ly +Name[fi]=3.ly Name[fr]=3.ly Name[gl]=3.ly Name[hr]=3.ly @@ -40,7 +42,9 @@ Name[pt_BR]=3.ly Name[ru]=3.ly Name[sk]=3.ly +Name[sl]=3.ly Name[sv]=3.ly +Name[tr]=3.ly Name[uk]=3.ly Name[x-test]=xx3.lyxx Name[zh_CN]=3.ly @@ -50,13 +54,15 @@ Comment[bs]=Priključak koji skraćuje URL-ove pomoću servisa 3.ly. Comment[ca]=Un connector per escurçar URL a través del servei 3.ly. Comment[ca@valencia]=Un connector per escurçar URL a través del servei 3.ly. +Comment[cs]=Zásuvný modul pro zkracování URL s použitím služby 3.ly. Comment[da]=Et plugin til at afkorte URL'er via tjenesten 3.ly. Comment[de]=Ein Modul, um Adressen (URLs) mit Hilfe des 3.ly-Dienstes zu kürzen Comment[el]=Πρόσθετο συντόμευσης για URL με την υπηρεσία 3.ly Comment[en_GB]=A plugin to shorten URLs via the 3.ly service. -Comment[es]=Un complemento para acortar los URL por medio del servicio de 3.ly. +Comment[es]=Un complemento para acortar las URL por medio del servicio de 3.ly. Comment[et]=Plugin URL-ide lühendamiseks 3.ly teenuse abil. -Comment[fr]=Un module externe pour raccourcir les URL via le service 3.ly. +Comment[fi]=Liitännäinen verkko-osoitteiden lyhentämiseen 3.ly-palvelun kautta. +Comment[fr]=Un module externe pour raccourcir les URL grâce au service « 3.ly ». Comment[gl]=Un engadido para abreviar URL mediante o servizo 3.ly. Comment[hr]=Priključak koji skraćuje URL-ove pomoću servisa 3.ly. Comment[hu]=Bővítmény hivatkozások rövidítéséhez a 3.ly szolgáltatással. @@ -68,9 +74,11 @@ Comment[pa]=3.ly ਸਰਵਿਸ ਰਾਹੀਂ URL ਛੋਟੇ ਕਰਨ ਲਈ ਪਲੱਗਇਨ Comment[pl]=Wtyczka do skracania adresów URL przy pomocy serwisu 3.ly . Comment[pt]=Um 'plugin' para reduzir os URL's, usando o serviço do 3.ly. -Comment[pt_BR]=Plugin para encurtar URLs através do serviço 3.ly. +Comment[pt_BR]=Plugin para encurtar URLs com o serviço 3.ly. Comment[ru]=Модуль для сокращения ссылок с помощью службы 3.ly. +Comment[sl]=Vstavek za krajšanje URL-jev preko storitve 3.ly. Comment[sv]=Ett insticksprogram för att avkorta webbadresser via tjänsten 3.ly. +Comment[tr]=3.ly kullanarak adresleri kısaltmaya yarayan bir eklenti. Comment[uk]=Додаток для скорочення адрес за допомогою служб 3.ly. Comment[x-test]=xxA plugin to shorten URLs via the 3.ly service.xx Comment[zh_CN]=通过 3.ly 服务缩短 URL 的插件。 diff -Nru choqok-1.3/plugins/shorteners/three_ly/three_ly.cpp choqok-1.4/plugins/shorteners/three_ly/three_ly.cpp --- choqok-1.3/plugins/shorteners/three_ly/three_ly.cpp 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/plugins/shorteners/three_ly/three_ly.cpp 2013-08-31 05:51:23.000000000 +0200 @@ -65,7 +65,7 @@ Choqok::NotifyManager::error( QString( data ), i18n("3.ly error") ); } else { - Choqok::NotifyManager::error( i18n("Cannot create a short url.\n%1", job->errorString()) ); + Choqok::NotifyManager::error( i18n("Cannot create a short URL.\n%1", job->errorString()) ); kDebug() << "Cannot create a shorten url.\t" << "KJob ERROR"; } return url; diff -Nru choqok-1.3/plugins/shorteners/tighturl/choqok_tighturl.desktop choqok-1.4/plugins/shorteners/tighturl/choqok_tighturl.desktop --- choqok-1.3/plugins/shorteners/tighturl/choqok_tighturl.desktop 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/plugins/shorteners/tighturl/choqok_tighturl.desktop 2013-08-31 05:51:23.000000000 +0200 @@ -19,12 +19,14 @@ Name[bs]=TightUrl Name[ca]=TightUrl Name[ca@valencia]=TightUrl +Name[cs]=TightUrl Name[da]=TightUrl Name[de]=TightUrl Name[el]=TightUrl Name[en_GB]=TightUrl Name[es]=TightUrl Name[et]=TightUrl +Name[fi]=TightUrl Name[fr]=TightUrl Name[gl]=TightUrl Name[hr]=TightUrl @@ -40,6 +42,7 @@ Name[pt]=TightUrl Name[pt_BR]=TightUrl Name[ru]=TightUrl +Name[sl]=TightUrl Name[sv]=TightUrl Name[tr]=TightUrl Name[uk]=TightUrl @@ -51,14 +54,15 @@ Comment[bs]=Priključak koji skraćuje URL-ove pomoću servisa TightUrl. Comment[ca]=Un connector per escurçar URL a través del servei TightURL. Comment[ca@valencia]=Un connector per escurçar URL a través del servei TightURL. +Comment[cs]=Zásuvný modul pro zkracování URL s použitím služby TightURL. Comment[da]=Et plugin til at afkorte URL'er via tjenesten TightUrl. Comment[de]=Ein Modul, um Adressen (URLs) mit Hilfe des TightURL-Dienstes zu kürzen Comment[el]=Πρόσθετο συντόμευσης για URL με την υπηρεσία TightUrl Comment[en_GB]=A plugin to shorten URLs via the TightURL service. -Comment[es]=Un complemento para acortar los URL por medio del servicio de TightURL. +Comment[es]=Un complemento para acortar las URL por medio del servicio de TightURL. Comment[et]=Plugin URL-ide lühendamiseks TightURL'i teenuse abil. Comment[fi]=Liitännäinen verkko-osoitteiden lyhentämiseen TightURL-palvelun kautta. -Comment[fr]=Un module externe pour raccourcir les URL via le service TightUrl. +Comment[fr]=Un module externe pour raccourcir les URL grâce au service « TightUrl ». Comment[gl]=Un engadido para abreviar URL mediante o servizo TightURL. Comment[hr]=Priključak koji skraćuje URL-ove pomoću servisa TightUrl. Comment[hu]=Bővítmény hivatkozások rövidítéséhez az u TightURL szolgáltatással. @@ -71,8 +75,9 @@ Comment[pa]=TightURL ਸਰਵਿਸ ਰਾਹੀਂ URL ਛੋਟੇ ਕਰਨ ਲਈ ਪਲੱਗਇਨ Comment[pl]= Wtyczka do skracania adresów URL przy pomocy serwisu TightURL. Comment[pt]=Um 'plugin' para reduzir os URL's, usando o serviço do TightUrl. -Comment[pt_BR]=Plugin para encurtar URLs através do serviço TightUrl. +Comment[pt_BR]=Plugin para encurtar URLs com o serviço TightURL. Comment[ru]=Модуль для сокращения ссылок с помощью службы TightURL. +Comment[sl]=Vstavek za krajšanje URL-jev preko storitve TightURL. Comment[sv]=Ett insticksprogram för att avkorta webbadresser via tjänsten TightUrl. Comment[tr]=TightURL kullanarak adresleri kısaltmak için bir eklenti. Comment[uk]=Додаток для скорочення адрес за допомогою служб TightURL. diff -Nru choqok-1.3/plugins/shorteners/tinyarro_ws/choqok_tinyarro_ws_config.desktop choqok-1.4/plugins/shorteners/tinyarro_ws/choqok_tinyarro_ws_config.desktop --- choqok-1.3/plugins/shorteners/tinyarro_ws/choqok_tinyarro_ws_config.desktop 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/plugins/shorteners/tinyarro_ws/choqok_tinyarro_ws_config.desktop 2013-08-31 05:51:23.000000000 +0200 @@ -13,12 +13,14 @@ Name[bs]=tinyarro.ws Name[ca]=tinyarro.ws Name[ca@valencia]=tinyarro.ws +Name[cs]=tinyarrow.ws Name[da]=tinyarro.ws Name[de]=tinyarro.ws Name[el]=tinyarro.ws Name[en_GB]=tinyarro.ws Name[es]=tinyarro.ws Name[et]=tinyarro.ws +Name[fi]=tinyarro.ws Name[fr]=tinyarro.ws Name[gl]=tinyarro.ws Name[hr]=tinyarro.ws @@ -34,7 +36,9 @@ Name[pt_BR]=tinyarro.ws Name[ru]=tinyarro.ws Name[sk]=tinyarro.ws +Name[sl]=tinyarro.ws Name[sv]=tinyarro.ws +Name[tr]=tinyarro.ws Name[ug]=tinyarro.ws Name[uk]=tinyarro.ws Name[x-test]=xxtinyarro.wsxx @@ -45,12 +49,14 @@ Comment[bs]=tinyarro.ws Comment[ca]=tinyarro.ws Comment[ca@valencia]=tinyarro.ws +Comment[cs]=tinyarro.ws Comment[da]=tinyarro.ws Comment[de]=tinyarro.ws Comment[el]=tinyarro.ws Comment[en_GB]=tinyarro.ws Comment[es]=tinyarro.ws Comment[et]=tinyarro.ws +Comment[fi]=tinyarro.ws Comment[fr]=tinyarro.ws Comment[gl]=tinyarro.ws Comment[hr]=tinyarro.ws @@ -66,7 +72,9 @@ Comment[pt_BR]=tinyarro.ws Comment[ru]=tinyarro.ws Comment[sk]=tinyarro.ws +Comment[sl]=tinyarro.ws Comment[sv]=tinyarro.ws +Comment[tr]=tinyarro.ws Comment[ug]=tinyarro.ws Comment[uk]=tinyarro.ws Comment[x-test]=xxtinyarro.wsxx diff -Nru choqok-1.3/plugins/shorteners/tinyarro_ws/choqok_tinyarro_ws.desktop choqok-1.4/plugins/shorteners/tinyarro_ws/choqok_tinyarro_ws.desktop --- choqok-1.3/plugins/shorteners/tinyarro_ws/choqok_tinyarro_ws.desktop 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/plugins/shorteners/tinyarro_ws/choqok_tinyarro_ws.desktop 2013-08-31 05:51:23.000000000 +0200 @@ -9,7 +9,7 @@ X-KDE-PluginInfo-Email=gmlastik@gmail.com X-KDE-PluginInfo-Name=choqok_tinyarro_ws X-KDE-PluginInfo-Version=0.1 -X-KDE-PluginInfo-Website=http://choqok.org +X-KDE-PluginInfo-Website=http://choqok.gnufolks.org X-KDE-PluginInfo-Category=Shorteners X-KDE-PluginInfo-Depends= X-KDE-PluginInfo-License=GPL @@ -19,12 +19,14 @@ Name[bs]=tinyarro.ws Name[ca]=tinyarro.ws Name[ca@valencia]=tinyarro.ws +Name[cs]=tinyarrow.ws Name[da]=tinyarro.ws Name[de]=tinyarro.ws Name[el]=tinyarro.ws Name[en_GB]=tinyarro.ws Name[es]=tinyarro.ws Name[et]=tinyarro.ws +Name[fi]=tinyarro.ws Name[fr]=tinyarro.ws Name[gl]=tinyarro.ws Name[hr]=tinyarro.ws @@ -40,7 +42,9 @@ Name[pt_BR]=tinyarro.ws Name[ru]=tinyarro.ws Name[sk]=tinyarro.ws +Name[sl]=tinyarro.ws Name[sv]=tinyarro.ws +Name[tr]=tinyarro.ws Name[ug]=tinyarro.ws Name[uk]=tinyarro.ws Name[x-test]=xxtinyarro.wsxx @@ -51,13 +55,15 @@ Comment[bs]=Dodatak za skraćenje URL pomoću tinyarro.ws servisa. Comment[ca]=Un connector per escurçar URL a través del servei tinyarro.ws. Comment[ca@valencia]=Un connector per escurçar URL a través del servei tinyarro.ws. +Comment[cs]=Zásuvný modul pro zkracování URL s použitím služby tinyarro.ws. Comment[da]=Et plugin til at afkorte URL'er via tjenesten tinyarro.ws. Comment[de]=Ein Modul, um Adressen (URLs) mit Hilfe des tinyarro.ws-Dienstes zu kürzen Comment[el]=Πρόσθετο συντόμευσης για URL με την υπηρεσία tinyarro.ws Comment[en_GB]=A plugin to shorten URLs via the tinyarro.ws service. -Comment[es]=Un complemento para acortar los URL por medio del servicio de tinyarro.ws. +Comment[es]=Un complemento para acortar las URL por medio del servicio de tinyarro.ws. Comment[et]=Plugin URL-ide lühendamiseks tinyarro.ws teenuse abil. -Comment[fr]=Un module externe pour raccourcir les URL via le service tinyarro.ws. +Comment[fi]=Liitännäinen verkko-osoitteiden lyhentämiseen tinyarro.ws-palvelun kautta. +Comment[fr]=Un module externe pour raccourcir les URL grâce au service « tinyarro.ws ». Comment[gl]=Un engadido para abreviar URL mediante o servizo tinyarro.ws. Comment[hr]=Priključak koji skraćuje URL-ove pomoću servisa tinyarro.ws. Comment[hu]=Bővítmény hivatkozások rövidítéséhez az tinyarro.ws szolgáltatással. @@ -69,9 +75,11 @@ Comment[pa]=tinyyarro.ws ਸਰਵਿਸ ਰਾਹੀਂ URL ਛੋਟੇ ਕਰਨ ਲਈ ਪਲੱਗਇਨ Comment[pl]=Wtyczka do skracania adresów URL przy pomocy serwisu tinyarro.ws. Comment[pt]=Um 'plugin' para reduzir os URL's, usando o serviço do tinyarro.ws. -Comment[pt_BR]=Plugin para encurtar URLs através do serviço tinyarro.ws. +Comment[pt_BR]=Plugin para encurtar URLs com o serviço tinyarro.ws. Comment[ru]=Модуль для сокращения ссылок с помощью службы tinyarro.ws. +Comment[sl]=Vstavek za krajšanje URL-jev preko storitve tinyarro.ws. Comment[sv]=Ett insticksprogram för att avkorta webbadresser via tjänsten tinyarro.ws. +Comment[tr]=tinyarro.ws kullanarak adresleri kısaltmaya yarayan bir eklenti. Comment[uk]=Додаток для скорочення адрес за допомогою служби tinyarro.ws. Comment[x-test]=xxA plugin to shorten URLs via the tinyarro.ws service.xx Comment[zh_CN]=通过 tinyarro.ws 服务缩短 URL 的插件。 diff -Nru choqok-1.3/plugins/shorteners/tinyarro_ws/tinyarro_ws.cpp choqok-1.4/plugins/shorteners/tinyarro_ws/tinyarro_ws.cpp --- choqok-1.3/plugins/shorteners/tinyarro_ws/tinyarro_ws.cpp 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/plugins/shorteners/tinyarro_ws/tinyarro_ws.cpp 2013-08-31 05:51:23.000000000 +0200 @@ -72,7 +72,7 @@ } Choqok::NotifyManager::error( output, i18n( "Tinyarro.ws error" ) ); } else { - Choqok::NotifyManager::error( i18n( "Cannot create a short url.\n%1", job->errorString() ) ); + Choqok::NotifyManager::error( i18n( "Cannot create a short URL.\n%1", job->errorString() ) ); } return url; } diff -Nru choqok-1.3/plugins/shorteners/ur1_ca/choqok_ur1_ca.desktop choqok-1.4/plugins/shorteners/ur1_ca/choqok_ur1_ca.desktop --- choqok-1.3/plugins/shorteners/ur1_ca/choqok_ur1_ca.desktop 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/plugins/shorteners/ur1_ca/choqok_ur1_ca.desktop 2013-08-31 05:51:23.000000000 +0200 @@ -19,12 +19,14 @@ Name[bs]=ur1.ca Name[ca]=ur1.ca Name[ca@valencia]=ur1.ca +Name[cs]=ur1.ca Name[da]=ur1.ca Name[de]=ur1.ca Name[el]=ur1.ca Name[en_GB]=ur1.ca Name[es]=ur1.ca Name[et]=ur1.ca +Name[fi]=ur1.ca Name[fr]=ur1.ca Name[gl]=ur1.ca Name[hr]=ur1.ca @@ -41,6 +43,7 @@ Name[pt_BR]=ur1.ca Name[ru]=ur1.ca Name[sk]=ur1.ca +Name[sl]=ur1.ca Name[sv]=ur1.ca Name[tr]=ur1.ca Name[uk]=ur1.ca @@ -52,13 +55,15 @@ Comment[bs]=Priključak koji skraćuje URL-ove pomoću servisa ur1.ca. Comment[ca]=Un connector per escurçar URL a través del servei ur1.ca. Comment[ca@valencia]=Un connector per escurçar URL a través del servei ur1.ca. +Comment[cs]=Zásuvný modul pro zkracování URL s použitím služby ur1.ca. Comment[da]=Et plugin til at afkorte URL'er via tjenesten ur1.ca. Comment[de]=Ein Modul, um Adressen (URLs) mit Hilfe des ur1.ca-Dienstes zu kürzen Comment[el]=Πρόσθετο συντόμευσης για URL με την υπηρεσία ur1.ca Comment[en_GB]=A plugin to shorten URLs via the ur1.ca service. -Comment[es]=Un complemento para acortar los URL por medio del servicio de ur1.ca +Comment[es]=Un complemento para acortar las URL por medio del servicio de ur1.ca Comment[et]=Plugin URL-ide lühendamiseks ur1.ca teenuse abil. -Comment[fr]=Un module externe pour raccourcir les URL via le service ur1.ca. +Comment[fi]=Liitännäinen verkko-osoitteiden lyhentämiseen ur1.ca-palvelun kautta. +Comment[fr]=Un module externe pour raccourcir les URL au service « ur1.ca ». Comment[gl]=Un engadido para abreviar URL mediante o servizo ur1.ca Comment[hr]=Priključak koji skraćuje URL-ove pomoću servisa ur1.ca. Comment[hu]=Bővítmény hivatkozások rövidítéséhez az ur1.ca szolgáltatással. @@ -71,9 +76,11 @@ Comment[pa]=ur1.ca ਸਰਵਿਸ ਰਾਹੀਂ URL ਛੋਟੇ ਕਰਨ ਲਈ ਪਲੱਗਇਨ Comment[pl]=Wtyczka do skracania adresów URL przy pomocy serwisu ur1.ca . Comment[pt]=Um 'plugin' para reduzir os URL's, usando o serviço do ur1.ca. -Comment[pt_BR]=Plugin para encurtar URLs através do serviço ur1.ca. +Comment[pt_BR]=Plugin para encurtar URLs com o serviço ur1.ca. Comment[ru]=Модуль для сокращения ссылок с помощью службы ur1.ca. +Comment[sl]=Vstavek za krajšanje URL-jev preko storitve url.ca. Comment[sv]=Ett insticksprogram för att avkorta webbadresser via tjänsten url.ca. +Comment[tr]=ur1.ca kullanarak adresleri kısaltmaya yarayan bir eklenti. Comment[uk]=Додаток для скорочення адрес за допомогою служб ur1.ca. Comment[x-test]=xxA plugin to shorten URLs via the ur1.ca service.xx Comment[zh_CN]=通过 ur1.ca 服务缩短 URL 的插件。 diff -Nru choqok-1.3/plugins/shorteners/urls_io/choqok_urls_io.desktop choqok-1.4/plugins/shorteners/urls_io/choqok_urls_io.desktop --- choqok-1.3/plugins/shorteners/urls_io/choqok_urls_io.desktop 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/plugins/shorteners/urls_io/choqok_urls_io.desktop 2013-08-31 05:51:23.000000000 +0200 @@ -19,12 +19,14 @@ Name[bs]=urls.io Name[ca]=urls.io Name[ca@valencia]=urls.io +Name[cs]=urls.io Name[da]=urls.io Name[de]=urls.io Name[el]=urls.io Name[en_GB]=urls.io Name[es]=urls.io Name[et]=urls.io +Name[fi]=urls.io Name[fr]=urls.io Name[gl]=urls.io Name[hr]=urls.io @@ -41,6 +43,7 @@ Name[pt_BR]=urls.io Name[ru]=urls.io Name[sk]=urls.io +Name[sl]=urls.io Name[sv]=urls.io Name[tr]=urls.io Name[uk]=urls.io @@ -52,13 +55,15 @@ Comment[bs]=Priključak koji skraćuje URL-ove pomoću servisa urls.io. Comment[ca]=Un connector per escurçar URL a través del servei urls.io. Comment[ca@valencia]=Un connector per escurçar URL a través del servei urls.io. +Comment[cs]=Zásuvný modul pro zkracování URL s použitím služby urls.io. Comment[da]=Et plugin til at afkorte URL'er via tjenesten urls.jo. Comment[de]=Ein Modul, um Adressen (URLs) mit Hilfe des urls.io-Dienstes zu kürzen Comment[el]=Πρόσθετο συντόμευσης για URL με την υπηρεσία urls.io Comment[en_GB]=A plugin to shorten URLs via the urls.io service. -Comment[es]=Un complemento para acortar los URL por medio del servicio de urls.io. +Comment[es]=Un complemento para acortar las URL por medio del servicio de urls.io. Comment[et]=Plugin URL-ide lühendamiseks urls.io teenuse abil. -Comment[fr]=Un module externe pour raccourcir les URL via le service urls.io. +Comment[fi]=Liitännäinen verkko-osoitteiden lyhentämiseen urls.io-palvelun kautta. +Comment[fr]=Un module externe pour raccourcir les URL grâce au service « urls.io ». Comment[gl]=Un engadido para abreviar URL mediante o servizo urls.io. Comment[hr]=Priključak koji skraćuje URL-ove pomoću servisa urls.io. Comment[hu]=Bővítmény hivatkozások rövidítéséhez az urls.io szolgáltatással. @@ -71,9 +76,11 @@ Comment[pa]=urls.io ਸਰਵਿਸ ਰਾਹੀਂ URL ਛੋਟੇ ਕਰਨ ਲਈ ਪਲੱਗਇਨ Comment[pl]=Wtyczka do skracania adresów URL przy pomocy serwisu urls.io . Comment[pt]=Um 'plugin' para reduzir os URL's, usando o serviço do urls.io. -Comment[pt_BR]=Plugin para encurtar URLs através do serviço urls.io. +Comment[pt_BR]=Plugin para encurtar URLs com o serviço urls.io. Comment[ru]=Модуль для сокращения ссылок с помощью службы urls.io. +Comment[sl]=Vstavek za krajšanje URL-jev preko storitve urls.io. Comment[sv]=Ett insticksprogram för att avkorta webbadresser via tjänsten urls.io. +Comment[tr]=urls.iokullanarak adresleri kısaltmaya yarayan bir eklenti. Comment[uk]=Додаток для скорочення адрес за допомогою служби urls.io. Comment[x-test]=xxA plugin to shorten URLs via the urls.io service.xx Comment[zh_CN]=通过 urls.io 服务缩短 URL 的插件。 diff -Nru choqok-1.3/plugins/shorteners/ur_ly/choqok_ur_ly.desktop choqok-1.4/plugins/shorteners/ur_ly/choqok_ur_ly.desktop --- choqok-1.3/plugins/shorteners/ur_ly/choqok_ur_ly.desktop 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/plugins/shorteners/ur_ly/choqok_ur_ly.desktop 2013-08-31 05:51:23.000000000 +0200 @@ -19,12 +19,14 @@ Name[bs]=ur.ly Name[ca]=ur.ly Name[ca@valencia]=ur.ly +Name[cs]=ur.ly Name[da]=ur.ly Name[de]=ur.ly Name[el]=ur.ly Name[en_GB]=ur.ly Name[es]=ur.ly Name[et]=ur.ly +Name[fi]=ur.ly Name[fr]=ur.ly Name[gl]=ur.ly Name[hr]=ur.ly @@ -41,6 +43,7 @@ Name[pt_BR]=ur.ly Name[ru]=ur.ly Name[sk]=ur.ly +Name[sl]=ur.ly Name[sv]=ur.ly Name[tr]=ur.ly Name[uk]=ur.ly @@ -52,13 +55,15 @@ Comment[bs]=Priključak koji skraćuje URL-ove pomoću servisa ur.ly. Comment[ca]=Un connector per escurçar URL a través del servei ur.ly. Comment[ca@valencia]=Un connector per escurçar URL a través del servei ur.ly. +Comment[cs]=Zásuvný modul pro zkracování URL s použitím služby ur.ly. Comment[da]=Et plugin til at afkorte URL'er via tjenesten ur.ly. Comment[de]=Ein Modul, um Adressen (URLs) mit Hilfe des ur.ly-Dienstes zu kürzen Comment[el]=Πρόσθετο συντόμευσης για URL με την υπηρεσία ur.ly Comment[en_GB]=A plugin to shorten URLs via the ur.ly service. -Comment[es]=Un complemento para acortar los URL por medio del servicio de ur.ly. +Comment[es]=Un complemento para acortar las URL por medio del servicio de ur.ly. Comment[et]=Plugin URL-ide lühendamiseks ur.ly teenuse abil. -Comment[fr]=Un module externe pour raccourcir les URL via le service ur.ly. +Comment[fi]=Liitännäinen verkko-osoitteiden lyhentämiseen ur.ly-palvelun kautta. +Comment[fr]=Un module externe pour raccourcir les URL grâce au service « ur.ly ». Comment[gl]=Un engadido para abreviar URL mediante o servizo ur.ly. Comment[hr]=Priključak koji skraćuje URL-ove pomoću servisa ur.ly. Comment[hu]=Bővítmény hivatkozások rövidítéséhez az ur.ly szolgáltatással. @@ -71,9 +76,11 @@ Comment[pa]=ur.ly ਸਰਵਿਸ ਰਾਹੀਂ URL ਛੋਟੇ ਕਰਨ ਲਈ ਪਲੱਗਇਨ Comment[pl]=Wtyczka do skracania adresów URL przy pomocy serwisu ur.ly . Comment[pt]=Um 'plugin' para reduzir os URL's, usando o serviço do ur.ly. -Comment[pt_BR]=Plugin para encurtar URLs através do serviço ur.ly. +Comment[pt_BR]=Plugin para encurtar URLs com o serviço ur.ly. Comment[ru]=Модуль для сокращения ссылок с помощью службы ur.ly. +Comment[sl]=Vstavek za krajšanje URL-jev preko storitve ur.ly. Comment[sv]=Ett insticksprogram för att avkorta webbadresser via tjänsten url.ly. +Comment[tr]=ur.ly kullanarak adresleri kısaltmaya yarayan bir eklenti. Comment[uk]=Додаток для скорочення адрес за допомогою служб ur.ly. Comment[x-test]=xxA plugin to shorten URLs via the ur.ly service.xx Comment[zh_CN]=通过 ur.ly 服务缩短 URL 的插件。 diff -Nru choqok-1.3/plugins/shorteners/yourls/choqok_yourls_config.desktop choqok-1.4/plugins/shorteners/yourls/choqok_yourls_config.desktop --- choqok-1.3/plugins/shorteners/yourls/choqok_yourls_config.desktop 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/plugins/shorteners/yourls/choqok_yourls_config.desktop 2013-08-31 05:51:23.000000000 +0200 @@ -13,12 +13,14 @@ Name[bs]=Yourls Name[ca]=Yourls Name[ca@valencia]=Yourls +Name[cs]=Yourls Name[da]=Yourls Name[de]=Yourls Name[el]=Yourls Name[en_GB]=Yourls Name[es]=Yourls Name[et]=Yourls +Name[fi]=Yourls Name[fr]=Yourls Name[gl]=Yourls Name[hr]=Yourls @@ -34,6 +36,7 @@ Name[pt]=Yourls Name[pt_BR]=Yourls Name[ru]=Yourls +Name[sl]=Yourls Name[sv]=Yourls Name[tr]=Yourls Name[ug]=Yourls @@ -46,12 +49,14 @@ Comment[bs]=Yourls Comment[ca]=Yourls Comment[ca@valencia]=Yourls +Comment[cs]=Yourls Comment[da]=Yourls Comment[de]=Yourls Comment[el]=Yourls Comment[en_GB]=Yourls Comment[es]=Yourls Comment[et]=Yourls +Comment[fi]=Yourls Comment[fr]=Yourls Comment[gl]=Yourls Comment[hr]=Yourls @@ -67,6 +72,7 @@ Comment[pt]=Yourls Comment[pt_BR]=Yourls Comment[ru]=Yourls +Comment[sl]=Yourls Comment[sv]=Yourls Comment[tr]=Yourls Comment[ug]=Yourls diff -Nru choqok-1.3/plugins/shorteners/yourls/choqok_yourls.desktop choqok-1.4/plugins/shorteners/yourls/choqok_yourls.desktop --- choqok-1.3/plugins/shorteners/yourls/choqok_yourls.desktop 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/plugins/shorteners/yourls/choqok_yourls.desktop 2013-08-31 05:51:23.000000000 +0200 @@ -19,12 +19,14 @@ Name[bs]=Yourls Name[ca]=Yourls Name[ca@valencia]=Yourls +Name[cs]=Yourls Name[da]=Yourls Name[de]=Yourls Name[el]=Yourls Name[en_GB]=Yourls Name[es]=Yourls Name[et]=Yourls +Name[fi]=Yourls Name[fr]=Yourls Name[gl]=Yourls Name[hr]=Yourls @@ -40,6 +42,7 @@ Name[pt]=Yourls Name[pt_BR]=Yourls Name[ru]=Yourls +Name[sl]=Yourls Name[sv]=Yourls Name[tr]=Yourls Name[ug]=Yourls @@ -52,13 +55,15 @@ Comment[bs]=Priključak koji skraćuje URL-ove pomoću servisa YourIs. Comment[ca]=Un connector per escurçar URL a través del servei Yourls. Comment[ca@valencia]=Un connector per escurçar URL a través del servei Yourls. +Comment[cs]=Zásuvný modul pro zkracování URL s použitím služby Yourls. Comment[da]=Et plugin til at afkorte URL'er via tjenesten Yourls. Comment[de]=Ein Modul, um Adressen (URLs) mit Hilfe des Yourls-Dienstes zu kürzen Comment[el]=Πρόσθετο συντόμευσης για URL με την υπηρεσία Yourls Comment[en_GB]=A plugin to shorten URLs via the Yourls service. -Comment[es]=Un complemento para acortar los URL por medio del servicio de Yourls. +Comment[es]=Un complemento para acortar las URL por medio del servicio de Yourls. Comment[et]=Plugin URL-ide lühendamiseks Yourlsi teenuse abil. -Comment[fr]=Un module externe pour raccourcir des URL via le service Yourls. +Comment[fi]=Liitännäinen verkko-osoitteiden lyhentämiseen Yourls-palvelun kautta. +Comment[fr]=Un module externe pour raccourcir des URL grâce au service « Yourls ». Comment[gl]=Un engadido para abreviar URL mediante o servizo Yourls. Comment[hr]=Priključak koji skraćuje URL-ove pomoću servisa Yourls. Comment[hu]=Bővítmény hivatkozások rövidítéséhez a Yourls szolgáltatással. @@ -71,9 +76,11 @@ Comment[pa]=Yourls ਸਰਵਿਸ ਰਾਹੀਂ URL ਛੋਟੇ ਕਰਨ ਲਈ ਪਲੱਗਇਨ Comment[pl]=Wtyczka do skracania adresów URL przy pomocy serwisu Yourls . Comment[pt]=Um 'plugin' para reduzir os URL's, usando o serviço do Yourls. -Comment[pt_BR]=Plugin para encurtar URLs através do serviço Yourls. +Comment[pt_BR]=Plugin para encurtar URLs com o serviço Yourls. Comment[ru]=Модуль для сокращения ссылок с помощью службы Yourls. +Comment[sl]=Vstavek za krajšanje URL-jev preko storitve Yourls. Comment[sv]=Ett insticksprogram för att avkorta webbadresser via tjänsten Yourls. +Comment[tr]=Yourls kullanarak adresleri kısaltmaya yarayan bir eklenti. Comment[uk]=Додаток для скорочення адрес за допомогою служби Yourls. Comment[x-test]=xxA plugin to shorten URLs via the Yourls service.xx Comment[zh_CN]=通过 Yourls 服务缩短 URL 的插件。 diff -Nru choqok-1.3/plugins/shorteners/yourls/yourls.cpp choqok-1.4/plugins/shorteners/yourls/yourls.cpp --- choqok-1.3/plugins/shorteners/yourls/yourls.cpp 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/plugins/shorteners/yourls/yourls.cpp 2013-08-31 05:51:23.000000000 +0200 @@ -89,7 +89,7 @@ } } else { kDebug() << "Cannot create a shorten url.\t" << "KJob ERROR"; - Choqok::NotifyManager::error( i18n("Cannot create a short url.\n%1", job->errorString()) ); + Choqok::NotifyManager::error( i18n("Cannot create a short URL.\n%1", job->errorString()) ); } return url; } diff -Nru choqok-1.3/plugins/translator/choqok_translator_config.desktop choqok-1.4/plugins/translator/choqok_translator_config.desktop --- choqok-1.3/plugins/translator/choqok_translator_config.desktop 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/plugins/translator/choqok_translator_config.desktop 2013-08-31 05:51:23.000000000 +0200 @@ -29,6 +29,7 @@ Name[hu]=Fordító Name[it]=Traduttore Name[km]=អ្នក​បកប្រែ +Name[lt]=Vertėjas Name[nb]=Oversetter Name[nds]=Översetter Name[nl]=Vertaler @@ -38,7 +39,9 @@ Name[pt_BR]=Tradutor Name[ru]=Переводчик Name[sk]=Prekladač +Name[sl]=Prevajalnik Name[sv]=Översättare +Name[tr]=Çevirmen Name[ug]=تەرجىمان Name[uk]=Перекладач Name[x-test]=xxTranslatorxx @@ -49,14 +52,15 @@ Comment[bs]=Prevedi poruke na svoj jezik (Koristeći Google® Translate) Comment[ca]=Tradueix els missatges al vostre llenguatge (a través de Google® Translate) Comment[ca@valencia]=Tradueix els missatges al vostre llenguatge (a través de Google® Translate) +Comment[cs]=Přeložit příspěvky do vašeho jazyka (Podporováno Google® Translate) Comment[da]=Oversæt indlæg til dit sprog (baseret på Google® Translate) Comment[de]=Nachrichten in Ihre Sprache übersetzen (verwendet Google Translate) Comment[el]=Μεταφράση αναρτήσεων στη γλώσσα σας (Powered by Google® Translate) Comment[en_GB]=Translate posts into your language (Powered by Google® Translate) -Comment[es]=Traducir mensajes a su idioma (funciona con Google® Translate) +Comment[es]=Traducir las publicaciones a su idioma (Basado en Google® Translate) Comment[et]=Postituste tõlkimine sinu keelde (Google® Translate'i abil) -Comment[fr]=Traduit les billets dans votre langue (optimisé par Google® Translate) -Comment[gl]=Traducir os artigos á súa lingua (Grazas a Google® Translate) +Comment[fr]=Traduit les billets dans votre langue (optimisé par « Google® Translate ») +Comment[gl]=Traducir as mensaxes á súa lingua (mediante Google® Translate) Comment[hu]=Bejegyzések lefordítása az Ön nyelvére a Google® Translate használatával Comment[it]=Traduce i messaggi nella tua lingua (Powered by Google® Translate) Comment[km]=បកប្រែ​ការ​ប្រកាស​ទៅ​ជា​ភាសា​របស់​អ្នក (គាំទ្រ​ដោយ Google® Translate) @@ -66,10 +70,12 @@ Comment[pa]=ਪੋਸਟ ਨੂੰ ਆਪਣੀ ਭਾਸ਼ਾ ਵਿੱਚ ਅਨੁਵਾਦ ਕਰੋ (Google® Translate ਦੀ ਮੱਦਦ ਨਾਲ) Comment[pl]=Przetłumacz posty na swój język (Zapewnia Google® Tłumacz) Comment[pt]=Traduzir as publicações para a sua língua (Suportado pelo Google® Translate) -Comment[pt_BR]=Traduz as mensagens para o seu idioma (Suportado pelo Google® Tradutor) +Comment[pt_BR]=Traduz as mensagens para o seu idioma (com uso do Google® Tradutor) Comment[ru]=Перевод сообщений на ваш язык (используется Переводчик Google®) +Comment[sl]=Prevedite objave v vaš jezik (uporablja Google® Translate) Comment[sv]=Översätter inlägg till ditt modersmål (med hjälp av Google® översättning) +Comment[tr]=Gönderimleri dilinize çebirin (Google® Çeviri ile yapılır) Comment[uk]=Переклад дописів вашою мовою (за допомогою Google® Перекладач) Comment[x-test]=xxTranslate posts into your language (Powered by Google® Translate)xx -Comment[zh_CN]=将状态翻译为您的语言(由 Google® 翻译驱动) +Comment[zh_CN]=将状态翻译为您的语言 (由 Google® 翻译驱动) Comment[zh_TW]=將文章翻譯成您的語言(使用 Google® 翻譯) diff -Nru choqok-1.3/plugins/translator/choqok_translator.desktop choqok-1.4/plugins/translator/choqok_translator.desktop --- choqok-1.3/plugins/translator/choqok_translator.desktop 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/plugins/translator/choqok_translator.desktop 2013-08-31 05:51:23.000000000 +0200 @@ -34,6 +34,7 @@ Name[hu]=Fordító Name[it]=Traduttore Name[km]=អ្នក​បកប្រែ +Name[lt]=Vertėjas Name[nb]=Oversetter Name[nds]=Översetter Name[nl]=Vertaler @@ -43,7 +44,9 @@ Name[pt_BR]=Tradutor Name[ru]=Переводчик Name[sk]=Prekladač +Name[sl]=Prevajalnik Name[sv]=Översättare +Name[tr]=Çevirmen Name[ug]=تەرجىمان Name[uk]=Перекладач Name[x-test]=xxTranslatorxx @@ -54,14 +57,15 @@ Comment[bs]=Prevedi poruke na svoj jezik (Koristeći Google® Translate) Comment[ca]=Tradueix els missatges al vostre llenguatge (a través de Google® Translate) Comment[ca@valencia]=Tradueix els missatges al vostre llenguatge (a través de Google® Translate) +Comment[cs]=Přeložit příspěvky do vašeho jazyka (Podporováno Google® Translate) Comment[da]=Oversæt indlæg til dit sprog (baseret på Google® Translate) Comment[de]=Nachrichten in Ihre Sprache übersetzen (verwendet Google Translate) Comment[el]=Μεταφράση αναρτήσεων στη γλώσσα σας (Powered by Google® Translate) Comment[en_GB]=Translate posts into your language (Powered by Google® Translate) -Comment[es]=Traducir mensajes a su idioma (funciona con Google® Translate) +Comment[es]=Traducir las publicaciones a su idioma (Basado en Google® Translate) Comment[et]=Postituste tõlkimine sinu keelde (Google® Translate'i abil) -Comment[fr]=Traduit les billets dans votre langue (optimisé par Google® Translate) -Comment[gl]=Traducir os artigos á súa lingua (Grazas a Google® Translate) +Comment[fr]=Traduit les billets dans votre langue (optimisé par « Google® Translate ») +Comment[gl]=Traducir as mensaxes á súa lingua (mediante Google® Translate) Comment[hu]=Bejegyzések lefordítása az Ön nyelvére a Google® Translate használatával Comment[it]=Traduce i messaggi nella tua lingua (Powered by Google® Translate) Comment[km]=បកប្រែ​ការ​ប្រកាស​ទៅ​ជា​ភាសា​របស់​អ្នក (គាំទ្រ​ដោយ Google® Translate) @@ -71,10 +75,12 @@ Comment[pa]=ਪੋਸਟ ਨੂੰ ਆਪਣੀ ਭਾਸ਼ਾ ਵਿੱਚ ਅਨੁਵਾਦ ਕਰੋ (Google® Translate ਦੀ ਮੱਦਦ ਨਾਲ) Comment[pl]=Przetłumacz posty na swój język (Zapewnia Google® Tłumacz) Comment[pt]=Traduzir as publicações para a sua língua (Suportado pelo Google® Translate) -Comment[pt_BR]=Traduz as mensagens para o seu idioma (Suportado pelo Google® Tradutor) +Comment[pt_BR]=Traduz as mensagens para o seu idioma (com uso do Google® Tradutor) Comment[ru]=Перевод сообщений на ваш язык (используется Переводчик Google®) +Comment[sl]=Prevedite objave v vaš jezik (uporablja Google® Translate) Comment[sv]=Översätter inlägg till ditt modersmål (med hjälp av Google® översättning) +Comment[tr]=Gönderimleri dilinize çebirin (Google® Çeviri ile yapılır) Comment[uk]=Переклад дописів вашою мовою (за допомогою Google® Перекладач) Comment[x-test]=xxTranslate posts into your language (Powered by Google® Translate)xx -Comment[zh_CN]=将状态翻译为您的语言(由 Google® 翻译驱动) +Comment[zh_CN]=将状态翻译为您的语言 (由 Google® 翻译驱动) Comment[zh_TW]=將文章翻譯成您的語言(使用 Google® 翻譯) diff -Nru choqok-1.3/plugins/untiny/choqok_untiny_config.desktop choqok-1.4/plugins/untiny/choqok_untiny_config.desktop --- choqok-1.3/plugins/untiny/choqok_untiny_config.desktop 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/plugins/untiny/choqok_untiny_config.desktop 2013-08-31 05:51:23.000000000 +0200 @@ -14,6 +14,7 @@ Name[bs]=URL-ovi UnTinyja Name[ca]=URL UnTiny Name[ca@valencia]=URL UnTiny +Name[cs]=URL UnTiny Name[da]=UnTiny URL'er Name[de]=Verkürzung von Adressen (URLs) rückgängig machen Name[el]=Μεγέθυνση URL @@ -21,7 +22,7 @@ Name[es]=Desacortar los URL Name[et]=URL-ide väljalugemine Name[fi]=UnTiny-verkko-osoitteet -Name[fr]=URL de Untiny +Name[fr]=URLs de « Untiny » Name[gl]=URL de UnTiny Name[hr]=URL-ovi UnTinyja Name[hu]=Hivatkozáshosszabbítás @@ -34,8 +35,9 @@ Name[pa]=UnTiny URLs Name[pl]=Adresy URL UnTiny Name[pt]=Aumentar os URL's -Name[pt_BR]=Aumento de URLs +Name[pt_BR]=Expansão de URLs Name[ru]=Разворачивание ссылок +Name[sl]=UnTiny URLs Name[sv]=Webbadresser från UnTiny Name[tr]=Adresleri Kısaltma Name[uk]=Розгортання URL @@ -46,15 +48,16 @@ Comment[bg]=Разширяване на съкратени адреси и показване в подсказка Comment[bs]=Izvadi puni URL i prikaži ga kao info-oblačić Comment[ca]=Extreu l'URL complet i el mostra com a un consell -Comment[ca@valencia]=Extreu l'URL complet i el mostra com a un consell +Comment[ca@valencia]=Extrau l'URL complet i el mostra com a un consell +Comment[cs]=Extrahovat kompletní URL a ukázat jako rozšiřující popis Comment[da]=Udtræk den fulde URL og vis den som et værktøjstip Comment[de]=Verkürzte Adressen (URLs) in einer Kurzinfo vollständig anzeigen Comment[el]=Εξαγωγή πλήρους URL και εμφάνιση ως αιωρούμενου σχολίου Comment[en_GB]=Extract the full URL and show it as a tooltip -Comment[es]=Extrae el URL completo y lo muestra como un consejo +Comment[es]=Extrae la URL completo y la muestra como un consejo emergente Comment[et]=Täieliku URL-i väljalugemine ja näitamine kohtspikrina Comment[fi]=Poimi täysi URL ja näytä se työkaluvihjeenä -Comment[fr]=Extraire l'URL complet et l'afficher comme infobulle +Comment[fr]=Extraire l'URL complète et l'afficher comme une infobulle Comment[gl]=Extraer o URL completo e mostralo como mensaxe emerxente Comment[hr]=Izvadi puni URL i prikaži ga kao info-oblačić Comment[hu]=Hivatkozások kibontása és megjelenítése buboréksúgóként @@ -67,9 +70,11 @@ Comment[pa]=ਪੂਰਾ URL ਲੱਭੋ ਅਤੇ ਇਸ ਨੂੰ ਟੂਲ-ਟਿੱਪ ਵਜੋਂ ਵੇਖਾਓ Comment[pl]=Wydobądź pełen adres URL i pokaż go jako podpowiedź Comment[pt]=Extrair o URL completo e mostrá-lo como uma dica -Comment[pt_BR]=Extrai a URL completa e exibe-a como uma dica +Comment[pt_BR]=Extrai a URL completa e a exibe como uma dica Comment[ru]=Преобразует сокращённую ссылку в исходную и показывает её во всплывающей подсказке +Comment[sl]=Pretvori v poln URL in ga pokaži kot orodni namig Comment[sv]=Extrahera den fullständiga webbadressen, och visa den som ett verktygstips +Comment[tr]=Tüm URL'yi çıkar ve araç ipucu olarak göster Comment[uk]=Розгортає адреси URL і показує їх на панелі підказки Comment[x-test]=xxExtract the full URL and show it as a tooltipxx Comment[zh_CN]=展开完整 URL 并显示为工具提示 diff -Nru choqok-1.3/plugins/untiny/choqok_untiny.desktop choqok-1.4/plugins/untiny/choqok_untiny.desktop --- choqok-1.3/plugins/untiny/choqok_untiny.desktop 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/plugins/untiny/choqok_untiny.desktop 2013-08-31 05:51:23.000000000 +0200 @@ -19,6 +19,7 @@ Name[bs]=URL-ovi UnTinyja Name[ca]=URL UnTiny Name[ca@valencia]=URL UnTiny +Name[cs]=URL UnTiny Name[da]=UnTiny URL'er Name[de]=Verkürzung von Adressen (URLs) rückgängig machen Name[el]=Μεγέθυνση URL @@ -26,7 +27,7 @@ Name[es]=Desacortar los URL Name[et]=URL-ide väljalugemine Name[fi]=UnTiny-verkko-osoitteet -Name[fr]=URL de Untiny +Name[fr]=URLs de « Untiny » Name[gl]=URL de UnTiny Name[hr]=URL-ovi UnTinyja Name[hu]=Hivatkozáshosszabbítás @@ -39,8 +40,9 @@ Name[pa]=UnTiny URLs Name[pl]=Adresy URL UnTiny Name[pt]=Aumentar os URL's -Name[pt_BR]=Aumento de URLs +Name[pt_BR]=Expansão de URLs Name[ru]=Разворачивание ссылок +Name[sl]=UnTiny URLs Name[sv]=Webbadresser från UnTiny Name[tr]=Adresleri Kısaltma Name[uk]=Розгортання URL @@ -51,15 +53,16 @@ Comment[bg]=Разширяване на съкратени адреси и показване в подсказка Comment[bs]=Izvadi puni URL i prikaži ga kao info-oblačić Comment[ca]=Extreu l'URL complet i el mostra com a un consell -Comment[ca@valencia]=Extreu l'URL complet i el mostra com a un consell +Comment[ca@valencia]=Extrau l'URL complet i el mostra com a un consell +Comment[cs]=Extrahovat kompletní URL a ukázat jako rozšiřující popis Comment[da]=Udtræk den fulde URL og vis den som et værktøjstip Comment[de]=Verkürzte Adressen (URLs) in einer Kurzinfo vollständig anzeigen Comment[el]=Εξαγωγή πλήρους URL και εμφάνιση ως αιωρούμενου σχολίου Comment[en_GB]=Extract the full URL and show it as a tooltip -Comment[es]=Extrae el URL completo y lo muestra como un consejo +Comment[es]=Extrae la URL completo y la muestra como un consejo emergente Comment[et]=Täieliku URL-i väljalugemine ja näitamine kohtspikrina Comment[fi]=Poimi täysi URL ja näytä se työkaluvihjeenä -Comment[fr]=Extraire l'URL complet et l'afficher comme infobulle +Comment[fr]=Extraire l'URL complète et l'afficher comme une infobulle Comment[gl]=Extraer o URL completo e mostralo como mensaxe emerxente Comment[hr]=Izvadi puni URL i prikaži ga kao info-oblačić Comment[hu]=Hivatkozások kibontása és megjelenítése buboréksúgóként @@ -72,9 +75,11 @@ Comment[pa]=ਪੂਰਾ URL ਲੱਭੋ ਅਤੇ ਇਸ ਨੂੰ ਟੂਲ-ਟਿੱਪ ਵਜੋਂ ਵੇਖਾਓ Comment[pl]=Wydobądź pełen adres URL i pokaż go jako podpowiedź Comment[pt]=Extrair o URL completo e mostrá-lo como uma dica -Comment[pt_BR]=Extrai a URL completa e exibe-a como uma dica +Comment[pt_BR]=Extrai a URL completa e a exibe como uma dica Comment[ru]=Преобразует сокращённую ссылку в исходную и показывает её во всплывающей подсказке +Comment[sl]=Pretvori v poln URL in ga pokaži kot orodni namig Comment[sv]=Extrahera den fullständiga webbadressen, och visa den som ett verktygstips +Comment[tr]=Tüm URL'yi çıkar ve araç ipucu olarak göster Comment[uk]=Розгортає адреси URL і показує їх на панелі підказки Comment[x-test]=xxExtract the full URL and show it as a tooltipxx Comment[zh_CN]=展开完整 URL 并显示为工具提示 diff -Nru choqok-1.3/plugins/untiny/untiny.cpp choqok-1.4/plugins/untiny/untiny.cpp --- choqok-1.3/plugins/untiny/untiny.cpp 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/plugins/untiny/untiny.cpp 2013-08-31 05:51:23.000000000 +0200 @@ -80,7 +80,7 @@ if(!postToParse) return; QStringList redirectList, pureList = postToParse->urls(); - QString content = postToParse->currentPost().content; + QString content = postToParse->currentPost()->content; for( int i=0; i < pureList.count(); ++i) { if(pureList[i].length()>30) continue; diff -Nru choqok-1.3/plugins/uploaders/flickr/choqok_flickr_config.desktop choqok-1.4/plugins/uploaders/flickr/choqok_flickr_config.desktop --- choqok-1.3/plugins/uploaders/flickr/choqok_flickr_config.desktop 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/plugins/uploaders/flickr/choqok_flickr_config.desktop 2013-08-31 05:51:23.000000000 +0200 @@ -20,6 +20,7 @@ Name[en_GB]=Flickr Name[es]=Flickr Name[et]=Flickr +Name[fi]=Flickr Name[fr]=Flickr Name[ga]=Flickr Name[gl]=Flickr @@ -27,6 +28,7 @@ Name[hu]=Flickr Name[it]=Flickr Name[km]=Flickr +Name[lt]=Flickr Name[nb]=Flickr Name[nds]=Flickr Name[nl]=Flickr @@ -36,7 +38,9 @@ Name[pt_BR]=Flickr Name[ru]=Flickr Name[sk]=Flickr +Name[sl]=Flickr Name[sv]=Flickr +Name[tr]=Flickr Name[ug]=Flickr Name[uk]=Flickr Name[x-test]=xxFlickrxx @@ -47,13 +51,15 @@ Comment[bs]=Slanje slike na flickr.com Comment[ca]=Puja imatges a flickr.com Comment[ca@valencia]=Puja imatges a flickr.com +Comment[cs]=Nahrát obrázek na flickr.com Comment[da]=Upload billede til flickr.com Comment[de]=Bild auf flickr.com hochladen Comment[el]=Αποστολή φωτογραφίας στο flickr.com Comment[en_GB]=Upload image to flickr.com Comment[es]=Enviar imagen a flickr.com Comment[et]=Piltide üleslaadimine flickr.com-i -Comment[fr]=Envoie une image vers flickr.com +Comment[fi]=Lähetä kuva flickr.com-sivustolle +Comment[fr]=Envoie une image vers « flickr.com » Comment[gl]=Enviar imaxes a flickr.com Comment[hr]=Postavi sliku na flickr.com Comment[hu]=Képfeltöltés a flickr.com-ra @@ -65,9 +71,11 @@ Comment[pa]=ਚਿੱਤਰ flickr.com ਉੱਤੇ ਅੱਪਲੋਡ ਕਰੋ Comment[pl]=Wyślij obraz na flickr.com Comment[pt]=Enviar a imagem para o flickr.com -Comment[pt_BR]=Enviar imagem para o flickr.com +Comment[pt_BR]=Envia imagens para o flickr.com Comment[ru]=Загрузка изображений на flickr.com +Comment[sl]=Pošlji sliko na flickr.com Comment[sv]=Ladda upp bild till flickr.com +Comment[tr]=Resmi flickr.com'a yükle Comment[uk]=Вивантаження зображення на flickr.com Comment[x-test]=xxUpload image to flickr.comxx Comment[zh_CN]=上传图像到 flickr.com diff -Nru choqok-1.3/plugins/uploaders/flickr/choqok_flickr.desktop choqok-1.4/plugins/uploaders/flickr/choqok_flickr.desktop --- choqok-1.3/plugins/uploaders/flickr/choqok_flickr.desktop 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/plugins/uploaders/flickr/choqok_flickr.desktop 2013-08-31 05:51:23.000000000 +0200 @@ -9,7 +9,7 @@ X-KDE-PluginInfo-Email=gmlastik@gmail.com X-KDE-PluginInfo-Name=choqok_flickr X-KDE-PluginInfo-Version=0.2 -X-KDE-PluginInfo-Website=http://choqok.org +X-KDE-PluginInfo-Website=http://choqok.gnufolks.org X-KDE-PluginInfo-Category=Uploaders X-KDE-PluginInfo-Depends= X-KDE-PluginInfo-License=GPL @@ -26,6 +26,7 @@ Name[en_GB]=Flickr Name[es]=Flickr Name[et]=Flickr +Name[fi]=Flickr Name[fr]=Flickr Name[ga]=Flickr Name[gl]=Flickr @@ -33,6 +34,7 @@ Name[hu]=Flickr Name[it]=Flickr Name[km]=Flickr +Name[lt]=Flickr Name[nb]=Flickr Name[nds]=Flickr Name[nl]=Flickr @@ -42,7 +44,9 @@ Name[pt_BR]=Flickr Name[ru]=Flickr Name[sk]=Flickr +Name[sl]=Flickr Name[sv]=Flickr +Name[tr]=Flickr Name[ug]=Flickr Name[uk]=Flickr Name[x-test]=xxFlickrxx @@ -53,13 +57,15 @@ Comment[bs]=Slanje slike na flickr.com Comment[ca]=Puja imatges a flickr.com Comment[ca@valencia]=Puja imatges a flickr.com +Comment[cs]=Nahrát obrázek na flickr.com Comment[da]=Upload billede til flickr.com Comment[de]=Bild auf flickr.com hochladen Comment[el]=Αποστολή φωτογραφίας στο flickr.com Comment[en_GB]=Upload image to flickr.com Comment[es]=Enviar imagen a flickr.com Comment[et]=Piltide üleslaadimine flickr.com-i -Comment[fr]=Envoie une image vers flickr.com +Comment[fi]=Lähetä kuva flickr.com-sivustolle +Comment[fr]=Envoie une image vers « flickr.com » Comment[gl]=Enviar imaxes a flickr.com Comment[hr]=Postavi sliku na flickr.com Comment[hu]=Képfeltöltés a flickr.com-ra @@ -71,9 +77,11 @@ Comment[pa]=ਚਿੱਤਰ flickr.com ਉੱਤੇ ਅੱਪਲੋਡ ਕਰੋ Comment[pl]=Wyślij obraz na flickr.com Comment[pt]=Enviar a imagem para o flickr.com -Comment[pt_BR]=Enviar imagem para o flickr.com +Comment[pt_BR]=Envia imagens para o flickr.com Comment[ru]=Загрузка изображений на flickr.com +Comment[sl]=Pošlji sliko na flickr.com Comment[sv]=Ladda upp bild till flickr.com +Comment[tr]=Resmi flickr.com'a yükle Comment[uk]=Вивантаження зображення на flickr.com Comment[x-test]=xxUpload image to flickr.comxx Comment[zh_CN]=上传图像到 flickr.com diff -Nru choqok-1.3/plugins/uploaders/flickr/flickrprefs.ui choqok-1.4/plugins/uploaders/flickr/flickrprefs.ui --- choqok-1.3/plugins/uploaders/flickr/flickrprefs.ui 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/plugins/uploaders/flickr/flickrprefs.ui 2013-08-31 05:51:23.000000000 +0200 @@ -48,7 +48,7 @@ - Click the below button, If everything goes well, you'll pointed to Flickr.com website to allow access to Choqok. + Click the below button; if everything goes well, you will pointed to Flickr.com website to allow access to Choqok. true diff -Nru choqok-1.3/plugins/uploaders/imageshack/choqok_imageshack.desktop choqok-1.4/plugins/uploaders/imageshack/choqok_imageshack.desktop --- choqok-1.3/plugins/uploaders/imageshack/choqok_imageshack.desktop 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/plugins/uploaders/imageshack/choqok_imageshack.desktop 2013-08-31 05:51:23.000000000 +0200 @@ -19,12 +19,14 @@ Name[bs]=ImageShack Name[ca]=ImageShack Name[ca@valencia]=ImageShack +Name[cs]=ImageShack Name[da]=ImageShack Name[de]=ImageShack Name[el]=ImageShack Name[en_GB]=ImageShack Name[es]=ImageShack Name[et]=ImageShack +Name[fi]=ImageShack Name[fr]=ImageShack Name[gl]=ImageShack Name[hr]=ImageShack @@ -39,7 +41,9 @@ Name[pt]=ImageShack Name[pt_BR]=ImageShack Name[ru]=ImageShack +Name[sl]=ImageShack Name[sv]=ImageShack +Name[tr]=ImageShack Name[uk]=ImageShack Name[x-test]=xxImageShackxx Name[zh_CN]=ImageShack @@ -49,13 +53,15 @@ Comment[bs]=Slanje slike na imageshack.us Comment[ca]=Puja imatges a imageshack.us Comment[ca@valencia]=Puja imatges a imageshack.vos +Comment[cs]=Nahrát obrázek na imageshack.us Comment[da]=Upload billede til imageshack.us Comment[de]=Bild auf imageshack.us hochladen Comment[el]=Αποστολή φωτογραφίας στο imageshack.us Comment[en_GB]=Upload image to imageshack.us Comment[es]=Enviar imagen a imageshack.us Comment[et]=Piltide üleslaadimine imageshack.us-i -Comment[fr]=Envoie une image vers imageshack.us +Comment[fi]=Lähetä kuva imageshack.us-sivustolle +Comment[fr]=Envoie une image vers « imageshack.us » Comment[gl]=Enviar imaxes a imageshack.us Comment[hr]=Postavi sliku na imageshack.us Comment[hu]=Képfeltöltés az imageshack.us-re @@ -66,9 +72,11 @@ Comment[nl]=Afbeelding uploaden naar imageshack.us Comment[pl]=Wyślij obraz na imageshack.us Comment[pt]=Enviar a imagem para o imageshack.us -Comment[pt_BR]=Enviar imagem para o imageshack.us +Comment[pt_BR]=Envia imagens para o imageshack.us Comment[ru]=Загрузка изображений на imageshack.us +Comment[sl]=Pošlji sliko na imageshack.us Comment[sv]=Ladda upp bild till imageshack.us +Comment[tr]=Resmi imageshack.us'a yükle Comment[uk]=Вивантаження зображення на imageshack.us Comment[x-test]=xxUpload image to imageshack.usxx Comment[zh_CN]=上传图像到 imageshack.us diff -Nru choqok-1.3/plugins/uploaders/mobypicture/choqok_mobypicture_config.desktop choqok-1.4/plugins/uploaders/mobypicture/choqok_mobypicture_config.desktop --- choqok-1.3/plugins/uploaders/mobypicture/choqok_mobypicture_config.desktop 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/plugins/uploaders/mobypicture/choqok_mobypicture_config.desktop 2013-08-31 05:51:23.000000000 +0200 @@ -13,12 +13,14 @@ Name[bs]=Mobypicture Name[ca]=Mobypicture Name[ca@valencia]=Mobypicture +Name[cs]=Mobypicture Name[da]=Mobypicture Name[de]=Mobypicture Name[el]=Mobypicture Name[en_GB]=Mobypicture Name[es]=Mobypicture Name[et]=Mobypicture +Name[fi]=Mobypicture Name[fr]=Mobypicture Name[gl]=Mobypicture Name[hr]=Mobypicture @@ -33,7 +35,9 @@ Name[pt]=Mobypicture Name[pt_BR]=Mobypicture Name[ru]=Mobypicture +Name[sl]=Mobypicture Name[sv]=Mobypicture +Name[tr]=Mobypicture Name[uk]=Mobypicture Name[x-test]=xxMobypicturexx Name[zh_CN]=Mobypicture @@ -43,13 +47,15 @@ Comment[bs]=Slanje slike na mobypicture.com Comment[ca]=Puja imatges a mobypicture.com Comment[ca@valencia]=Puja imatges a mobypicture.com +Comment[cs]=Nahrát obrázek na mobypicture.com Comment[da]=Upload billede til mobypicture.com Comment[de]=Bild auf mobypicture.com hochladen Comment[el]=Αποστολή φωτογραφίας στο mobypicture.com Comment[en_GB]=Upload image to mobypicture.com Comment[es]=Enviar imagen a mobypicture.com Comment[et]=Piltide üleslaadimine mobypicture.com-i -Comment[fr]=Envoie une image vers mobypicture.com +Comment[fi]=Lähetä kuva mobypicture.com-sivustolle +Comment[fr]=Envoie une image vers « mobypicture.com » Comment[gl]=Enviar imaxes a mobypicture.com Comment[hr]=Postavi sliku na mobypicture.com Comment[hu]=Képfeltöltés a mobypicture.com-ra @@ -61,9 +67,11 @@ Comment[pa]=ਚਿੱਤਰ mobypicture.com ਉੱਤੇ ਅੱਪਲੋਡ ਕਰੋ Comment[pl]=Wyślij obraz na mobypicture.com Comment[pt]=Enviar a imagem para o mobypicture.com -Comment[pt_BR]=Enviar imagem para o mobypicture.com +Comment[pt_BR]=Envia imagens para o mobypicture.com Comment[ru]=Загрузка изображений на mobypicture.com +Comment[sl]=Pošlji sliko na mobypicture.com Comment[sv]=Ladda upp bild till mobypicture.com +Comment[tr]=Resmi mobypicture.com'a yükle Comment[uk]=Вивантаження зображення на mobypicture.com Comment[x-test]=xxUpload image to mobypicture.comxx Comment[zh_CN]=上传图像到 mobypicture.com diff -Nru choqok-1.3/plugins/uploaders/mobypicture/choqok_mobypicture.desktop choqok-1.4/plugins/uploaders/mobypicture/choqok_mobypicture.desktop --- choqok-1.3/plugins/uploaders/mobypicture/choqok_mobypicture.desktop 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/plugins/uploaders/mobypicture/choqok_mobypicture.desktop 2013-08-31 05:51:23.000000000 +0200 @@ -9,7 +9,7 @@ X-KDE-PluginInfo-Email=gmlastik@gmail.com X-KDE-PluginInfo-Name=choqok_mobypicture X-KDE-PluginInfo-Version=0.1 -X-KDE-PluginInfo-Website=http://choqok.org +X-KDE-PluginInfo-Website=http://choqok.gnufolks.org X-KDE-PluginInfo-Category=Uploaders X-KDE-PluginInfo-Depends= X-KDE-PluginInfo-License=GPL @@ -19,12 +19,14 @@ Name[bs]=Mobypicture Name[ca]=Mobypicture Name[ca@valencia]=Mobypicture +Name[cs]=Mobypicture Name[da]=Mobypicture Name[de]=Mobypicture Name[el]=Mobypicture Name[en_GB]=Mobypicture Name[es]=Mobypicture Name[et]=Mobypicture +Name[fi]=Mobypicture Name[fr]=Mobypicture Name[gl]=Mobypicture Name[hr]=Mobypicture @@ -39,7 +41,9 @@ Name[pt]=Mobypicture Name[pt_BR]=Mobypicture Name[ru]=Mobypicture +Name[sl]=Mobypicture Name[sv]=Mobypicture +Name[tr]=Mobypicture Name[uk]=Mobypicture Name[x-test]=xxMobypicturexx Name[zh_CN]=Mobypicture @@ -49,13 +53,15 @@ Comment[bs]=Slanje slike na mobypicture.com Comment[ca]=Puja imatges a mobypicture.com Comment[ca@valencia]=Puja imatges a mobypicture.com +Comment[cs]=Nahrát obrázek na mobypicture.com Comment[da]=Upload billede til mobypicture.com Comment[de]=Bild auf mobypicture.com hochladen Comment[el]=Αποστολή φωτογραφίας στο mobypicture.com Comment[en_GB]=Upload image to mobypicture.com Comment[es]=Enviar imagen a mobypicture.com Comment[et]=Piltide üleslaadimine mobypicture.com-i -Comment[fr]=Envoie une image vers mobypicture.com +Comment[fi]=Lähetä kuva mobypicture.com-sivustolle +Comment[fr]=Envoie une image vers « mobypicture.com » Comment[gl]=Enviar imaxes a mobypicture.com Comment[hr]=Postavi sliku na mobypicture.com Comment[hu]=Képfeltöltés a mobypicture.com-ra @@ -67,9 +73,11 @@ Comment[pa]=ਚਿੱਤਰ mobypicture.com ਉੱਤੇ ਅੱਪਲੋਡ ਕਰੋ Comment[pl]=Wyślij obraz na mobypicture.com Comment[pt]=Enviar a imagem para o mobypicture.com -Comment[pt_BR]=Enviar imagem para o mobypicture.com +Comment[pt_BR]=Envia imagens para o mobypicture.com Comment[ru]=Загрузка изображений на mobypicture.com +Comment[sl]=Pošlji sliko na mobypicture.com Comment[sv]=Ladda upp bild till mobypicture.com +Comment[tr]=Resmi mobypicture.com'a yükle Comment[uk]=Вивантаження зображення на mobypicture.com Comment[x-test]=xxUpload image to mobypicture.comxx Comment[zh_CN]=上传图像到 mobypicture.com diff -Nru choqok-1.3/plugins/uploaders/mobypicture/mobypicture.cpp choqok-1.4/plugins/uploaders/mobypicture/mobypicture.cpp --- choqok-1.3/plugins/uploaders/mobypicture/mobypicture.cpp 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/plugins/uploaders/mobypicture/mobypicture.cpp 2013-08-31 05:51:23.000000000 +0200 @@ -62,7 +62,7 @@ QString alias = MobypictureSettings::alias(); if ( alias.isEmpty() ) { kError() << "No account to use"; - emit uploadingFailed ( localUrl, i18n ( "There's no Twitter account configured to use." ) ); + emit uploadingFailed ( localUrl, i18n ( "There is no Twitter account configured to use." ) ); return; } TwitterApiAccount *acc = qobject_cast ( Choqok::AccountManager::self()->findAccount ( alias ) ); diff -Nru choqok-1.3/plugins/uploaders/posterous/choqok_posterous_config.desktop choqok-1.4/plugins/uploaders/posterous/choqok_posterous_config.desktop --- choqok-1.3/plugins/uploaders/posterous/choqok_posterous_config.desktop 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/plugins/uploaders/posterous/choqok_posterous_config.desktop 2013-08-31 05:51:23.000000000 +0200 @@ -13,12 +13,14 @@ Name[bs]=Posterous Name[ca]=Posterous Name[ca@valencia]=Posterous +Name[cs]=Posterous Name[da]=Posterous Name[de]=Posterous Name[el]=Posterous Name[en_GB]=Posterous Name[es]=Posterous Name[et]=Posterous +Name[fi]=Posterous Name[fr]=Posterous Name[gl]=Posterous Name[hr]=Posterous @@ -33,7 +35,9 @@ Name[pt]=Posterous Name[pt_BR]=Posterous Name[ru]=Posterous +Name[sl]=Posterous Name[sv]=Posterous +Name[tr]=Posterous Name[uk]=Posterous Name[x-test]=xxPosterousxx Name[zh_CN]=Posterous @@ -43,13 +47,15 @@ Comment[bs]=Slanje slike na posterous.com Comment[ca]=Puja imatges a posterous.com Comment[ca@valencia]=Puja imatges a posterous.com +Comment[cs]=Nahrát obrázek na posterous.com Comment[da]=Upload billede til posterous.com Comment[de]=Bild auf posterous.com hochladen Comment[el]=Αποστολή φωτογραφίας στο posterous.com Comment[en_GB]=Upload image to posterous.com Comment[es]=Enviar imagen a posterous.com Comment[et]=Piltide üleslaadimine posterous.com-i -Comment[fr]=Envoie une image vers posterous.com +Comment[fi]=Lähetä kuva posterous.com-sivustolle +Comment[fr]=Envoie une image vers « posterous.com » Comment[gl]=Enviar imaxes a posterous.com Comment[hr]=Postavi sliku na posterous.com Comment[hu]=Képfeltöltés a posterous.com-ra @@ -61,9 +67,11 @@ Comment[pa]=ਚਿੱਤਰ posterous.com ਉੱਤੇ ਅੱਪਲੋਡ ਕਰੋ Comment[pl]=Wyślij obraz na posterous.com Comment[pt]=Enviar a imagem para o posterous.com -Comment[pt_BR]=Enviar imagem para o posterous.com +Comment[pt_BR]=Envia imagens para o posterous.com Comment[ru]=Загрузка изображений на posterous.com +Comment[sl]=Pošlji sliko na posterous.com Comment[sv]=Ladda upp bild till posterous.com +Comment[tr]=Resmi posterous.com'a yükle Comment[uk]=Вивантаження зображення на posterous.com Comment[x-test]=xxUpload image to posterous.comxx Comment[zh_CN]=上传图像到 posterous.com diff -Nru choqok-1.3/plugins/uploaders/posterous/choqok_posterous.desktop choqok-1.4/plugins/uploaders/posterous/choqok_posterous.desktop --- choqok-1.3/plugins/uploaders/posterous/choqok_posterous.desktop 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/plugins/uploaders/posterous/choqok_posterous.desktop 2013-08-31 05:51:23.000000000 +0200 @@ -9,7 +9,7 @@ X-KDE-PluginInfo-Email=gmlastik@gmail.com X-KDE-PluginInfo-Name=choqok_posterous X-KDE-PluginInfo-Version=0.1 -X-KDE-PluginInfo-Website=http://choqok.org +X-KDE-PluginInfo-Website=http://choqok.gnufolks.org X-KDE-PluginInfo-Category=Uploaders X-KDE-PluginInfo-Depends= X-KDE-PluginInfo-License=GPL @@ -19,12 +19,14 @@ Name[bs]=Posterous Name[ca]=Posterous Name[ca@valencia]=Posterous +Name[cs]=Posterous Name[da]=Posterous Name[de]=Posterous Name[el]=Posterous Name[en_GB]=Posterous Name[es]=Posterous Name[et]=Posterous +Name[fi]=Posterous Name[fr]=Posterous Name[gl]=Posterous Name[hr]=Posterous @@ -39,7 +41,9 @@ Name[pt]=Posterous Name[pt_BR]=Posterous Name[ru]=Posterous +Name[sl]=Posterous Name[sv]=Posterous +Name[tr]=Posterous Name[uk]=Posterous Name[x-test]=xxPosterousxx Name[zh_CN]=Posterous @@ -49,13 +53,15 @@ Comment[bs]=Slanje slike na posterous.com Comment[ca]=Puja imatges a posterous.com Comment[ca@valencia]=Puja imatges a posterous.com +Comment[cs]=Nahrát obrázek na posterous.com Comment[da]=Upload billede til posterous.com Comment[de]=Bild auf posterous.com hochladen Comment[el]=Αποστολή φωτογραφίας στο posterous.com Comment[en_GB]=Upload image to posterous.com Comment[es]=Enviar imagen a posterous.com Comment[et]=Piltide üleslaadimine posterous.com-i -Comment[fr]=Envoie une image vers posterous.com +Comment[fi]=Lähetä kuva posterous.com-sivustolle +Comment[fr]=Envoie une image vers « posterous.com » Comment[gl]=Enviar imaxes a posterous.com Comment[hr]=Postavi sliku na posterous.com Comment[hu]=Képfeltöltés a posterous.com-ra @@ -67,9 +73,11 @@ Comment[pa]=ਚਿੱਤਰ posterous.com ਉੱਤੇ ਅੱਪਲੋਡ ਕਰੋ Comment[pl]=Wyślij obraz na posterous.com Comment[pt]=Enviar a imagem para o posterous.com -Comment[pt_BR]=Enviar imagem para o posterous.com +Comment[pt_BR]=Envia imagens para o posterous.com Comment[ru]=Загрузка изображений на posterous.com +Comment[sl]=Pošlji sliko na posterous.com Comment[sv]=Ladda upp bild till posterous.com +Comment[tr]=Resmi posterous.com'a yükle Comment[uk]=Вивантаження зображення на posterous.com Comment[x-test]=xxUpload image to posterous.comxx Comment[zh_CN]=上传图像到 posterous.com diff -Nru choqok-1.3/plugins/uploaders/posterous/posterous.cpp choqok-1.4/plugins/uploaders/posterous/posterous.cpp --- choqok-1.3/plugins/uploaders/posterous/posterous.cpp 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/plugins/uploaders/posterous/posterous.cpp 2013-08-31 05:51:23.000000000 +0200 @@ -121,7 +121,7 @@ QString alias = PosterousSettings::alias(); if ( alias.isEmpty() ) { kError() << "No account to use"; - emit uploadingFailed ( localUrl, i18n ( "There's no Twitter account configured to use." ) ); + emit uploadingFailed ( localUrl, i18n ( "There is no Twitter account configured to use." ) ); return; } TwitterApiAccount *acc = qobject_cast ( Choqok::AccountManager::self()->findAccount ( alias ) ); diff -Nru choqok-1.3/plugins/uploaders/twitgoo/choqok_twitgoo_config.desktop choqok-1.4/plugins/uploaders/twitgoo/choqok_twitgoo_config.desktop --- choqok-1.3/plugins/uploaders/twitgoo/choqok_twitgoo_config.desktop 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/plugins/uploaders/twitgoo/choqok_twitgoo_config.desktop 2013-08-31 05:51:23.000000000 +0200 @@ -13,12 +13,14 @@ Name[bs]=Twitgoo Name[ca]=Twitgoo Name[ca@valencia]=Twitgoo +Name[cs]=Twitgoo Name[da]=Twitgoo Name[de]=Twitgoo Name[el]=Twitgoo Name[en_GB]=Twitgoo Name[es]=Twitgoo Name[et]=Twitgoo +Name[fi]=Twitgoo Name[fr]=Twitgoo Name[gl]=Twitgoo Name[hr]=Twitgoo @@ -33,7 +35,9 @@ Name[pt]=Twitgoo Name[pt_BR]=Twitgoo Name[ru]=Twitgoo +Name[sl]=Twitgoo Name[sv]=Twitgoo +Name[tr]=Twitgoo Name[uk]=Twitgoo Name[x-test]=xxTwitgooxx Name[zh_CN]=Twitgoo @@ -43,13 +47,15 @@ Comment[bs]=Slanje slike na twitgoo.com Comment[ca]=Puja imatges a twitgoo.com Comment[ca@valencia]=Puja imatges a twitgoo.com +Comment[cs]=Nahrát obrázek na twitgoo.com Comment[da]=Upload billede til twitgoo.com Comment[de]=Bild auf twitgoo.com hochladen Comment[el]=Αποστολή φωτογραφίας στο twitgoo.com Comment[en_GB]=Upload image to twitgoo.com Comment[es]=Enviar imagen a twitgoo.com Comment[et]=Piltide üleslaadimine twitgoo.com-i -Comment[fr]=Envoie une image vers twitgoo.com +Comment[fi]=Lähetä kuva twitgoo.com-sivustolle +Comment[fr]=Envoie une image vers « twitgoo.com » Comment[gl]=Enviar imaxes a twitgoo.com Comment[hr]=Postavi sliku na twitgoo.com Comment[hu]=Képfeltöltés a twitgoo.com-ra @@ -61,9 +67,11 @@ Comment[pa]=ਚਿੱਤਰ twitgoo.com ਉੱਤੇ ਅੱਪਲੋਡ ਕਰੋ Comment[pl]=Wyślij obraz na twitgoo.com Comment[pt]=Enviar a imagem para o twitgoo.com -Comment[pt_BR]=Enviar imagem para o twitgoo.com +Comment[pt_BR]=Envia imagens para o twitgoo.com Comment[ru]=Загрузка изображений на twitgoo.com +Comment[sl]=Pošlji sliko na twitgoo.com Comment[sv]=Ladda upp bild till twitgoo.com +Comment[tr]=Resmi twitgoo.com'a yükle Comment[uk]=Вивантаження зображення на twitgoo.com Comment[x-test]=xxUpload image to twitgoo.comxx Comment[zh_CN]=上传图像到 twitgoo.com diff -Nru choqok-1.3/plugins/uploaders/twitgoo/choqok_twitgoo.desktop choqok-1.4/plugins/uploaders/twitgoo/choqok_twitgoo.desktop --- choqok-1.3/plugins/uploaders/twitgoo/choqok_twitgoo.desktop 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/plugins/uploaders/twitgoo/choqok_twitgoo.desktop 2013-08-31 05:51:23.000000000 +0200 @@ -9,7 +9,7 @@ X-KDE-PluginInfo-Email=gmlastik@gmail.com X-KDE-PluginInfo-Name=choqok_twitgoo X-KDE-PluginInfo-Version=0.1 -X-KDE-PluginInfo-Website=http://choqok.org +X-KDE-PluginInfo-Website=http://choqok.gnufolks.org X-KDE-PluginInfo-Category=Uploaders X-KDE-PluginInfo-Depends= X-KDE-PluginInfo-License=GPL @@ -19,12 +19,14 @@ Name[bs]=Twitgoo Name[ca]=Twitgoo Name[ca@valencia]=Twitgoo +Name[cs]=Twitgoo Name[da]=Twitgoo Name[de]=Twitgoo Name[el]=Twitgoo Name[en_GB]=Twitgoo Name[es]=Twitgoo Name[et]=Twitgoo +Name[fi]=Twitgoo Name[fr]=Twitgoo Name[gl]=Twitgoo Name[hr]=Twitgoo @@ -39,7 +41,9 @@ Name[pt]=Twitgoo Name[pt_BR]=Twitgoo Name[ru]=Twitgoo +Name[sl]=Twitgoo Name[sv]=Twitgoo +Name[tr]=Twitgoo Name[uk]=Twitgoo Name[x-test]=xxTwitgooxx Name[zh_CN]=Twitgoo @@ -49,13 +53,15 @@ Comment[bs]=Slanje slike na twitgoo.com Comment[ca]=Puja imatges a twitgoo.com Comment[ca@valencia]=Puja imatges a twitgoo.com +Comment[cs]=Nahrát obrázek na twitgoo.com Comment[da]=Upload billede til twitgoo.com Comment[de]=Bild auf twitgoo.com hochladen Comment[el]=Αποστολή φωτογραφίας στο twitgoo.com Comment[en_GB]=Upload image to twitgoo.com Comment[es]=Enviar imagen a twitgoo.com Comment[et]=Piltide üleslaadimine twitgoo.com-i -Comment[fr]=Envoie une image vers twitgoo.com +Comment[fi]=Lähetä kuva twitgoo.com-sivustolle +Comment[fr]=Envoie une image vers « twitgoo.com » Comment[gl]=Enviar imaxes a twitgoo.com Comment[hr]=Postavi sliku na twitgoo.com Comment[hu]=Képfeltöltés a twitgoo.com-ra @@ -67,9 +73,11 @@ Comment[pa]=ਚਿੱਤਰ twitgoo.com ਉੱਤੇ ਅੱਪਲੋਡ ਕਰੋ Comment[pl]=Wyślij obraz na twitgoo.com Comment[pt]=Enviar a imagem para o twitgoo.com -Comment[pt_BR]=Enviar imagem para o twitgoo.com +Comment[pt_BR]=Envia imagens para o twitgoo.com Comment[ru]=Загрузка изображений на twitgoo.com +Comment[sl]=Pošlji sliko na twitgoo.com Comment[sv]=Ladda upp bild till twitgoo.com +Comment[tr]=Resmi twitgoo.com'a yükle Comment[uk]=Вивантаження зображення на twitgoo.com Comment[x-test]=xxUpload image to twitgoo.comxx Comment[zh_CN]=上传图像到 twitgoo.com diff -Nru choqok-1.3/plugins/uploaders/twitgoo/twitgoo.cpp choqok-1.4/plugins/uploaders/twitgoo/twitgoo.cpp --- choqok-1.3/plugins/uploaders/twitgoo/twitgoo.cpp 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/plugins/uploaders/twitgoo/twitgoo.cpp 2013-08-31 05:51:23.000000000 +0200 @@ -59,7 +59,7 @@ QString alias = TwitgooSettings::alias(); if ( alias.isEmpty() ) { kError() << "No account to use"; - emit uploadingFailed ( localUrl, i18n ( "There's no Twitter account configured to use." ) ); + emit uploadingFailed ( localUrl, i18n ( "There is no Twitter account configured to use." ) ); return; } TwitterApiAccount *acc = qobject_cast ( Choqok::AccountManager::self()->findAccount ( alias ) ); diff -Nru choqok-1.3/plugins/uploaders/twitpic/choqok_twitpic_config.desktop choqok-1.4/plugins/uploaders/twitpic/choqok_twitpic_config.desktop --- choqok-1.3/plugins/uploaders/twitpic/choqok_twitpic_config.desktop 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/plugins/uploaders/twitpic/choqok_twitpic_config.desktop 2013-08-31 05:51:23.000000000 +0200 @@ -13,12 +13,14 @@ Name[bs]=Twitpic Name[ca]=Twitpic Name[ca@valencia]=Twitpic +Name[cs]=Twitpic Name[da]=Twitpic Name[de]=TwitPic Name[el]=Twitpic Name[en_GB]=Twitpic Name[es]=Twitpic Name[et]=Twitpic +Name[fi]=Twitpic Name[fr]=Twitpic Name[gl]=Twitpic Name[hr]=Twitpic @@ -35,6 +37,7 @@ Name[pt_BR]=Twitpic Name[ro]=Twitpic Name[ru]=Twitpic +Name[sl]=Twitpic Name[sv]=Twitpic Name[tr]=Twitpic Name[uk]=Twitpic @@ -46,13 +49,15 @@ Comment[bs]=Šalje sliku na twitpic.com Comment[ca]=Puja imatges a twitpic.com Comment[ca@valencia]=Puja imatges a twitpic.com +Comment[cs]=Nahrát obrázek na twitpic.com Comment[da]=Upload billede til twitpic.com Comment[de]=Bild auf twitpic.com hochladen Comment[el]=Αποστολή φωτογραφίας στο twitpic.com Comment[en_GB]=Upload image to twitpic.com Comment[es]=Enviar imagen a twitpic.com Comment[et]=Piltide üleslaadimine twitpic.com-i -Comment[fr]=Envoie une image vers twitpic.com +Comment[fi]=Lähetä kuva twitpic.com-sivustolle +Comment[fr]=Envoie une image vers « twitpic.com » Comment[gl]=Enviar imaxes a twitpic.com Comment[hu]=Képfeltöltés a twitpic.com-ra Comment[it]=Carica immagine su twitpic.com @@ -64,9 +69,11 @@ Comment[pa]=ਚਿੱਤਰ twitpic.com ਉੱਤੇ ਅੱਪਲੋਡ ਕਰੋ Comment[pl]=Wyślij obraz na twitpic.com Comment[pt]=Enviar a imagem para o twitpic.com -Comment[pt_BR]=Enviar imagem para o twitpic.com +Comment[pt_BR]=Envia imagens para o twitpic.com Comment[ru]=Загрузка изображений на twitpic.com +Comment[sl]=Pošlji sliko na twitpic.com Comment[sv]=Ladda upp bild till twitpic.com +Comment[tr]=Resmi twitpic.com'a yükle Comment[uk]=Вивантаження зображення на twitpic.com Comment[x-test]=xxUpload image to twitpic.comxx Comment[zh_CN]=上传图像到 twitpic.com diff -Nru choqok-1.3/plugins/uploaders/twitpic/choqok_twitpic.desktop choqok-1.4/plugins/uploaders/twitpic/choqok_twitpic.desktop --- choqok-1.3/plugins/uploaders/twitpic/choqok_twitpic.desktop 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/plugins/uploaders/twitpic/choqok_twitpic.desktop 2013-08-31 05:51:23.000000000 +0200 @@ -19,12 +19,14 @@ Name[bs]=Twitpic Name[ca]=Twitpic Name[ca@valencia]=Twitpic +Name[cs]=Twitpic Name[da]=Twitpic Name[de]=TwitPic Name[el]=Twitpic Name[en_GB]=Twitpic Name[es]=Twitpic Name[et]=Twitpic +Name[fi]=Twitpic Name[fr]=Twitpic Name[gl]=Twitpic Name[hr]=Twitpic @@ -41,6 +43,7 @@ Name[pt_BR]=Twitpic Name[ro]=Twitpic Name[ru]=Twitpic +Name[sl]=Twitpic Name[sv]=Twitpic Name[tr]=Twitpic Name[uk]=Twitpic @@ -52,13 +55,15 @@ Comment[bs]=Šalje sliku na twitpic.com Comment[ca]=Puja imatges a twitpic.com Comment[ca@valencia]=Puja imatges a twitpic.com +Comment[cs]=Nahrát obrázek na twitpic.com Comment[da]=Upload billede til twitpic.com Comment[de]=Bild auf twitpic.com hochladen Comment[el]=Αποστολή φωτογραφίας στο twitpic.com Comment[en_GB]=Upload image to twitpic.com Comment[es]=Enviar imagen a twitpic.com Comment[et]=Piltide üleslaadimine twitpic.com-i -Comment[fr]=Envoie une image vers twitpic.com +Comment[fi]=Lähetä kuva twitpic.com-sivustolle +Comment[fr]=Envoie une image vers « twitpic.com » Comment[gl]=Enviar imaxes a twitpic.com Comment[hu]=Képfeltöltés a twitpic.com-ra Comment[it]=Carica immagine su twitpic.com @@ -70,9 +75,11 @@ Comment[pa]=ਚਿੱਤਰ twitpic.com ਉੱਤੇ ਅੱਪਲੋਡ ਕਰੋ Comment[pl]=Wyślij obraz na twitpic.com Comment[pt]=Enviar a imagem para o twitpic.com -Comment[pt_BR]=Enviar imagem para o twitpic.com +Comment[pt_BR]=Envia imagens para o twitpic.com Comment[ru]=Загрузка изображений на twitpic.com +Comment[sl]=Pošlji sliko na twitpic.com Comment[sv]=Ladda upp bild till twitpic.com +Comment[tr]=Resmi twitpic.com'a yükle Comment[uk]=Вивантаження зображення на twitpic.com Comment[x-test]=xxUpload image to twitpic.comxx Comment[zh_CN]=上传图像到 twitpic.com diff -Nru choqok-1.3/plugins/uploaders/twitpic/twitpic.cpp choqok-1.4/plugins/uploaders/twitpic/twitpic.cpp --- choqok-1.3/plugins/uploaders/twitpic/twitpic.cpp 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/plugins/uploaders/twitpic/twitpic.cpp 2013-08-31 05:51:23.000000000 +0200 @@ -59,7 +59,7 @@ QString alias = TwitpicSettings::alias(); if(alias.isEmpty()){ kError()<<"No account to use"; - emit uploadingFailed(localUrl, i18n("There's no Twitter account configured to use.")); + emit uploadingFailed(localUrl, i18n("There is no Twitter account configured to use.")); return; } TwitterApiAccount *acc = qobject_cast(Choqok::AccountManager::self()->findAccount(alias)); diff -Nru choqok-1.3/plugins/videopreview/choqok_videopreview.desktop choqok-1.4/plugins/videopreview/choqok_videopreview.desktop --- choqok-1.3/plugins/videopreview/choqok_videopreview.desktop 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/plugins/videopreview/choqok_videopreview.desktop 2013-08-31 05:51:23.000000000 +0200 @@ -19,6 +19,7 @@ Name[bs]=Pregled videa Name[ca]=Vista prèvia de videos Name[ca@valencia]=Vista prèvia de videos +Name[cs]=Náhled videí Name[da]=Forhåndsvis videoer Name[de]=Vorschau von Videos anzeigen Name[el]=Προεπισκόπηση βίντεο @@ -40,6 +41,7 @@ Name[pt]=Antever os vídeos Name[pt_BR]=Visualização de vídeos Name[ru]=Предварительный просмотр видео +Name[sl]=Predogled videov Name[sv]=Förhandsgranska videor Name[tr]=Videoları önizle Name[uk]=Попередній перегляд відео @@ -51,13 +53,14 @@ Comment[bs]=Učitavanje pregleda YouTube i Vimeo video sadržaja Comment[ca]=Carrega una vista prèvia dels videos de YouTube i Vimeo Comment[ca@valencia]=Carrega una vista prèvia dels videos de YouTube i Vimeo +Comment[cs]=Načíst náhled videí YouTube & Vimeo Comment[da]=Indlæs en forhåndsvisning af YouTube- og Vimeo-videoer Comment[de]=Vorschau für YouTube- und Vimeo-Videos laden Comment[el]=Φόρτωση προεπισκόπησης βίντεο από YouTube & Vimeo Comment[en_GB]=Load a preview of YouTube & Vimeo videos -Comment[es]=Cargar una vista previa de vídeos de youtube o vimeo +Comment[es]=Cargar una vista previa de vídeos de Youtube y Vimeo Comment[et]=YouTube'i ja Vimeo videode eelvaatluse laadimine -Comment[fr]=Charge un aperçu de vidéos Youtube et Vimeo +Comment[fr]=Charge un aperçu de vidéos « Youtube » et « Vimeo » Comment[gl]=Cargar unha vista previa dos vídeos de YouTube e de Vimeo Comment[hu]=Youtube- és Vimeo-videók előnézetének betöltése Comment[it]=Carica un'anteprima dei video YouTube e Vimeo @@ -68,9 +71,11 @@ Comment[pa]=ਯੂਟਿਊਬ ਤੇ ਵਿਮੋਓ ਵਿਡੀਓ ਦੀ ਝਲਕ ਲੋਡ ਕਰੋ Comment[pl]=Wczytaj podglądy wideo z YouTube i Vimeo Comment[pt]=Carregar uma antevisão dos vídeos do YouTube & Vimeo -Comment[pt_BR]=Carrega uma previsão dos vídeos do YouTube e do Vimeo +Comment[pt_BR]=Carrega uma previsão de vídeos do YouTube e do Vimeo Comment[ru]=Загружает миниатюры видеоклипов из YouTube и Vimeo +Comment[sl]=Naloži predogled videov Youtube & Vimeo Comment[sv]=Läs in en förhandsgranskning av videor från YouTube och Vimeo +Comment[tr]=YouTube & Vimeo videolarının bir önizlemesini yükle Comment[uk]=Завантаження мініатюр відео з YouTube та Vimeo Comment[x-test]=xxLoad a preview of YouTube & Vimeo videosxx Comment[zh_CN]=装入 YouTube 和 Vimeo 视频的预览 diff -Nru choqok-1.3/plugins/videopreview/videopreview.cpp choqok-1.4/plugins/videopreview/videopreview.cpp --- choqok-1.3/plugins/videopreview/videopreview.cpp 2012-03-06 17:01:58.000000000 +0100 +++ choqok-1.4/plugins/videopreview/videopreview.cpp 2013-08-31 05:51:23.000000000 +0200 @@ -121,7 +121,7 @@ int pos3 = 0; QStringList thumbList; - QString content = postToParse->currentPost().content; + QString content = postToParse->currentPost()->content; // kDebug() << content; while (((pos1 = mYouTuRegExp.indexIn(content, pos)) != -1) |